Tailwind v4 Migration: What Broke When I Deleted My Config File
I migrated three production projects from Tailwind v3 to v4 in one weekend. What the upgrade tool fixed, what silently broke, and the checks I'd…
I migrated three production projects from Tailwind v3 to v4 in one weekend. What the upgrade tool fixed, what silently broke, and the checks I'd…
I deleted about 200 lines of loading state using React 19 Suspense and use(). What worked, the caching bug I hit, and where to put…
I pulled Gin out of a service that had eleven routes. Here is how I now choose between net/http, chi, Gin, Echo and Fiber, with…
Strict mode guarantees your JSON matches the schema, not that the values are right. The optional-field trap that cost me a day, and the checks…
The four API design rules I actually enforce in code review: RFC 9457 error shapes, cursor pagination, idempotency keys, and additive-only changes.
I moved a Next.js repo from ESLint and Prettier to Biome. Formatting was a clean win, linting was not. Here's the config I deleted and…
I migrated a working REST API to GraphQL and regretted it. Here's how I actually choose between GraphQL and REST in 2026, N+1 traps and…
A practical look back at PHP 8.4 well into 2026: which features I kept in production, from property hooks to the new array helpers, and…
Go 1.23 range-over-func lets you skip slices you throw away. Here is how I rewrote real iterators with iter.Seq, when it helps, and when a…
Laravel 12 is a maintenance release, and after a year in production that is exactly why I trust it: the real changes, the new starter…