Joe's
Digital Garden

Todo.txt

Todo.txt is the most amazing todo list manager of all time: text files.

The todo.txt todo list follow a very simple syntax. Each line is a new item. Once completed the item is moved to a done.txt (my done file is approaching 26,000 items). All of it managed by a simple, extendable shell script. Which means all of your terminal tooling is available to you to sort, grep, and filter the list however you want. You can prioritize items by adding (A) in front, you can group tasks contextually via @context and you can group tasks by project with +project. e.g.

(A) transcribe travelogue +writing @lab
send headphones for repair +shopping @lab
(B) organize crawlspace +konmari @yard
truck trailer pin +shopping @out
homemade periogi +menu @kitchen
(C) el topo & the holy mountain +film @study
(C) oot +game @study

This snippet has four contexts (lab, yard, out, kitchen, and study) and six projects (writing, shopping, konmari, menu, film, and game).

Best Practices

Use the principles of PARAM to organize your todo list

[[PARAM]], which stands for Project, Area, Resource, and Meta. All of my todo items are organized around Projects. If they are an atomic task and not part of a larger project then their project is the area or resource that they best fit into.

For example, my current projects contain +fallgarden and +fallops. These are explicit projects that I am working on. However, I also have +finance and +sal (short for salubrity) which are my areas of finance and salubrity respectfully and contain many atomic tasks not associated with any larger project. Last, I have +film and +game, which would fall under my +media area but are explicitly called out because I have resource notes where I log the films and games that I play in the year.

All tasks should have a project and context (and only one)

It is very easy for tasks to fall through the cracks if they do not have a project and context. It is also easy to get carried away and assign a list of projects and contexts to a task. I find that one, and only one, project and context should be assigned to each task.

Avoid the temptation to add meta-data to tasks

Just as it's tempting to load a task with multiple projects and contexts, it's tempting to start adding all kinds of additional fields to record meta-data to tasks. Resist this temptation! The only meta-data field I find useful is the due tag to surface priority tasks during my nightly review.

Keep the list small

At one point, my list grew to over 300 items covering a huge range of ongoing and backlogged projects. It became untenable to evaluate the entire list during my reviews. My current list has 71 items, almost all are prioritized to be done within the next two weeks. I try to keep the list under 100.

Keep calendar items off the list

In practice, I find it best to leave calendar items on my calendar until they are one [[pythefnos]] away. Projects or events that are more than a quarter away, are best catalogued in my internal digital garden until my quarterly review.

Use project stub tasks and next action items

It is best to keep projects or events that are more than a quarter away detailed in my internal garden. Projects that are coming up this quarter, but not this [[pythefnos]], are given a stub in todo.txt corresponding to the project note in my garden (e.g. fall operations +fallops @lab).

Once I begin working on a project, I drop the stub from todo.txt and begin feeding next action items from my project note into todo.txt. It can be easy to overwhelm the todo list by dumping the entire task list from the project note into the list. I find it best to just add the tasks that I will either accomplish this [[pythefnos]] or just the next action item itself.

A Context is where a thing is done

We should not confuse Context with [[PARAM]]'s area. A context is best understood as the space containing the tools where we would complete a task. However, a space can be multiple contexts: the home office is both my @office where work is done and the @lab where [[home lab]] projects are usually worked on. I have a @phone context for phone calls, but with modern cell phones, this could be almost anywhere.

For example the following are my current contexts:

ContextDescription
@phoneTasks completed on my phone
@officeTasks for work in my home office
@labTasks for when my home office transforms into my home lab
@kitchenTasks explicitly in the kitchen (dishes, cooking, meals)
@studyTasks for the living room, although if the weather is nice, could be moved outdoors
@bathTasks completed in the bathroom/laundry space
@gardenTasks completed in the "garden center" space of the cabin
@gymTasks completed in the home gym space of the cabin
@houseCatch all for tasks around the cabin that don't fit into any other context
@yardTasks completed in the yard
@outTasks completed beyond the yard but reachable by foot
@townTasks completed in town, usually requiring driving
@socal, @showlow, @phx, @abq, etc.Tasks that will require a special effort to travel to these contexts

The last item is useful for contexts that might occur only a few times a year. If I go to Showlow once a quarter, I might have a backlog of errands to run when I do!

Likewise, I find that even when traveling I will recreate these contexts wherever I go. On a workaction, I have both my work and personal equipment for the @office and @lab contexts. I might stake out a space on vacation to do my reading (@study). The kitchen is always the @kitchen, regardless of whose kitchen it happens to be.

Make priorities meaningful

I currently only use priorities A - E, with a specific meaning assigned to each:

PriorityDescription
Priority AThree most important tasks today (Limit 3)
Priority BTasks for today (Limit 7)
Priority CTasks for this pythefnos (~90 tasks)
Priority DBlocked tasks. Re-prioritize when unblocked
Priority EDaily recurring tasks

Use Tmux & watch to create a terminal kanban board

See the section under Tmux Set Up in my article on Todo.txt Best Practices for details on how to create a terminal kanban board to display your todo list in a series of columns resembling a TUI interface.

External References

  1. Trapani, Gina. Todo.txt: Future-proof task tracking in a file your control <http://todotxt.org>, Todo.txt. Retrieved 20V2.
  2. Hallenbeck, Joseph. Todo.txt Best Practices. <https://joehallenbeck.com/todo-txt-practices/>. Retrieved 24VE

Linked References