Tracking Pomodoros In Emacs With Org-Mode

I’ve been using the Pomodoro Technique for over a year now. The Pomodoro Technique is a way to divide your day into a several sets of time and (try) to focus on one task at a time without distractions. It has worked great for me with a graph paper notebook.

This morning though, I was wondering if there was a way to do the planning digitally in Emacs. I didn’t want a timer, just a simple way to allocate my pomodoros (chunks of time). Asking on Twitter, I had two people suggest using org-mode. So I dug into the org-mode manual and hacked something simple together using it’s tables.

Example day planned in orgmode

Example day planned in orgmode

The screenshot is a perfect example of a single day:

  • using org-mode’s folding I can hide all of the other days except for today (2011-05-05 is hidden). I also have a section for Help where I’m keeping my notes
  • the columns in the table are
    • category – G(eneral), M(arketing), C(lient), E(mail), O(SS).
    • name of the todo item from my other todo list
    • the number of pomodoros I’ve allocated (empty [ ]), spent ([X]), and ones I didn’t need ([-])
  • completed todo items are crossed out the as I go

So I’ve finished everything I wanted to do today except for “Write about pomodoro in org mode” and I still have one pomodoro left for it. I also set aside 2 pomodoros for the Redmine Tip today but only need to use one.

To make it easy to add a new table and allocate pomodoros, I recorded a few simple macros:

;; Emacs macro to add a pomodoro item
(fset 'pomodoro
   "[ ]")
 
;; Emacs macro to add a pomodoro table
;;
;; | G | Organization | [ ] |
;; |   |              |     |
(fset 'pomodoro-table
   [?| ?  ?G ?  ?| ?  ?O ?r ?g ?a ?n ?i ?z ?a ?t ?i ?o ?n ?  ?| ?  ?\[ ?  ?\] ?  ?| tab])

This lets me add a block of pomodoros with something like C-u 5 M-x pomodoro. I also set up a macro to add the entire table, M-x pomodoro-table which should save me time each morning.

Playing with org-mode and it’s tables was really useful. I really like how you can tab through a table and let it auto-format the column width. Finding this out will save me a bunch of time editing some of the wiki pages in ChiliProject.

About Eric Davis

I founded Little Stream Software where I help new entrepreneurs build a successful software business. I also created an ebook, Redmine Tips, where I show you how to become more productive using Redmine. I am also the author of Refactoring Redmine, where I go about refactoring Rails using Redmine as an example. Follow me on Twitter and Google Plus.

, ,

7 Responses to Tracking Pomodoros In Emacs With Org-Mode

  1. jxy May 12, 2011 at 1:06 pm #

    Another option would be to use column view mode with properties. That way, it would be more integrated with the default TODO entries.

  2. Seth Mason May 12, 2011 at 10:33 pm #

    This is very cool. One question though, how are you keeping track of interruptions?

    • edavis10 May 12, 2011 at 10:56 pm #

      Don’t get interrupted…. ;)

      I was never able to track them that good (might start). I work from home so my main interruption is from checking Twitter or chat. I was thinking about adding a quote next to the task when interrupted (e.g. webinar | [X][X] ‘ ‘ )

  3. Ashish June 12, 2011 at 10:18 am #

    Nice. Thanks :). This should work well also with VIM and VIM Outliner.

    • edavis10 June 12, 2011 at 9:54 pm #

      As long as vim has a table mode it should. It is possible to do this manually too if someone really wanted to.

  4. Ashish June 18, 2011 at 11:41 pm #

    By the way, do you have any scheme for tracking internal and external interruptions as per the original Pomodoro Book by Francesco Cirillo. For example, he uses ‘ to mark internal interruptions and – to mark external interruptions?

    • edavis10 June 20, 2011 at 11:21 pm #

      I was thinking about using quotes and backquotes to track interruptions (‘ or `). Check the comment I made to Seth Mason below too.

Leave a Reply