Blog
I write about DevOps, WordPress hosting, cloud infrastructure, and web development. Here you'll find technical deep-dives, practical guides, and lessons learned from building and scaling production systems.
Articles
-
WordPress 7.0 ships the AI Client. The Abilities API and MCP Adapter are what plugin developers should learn first.2507 words
WordPress 7.0 ships May 20 with the AI Client front and center. But the Abilities API has been in core since November 2025, and the MCP Adapter is what makes WordPress callable by external AI agents. Both deserve your attention before you write your first wp_ai_client_prompt() call.
-
The Open Cloud Alliantie is real. Seven Dutch providers just made sovereignty a procurement conversation.2366 words
Seven Dutch providers launched the Open Cloud Alliantie on April 1, 2026. The real impact is not technological. It changes what Dutch buyers can say in cloud procurement documents.
-
Why most Kubernetes backup strategies don't survive real disaster recovery2497 words
Most production Kubernetes clusters have a backup strategy that has never been exercised against the disaster it is meant to handle. What separates the teams who survive a DR event from the teams who don't is operational discipline, not tooling choice.
-
Kubernetes 1.36 quietly buried one of the worst RBAC patterns in production1630 words
Fine-grained kubelet API authorization graduated to GA in Kubernetes 1.36. The release notes call it 'more precise access control.' What it actually does is retire nodes/proxy as one of the worst RBAC patterns in production: a single permission that monitoring tools demanded by default, that bypassed audit logging and admission control, and that public research showed could be turned into a node-level RCE with a GET request alone.
-
Why I'm leaving GitHub for Forgejo3306 words
I moved my code from GitHub to a self-hosted Forgejo. Not because of the outages, but because of who owns what runs on top of them. The Dutch government just made the same call.
-
copy.fail (CVE-2026-31431): a small Linux kernel bug with an unusually big blast radius1631 words
copy.fail is a Linux kernel local privilege escalation disclosed on 29 April 2026. It works on nearly every modern distribution, leaves no on-disk trace, and slips past Kubernetes' default seccomp. Why it matters and what to do.
-
HashiCorp Vault vs OpenBao: a thorough comparison for platform teams4605 words
Two secrets managers, one shared codebase, two very different licenses. A deep, practical comparison of HashiCorp Vault and OpenBao for platform engineers picking between them.
-
Symfony at 20: what the quiet framework got right1685 words
Symfony turned twenty in October 2025. While Laravel captured developer mindshare, Symfony quietly won the architecture layer: the components that half the PHP ecosystem depends on without realizing it.
-
WordPress Playground + MCP: AI coding agents meet a disposable WordPress environment1611 words
The @wp-playground/mcp package connects Claude Code and Gemini CLI to browser-based WordPress instances via the Model Context Protocol. You describe a plugin, the agent builds it. No Docker, no local PHP. Here is what works, what doesn't, and why it matters.
-
WordPress 7.0's real-time collaboration: what managed hosts need to prepare1797 words
WordPress 7.0's real-time collaboration changes the load profile of every multi-user editing session. HTTP polling at one-second intervals, a new database table, and disabled post caches during active edits. Here's what hosting operators need to prepare before RTC ships.
