"All Green" meta-beeminding goal

I think if I weaken that a tad more, I can make it work. Something like “on every day on which I increase the safety buffer (even by less than a day, but more than the daily rate) on every goal that is not green and not incorrectly colored (see What do the colors actually mean?), score 1/2 point”. Though the rate clearly needs to be less than 1/day, also.

1 Like

Update: now that I’ve upgraded to Bee Plus and have the Weekends Off feature, I’ve archived my All Green goal.

It was an excellent goal for the ~6 weeks I had it. After the first three weeks, I managed to get four all-green days in a row, which gave me almost a month of buffer. That felt really gratifying.

Now that I have Bee Plus, however, the underlying benefit of All Green is provided by the Weekends Off feature. I also find that, nice as it is not to have eep days, the red-orange-blue color coding actually works pretty well for me in prioritizing what I want to do each day.

2 Likes

I actually prefer the all green goal to weekends off for most things, and only use weekends off for things where I either can’t or really don’t want to work on them on the weekends (e.g. my gym is pleasantly empty on weekdays and very busy on weekends, so I have that as a weekends off goal).

The rest is mostly stuff where I don’t really mind it sliding back and forth across the week and actually appreciate the cycle of being forced to occasionally push out some buffer through manual effort.

I mostly just keep things green for a day or two though., I don’t think I’ve done more than three days in a row.

3 Likes

Oh, one update on this goal: I changed the fine print from “all goals must be green” to “all goals must have at least three days of safety buffer” (I kept the name). I don’t find the cases where yellow/blue/green differ but have more than 3 days at all intuitive or particularly useful, so it was easier to just reinterpret the goal.

4 Likes

It’s just a bug according to @dreev. See What do the colors actually mean? - #8 by dreev.

1 Like

Fair enough, in that case I definitely feel OK doing this!

1 Like

Behold! Is it not a thing of beauty?

I have so many goals that getting them all green is a Really Big Deal for me. As in, historically I probably only manage it once every 6 months or so. I’m contemplating setting up an “all green” meta-goal, but still on the fence about whether it would be worth it. (And if you’re wondering, the reason I am all green now is that I have been getting up super early this week to have uninterrupted time to work on some Important Things, but then procrastinating by working on beeminder goals instead.)

5 Likes

Oh delicious irony! But why aren’t you beeminding the Important Things??

)[quote=“dreev, post:29, topic:2497”]
But why aren’t you beeminding the Important Things??
[/quote]

Oh, I am, but I (felt as though I) had to do more of it this week than the average amount that I beemind per week. (In fact Important Thing = grading student papers.) Grading is kind of awkward for beeminding actually, since the amount I have to do varies quite a bit from week to week. (But it’s still way better than not beeminding it at all.)

2 Likes

I’ve just run into an interesting perverse incentive (which I haven’t succumbed to yet, though I’m not ruling out that I may).

Under certain circumstances this goal can provide you with an incentive to derail on other goals: If I have a goal that may derail today that I do not think it is feasible to push out into the future and I can see that my all green goal becomes due tomorrow, if the all green goal has more money riding on it than the goal that would derail today, I might want to let today’s goal derail so that I can get the safety buffer that comes with it (even on a no mercy goal this may be true - no mercy is still relatively merciful).

All told, I think I’ve decided that this goal is annoying me more than it’s helping me, so I’ve just pressed archive. I liked a lot of what it did, but I think it’s not quite the right structure.

A thing I’ve been trying to do recently when advance plannign for this goal which seems generally helpful is to minimize the number of beeminder goals that become due on the same day (regardless of when that day is). I may look into whether it’s worth replacing the allgreen goal with a modified one that encourages me to do that.

3 Likes

Your 9Green idea has been SO useful for me.

2 Likes

Yay! So glad to hear it!

Just seeing this thanks to today’s forum activity, and I’m excited to give it a try. To ease in, I’m going to start with an “All blue” goal, to be archived and replaced with an “all green” when achieved.

This is worth a bump: It’s not only a win for newbies, it also promotes Beeminder revenue indirectly (by promoting usage).

4 Likes

Heh… that said, I suppose a tradeoff to consider is that it might also breed resentment in some newbies who feel burned by it.

1 Like

Update: I achieved my “All blue” goal after just two full days of activity, which is evidence that the positive / fun motivation of chasing green works for me better than the negative motivation of avoiding eeps and fines, as it has for others.

(If also makes me wonder if that was too easy and evidence that I should be Beemining 2x or 3x more things than I am…)

4 Likes

[edited for typos]

Update: I’ve archived my all-green goal.

What I liked about it:

  • It removed Beeminder-induced stress by changing my goal from not derailing to having 2+ days of buffer, which increased peace of mind
  • It made Beeminding more fun. As others pointed out, it lent more of a feeling of accomplishing something positive, instead of just maintaining a state of non-crisis.

What didn’t work for me:

  • Beeminder’s iOS client and web app are both designed (as they should be) with UI to make it clear when you will derail, and what you need to do to avoid derailing. Their UIs don’t make it very clear when you will slip from green to blue, or what you need to do to avoid that. For this reason I found that staying on track for this goal required more effort than it was worth. I’m not even sure it’s possible to [edit:] reliably know exactly what’s required to maintain green buffer in some cases. …which segues to:
  • I found that certain types of goals were incompatible with this, either in spirit or technically.
    • Exhibit A: I made an exception for my weight loss goal (somewhat reluctantly), on the grounds that it wasn’t sufficiently under my control to stay in the green. I still feel a bit conflicted about whether this was appropriate.
    • Exhibit B: The way I used my drink-less-alcohol goal (if, when wanting a drink, I can afford to have one without derailing, then go ahead) exempted it from this, especially since the UI didn’t allow me to plan ahead to build up a reliable buffer and make decisions about whether to drink on the margin of green/blue instead of ontrack/derail.

This goal was useful for me to develop a habit of “shooting for green”, which I will carry with me. I do think it’s worth trying this kind of goal out for a while, just to get this benefit. It’s a subtle but powerful difference in the way I Beemind.

If at some point I find I’ve gotten out of that habit, I might unarchive this goal for a month or two to restart it.

5 Likes

Yeah, this was also my experience. I’m glad I did the goal for a while, but I’m also glad I stopped doing it after I acquired the habit.

Since stopping I’ve found that I started skating a bit on some goals but have gotten much better at keeping on top of things and od tend to push most goals further than a day or two back when I work on them.

2 Likes

I’m joining the all-green meta goal experiment using this custom goal:

https://www.beeminder.com/narthur/buffer#data

It’s using the max aggregator with non-cumulative data points. I’m using a cron job to periodically post data points to it with the value being equal to the lowest lane value of all my goals (excluding /buffer itself) multiplied by each goal’s yaw.

The goal’s slope combined with non-cumulative data points means that I’ll need to increase my buffer over time until I reach the point where every goal is above the road.

Using lanes like this means the changes in required buffer are probably going to happen in sudden jumps instead of a gradual climb–I think I’d need to base the goal on days of buffer instead of lanes to avoid this. Not sure I made the right decision here, but I’ll give it some time before I decide to change it…

We’ll see how it goes… :sweat_smile:

EDIT: The more I thought about it, the more using lanes just didn’t feel like the right choice. I’ve modified the script to use days of buffer instead of lane numbers, which should make the goal work much better since it will enforce a gradual change in my behavior instead of stair-stepped mega beemergencies.

Also, with this approach I should be able to schedule breaks by setting the rate to -1 (losing one day of buffer per day), which, after I’ve built up enough buffer in all my goals, could mean I’ve accidentally built myself the one-vacation-dialer-to-rule-them-all feature…

1 Like

This sounds very cool - can I see your script?

Yup. :slight_smile: Uses a modified version of this Beeminder wrapper.

#!/usr/bin/env python3

import os
import yaml
from beeminderpy import Beeminder
import time
import requests
from functions import *
import json


def post_to_goal(goal, timestamp, value, comment):
    b.create_datapoint(
        config["auth"]["beeminder"]["username"],
        goal,
        timestamp,
        value,
        comment
    )


directory = os.path.dirname(os.path.realpath(__file__))
config = yaml.load(open(f"{directory}/config.yaml", "r"))
b = Beeminder(config["auth"]["beeminder"]["token"])

##################
# Update /buffer #
##################

goal_infos = json.loads(b.get_goals(config["auth"]["beeminder"]["username"]))
now = time.time()
buffers = {info["slug"]: (info["losedate"] - now) / (60 * 60 * 24) for info in goal_infos if info["slug"] is not "buffer"}
sorted_buffer_keys = sorted(buffers, key=buffers.__getitem__)
min_key = sorted_buffer_keys[0]

post_to_goal("buffer", now, buffers[min_key], f'{min_key} #airtimer #cron')

print(datetime.datetime.now(), "Posted datapoint to /buffer")
1 Like