Scaling Data Points and Timer Issues

I have a new suite of exercise goals where I log time spent on different activities. They all then feed into IFTTT and update my total active time goal.

At the moment, the lower level goals are all in minutes and total active time is in hours because that made sense when I was making them. I thought if I put a value in the terrifyingly advanced setting to scale the data it would apply to all the data that came into that goal but it seems that it only applies to data that was already there. Now I’ve got data values coming in as minutes and counting as an absurd number of hours on my total active time goal.

I can see further issues arising when I want to use the Android app timer for data on the lower level goals. I think the timer uses hours but all these exercise goals I’ll be using it for are in minutes.

The simple solution seems to be to convert to hours on everything but that makes it difficult to manually enter exercise time when I don’t use the app. It’s a lot more natural to put in 35 minutes of cycling than 0.5833 of an hour. I just checked to see if I could put 35/60 in instead but I can’t.

I’m also anticipating low Beeminder enforced rates on the lower level goals so having these in minutes is appropriate. For example, I only want to be stung if I go below 15 min of yoga a week but I am committing to 4 hours of total active time per week. It makes sense for these goals to be in minutes and hours respectively.

I’ve just realised I can use the 0:35 time input fine for manual data and even get IFTTT to send data in this format. But it falls apart if I’ve done over an hour of an activity and the data is coming from one of the lower level goals. Beeminder will not accept 0:100 for 100 minutes.

Any thoughts?

3 Likes

Oh yes you can! Entering a manual datapoint of 0:35 will get converted to 0.5833 for you.

That’s an example of what’s known as “syntactic sugar” to make data entry easier. The underlying goal tracks it as 0.5833 and (mostly) forgets that you entered it as a time-formatted value.

Update: ridiculously-timed; of course I’ve just read the final paragraph in which you reveal the existence of this same trick. Maybe Beeminder should accept a value of 0:100 and do the right thing with it. We already do that with hour values that exceed 24, so 25:30 converts to 25.5.

3 Likes

Personally, and YMMV, I haven’t found it useful to have any goals in minutes, and I quickly converted all of those that I’d started out that way to hours. I find it much easier to have all goals in hours and enter them in the “0:35” format. For one, this gives you the consistency you need between the two types of goals you were talking about, and for another, it’s a lot more informative for me to know that I have a total of 6.5 hours spent on a certain hobby in the last 3 months than it is to know that I’ve spent 390 minutes (which I’m just going to mentally convert to hours anyway).

Sorry, I’m not sure I understand the 0:100 thing for 100 minutes. Is IFTTT not able to send that as 1:40?

1 Like

(One thing that would probably help here is if there were some checkbox we could check off in settings that would inform our graph that this was a goal in hours, so that it would display as hours instead of decimals in the totals (e.g. 12:30, instead of 12.5), near the countdown, in the road dial, etc., but I personally think things like that should be way down the list of priorities behind bug fixes and improvements to the functioning of current features. Still, I see that as a neat in-the-future kind of idea.)

3 Likes

This reminds me that a really powerful (and possibly easy!) improvement to our IFTTT integration would be to let Beeminder evaluate arithmetic expressions for you. We already implemented things like pumpkin[{{OccurredAt}}] where we pick out the time of day from a timestamp for you. We could also do like mathitup[{{minutes}}/60] for when an IFTTT channel is providing number of minutes but you’re beeminding hours.

A highly insecure version of that would be trivial to implement (just call Ruby’s eval) and I’m sure there are libraries to evaluate arbitrary arithmetic in a secure way. Anyone have recommendations? Cc @bee and @jjb.

Yeah, don’t use eval :slight_smile:

I’ve no experience with such tools but here’s the first hit for “ruby parse math”: GitHub - rubysolo/dentaku: math and logic formula parser and evaluator — looks pretty legit.

2 Likes