Articles
Long-form notes on software I have built: how it works, what broke along the way and what I measured.

Why I built an app that erases a drone's own shadow
DroneClean started as a question on my own PC in late September and went online three weeks later. This is what the shadow taught me, and what I would do again.

GymTree: building for the ninety seconds between sets
A fitness app lives in a strange moment: breathing hard, phone in one hand, nothing to do but rest. Designing for that moment, and for the coach on the other side of it, taught me most of what I know about product.

Maestro: turning "I want to take better photos" into a course
I built an iPhone tutor that writes you a course from a goal and will not call it finished until you have actually learned. Here is what it took to trust generated lessons.

Miniform: a form inbox that never loses a message
I wanted the contact forms on the websites I build to land in an inbox I own, on a server I run. It turned into a small lesson about what reliability actually means.

Why my CV is a spaceship
My website has a normal homepage and a small space game where you fly between planets to read my CV. Here is why I built the game, and the rule that kept it from becoming a gimmick.

Filo: an AI that remembers you, and learns to forget
I built a self-hosted conversation agent for reflecting on your own life. The hard part was not making it remember. It was a study that told me to remember less.

Portico: old Direct3D programs, unchanged, in a browser tab
I open-sourced the piece of a bigger port that made a 2000s graphics program draw in the browser without touching its code. Here is why that mattered to me, and how I know it works.

Porting a 400,000-line Windows MMORPG to the browser, multiplayer included
A 2000s C++ game client runs essentially unchanged in a browser tab and plays online against a private test server. I ported it with a team of AI coding agents.