How to Build an AI Content Playbook That Actually Protects Your Voice

Turn Ruth Doherty’s AI content framework into a concrete playbook for your own pipeline.

April 5, 2026 · 6 min · Russell

What a real AI-assisted PR looks like

PR

April 2, 2026 · 4 min · Russell

The audit that started everything: how Waaseyaa designed an invariant-driven architectural review

How the Waaseyaa framework designed and ran a formal invariant-driven audit across 52 packages, what it found, and how those findings were turned into a dependency-ordered eight-milestone remediation program.

April 1, 2026 · 8 min · Russell

Waaseyaa governance series

A three-part series on how the Waaseyaa framework built a governed implementation platform: from invariant-driven audit through eight-milestone remediation to a batch-driven conformance engine.

April 1, 2026 · 1 min · Russell

Build an eval harness for 184 AI agent prompts with promptfoo

How to build an LLM-as-judge eval system that scores AI agent prompts on quality, identity, and safety.

March 30, 2026 · 9 min · Russell

Backup and Disaster Recovery

Automate backups, test restores, and build a disaster recovery runbook for your VPS.

March 29, 2026 · 4 min · Russell

Build a Hugo-to-Dev.to sync engine in Go

How to build a CLI tool in Go that syncs Hugo blog posts to Dev.to via the Forem API, handling canonical URLs, tag sanitization, rate limits, and content transformation.

March 29, 2026 · 5 min · Russell

Generate Open Graph images with Playwright and an HTML template

Build a script that generates consistent OG social card images from an HTML template using Playwright screenshots, with smart caching and series-aware gradients.

March 29, 2026 · 5 min · Russell

Prompting isn't engineering, it's storytelling

The best prompts don’t give instructions. They set a scene the model can reason inside.

March 29, 2026 · 3 min · Russell

Deploying Mercure alongside Caddy on a shared VPS

How to run Mercure for real-time SSE alongside Caddy as your web server, with solutions for port conflicts, gzip interference, and JWT configuration.

March 28, 2026 · 4 min · Russell