Journal
Reflecting on some of the toughest challenges I've tackled in my career.

Errors Aren't Strings: Four Unfashionable React 19 Patterns
Most React codebases rhyme: inline error strings, forms that flash on submit, a Tailwind config quietly eating the design system. Four small patterns that compound — typed error codes, a Form wrapper, colocated copy, and no tailwind.config at all — and the UI layer finally behaves.

If You Can Fill a Spreadsheet, You Can Build an Assessment
We discuss the architecture of a sophisticated healthcare assessment platform that lets you create complex risk calculators without code using a matrix-based decision logic.

Next.js Saved Our Blog—and Probably Our Sanity
Learn how valuable eliminating runtime errors and improving performance is to establish development standards for a junior team, and how the Razzle.js to Next.js transition saved us.

How We Built Landing Page IKEA for Marketing Teams
How we transformed a 1.5-2 day landing page creation process into a 20-minute drag-and-drop experience using Strapi polymorphic components and dynamic routing.