Laravel Horizon in Production: The Queue Setup I Stopped Babysitting
I ran Laravel queues on queue:work + supervisord for two years, then a 3am alert made me switch to Horizon. Here's the config that actually…
I ran Laravel queues on queue:work + supervisord for two years, then a 3am alert made me switch to Horizon. Here's the config that actually…
A year of shipping PHP 8.4 property hooks in production: what actually replaced my old methods, where they made things worse, and the gotcha I…
htmx or React in 2026? After shipping both, here's when I reach for htmx, when I stay on React, and why the online essays get…
PHP 8.4 added array_find, array_find_key, array_any, and array_all. Here's where they actually replace a foreach in real code, and where they don't.
Laravel 12 is the quietest major release I've shipped to production. Here's what actually changed, what didn't, and whether the upgrade is worth your Saturday.
I migrated two Laravel apps to Octane with FrankenPHP and watched p99 latency halve. Here's what broke, what I left on FPM, and the real…
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.
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.
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…
Why Filament PHP replaced my hand-rolled Laravel admin panels, the resource patterns I actually use, and where I still drop down to raw Blade.