ARTICLES

Everything I've written.

laravel

A Laravel Validation Rule That Scores Spam and Toxicity with Jev

Honeypots stop bots, not humans dropping promotional links. Here's a Laravel validation rule that sends the submission to Jev, reads the score and the confidence, and fails open when the API is unreachable.

9 min read →
php

Upgrading a Laravel App to PHP 8.6: Deprecations, Session Defaults and a CI Checklist

PHP 8.6 lands on 19 November 2026. Here's the ordered checklist I run on Laravel apps — CI first, deprecations second, production runtime last.

9 min read →
laravel

Check Your LLM's Homework: Verifying Laravel AI SDK Output with Jev

A second LLM grading the first one is slow, expensive and wrong in the same places. Here's how I verify Laravel AI SDK answers with Jev instead.

10 min read →
php

PHP 8.6's Time\Duration: No More Guessing Whether That Timeout Is Seconds or Milliseconds

PHP 8.6 ships Time\Duration, a nanosecond-precision value object for stopwatch time. Here's the whole API, where it beats DateInterval, and how to bolt it onto a Laravel app whose framework still wants ints.

8 min read →
laravel

Extract a Package from Your Laravel App: The Complete Guide

Every team has an app/Support folder that's been copy-pasted into four projects. Here's how to extract it into a real Composer package without breaking the app it came from.

19 min read →
laravel

Route Support Tickets with Jev: Confidence-Gated Triage in Laravel

Send a support ticket to Jev once, get a typed department, an urgency probability and a frustration score back, then let confidence decide whether to assign it or hand it to a human.

11 min read →
livewire

Livewire 4 Interceptors: Hooking Every Request Without Touching a Component

Livewire 4 replaces the loading-bar hacks and the 419 handler you wrote twice with a real interceptor system. Three levels, and picking the wrong one is the first thing that goes wrong.

12 min read →
php

PHP 8.6 Partial Function Application: Delete Half the Closures in Your Laravel App

PHP 8.6 lets you write str_replace(' ', '-', ?) and get a closure back. Here's what the ? and ... placeholders actually do, rewritten against real Laravel code, and where they bite.

9 min read →