Skip to content

Essays

Writing

Laravel and WordPress in production, LLM work that had to pay for itself, and what broke on the way.

2026

May 31
· 0 min read

Anthropic Academy — Six Certifications Completed

I completed six Anthropic Academy courses covering the Claude API, Model Context Protocol, subagents, agentic workflows, Claude Code, and AI fluency — each with a verified certificate from Anthropic Education.

AI / LLMs RAG Career Anthropic
May 25
· 0 min read

Prompt Versioning in Production: Managing LLM Prompts Like Code

How EasyCommerce manages LLM prompts across Claude, OpenAI, and DeepSeek with a versioned registry, structured evals in CI, and a rollback path that does not require a deployment.

PHP WordPress AI / LLMs Architecture
May 25
· 0 min read

RAG Without a Framework: A Minimal pgvector Pipeline with Claude

How to build a complete RAG pipeline in Python without LangChain or LlamaIndex — chunking, embedding with text-embedding-3-large, pgvector retrieval, and grounded generation with Claude — with the tradeoffs that matter at production scale.

AI / LLMs RAG pgvector Performance
May 25
· 0 min read

Building a Claude Code MCP Server in Python: Lessons from codebase-research-agent

How codebase-research-agent exposes a tool-using AI agent as a Claude Code MCP server — JSON-RPC over Streamable HTTP, tool registration, streaming SSE, and the four things that broke in production before it worked reliably.

AI / LLMs Architecture Anthropic
May 22
· 0 min read

How I Cut Edit Distance from 168 to 43 in a Legal Document RAG Pipeline

Three architectural changes that brought average edit distance from 168 to 43 in a legal document RAG pipeline — section-scoped chunking, section-scoped exemplar prompting, and switching from a general embedding model to a legal-domain one — with a CI eval suite that made the improvement trajectory visible and reproducible.

pgvector
May 22
· 0 min read

Designing a ReAct-Style Codebase Research Agent with Tool Use

How codebase-research-agent uses a ReAct loop to orchestrate semantic search, AST navigation, symbol lookup, grep, and git blame as callable tools — the hybrid retrieval substrate it operates on, and why framing RAG as a tool rather than a pipeline changes the architecture fundamentally.

May 22
· 0 min read

Building a 12-Source Job Discovery Pipeline with RAG and pgvector

How JobPulse aggregates job listings across 12 sources in three tiers, embeds your resume into pgvector, and generates grounded cover letters via Claude — including the async adapter protocol, composite scoring model, and the three retrieval failure modes that shaped the final architecture.

pgvector
May 14
· 0 min read

Scaling a Laravel MCP Tool Registry to 46 Tools

The May 12 post covered the MCP server architecture. This one goes inside the tool registry: class-per-tool structure, Sanctum ability scoping, JSON Schema validation before dispatch, tag-based auto-discovery, and the three things that broke when the registry hit 46 tools.

Laravel PHP AI / LLMs Architecture
May 14
· 0 min read

Stop Using Fixed-Size Chunks for Technical Documentation

Why naive fixed-size chunking breaks on code-heavy documentation, and the heading-aware approach with paragraph fallback and overlap that replaced it in this portfolio's RAG pipeline.

PHP AI / LLMs RAG Performance
May 14
· 0 min read

Voyage AI vs OpenAI Embeddings for Technical RAG in PHP

Why I switched from OpenAI text-embedding-3-small to Voyage AI voyage-code-3 for this portfolio's RAG layer — model comparison, the input_type asymmetry Voyage requires, measured retrieval improvement, and the migration path that keeps search live throughout.

Laravel PHP AI / LLMs RAG
May 14
· 0 min read

A Claude Tool-Calling Loop in Laravel: From First Request to Final Answer

The exact pattern for registering tools, dispatching multi-turn Claude conversations, and processing tool results in a Laravel service — including the three production failure modes the happy path does not cover.

Laravel PHP AI / LLMs Architecture
May 14
· 0 min read

Embedding LLMs in a WordPress Plugin: EasyCommerce's Async Architecture

How EasyCommerce wires LLM calls — product description generation, fraud detection, and inventory forecasting — into a WordPress plugin using async dispatch and a provider abstraction that survives outages and scales across catalogues.

PHP WordPress AI / LLMs Performance
May 12
· 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.

Laravel PHP AI / LLMs Architecture
Apr 25
· 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.

Laravel AI / LLMs RAG Performance
Mar 10
· 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.

Laravel PHP AI / LLMs Architecture
Feb 5
· 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.

Laravel AI / LLMs Performance Anthropic
Jan 22
· 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.

PHP WordPress React Gutenberg

2025

Nov 18
· 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.

PHP WordPress WooCommerce Architecture
Sep 8
· 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.

PHP WordPress Open Source Security
Aug 12
· 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.

Performance Tailwind CSS Architecture
Jul 28
· 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.

TypeScript React Performance Architecture
Jul 5
· 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.

Laravel TypeScript Performance Vite
Jun 18
· 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.

Laravel DevOps Deployment Security
May 22
· 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.

Laravel DevOps Deployment
Apr 30
· 8 min read

Cloudflare in Front of Laravel: Real IPs, Trusted Proxies, Locked-Down Origins

How to make Laravel see real visitor IPs through Cloudflare — TrustProxies config, origin firewall rules, geolocation headers, and the caching gotchas.

Laravel DevOps Security Cloudflare
Apr 15
· 8 min read

Building a RAG Pipeline in Laravel with pgvector

How I built the AI chat on this site: chunking documents, generating embeddings with Voyage AI, storing them in pgvector, and answering questions with Claude.

Laravel AI / LLMs RAG PostgreSQL
Apr 8
· 9 min read

A Code Review Playbook That Catches Real Bugs

The three-pass review structure I've refined over a decade — when to push back, how to write comments, and what makes reviews valuable instead of performative.

Career Architecture
Mar 20
· 10 min read

Laravel Queues at Scale: Lessons from 10 Million Jobs

Patterns and pitfalls I've learned running Laravel queues in production — from connection pooling and job chunking to dead-letter handling and zero-downtime deployments.

Laravel PHP Performance
Mar 14
· 10 min read

How to Actually Work Async in a Distributed Team

Six years of async-first remote work — writing self-contained messages, when to switch to a call, time-zone etiquette, and the trap of over-rotating on async.

Career
Feb 20
· 11 min read

The Honest Economics of Selling WordPress Plugins

Six years of selling on WordPress.org — conversion rates, pricing tiers, what drives installs, the support burden, and when to walk away from a plugin.

WordPress Open Source Career
Feb 10
· 7 min read

Adding PHPStan to a WordPress Plugin (Without Losing Your Mind)

A practical guide to getting PHPStan running on a production WordPress plugin, including the stubs you need and the rules you'll want to ignore.

PHP WordPress Testing
Jan 30
· 8 min read

Hunting N+1 Queries in Laravel: Tools, Strict Mode, and Fixes

How to find N+1 queries with Telescope, Debugbar, and preventLazyLoading() — and the eager-loading patterns that fix them, including the polymorphic gotcha.

Laravel PostgreSQL Performance MySQL
Jan 12
· 9 min read

10 Eloquent Query Optimizations, in Order of Effectiveness

A systematic optimization checklist for Eloquent — select(), chunk(), chunkById(), withCount(), pluck(), subquery selects, and when to bypass the model layer entirely.

Laravel PostgreSQL Performance MySQL

2024

Dec 5
· 12 min read

Building a WooCommerce Payment Gateway from Scratch

Everything you need to know to build a production-ready WooCommerce payment gateway integration — checkout flow, webhooks, refunds, and subscriptions.

PHP WordPress WooCommerce
Nov 22
· 10 min read

Six Redis Patterns Every Laravel App Eventually Needs

Cache, sessions, queues, rate limiting, locks, pub/sub — the Redis patterns I use in production Laravel apps, with the trade-offs and the failure modes.

Laravel DevOps Performance Redis
Oct 20
· 9 min read

Building a Dark Design System with Tailwind CSS v4

How I designed the D1 "Dark Precision" system for this site — CSS-first @theme config, custom tokens, and a palette that passes WCAG at every level.

Laravel TypeScript Performance
Aug 15
· 6 min read

WP-CLI Tips That Actually Save Time

Practical WP-CLI commands and custom commands I use daily to speed up WordPress development, deployments, and debugging.

PHP WordPress DevOps
Jun 10
· 8 min read

Feature Testing Laravel Applications with Pest

A pragmatic guide to writing fast, readable feature tests in Laravel using Pest — from test structure to database setup and API testing.

Laravel PHP Testing Pest
Apr 1
· 9 min read

Five Years of Open Source on WordPress.org — What I've Learned

Honest lessons from shipping and maintaining five plugins on WordPress.org — support burden, versioning, security reviews, and building an audience.

WordPress Open Source Career
Feb 20
· 11 min read

Deploying Laravel on a VPS: Caddy, Supervisor, and Zero-Downtime Releases

The exact setup I use to deploy Laravel on a raw Ubuntu VPS — Caddy for automatic TLS, Supervisor for queue workers, and an atomic symlink deploy script.

Laravel Docker DevOps Deployment
Jan 15
· 9 min read

Semantic Search with pgvector and Laravel Scout

Add meaning-based search to your Laravel app using a custom Scout driver, pgvector HNSW index, and Voyage AI embeddings — with a hybrid keyword fallback.

Laravel AI / LLMs RAG PostgreSQL

2023

Oct 5
· 10 min read

TypeScript for PHP Developers

A practical transition guide for PHP developers picking up TypeScript — mapping familiar PHP concepts to their TypeScript equivalents, from null safety to generics.

PHP TypeScript Architecture
Jul 12
· 8 min read

Scaling WordPress: Redis Object Cache, Query Optimization, and Page Caching

A systematic guide to making WordPress fast — from Redis object caching and WP_Query optimization to FastCGI page cache and CDN asset delivery.

WordPress DevOps Performance MySQL