How I use Emacs Org Mode for my weekly reviews

Summary: I use a custom Emacs Lisp function to extract my upcoming tasks and logged tasks from my Org agenda, and I combine that with data from QuantifiedAwesome.com using a JSON interface.

I use Emacs Org Mode to keep track of my tasks because of its flexibility. It’s difficult to imagine doing the kinds of things I do with a different task management system. For example, I’ve written some code that extracts data from my Org Mode task list and my QuantifiedAwesome.com time log to give me the basis of a weekly review. Here’s what my workflow is like.

Throughout the week, I add tasks to Org Mode to represent things that I plan to do. I also create tasks for things I’ve done that I want to remember, as I find that I forget things even within a week. I track my time through QuantifiedAwesome.com, a website I built myself for tracking things that I’m curious about.

On Saturday, I use M-x sacha/org-prepare-weekly-review, which:

  • runs org-agenda for the upcoming week and extracts all my non-routine tasks
  • runs org-agenda in log mode and extracts all finished tasks from the previous week
  • gets the time summary from Quantified Awesome’s JSON interface

Here’s what the raw output looks like:

image

I like including a list of blog posts so that people can click on them if they missed something during the week. Besides, my blog posts often help me remember what I did that week. I customized my WordPress theme to give me an org-friendly list if I add ?org=1 to the date URL. For example, here’s the list for this month: sachachua.com/blog/2013/06/?org=1 . I copy and paste the relevant part of the list (or lists, for weeks near the beginning or end of a month) into the *Blog posts section*. I could probably automate this, but I haven’t bothered.

Then I organize the past and future tasks by topic. Topics are useful because I can see which areas I’ve been focusing on and which ones I’ve neglected. I do this organization manually, although I could probably figure out how to use tags to jumpstart the process. (setq org-cycle-include-plain-lists 'integrate) means that I can use TAB to hide or show parts of the list. I use M-<down> and M-<right> for most of the tasks, and I also cut and paste lines as needed. Because my code sorts tasks alphabetically, I’m starting to name tasks with the context at the beginning to make them easier to organize.

If I remember other accomplishments, I add them to this list. If I think of other things I want to do, I add them to the list and I create tasks for them. (I should probably write a function that does that…)

The categories and time totals are part of the weekly review template inserted by sacha/org-prepare-weekly-review. I use my smartphone or laptop to track time whenever I switch activities, occasionally backdating or editing records if I happen to be away or distracted. If I’m at my computer, I sometimes estimate and track time at the task level using Org Mode’s clocking feature. Since I’m not consistent with task-based time-tracking, I use that mainly for investigating how much time it takes me to do specific things, and I don’t automatically include that in my reports.

When I’m done, I use org2blog/wp-post-subtree to publish the draft to my blog. I preview it in WordPress to make sure everything looks all right, and then publish it.

It’s wonderful being able to tweak your task manager to fit the way you work. Yay Emacs, Org Mode, WordPress, and making your own tools!

  • Charles Cave

    I agree that it is wonderful being able to make your own tools for task and project management. I have been using org-mode for several years and still use it at work and home. However, the biggest weakness was for adding and reviewing tasks while I am out and about. Often I would think of something that needs to be done, while I am travelling on the train or walking somewhere.

    I looked for a new system that I can access from my PC as well as iPhone – and choose the toodledo.com web site, their iPhone app which is terrific and a $15 annual subscription for additional functionality. Toodledo has strong import/export capabilities, and can be backed up to one XML file. I have already written a python script to extract data from this XML file, mainly for additional reporting and statistics.

    Now I must clarify my thinking about how this all hangs together by documenting my process!

    Charles

    • Gabriel Saldana

      have you tried the org mobile app? I’ve used it from time to time when I stick to using org to organize myself and for my simple use it works fine. I wrote on my blog how to set it up and work with it since the documentation is not very clear on how to do it, hope it helps http://gabs.us/b/HH

      • Charles Cave

        Thanks for the information but I have an iPhone – not Android. Are you aware of any solutions for iPhone? At the moment I am keeping my org-mode and ToodleDo (web based + iPhone) for separate planning activities.

        • http://sachachua.com sachac

          http://mobileorg.ncogni.to/ MobileOrg for iOS is actually a bit further ahead than the one for Android, but I haven’t given it a try recently. =) Might help!

  • James Y

    Where is the key package ‘quantified ?

  • furansui

    Thank you for posting this.
    I should learn to program with emacs lisp as well…

  • Pingback: How I use Emacs Org Mode for my weekly reviews » sacha chua :: living an awesome life « Jeff and Cheri’s Ramblings

  • Pat Thomasson

    Installed Org on my ubuntu machine. Loving learning about it. Thanks for the this blog entry.

  • Pingback: What do I want to do right now? Understanding my algorithm for discretionary time » sacha chua :: living an awesome life

  • Vedat Hallac

    I lifted .. ahem.. got inspired by some of your functions today. There is one little thing that may or may not need special mention: my agenda week start was set to Monday, but I also used Saturday as my review date. This caused TODO/DONE items to be picked from two weeks ago instead of last week. Setting org-agenda-start-on-weekday to 6 fixed the “issue”.