PHP & Laravel
The language got good. Most code has not caught up with it.
50 articles · 408 minutes of reading
PHP got good and the ecosystem has not quite caught up with itself. Enums, readonly classes, fibers, property hooks, and by 8.5 a type system strong enough to design against rather than around. Plenty of code is still written the way it was written for PHP 7, running on a far better engine than it knows about.
Laravel is the same story from the other end. The framework hands you so much that the path of least resistance is to let it make your design decisions, and then a single feature touches ten files and nobody can say why it has to. A fair amount of what I write here is about using less of it, deliberately.
Framework craft, the parts that still hold up years later: the container, Eloquent without the footguns, the PSRs worth importing, and tests that assert behaviour rather than mocking their way around it.
Start here
Fibers Plus the Polling API: What Async PHP Actually Looks Like Now
Fibers give PHP concurrency. The Polling API gives it native epoll and kqueue. Here's how to build on both, with honest benchmarks.
Jul 2026 · 12 min read
The Object Design Style Guide for PHP 8.5 - Discipline without friction
How PHP 8.5 absorbs Noback's Object Design Style Guide patterns directly into syntax, eliminating ceremony.
Feb 2026 · 12 min read
Testing Actions, Not Mocks
Mocking your own Actions tests the wiring, not the behaviour. How I test Laravel Action classes for real with Pest, and where fakes still belong.
Jun 2026 · 9 min read
The PSR Standards You Are Probably Ignoring
Five PSR standards that most PHP developers skip. Master them and write code that works anywhere, tested easily, and tied to nothing.
May 2026 · 12 min read
Everything in PHP & Laravel
The UK is mandating e-invoicing in 2029, and your invoicing code is not ready
From 2029 every UK VAT invoice has to be structured data that passes about eleven hundred rules. What that means for the invoices table you already have, and the four fields that break first.
Fibers Plus the Polling API: What Async PHP Actually Looks Like Now
Fibers give PHP concurrency. The Polling API gives it native epoll and kqueue. Here's how to build on both, with honest benchmarks.
The Polling API Is the Most Underrated RFC PHP Has Shipped in Years
The Polling API gives PHP 8.6 native epoll and kqueue at last. Here's why the RFC nobody discussed is the most consequential in years.
Testing Actions, Not Mocks
Mocking your own Actions tests the wiring, not the behaviour. How I test Laravel Action classes for real with Pest, and where fakes still belong.
The PSR Standards You Are Probably Ignoring
Five PSR standards that most PHP developers skip. Master them and write code that works anywhere, tested easily, and tied to nothing.
Building Real Applications with TempestPHP
How to structure TempestPHP applications with domain-first folders, repositories, command handlers, and thin controllers that stay maintainable.
The Object Design Style Guide for PHP 8.5 - Discipline without friction
How PHP 8.5 absorbs Noback's Object Design Style Guide patterns directly into syntax, eliminating ceremony.
Static site generation in PHP with Tempest
Learn how Tempest brings static site generation to PHP, making it easy to build fast, secure, and scalable sites with familiar patterns.
An educational look into the Tempest PHP framework
Discover how Tempest, a modern PHP framework, uses code discovery and the latest PHP features to simplify app development and boost productivity.
Advanced Authorization methods in Laravel
Unravel Laravels authorization built-in Gates, Policies & advanced ReBAC, ABAC, PBAC methods for secure, scalable app access control.
Diving into Notifications
Learn to send multi-channel notifications in Laravel with email, Slack, and in-app alerts.
Building a Homelab Dashboard with Laravel and Livewire
Follow my journey as I build a powerful homelab dashboard using Laravel and Livewire, automating and monitoring my setup along the way.