Getting Things Done - Command Line Processor

I’ve been doing a ton of work recently around user experience (UX) – and the importance of UX for architects. One thing that has become apparent is context for user interfaces – often the prettiest, most glamorous user experience does not lead to the best user experience.

I got thinking about this in the relation to the way I manage tasks. As you may know, I’m a big fan of David Allen’s Getting Things Done (GTD) methodology. Since seeing David present in a seminar last year I have been a convert. If you also use GTD you may know that NetCentrics have developed an add-in for Outlook. The add-in is pretty good - adding custom actions to Outlook and allowing you to add additional attributes to tasks, which fit in well with GTD.

One problem I’ve been having however is while Outlook does a good job of storing the tasks, it can be a little clumsy to use – especially for “rapid fire situations”. For example, my boss may come into my office and say “Hey Simon – what’s the status of project X you’ve been working on?” I’ve then got to go into Outlook, switch to tasks, scroll down for the project and try and find the list of tasks. It’s not bad – but it’s not very efficient, especially when you have a list of ~200 ongoing tasks. The same goes for adding a new task – even with the CTRL-K short cut selecting project and action can be slow at times.

Now I’ve been a big fan of the command line for many years. I came from a background in UNIX, and this has stuck with me. I do most of my file organization using the command line and have a lot of scripts that help me be more productive than I am through Windows explorer. During a recent trip to Japan (and lying awake at 3am due to jetlag) I had an idea – wouldn’t it be cool if there was a way to access my tasks through the command line? :-)

A couple of more sleepless nights later and I had a pretty good working version.

 

 

Using gtd.exe from the prompt you can use commands such as:

>list @home

A780 @Home House Install New Kitchen Cabinet

A781 @Home House Install shade in Family Room

This lists all of the tasks marked with the @home action – right to the command line.

>list ProjectX

5C2A @Waiting For ProjectX Waiting for Bob Smith to call about invoice

5C32 @Office ProjectX Setup meeting with Dan’s group to discuss sessions

This lists all of the tasks marked with the "ProjectX" project tag. All of the tasks have a unique 4 digit ID (providing you don’t have more that 65535 tasks of course). This means that you can reference them and perform actions. For example:

>complete A781

Task A781 has been completed.

>list @home

A780 @Home House Install New Kitchen Cabinet

…or even open the task within Outlook:

>open A781

(task opens in new window)

In addition, you can also of course create a new task:

>new @home House “Paint bedroom red”

………

New task A9BF (Paint bedroom red) has been created.

>list @home

A780 @Home House Install New Kitchen Cabinet

A9BF @Home House Paint bedroom red

Other functionality include searching for tasks, setting a task to “@Waiting For”, and moving tasks between projects and actions. You can supply gtd.exe with command line parameters also (if for example you wanted to do task-related actions from Monad (sorry, ermm.. PowerShell :-))).

This is still very v1.0-ish, but I’ve posted the sample up on this CodeGallery workspace. If you want to play around with this you’ll also need to install Redemption (you can get this from here) – which is used to provide some of the access to Outlook.

Finally, if you have some cycles and want to work with me on some improvements let me know :-)