Building the things that nobody is asking for
I'm Olaf Alders. I write software for the web. Currently building My Mind is Racing — every run, swim, ride and race — all in one calendar.
ls ~/posts
view all →
How to Deprecate a CPAN Module
Deprecating a module on CPAN is not as simple as pushing a button, so let’s run through what’s actually involved and what you can do if you’d simply like to hand the module off to someone else. The key thing to know here is that to deprecate a module you have to upload a deprecated version. This may …

Claude Code: Anatomy of a Misfeature
On Canada Day (July 1), 2026, Anthropic shipped a surprising “easter egg” to users of Claude Code: 2.1.198 includes an efficiency bypass which allows agents to continue on without being blocked on direction from a human. This misfeature completely evaded mention in the changelog as well as the docs. I asked …

The dot claude Attack Surface
You won’t find anything nefarious in most .claude directories — but how do you know until you look? Trusting a cloned repo enables its Claude Code hooks with no further prompts, now and every session after. Here’s what that decision covers and how to narrow it.

Keeping it Really Local
I worried that writing about an open issue in Dave Cross’s App::HTTPThis might have annoyed him. Instead he merged my patch, found a better solution, and blogged about taking the module to version 1.0.

Keep It Local
127.0.0.1 keeps a dev server reachable only from my own machine; 0.0.0.0 opens it up on every network interface. Let’s look at how to bind clodhopper, air, Python’s built-in file server, and http_this so that they don’t broadcast your resources to the world.

On Hopping Claudes
I vibe-coded a dashboard for hopping Claudes. It allows me to see which of my agents are working, stalled, or waiting on me. Under the hood it captures each agent’s hook events into a local SQLite database.