to-do manager

Posted in Technology trends at 8:44 pm by ducky

Last term, I wrote a to-do list manager in Scheme for a class project. I have been frustrated with all the to-do list managers out in the world, so I finally wrote my own.

(OSAF‘s Chandler might have some of the features that I want, but it’s heavierweight than I need and isn’t really ready for prime time yet.)

The problem with most electronic to-do list managers is that they accumulate way too much stuff. I write down all the things I need to do, and then I am overwhelmed by the volume of tasks. Tasks that aren’t important or urgent or that I can’t work on right now end up getting in the way of seeing what I need to do right now.

I want to record that I need to take the car in for servicing in about three months, but I don’t want to see it until about three months from now. I want to write down that I need to paint the house, buy paint, buy rollers, and move furniture, but I don’t need to see the “move furniture” task until after I’ve bought the paint and rollers.

todo list manager screenshot

In my to-do list manager, tasks are presented in a hierarchical structure, and I gave myself three different methods for hiding things:

  1. Hide completed tasks
  2. Hide supertasks (i.e. those that I can’t start on until some other task is finished)
  3. Hide deferred tasks (until some later date (specified on a per-task basis))

(I of course also have the option to show completed tasks, show deferred tasks, or show supertasks.)

If I hide completed, deferred, and supertasks, then what is left are the things that I can work on right now.

Note that there is no option to mark supertasks “done”. My Scheme version also doesn’t let you defer tasks with dependencies, but I haven’t decided if I am going to keep that or not.

I had thought that it would be nice to have separate importance and urgency fields, as those really are different things. Answering a ringing phone is very urgent but probably not very important (voicemail will pick it up); writing a will is very important but (hopefully!) not very urgent.

It turned out, however, that I didn’t really miss having distinct urgency and importance fields; if an item wasn’t urgent, I just deferred it. Presto, out of sight, out of mind.

One thing that I hadn’t originally planned on, but which I did and liked, was to change the color of tasks based on how important they were rated. Very important tasks were deep blue, and as the tasks got less important, they got more and more washed out (less saturatated).

My Scheme version has a text box on the main page for quickly creating new tasks, but there was a cruical flaw: no way to specify which task was the parent task. I thought about showing an arbitrary number next to each task in the list of tasks, and using that to specify the parent, but that didn’t seem appropriate. Really what you need to be able to do is drag-and-drop tasks to different places in the list.

One thing that I thought of doing but didn’t get around to was to be able to expand/collapse branches of the tree. Thus if I just don’t feel like working on upgrading the family IT infrastructure today, I can collapse that task (and all its subtasks) down to one line.

I’ve started porting my to-do list manager, making it an AJAX application so that I can host it on my site at Dreamhost, but I’m not going to finish before I start at Google, alas.

Someday I’d like to integrate it with a calendar. (The Google calendar has an API; maybe I could connect to the calendar.) Someday I’d like to add optional at-location and with-person fields, so that I could ask what tasks I can do at e.g. the hardware store (like “buy paint”), or with e.g. Jim. But that will probably have to wait until after the summer is over.


  1. Best Webfoot Forward » Dreaming in Code said,

    January 22, 2007 at 9:57 pm

    […] I have said before that current to-do list managers suck rocks, and email clients could be much better. Chandler in the Grand Vision would have / could have addressed those. However, we found out very early on that people didn’t care about to-do managers or email clients: in 2003, people’s pain was centered around calendaring: you really had to buy Outlook and run an Exchange server to get halfway decent one, and even Outlook was only halfway decent. There was not a way at the time for a small business or non-profit without an IT staff to coordinate calendars. Period. So we focused on calendaring, which IMHO was the least exciting and revolutionary part of Chandler. […]

  2. Best Webfoot Forward » Google sowing seeds of own self-destruction said,

    May 26, 2007 at 10:34 am

    […] a to-do list manager […]