With Halloween completely over, done and dusted for another year, spooky avatars and haunting usernames firmly put back into storage, Twitter was feeling a little less scary than usual this morning.

Fortunately, I found a solution that is guaranteed to terrify everyone who dares nudge against my Twitter feed:

Yes, now each avatar-laced tweet of mine will advertise the number of days remaining until Xmas. There’s no escape…

With (checks avatar) 54 days to go, this would ordinately require that I change my Twitter avatar every day at the moment the clock struck midnight. As thrilling as this would have been to do manually every 24 hours, I couldn’t help but think I should delegate it somehow.

Hence I wrote a shell script so my puter can experience the excitement instead.

The script is pretty simple - it calculates the day of the year Xmas falls on (359) and subtracts from that the current day of the year (305) to get a ‘days left’ figure. (This means it’ll fall to pieces on Boxing Day…)

Next, it uses the ever-magnificent ImageMagick to draw that number onto my avatar image in a couple of passes to get a ‘pleasant’ outline effect, so the number is clearly readable even at lower resolutions (THERE’S NO ESCAPE, remember?)

Finally, it uploads to Twitter.

Now, usually manipulating the Twitter API from a shell script calls for twurl or curlish, but I didn’t really fancy having to install a Ruby or Python env. So I finally got to use a web service I saw a while ago but - until now - had no reason to use: foauth.org! (Foauth is a cool little service that lets you interact with services like Twitter and GitHub with Basic HTTP auth, which is perfect for stuff like this.)

A little fiddling with the Twitter API (using a standard multipart upload failed - the image had to be explicitly base64 encoded) and the job was done.

Of course the crucial step is automating this so it happens each day, hence cron. Simples.

You can find (a version of) the script I’m using here should you also wish to try tormenting your followers in this way.