Claude Code Hooks: The Guardrails I Actually Ship
Claude Code hooks changed how I run agents. Here is the exact PreToolUse and PostToolUse setup I ship in every repo, with the JSON, exit…
Claude Code hooks changed how I run agents. Here is the exact PreToolUse and PostToolUse setup I ship in every repo, with the JSON, exit…
htmx or React in 2026? After shipping both, here's when I reach for htmx, when I stay on React, and why the online essays get…
I switched a Next.js app from Prisma to Drizzle last spring. Here's how I now pick between the two TypeScript ORMs on real serverless projects.
The React 19 use() hook quietly replaced my useEffect+useState fetch dance and my useContext guards. Here's what works, where it breaks, and how I ship…
I ran an LLM judge for six weeks before I noticed it kept rewarding longer answers. Here is the evaluation metrics stack I actually trust…
I spent three years faking a CSS parent selector with useEffect and MutationObserver. Then :has() shipped everywhere. Here's what I deleted and what stayed.
My real Tailwind v3 to v4 migration notes: the utility renames, the CSS-first config, the PostCSS pipeline change, and every place my styles quietly broke.
The Go concurrency patterns I actually reach for in 2026: errgroup instead of sync.WaitGroup, context cancellation everywhere, worker pools without cargo cult.
Two years, three runtimes, one grumpy migration weekend. Here is the Rust async runtime I ship with in 2026, and the cancellation trap that cost…
I ran Cypress for years, then moved my e2e suite to Playwright. Here's what actually broke, what improved, and how I'd do the migration again.