Triangular beeminding for tracking alcohol consumption


This is an experimental goal I’m running that whomever was behind the twitter account today suggested I should post about here, so here I am. :smile:

I drink a little too much. Not like “I have a problem” too much, but more like “I could probably stand to have maybe 2 or 3 fewer drinks a week” too much.

I’ve previously beeminded units of alcohol consumption and concluded that actually measured as a number of units per week I’m fine. Certainly well within the recommended health guidelines - most nights I don’t actually have anything at all, so this brings the averages down to acceptable levels.

The problem is that on nights that I do drink I probably have a few drinks more than I should. I make tasty cocktails, and after a tasty cocktail or two making another one sounds like a much better idea.

And by the third drink of the evening I will usually discover the next day that it wasn’t a good idea.

So I decided to try to design a goal with an incentive structure that matched up to the actual problem and kept the number of evenings I had too many drinks down while not penalising evenings where I’ve just had the one too harshly. What I’ve come up with seems like a nice general structure, and it’s not too hard to track.

What I’m tracking is a total drink-score per week. The first drink on a day scores one, the second scores two (for a total of 3), the third scores 3 (for a total of 6), etc. These totals are called triangular numbers, hence the name triangular beeminding.

(Note: These are drinks, not units. It’s easier to track and I try to keep my beeminder goals in units that I can easily eyeball rather than having to estimate. Especially if I have to estimate them after a few drinks. Most of my drinks are approximately two units).

I’m then capped at a total score of 15 per week. This equates to a maximum of 11 drinks in a week (3 days with 1 drink and 4 with 2), which at my averages is just over the recommended maximum of 21 units, but that’s because 15 is my slightly generous starting rate for the goal. It also means that if I have more than two drinks on any night I’m forced under the recommended maximum to compensate - if I have 3 drinks on 1 night I only have 9 points to spend for the rest of the week, which is another 7 drinks and a point left over, so 20 and a bit units (note that one point left over ~ an extra drink over the course of the next two weeks).

Example permitted maximum drinking patterns:

  1. 4 days with 2 drinks and 3 days with 1 (0 points left over)
  2. 1 day with 3 drinks, 1 day with 2 drinks, 5 with 1 (1 point left over)
  3. 2 days with 3 drinks, 3 days with 1 drink, 2 days alcohol free (0 points left over)
  4. 1 day with 5 drinks (!) and no drinking the rest of the week (0 points left over)

Note that 3 days with 3 drinks is not permitted even with the remaining rest of the week free: That would be 18 points which takes me over the threshold.

So far this is experimental. I only started this today (In which I racked up 3 points celebrating the release of a friend’s game), so it may turn out to be far too complicated in practice. We’ll see how well this actually works, and I’ll report back when I know. However I’m quite pleased with the incentive structure it sets up, and it seems relatively simple to implement, so I’m reasonably hopeful.

Feedback - Community Isn't Sticky
meanwhile on the beeminder forum: triangular beeminding, alcohol, and books

Oooh this is a goodie.

Previously I have been doing this via two separate goals, one for drinks per week (do less) and one for days_per_week_with_zero_drinks (do more) and needless to say it is annoying and confusing.

How do you do your data entry? Do you enter the triangle numbers yourself into Beeminder?

EDIT: The more I think about this the more I like it, because it actually encourages you to drink less per sitting. My days_per_week_with_zero_drinks goal actually encourages binge drinking provided there’s enough credits on the other goal (and they derail independently so the math gets hard).


Data entry is just manual: I enter each drink individually, so for the first of the day I enter 1, the second 2, etc. The triangle numbers just come out of Beeminder adding them up for me.


This is really clever! It reminds me of schemes we’ve talked about for minding backlogs where the metric is the sum of the squares of the ages (in days) of the tasks in your backlog. (Braden Shepherdson’s idea.)

My first worry with things like this is violating the QS First Principle. But that’s mitigated by the fact that you can convert triangular beeminding to the actual cumulative total after the fact. You just have to invert the formula for the nth triangular number.

So if you got x points on some day, that means you had (sqrt(8*x+1)-1)/2 drinks that day.


I’m also coming to this after having done the straightforward QS version and concluding that the numbers weren’t actually that interesting for me - they’re well within acceptable bounds, and I don’t care much beyond that knowledge. But yeah if you want to do that the maths is easy - you can also just count data points because of how it’s entered


Yeah I burned out on my booze goals because of this too. Especially when it is a Do Less goal, the manual entry is even more burdensome.

Not sure how you could automate this, besides this thing.


Beeminder should allow you to enter a formula for the score, so you can enter the number of drinks as data and Beeminder does the math for you. #featurerequest


A thing I have found previously is that do less goals work very well when I’m basically always riding up against the limit and don’t really work for me at all otherwise. Basically if I can think of it in terms of “I want to do this thing. Do I currently have permission to do that?” then I can just incorporate adding the data point as a prerequisite to doing the thing and everything works smoothly. If I know I’m safe and have loads of buffer then I can just sortof forget about it (even with the pessimistic presumptions) and tell myself I’ll patch it up later even when I really won’t.

For example, when I was trying to use beeminder to curb my coffee consumption a while ago it was very effective, because oh god I want to drink all the coffee and beeminder was there acting as a gatekeeper. Once I relaxed the goal and raised it to a point significantly above my intake, it kinda fell apart, and that has also been my experience with a few other things I’ve tried.

I actually think the triangular beehives will help with this. The nice thing about the rising cost of each drink is that it’s very easy to press up against the limit without that meaning you’re drinking alcohol right up to the max safe number of units - it doesn’t take very many drinks in an evening to blow your entire weekly points budget even when you can easily afford one or two.


Oh! Now that you mention it, @insti, it’s trivial for us to make a new aggday function, “triangulate” or whatever, that would be, I guess, sum*(sum+1)/2 and, voila, now @drmaciver can just enter 1’s like always and the right point values will magically get graphed. (And better yet, if this turns out to be a terrible idea, he can just set aggday back to sum. Maybe we’ll also have a road editor by then to retroactively make the YBR make sense for the updated aggregation function…)

Dang, now I’m so excited about how easy this is I’m going to deploy it right now!

And done!

PS: Oops, after doing this I see @drmaciver wants to ruin my fun. I even converted his trianglealcohol graph already to make sure it works. (It does!) I’ll reply further in a new post…


I don’t mean to be a fun ruiner, but I confess I’m not actually sure I’ll use the new aggday option. One of the things I like about the manual entry is that it makes the cost of each drink explicit: A third drink costs as much as 3 first drinks, which forces me to actually think about whether I really want it that much. I feel like I’d lose some of the psychological benefit of that if I had beeminder automatically calculating it behind the scenes.


Ha, check out the PS I just added on my previous post. So, yeah, too late! :grinning:

Ok, but is there a way to have the best of both worlds? Can you mention the new triangle number in the comments to emphasize to yourself how many points are being added?

Anyway, your trianglealcohol graph is converted now, so give it a try and if you really don’t like it I’ll convert it back for you.

For anyone else wanting to do this, setting aggday=triangle requires a custom goal, which is a premium perk.

(And we’ll call this a UVI so thanks once again, David, even if you don’t actually want to use this!)


Yeah, I noticed that had happened. :slight_smile: No problem. As you say, I’ll give it a go and see what I think.


Now a major motion blog post!


I’m definitely going to use this. There is a hobby of mine, for example, that has a diminishing return the longer I spend on it, but is worthwhile earlier, in each session, than it’s worth in marathon sessions. I can track minute-points in a do-less graph to promote spreading that time spent out over longer periods, or at least to curtail the not-as-worthily marathon sessions. This might be true, too, for a goal like meditation, where (for me) a long session is worth more than three very short sessions. I could see using this for a do-more goal for meditation minutes-points.


Hmm. Using this for do more goals is a good idea. There are a bunch of exercise goals where I tend to coast along at doing the bare minimum per day, so never actually improve my capabilities much.

e.g. I have a pushups goal where I have to do just over 25 pushups / day. If I do 26 pushups / day that gives me 2457 triangle points. I might try setting a triangular aggregated additional pushups goal set at 3000 / week to see what happens.


That’s a pretty inspiring to me, my pushups goal is currently at 15 per week!


Well why not try setting a triangle pushups goal of 50 and see if that helps you bring it up? :smile:

(50 triangle pushups = doing your pushups in 3 days with 5 each is just not enough. That would be 45. 7, 6 and 2 would get you to 52. 3 days with 6 pushups would comfortable exceed it at 63 points)


Thanks all, this is an interesting development :slight_smile:

Personally I have a similar problem with averages but I’m interested in beeminding troughs more than peaks. For example, I have goals to do the following every day: a certain number of press-ups, a certain number of minutes reviewing my TODO list, and a certain number of minutes of music practice. Of course the weekly averages matter, but I also want to make sure I don’t skip a day and then get away with it by doing more the next day.

In other words, I want to beemind my consistency. Can this be done?


How much do the weekly averages matter? The easiest thing to do would be to just change your goal structure to enter datapoints as either 1 or 0 depending on whether you’ve done enough that day. If you do also care about the real totals then with a bit of API jiggering you could probably set that up to automatically populate a second goal which does that from the first.


The weekly averages definitely matter - I really want to track amount done rather than just binary “done” or “not done” per day. Yes probably possible through API but I have no time to do that and two goals is a bit of an ugly hack anyway - I think it should be supported natively.