The Rave
Yesterday was the birthday of a shell script that Gina Trapani uses to (her words) "run her life." I am a huge Lifehacker fan, and when Gina started Smarterware I subscribed to its RSS as well. Though a lot of posts overlap, some do not - and it's good to keep up with what else Gina is doing. She's a very smart woman.
So yesterday I saw this post about todo.sh and decided to give it a try. Believe it or not, I had homegrown a whole Drupal GTD system that I hoped to one day use as an install profile. The problem, though, is that keeping it open, adding tasks using a form and all that, it was just too much. The barrier to entering data was too high.
When Mozilla Labs came out with the Ubiquity project, though, I actually wrote an Ubiquity extension to integrate with Drupal's awesome Services module to automatically create nodes. Recently, though, it seems support for Ubiquity is waning. My Drupal install was no longer a "trusted system." One of the tenets of GTD is that you must trust the system. I realized that for my system to work, I needed to make sure I pulled up that web site every morning when I got up. I didn't always do that. Slowly, I lost trust in the system. I was at a turning point where I was trying to find what I should do next. Switch to pen and paper? Something else. Gina's article came along at precisely the right time.
The How-To
Yesterday I spent a couple hours getting my new system (using todo.sh) set up. The documentation is a little weak, and I had to cobble together some things from GitHub, where the project is hosted.
To get started, first download the todo.sh package. This comes with a todo.sh (of course), but also a todo.cfg. You need to edit some of the parameters in the todo.cfg file to meet your needs.
What I found was that by combining the power of Dropbox, I would still have the near-ubiquitous access to my list that I had with a web version (since I have a Droid and an Android version is planned). Worst case scenario, the backend IS just a text file, and with the new Dropbox Android app I can view it already anyway. So, point being, you might think about putting your todo.txt and archive in your Dropbox. Incidentally, do NOT put the .tmp file in the Dropbox or you'll be pretty overwhelmed with notifications about that file coming and going.
Some extensions
One of the reasons we love Drupal so much is that it's modular. Add more little building blocks till you get what you want. The todo.sh is also modular. You can write additional and even override existing functionality with your own code (in any CLI language you're comfortable with... do I hear PHP?). There's a lot of Python around in this land, too.
The extensions I used were one command extension, and one filter extension. I use this to implement the GTD "Tickler" concept (and this handles it better than my Drupal install ever did). The documentation of where and how to put this is somewhere in the back-messages of the mailing list, so let me save you some time. Make a .todo folder in your home folder. Inside that, make two folders - one called "actions" and one called "filters."
Grab the schedule wrapper from GitHub, and paste it into a single file (I called mine "date") in the "actions" folder. Make it executable with 'chmod +x date' so that it can be run like the script it is.
Then, grab the futureTasks filter and copy that into a new file (I called it futureTasks) in the "filters" folder. There's some debate as to whether or not this needs to be executable. I made mine executable (using chmod +x).
In your todo.cfg, you now need to set this filter to execute as a "final filter" (this is more or less implemented as a hook - that is, give the user an opportunity to act on something at a certain time -- see, there's a reason I love this!). Go to the bottom of your todo.cfg and uncomment the export line of the TODOTXT_FINAL_FILTER. Mine looks like:
export TODOTXT_FINAL_FILTER='$HOME/.todo/filters/futureTasks'
So now what you've got is the ability to add a task with a date. (Incidentally, if you don't want to use some of the magic of date, you don't need the schedule wrapper - but I like it because it will let me do some stuff like use "+2 days" as my date and it will be converted automatically). In addition, you're filtering any tasks that have dates on them to not show up until at least their date. Just like a tickler!
Getting it front of you
Without the ability to readily access the todo's, I would find it difficult to care (this is what was happening with the GTD web site.. I wouldn't visit it). I'm running Ubuntu, so I used Conky to do this. There's a Mac app that Gina uses called GeekTool to accomplish the same thing.
If you look at the github link ("to do this" above), you'll see at the very bottom that there's a link to some .conkyrc files. You need to download the scripts/ folder and put it in your home directory, and also download one of the conky rc files and save it as .conkyrc in your home directory. Then, run conky!
To make conky look good in Ubuntu, I wanted it to not be "offset" with a shadow from the background (the file you download already makes it transparent, which is good). Compiz will decorate windows with shadows, so you need to turn this off for Conky. Download CCSM (CompizConfig Settings Manager) and go into the "effects" section and then the "Window Decoration" settings. In there, the "shadow" line is set to "any," but you need to change it to "any & !(name=Conky)" to get it to leave the shadows off the conky window.
The only other modifications I made to .conkyrc were to change the "alignment" to put it in the top right, and to change the refresh (the very last lines) from 10 seconds to 3 seconds, so my desktop would be updated a little snappier.
Then, I just set conky to start on startup. Voila! An in-your-face, easy-to-manage, ubiquitous GTD system. Let's see how it flies now...
UPDATE: When Gina puts her
UPDATE: When Gina puts her mind to it... watch out!
http://smarterware.org/5984/introducing-todo-txt-touch-an-experimental-a...
I am having trouble getting
I am having trouble getting the filter to work on my mac (10.6.4)
I've edited todo.cfg to include:
export TODOTXT_FINAL_FILTER='$HOME/.todo/filters/futureTasks'
and I have made futureTasks executeable and put it in that location. Any ideas? Even a good way to debug where it is failing?
Post new comment