TypeScript Branded Types: When I Actually Use Them
I shipped a refund bug that branded types would have caught. Here is how I use TypeScript branded types for IDs, money, and validated input,…
I shipped a refund bug that branded types would have caught. Here is how I use TypeScript branded types for IDs, money, and validated input,…
Six months after React 19 went stable, here are the features I actually use day to day, the ones I forget exist, and the ones…
The Tailwind v4 dark mode setup I actually ship: the two-line CSS variant, a flicker-free toggle, the prose gotcha, and a five-minute pre-ship audit.
The Next.js App Router and Pages Router aren't just different file structures — they're different mental models. Here's what changes and what trips you up…
Laravel 12 shipped with new starter kits, a cleaner skeleton, and PHP 8.2 minimum. Here's what actually changed and why the slim release is a…
A practical tour of React 19's useOptimistic hook with before/after code for a like button, a task list, and the gotchas I hit in production.
I resisted Next.js server actions for two years. Then I rebuilt a dashboard with them and dropped my /api form routes. Here's what worked and…
A practical Tailwind CSS v4 migration guide covering CSS-first config, the new @theme directive, container queries, and real before-and-after code examples.
The React Compiler removes manual useMemo and useCallback from your components. Here's what changed, with real before-and-after code examples.