Skip to content

Blog

Writing

Engineering, AI experiments, and software craft.
MCP Servers for Laravel: A Production Pattern
May 12, 2026
· 0 min read

MCP Servers for Laravel: A Production Pattern

How I built the MCP server that powers AI access to this portfolio — JSON-RPC over Streamable HTTP, Sanctum bearer auth, an ability-scoped tool registry, and the gotchas worth knowing before you ship.

RAG on SQLite: Pure-PHP Cosine Similarity Without pgvector
Apr 25, 2026
· 9 min read

RAG on SQLite: Pure-PHP Cosine Similarity Without pgvector

How I built RAG retrieval against a SQLite database using pure-PHP cosine similarity — when it scales, when it doesn't, and the migration path to pgvector.

A Multi-Provider AI Driver Pattern for Laravel
Mar 10, 2026
· 10 min read

A Multi-Provider AI Driver Pattern for Laravel

A clean driver pattern for switching between Claude, OpenAI, Groq, and Ollama in a Laravel app — with failover, testing, and a single calling interface.

Cutting Claude API Costs by 89% with Prompt Caching
Feb 5, 2026
· 8 min read

Cutting Claude API Costs by 89% with Prompt Caching

A practical Laravel integration of Anthropic prompt caching — what to cache, the 1024-token minimum, multi-breakpoint strategies, and real cost numbers.

Building Production Gutenberg Blocks in 2025
Jan 22, 2026
· 10 min read

Building Production Gutenberg Blocks in 2025

A practical guide to building Gutenberg blocks with the v3 API — block.json, dynamic blocks, deprecations, and the testing strategies that actually work.

Building Custom Commission Logic in Dokan Multi-Vendor
Nov 18, 2025
· 11 min read

Building Custom Commission Logic in Dokan Multi-Vendor

How Dokan's commission system actually works, the filters you need, per-category and tiered commission patterns, and what to never do.

WordPress Plugin Security: Lessons from Two Disclosures
Sep 8, 2025
· 10 min read

WordPress Plugin Security: Lessons from Two Disclosures

The exact security checklist I run every plugin through before release — capability checks, escaping, nonces, and the disclosed bugs that taught me each lesson.

Tailwind v4 Migration: From v3 Config to CSS-First Tokens
Aug 12, 2025
· 8 min read

Tailwind v4 Migration: From v3 Config to CSS-First Tokens

A practical guide to migrating a real Laravel app from Tailwind v3 to v4 — what breaks, the new @theme syntax, plugin migration, and the 5× build speedup.

React 19 in Production: useTransition, useOptimistic, and the End of forwardRef
Jul 28, 2025
· 9 min read

React 19 in Production: useTransition, useOptimistic, and the End of forwardRef

How I use the new React 19 hooks in this portfolio's admin — useTransition for non-blocking input, useOptimistic for instant UI, and refs as props.

Splitting Laravel into Three Vite Bundles for Smaller Pages
Jul 5, 2025
· 7 min read

Splitting Laravel into Three Vite Bundles for Smaller Pages

How I split this portfolio into three independent Vite bundles (frontend, auth, dashboard) — separate dependencies, separate CSS, working HMR across all three.

Caddy + Laravel: A 50-Line Production Config
Jun 18, 2025
· 8 min read

Caddy + Laravel: A 50-Line Production Config

The exact Caddyfile I run in production — automatic HTTPS, HTTP/3, security headers, rate limiting, asset caching, all in ~50 lines.

Supervisor for Laravel: Queue Workers, Scheduler, Horizon
May 22, 2025
· 8 min read

Supervisor for Laravel: Queue Workers, Scheduler, Horizon

Production Supervisor configs for Laravel queue workers, schedule:work, and Horizon — with the gotchas around stopwaitsecs, max-time, and zero-downtime restarts.