Hugo blog shortcodes: adding a visual component system to PaperMod

Six Hugo shortcodes that give your PaperMod blog callouts, steps, pull quotes, stats, before/after comparisons, and CTAs — built in one vibe coding session.

April 8, 2026 · 5 min · Russell

Day One of the Content Pipeline: What Broke and What I Fixed

First-run lessons from an automated content pipeline. Noise, human-only merges, and a backwards production step surfaced in 24 hours.

April 6, 2026 · 5 min · Russell

AI strips your voice because it doesn't know what to protect

Stop AI from stripping your writing voice. Encode your style rules, review the output, and feed corrections back in.

March 22, 2026 · 7 min · Russell

Claudia: An AI Chief of Staff That Runs on Claude Code

Claudia turns Claude Code into a personal chief of staff that remembers your relationships, tracks your commitments, and helps you make better decisions.

March 22, 2026 · 5 min · Russell

Flag untriaged GitHub issues automatically with Claude Code hooks

Use a Claude Code startup hook to surface untriaged GitHub issues and stale milestones before you write any code.

March 22, 2026 · 5 min · Russell

Testing a 48-package monorepo at scale

How in-memory implementations, a layered test strategy, and AI-assisted test generation keep a 48-package PHP monorepo testable.

March 22, 2026 · 6 min · Russell

Replacing a homegrown database layer with DBAL

How waaseyaa migrated from a homegrown PdoDatabase to Doctrine DBAL across 67 commits — and how all three applications upgraded without breaking.

March 20, 2026 · 6 min · Russell

I Migrated a Laravel App to a Custom PHP Framework in One Claude Code Session

How Claude Code built 3 framework packages, scaffolded a full application, and got 12 pages rendering — all in a single session.

March 19, 2026 · 5 min · Russell

JSON:API from Framework to SPA: Waaseyaa's API Layer

How waaseyaa’s JSON:API layer works — ResourceSerializer, SchemaPresenter, and how Tier 3 specs let a new session pick up mid-feature without re-explaining the whole contract.

March 19, 2026 · 6 min · Russell

Deny-unless-granted: access control in waaseyaa

How waaseyaa’s AccessPolicyInterface implements deny-unless-granted semantics with field-level access control — and how GitHub milestones kept it from scope-creeping.

March 18, 2026 · 5 min · Russell