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 :-)