In 2009 I first described here on LessWrong a tool that Bethany Soule and I made to force ourselves to do things that otherwise fell victim to akrasia ("How a pathological procrastinator can lose weight"). We got an outpouring of encouragement and enthusiasm from the LessWrong community, which helped inspire us to quit our day jobs and turn this into a real startup: Beeminder (the me-binder!).
We've added everyone who got on the waitlist with invite code LESSWRONG and we're getting close to public launch so I wanted to invite any other LessWrong folks to get a beta account first: http://beeminder.com/secretsignup (no wait this time!)
(UPDATE: Beeminder is open to the public.)
It's definitely not for everyone since a big part of it is commitment contracts. But if you like the concept of stickK.com (forcing yourself to reach a goal via a monetary commitment contract) then we think you'll adore Beeminder.
StickK is just about the contracts -- Beeminder links it to your data. That has some big advantages:
1. You don't have to know what you're committing to when you commit, which sounds completely (oxy)moronic but what we mean is that you're committing to keeping your datapoints on a "yellow brick road" which you have control over as you go. You commit to something general like "work out more" or "lose weight" and then decide as you go what that means based on your data.
2. You have the flexibility to change your contract in light of new information (like, 40 hours of actual focused work per week is damn hard!). That also sounds like it defeats the point of a commitment contract, but the key is that you can only make changes starting a week in the future. (Details at blog.beeminder.com/dial which describes the interface of the "road dial" for adjusting the steepness of your yellow brick road.) The point is that akrasia (dynamic inconsistency, hyperbolic discounting) means over-weighting immediate consequences, so to beat akrasia you only need to bind yourself for whatever the horizon on "immediate" is. Based on a study of grocery-buying habits -- when buying groceries online for delivery tomorrow people buy a lot more ice cream and a lot fewer vegetables than when they're ordering for delivery next week -- and raw guesswork (so far), we're taking that Akrasia Horizon to be one week.
So Beeminder as an anti-akrasia tool means committing to keeping all your datapoints on a yellow brick road that you specify and can change the steepness of at any time, with a one-week delay.
You may be wondering how anyone could ever fail to stay on a yellow brick road that's this flexible. Here's how: if you're highly akratic. Such a person may well find it a daily struggle to stay on the road. Yeah, you can always choose to wuss out and flatten the road, but only starting in a week, which you don't want to do. You want to wuss out Right Now, dammit! I mean, just for now, while you eat this pie, and then you'll behave again. No such luck though.
The daily struggle to stay on the road does not induce you to touch that road dial. You always want to make it easier "just for today" -- which the road dial doesn't allow -- and you always think you'll get your act together by next week.
We'd love to hear people's thoughts on this! Perhaps surprisingly, it took a ridiculous number of iterations to get to this point. For the longest time we struggled with different ways to deal with the fact that it's so often hard to decide what to commit to. We tried many variations of having multiple yellow brick roads for a single goal, so that you could specify an ambitious goal as well as a bare minimum. It was always too messy, or would backfire altogether and be paralyzing. We think the road dial with an akrasia horizon is a big leap forward. And it seems so obvious in retrospect!
I just had another idea (loosely inspired on the Glicko rating system): suppose that a person on Day 0 has an unknown “true weight” W_0, but because of measurement errors and unknown amount of body water etc. the scale reads w_0, which is normally distributed with mean W_0 and variance σ^2; suppose also that if we knew W_0 we would assign W_1 (the “true weight” on Day 1) a probability distribution with mean W_0 and variance c^2(t_1 − t_0). Now, if our probability distribution for W_n is a Gaussian with mean u_n and variance σ_n^2, on knowing the measured weight w_n we would update it to mean (u_n/σ_n^2 + w_n/σ^2)/(1/σ_n^2 + 1/σ^2) and variance 1//(1/σ_n^2 + 1/σ^2). Hence:
(Multiplying
sigma_sq
andc_sq
by the same constant doesn't affect the values ofsmoothweight
, as far as I can tell.) In the limit of data on a large number of consecutive days,sigman_sq
approaches 0.1 and the algorithm becomes equivalent to the other ones. I've tried this with my own gapped data and the trend line changes faster than with the Hacker's Diet algorithm but not as fast as with my old algorithm. But I now prefer this because it has a rationale resembling more a derivation from first principles than someone pulling stuff out of their ass.(Is there a way of getting real subscripts and superscripts?)
Also, σ^2 and c^2 could in principle be found empirically: in this model, the difference of measured weights t days apart is normally distributed with variance (2σ^2 + tc^2). I found a file with a couple years' worth of almost daily weight data of myself from a few years ago and computed the average of (w_n − w_(n − t))^2 for various values of t, and for not-too-large values that's actually approximately linear in t (except it is slightly lower at multiples of 7 days, which I take to be an effect of week cycles -- I tend to eat more on weekends). But the r... (read more)