Todo.txt Practices
In 2016, I wrote about switching back to Todo.txt. At the time, I outlined the rough system I was using. In the two year’s since, I’ve refined my Todo list process greatly and wished to share.
The Todo.txt format has a ton of flexibility allowing the user to go wild. Very few articles out there seem to illustrate how individuals use the format for themselves. This leaves a lot of stumbling about to create good practice and habits.
Basic Practices
- All tasks must have a project and context and only one project and context
- The main todo list represents tasks to be done this quarter. A seperate tickler list is used for tasks in future quarters.
- Always keep the main todo list under 120 tasks.
- To reduce clutter, use “project stubs” as placeholders for upcoming projects. Maintain the project sub-tasks in their own todo lists and import them only once the “stub” reaches priority C.
- Liberally use the
recur
plugin for daily and weekly interval tasks - Generally avoid using meta-data tags
- Doubly do not use due dates. Manage appointments and meeting times in a dedicated calendar app. Add upcoming appointments to the main task list during the fortnight review and daily reviews.
Priorities
Use only priorities A-D, and with each having a particular meaning.
Priority A | Tasks I am working on right now, never above three tasks |
Priority B | Tasks I will do today |
Priority C | Tasks I will do this fortnight |
Priority D | Blocked tasks to be priortized A-C when they become unblocked |
Everything else is deprioritized, and typically hidden from view.
Projects
Projects both represent ongoing epics whose tasks are completed sequently as well as generic “grouping” of similar tasks. A few common projects are listed below.
+chores | By taking the unison of the chores project and different context I can create sublists for housework (ls +chores @house ), yardwork (ls +chores @yard ) or errands (ls +chores @springerville ). |
+budgeting | Dealing with anything related to personal finance |
+admin | Work related administrative tasks such as filing paperwork, planning meetings, or reviewing tasks |
+literature, +games, +films | Representing each form of media |
+hike | Details trails and distances hiked |
+menu | Identified recipes for this fortnight’s meals |
+social | Social outings |
+wellbeing | General medical and meditative tasks |
+ops | System related tasks |
Contexts
Contexts are used to identify where a tasks will probably be done.
@office | Task completed in the home or mobile office, and generally denotes a need for networked computing power, e.g. desktop, laptop, or phone. |
@house | Task completed at home indoors |
@yard | Task completed at home in the outdoors |
@out | Task completed in the outdoors, the wilderness within a half day’s drive |
@alpine | Task is an errand, completed in the local Alpine community |
@springerville, @reserve, @showLow, @phx, @abq | Task is an errand, completed in one of the larger neighboring communities |
Fortnight Review
Every two weeks, I complete a full review of the main and tickler todo lists.
Clean Up
Evaluate all forms of inboxes: kanban, e-mail, phone, calendar. Add upcoming appointments, tasks to the main todo list.
Clean up dead or dangling tasks that are no longer needed. Then evaluate the list to make sure the existing tasks conform to my practices. Aggressively cull tasks, create “project stubs” and move clutter into seperate files.
Prioritize
Create a variety of views of the main todo list. Evaluate each unprioritized task and determine if I must or should work on that task in the next two weeks and if so bump prioritization to C.
De-Prioritize
Evaluate all tasks prioritized A-D. Determine if I must complete each task, or if it can wait. Favor trimming the overall list of prioritized tasks to shorter to avoid accidentally overburderning a week.
Nightly Review
Every night at 21:00, a cronjob runs the command faketime -f '+1d' todo recur
which appends to the main todo list any daily or weekly recurring tasks.
At this time, I clean out my inboxes noting appointments and meetings for the following day, and then evaluate tasks A-C, determing if they should be culled, deprioritized, bumped to another day (C), or bumped to be worked on tomorrow (B).
Tmux Set Up
I aleays have a “todo” session running in Tmux which when using panes and the watch add on, I can create a window that shows a variety of always up-to-date views of the state of my main todo list.
Commonly, I keep a “today” window for referencing my day’s work and a “planning” window for when I’m planning the next day’s agenda.
Today
The today window displays my todo lists of tasks to be done today. From left to right we have:
Upcoming Tasks (t watch lsp c-d ) |
Displays upcoming tasks in the fortnight and blocked tasks |
Today’s Tasks (t watch lsp a-b ) |
Displays my currently active tasks and tasks planned for today |
Today’s House Tasks (t watch lsp a-b @house ) |
Tasks to be done around the house |
Today’s Office Tasks (t watch lsp a-b @office ) |
Tasks to be done around the office |
Today’s Yard Tasks (t watch lsp a-b @yard ) |
Tasks to be done in the yard |
Working Pane | Pane not running watch for manipulating the todo list |
Planning
The planning window is used during the nightly review of the todo list. It
mirrors the Today list in terms of the Upcoming, Today, and Working panes.
However, the context-specific panes are replaced by project-specific panes
displaying either the breakdown of specific projects (t watch ls +blog
) or
for larger projects spread across multiple contexts, the unison of a project and
context (t watch ls +chores @project
).