posts

Let the Browser Do the Math or: How I Learned to Stop Worrying and Love the DOM
Making social card images for My Mind is Racing got a bit fiddly when I had to calculate how large the font needed to be and how the text should be positioned. You can totally solve this problem with math, but I don’t want to. HTML is really good at reflowing text, repositioning one thing when another thing …

Code Review Is the Hard Part
There is currently some recognition of the fact that with code creation having become cheaper, the burden of code review has not necessarily become easier.

I'm Open to DevRel Work
This week, I had someone reach out to me about a DevRel position. I had a DevRel résumé ready to go, but it didn’t look great and it was kind of long. I asked Claude Design to make me a beautiful résumé. Rather than hiding my light under a bushel, here’s the doc, in all of its glory. Aside from full time work, …

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.