Work
Four systems and a pile of games. Each one is here for a decision, not for a stack.
SensCritique
CTO · a few million visitors a month
Aging PHP on a framework to match. Two business APIs doing the same job. A GraphQL gateway on top. Two frontends alongside the PHP. No monitoring, no CI/CD. Eight of us.
Everyone wanted the rewrite, including me. I did the boring things first: monitoring across the whole stack, containers, CI/CD, Figma and Storybook so the two frontends stopped drifting apart. Only then did we start deleting services — and by then we could see which ones were actually dead.
You can't delete what you can't see.
Starting with the rewrite would have been faster to begin and much slower to finish.
PHP, Node.js, GraphQL, Next.js, Docker Swarm, Datadog · the long version →
Popcorns
A SensCritique product
A mobile app answering one question: what's actually worth watching tonight, across Netflix, Prime, and HBO.
I built it on Expo rather than bare React Native. That capped us — a few native things were simply off the table — and it was the right trade. The question wasn't how good the app could get. It was whether anyone wanted it, and Expo got us to that answer in a fraction of the time.
On the backend we reused SensCritique's microservices instead of writing new ones. The cleanup from the year before was what made that possible.
It got traction, but not enough. We shut it down.
Which is the trade working, not the trade failing — we got that answer in months instead of a year, and on an app we hadn't over-built.
React Native, Expo, Python, Selenium
Datadog
Developer advocacy for Datadog Apps — a platform for building your own interfaces on top of Datadog, and at the time, a thing almost nobody could picture.
I could have written documentation and talked about what was possible. Possibilities teach nothing. So I shipped instead: an app to manage Redis clusters without leaving Datadog, and one that ordered pizza through an external API — deliberately silly, because the fastest way to make a platform feel real is to show it doing something nobody expected.
Explaining the thing and building the thing stopped being two tasks.
Both ran against Datadog's own products and internal APIs rather than a sandbox, which is the only version worth showing. I took the work to AWS Summit Paris.
React, TypeScript, Python
NX Academy
A free, open-source school for developers, in French. Two full courses, dozens of technical sheets, no paywall.
It runs on Astro with no API and no database. Not because I can't build them — I've built dozens — but because every brick you add is a brick someone has to understand and maintain. Static means the whole thing survives me not touching it for three months, and a reader on a bad connection still gets the page.
The same call I made with Swarm, alone this time.
Astro, TypeScript, GitHub Actions, Docker · source ↗
Games
A year and a half ago I got curious about how games are actually made. Same instinct as the rest of this page, on a surface where I'm a beginner — and being a beginner again is the point.
Campfire Stories
My first game jam. Two weeks, one constraint. You play a cook at a campfire while strangers tell you real things. I built two systems at once, a dialogue engine and a cooking engine, having built neither before — which is exactly the mistake this whole site argues against. I shipped it anyway. Open source, runs on macOS, Linux, and Windows.
Before that
An idle game and a small city builder, both unfinished, both useful.
Games aside, this is thirteen years of the same decision: pick the smaller thing you can actually stand behind.