Zero-notice days off

I wish beeminder had a second staircase for each goal, that would allow me to easily maintain a buffer. For me, the solution is using another system to manage the buffer. I’m using a separate habit tracking system that is one or more days ahead of beeminder. So when it looks like a failure day in my second habit tracking system, I might still have two three or even more days left over in my beeminder.

Currently, this requires double logging, but it is well worth it to me to have a little breathing room, and each beeminder goal can have its own individual buffer level. I think that it is natural and good for humans to ebb and flow a little bit like this. It might not be for everyone, but some people are just like that.

So I’m primarily looking at, trying to keep up with the secondary system, which is kind of acting like my primary system… Those are the goals that I need to get done today. And if I miss a goal there, it’s not great, I don’t like it, but I’m not going to derail in beeminder. But then I’m going to have to do something to make up for it in the future so I can re-establish my buffer.

Note that there may be some other considerations in doing this. How one words their goals, how easy or difficult it is to make up for a missed goal. There’s a sweet spot between being too hard or too easy. I think that sweet spot tends to be more towards the the easy than one would normally think, because what ultimately happens is life happens to you unexpectedly, and then all the sudden you’re scrambling to get your goals done but you’re not going to be able to do that, and that’s very stressful. And for me the always living on the edge of the red line is too stressful in the longer run.

I am living on the edge in a way, but I’m living on the edge in this secondary habit tracking system. I want to be successful in the secondary habit tracking system. I know that the threat of beeminder is always there lurking behind that, and I want to stay in front of it to give myself a few days leeway.

It’s like how you would treat a ledge if you are on top of a building. You give it a little bit of distance.

So yeah, if the end of the day rolls around and I haven’t finished one of my goals, I can let it slide one day and I won’t derail. But I can also see that I need to make up for that day.

3 Likes

There’s an IFTTT recipe, I think, to copy data from one Beeminder goal to another. I wonder if you could somehow use Beeminder as both your primary and secondary systems?

So primary goal P has a tiny or zero buffer, and (if you’re on a high enough tier) even $0 pledge. If you log a datapoint there, the magic of IFTTT wires that point through to secondary goal S, with 3 days buffer and a large pledge (same slope as P).

If you miss a day, goal P derails (small/zero cost), but goal S (with the real penalty) just looses a day of buffer. Do this often enough and S will eventually derail, giving you the large kick in the pants you need. Meantime, you get a mild prod for a derail on P, and that generally keeps you back from the line. And if the slope for S is less than your expected rate, you’ll gradually reclaim buffer in S (which you could ratchet if it gets too big, or autoratchet if you have that feature at your tier).

Would something like this work, @coolhandlouis ? Not that I’ve tried to set it up or anything, but it sounds like it might?

2 Likes

Wasn’t Beeminder Inc. going to make dependency goals a core feature? In any case, yes what you’re describing is basically the same thing as what I’m doing. But that would cost a lot of money to be on the Beeminder highest tier.

Ultimately, my process can be done on a printed sheet of my goals. Just put a number next to each goal, how much buffer lead time you want, and what the current buffer is. Then work your way up to the desired level. After that just complete each task every day. Use graph paper and you can check off each day or x if you failed to complete it, and then you know you have to do it twice the next day to catch up. Something like that, that’s just an overview. It gets a bit more complicated for goals that are not everyday.

In fact, for daily goals, it’s just a matter of using the app, and having a standard lead time of, for example, 3 days. Down to two days on a goal? Uh oh. Need to work some extra to get that up to a 3-day buffer. Up to 4 days or more on a goal? Either ratchet it or take a day off on that goal! The one problem with the mobile app is that they don’t give you the capability of sorting alphanumerically, which could help if you use the standard naming convention for daily goals. Of course, you can sort by goal slug in the website interface.

I’m very happy with my primary to do system and habit tracking app (emacs/org-mode), which is free. It allows me to add in other non beeminder habits as well. It has some integration with Beeminder, but not in the way that I’m using it right now. I’ll need to dig into that integration to see if I can automate my process.

1 Like

Ah, interesting! I’m just (re-)discovering emacs org-mode as a to-do list for some project stuff, and was wondering about Beeminder integration. I’ll have to do some digging - have found this useful stuff so far - and will be fascinated to see what’s out there!

2 Likes

Might be of interest: Beeminder + Emacs / Org Mode Integration

1 Like

Hm, no, I don’t think of it as having an extra imaginary line, but I admit that I’m probably quite different to a lot of users in that I don’t use reminders a lot. I touch every goal I have every day, where “touch” can mean “look at and dismiss as not necessary”. Considering it degenerate seems a bit harsh – I’m not sure I understand why you’re using that word!

For instance, I’ve had 13 legit derailments so far in 2022 (if I’m counting right), so it’s not like it’s a system that circumvents Beeminder’s sting, or something like that.

1 Like

I’m sorry! I thought for a while for a less rankling word and came up short. I should’ve at least made it clearer that I didn’t mean to call your technique degenerate wrt to your goals, just wrt mine:

If I maintain a buffer to make vacation days work and they have to work, but Beeminder lets me use that buffer for excused vacation time or being lazy, then I must pretend there’s an early stinger or it falls apart. So to me, using a buffer for this is… “lacking some property, order, or distinctness of structure previously or usually present.” :sweat_smile: That’s all I meant to say.

I do love the ideal of maintaining buffer as a matter of safety and flexibility, and I work as you do whenever I can. :+1:

1 Like

It seems to me that the reverse is true. What you actually truly want is an extra day of safety buffer. You just want to pretend to yourself that you don’t have that buffer in order to avoid wasting it on trivial slacking-off. But you still want it!

(You say you want to be able to take time off at very little notice. To be able to take a day off with no notice is the very definition of having a day of buffer, is it not?)

I don’t want to be too dismissive here: I get why you want to have your cake and eat it too, why you want to have a secret extra safety buffer that doesn’t show up on the graph: you don’t want to blow this buffer on just plain-old trivial “being lazy”—you have specific things you want to spend it on. Specifically, it seems that you only want to spend it on things that are sufficiently important to also justify a day off of work.

That is perfectly reasonable! I’m mostly just arguing against the framing of keeping a safety buffer on the graph as degenerate: the opposite is degenerate! If you really truly have the extra day’s safety buffer (in that you are allowed to take a day off at no notice), then you should have that on your graph! Otherwise you’re trying to fool yourself into not remembering that “the real bright red line is this imaginary one that’s slightly to the right…” and so forth.

1 Like

It’s because the real buffer is in an HR database and is independent of whether I’ve worked ahead in Beeminder’s eyes. To Beeminder, vacation days should just not exist, the same as weekends when you check the box for it.

2 Likes

If y’all could see my work goals, sometimes you’d see a healthy buffer, and sometimes you’d see me skating. I get it. Neither behavior overrides my company’s vacation policy nor California labor laws. :joy: When I’m off, I’m off, and I’m looking for ways to use Beeminder that recognize that. I like the ratio system best so far. I really do appreciate all your help despite my inability to communicate this well.

1 Like

Haven’t read this thread thoroughly, and this is from user-me, not support-me, but…

It seems to me that your goals are tracking something different from your vacation days. Your vacation days are literally tracking how many days you can take off from work. Your goals are ensuring that you put an average amount of time into specific projects. So it’s not obvious to me that getting a day off from work should give you a day off from your goals. If you don’t manage to schedule a break 7 days in advance, then Beeminder is doing what you asked it to do–require that you put a minimum amount of effort into your projects on average.

3 Likes

:100:. In the end, if Beeminder can’t let me make the commitment I’m trying to make, I just can’t use it for that, and that’s okay!

1 Like

Right, so the hypothetical perfect way for Beeminder to reflect the reality would be for some sort of automatic integration between the HR system and Beeminder to add a one-day flat spot in the graph every time you accumulate an additional vacation day.

As things stand, you don’t see on your Beeminder graph the extra buffer you actually have, because indeed, as you say, it’s stored only in the HR database. Perhaps it’s unlikely for there to be an automatic integration that syncs the data, but one option (the one which would lead to the most accurate Beeminder graphs) would be to sync it by hand: every time the number of vacation days in the HR database increases, you give yourself an equally-sized flat spot. To be able to do that, you’d need to know a week in advance from when you earn the vacation days (not when you spend them!) But on the assumption that you accumulate these vacation days on a regular schedule, that should be possible.

That said, perhaps that’s too much hassle to do manually. (Perhaps you could write a script that uses the API to schedule these breaks?)

Ultimately, I fully agree with you when you say that it’s fully independent of whether you’ve worked ahead in Beeminder’s eyes—that’s why I’m proposing that you change that! So long as you let Beeminder know about those vacation days you’ve earned, Beeminder can display them as part of the buffer that you (really, truly) have. You have that buffer regardless of whether or not Beeminder knows of it, so I’m proposing that the way to make your Beeminder graph be accurate is to let Beeminder know of it!

FYI, that’s not quite how the “weekends off” checkbox works—it’s not that weekend days vanish when you check that checkbox, but rather all the checkbox does is add each week a flat spot over the next weekend. This gives you the safety buffer to not do anything over that weekend, but those weekend days do still exist.

3 Likes

What an interesting reversal! I like the direction, but I’m not sure I understand how it could work.

If I have 5 vacation days saved up, I’d start by manually adding a 5-day buffer to the goal, right? Then if I take a day off, Beeminder stays in sync. But how does reconciliation work in the opposite direction? If I accidentally use up 1 day of that buffer without taking vacation, is the idea that I must work through a day of vacation to reconcile?

1 Like

My reframing admittedly doesn’t actually solve your problem in and of itself. You still need some way to align your not-working days with your vacation days, i.e. to avoid being lazy on days you don’t count as “vacation” in the HR system.

There are ways to reconcile it. One way would be to say that any day on which you don’t work is ipso facto vacation, even if you didn’t declare it as such up front, and thus you should retroactively tell your boss to count it as vacation in the HR system. (But I admit that’s a bit… extreme.) Or, as you suggest, you could instead keep a mental tally of buffer used without officially being vacation, and then work on official-vacation days to reconcile, but that’s a lot of mental bookkeeping work, and probably not worth it for that reason alone.

I don’t actually recommend you do either of the above. But it does highlight your true goal: to align your not-working days with official-vacation days. That is, to not have days on which you don’t work yet aren’t marked as vacation in the HR system. You don’t mind taking a day off, so long as it’s marked appropriately.

That is to say—you’re not actually trying to track the amount you work per se, but rather the extent to which your work aligns with your “official” schedule. What this in turn suggests to me is pretty much what you mentioned in your first post that @clivemeister suggested: that you log not the amount of work, but the amount relative to expectation. Or a simplified version of that: a goal in which you enter 1 as the datapoint if you did at least the full amount of work expected that day (which is automatically true on vacation days), and 0 otherwise.

That said, I get that you also want to track the number of minutes you work. As you point out that @narthur pointed out, to try doing that in the same goal is something of a slippery slope.

In that case, one possible solution would be to try doing both in separate goals! Have one goal with minutes, and one goal with worked-relative-to-expectation. You’d intentionally maintain a decent buffer on the minutes goal, and edgeskate on the relative-to-expecation goal. This would force you not to slack off on non-vacation days (because otherwise you’d derail on the relative-to-expectation goal), but also allow you to take vacation on short notice (because that wouldn’t derail the relative-to-expectation goal, only eat into your buffer on the minutes goal.) You’d add a day’s worth of buffer to the minutes goal every time you accumulate a vacation day in the HR system, but you’d never need to work through a vacation day to make up for a non-vacation day you slacked off on, because your relative-to-expectation goal is already preventing you from slacking off on non-vacation days.

That’s a bit more complicated than is ideal, but I think something more or less like that could work.

3 Likes

This seems like the nub of it. The issue isn’t about zero-notice days off, as such, it’s about synching a Beeminder weekends-off-type calendar with a work calendar that might change at short notice, for a subset of goals.

For all that there’s a slippery slope in the general case, work usually has commitment-keeping mechanisms (like a boss or clients) that often don’t exist in the worlds of more personal goals.

I’m tempted to propose a tickbox that removes the akrasia horizon for an individual goal so that a break could always start tomorrow.

Most of the time you’ll still schedule national holidays and travel well in advance, but sometimes work is unpredictable. With my ‘no excuses’ hat on, I try to keep my pledges low enough that a day off is just the price I pay for a day off, even if that ‘day off’ is an unexpected day onsite with a client that means other work is deprioritized.

2 Likes

After further consideration, and reading everything that’s been said, I think the best balance between being concise , easy to manage, and effective, would be as follows:

Proj1Name_z
Proj2Name_z
Proj3Name_z

The units are “minutes worked or minutes approved time off”, where each day of time off counts as the same number of minutes that you would normally expect yourself to work on that project, per day. (The _z isn’t necessary, but it’s just suggesting a naming convention that this is a special case goal.)

This is how I would do it. There is absolutely no slippery slope in this definition. The units are precise, and exactly as defined. You do end up sacrificing the tracking of exact minutes per project, but that is not necessarily the purpose of beeminder. It’s not the primary purpose in my mind. I think what you’re really looking for beeminder to do is to keep you on track on the days that you are working, and this will achieve that in the most simple manner.

I think this is part of the beauty and power of beeminder, is that you can define your goals and units any. way. you. want. And you can include extra notes in the longer description field, if and when necessary, to clarify certain situations that you did not foresee up front.

And, of course, nobody is perfect, and if a situation comes up where it doesn’t work out when it really should have, you can still tap into emailing support.

So again, this is just how I think that I would do it.

EDIT: I just thought of one thing I would put in the extended notes. I would say that I’m not allowed to add approved time off until the day I actually start my time off.

EDIT 2. As a matter of convenience, I would also allow myself to enter all of my contiguous time off in one data entry. So if I was given 3 days time off, I can enter one data point that would reflect all three days. Some people may have a philosophical issue with that since “those days haven’t occurred yet”. I personally don’t have that philosophical issue. It’s best to enter data concomitant or after the event, but I also like to keep things as practical and as low friction as possible, and in this case, I just wouldn’t want to be burdened with entering in work type data every day on my days off.

3 Likes

I like this approach. It might also be good to specify when you’re logging time off in the comment, so that you have the option of filtering them out in the future if you’d like to do some data analysis.

3 Likes

I like it too. Especially with the note about not logging until the day of. I can think of it as making the line relatively flat.

2 Likes

@coolhandlouis this seems like a great scheme. Just one note: did you know that you could easily enter data in advance for several days for a goal? (I didn’t until about two weeks ago, and I’ve been beeminding for years!)

  • First way is to click on the small “Advanced Entry” link under the “ADD PROGRESS” buttom in the Enter Data box on the right of the graph (web interface). That takes you to a multiline entry box, where you can enter data in the appropriate format, including for days yet to come! Very useful for example with a Do-Less goal where you can, in advance, cancel out the “pessimistic presumptive entries” which will otherwise show up for those days.
  • Second way is to use the email interface - this is actually the same formal as the Advanced Entry format, and similarly can be done in advance.

So if you had been given two days off by your boss, you could just enter their minutes in advance in this way, and skip happily off to your internet-free vacation location.

4 Likes