Skip to main content

Engineering the open web.

Long-form writing on Drupal, PHP frameworks, AI tooling, automated testing and everything else in a working programmer's stack — shipped from production, not theory.

An honest OTel diet for a one-box blog
tooling

An honest OTel diet for a one-box blog

Observability tooling sells the full logs+metrics+traces meal, but my blog is one PHP process and one DB. Distributed tracing on a single-service box is air-traffic control for a paper plane. What actually earns its place: centralized log search + RED metrics from the access log. No always-on OpenTelemetry, no Tempo. The complement to my Beszel setup.

2026-08-24 / 04 min
Self-hosting your domain's DNS with Technitium — and the single-point-of-failure footgun
tooling

Self-hosting your domain's DNS with Technitium — and the single-point-of-failure footgun

Technitium is a lovely all-in-one DNS server — authoritative, recursive, and ad-blocking. I run it, but I do NOT let it be the authoritative nameserver for my domain. On one box that turns 'my site is down for an hour' into 'my domain doesn't exist for an hour' (site, email, subdomains — all gone). Where the line is, the hidden-primary pattern, and the open-resolver risk.

2026-08-24 / 04 min
WebMCP: your website becomes a tool the browser agent calls — read the fine print
ai

WebMCP: your website becomes a tool the browser agent calls — read the fine print

A Google/Microsoft-backed proposal lets your page hand an AI agent real callable tools instead of screenshot-and-guess. Chrome's already trialing it. But it's a W3C draft (not a standard), the API is churning, and the security fine print is stark: tools run with your logged-in auth and there's no mandated consent model. Clever, and a new attack surface — both at once.

2026-08-24 / 04 min
Renaming your JSON keys can change your LLM's answer
ai

Renaming your JSON keys can change your LLM's answer

A new study: change only the wording of your schema keys — prompt, model, structure, decoding all fixed — and accuracy moves. Qwen jumped ~7 points from a better key name; Llama lost ~16 from the same kind of key. Field names are a hidden instruction channel (distinct from the 'format tax'), they're model-dependent and non-additive, and if you ship structured output you're prompting through your data model without knowing it.

2026-08-17 / 04 min
It deleted prod in 9 seconds — and the AI was the least interesting part
ai

It deleted prod in 9 seconds — and the AI was the least interesting part

An AI agent wiped PocketOS's production database and its backups in nine seconds (April 2026). Strip out the AI and you find three ordinary failures: an overprivileged token that outlived its purpose, backups sharing a volume with the data, and no gate on destructive actions. Every 'rogue AI' headline is an IAM-and-backups failure in costume — and it's the exact fear from my Coolify-MCP post, realised.

2026-08-17 / 04 min
Install modules from the admin UI — the catch nobody puts on the slide
drupal

Install modules from the admin UI — the catch nobody puts on the slide

Project Browser hit stable: browse contrib and click 'Add and Install', no Composer, no terminal. But it needs a web-writable codebase and is local-dev-only — and that limitation isn't unfinished, it's a security decision in disguise (a writable codebase is exactly what production hosts forbid). Why the catch is the most reassuring part.

2026-08-17 / 04 min
Subscribe to Home
One email a week. No noise.
Every new article, plus the tools and patches I’m watching.