Pomodoro workflow

A while back I posted regarding how much I liked working under deadlines with short-term goals. It started off as a very basic “this is cool” post, but after a bit of thought I realised that a number of the things that made me like working at the Synchrotron, also applied to timeboxing techniques like pomodoro.

I’ve been writing papers recently, which means that most of my work is extremely monotonous - most of the day I’m sitting at a computer typing, reading or researching. It’s easy to get antsy and distracted, and pomodoro is a good way of dividing up the day into manageable chunks.

I’ve tried a few pomodoro/timeboxing applications for OS X, but my current favourite is this one, imaginatively called “Pomorodo”. It’s got the right blend of features and lack of shiny bells and whistles for me, including:

  • It’s free, although I wouldn’t mind spending a few dollars to keep development going.
  • It’s headless: when running, it doesn’t take up precious dock space - it just sits in your menu bar waiting to run.
  • It’s (relatively) distraction-free: I can’t turn off the countdown in the menu bar1, but I can turn off all the other bells and whistles as I see fit.
  • It starts fast and easy: keyboard shortcuts to start and stop pomodoro sessions allow me to keep hands on the keyboard, and also mean I don’t have to bring up a window or select an option to start my next session.
  • It’s scriptable, which is going to be handy in about a paragraph.

Recording progress

Pomodoro.app allows you to write what you plan on doing at the start of your session, but I tend to find if I have a list of tasks that it’s better for me to record what I did at the end of the pomodoro session. Since you can set scripts to run at any important point in a pomodoro run, I have the following Applescript set up whenever I complete a full pomodoro:

set now to current date
set nowTime to (hours of now) & ":" & (minutes of now)
set pomodoroStart to (current date) - 25 * minutes
set pStartTime to (hours of pomodoroStart) & ":" & (minutes of pomodoroStart)
set achieved to text returned of (display dialog "What did you achieve in this Pomodoro?" default answer "")
set entry_text to "# Pomodoro session " & (pStartTime) & "-" & (nowTime) & "
" & achieved & "
#pomodoro #log"
do shell script "~/bin/dayone create --autotag " & quoted form of entry_text

This script uses my own rb-dayone gem to create a DayOne entry for the pomodoro - you could just as easily put it on a calendar (which I was doing for a while - iCal has a pretty robust Applescript interface) or into your favourite text file. Regardless, at the end of the week you’ll be able to look back and see what you’ve done.

I’d be interested to add a perceived degree of productivity to this script - along the lines of “rate yourself out of 5 for how focussed you were”. I think you’d very quickly find when you found yourself to be most productive during the day. These days I feel like I really hit my stride around 3pm or 4pm - it would be interesting to see if this were borne out by the facts.

  1. I read an interesting article some time ago on the effect of checking the time on productivity - effectively it’s a minor context-switch, which means some of your mental RAM goes into checking that before switching back to the task at hand. Having a countdown in the menu bar is a little like that sometimes.