Beeminder Forum

Feature request: store safety buffer

I’ve recently created a script that may help you do something like what you’re describing here. Basically, what I’ve got is a script that will download your beeminder goals and sort and group them by “priority”, where priority is basically how many days left till you derail (0, 1, 2, 3, or more). However, for any individual goal you can define the “ideal” buffer as something other than 4 days, and it will calculate the priorities by evenly dividing the ideal buffer for that goal into three parts. So for example if I have a goal I want to build up some more buffer on, I can set the ideal buffer to 7, and then even if I have 2 days of buffer on that, it will still be sorted as priority 1, thus encouraging me to take care of it as if it’s an orange goal, even though it’s actually blue (but it’s a command-line tool so no actual colors yet).

I made it for myself and have made no effort to either document it or make it easy for other people to use, but if anyone else is interested in taking a look or playing around with it, the code is at


possible (partial) solution - for me, at least part of the extra motivator for eep days is the red colour on the graph. Maybe you could get some of this by letting the user set the amount of time remaining each colour represents on a per-goal basis? That’s also be good for goals where you explicitly want X days safety buffer because you know you might miss weekends etc. This is kinda like amesha’s script, but for me the colours would be really important.


We do have something vaguely similar, namely the sort threshold in Terrifying Advanced Settings, with which you can control how many days of safety buffer cause a goal to jump to the top of your gallery. We plan to ditch that in favor of a more intuitive way to sort and organize goals though. But it’s there in the meantime and we’ll find some reasonable way to transition to whatever the future system is.

1 Like

ANSI color codes can be added to my script very easily. I would probably do it eventually in any case, but if anyone would be interested in using my script if it had colors, let me know and I can do it faster. (But in a week when I’m back from vacation.)

1 Like

To help with your generalising, I also like the skating of edges as it means I’m getting work done. However, as a contractor, I can be derailed very quickly when one of my evenings doesn’t finish until midnight and skating becomes impossible. Beeminder just made about $100 off me because I had a $200 job I got asked to fill between 11pm and 3am.
I need to be able to skate an edge or feel like I’m skating an edge while actually being safe. In reality that might mean that I need to connect my bee minding and calendar together so that the edge becomes more clear to me even if it’s coloured green in

1 Like

I think one key desire here is the ability to do a sprint of good productive work but still be motivated to maintain the road dial rate thereafter.

The way that I like to do this is by watching the yellow guide lines above the road which run parallel to the yellow brick road. I try to never drop below the highest line I’ve reached. If I do go below it, I’ve got some work to do to get on the right side of my new (high score) road. If you use this idea then Beeminder never has to lie to you about safety buffer but you always know whether you’re resting on your laurels and using up your buffer.

Beeminder could make this more natural by making the top guide line that you’ve reached a different colour or pattern. This is the feature that I would most like to see for Beeminder.

If you’ve been awesome in the past and had to use up safety buffer because of other priorities then the waterline of your previous best might be too high to be motivating or meaningful. This is easily addressed by using the point with the largest distance from the YBR in the last fortnight (or any time period).

Heck, let’s go feature crazy here. Let’s make the datapoint GOLD (or black! or pink!) if you check in with your goal today above your current waterline. And tomorrow, you’ll be black again provided you do more than your daily quota. If you’re only green you’ve got more work to do!

This solution addresses the boringness of watching the safe days increase. Everyday it lets you skate the edge of your own awesomeness and make it even more awesome. And I’ve seen it work for my brain.


Okay, so this struck me as interesting. One of my biggest successes with Beeminder has been my blogging goal, m/blog. Without that goal, I consistently almost never blog. With it, I always publish every 10 days, rain or shine.

I love blogging, but since it lacks other external motivators, I’ve found it hard to make myself do it without beeminder on my back.

But what’s interesting is the particular fine print I have:

In order to advance to the next integer, I have to actually publish something. Other increments are just for selectively applying pressure.

So my slope is 0.1/day. Right now, it’s an eep day. And I have a bunch of options:

  • add a 0.1 datapoint right now, thinking approximately “I still have 5 days til I actually need to publish”
  • add a 0.1 datapoint right now, thinking “aww yeah, I did a little bit of work on a draft earlier today”
  • not add a 0.1 datapoint until the last moment, using the redness to remind me that I need to be working on blog posts

Most days, I do the third option, unless I’ve already decided that I’m either definitely not going to work on a blog post that day, or that whatever I’ve done is enough.

This works REALLY WELL for me. And it seems similar to what @chelsea is asking for. It lets me have a bit of immediate control over whether or not I need to blog that day, but ultimately I still have to publish every 10 days (ie ultimately I still keep to my slope). Similarly, buffered safety days would let me flexibly ease some of the tension, while still maintaining the slope that I want.

So I think this idea is brilliant, and I strongly support it.


I see a conscious choice to use a buffer as a valid reaction to the beemergency. Using that buffer to prevent derailing probably shouldn’t be automatic and the buffer shouldn’t be very visible (just enough to know you do have a legitimate option to derailment).

If it’s earned, it’s mine. Like Flextime hours at work. If I’ve earned them by working extra hours at some point in the past, I can use them - pretty much at will. But I can’t use what I haven’t earned.

As a new user, I’m not sure of this, but I think I can build a buffer on my own by staying quite a bit above the YBR. But that’s too obvious. Being ON the YBR is a great incentive in itself. So a true buffer should be hidden.


I got an idea for the supporters of this suggestion. But you will like or dislike it depending on how bad you want this!

If beeminder does not support changing the road in a way to store safety buffers, may be we can change the datapoints to provide this feature instead of changing the road. We have no control on the shape of the road (except after the 1 week akrasia horizon), but we have full control on the data line shape.

So, how about making a program to interface with beeminder’s API and will daily check the safety buffers of the graphs and any graph that has a safety buffer >=n will add a point = -(n-2) then add in a google drive spreadsheet +(n-2) in a ‘bank’ (i.e.,cell) for that goal.

This will be with a drawback though. It will modify the shape of your data line. However, you will still get a point popping up then a point down there, because for a ‘do more’ graph for instance, if you add a point +20 then add -18, you will get a high point due to the +20 and another low point due to the -18. The modification will be in the down movement of the graph due to saving +18 in the google drive sheet, which is necessarily add -18 into the graph.

When the graph is near the deadline and you feel very terrible to do the task, you can see the google drive spreadsheet and if you have any stored data points that you have earned by your previous hard work, you can consciously take from that store and add those taken data points just barely enough to pass that day. If your store is zero, obviously you have to eat that frog and do the task or you will derail.

In our life we would do that for our financial banking and spending. This is a life concept for much more critical tasks like financial surviving and bankruptcy, and no one can say that financial management is not important or not akrasic. Nevertheless it is working for most of us but the less mature who are not allowed to get credit cards.

Obviously, the ideal solution would be to change the road instead of changing the datapoints. But if beeminder will not get this, perhaps if you want this badly, we can develop a server app in heroku or just a simple configurable script for individual use to do something like this.

I could suggest to automatically also add positive datapoints to the beeminder graph taken from the ‘bank’ when I have a near imminent derailing, but I would not recommend that. This should be a very conscious choice, and you would do it just in the very critically needed situation.

What do you think? The non-supporter for storing safety buffer would obviously not support this even more, since it is even less ideal than modifying the road (which Chelsea had suggested in her original request). But for supporters, would you sacrifice changing the shape of the data line a little bit for getting this feature?

I really dislike this idea, but thanks for explaining it. :heart:

Surely it’s easier to just not retroratchet and log ‘distance from road’ in your spreadsheet?


The point is:


Some thoughts on possible features to achieve this. Particularly #2, but I think #1 or some sort of dashboard functionality would help to keep your sanity on meta goals.

Features requested:

  1. Add check boxes to Android screen widgets. Use the same check box logic as the one inside the app. Shows that you have submitted some data to that goal in the current day.

  2. Super check box Or buffer-bump-up-arrow. For when your daily data points for the goal have increased the safety buffer by at least one day.
    2b) Make this indicator accessible on IFTTT or API or whatever
    2c) Super super check box. To visualize when you’ve increased buffer by 2, 3, 4, days etc.

  3. Allow widgets to be stored in folders. For organization purposes.

  4. Implement as some sort of dashboard on the web site.

1, 2 would enable an Android based prototype of some of the “Dashboard” and “folders” feature requests. E.g., use the widgets on a blank home screen to make a little dashboard for users to visualize/arrange goals.

  1. Using the check as an indicator would enhance meta-beeminding allowing for urgent-but-buffered goals. E.g., meta goal of buffer-bumping 3 Priority 1 goals by mid/end day. To help organize my day in making sure that I’ve buffer-bumped all my priority-but-buffered goals in addition to eep goals.

3 makes the above more compact on the home screen. Quick, highly visual access to assessing how close you are to achieving a meta goal.

  1. For people who don’t do all their beeminding on their phone like I do :slight_smile:
1 Like

This isn’t really a reply to your proposal as much as it is my own brainstorm.

I really want to avoid editing the real data. I like the QS aspects to Beeminder too much to muck with that.

What I’ve been imagining for a little while is:

  • Goal pledge is set and capped to $0.
  • If your safety buffer gets too big, a script retroratchets the goal and notes a safety buffer point somewhere.
  • If you derail, the script deducts a safety buffer point. If it can’t, because you have no buffered points, it charges you money via the API.

Hi everyone,

This is not exactly a buffer safety store issue but somewhat related what blacer had asked, so posting here.

I have lately tried to keep most of my goals easy to do. As a result, I am building up some buffer. I auto retro-rachet and reduce the buffer so that I am motivated to do the minimum the next day.
I have been thinking if there is some way to take the buffer and use it as a reward to be consumed, instead of being lost in an auto retro-rachet.
For example, lets say I track the time spent working on a project where I have a goal of going 30 min per day, but often do 3 hours on some days. Instead of consuming the 2.5 hrs in a retro-rachet, I would like to use it to for guilty pleasures that like mindless web surfing or watching TV. If I don’t build any buffer, I do not get to watch TV or web surf. That way TV watching becomes something I have earned instead of something I beat myself on. It also becomes an added motivator - if I am looking forward to watching a match on TV for 2 hrs in the evening, I better work hard during the day and build up a buffer so that I can do that.


  1. Do you think it is a good idea? Any downsides that I am missing?
  2. What is the best way to handle this? I am thinking of a do-less goal with a zero hr limit where the productive buffer hours from the Project Goal are auto-added as negative hours and the TV watching and web surfing are positive hours. Any other ways to do this?
  3. How do I automate the adding of buffer hours from my other goals to this goal. I did notice philip suggesting the use of ifttt to automate something similar, but if someone could spell it out for me it would be great. The requirement is to calculate the buffer created for the day from a goal and automatically add it to my do-less goal as a negative amount.

thanks for reading


Great idea.


I’ve been calling this Beeminder’s no-free-lunch theorem, or the power of bright lines, and I’m working on a blog post about it.

I’m fine with you claiming a Beeminder no-free-lunch theorem, but could you fairly lay out the exact evidence, at least ? and maybe also actually word the theorem. At this stage honestly it looks more like the idea of a conjecture to me :stuck_out_tongue:

Sidetrack : what happened to the blog post ? can you update your post ? (which really looked like a “” trigger)

The reason I don’t like the specific solution of storing safety buffer is that it’s sort of trying to trick yourself (“I’m in the orange but I’m not really in the orange”) which I believe backfires.

To me, storing safety buffer is exactly trying to trick yourself, but you got the specifics all wrong ! It really goes I’m not really in the orange, but please make me think I’m in the orange. (To me) the whole point is the colors. I know I’ll react to red 95% of the time, so please, even though it’s blue, make it look like red (without the 5% chance that I’ll miss that I’d get by retroratcheting). Of course, this is only meant to be used sometimes, when I’m most likely to react to red, but wouldn’t feel like making progress on a green thing.

Other communities call this “artificial deadlines” and have varied opinions about them which may inspire this thread (unnecessary pressure, useful technique, good for the creative types).

I think better is to just cultivate your sense of alarm at seeing an orange or blue graph. Or a graph with less than a 7-day buffer (where it shows the day of the week instead of number of days on the graph image).

Maybe all I’m asking for is a color for a 7-day buffer.


Why not set up a secondary goal to keep at least X days buffer in the primary goal? Then that goal would accurately be in the red.

Also see:


I would love to see some form of user-defined colors.


Did you see:


I think it’s fair to call it a theorem at this point. If you always edge-skate you will absorb any buffer by definition.

1 Like

Why not a secondary goal : because I don’t want to enter data twice. Can it automate itself ?

Yes I saw that blog/catchup exists, I was asking about the in-the-works announced post, not the previously existing one.

Please state clearly what you think is fair to call a theorem. Enunciate it.

Yes if you always fundamental-edge-skate sure, but this is not it. I’m not edge-skating. I’m color-based prioritizing. Colors are what this is all about. Thanks for having gathered all the quotes where many people say they want to make some of the things look more urgent, I much agree with that shared sentiment.

1 Like

As far as I know, you need a script to automate that. But it might be faster to just review your primary goal and enter it manually.

Unfortunately is no longer there.

I’d like to know this too.

Assume you always edge-skate, defined as doing the task only when absolutely necessary to avoid the penalty.
Assume you try to get leniency by modifying Beeminder in some way so that what would otherwise be edge-skating is no longer edge-skating.
This creates a new edge, which you will then skate right up to.
So you get no benefit from the modification.

Agree completely, which is why I want a color-ratchet that still shows the actual amount of time until the deadline.

1 Like