Notes from real work

WordPress engineering for the agent era.

I started this blog to document real work, not to add to the AI noise — the decisions, the failures, the maintenance that most AI writing skips. I've built for the web since the early nineties, the last fifteen years in WordPress, and there's now an AI agent harness sitting in the middle of how I work.

Donovan Maidens

Thirty years on the web. Fifteen in WordPress. Four plugins on WordPress.org, one agent harness in daily use, and a blog that only covers work I have actually shipped.

Latest writing

All articles →
Learning a Language With AI as a Patient Tutor A patient AI tutor that never tires or judges — but it can't make you practise, and that's the part that still belongs to you. 6 min read How AI Changed the Way I Do WordPress Development How AI changed the shape of my WordPress development work — and why the review, security, and judgement load went up, not down. 9 min read How I Build WordPress Plugins With AI How I build real WordPress plugins with an AI agent harness — the scaffolding, the review gate, and how one developer maintains a live MSC catalogue. 9 min read Why My Orchestrator Isn't Allowed to Write Code My orchestrator plans and delegates; it never writes code. Here's why separating decision from execution keeps a multi-agent system from drifting. 5 min read Coding Is Not the Same as Developing Coding is syntax; developing is deciding what should exist. AI is fast at the first and unreliable at the second — that gap is the work that matters. 5 min read Kirsch: why a terminal-native agent, when Claude Code exists Why I'm building Kirsch, a terminal-native coding agent that proposes patches, runs policy-gated commands, and keeps sessions local and cancellable. 7 min read

Plugins

Four free plugins on WordPress.org, under the MSC name.

MSC: Post Last Updated Date

Show a “Last Updated” date on posts and pages. SEO-friendly time markup, custom labels and formats, any theme. No JavaScript.

View on WordPress.org →

MSC Post Expiry

Automatically expire posts and pages on a schedule — trash, delete, draft, make private, recategorise or redirect.

View on WordPress.org →

MSC Scheduled Visibility

Schedule posts, pages and products to appear and disappear between set dates, with recurring windows and role-based visibility.

View on WordPress.org →

MSC Stealth Login

Hide wp-login.php behind a custom login URL and stop brute-force attacks — lockouts, allowlist, history, alerts. No tracking.

View on WordPress.org →