When to Use React Hooks (and the Times I Really Shouldn’t Have)
Six years of React, written from the bruises. When each hook actually earns its keep, and the times I reached for one and made things…
Six years of React, written from the bruises. When each hook actually earns its keep, and the times I reached for one and made things…
I rewrote our admin panel in htmx and kept our dashboard in React. Here's how the two compare in 2026, with code, gotchas, and when…
Valibot's bundle size win is real, but switching from Zod cost me more than I expected. Here's what I migrated, what I didn't, and why…
Six months using Cursor, GitHub Copilot, and Claude Code on the same projects. Where each wins, where each quietly fails, and how I actually combine…
Honest take on Drizzle vs Prisma after running both in production. When I switched my Next.js project, when Prisma still wins, and what tripped me…
I shipped sqlx in a Rust production service for 8 months. Here's the patterns I keep, the footguns that bit me, and what I'd do…
I deleted tailwind.config.js six months ago and moved every theme variable into CSS. Here's what changed about my workflow, and where the new approach still…
Six months running Laravel AI in production: the stack I actually reach for, the package I bailed on, and the parts that are still mostly…
Six Next.js server actions mistakes I shipped to production: trusting the client, missing revalidatePath, throwing errors wrong. With code fixes for each.
My honest take on Bun vs Node after six months of mixing both: where Bun earned a real spot in my workflow, and where Node…