check mark upgrades

If you’ve Beeminded data for a goal on a given day, there’s a checkmark next to it on your dash/on the android widget. This is a good reminder. It could be better.

In particular: I would like a quick indicator as to not just whether I’ve done my goal action today, but whether I’ve done enough of it. My pullup goal asks me to do ~30 per day. My personal record straight set is 21. :slight_smile: This means that I do multiple sets, and generally I spread them across the day when I feel like it. I would like, glancing at my phone, to get a prompt reminder “yes you did pullups this morning and logged them, but you should crank out another set.”

Basic level of the request: three glyphs.

  1. nothing beeminded today.
  2. something beeminded, but not “enough”.
  3. You hit your quota.

I honestly don’t care what these are, anything would do.

Super awesome pony request: make glyph 2 variable in some sort of scaling way. Suggestion: check mark fading between light and dark? Or possibly color?

10 Likes

I like this. I am making some changes to the Beeminder Android widgets,
and something like this seems pretty good to me. It only works for some
goal types, I think.

I am not sure about the implementation details. What do you think of
something simple for the first version? A checkmark would mean data
entered, and a thumbs up means you entered data and it’s equal or exceeds
the daily rate?

2 Likes

Thumbs up seems totally fine! I don’t have strong opinions about the exact glyphs so long as their distinct and cover some reasonable idea.

2 Likes

Oh I like this too, it would be helpful for some of my goals as well (and I actually might reformat one of them to work better, with that kind of indicator). Any chance of getting the same indicator on the website dashboard too?

2 Likes

I know this is a two-year bump, but splitting the checkmarks into “nothing today”, “some data today”, and “all done” would be a really, really nice feature.

3 Likes

Dominik, I think you’ve hit on the checkmark usability issue that I have, personally. I have goals that get data from a lot of places–official beeminder integrations, IFTTT, the API… and “entered data today” is something I care about, but it’s not everything I care about with that, so I end up tracking it somewhere else.

What would “all done” mean for you? Does that mean that “the data entered today matched or exceeded today’s rate” or something like that?

2 Likes

Yeah, that’s a good question, isn’t it? For daily goals, sure, that’d be perfect - but for stuff I want to do weekly or monthly, but still track, just basing the decision on whether today has input data would still display no checkmark 6/7 or 29/30 of the time.

Right now, my API tinkering has resulted in me taking runits, converting that to a timedelta into the past, and aggregating datapoints from that range, then comparing it with rate.

However, this turns out to be pretty difficult to do without those bulky all-goal-data requests to grab datapoints… I’m thus not sure how feasible that approach it would be.

1 Like

Ah, wonderful. If you’re already tinkering in the API and seeing the sausage get made, I have some other idea/questions :slight_smile:

Please do not interpret my questions here as a barrage of questions to tell you I don’t like your idea–but rather “I’ve been thinking about this on and off for a few years and haven’t yet come to a great conclusion :)”

For me, I want to know if I am keeping up, falling behind, or building buffer, and I want to know in general. I started by just logging the maximum number of beemergencies I have each day. It was an ok metric, but didn’t correspond super well to my capacity. I have since built a metric I call “urgency load”, which, for each goal, is 0 if it is due outside the akrasia horizon, and 8 points if it’s due today, and then linear between there. I sum them all up, and that’s my urgency load. I’ve maintained this metric for about a year, and it works super well at answering the question “can Adam take on a new opportunity right now”.

It isn’t a perfect metric. The name isn’t great. Some goals take 1 minute to do, and other goals take 4 hours to do–but I could scale the goal by effort or “story points” or time. (I also have an exclusions list for a few goals that I don’t want affecting this score.) If I have 100 goals with 30 days buffer, and I don’t do anything on them for 2 weeks, that doesn’t affect my urgency load at all.

Something I just started working on that is heavily related to urgency load is simply a single place to check where it tells me exactly what is due within the akrasia horizon across all of my goals, ordered by “first due”. Think someplace that says:

In the next week, you have committed to doing:

  • 130 pushups
  • flossing 5 times
  • reading 45 pages of “The Priory of the Orange Tree”
  • writing 1 blog post

The next metric I have been working on, that I want to play with alongside urgency load, has no name yet. It’s going to try to capture “Am I keeping up? Based on the recent past, am I off track?” I am taking snapshots of all my goals, throughout the day, and looking at the safety buffer. I don’t know exactly how I want it to work, but I’ll brainstorm and work some things out right here… I want to basically compare the change in safety buffer over a period of time, and the period of time will be related to the rate. If the rate is 10/day, I want to look at the change in safety buffer from today and yesterday. If the rate is 1 per month, I want to look at a larger period of time… maybe even a whole month. I have collected the inputs, but I need to take the time to actually crank through it and see how to build it and how to scale it. One way would be to look at the change in safety buffer from either the previous day, week, month, or year, and rank it in 3 categories, under, on, over, but I feel like smoothing it out would be better. If I need to do one per month, and I did one yesterday, am I more “on track” than on the 29th day after doing it? I have feeling that this mathematical approach is starting to boil down to “safety buffer / goal rate” and I don’t think that’s quite what I want. I want something closer to “how does my pace over the last X compare to the expectation I have set”. Maybe I’m really saying look at the derivative of safety days over time, with an understanding that the chunkiness of my approximation should be related to the goal rate. Anyway, now that I’ve talked my way around to Tai’s Model…

One of the complexities here is that goal rates don’t need to be constant, or even continuous. I would be OK with the first version for me only looking at the current rate, but to roll it out to folks, I’d have to think about weekends off and upcoming rate changes, but a better version of this new metric would take upcoming rate changes into account.

Beyond this metric, I’d like to be able to surface this information per goal in a way that is useful.

3 Likes

What I would love to see is a configurable timeline. You choose which goals you want to see, and for each goal, you choose a min value. This is the min value to count as a “check,” and it shows you which goals have check marks for each day.

That way, you could pull it up and easily see which goals had checks for which days.

It could also show you how much you have to do in the next week like @adamwolf suggested.

The insight I’m personally looking for is for is for goals that don’t need to be done daily, or even can’t be done daily but have to be done “bursty”

1 Like

Some notes on the top-level issue about checkmark upgrades (maybe the broader, more philosophical stuff on metrics for how on-track one is should be branched off?):

I really like the simple proposal to have a visually distinct checkmark for “did at least my daily rate today”. We already have a checkmark (we call it the todayta checkmark) for if any data at all has been entered for today.

BEE: this is kind of stupid but what if the checkmark started out outlined and then filled up as you added more data until you reached your daily rate and then it was totally full. like a fundraising thermometer.

ME: I love that but @bee seems to not have been very serious… Another idea: show an epsilon if you’ve entered any data and a delta if you’ve entered your daily rate’s worth. “Normal people don’t understand Greek letters” is not a valid objection here because, for now, Beeminder is for nerds and that kind of signaling is good. (Yes, I will die on this hill!) But what may be a valid objection is that it could be cluttery / information-overload-y.

Actual Action Item

The checkmark is still nice and evocative and just some subtle visual distinction (brighter, filled in, glowy) for full daily amount done would be a simple pareto improvement.

Related quasi-bug-report:

I loved the idea of a checkmark for “did at least my daily rate today”. Most of my goals are automated with other services. So, I always get a checkmark even if I didn’t do anything. Right now I have a checkmark for drinking 0 cups of water (from Fitbit) and for knitting for 0 hours (from RescueTime). The only use for me for check marks as is today is to tell me that my integrations have not broken down, but they don’t actually tell me if I did something or not.

Ie, datapoints of zero (as is common from autodata) maybe shouldn’t yield a checkmark. Or maybe anti-magic says they should? In any case, epsilon-vs-delta checkmarks (not literally but that’s how I’m thinking of them now) definitely help with this problem too!

2 Likes

What about:

One checkmark (or a white checkmark) for nonzero data entered
Two checkmarks (or a red checkmark) for current daily rate reached

I also love the fundraising thermometer idea. Like a battery gauge basically. Like how the battery icon fills up.

1 Like

No worries, exchanging artillery barrages of ideas is sort of the whole reason I’m here in the first place :slight_smile:

That’s a pretty good and thorough discussion of the issues. It’ll take some work to account for the variable goal rates and especially weekend-variable ones.

2 Likes

Yeah, having that would be awesome - especially if that checkmark type also came through the API :slight_smile: I’ve been tinkering with an upgraded version of CLI for beeminder (think bmndr, but 2020) and it’d be lovely not to have to calculate that myself from existing datapoints.

I’m pretty sure there’s a limit joke in here somewhere… It’s definitely a neat idea!

Exactly what I reported in Checkmarks for Toggl goals ! :slight_smile:

1 Like

Did you know that given sufficiently obscure notation, any statement of analysis can be written on an arbitrarily small piece of paper?

I honestly just saw this and thought “that’s genius, why have I been fiddling with incomprehensible UI ideas this past few weeks”.

Then I remembered that’s what I do already :wink: – I mean just the text, like you wrote it. It works well for me, but there are still problems, which is part of why I’m still experimenting with UI.

I think one problem is that both a list like that and metrics like you’re contemplating don’t let you see or play much with the actual data and thereby perhaps let you grasp better what’s going on: what’s happening, what’s going to happen, and let you answer a bunch of questions just by looking at days and repeats (or days and time stints) without having to geek out about metrics and checkboxes with particular meanings you have to read about to understand, and also without the big geeky charts. In particular, the sizes of the days in my UI show the daily rate, so you can see fairly directly if you’re hitting that, how far you are from hitting your target safety buffer, how much effort it is to get there, etc.

At least, achieving a bit more of that is part of my little dream here. I’m not at all sure (yet) that my funny 2D diagrams are any less geeky than the charts, even with some interactivity and tweaking. And I’m sure any one view isn’t going to be the cure for all problems, and computing actual metrics will help in ways that seeing the data better won’t.

So far this is how it’s gone for me:

  1. I started out looking every day at thumbnails of the charts I made (which are just a copy of the beeminder charts pretty much except they were always halfplane – not sure I’ve seen the new post-halfplane beeminder ones).

  2. Then I realised all I really pay much attention to was which goals were due on which day, so I just made it print those out. I do still look at the charts sometimes, but not often.

  3. I realised I tended not to do tasks because I thought they’d take longer than they actually do. Also I spent time staring at the list thinking things like “OK I want to do that one first because I can get that out of the way in 5 minutes”. That lead to the simple read-only UI I posted here a while back (it had bars and arrows).

  4. At some point I realised I often want to see “what can I do right now”, and was spending time mentally filtering on things like “yeah I can’t do that one because I can’t ‘take vitamin pill’ usefully twice in a day”. So I added metadata to indicate which goals couldn’t be done twice in a day and filtered those out from the list if I’d done them already.

  5. After implementing that, I realised fairly quickly that I also wanted to see days coming up that had a big cluster of goals so that I can head that off by doing some today. So I added back the full unfiltered listing too, to use for that purpose. In a graphical UI I imagine those displayed in a similar UI to what I posted before, but in a concertina view by date with the “can’t do today” ones greyed out.

  6. I do still use that simple graphical read-only UI I posted about before (ouch I just ran it, I have work to do today). But now I have a linux phone on order (maybe it’ll show up one year soon, maybe the battery will last more than 2 hours :wink: ) I want an actual interactive UI for that for viewing and checking off goals.

As for 6., so far I mostly have sketches and notes for something loosely based on my first read-only UI (evolved in various ways – e.g. the single arrows on repeat goals are replaced by little rows of boxes that get checked as you go, and the thing now spans multiple screens to be useable on mobile). Today I got a little bit of one screen implemented (a vertical single-goal view) that lets me drag the goal rates for days 7 and onwards and see the days and the repeats move and change colour (green/red/grey).

Before I implement more I should really try and test out and iterate on the design (“UX”) somehow – as a start, anybody here (other than dreev :slight_smile:) prepared to give feedback on some mockups?

So I don’t quite understand this. How is it ordered by “first due” if it lists all the things due in a week? Like if you have a goal to floss 5 times a week and the first is due today, that would come first on the list even though the list item says “flossing 5 times” and only 1 is due today? How would you know from the list how much is due when?

What if the table could be configured so each column represented 1 “unit” of time, and you could configure the table so each goal had a different “unit”?

Then you could set the “unit” for a monthly goal to 1 month, and each column would represent a month and have a check mark if you had done at least “min” in that month.

To bring this discussion back here a bit… I’ve been thinking about this a bit more and I realized the epsilon-delta checkmark would probably solve all the issues I have with backlog goals such as https://www.beeminder.com/stanczakdominik/pocket-backlog, which I briefly wrote about at Dealing with backlogs | Prematurely optimizing. To summarize: I track the sum of all backlog items’ days since adding to the backlog. Currently, the checkmark shows up since there’s new data, but it’s not actually relevant if I haven’t removed any of them in this week!

With the epsilon-delta checkmark, I would probably live mostly in the epsilon state and try to clear enough backlog items to get into the delta state.

It’s so good! Seriously. :drooling_face:

1 Like

I wanted that functionality, so I went ahead and hacked together a basic implementation: beeminder-cli/beeminder.py at 7a0460c63525619a2b307069b0c19899f6fbacc7 · StanczakDominik/beeminder-cli · GitHub. Feel free to use/adapt!

(the repo is my Python CLI, which I’ll be posting here in a while, once I’ve refactored hardcoded personal stuff out :slight_smile: )

1 Like