## blog
2026-08-21How this site got built in an evening (and what that means)I built and shipped this website in one sitting with an AI coding agent doing the typing. Some honest notes on what that felt like.read →2026-08-18AI didn't replace anyone on my team. It changed our defaults.Two years of using AI in real product work: what stuck, what didn't, and why the interesting change is in the small decisions.read →2026-08-11Measure less, but mean itDashboards multiply and attention doesn't. The case for tracking a handful of numbers you'll actually act on.read →2026-08-05Your pipeline is a product tooCI/CD setups rot because nobody owns them like a product. A few practices that keep the path to production healthy.read →2026-08-03Default to boring, budget for one adventureMost technology choices should be dull. The trick is being deliberate about the one place you take a real risk.read →2026-07-28What nine years of internal tools taught me about developersInternal tools are where a company's real workflows live. Building a platform for them changes how you think about what developers actually want.read →2026-07-21An API is a promise you can't easily take backCode is easy to change. Interfaces are not. Why the boundary deserves ten times the care of the implementation behind it.read →2026-07-14Shipping fast is a habit, not a hackTeams that ship quickly don't have a secret. They have small defaults that compound — smaller scopes, boring releases, and the discipline to cut.read →2026-07-07Estimates are forecasts, and we keep treating them like promisesSoftware estimates fail for structural reasons, not because engineers are bad at math. What actually helps is changing what we ask for.read →2026-07-01Every feature needs an exit planWe plan launches obsessively and removals never. But a product's quality is set as much by what leaves as by what ships.read →2026-06-24Debugging is the art of shrinking the questionGreat debuggers aren't smarter. They're more disciplined about turning one huge unanswerable question into many small answerable ones.read →2026-06-16Tech debt isn't the mess. It's the interest.Ugly code that nobody touches costs nothing. The debt that matters is the kind you pay on every single change.read →2026-06-09Your onboarding is a mirror. Most teams don't like looking.A new engineer's first two weeks reveal everything your team has stopped noticing about itself.read →2026-06-02The most leveraged engineering skill is writing things downNot documentation for its own sake — decisions. Six months from now, the 'why' is the only thing that's expensive to reconstruct.read →2026-05-26A code review is a conversation, not a gateThe healthiest review cultures I've seen optimize for shared understanding, not for catching each other's mistakes.read →2026-05-12Trainee, engineer, architect, PM: what each title actually taught meI've held four titles at the same company. Each one quietly rewired how I see software. A look back at what transferred and what didn't.read →