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 🙂


Comments (6)

  1. Ali says:

    Cool and very "lean" indeed, but I think I will miss my richer functionality like nesting tasks and attachments. Have you tried MyLifeOrganized (MLO)? I find the functionality really cool, but since it is impossible to get away from Outlook at this point (particularly at MS), I coded in some custom DASL filters for Outlook to function like MLO with Netcentrics. Not the fastest, to your point, but the most visual. With keyboard shortcuts, it does the job.

  2. Add item to SharePoint list but returning to another

    location [Via: Serge van den Oever [Macaw]


  3. Matt says:

    Interesting… when I try any of the functionality with relation to "Context" like the inclusion below, it throws an exception:


    Unhandled Exception: System.ArgumentNullException: Value cannot be null.

    Parameter name: s

      at System.IO.StringReader..ctor(String s)

      at System.Xml.XmlDocument.LoadXml(String xml)

      at gtdcmd.Utils.get_AllProjects() in C:filesdevgtdcmdgtdcmdUtils.cs:line


      at gtdcmd.Program.Do(String[] args) in C:filesdevgtdcmdgtdcmdProgram.cs:

    line 129

      at gtdcmd.Program.Main(String[] args) in C:filesdevgtdcmdgtdcmdProgram.c

    s:line 73

  4. smguest says:


    Do you have the latest version of the NetCentrics Add In installed?  This is a pre-requisite for this version.  

    I’m thinking of creating a version that works without add-ins (using the new category feature in Outlook 2007).  If anyone would be interested, do let me know.



Skip to main content