The case against premature microservices.
Three years and a dozen rewrites later, here's what we wish someone had told us about distributed systems before our first split. A long, opinionated read on architectural patience.
Read the essayEngineering, design, AI, and the occasional rant on agency culture. Long-form essays, written by the people doing the work — not a marketing team distantly translating it.
Three years and a dozen rewrites later, here's what we wish someone had told us about distributed systems before our first split. A long, opinionated read on architectural patience.
Read the essayA working setup for keeping design and code in sync without making either side miserable. Style Dictionary, light tooling, no committees.
Notes on chunking, embeddings, and reranking from a year of building production retrieval. Most of the magic is in the boring parts.
Postgres, server-rendered HTML, and patience. Why we keep choosing the unfashionable option, and what it gets us five years later.
Why we keep a tiny, deliberate type system across every project — and the small list of fonts that have earned their place in it.
A pragmatic playbook for instrumenting a small product without standing up an entire reliability practice. Focus on the three signals that matter.
A short essay on saying no — to bad fits, bad budgets, and bad timelines. The work we don't do is part of the work we do.
Most ML systems we audit have no real evals. Here's a minimum-viable harness pattern that takes a week and saves a year.
When animation helps, when it harms, and the small set of rules we apply before letting any transition into a build.
How we write handoff docs that engineers actually read, and the format we've evolved over fifty projects.