Monorepo vs Polyrepo: Why I Merged My Repos Into One
I ran four repos for one product and lost Fridays to version-syncing. Here's how I think about monorepo vs polyrepo now, and when each setup…
I ran four repos for one product and lost Fridays to version-syncing. Here's how I think about monorepo vs polyrepo now, and when each setup…
Is Copilot safe? The tool's fine, but its code is only as secure as your review. The SQL injection I found auditing AI code, plus…
React 19's useOptimistic hook replaced my hand-rolled optimistic UI: instant likes and messages with automatic rollback. Here's how I use it, with code.
The Go error handling patterns I actually use in production: wrapping with %w, errors.Is and errors.As, sentinel errors, and errors.Join, with code.
TypeScript types vanish at runtime, which is how bad API and form data slips through. Here's how I use Zod to validate at the edges…
I moved from npm to pnpm six months ago and my node_modules went from 14GB to under 3GB. Here's what changed, where it bit me,…
Fine-tune an LLM and a small open model can beat GPT-5 on a narrow task, cheaper. A look at when QLoRA wins, when it loses,…
PHP 8.4 property hooks and asymmetric visibility, with before-and-after code. The getter and setter boilerplate I deleted, and where these features bite back.
Tailwind CSS v4 moves config into CSS, auto-detects content, and bakes in container queries. Before-and-after code on what changed and what it costs you.
React 19 forms, useActionState, and useOptimistic with before-and-after code. The features I actually kept after upgrading, and the one I'm still careful with.