dw darren / blog v2026.8

Technical Writing · Newport, Wales

GET /v1/posts
200 OK · 6 posts

The blog behind
the engineer.

Backend architecture, real-world PHP and Symfony patterns, AWS in practice, and lessons from 15+ years shipping production systems. No fluff, no padding.

Headroom: Counting Tokens Before a Laravel AI SDK Agent Sends Them
9 min read

Headroom: Counting Tokens Before a Laravel AI SDK Agent Sends Them

Headroom counts every token a Laravel AI SDK agent is about to send, checks it against the context window and your cost limits, and blocks it before it goes.

GET /v1/posts/laravel-ai-headroom-token-counting-for-the-laravel-ai-sdk
Trying Jev with the Laravel AI SDK 1.0 to Mark Year 6 Science Exams
9 min read

Trying Jev with the Laravel AI SDK 1.0 to Mark Year 6 Science Exams

I tried Jev, TypeSafe's decision model, through the Laravel AI SDK 1.0 to mark pupils' exam answers. Here is what it returns and how typed answers became marks.

GET /v1/posts/trying-jev-with-the-laravel-ai-sdk-to-mark-exams
CakePHP and Laravel Don't Share a Codebase, But They Share a Lineage
9 min read

CakePHP and Laravel Don't Share a Codebase, But They Share a Lineage

Laravel wasn't forked from CakePHP. Both frameworks independently built on the same PHP MVC conventions, here's what that means when you translate between them.

GET /v1/posts/cakephp-and-laravel-shared-php-mvc-lineage-not-derivation
Dysgu Cymraeg: An Obsidian Vault for Learning Welsh with Claude Code
8 min read

Dysgu Cymraeg: An Obsidian Vault for Learning Welsh with Claude Code

How I built Dysgu Cymraeg, an Obsidian vault for learning Welsh, using Claude Code to generate content and the Git plugin to sync progress to GitHub.

GET /v1/posts/dysgu-cymraeg-obsidian-claude-vault-for-learning-welsh
Why HTTP QUERY Exists: Playing With Laravel 13's Native Support
7 min read

Why HTTP QUERY Exists: Playing With Laravel 13's Native Support

Why the HTTP QUERY method was standardised and what it fixes that GET and POST cannot. A hands-on look at Laravel 13's native Http::query() support.

GET /v1/posts/why-http-query-was-introduced-playing-with-laravel-13
Building My First Laravel MCP Server: What I Discovered
9 min read

Building My First Laravel MCP Server: What I Discovered

What I learned building a production-grade Laravel MCP server: tool authorisation, prompt injection, parity testing, and the decisions most tutorials skip.

GET /v1/posts/building-a-laravel-mcp-server-what-i-discovered
Catching Laravel env() Misuse Before It Hits Production
8 min read

Catching Laravel env() Misuse Before It Hits Production

How laravel-env-audit catches env() calls outside config/, .env.example drift, and possible secrets using AST-based static analysis. No runtime needed.

GET /v1/posts/laravel-env-audit-catching-env-misuse-before-production
How I Built a Tool to Catch Laravel's Most Common Security Blind Spot
9 min read

How I Built a Tool to Catch Laravel's Most Common Security Blind Spot

Auth middleware proves who the user is, not what they can access. Learn how I built laravel-auth-audit v2 to catch IDOR, discarded gate results, unscoped bindings, and broken access control before it ships.

GET /v1/posts/laravel-auth-audit-idor-broken-access-control
Multi-Provider OAuth in Laravel: One Controller, Three Providers, Zero Hacks
9 min read

Multi-Provider OAuth in Laravel: One Controller, Three Providers, Zero Hacks

How to build production-ready multi-provider OAuth in Laravel 13 with Socialite: a clean provider_accounts table, smart auto-linking, and a last-method guard.

GET /v1/posts/laravel-socialite-multi-provider-oauth