Zod Validation: The Runtime Types I Stopped Hand-Checking
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…
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.
I've shipped Laravel apps with Livewire, Inertia.js, and a separate React SPA. Here's how I actually choose between them, with code and a few regrets.
Six TypeScript utility types that earn their keep in production, the hand-rolled types they replaced, and the clever ones I stopped using. Real code included.
Prompt engineering tunes what you ask. Context engineering decides what the model sees at all. Where my agents kept dying on long runs, and the…
I moved my realtime features off Pusher to self-hosted Laravel Reverb. Here's the actual code diff, what got better, and the production gotchas that bit…