« Beeminder home

Beeminder Blog

A yellow brick road being squeezed by a vice grip

This is the next phase in our elaborate evil plan codenamed Yellow Brick Half-Plane. Benevolent plan, I meant to say. The previous phase was killing off auto-widening yellow brick roads.

Background: Yellow Brick Whatnow?

To start at the very beginning… The Yellow Brick Road is the path on your graph that starts at the current value of the metric you’re minding and ends at where you want it to be, or perhaps soars upward indefinitely. (Related reading: Why Beeminder likes cumulative graphs.) Historically the yellow brick road has been defined in terms of the centerline and then so-called lanes on each side of that. The lane on the good side of the road we called being in the blue and represented two days of safety buffer. On the bad side of the centerline was being in the orange which was one day of buffer. (If you’re thinking of a standard do-more goal then “good” means above the road and “bad” below, but this is reversed for do-less or weight loss goals.)

That turned out to be a horrible design choice, brutally complicating all sorts of things that should be simple, like computing how much safety buffer you have, especially when the slope of the road changes.

Yellow Brick Half-Plane means scrapping the concept of lanes. Instead of defining the road in terms of the centerline, it’s defined in terms of the critical edge. Then you can still have colored zones defined in terms of the number of safe days. This has a million implications for the implementation but the primary user-visible difference will be that the thing you’re editing with the road dial (in the Commitment tab under your graph) or the experimental visual road editor is the one bright line that you can’t end the day on the wrong side of. (Also it’s fixing a lot of bugs and inconsistencies. I don’t want to oversell it or anything but it’s going to be better than a box of kittens.)

The Thing We’re Changing Now…

“A wider road is conceptually no different than a razor thin road that’s shifted to wherever the critical edge of your custom-width road was”

…is simply that you can’t pick the width of your yellow brick road. But that never really made sense. The only thing that ever matters is where the critical edge is — the bright line that you can’t let your datapoints cross. Or, technically, can’t be on the wrong side of when your daily deadline hits. So a wider road is conceptually no different than a razor thin road that’s just shifted to wherever the critical edge of your custom-width road was.

There’s one aesthetic sense in which that’s not quite true and that’s the visual indicators and the colors of the graph. If you think of orange as “danger zone” then previously you could customize what that means exactly. So that’s a tiny step backwards [1] that will soon be more than made up for as we complete the Yellow Brick Half-Plane transition. The Yellow Brick Half-Plane is all about focusing only on that bright line.

I guess we can also mention one other ridiculous sense in which it’s not true that this change is functionally inconsequential. Namely, cheaters. We had never gotten around to implementing any constraints on changing your road width so unscrupulous users could’ve — not that anyone would ever do this — cheat by widening their road when they were about to derail. Which is a good place to rest our case on killing this abomination of a feature.

What If I’m Already Using Custom Lane Widths

It turns out there aren’t actually too many of you so we’re emailing all of you and making sure the transition is smooth. Stay tuned!

UPDATE: That happened, y’all should’ve gotten emailed, and custom lane widths are now fully and completely a thing of the past. Hooray!



[1] Yes, that means we’re violating the Pareto Dominance Principle. Except part of the PDP is that it’s allowed if we write a blog post spelling out the tradeoff we’re making. Et voila.


Image credit: Faire Soule-Reeves