Task Management using Emacs and Org-mode
During my daily work, I must be on top of several projects. I do the technical groundwork, plan, coordinate, and follow up with people. That is not always easy as the context switching becomes quite exhausting. I’ve become protective of my memory bandwidth. I use it sparingly, mostly in areas where I can bring the most value. Hence, I don’t try to memorize my work agenda. A plain text file does it for me instead.
Task management is hard to get right. One can easily overdo it, causing it to become a chore. One can also underdo it, which then renders it useless.
My task management had to have two essential properties.
- Easy Writing - Maintaining my tasks should not cause me extra effort.
- Easy Reading - I should quickly get the needed information and never miss anything.
After all, the task management has to work for us, not the other way around.
It took me a while to find a process matching the above properties. I tried several tools. Some had many features, but I found them hard to work with. Others were simple but harder to navigate for larger workloads. I needed to set up my workflow using a tool, and it had to be just right. I found it in Emacs and its Org-mode.
Not everything must be a Task
It’s important to keep this in mind before diving into the workflow. Sometimes, we only need to do the thing and move on. I add items to my task list sparingly. Otherwise I’d end up with a cluttered agenda with mostly useless information.
My Org-mode config
I keep everything in a single file
(setq org-agenda-files '("~/org"))
My tasks have three states -
[TODO] -> [PROG] -> [DONE]. I delete the cancelled tasks and archive the DONE ones (more on that later).
(setq org-todo-keywords '((sequence "TODO(t)" "PROG(p)" "DONE(d)")))
|-- Root |-- [Project] :Tag: |-- [Task] ... ...
This structure allows me to expand/collapse and easily navigate through projects. I have a single root and topic-based child nodes. I tag each of the topic nodes nodes so that the tasks below can inherit it. That comes handy when searching/filtering my agenda. My tree rarely gets deeper that three levels. Sometimes, I break down a task into subtasks using bullets. In general, however, I try to keep the structure flat and as simple as possible.
Here is an example:
Just like not everything deserves a to be a Task, not every Task deserves to have a deadline. I set deadlines only when sometihng is time sensitive. I set scheduled dates only for things which take more thay a day or two to complete. Not all tasks have to be DONE either. We have shifting priorities, so it’s OK for a Task to remain in the list for as long as it’s needed.
Navigation and Search
My custom agenda view shows me the weekly distribution by deadline/schedule and a global list of tasks groped by their state.
;; Customized view for the daily workflow. (Command: ", a n") (setq org-agenda-custom-commands '(("n" "My Weekly Agenda" ((agenda "" nil) (todo "PROG" nil) (todo "TODO" nil) (todo "DONE" nil)) nil))) (setq org-todo-keyword-faces '(("PROG" . (:foreground "yellow" :weight bold)))) ;; Hide the deadline prewarning prior to scheduled date. (setq org-agenda-skip-deadline-prewarning-if-scheduled 'pre-scheduled)
Show my custom weekly agenda view
Most of the work I do in thus buffer falls down to:
- Checking my Tasks for the day/week using the
- Checking the tasks for a project by using
- Updating a Task’s state by pressing
- Editing a Task by placing the caret on it and pressing
- Switching to next/previous week by pressing
List all the TOOD entries
Here I filter my tasks by state.
Org-mode has plenty more ways to search and navigate, but the above are the ones I use most of the time.
I archive my completed Tasks by pressing
$ when on a task in the Agenda buffer.
There are still areas of Org-mode and Emacs which I’m yet to explore. This wokrflow, however, has been working well for me. The Agenda view is one of the screens I keep open most of the time, and the Task list is what I usually start my days with. I use Spacemacs, so the ergonomics of this workflow might differ in other distributions.comments powered by Disqus