Meta-minding can replace PPRs!

Holy crap! I was just playing with the settings of a new goal I created and, as I was turning PPRs off, it hit me that the space we have PPR settings in now could be replaced with a button, the clicking of which would create a meta-goal requiring +1 per day on the goal who’s settings we’re in! (And we’re actually in a position where we are technically able to do that now!)

We need almost no settings information/input from the user (just a modal asking for the goal name, really), because PPRs are trying to ensure that we add at least one data point per day, and so +1 per day is a perfectly natural replacement for that. (We could even have the meta-goal’s name, and URL replace the button once it’s created…)

Even better, that section could exist on every (non-autodata) goal. Meta-goals could replace the PPRs, and bring uniformity to another piece of the settings.


Great point. We started chatting about this in the community Discord and I wanted to make sure we captured some of the thoughts here. I’ll start with my defense of Pessimistic Presumptive Reports (PPRs) in general (with thanks to @theospears and @rperce and @poisson for help in formulating this, though I’m not sure they’ve reached the same conclusions):

Let’s say we’re talking about a do-less sugar goal. Having the graph reflect the truth of your sugar consumption is paramount. We call this the QS First principle – QS as in Quantified Self. So Beeminder has to know how much sugar you ate every day. If you don’t tell Beeminder how much you ate, the graph has to do something. Beeminder has to interpolate the missing data, i.e., predict how much sugar you ate. If it were a do-more veggies goal then “no data ⇒ no veggies” would be a good prediction (and that’s exactly what Beeminder does). For a do-less sugar goal, something more than the daily allotment is a good prediction. Or in any case “no data ⇒ no sugar” is an especially bad prediction.

Unless maybe you have a meta goal, which is @mary’s point! Related side note: user-me is pining for a feature where anything with a PPR sorts to the top of your dashboard.

But basically I’m suggesting that PPRs are the theoretically/platonically Right Thing to do. Except I think for that to be true the user needs more control. Part of making a Beeminder graph as accurate as possible is to ask the user, from outside the akrasia horizon, what is the best way to interpolate missing data. If you have a meta goal to enforce data entry (or an autodata goal of course) then zeros may well be the correct presumptions when no data is entered.

Bee and I also started thinking about how this plays out in the eventual Bright Red Staircase New World Order (I think it’s important to think ahead to that even though it’s still, sadly, not on our upcoming roadmap). Thanks also to @morehavoc for help in thinking this through.

In the continuous world of the bright red staircase, there aren’t discrete daily PPRs, there’s just an analog of flatlining: the location of your presumed datapoint at every moment drifts upward on a collision course with the bright red line. (More on the math of this in @saranli’s x-treme nerd write-up of the math of isolines.)

But Bee realized we have some conflicting principles/desiderata in this still-hypothetical continuous-beeminding world:

  1. A do-less goal tells you your exact hard cap at every moment
  2. Colliding with the bright red line is an instant derail

Point 1 means you should be able to safely enter any amount up to the hard cap and be safe. But Point 2 means that if you get close enough to the red line then the PPR-style flatlining will immediately derail you.

I’m kind of stuck on an elegant way to reconcile those! Possible answers:

  • A. Stick with the concept of a discrete PPR that’s auto-entered if 24 hours goes by with no data, even when everything else is continuous
  • B. Complicate the PPR function, like it always flatlines for 24 hours after getting new data before it starts sloping up
  • C. A grace period that makes it like the pre-staircase status quo where you can technically cross the bright red line as long as you’re back on the right side by a deadline
  • D. Complicate the concept of the hard cap: make it transparent to the user somehow that the closer you get to the red line the sooner you’ll have to enter data again
  • E. Mary’s right and PPRs should just be replaced by meta goals

A through D are all pretty gross which means we either haven’t thought of the right answer yet or E is in fact the right answer. Answer C strikes me as especially gross, which is a great reminder of how gross the status quo is and why Bright Red Staircase is so important! I guess D currently strikes me as most promising but feels very unclear if it could be made simple enough.

Anyway, feel free to ignore the hypothetical/eventual stuff and focus on more immediate questions like, y’know, making it easier to pair a meta goal with a do-less goal!

PS: Oh my, I had totally forgotten about all the brainstorming about ways to kill PPRs that we did in our blog-post-driven development blog post – looks like we even scooped @mary in “fictional feature announcement #3” there!


I think of it more as a preference than as being right. But it sounds like, for your use case, User-You prefers PPRs to meta-goals, so maybe it shouldn’t force-replace them, especially since I’m sure you’re not alone in that preference, but User-Me is still psyched about meta-goals being able to take on that role for my preferences (and anyone whose use cases are more like mine).

The thing I like most about PPRs is that, when there’s a day where the data goes dark, there’s a clear marker in the data itself that that happened, because of the PPR’s comment. I like that. Especially since if I didn’t enter data, it’s because I forgot, so that information is great in comparison to me just failing silently and never knowing it when I look at the data.

The thing User-Me like’s most about meta-goals is the simplicity and the ability it creates to choose to send myself do-more-style reminders to enter my do-less data. Plus, that way “dark days,” days when I have no idea what this data actually was, are all treated the same, with a 0-units datapoint, whether I forgot, went on an official break, or the goal was archived for a while. (All commented for QSness, of course.)

The thing Workerbee-Me likes about the meta version is the simplicity and uniformity across goal types. There’s just so much less… everything. Less to explain, less to maintain, less to be confused about, less to forget to turn off when you calendial and book flat spots for a vacation, less to spec out, less to decide for the user, less to decide for the user, less everything. It’s just elegantly simple.


Adding my story here with PPRs –

This morning, I wanted to add data for a goal that had a Pessimistic Presumptive datapoint in the red.
Of course, I pressed the wrong buttons on my phone and ended up accidentally derailing. So I’ll have to fix the data and plead non-guilty to support!

I like the idea of having a bit of time after I input data to fix it. Like a pre-derail state that could be fixed.
(Of course from a software standpoint, it can be ugly, and confusing for users too).

Generally, I’ve had bad experiences with PPRs, and I wonder how much it applies to other users.
So I wholeheartedly lean into Mary’s side! #DESTRUCTPPR

It’s preferences rather than sides now, I think. We don’t have to #destructchocolate if we prefer mint chocolate chip now. :icecream: In the world where there was only the resources to produce one kind, we had to pick only one (mint chip, obvs), but there aren’t anymore. And Danny’s post made me realize that his preference for PPRs sticks around even after the criteria of being effectively reminded to enter data is satisfied. There’s a second layer of preferences about what we like to have happen to the datapoint on the missing day. If we can satisfy both sets of preferences, which we now can, seems like a win-win!

The main question now seems to be what to set as the default–PPRs, meta-goal, both off–but after sleeping on it, I genuinely don’t know which is the least-worst default. PPRs can be confusing and hard to explain, but automatic meta goals as a default for do-less goals (and any kind of “keep under” goals, really) might be worse, depending on whether they’re very clearly explained during creation and whether new users skip reading the explanatory text.


Either way, for User-Me, meta-goals for my do-less goals are an awesome option and I’m excited!