A trivial bug in cl-audioscrobbler

So as I’m learning Common Lisp, as I usually do in a new language, I decide to write an IRC bot. It has been quite an interesting experience. Having had the general framework figured out I started to make it actually do some things, google searches, quotes, etc…

I also recently set up a last.fm account and had nothing better to do on New Year’s Eve, so I thought it would be nifty if I had my bot interact with last.fm in some way, and I found a handy library to do just that, cl-audioscrobbler.

But it always set the time the song played to 6 hours before I actually played it. It was easy to figure out what was going wrong, given I’m in CST, or UTC-6. Last.fm’s API specifies: “UTC date/time in YYYY-MM-DD hh:mm:ss format”. cl-audioscrobbler was sending my *local* time.

So I found the bit of code that figures out what time it is in src/tools.lisp, and naively tried to simply add 6 hours to whatever it produced. Naturally, that didn’t work out so well, and I wound up with something that kinda sorta worked but was hugely complicated and ugly. Then I found the un-braindead way to do it.

Change (get-decoded-time) to (decode-universal-time (get-universal-time) 0)

It’s not much, and chances are cl-audioscrobbler’s author has already found and fixed this (it was obvious looking at the sources that 1.2 support was already well underway), but I sent him a quick note about it anyway.

But it was the first bug in Lisp I’ve ever fixed that wasn’t in my own code, so I’m still pretty happy about it.


Update: As of 2008/01/08 this is fixed with the 0.3.1 release. Thanks to Nicolas Lamirault for accepting my first ever Lisp patch =)


January 3, 2008 - Posted by | cl-audioscrobbler, Common Lisp, Last.FM

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: