Just another GTD hacker

Merlin asks for other people to describe how they hack GTD. Since he had a nice framework for his response, it seems more efficient if people stick to that as much as possible, to make comparison easy – so I’m ganking it for mine (or maybe I’m just being lazy – your guess). Anyway, here goes:

My basic tool setup

  • All lists are in text files. (Hell, as much as possible, everything is in text files.)
  • Everything in my $HOME (and other places) lives on mirrored drives, and gets daily incremental backups to another set of mirrored drives on another machine. If I'm not at my main workstation (where my GTD/planning stuff lives), then I'm SSH'd into my main workstation to access things.
  • All lists are available all the time in Emacs, via the magic of planner.el. My version of a next actions list is always open, and usually in the visible frame. If it's not visible, hitting F8 will bring it to the front. I always run Emacs on virtual desktop five, which is accessible via Command-5 (Meta-5 for the Linux crowd; Alt-5 for the Windows crew). That means my next actions list is never more than one or two keystrokes away.
  • I don't use any sort of GUI file management, so the Finder labels thing doesn't apply to me. Instead, I use the Unix version: most of the text files under my $HOME are in several independent modules in a CVS repository. That means when I get a new machine or get an account on a new machine, I can just check out a module or two and have my entire working environment ready to go. At worst, I might have to tweak a script or three, in order to adapt to some machine idiosyncrasy -- and if that happens, the changes flow back into the repository.
  • List items are added via the planner interface in Emacs -- I've got planner-create-task bound to C-c C-t C-t. For the uninitiated, that means in order to add a new list item, all I to do is type Command-5 Control-c Control-t Control-t. That takes me to desktop five (which is where Emacs lives, remember?) and causes Emacs to ask me for a description of the item, a due date (which is optional), and what project the item should be associated with.

The key to my framework: planner.el

My Emacs setup demands more explanation. I use a module called planner.el, which combines task planning with a local wiki installation. There are two types of files in the system: day files and project files. Project files have wiki-style CamelCase names that describe the project – BioperlClass, CoLoSite, etc. Day files are named by date (today’s is 2004.09.21 – note the order of the components, so that it sort properly in the shell). Both sets of files all live in the same directory, ~/doc/plans.

Items live on both the project pages and the day pages, and planner keeps them sync’d – so if you change an item on the day page, the change flows back to the project, and vice versa. Additionally, items on a day page are linked to the project they come from (and vice versa), which makes it easy to hop around within your various files. When you open up the current day page for the first time (which for me happens about 30 seconds after I sit down at the computer in the morning), planner moves all the open tasks from yesterday into the new page, leaving behind those you’ve marked as completed. (This gives you completion date tracking as a side-effect.)

I use the day pages as my “next actions” list. The key to that is making sure that each project has only one or two items with dates associated with them – that way, only those items show up in the day pages. When I mark a task as complete, I jump over to the associated project page, find the next action, and assign today’s date to it. In other words, I’m not really using the due dates to indicate when a particular task has to be done; I’m simply tagging the next action to be done, and the system then associates it with the current day (and handles moving it forward to subsequent day pages, until I mark it as complete).

For appointment tracking, I use the Emacs diary module. I’ve got planner configured so that it inserts the diary entries for a day in the day page in question. Since you can use diary to track both one-time and recurring appointments, that has that angle covered.

Since I also read my mail and maintain my address book/contact info in Emacs, and since planner.el integrates with the modules I use for those tasks (Gnus and BBDB, respectively), I’ve got complete address book and mail integration with my planning system. Moreover, I have configured planner so that if I create a task while looking at a mail, a link back to that mail file is inserted as part of the item. Similarly, if I’m looking at a contact record and create a task, the task links to the contact record.

With all the day and project pages live in the same directory – ~/doc/plans in my case – things can get a bit messy. In order to provide some overall structure, I use a two-level hierarchy – the top level page in my wiki links to HomeProjects, WorkProjects, and a few other “meta-lists”, and each one of those details all the projects and agendas I’m tracking in that area. Right now I’m using a straight home/work split, but a moonlight teaching gig has me pondering a three-way split.

My approach and where I get value

I’m a sysadmin and the father of a two-year old, which means my life is almost completely interrupt-driven. My system allows me to quickly capture new input as it happens, and then more fully process it later, which is key to me avoiding a complete mental meltdown. There are non-electronic components the way I work too – a Hipster PDA is playing an increasingly important role – but Emacs and planner.el are at the heart of letting me juggle my myriad of commitments and “want-tos”.

Like Merlin, I’m getting value from the extra evaluation, and the refactoring. It’s also useful, as David Allen keeps saying, to just have all the “stuff” out of your head and into a trusted external place. Before I started doing this, I would have rare, brief periods where I got everything lined up properly, and I could just blast through big chunks of work, bing bam boom. Now that I’ve got things a bit more organized, those periods are becoming more frequent. I like getting into that flow state. I want more of it.

So that’s my implementation, my flavor, of GTD. What’s yours?