Biome vs ESLint: The 400 Lines of Config I Deleted
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 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…
Symfony vs Laravel in 2026, compared through real projects: philosophy, Eloquent vs Doctrine, tooling, release cadence, and the rule I use to pick one.
I dodged axum for a year, sure a Rust web framework would fight me on every handler. It didn't. Here's the axum setup, state, and…
Rust vs Go, decided by what you are building rather than benchmarks: where the borrow checker pays off, where Go's compile times win, and when…
I carried experimentalDecorators in tsconfig for six years. Here is what the standard TypeScript decorators actually changed, and why NestJS still needs the flag.
I wrote the same map helper four times before using Go generics. Where type parameters earn their keep, where I backed them out, and what…