↓ Skip to Content Start of content

One Year with Beeminder

I first started using Beeminder back in April of 2012, and since then it's become an important part of my toolset. I still fall off the road more often than I'd like, but overall it's made a very positive impact.

Getting the most out of Beeminder

Over time I've noticed certain patterns emerging in the Beeminder goals I've tried:

  • Start small, get big – My biggest successes have come when I've started small and worked my way up. My biggest failures have come from trying to do much too soon. That just leads to falling off the road, getting frustrated and losing money.
  • Avoid time-based goals – I try to avoid things like "write for X minutes a day". When work gets busy I tend to enter full-on panic mode to get things done, and sometimes I'll end up spending my time on "filler" tasks in order to meet my goal. I still have a few time based goals, but I find them much harder to keep. Maybe that just means I need to manage my time better.
  • Automate where possible – If you can't automate, try and pick a measurement that doesn't take much effort such as "did you exercise today?" rather than "How many calories did you burn?" The idea here is to reduce as much resistance as possible.
  • Make a pledge – I can say with absolute certainty that having money on the line works wonders.

Isn't Beeminder just a crutch for people with no self-discipline?

Sort of. But in a good way.

I've found it difficult to accept that I have very little discipline in some areas of my life. Some things require constant effort, Beeminder acts as a nice kick up the bum for when I start slipping back into bad habits.

So far it's worked out pretty well.

Pomodoro Guide Updated

The Pomodoro technique has gained a lot of attention in recent years. It's incredibly simple, requires virtually nothing to get started, and it fits in well with just about any organisational system.

As its popularity has increased, so have the number of Pomodoro apps available - which is where the Pomodoro Apps Guide comes in. I've tried to cover the main categories (online, desktop and mobile) as well as give a little rundown about the app.

The full guide can be viewed here: Pomodoro Apps - it's still very much a work in progress, so I'll be adding new apps as I go.

A new start

It's been over seven years since I wrote my first post on this blog. In those seven years I've averaged a whopping post every two months. I don't think anybody could accuse me of writing too much.

When I first started I quickly fell into the trap that every post had to be useful. It sounds logical, but what it actually means is I've ended up with a folder full of drafts and not much else.

Lately I've been reading through my old writings. Over the years I've kept journals, written blog posts and kept various activity streams. Going back to them was enlightening (to say the least), and it made me a little sad that I hadn't written more.

The funny thing is that I actively try to avoid writing about myself on this site. Funnier still is that I deliberatly bought a domain with my name in it to force me to write about myself.

Starting again. Kind of.

Last year I converted the main site to Jekyll. Previously it was just a bunch of custom PHP files which meant adding new content to the site was a bit of a pain. After the conversion everything on the front end is kept in plaintext (org-mode formatted) and then built using Jekyll.

One side effect of the conversion was I felt much more comfortable editing and adding content. I've decided to see if this effect will work on other areas, so of today the blog is now built using the same process.

There's still a few other things I want to get working, but I didn't want to get stuck in the whole perfection-procrastination loop. I don't really know where I'm going with all this, but I think I'm starting to appreciate that the process is as important as the result.

WordPress + Beeminder = Happy Blogger

I've been using Beeminder for a couple of months now, and I've grown rather fond of its stick based approach to goal achievement.

However, one of the biggest problems I have with the service is the data entry side. Although it's pretty easy to add new data, frequently entering new data points can add a little friction to the whole process.

Thankfully the folks at Beeminder released an API a few weeks, so I've been playing around with ways of integrating it with my work flow. One thing I've wanted to do for a long time is blog more frequently, so a WordPress plugin to notify Beeminder when I post seemed like a good idea.

So here it is.

Beeminder Ping

Beeminder Ping is a really simple plugin for WordPress that notifies Beeminder whenever a post is published. Amazing features include:

  • Notify a Beeminder goal with a single value when a post is published. Good for "post 5 times a week" style goals.
  • Notify a Beeminder with the word count of a newly published post. Perfect for "write 1,000 words a week" style goals.
  • Only notify Beeminder for newly published posts, not edited posts or ones that have been moved from published -> draft -> published.

You can download the latest release from the Beeminder Ping page, either as a tar.gz file or a zip. Once installed, you can enable the different notification types and set which goals should be pinged.


As Carl Sagan would say, if you want to write Beeminder Ping, you must first create the universe. Luckily the universe is already here, but I needed a way to interface with the API using PHP, so I wrote beeminder-api. It's still a work-in-progress, but you can download the source from GitHub and play around with it. Please let me know if anything is broken, missing, or just plain sucks.

Experiments with "The Quantified Self"

Ever since I read about "The Printable CEO", I've experimented with keeping track of some personal metrics. Whilst the PCEO allowed me to keep a rough score of how much work I was doing, I always felt that with a little tweaking it could answer much more detailed questions.

Specifically, I wanted to be able to answer questions like:

  • What am I really spending my time doing?
  • Where am I wasting the most time?
  • What parts can I remove or automate to make me more efficient?

Once I started thinking about what I'd like to know, my brain started throwing out way more questions:

  • Am I more effective in the morning, afternoon or night?
  • Does spending longer on the computer help me get more done?
  • How often should I take a break? For how long?
  • What websites waste my time the most? More importantly, does spending my time on these sites make me feel happy or miserable?
  • How much does exercise do I do? What has the most effect on my weight? What about on my mood?
  • What habits should I create to make me happier?

That's a lot of questions, but in essence what I really wanted to know was:

What can I do to be happier?

Perhaps that question is a little too big to be answered by a bunch of numbers and charts,

I tried to take an approach that took work and play into account, rather than just trying to wring another few minutes out of my day in the name of "productivity".

Answering questions

Most of my work is based on the computer, so I naturally went for a technical solution to all of this. To answer most questions, I needed to track the following:

  • What I'm doing on the computer
  • My todo items (scheduled + completed)
  • Exercise + diet
  • My mood

Tracking computer usage

I've used RescueTime in the past to track time spent on the computer. Although the Linux client doesn't get much love these days, it works well enough once it's setup. RescueTime automatically collects statistics silently in the background, so it's a pretty frictionless way of keeping tabs on things.

The RescueTime API provides plenty of ways to access information. The free version doesn't give access to document titles, so you can't track which websites you spend time on, but there's still enough information to build a good profile of where your time is spent.

If you use Google Chrome as your browser you can access the history database which is stored using SQLite. You still need to categorize sites into positive/negative productivity, but it's a start. Chrome History in R is a good place to start if you're interested in taking that route. I don't currently use it to build any stats, but I may integrate it at some point.

Tracking TODO items

Of all the to-do software I've used over the years, I've found Emacs + Org Mode suites my workflow the best. The learning curve is pretty steep, and it's certainly an acquired taste, but it's extremely powerful and configurable. It's probably the closest thing I've found to pen + paper, but with all the benefits of being digital (searchable, queryable etc).

Emacs itself is incredibly flexible, and Org Mode can generate summaries of time worked, along with a diary of work for each day. It can be extended with a little Lisp knowledge, although I use Perl for extracting detailed information as it has a few libraries for querying org files (and my Lisp knowledge is pretty poor).

Tracking exercise + diet

This one was a little trickier. There's no shortage of exercise tracking software, and wearable trackers are becoming even more prevalent. When I first started a regular fitness programme I used Traineo to track things. It's pretty nice to use, but there's no API which meant I couldn't access the data.

In the end I opted for the hacker approach and rolled my own solution. It didn't need to do anything particularly complex, just track exercise done, the times and calories burned. Org mode supports adding properties to any headline, so it can be used as an ad-hoc database.

With a little bit of tweaking it possible to just hit a few keystrokes and automatically insert your exercise.

Tracking my diet was the done in the same way. With a f keystrokes I can enter any data I need.

A key point was NOT to make things too complicated, but to give enough data so things can be charted.

Tracking mood

As with the exercise planning, Emacs was the winner here. The biggest problem with tracking mood is it can be quite difficult to quantify. It's also relative to how I've recently felt - much like temperature. 70f feels cold in summer but warm in winter.

To begin with I tracked mood as a simple 1 - 10 scale, with 1 being miserable and 10 being happy, but after a few days it became clear this wasn't going to be as useful as I thought.

There's a lot more to be said about this, but for now I use two measurements: positive/negative mood and relaxed/stressed.

Tools Used

I tried to keep things based around my current workflow. I use emacs org-mode for most of my project management, so most of my manually tracked data is done with org-mode.

Turning all the data into something human readable is a bit of a Rube Goldberg experience. I use a Perl script to extract info from my org files so they can be stored in an Sqlite database. A PHP script then generates the various HTML files for monthly & yearly reports. It's not as elegant as I'd like, but it only takes ~60 seconds to generate all the reports and deploy them, so for now it's good enough.

For more information on the build process, check out "how it's made".

Publishing my Stats

You can view all my statistics from January 2012 onwards in the "bits" section.