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
Async PHP grew up in 2026 — does a Drupal developer need to care?
php

Async PHP grew up in 2026 — does a Drupal developer need to care?

Fibers are mature, AMPHP and ReactPHP share one event loop via Revolt, and the concurrency jokes are finally wrong. So how much must a Drupal dev learn? Almost none directly — Drupal's synchronous DB blocks the whole model. The one real win (parallel outbound HTTP in a queue worker) Guzzle already gives you, no Fibers required.

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
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
No-code automation is still code: ECA, the dead Rules module, and reviewable workflows
drupal

No-code automation is still code: ECA, the dead Rules module, and reviewable workflows

The tidy 'Rules is stuck, use ECA' story is out of date — Rules shipped a stable 4.0.1 in Feb 2026. But it already lost, and why says something honest about 'no-code': ECA models are version-controlled YAML you can't actually review in a diff, can't breakpoint, can't unit-test. Where ECA is the right tool, and where a 30-line event subscriber wins.

2026-08-24 / 04 min
The junior-dev cliff is real — but it's a training-pipeline problem, not a layoff story
ai

The junior-dev cliff is real — but it's a training-pipeline problem, not a layoff story

Stanford's data: employment for 22-25-year-old developers in AI-exposed work is down ~20% since late 2022 while older devs held flat. The scary chart is real; the wrong lesson is 'AI took the jobs.' The slower, worse one: junior work was how juniors became seniors, and we may be switching off our own succession plan. Honest about the multi-causal mess (ZIRP, rates, Section 174) too.

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.