I very recently started using [[Remember The Milk http://www.rememberthemilk.com]], a TODO list manager. It’s quite good: you can set up various lists, target dates, submit tasks by e-mail, and then some.

The biggest downside I saw was the absence of a command line tool to access the task lists. That means that before I can see which tasks I have to do, I need to start up my browser. But let’s face it, as soon as you start up a browser, it’s suddenly time to go home (or to bed, if you’re at home) when you realise you’ve spent all day (or evening) reading Wikipedia.

So I scratched my hitch (as they say) and wrote [[rtm http://www.rutschle.net/rtm]], which enables me to just type:
rtm --show

to see what I have to do, without further delays.

The agent class RTMAgent on which rtm is built is an interesting example of one of Perl’s strengths: there is a mechanism that allows the object to catch a call to an undefined method, which lets the object’s user just call any of RTM’s API methods, catch them, and turn them into a web access.

So I can write:

$tasks = $useragent->tasks_getList;

tasks_getList doesn’t actually exists, but the useragent objects transforms it into a request to rtm.tasks.getList, sends the request to http://www.rememberthemilk.com/services/rest, parses the response and returns that. The only downside is that the response isn’t as abstract or synthetic as one might like.