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


lastfm-getlovedtracks

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

GitHub: lastfm-getlovedtracks

faves-to-album.pl

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

fix-itunes-font

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

mt-plugin-feedbin-action-streams

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

itunes-size

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

burdie

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

GitHub: burdie

WWW::LongURL

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

zenfoliodown

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

SETI::WebStats

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

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

GitHub: expandurl

tweetlinkr

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

organizr

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

toppr

For a while now I’ve been using tweekly.fm to submit my last.fm 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 last.fm 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-actionstreams

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

mt-remove-events

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

mt-close-comments

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

itunes-album-bitrate

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

lastfm-friendsrecent

Get your friends recently listened to tracks from last.fm. Uses the last.fm API (http://www.last.fm/api/intro) and thus requires a last.fm API key.

GitHub: lastfm-friendsrecent

lastfm-myrecent

Get your most recently listened to tracks from last.fm. Uses the last.fm API (http://www.last.fm/api/intro) and thus requires a last.fm API key.

GitHub: lastfm-myrecent

itunes-by-artist

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

GitHub: itunes-by-artist

rm-empty-dirs

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