Engineering
Performance budgets, rendering trade-offs and the boring, load-bearing code that lets everything else be interesting.
Queuing writes for a flaky world
Offline writes done honestly: outbox queues, idempotency keys, optimistic state that admits it's pending, conflict surfacing, and deciding which features truly need them.

Experiments that don't shift the layout
A/B testing without layout shift: server-side assignment, experiment flags that never leak into the DOM, metric integrity, and the true cost of visual editors.
A search index built at build time
A build-time search index for static sites: tokenisation, stemming, synonyms, size budgets, sharded delivery, worker-side ranking, and proof it got better.
Monorepo or not? A studio's decision framework
Monorepos solve code-sharing and coordination problems most studios don't have, at tooling costs they don't predict. When we say yes, and what we do when we say no.
Form architecture at scale: schemas, errors and autofills
Schema-first form engineering: shared zod validation, error copy as data, correct autofill tokens, and announcements that don't double-speak.
View transitions in the wild: lovely, fragile, worth it
Eight projects in, we still love the View Transitions API — with our eyes open. Where it shines, how it fights your router, and the tiers that keep it honest.
Local-first sync engines: what we learned shipping one
Field notes from building a real sync engine: CRDT vs last-write-wins in practice, conflict UX that doesn't panic users, and when to skip it all.
Keep your pages findable by Ctrl-F
Virtualisation silently breaks in-page search. The hidden=until-found and content-visibility toolkit, chunk-rendered long lists, and when a custom find box earns its keep.
Syntax highlighting with zero runtime
Syntax highlighting with zero runtime: tokenise at build time, theme code with design tokens, keep language support honest, ship an accessible copy button.
WebSockets vs SSE: a realtime guide without religion
An honest guide to realtime transport: WebSockets vs SSE vs polite polling. Lifecycle, reconnection with backoff, presence, scaling and mobile battery realities.
State machines for checkout and onboarding flows
Multi-step flows rot into boolean soup. Explicit state machines fix back-button bugs and analytics blindspots — with a worked checkout example.
Animation is engineering: shipping motion at 60fps
Motion at 60fps is an engineering discipline: compositor-only properties, FLIP for layout changes, when canvas or WebGL earn their weight, and testing.
HTML emails in 2026: engineering for a hostile medium
Table layouts without despair, the dark-mode inversion lottery, bulletproof buttons, image-off rendering, and a testing matrix a small team can actually run.