Inconsequential hackery, maybe you'll find some of it useful.  Most things are up on GitHub.


Earlier in the year ifttt pulled support for Which was slightly annoying as I used it to post my loved tracks to Twitter. So what to do? Write my own.

GitHub: lastfm-getlovedtracks

Part of the flickr-tools project. Scans your Flickr library for photos with a certain number of favorites and adds them to a specific album.

GitHub: flickr-tools


After upgrading to iTunes 11, I hated the font so much that I wrote a quick script to fix things up nicely. Makes everything look reasonable and more iTunes 10 like. HelveticaNeue is an awful font, LucidaGrande is so much nicer.

GitHub: fix-itunes-font


I’ve recently switched my feed reading to Feedbin. This quick plugin allows you to add Feedbin starred items to your Movable Type action stream.

GitHub: mt-plugin-feedbin-action-streams


Perl program to analyze your iTunes library to find the disk space, song count, and the number of days it would take to play every song in the library from the beginning to end.

GitHub: itunes-size


Lots of people have written their own Twitter clients. This one is mine.

GitHub: burdie


A while back I was searching for a tool to expand shortened URLs. After 5 minutes of looking and not finding anything that tickled my fancy, I decided to just write my own.

WWW::LongURL is the backend code used by expandurl and provides the Perl bindings to the LongURL API.

GitHub: WWW-LongURL


Downloading photos from Zenfolio based sites isn’t really as easy as it could be. Give zenfoliodown the photoset and it will download all the photos in that album. Easy.

GitHub: zenfoliodown


The first code I ever released to the public back in 2002. Used to obtain processing statistics from the SETI@home project. I only keep this around for posterity as the code no longer works and hasn’t been touched since 2003.

I think the SETI@home project is still alive and well, I just lost interest in it. Consider this code abandonware.

GitHub: SETI-WebStats


expandurl is a quick Perl program that takes a shortened URL (like those created by and expands it to the full original URL.

GitHub: expandurl


tweetlinkr is a Perl program that retrieves your twitter timeline and examines every tweet for the presence of a link. Each tweet that has a link is then printed to the screen.

GitHub: tweetlinkr


Simple photo organizer.

I have a really bad habit of placing all my photos in one directory. After letting something like 10,000 photos build up, it was time to do something about that.

organizr will recursively descend into directories looking for photos and sort them into directories of the form YYYY/YYYY-MM.

GitHub: organizr


For a while now I’ve been using to submit my playcounts to Twitter. It works very well and I’m happy with it. This afternoon I thought it might be sort of cool if there was a blog version of that. So I wrote one.

toppr is a Perl program that retrieves usage data for the previous 7 days, creates a table of the top 5 artists that week and automatically creates a Movable Type blog post.

GitHub: toppr


Instapaper is a handy tool for saving web pages to read whenever you have time. Action Streams is the Movable Type plugin that powers my asides.

It would be nice to add Instapaper items to my action stream but unfortunately there’s no out-of-the-box support for Instapaper.

So I added it.

GitHub: instapaper-actionstreams


I love Movable Type’s Action Streams plugin as it enables you to have your own mini buzz feed. Which is nice.

Unfortunately, every once in a while it will insert the exact same stream event many many many many times into the mt_profileevent table. Before long these duplicates will fill up your feed and let’s be honest, no one likes a full feed.

The correct thing to do would be to track down the problem in the ActionStream source and submit a patch. Which I may still do. But for now I wrote this quick Perl hack to scan the mt_profileevent table for duplicates and make them go away.

Set it up as a cron job and you’ll never worry about this again.

GitHub: mt-remove-events


Movable Type does a pretty decent job of keeping blog comment spam in check. Except for when it doesn’t. And when it doesn’t, it’s handy to be able to go back and close comments on old entries.

mt-close-comments is a Perl program that does just that. By default it will go back and close any entry older than 20 days. Throw this in your crontab and bob is literally your uncle.

GitHub: mt-close-comments


Quick Perl program to parse an iTunes library XML file to find albums encoded below a specified bit rate.

I initially wrote this to find albums I’d originally ripped & encoded with Winamp. So now in my spare time I can figure out what needs re-ripping.

GitHub: itunes-album-bitrate


Get your friends recently listened to tracks from Uses the API ( and thus requires a API key.

GitHub: lastfm-friendsrecent


Get your most recently listened to tracks from Uses the API ( and thus requires a API key.

GitHub: lastfm-myrecent


Perl program to parse an iTunes Library XML file and counts the number of songs by each artist.

GitHub: itunes-by-artist


Traverses a directory tree and removes any empty directories. Initially written to cleanup an iTunes music folder with lots of empty directories after an iTunes library reorganization.

GitHub: rm-empty-dirs