Pomo-do-it: The Pomodoro Method and Emacs

Table of Contents

1 What is the Pomodoro Method?


1.1 The Idea

The Pomodoro Method is a productivity tool that’s been around for a long while. There is plenty about its history and practice available on-line, so I’ll only go into the essentials here.

Pomodoro helps you focus. The idea is that you work on one thing, and one thing only, for a period of time called a “Pomodoro.” Then you take a break and completely relax. At the end of several Pomodoros, you take a longer break.

1.2 Pomodoro Cycles

The “standard” (such as there is one) is to work three cycles of 25 minutes on, 5 minutes off, followed by a fourth cycle of 25 minutes on and 30 minutes off. Of course, many variations are possible. Sometimes I like to work three cycles rather than four. Some research suggests that cycles of 52 minutes on, 17 minutes off, are “optimal.”

With practice and experience, you’ll figure out what works best for you. For some people 25 minutes is much too short; they don’t like to be interrupted when they’re in the “flow.” For some activities, like intense physical training, 25 minutes may be too long.

You may and probably will find that your needs are not constant. That’s the purpose of pomodoit, as we’ll see soon enough.

2 Implementations in Emacs

There are several Pomodoro implementations for Emacs. I’ve tried a couple, and there certainly are more (tomatinho, pomodor, etc.), but for the present purposes I’ll just mention the two that I’ve actually used.

2.1 Pomodoro.el

Pomodoro.el was started around 2011 and was last updated in mid-2015. It forms the basis for pomodoit. It’s really a nice, simple implementation. Cycles are fixed in length although not in number. There is a fixed short break after each cycle except the last, which has a long break. You can set the work time and break times, and number of cycles, to anything you wish. There are optional sound effects for the start of a work period and the start of a break period.

2.2 Org-pomodoro

Org-pomodoro isn’t a lot different from pomodoro.el as far as setup; there are fixed work intervals, fixed short breaks, a long break, and a count of cycles. There are also optional sounds, and org-pomodoro adds an optional ticking sound during work periods (a clock ticks every second; you might love it or hate it). The key thing is that it’s tied to org-mode, so work cycles are tied to an org-mode activity, and automatic clock-in and clock-out take place.

This is an ideal choice if you need to track your work.

3 Why Pomodoit?

3.1 Prior Experience

I used pomodoro.el for a while and really liked it. (I didn’t use org-pomodoro because I didn’t want to tie my work to a specific org-mode activity, and I didn’t care about clocking in and out.) But my work habits required variation in cycles, and there wasn’t enough flexibility in the existing tools.

3.2 The Requirement

I wanted to be able to have work and rest cycles that weren’t so rigid. For example, I wanted to work a pattern of 30/5, 30/5, 25/7, 20/60. This allows me to do more with less rest while I’m fresh, and taper off toward the end of a roughly two hour work session, then follow with a long break for lunch. I couldn’t do that with existing tools. I even wanted to at times extend this to an after-lunch pattern of 30/5, 25/5, 25/10, 25/60, where the last break of 60 is really “quitting time.”

But this was beyond anything I could do with current software.

4 Doing It

4.1 An Example

It turned out to be simple, at least in concept. Work times and break times are kept in a list of arbitrary length (except there must be the same number of work and break times). The schedule above would look like this:

(setq pomodoit-work-array  '(30 30 25 20 30 25 25 25))
(setq pomodoit-break-array '( 5  5  7 60  5  5 10 60))

As you can see, implementing nearly any sort of schedule is possible.

4.2 Things I Changed

I really did I lot of hacking on pomodoro.el, and any errors are solely my responsibility.

I don’t like customization groups for the most part, so I took that out. I know this will really annoy some elisp coders, who feel that’s bad practice. My apologies, but this is how I sometimes work.

I also changed the modeline logic so that there were no persistent modeline alterations.

I removed prompting; work and break periods start automatically.

I added an optional tick, which can be different for work and rest periods. I use a clock tick for work periods (sometimes) and an ocean wave during rest periods.

5 Getting It

Pomodoit can always be found in its latest version here:

(it may not be there yet)

http://www.bobnewell.net/filez/pomodoit.zip .

It’s a zip file because I include (freely redistributable) sound files. You are of course welcome and encouraged to substitute your own.

The program use is fully documented in the comments to the code, which you should read over before use, as there are a number of things you’ll need and want to configure.

Feedback goes to pomodoit@bobnewell.net. Of course the standard disclaimers apply. There are no promises of support, no warrantees, and no liability of any kind whatsoever accepted no matter what bizarre legal theory some lawyer may choose to invoke. Use at your own risk.

Author: Bob Newell

Email: bobnewell@bobnewell.net

Created: 2019-08-23 Fri 07:17