Request: Beeminder integration for Beeminder

I want to try out some of the meta-goals at Skating the edge, namely:

Could write my own script to do this, but it would be a mess – would need to run it every day, or else write code to enter data for the past 30 days or something, then deal with some goals being created <30 days ago, etc. Would be nice to have the data just entered automatically.

Edit: Another integration that would actually be more useful: if I have a goal to do e.g. 30 pushups a day, it would be nice to also have an auto-synced goal to do >0 pushups on at least 3 days a week. Or if I have a goal to practice guitar for 2 hours a week, add a goal to do at least 10 minutes at least 3 days a week. So, add the ability to make an auto-populated goal that gets a datapoint of 1 for every day that some other goal gets a number above some threshold.

1 Like

I love it. I think that metagoals for decreasing complexity and metagoals for improving analysis are two of the things I’m most confident that I think Beeminder should add!

There are, however, a few snags around many of these things that make this trickier to deploy across the platform than it seems.

For instance, on a single goal, Beeminder knows when to fetch data and can figure it out pretty easily. If you have a goal that aggregates data from multiple other goals, and they all share the same deadline, the same schedule is basically OK. Maybe you’d want to postpone the aggregate just a little, but you wouldn’t have to. What if you have ten goals, all with different deadlines. At 11 PM, what is your number of beemergencies for that day, if some of your goals are “on the next day” already? What about the urgency load?

We can say something like “ignore the days, when we fetch the number of beemergencies, we care about RIGHT NOW”, and that is a potentially workable aggregation, but now we have to adjust the goal’s fetch schedule to be something like the combined set of all fetch times for each of the various deadlines in the set of aggregated goals. This isn’t impossible either, or even extremely difficult, but the fact that it’s this complicated to explain makes me skeptical that we’ve boiled the concept down to the right level.

I know I’ve written about the deadlines thing before… I think I even argued that it implies that having multiple deadilnes per user is a Bad Idea.

Anyway, first question first… do you use multiple deadlines across your goals? :slight_smile:


While you’re waiting for something official to support meta-goals…

This particular case is possible now, with the exception that you have to set up the auto-synch outside of Beeminder. Either IFTTT or Zapier can do that.

The >0 case is possible within Beeminder, if that second goal has a custom aggregation method of nonzero

Fancier cases are certainly possible within Zapier, or possibly in the new multi-step IFTTT or in the old IFTTT with creative use of our Macros


I wasn’t even aware that you supported deadlines other than midnight! I’ve since started using that feature.

Anyway, for anyone interested in tracking beemergencies, this IFTTT script works: Beemind your Beemergencies - IFTTT

For the self-integrations, at the moment I enter activities into an external tool, which runs:

add_beeminder_data("tu-pushups", pushups_total)
add_beeminder_data("tu-pushups-boolean", int(pushups_total > PUSHUPS_THRESHOLD))

So for me at least, that problem is solved, though I think you should include something like this built-in. It would even make sense to have multiple “computed boolean” goals per normal goal, e.g. to commit to >30 pushups on >3 days a week, and >100 pushups on >0 days per week.

Also, another feature request: APIs to fetch the latest datapoint from a goal, or a datapoint with given daystamp. At the moment I have to fetch all datapoints, sorted by timestamp, and scan through them all. Also an API to set aggday - now that I’ve upgraded I can use aggday=“latest” and just add points instead of updating them, but I have to go through all my ~70 goals and manually set that.


Note that goal resource includes a last_datapoint field, which is exactly this.