There are a lot of programs and systems out there to manage a GTD-style todo list, but none of them have really worked for me. I’ve tried everything - web-based solutions like Remember the Milk and Todoist (and many, many others), ThinkingRock, OmniFocus, Things, MonkeyGTD, and Todo.txt. Some were very close to what I wanted, but most just required way too much clicking around to let me do what needed to be done; when a todo list starts asking me to import contacts and GPS-tag my todos, things have gone very wrong. I need a computer-based system that does a few simple things:
- Keeps all my todos in plain text files (the kind that often end in .txt and open in Windows Notepad), because plain text is the most portable, future-proof format around;
- Updates my todo list, makes backups, and keeps records of completed tasks without ever requiring me to edit the raw data by hand;
- Runs instantaneously, even on my underpowered EeePC;
- Facilitates my weekly review process; and
- Incorporates itself well into my workflow, which generally revolves around the command line and Firefox.
Todo.txt came the closest to this ideal (Shawkle was pretty good, too), but todo.txt didn’t facilitate my weekly review process well enough. Most frustratingly, it wasn’t able to print a list of my active projects so I knew what to review. In short, managing my todos had turned into a simple problem that demanded a customized solution.
To remedy these problems, I wrote todo.awk, a short program for managing todo lists at the command line. Todo.awk is (surprise!) written in GNU awk, a scripting language that’s usually preinstalled on Linux systems (and can be installed gratis on any computer in ten minutes). [Edit: Properly speaking, it's a Bourne shell script wrapped around little pieces of awk.] It runs instantaneously, even on my underpowered netbook, and supports displaying todos by context or project. It manages lists of deferred projects and supports an easy-to-use tiered priority system. Most importantly, the program is very short and easy to extend.
To install todo.awk, right click and save the file as “todo.awk”. Put todo.awk in your $PATH and make it executable, define $TODOFILE, $TODOBACKUPFILE, and $TODOARCHIVEFILE as environment variables, and you’re ready to go! If that was confusing, leave a comment and I’ll happily guide you through installation in more detail. And if you find any bugs, please leave a comment so I can squash them!




