Writing
Notes on building software with care — interface craft, architecture, and the details most people scroll past.
2026
-
The empty state is the product
The screen a new user sees before they've done anything is the most important one you'll design — and the one most teams skip.
-
The 200 milliseconds that decide everything
Whether an interface feels alive or dead comes down to a handful of transitions most people never tune. Here's how I think about them.
-
Local-first, and why I keep coming back to it
Sync is hard, but building as if the network is a feature rather than a dependency changes the whole shape of an app — usually for the better.