Engineering
Performance budgets, rendering trade-offs and the boring, load-bearing code that lets everything else be interesting.
Rolling your own search in 2026: cheaper and better than you think
Search is a product, not a plugin. When we self-host Meilisearch or Typesense instead of renting the big names, how we tune typo tolerance, and the UX that forgives.
The TypeScript strictness ratchet: stricter every sprint, never a big bang
Strict mode on a legacy codebase is a migration disguised as a flag. The ratchet approach: incremental flags, scoped configs, codemods and type-debt metrics.
Errors are design material: engineering graceful failure
Failures are part of the product, not exceptions to it. Typed errors, retry policies, circuit breakers and writing the failure copy in the same sprint as the happy path.
The URL is your best state manager
Filters, tabs, search and pagination belong in the URL. Shareable views, working back buttons, better analytics — plus the honest list of state to keep out of it.
Designing APIs that frontend teams don't route around
API design judged by its frontend: pagination contracts, error shapes you can build UI on, BFF vs direct, honest versioning, and the endpoint autopsy.
Auth for content and commerce: passkeys, magic links, and the recovery flow
Passkeys, magic links, or passwords with rules? How we choose auth for content and commerce sites — and the account-recovery flows everyone forgets to design.
Screen-reader testing: a 30-minute workflow for every release
Automated checks catch a third of accessibility problems. A repeatable 30-minute manual screen-reader script catches the rest — the workflow we run every release.
Third-party scripts: governance before they eat your site
The audit finds the mess; governance keeps it from coming back. A consent-aware loader, per-vendor budgets in CI, and the quarterly ritual that keeps tags honest.
Analytics pipelines you can actually trust
Dashboards nobody trusts get quietly ignored. Event schemas, validation at the edge, QA environments for data, and pruning metrics nobody has read in two quarters.
View Transitions in production: the practical bits
The View Transitions API after the hype: same-document and MPA transitions, reduced-motion fallbacks, 2026 browser reality, and where motion aids comprehension.
Rate limits are a UX surface, not just middleware
Rate limiting starts in middleware but ends in the interface. Retry-After contracts, queue positions, backpressure UX and the copy that keeps users calm.
Rolling your own markdown pipeline (and knowing when to)
When MDX stops paying rent: deterministic rendering, frontmatter validation at build time, link auditing of prose, and owning your content format end to end.