Bitminding

I had a thought for using a bitfield to combine many goals into one. For instance, suppose there are 9 different medications, supplements, or vitamins that you take every day, like:

  1. Vitamin B
  2. Vitamin E1
  3. Vitamin E2
  4. Vitamin M
  5. Vitamin I
  6. Vitamin N
  7. Vitamin D
  8. Vitamin E3
  9. Vitamin R

You can assign each one a power of 2, like:

  1. Vitamin B … 1
  2. Vitamin E1 … 2
  3. Vitamin E2 … 4
  4. Vitamin M … 8
  5. Vitamin I … 16
  6. Vitamin N … 32
  7. Vitamin D … 64
  8. Vitamin E3 … 128
  9. Vitamin R … 256

Then you can set a daily goal of 511 and you can tell easily which ones you’ve taken and which ones you haven’t without needing 9 different goals.

This is similar to the setup some people have where they need a certain number of points and different tasks give them different numbers of points.

If you take more than one of some of the pills, you can just use a higher base - it might be easier to read if you use decimal anyway:

  1. Vitamin B … 1
  2. Vitamin U … 10
  3. Vitamin Z1 … 100
  4. VItamin Z2 … 1000

So if you need 4 Z2s, 3 Z1s, 1 U, and 5 Bs, you can set a daily goal of 4315 and just read your current total off of the number.

Clever.

This might be optimising for a failure case. If your end goal is
that you always do all of them, why not just sum up how many you did?

Well, applying that reasoning, why doesn’t everyone just have one beeminder goal called “everything” that just checks if you do everything you’re supposed to every day?

At least for me, I’m constantly changing which supplements and what amounts I take, and I think it can be useful to compare and correlate with other things. For instance maybe Vitamin W helps you work out, Vitamin Q helps you quit smoking, but Vitamin S makes it hard to sleep. And maybe too little or too much Vitamin F makes it hard to focus, but just the right amount is correlated with high productivity. Just summing it up wouldn’t allow you to check that.

I think people actually do have a beeminder goal that checks if they
have “done everything”. Both myself and Nick Winter did, for a long
time.

Please don’t take my comment as personal criticism. It wasn’t intended that way.

If you’re looking for correlations between things, then you definitely
want to be able to tell which days you did which things.

1 Like

Oh I didn’t take it that way at all! Sorry if my comment came off as if I did - I intended it as a reductio ad absurdum of the idea that keeping track of different things separately is optimizing for a failure case.

For me, having ONLY a “everything” goal would just be too coarse-grained and frustrating and make record keeping a pain. Plus I’m pretty sure it would always be “no.” :wink:

1 Like

I love nerding out about creative ways to abuse Beeminder! And I often endorse it. But this sounds all wrong to me. What you really want is multidimensional datapoints and, yes, it’s possible to encode arbitrary information in an integer (like whole mathematical theorems!) but that doesn’t make it a good idea! Maybe if there was a natural orders-of-magnitude hierarchy where it would make sense for some things to get 10x, 100x, etc as many points as others.

I think the better way to shoehorn Beeminder into this use case is to put JSON or something parseable in the datapoint comments.

I always cite the QS First principle. What fundamentally interesting thing is this Beeminder goal generating a graph of?

What happens if you forget to take your Vitamin Z1 one day? Then from that point on your numbers are all screwed up and you can no longer tell which vitamins you’ve taken and which you haven’t just by looking at the required points for today.

I don’t understand this. Why would that screw it up any more than partially completing any other goal?

Because normally (if you have done the required amount every day) it would tell you something like +4315 points needed. If you take your vitamin U then you put in 10 and now it says +4305 points needed, so you can tell that you still have to take B, Z1, and Z2. And so on. But if you end the day with +100 still needed, then tomorrow it is going to say +4415 needed. If you are OK with taking 4 vitamin Z1’s I guess this is not so bad. But it gets particularly bad when you end up with carries. For example if you normally need to take 8 vitamin Z1 (800 points) and you forget one day, the next day it will say 4815 + 800 = 5615, which makes no sense. One vitamin Z2 is not the same as ten vitamin Z1.

1 Like

Why would it do that? Wouldn’t you derail and then go back to 4315?

Oh, I see, I didn’t realize you intended to have the goal always in the red. If you want to do that then it works. But it seems there’s no sensible way to give yourself more slack without potentially running into problems like I described.

I was assuming these are things you have to do every day. When there’s something I have to do every day, giving myself slack defeats the whole point.

I’m not going to do anything unless I absolutely have to, so beeminder doesn’t work for me unless there’s no slack.

How does it work for you - do you have daily things that you give yourself slack for?

Yes, I do. For example, here’s my flossing goal which is set to a rate of 6.5/week. I want to floss “every day”, but it also doesn’t really matter if I miss a day here and there (one day every two weeks). For me it would feel demoralizing/overly harsh to have it set to literally 7/week. This way I am doing the goal regularly but I also know there is a bit of grace if I ever have a one-off crazy day or completely forget or whatever.

Obviously this depends on the goal; there are some daily goals that you literally need to do every day or there will be bigger real consequences (e.g. something like taking a medication that affects your mood or physical well-being), so it would make sense to reflect that in your Beeminder goal.

2 Likes

So what actually happens when you do that? For me that wouldn’t give me any grace because I’d just not brush my teeth on the fortnightly non-beemergency day, using up the grace period as soon as it came up, so it wouldn’t get saved for a crazy day.

Not everything has to be about the graph, though - beeminder has many possible uses and can be used to record data or discourage skipping daily requirements even when the graph doesn’t represent anything. In this case recording 1234 is a substitute for recording the unsupported multidimensional datapoint (1, 2, 3, 4).

It all depends on how akratic you are, in what ways, about what things, and what is motivating to you. For some goals I do end up skating the edge like that. For my flossing goal, for me it is motivating just to have the graph and to put in a data point every time I do it. So the goal still motivates me to do it even if it isn’t an emergency day. I also have a sort of “meta-goal” of trying to get all my goals green (it rarely happens but I enjoy trying). So when I see it is blue I am already motivated to do it.

1 Like

In my case, that would be impossible, as I have daily binary goals. Those can’t ever be green. You don’t have any like that? Wait, how do you get the flossing goal green?

If Brent’s road is dialed to 6.5 flossings per week then, by flossing daily, he gets .5 more days of safety buffer every week. So after like a month and half he’ll have accumulated 3 safe days which should have him in the green! Btw, highly recommended for everyone: Beeminding All The Things and The Fifty Goals of Brent Yorgey.