A nested git worktree broke our pre-push gate

A stray PHPStan cache in a nested git worktree got scanned as production code, showing why filesystem-exclusion rules for local gates need to match at any depth.

September 5, 2026 · 4 min · Russell

A missing npm ci silently starved the content-mining pipeline for a week

A missing npm ci let schema validation crash on every mined candidate, filing zero content-queue issues for a week — the fix layers a loud fail-open guard over the actual root-cause patch.

September 2, 2026 · 3 min · Russell

Hardening a manual Claude Code review workflow in GitHub Actions

How a human-triggered ‘@claude review’ workflow got locked down to read-only, bounded-diff, revision-verified reviews after the official tag-mode example turned out to be implementation-capable by default.

September 1, 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

Automate your content pipeline with GitHub Actions and Issues

Build a daily content mining pipeline that scans your repos and queues post ideas as GitHub issues.

April 5, 2026 · 4 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

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

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

Monitoring, Alerting, and Incident Response

Set up lightweight monitoring and alerting for a solo-developer VPS, plus a post-incident checklist.

March 28, 2026 · 6 min · Russell

Automated Patching and Server Maintenance

Configure automatic security patches, detect stale services with needrestart, and keep logs and Docker images from filling your disk.

March 27, 2026 · 3 min · Russell