Blog

Notes from twenty years of shipping.

Notes on production systems, architecture tradeoffs, AI-assisted development, and the judgment that only comes from shipping.

  1. A finished wooden box beside two rough prototypes, a steel ruler, pencil, and wood shavings on a worn workbench

    What I Built So Far in 2026

    A candid look at what I shipped, rebuilt, unpublished, and learned in 2026—and why I still want to carry ideas all the way into production.

  2. Article image for Your Error Messages Are Part of the Product

    Your Error Messages Are Part of the Product

    Why error handling is a routing decision, and how specific messages reduce user confusion, support work, and the time engineers spend reconstructing failures.

  3. A red industrial push button beneath a closed transparent safety cover on a worn grey control panel

    The delete that didn't happen

    Twelve thousand records, one wrong environment, and ninety seconds of certainty that my career was over. Why I now build systems that assume people will make mistakes.

  4. A metal caliper laid across a machined steel part on a worn wooden workbench

    Why Senior Developers Often Sound Slower

    What senior engineering judgment looks like before implementation, and why questions about failure, ownership, and reversibility usually shorten the work rather than delay it.

  5. One continuous copper pipe beside a second pipe assembled from many couplers and a valve on a workbench

    Why I Stopped Defaulting to React

    Why I returned to server-rendered Rails and Laravel for many business applications after years of working across JavaScript frameworks, mobile apps, and separate frontend architectures.

  6. A narrow dirt footpath worn through grass beside a paved walkway

    Users Will Find a Way Around Your Product

    What unofficial customer workflows reveal about product design, and how to decide whether to pave, tolerate, or block the path users created for themselves.