Beeminder has been part of my productivity arsenal for over eight years now. Even though that's a really long time to use a tool, it's still something that I struggle to explain. When I tell people that it's a service I pay money to when I don't get things done, the reaction is usually "why on Earth would you want to do that?!" I suppose that's fair.

The Beeminder team has written plenty of articles about the term "Akrasia" and how their software works to combat it. I treat it like corrective lenses; I don't exactly like wearing them, but they help me live my life. I'm not going to stop just because some people think they're weird.

Even though it's been a long time since I wrote it, my advice from "One year with Beeminder" still holds true. I try to automate as many goals as possible, and with few exceptions I don't use "time worked" for my goals.

One change I have made is to try and tie goals to an external data source.

For example, in 2014 I set myself the goal of releasing a game every month. Once I started derailing I resorted to entering dummy data instead of taking the losses. Because the data was limited to what I entered into Beeminder, I could get away with fudging the numbers without anyone knowing.

For new goals I will try to integrate things like repository commits, external API's, or habits that I track via org-mode.

My most successful goals so far:

Run a full marathon

I track all of my runs using RunKeeper, and then link that to a goal to track my miles run. Looking at the graph, it gets steeper around July 2019 when I started my half training. December 2019 has an even sharper increase, followed by a nice jump in March when I ran the full marathon.

There are a few jumps in the red line from when I set my goal to derail unless I ran that day. This was a handy tool for when I had miles built up and was contemplating ditching a training run.

Increase my earnings
My freelance earnings flat-lined towards the end of 2019, so I set up a goal to track my billed hours. It's a little weird, but it's kept me conscious of what I'm working on.
(Almost) write a book

When I started work on "Writing PHP with Emacs" I had a goal to track the number of words written. This was great for getting initial ideas out of my head, but it became less useful over time once I began editing things. I dropped this goal after two months.

After the initial release I stopped writing, which isn't the smartest way to get things done. Since then I've set up two goals: one to track when I publish new versions, and one to track when I make commits to the book's repository. Both of these together ensure that I'm writing and releasing things.

Exercise three times a week
I have an org-mode document that I use to track my workouts, and when a workout is completed it sends a datapoint to Beeminder. I considered tracking individual exercises (such as "do X pushups per week"), but this one has worked really well so far, and I think that tracking exercises could cause me to over train instead of derailing.
Do my GTD weekly review
In the past I struggled to stay on top of my weekly reviews. Since adding this goal I haven't missed a single one and it has made a big difference into how effective my GTD system is.

I've had plenty of derailments - Beeminder's term for failing to meet a deadline - but the value from staying on track far outweighs anything that I've lost.

Since I started I've also become more comfortable with creating short-term goals. Not everything has to be a life-changing habit, and these temporary goals often build into larger ones.

Beeminder is weird, but sometimes the risk of losing $5 is all it takes to get me across the finish line.