latest
Why most design systems fail before they ship
Mar 28, 2026 · Product · 6 min
All posts
The constraint that shaped Dots' entire architecture
One decision made early — no drag, only intent — cascaded into every interaction model we built after.
On choosing boring tools for interesting problems
Why I use vanilla HTML for the blog, Django for the backend, and reach for abstraction only when it earns its weight.
Naming things is not a soft skill
Product names, variable names, domain names. The same rigor applies. A name is a compressed argument.
Building a Chrome extension with a side panel: what the docs don't tell you
Viewport constraints, storage tradeoffs, and why the side panel API is both the right choice and a constant headache.
PureRef users already think spatially. We just built what comes next.
Finding your first hundred users means finding people who already have the mental model. The rest is vocabulary.
The post-mortem format I use to document every build decision
Orient. Motivate. Think. Surprise. Show. Reflect. A structure that forces honesty about tradeoffs.