Blog
Thoughts, tutorials, and things I've learned along the way.
The Unquestioned #[Computed]
Every AI-assisted performance refactor of a Livewire component ends the same way: #[Computed] on every method. Here is what the attribute actually does, when it helps, and the two questions to ask before you keep one.
Verification Becomes a First-Class Engineering Discipline
AI writes more of our code every day, and trust in that code is quietly eroding. Responsibility never actually moves to the model — so verification has to become the discipline we take seriously.
Handling Nullable Strings in Livewire
An empty input in Livewire saves an empty string, not null. It fails silently, quietly splitting your nullable columns in two — here's why Livewire does it on purpose, and the Form base class that fixes it.
Adaptive Livewire Components with Wireable & Modelable
How to build one Livewire component that adapts its UI per page — using Wireable, Modelable, and capability interfaces instead of prop explosion.
Template Method in Laravel
How to structure export processes in Laravel using the Template Method pattern — one base class, many variants, zero duplication.
Discovery-Based Architecture in PHP
Decoupled matching via PHP Attributes and Reflection, explained with webhook event handlers. How to build flexible, auto-discovering structures instead of growing if/match blocks.