Fine-tuning a goal for morning routine

I’d like to beemind being ready to start work at a reasonable time in the morning.

I’ve set up a goal (https://www.beeminder.com/enhughesiasm/goals/beready) and connected it to an IFTTT Do Button, with the plan being that I will press the button in the morning when I am out of bed, having meditated, had breakfast and drunk a glass of water. (I see these as an atomic part of my morning routine, and they mark my ‘time to work/procrastinate’ trigger!)

This is all fine, and I can press the button as I do it, and hold myself to pressing the button as many times a week as I wish.

However, I feel like the goal could be improved. Is it possible to:

  1. Make it so pressing the button only counts as a datapoint if it arrives before 8am in my timezone? (otherwise it would get registered as a 0, but still registered so I can track the times I’m pressing it)

  2. Ignore days when I never press the button? I don’t care about this at all on weekends. Ideally the graph wouldn’t show weekends, and button presses at weekends would be completely thrown away. (This is way less important than #1, but would be nice to have for data cleanliness and analysis)

Or is there another way entirely to do this that fits the desired tracking of me pressing a button when I’m ready to go?

3 Likes

Not ideal, but what you could theoretically do is make your YBR flat (rate of 0/week). Then set your goal deadline to 8:01AM.

Make IFTTT send a -1 datapoint to that goal every Monday to Friday at 8:00AM. You basically have to push the DO button to send a +1 datapoint before 8AM every weekday or else you derail.

The disadvantage is that you don’t get a nice graph, just a flat line.

3 Likes

Really smart, I like that a lot.

I can live with the flat line. Though the disadvantage I can see is it loses the concept of buffer - the current way I can start out missing 1-2 days a week and then dial it up slowly over time.

I suppose I could achieve the same effect by having IFTTT send -0.3 or something (and then work my way up to -1).

I like it. Will think on it and maybe try it out for a few days. Thanks so much for the help :slight_smile:

1 Like

Ooh, I like questions like this. Two levels to attack it from:

  1. What’s the best metric to mind? What about actually using the time of day and using a do-less goal for keeping your average wake time below some average? We have IFTTT macros to do things like that.

…And as I was typing this @spookane came up with a better answer. I sure love this community!

4 Likes

I like this idea too, @dreev.

I’m assuming I set up a macro on IFTTT somehow that takes the current time of day, and sends it over as a number from 0-24.

Then I think about my average… say I don’t care about weekends, so that’s 48 already. And then I want to be up by 8 on three days a week, so that’s 24. And the other two days are 48.

So I have a Do Less goal where the average ‘time waking up’ is less than 120 per week? (which can then be dialled down as necessary when I want to be less generous to myself than 96 hours of solid sleep ;p)

Makes sense.

Right now I’m fighting the IFTTT interface to do this. For some mad reason, I can’t choose the DO button as a channel for ‘this’, which means I can’t get to ‘that’ to write and test the macro for the Beeminder channel.

And if I go to the DO button tab it just gives me pre-complete recipes, but apparently not the ability to create a new one with macros. Anyone know how I do this? I’m sure it must be simple but IFTTT is not helping me discover it at ALL.

2 Likes

Quick answer to part of this: I think you have to set up a Do recipe from the phone app.

(Keep us posted on the rest!)

Ah, that was unintuitive. I’m so used to thinking of phone apps as slimmed down versions of websites that I couldn’t fathom not being able to create a recipe via the web client. Thanks!

Okay, so I’m now experimenting with a goal where I have to keep my average pressed time beneath 123 hours (which I think corresponds to pressing it before 9am 3 times a week, a ludicrously easy goal, hopefully!)

The macro was nice and easy to set up. But I realise I need to have it default to 24 if it doesn’t get any value all day - is that something that’s possible to do within beeminder?

Edit: A little searching later, and I find that ‘pessimistic presumptive’ exists, which sounds like it ought to solve my problem but I don’t think it does.

Firstly (probably my fault), I can’t find it, even under ‘terrifyingly advanced’ options. Am I missing something obvious?

And more importantly, it doesn’t sound from the descriptions I’ve found of the feature that I can tell it what a missed datapoint actually means. If I don’t press this button at all, then I want to submit a datapoint of exactly 24 at the deadline, not double the daily rate of the YBR. I think that makes it impossible for me to come up with numbers that work for the YBR that meet the workflow I’m aiming for - pressing the button a few days a week, and ignoring it all other days with impunity, and being able to adjust the YBR to make it gradually harsher on myself (more days, earlier) as desired.

I suppose I could maybe get IFTTT to automatically submit 24 every day, and then have my macro submit (-24 + TOD) via the MATH[] macro, but that feels a bit like working around something it feels like I ought to be able to do in beeminder.

3 Likes

It only shows up if the goal is a Do Less goal (or has the equivalent settings if a custom goal – good side down, direction up, auto-summing). But it’s true that you can’t customize the PPR value so this may be moot. If you just don’t push the button on weekends and let Beeminder treat those days as zeros, can you adjust the goal so the right thing is still incentivized on weekdays?

I could do that, but then I’ll only derail if I press the ‘derail now’ button. I would rather not give myself a weasel-out that actually appeals to my laziness!

But I’m also realising that there’s a problem with it even if I turn on the autodata via an external service, or if I could magically hack the PPR to submit 24 every day: taking breaks will derail me as they only affect the YBR.

I think the only workable solution would involve a couple of features in beeminder that currently don’t exist.

Maybe I’ll go back to the drawing board and see if I can make it a ‘do more’ goal by inverting my thinking on it entirely

Still, this has been useful discussion: thinking about it as soon as I woke up helped me to avoid the snooze trap this morning!

3 Likes

I’ve come up with a solution I like that meets all of my design goals for now:

  • I can adjust the YBR value to control “how many days a week do I care about being ready on time”
  • ‘Being ready’ requires an action from me on those days, but the action is super simple
  • I will derail automatically if I don’t take that action a) enough times per week, and/or b) on time on those days
  • I can take a break merely by adjusting the YBR, like on a normal goal.

To achieve this, I’ve set up a Do More goal, with a value which (roughly translates) to ‘number of days I care about being ready on time’.

Then I’ve set up a DO button recipe on IFTTT (though this would work with say GPS tracking on IFTTT if you didn’t work from home like I do!). The value I send is:

SUM[SUM[8,-TOD[{OccurredAt}]],1]

where “8” is the time of day I am aiming to push the button on.

This has a few nice features - pressing it early adds to my buffer, pressing it late erodes the buffer, so I can make up for lost time by getting up earlier the next day.

On average I have to press it exactly at “8” (or whatever value is in the formula) on exactly the number of days specified in the YBR slope value.

One downside is that I’m not punished by not pressing at all, but that’s arguably a feature. With a gentle slope I have a weak-weasel option of putting it off till the next day, but if my slope was 5 then I’m forced into pressing it at least once a day as early as possible. The punishment for action is still harsher than the punishment for not acting, but I’m happy with this tradeoff for now.

Only other downside is storing the desired time of day in the IFTTT formula and not pulling it from beeminder, I like to have all my variables neatly in one place for adjustment, but that’s just nitpicky.

Hope this helps anyone else looking for a similar system.

4 Likes