Writing

Essays on TypeScript, the browser, and the craft of building interfaces.

2026

I Recommended Skills. Then I Measured Them. Next.js 16 Has Four Caches. Here's Which One Broke Your Page. Your Agent Reads Too Much Your CLAUDE.md Is a Tax You Pay on Every Token Your + 's' Only Speaks English — Pluralize with Intl.PluralRules Why .length Is Wrong for Strings in JavaScript — and How Intl.Segmenter Fixes It Why Zustand Breaks in Next.js — And What the Fix Actually Is Most Startup Ideas Are Backwards — I Search for Products People Already Resent Stop Writing try/catch — Your TypeScript Errors Deserve Types Stop Using Booleans Everywhere — Use Union Types Instead Render Props Are Not Dead — React Hooks Didn't Replace What Actually Matters Why I Stopped Using Enums in TypeScript (I Use as const Instead) You Don't Need Zustand: useSyncExternalStore Is All You Need Why I Stopped Building My JavaScript Framework After 1,500 Lines of Spec 3/3 I Built a Reactive Compiler for JavaScript — Here's Where It Broke 2/3 I Designed a Web Framework That Replaces React Hooks With Two Imports 1/3