Engineering,
taught
&
leadership,
practised.
I'm Steven — CTO at Digitonic, a PHP engineer since 2010 and a keen golfer with a terrible handicap. This is where I write it all down.
Latest from the journal
Stop Shipping Prompt Regressions: LLM Evals for the Laravel AI SDK with Pest 5
Your faked-agent tests prove the wiring works and tell you nothing about whether the output is still any good. Pest 5's evals plugin closes that gap.
PHP 8.4 mb_trim and mb_ucfirst: The Multibyte Gaps Everyone Polyfilled
Two customer rows look identical, and the unique index accepted both. One of them ends in a no-break space that trim() cannot see. PHP 8.4 finally shipped the fix.
The Job That Ran Before the Row Existed: Dispatching Inside Laravel Transactions
A queued job throws ModelNotFoundException for a row that plainly exists. It is not a bug in the job — it is a worker that got there before your transaction committed.