Time Management for Systems Administrators and todo.txt
I’ve been reading Tom Limoncelli’s Time Management for Systems Administrators once again, and am trying out (once again, for real this time) the time management system described in the book called “the cycle”. I also use todo.txt system as one of my (several) task list tools, and decided to try to make it work with the cycle.
The advantages of the todo.txt system are its simplicity, ease of adding new
items (with an alias it’s simply typing t add Do something
in any terminal
window). The built in tools did need some tweaks to get things working
correctly however.
One very nice feature of the cycle is that you have a different todo list for each day. Do you have something that needs doing Wednesday next week? Add it to that day’s todo list and you don’t have to think about it again until Wednesday comes around, at which point it will be on your todo list ready for you to look at. Items that you don’t get done today, either because you have decided you’re not doing them today or because you run out of time at the end of the day, get bumped to next day’s todo list and are marked as ‘managed’ on today’s todo list. This system makes it very easy to see what you have left to do today, and lets you immediately get items that aren’t going to be done today out of the way and to somewhere where you’ll come across them as a more appropriate time.
Out of the box todo.sh, the todo.txt cli script, is primarily made to work with a single file, namely todo.txt, and another to archive completed tasks so they don’t clutter up the main file. Because of this, I thought I’d have to write another tool to effectively deal with daily todo lists. However, the config file is actually sourced as a shell script, and so it was a simple matter to change to using a todo.txt file based on today’s date:
export TODO_FILE="$TODO_DIR/$(date +%Y-%m-%d).txt"
export DONE_FILE="$TODO_DIR/$(date +%Y-%m-%d)-done.txt"
So far, so good. I run todo.sh and it instantly picks today’s todo list.
$ todo.sh add Throw things at Brian once I get in the office
1 Throw things at Brian once I get in the office
2012-05-25: 1 added.
The book recommends 3 priorities for tasks: A - needs to be done today, B - needs to be done soon, C - everything else. Todo.sh also uses alphabetical priorities, and they’re simple to add/change:
$ todo.sh pri 1 A
1 (A) Throw things at Brian once I get in the office
TODO: 1 prioritized (A)
Todo.sh even has built in support for looking at other dated files:
$ todo.sh listfile 2013-05-24.txt # you could use 'todo.sh lf' here
1 Revoke VPN keys for bob
2 Purchase new servers
The missing piece was the ability to bump tasks, both individually and with a single command to bump any incomplete tasks left at the end of the day. This functionality was implemented as an addon to todo.sh, which is available on github.
Commands that are in the addon:
- bump - bump a single task to the next day. Use this for when you decide you won’t be doing that task today.
- bumpall - bump all the remaining tasks for today on to tomorrow’s todo list. Do this at the end of the day with any tasks you didn’t get to complete. Be sure to review any high priority tasks and deal with them before bumping to the next day.
- verify - Search all files for unmanaged tasks (those that haven’t been completed and/or bumped to a later day)
- bringforward - bring all the tasks you forgot to manage on to today’s todo list.
I also have the following in my setup, which are included as separate addon commands in the git repository:
- A quick command to commit changes and push to git. This is literally a wrapper around git add, git commit, and git push with a default commit message.
- A modified ‘addto’ command to make it easier to add an item to a future todo list. The todo.txt cli by default won’t create a new todo.txt file for you if it doesn’t already exist (I’m guessing it assumes you made a typo), so I modified the command to create a blank todo file first if it matches a certain pattern.
- Something to manage a life goals (or someday/maybe for anyone who is familiar with GTD terminology) list. This simply runs the todo.txt cli with a file called goals.txt.
One of the biggest downsides of this system is that it’s tied to the computer. Tom mentions in the book that your system should always be with you to be able to write something down as someone tells it to you in the hallway. While I agree that you should have something with you at all times, it doesn’t have to be the entire todo list system. Borrowing from GTD, I just keep a small notebook or stack of index cards to capture new items on, and review it regularly, adding items to the computerized list as I get back to my desk. The cycle already has a step where you collect new items from phone calls, emails and so on. And having a small notebook or stack of index cards and a pen handy ensures that I don’t lose track of anything… as long as I write it down.
I’ve been using this system for a few weeks now, and it’s working pretty well for me so far. If you’re interested, download the todo.txt cli scripts, and the tmsa todo.txt addon and give it a try!