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 Looping: array_find, array_any and array_all in PHP 8.4
PHP 8.4 adds array_find, array_find_key, array_any and array_all — the readable way to search arrays and retire foreach-with-flag loops.
Test AI Features Without Calling the API: Agent::fake() in the Laravel AI SDK
You shipped an agent and wrote zero tests for it, because hitting a real model is slow, costs tokens, and needs a key in CI. The Laravel AI SDK's fake() fixes all three.
The Complete Guide to Caching in Laravel: Tags, Locks, and Invalidation
Most Laravel developers know Cache::remember and stop there. This guide goes the whole way: drivers, stale-while-revalidate, cache tags, atomic locks for stampedes, and an invalidation strategy that survives production.