Projects

This is the story of a project that got bigger and bigger.
It started as a simple toy project for myself: I wanted to learn the metro stations in Paris, and I figured I could gamify my learning. But instead of doing it in Python and playing from the terminal, I used the help of Claude and made it as a website. I also chose to host it online, so I can play directly on my phone whilst inside the metro (without cheating of course).
Things got to the next level when I shared it with friends and colleagues: to my surprise, they really liked this niche game and asked for more features so they could keep playing. I obliged and in the following weeks came a tournament, a training mode, a leaderboard and many bug fixes.
This project has now reached maturity and I will move on to new ideas, but it taught me something essential when you want to create. Nothing is truly complex in this game per se (the data is public knowledge, the algorithm is Bachelor level at most and the web dev is handled by an LLM). What it took to become a (small) hit: just have a good idea.
ReactAWSDatabase
Video inpainting is the task of removing unwanted objects from a video and filling the gap convincingly — think of it as Photoshop's content-aware fill, but for moving images. The problem is hard: not only does each frame need to look realistic on its own, but the reconstruction has to stay consistent across time. State-of-the-art methods at the time used transformers to attend over large temporal windows, which gave great results — but made them too slow to run in real time.
For my master's thesis at ETH Zürich's Computer Vision Lab, I set out to fix that. The core idea was to rethink how these models access past frames: instead of recomputing everything from scratch at each step, I introduced a memory mechanism that stores and reuses relevant features across time. This cut the computational cost enough to double the throughput of three different models, pushing them into real-time territory without significantly hurting quality. The work was published at the NTIRE workshop at CVPR 2024.
PyTorchComputer VisionTransformersVideo Inpainting
For a History of Science course at École Polytechnique, we studied the Coradi analyzer — a mechanical calculator from the early 20th century designed to compute Fourier series coefficients. The device works by sliding a carriage along a hand-drawn periodic curve: as you move it, a set of rotating glass spheres accumulate the integral values, with separate dials measuring the sine and cosine components. Essentially, it is an analog computer built entirely from gears and geometry.
We built an interactive website to document how it works — walking through the underlying mathematics, the mechanical design, and the historical context. It includes a photo gallery of the device and an embedded video demonstration.
HTMLMathematicsHistory of Science
Pursuit-Evasion with Reinforcement Learning
A classic problem in multi-agent AI: a group of pursuers must learn to catch an evading target on a grid, with no prior knowledge of strategy and limited fields of vision. For a course project at École Polytechnique, we implemented the environment from scratch and trained agents using several reinforcement learning approaches — SARSA, Q-Learning, and Deep Q-Learning with a neural network.
PythonReinforcement LearningMulti-AgentDeep Q-Learning