Declaring PIM Bankruptcy again...

After getting a camera-ready copy of a paper finished recently, I found myself in a slump. It was the usual slump I get when finishing big tasks. The trouble is: What to do in these slumps? A former colleague, former second supervisor, current man in a pub, mentioned once that you should have a list of TODOs on hand for the down times. I think this is great advice and can be summed up as:

Never procrastinate mindlessly; procrastinate mindfully!

I recently learned1 that there is a philosophy behind this called structured procrastination. The idea being that even if you are going to put off big tasks by doing something else, make sure that something else is meaningful.

The trouble is that my TODO list has bit rotted rather badly, making the Augean stables look positively Marie Kondo’d. I’ve noticed this especially as I migrated to Dashboard for Emacs and the package gives a tidy summary of one’s tasks, if you use Orgmode. And yes this will all be about Orgmode, I am an Emacs user afterall!

As for some background, my working habits tend to be do big things, do little thing, do another big thing, then do more little things. I have tried to be better at productivity (GTD et cetera) and keep track of the things I need doing, but either the techniques never seem to stick, the technology gets in the way, or I end up not doing structured procrastination. The last of which is something another old colleague would know to well2. Thus, I have ended up declaring TODO list bankruptcy, again. If you look at my org directory (more on that soon!) there is now work.old.0.org through to work.old.10.org, and each was when I wanted to have a fresh start in organising my work. One has to bear in mind this git repo is over ten years old…

So after noticing this trend, I have decided to tackle my organisational habits once and for all3.

Orgmode is one of the most useful packages in Emacs for Personal Information Management (PIM), it is incredibly powerful and doesn’t really align itself to a particular organisational philosophy. Orgmode supports journalling, notetaking, calendar organisation, and task management, all in a comprehensive textual format. The great thing about OrgMode here is that one can define capture templates which supports quick insertion of new elements into your orgmode collection of files for PIM. I use the templates to start journal entries (when I journal, that too is bankrupt), to take quick meeting notes, to insert tasks for refiling, to take quick notes, et cetera

Unlike other organisational tools I like (Taskwarrior to be presice4) one can only access Orgmode’s power through Emacs! Harrumph5. Orgmode supports an extensible means to view your personal information, be it your tasks, agenda, journal whatever. One can create custom views and searches, that support optimised viewing. Great for power users like myself, and is dependent on one knowing a little Elisp…

Another aspect that is worth mentioning is that I am tied to the Church of Outlook. I organise my time in Outlook principally because it connects seamlessly to colleagues and students own calendars, and the School sends regular meeting invites for School meetings. For too long I have tried to use Orgmode’s own agenda management functionality to organise my time. Although such functionality is nice, there doesn’t seem to be a good way to interact with Outlook given Microsoft’s creeping walled garden. I think this is something I just have to given up on, unless there happens to be a compliant Emacs package6 that does this…

All of this leaves me with how to use org-mode for journalling, notetaking, and task management. Well just task management really, the other two are sorted, I just need to do them… This is where the heart of this blog post comes into play:

How I am going to use OrgMode for task management!

Orgmode organises tasks using nested bulleted lists. Each item (and sub-item) can be labelled with a TODO state and tag. One can have simple todo lists using check boxes but tag and state labelling are really cool. For example:

* TODO Top Level :WORK:
** TODO Prepare for Project Foobar Meeting :MEETING:PROJECT:
SCHEDULED: <2023-02-23 Thu>
** DONE BarFoo :EMAIL:TEACHING:
Ask if we can migrate from custom paper format to `acmart` because in house one has bitrotted.
* TODO Top Level :PAPER:
DEADLINE: <2023-02-28 Tue>
+ [ ] =s/practise/practice/g= (one advises advice)

Here, everything after the bullets is a TODO state, and between the colons a tag, and within the body of a bullet one can provide scheduling/deadline times, and other notes.

The trouble is that Orgmode is too powerful and its setup makes it very hard to work out not just how you want to be organised in theory, but also how you want to put that theory into practice. Personally, I have centred around a modified GTD approach: I capture tasks, refile them, but don’t necessarily store them as NOW, TOMORROW, NEXT WEEK, and FUTURE. I leverage Orgmodes agenda management to schedule tasks and given them deadlines, and I try to organise contextually by keyword and tags but I have never truly found a good set. After some considered though, and abandoning managing my agenda, I think I have now.

First, my todo keywords. This is just a state-machine and you can have multiple state machines that each can have multiple end states. Orgmode supports two kinds of keyword state machines: Sequences; and Types. The rationale being, IIUC, a sequence progresses linearly, and a type flips from a starting state to an end state.

Given that my work flows will exist in most of my TODO lists, I have configured them in my init.org file7. Should I need more I can either extend the setting, or specify them on a per file basis.

(setq org-todo-keywords
      (quote ((sequence
               "TODO(t)" "NOW(n)" "PAUSED(p)"
               "|"
               "DONE(d)" "CANCELLED(c)")
              (type "TYPO" "ACTION(a)" "CONSIDER(c)"
                    "|"
                    "DONE(d)")))
)

My two workflows are for organising TODO tasks, and paper editing tasks. The latter for when the reviewer gives you things that need changing. For tasks I find it natural to use the states as an indicator of what state the task is in. For paper editing, I categorise by the type of edit, and a marking saying the edit is complete.

The pipe symbol | sets the remainder of the list as indicate terminal states. If the pipe symbol is not given then the last entry is the final state. The parenthesised letters are short codes that supports quick state selection from a popup. Sadly they must ALL be unique. One can also provide a reserved symbol that indicates a description must be provided for the state change.

I am a big believer in ’less is more’ as I try to over complicate things with perfect management8. I do not think I need more workflows, or new states for the majority of things I want to organise using org-mode. If I get back into teaching then that is a different matter.

The next thing to think about are tags. For me it makes sense to thing about tags as providing contextual information. Although I can embed thags in my init.el, these tags are my contexts for my todo lists. I do not need them elsewhere, I think, and present them as file specific contexts. After many years I think a good set of contexts are as follows:

#+TAGS: { ACTIONS : EMAIL(e) TASK(t) MEETING(m) }
#+TAGS: { CONTEXT : RESEARCH(r) TRAVEL(t) EDU(e) SERIVCE(s) ADMIN(a) CPD(c) }
#+TAGS: { PROJECT : BP AP}

All the tags presented are mutually exclusive (indicated by the curly braces) and each line represents a labelled set of tags. Even the tag labels are themselves tags; which makes custom agenda views that little bit easier. Further, tags need not be mutually exclusive (as I have sets of tags) but I think nesting the tags here as a hierarchy makes sense.

To explain my choices, I want to categories my tags as:

  1. What type of action does this task represent?
  2. For what aspect of my job does this task belong to?
  3. Is there a specific research project that it belongs to?

The latter is something, I do not think I will need often but it is nice to have. Now, there is a balance between using Orgmodes ability to make lists to contextualise items and the use of tags. Before this was/is the hardest balance for me to achieve, and I am not sure if I know this answer just yet. Really, this is how to organise (really contextualise) my todo items. Do I group tasks into top level items per action or per context, or per project? or Do I have a single list and tag away?

I just do not know…

This is what the next few weeks of exploration will be.

Hopefully, I won’t be declaring bankruptcy for too much longer…


  1. Thanks to Jacques Carette for pointing this out ↩︎

  2. /me waves at Oz ↩︎

  3. No doubt later this year or in the next few years we will be seeing: work.old.11.org… ↩︎

  4. Really I should look at TaskWarrior again but I am too far gone with liking Orgmode. ↩︎

  5. Which reminds that Emacs is too much of a walled garden, and if only there were easy ways to access orgmode from the command line. ↩︎

  6. Yes I have looked at excorporate and a read-only view using calfw, but I think it best to give up on the dream…We need something like Thunderbird addons TbSync + Exchange Provider but for emacs… ↩︎

  7. Yes you can organise you emacs init.el using orgmode ;-) ↩︎

  8. Oz you were right, if memory serves me right,,, ↩︎