CPAN reverse dependencies as a tree

CPANdeps has always shown what your code depends on as a tree. But the reverse dependencies - that is the report of what code depends on yours - has always just been a list. Until now. And, of course, it's all available as XML so you can more easily use it as a data source.

If you want to …

Are you the one person left on the planet using a Palm Treo?

If you are, then I have two very important things to say to you.

First, why the hell haven't you upgraded to something - anything! - else?

Second, I just released updated versions of Palm::SMS, Palm::Treo680MessagesDB, and Palm::TreoPhoneCallDB. Now they should build with a vaguely modern perl toolchain (in the case of Palm::SMS) and will work with a modern version of Palm::PDB, which appears to have mysteriously travelled back in time and gone from version 1.29 in 2002 to version 1.016 ="…

Instant podcasts, in 50 lines of perl

I have a directory full of stuff that I've recorded off the radio. I'd like to listen to it on my phone on the way to work. And the most convenient way to do that is to create a podcast of that directory. That way, whenever I record more stuff, I just have to update the podcast and the files magically appear on my phone.

I am, of course, far too lazy to edit XML by hand, and I want something that will work in a terminal. I was surprised that I couldn't find anything like this. Well, I could. It was 1300 lines of PHP. I've not got anything against PHP, but 1300 lines of code for such a…

CPANdeps and cpXXXan scheduled downtime

CPANdeps and cpXXXan will be unavailable for some of the evening of the 28th of May, for a data centre move.


A year and a bit ago I wrote about measuring the coverage not of the code I was testing but of my tests, and how doing so had helped me find some problems. Today I dived further down that rabbit-hole.

As I mentioned then, we ran all our tests under Jenkins. Because we're testing quite a complex application, which needs configuration data, databases and so on, we've got a wrapper script that sets up all that jibber-jabber, runs the tests, and then tears down the temporary databases and stu…