Today I had a serious think about the state of my very long “to-do” list. Normally I keep this on sheets of paper, but this is inflexible. For example I can’t easily keep track of the exact current state of each item, and every few months I end up copying out the whole list again, a chore which takes the best part of a day.
These new-fangled “computers” can help with this sort of thing … right?
There’s loads of note-taking and to-do list software out there. Much of it is alpha quality, and/or just obviously crap. Wikis are flexible for making notes on single topic areas, but hard to automate and categorize. Web-based wikis have terrible UIs.
I have settled for now on using Tomboy, a wiki-like note taking application.
I started off with a script to pull in Red Hat Bugzilla bugs into a “Bugzilla Incoming” page in my Tomboy instance. (Bugzilla has an API too …)
./bugzilla-incoming.py -u *** -p *** daily does several things: First of all it searches the existing Tomboy pages for Bugzilla numbers (so it doesn’t fetch any bugs we already know about), then it queries Bugzilla for all bugs related to me, and finally it adds any bugs we’ve not seen to the Bugzilla Incoming page. From that page I can manually sort them into my to do list.
In future I hope I can pull in items from other sources automatically such as email.
There are other possibilities too: For example you could look over daily IRC logs and add all conversations you had with a particular person to a person-specific Tomboy page.
It might work the other way too, for example generating public feature lists from private wiki pages.
I wanted to add that I think the trick is inventing a markup syntax. For example, for Bugzilla bugs, I used:
The [#123456] markup can be added to pages easily, by either humans or scripts. Moreover scripts can edit that markup too without damaging any other part of the page (eg. if the summary changes).
Tomboy itself doesn’t support this at the XML level — eg. there is no way to add custom XML or XML namespaces. So we have to invent our own text markup to do the job.