Accidentally Building a CPAN Web Platform

An Accidental CPAN Web Platform

Sometimes you design a system. And sometimes you make a series of vaguely related decisions over five years and eventually realise that, quite by accident, you’ve designed a system. I think I’ve just done the latter. Back in February 2021, Gabor Szabo wrote an article called Perl modules with their own web sites. He pointed […]

How One Pull Request Took App::HTTPThis to Version 1.0

I *heart* http_this

Back in January I wrote about App::HTTPThis, the tiny web server I seem to reach for whenever I need to share the contents of a directory over HTTP. It’s a deliberately simple tool, wrapping Plack::App::DirectoryIndex in a command-line interface that gets out of your way. This week, thanks to a blog post from Olaf Alders, […]

Public Identifiers, UUIDs and a Tiny SEO Fix

The titles (and URLs) of Prince William over time

Public Identifiers, UUIDs and a Tiny SEO Fix A recent question from my friend and colleague Mohammad got me thinking about the way we identify data in web applications. While working on the DBIC component of a REST API, he came across the term enumeration attack. In this type of attack, an attacker systematically guesses […]

Teaching AI About the British Monarchy with MCP

The Line of Succession MCP

One of the more interesting additions I’ve made recently to the Line of Succession website is support for the Model Context Protocol (MCP). If you’ve spent any time around AI tooling recently, you’ve probably seen people talking about MCP. It’s often described as “USB for AI”, which is perhaps a little overblown, but the basic […]

The Long Road from CGI to Containers

From CGI to Containers

One of the defining characteristics of a good programmer is an instinct for keeping implementation details in the correct layer of an application. That sounds abstract, but it turns out to explain a huge amount of the progress we’ve made in software development over the last twenty-five years. And nowhere is that clearer than in […]