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