I get asked from time-to-time about what system I use for my to-do list. I use a plain-text, command-line system developed by Gina Trapani called todo.txt. In concept the system is very simple. There is a text file containing all of my todo items, one item per line. There is another text file containing all of the things I’ve done, one item per line. There are commands that I can run to add, complete, and otherwise manipulate my to-do list. Over the years I’ve tried most of the apps and services out there, but I like todo.txt for 4 reasons:
- It is surprisingly simple. It’s just text files.
- You can do complex things with text files.
- Text files are compatible with just about everything.
- I can integrate the system with just about anything.
I thought I’d give a walk through of how I use todo.txt to manage my to-do list in order to illustrate some of these points. I’m not going to go into the details on installing the system, as there are already clear instructions for doing this.
What goes on my to-do list
I put 2 kinds of things on my to-do list:
- Anything that I need to do that I don’t want to have to remember.
- Anything I’ve completed and want to track after the fact.
The second thing may not be obvious, but often times I’ll add something to my to-do list right after I’ve done it, and then immediately mark it as done, so that I have a record of it that I can look up later.
Todo.txt allows you to mark up your list in certain useful ways. A + sign in front of a term represents a project. We are remodeling our kitchen so things related to that on my to-do list have a +KitchenRemodel as part of the to-do item. For example:
You can also include a “context” for the to-do item. This concept is derived (I believe) from Dave Allen’s GTD methodology where to-do lists are broken down into their proper contexts (@home, @work, @phone, etc.). In the example above, you can see I use contexts like @home and @errands. In fact, I only have a handful of contexts that I use with my to-do items: @home, @work, @errands, @freelance, @blog, and @mit. I’ll explain @mit shortly.
Finally, Todo.txt lets you set a priority for a to-do item. These are completely arbitrary, but are lettered, like (A), (B), (C), etc. I only use A, B, and C, and I use them as follows:
A = Today. This is something that I want to get done today.
B = This week. Something that I want to get done this week.
C = Someday. Something that I want to get done eventually. Mostly it’s on the list so that I don’t forget about it.
When using Todo.txt on the command line, it will sort and color-code your list by priority. So if I look at all of the items I want to get done this week, this is what I see:
Notice that they are sorted and color-coded by priority. The number at the very beginning of each line is the “task number” and the date is the date on which the item was added to my list. Todo.txt adds both of those automatically.
Adding items to my to-do list
I always have a console window open on the computer that I’m working on, so adding an item to my to-do list is very easy. Suppose I wanted to add an item to write a post on todo.txt. This is what I’d type at my command prompt:
t add "Write post on using Todo.txt @blog"
That item would be given a task number and date and added to my to-do list:
That’s all there is to it. I could have given it a priority or project as well simply by typing something like this instead:
t add "(A) Write post on using Todo.txt for +GP @blog"
If I decided I wanted to add or change the priority later, I could do that easily as well with something like:
t pri 60 B
which tells Todo.txt to change the priority of task #60 to B.
Todo.txt has iPhone and Android apps as well. I prefer the command line but sometimes the iPhone app can be handy if I am away from the computer. Here’s what my to-do list looks like on the iPhone app:
I store my todo.txt files in Dropbox and so they are accessible from any device to which I sync Dropbox, including my iPhone. That means I’m always working from a current version of my list, no matter where I am.
Checking items off the list
The best part of having a to-do list is checking the items off the list. With Todo.txt it’s easy. Just enter a command followed by a list of one or more items I want to check off the list, like this:
t do 15, 17, 20
Those three tasks will be moved from the todo.txt file to the done.txt file. The date on which they were completed will automatically be added to the item as well.
Filtering my list
Having everything in a text file makes it easy to filter. Todo.txt comes with some commands that make it easy to filter. I typically use only a handful of these.
Filtering by context
If I want to look at just those tasks related to errands, I can run a command like this:
t ls @errands
and what I’ll see is this:
I can also filter by project or priority as well.
Filtering by priority
I tend to use this method a lot. In fact, I’ve created some command aliases to make this easy for me. The alias allows me to type one simple command and get the results I want. I frequently use the following aliases to view my to-do list:
- mit: Most important tasks today.
- today: all tasks that need to be done today.
- thisweek: all tasks that need to be done this week.
- someday: all tasks that need to be done someday.
So, if I type “mit” at the command line, I get a list of the tasks that I’ve marked as the most important for the day. I mark these by using the @mit context. And because each task can have more than one context, I can filter them in multiple ways. For instance, a @mit task can also show up on my @work list.
If I type “today” I get all of the tasks I’ve marked as needing to get done today.
My daily review
I’ve written about how I do a daily review in Evernote each evening. I usually do this after I finish my writing for the day. Part of that review also includes looking at my to-do list, clearing out things that I’ve completed, adding new items that need to get done, and adjusting the priority and context of existing items so that they fall into their proper filter. In other words, in the evening, I’ll look at tasks and decide which ones are the most important to get done tomorrow. For these, I’ll add the @mit context to the items. For items that are not critical, but that still need to get done tomorrow, I’ll give them a priority of (A), etc.
This allows me to wake up in the morning, run a quick “mit” command at the computer and see exactly what I need to focus on first thing in the morning. (I try to get my “MITs” out of the way by 10 am.)
I have a script that looks through my meeting minute in Evernote each day and pulls action items into my to-do list. This was easy to setup because my to-do list is just text files. It saves a bunch of time and repetitiveness, however, because I’m not having to remember to add those action items to my to-do list, nor am I having to transfer them manually.
I have another set of scripts that runs locally on my iMac and keeps track of how many tasks are added and completed each day, as well as over all totals. This provides some insight into how fragmented my days get, as well as giving me a quick glimpse of when I am getting busier or the load is lightening up some.
What about reminders?
I prefer my reminders in context. If I get an email message and need a reminder about it, I use Boomerang to boomerang the message in 2 days if I haven’t gotten a reply. If I have a document that I need to take action on on a specific date in the future, I scan it into Evernote and set a reminder on the note so that I get the reminder in context. The things that go in my to-do list are not the kind of things for which I need additional reminders. I am looking at my list constantly throughout the day. That is reminder enough.
Not for everyone
Not everyone is a fan of command line, or text files, so this system is not for everyone. That said, compared to apps like Remember the Milk, Asana, Trello, Toodledo, and several others I’ve tried, Todo.txt is, for me, far faster and more efficient and makes for much easier integration into other systems in my life.
That said, I’m happy to answer any questions you have about my to-do list system in the comments.