Skip to main content
NOTES · Writing · loosely scheduled

Notes from production.

Short essays, post-mortems, and things I keep relearning. Mostly Next.js, headless commerce, and the engineering culture around shipping.

2026 · 05Tailwind v4 in production: what I'd do differentlyThe migration is smaller than it looks — except for the parts that aren't.6 min2026 · 05Server Actions in production: where they hold up and where they don'tTwo years in. The pattern is real, but it's not a free lunch.7 min2026 · 04The cost of an App Router migration nobody talks aboutWhy the rendering boundary is the real migration — not the file moves.8 min2026 · 04INP in React 19: the new bottleneckLCP is solved. INP is where the next round of perf work lives.5 min2026 · 04Drizzle vs Prisma: the verdict after a yearBoth are fine. Pick one based on what your team actually values.6 min2026 · 03Composable commerce, three years inWhat I'd do differently after shipping commercetools at enterprise scale.12 min2026 · 03tRPC vs GraphQL in 2026: the honest tradeoffsSame problem space, different team philosophies.7 min2026 · 03Turborepo at 100+ packages: what breaksThe point where the tooling starts pushing back.6 min2026 · 02A perf budget you can actually enforce in CILighthouse CI, bundle baselines, and the one alert worth waking up for.6 min2026 · 02FastAPI vs Node: when each one winsTwo stacks I keep reaching for, for different reasons.5 min2026 · 02Edge runtime cost realities: Vercel Edge vs serverlessEdge is fast — and not always cheaper. Here's where the math breaks down.6 min2026 · 01Type-safe forms without the gymnasticsReact Hook Form + Zod patterns I keep reaching for.5 min2026 · 01ClickHouse for product analytics: when it earns its keepAn honest take on a database that's having a moment.6 min2026 · 01OpenTelemetry adoption: a playbook for fullstack teamsVendor-neutral observability, without rebuilding everything.7 min2025 · 12Reading the room: when not to add a CMSEditorial velocity vs. engineering taxes. A decision tree.4 min2025 · 12Adyen vs Stripe for headless checkoutBoth are world-class. They optimise for different shapes of business.6 min2025 · 11Hiring for taste, not stackWhat I look for in a senior frontend.7 min2025 · 11Vercel cost controls: a practical playbookWhat to do before the bill becomes a board-level conversation.6 min2025 · 11Datadog RUM tuning for noisy appsThe settings nobody tells you to change.5 min2025 · 10Playwright vs Cypress in 2026The race I keep being asked about.5 min