Stuff to do, keeping on task

Posted on 2011-01-13 22:38

While I've always kept little lists of things "to do" in a spiral notebook on my desk, I've never used PC based todo (task) lists. Even when I was using a PDA constantly (back when we called them "palm pilots") I don't think I used the tasks app even one time. But lately it seems like the number of planned projects at work is so large and the timeline on getting to them let alone getting any of them done is so far out that I have really needed to get a better handle on things. I've never used Outlook and don't run Windows at work anyway, although I've heard that its task list functionality is good. It may be because so many people think that Outlook is the end-all, be-all of organizing that my first impulse was to find a solution that integrated with email. As you'll see though, what I ended up with was something about as far removed from Outlook as you can get.

I use the Thunderbird email client for a lot of reasons but it doesn't provide calendering or task lists out of the box. It was simple enough to add this functionality with the Lightning plugin and enhanced with the Provider for Google Calendar (gCal) you can easily directly edit a connected gCal however, gMail's awesome calendar has no associated task list. Lightning provides the task function, but since it has no way to push that info up to gMail you have to have your tasks reside on a local Calendar. I've found this is still pretty useful for tasks that are time sensitive and you want to reminded about since you will see them in Lightning's sidebar with other scheduled events. Its nice if you are doing a lot of emailing while working on your project since you can convert an email into a task or event with Lightning and the pertinent info is copied into the task or event in the appropriate fields. Reminders and repeating events are handy too but I quickly found that this Outlook-like task management system wasn't what I needed.

For notes in meetings a lot of times I'll just log into the CMS I run on our intranet (which is powered by Geeklog) and edit pages in ewiki (based on efurtwiki) a full blown wiki environment running under that. The wiki is nice since it has change history and is accessible on any machine regardless of OS, just log in and start typing, but it doesn't have the kind of task list goodness I really want.

For huge projects with lots of different folks working on various aspects of the effort I've used the web based dotproject (a lot like a web based MS Project) because you can tie files to tasks, configure automatic email notifications, assign resources (people), and create nice Gantt charts (which are more useful when proving that you have no hope of ever getting the project done on time than they are as tools to actually help get the project done on time). For keeping track of "issues" (or in the case of software dev, bugs) I've been using Flyspray, an excellent open-source web-based solution which I briefly thought might be leveraged for other types of tasks, but I've found its much more useful for those issues which you need to deal with but will likely be arguing about or slowly gathering information about for many months or aren't time critical. Both of these have a bit of a barrier to entry in that you have to be able to install them on your own webserver (they aren't hosted solutions) though you can find a lot of hosting companies offering pre-installation of these (and lots of other great softwares) with the hosting.

I needed something fast but powerful. A huge and bloated software like MS Word or OpenOffice was out of the question - I wanted an editor that could handle tasks and notes not a word processor. I prefer working in a terminal (thats a "command" window to you Windows folks). It had to run on Linux and OSX, and while not necessary it would be nice if it ran in Windows too. I wanted something I could use to take notes in meetings, but be able to transform those notes into lists of things to do "on the fly". I wanted to be able to easily "publish" these notes (or lists) on the intranet (which essentially means outputting to html). I need an editor that can do syntactical highlighting (change the color of the text based on the code and the type of file it is) which makes reading code sooo much easier. I wanted to be able to mark something done with a timestamp, and re-activate it again later if it wasn't really completely finished. I needed to have a fast way to promote or demote items in a list, move them around without lots of typing or clicking with a mouse. It would be great if there was a way to easily create tables of information that would output to html cleanly. I'd prefer something that didn't require much mouse use at all in fact. I was really hoping to maintain these documents in plain text as well and I was thinking that maybe I would use vim when I thought maybe I should look at emacs again.

emacs is an open-source editor that I've always avoided and barring some awesome task organizing benefit it might offer I had little desire to struggle with learning all of it's arcane commands. It wasn't until I ran across this Google TechTalk video with Astronomer Carsten Dominik in which he describes the uses and benefits of his org-mode (now built into emacs) that I began to seriously look at it. The learning curve of emacs was pretty steep, mainly because of those hideously arcane key combinations, but using org-mode was the easiest part. My first emacs document was a study in how to do all those things I wanted to be able to do, listing all of the commands that I needed to learn to get around or do those special org-mode functions and I still refer to it often as I'm constantly forgetting how to do this or that. The documents you create in emacs are text and can be read in any text editor (and will likely remain accessible and readable far longer than documents created in proprietary formats), but the power you have over the manipulation of that text is far greater than you'd have in a "notepad" class editor. There is a lot of cool functionality in org-mode like

  • checkboxes which allows you to create a checkable list of items along with a running total at the top level showing how many at the sublevel are done as you toggle the individual checkboxes.
  • Creating tables is a quick and easy way to visually organize a list of items, and yet these tables are just plain old text which I think is pretty cool.
  • Cycling through lists with Tab opens up the subordinate items for viewing, but when you're done with that top item, you can close them up again and get them out of the way - absolutely brilliant.

Since I'm not always working on the same machine, I needed a way to be able to access these documents (which I label with the .org extension to automatically kick in org-mode). I decided to set up a Wuala account (a lot like drop-box but run by Lacie) and install their app on the machines I use. Since I share up some space on a local drive (their system is partially "distributed") I was upgraded to a "Pro" account which allows me to "sync" a folder on several machines. This works as advertised and I've been able to use emacs on several machines and access the same org files which live simultaneously on all the local machines I use as well as out in the cloud.

I've also been learning how to tweak my emacs config file (the file which controls how emacs behaves) and one thing I added was instructions on how and where to publish my lists and notes. Since org-mode allows a sort of wiki markup for links, these published pages can reference each other and have a stylesheet making them look far less like the 1996 website they initially appeared to be before I decided to tweak that CSS a bit.