Skip to content

Latest commit

 

History

History
120 lines (83 loc) · 5.24 KB

2023-08-28-my-org-mode-workflow.md

File metadata and controls

120 lines (83 loc) · 5.24 KB
title Task Management using Emacs and Org-mode
date 2023-08-28 08:23:13 +0300
draft false
summary How I organize my work in plain text.
editLink https://github.com/deniskyashif/blog/blob/master/content/posts/2023-08-28-my-org-mode-workflow.md
tags
emacs
org-mode
productivity

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 ~/org/tasks.org.

(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)")))

Structure

|-- 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 (org-agenda) n

Most of the work I do in thus buffer falls down to:

  • Checking my Tasks for the day/week using the d/w keys.
  • Checking the tasks for a project by using \ and input +{TagName}
  • Updating a Task's state by pressing t.
  • Editing a Task by placing the caret on it and pressing [Tab].
  • Switching to next/previous week by pressing f/b respectively.

List all the TOOD entries (org-agenda) t

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.

Archiving

I archive my completed Tasks by pressing $ when on a task in the Agenda buffer.

Concluison

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.