Minding my goals (ian's corner)

Y’know I’d considered using beeminder to whittle down my watch later but I never actually tried it seriously. This is a good idea! My backlog has gotten to be, uhh, about 1400 videos over the last couple yaers.

1 Like

This one’s a companion to the laundry goal I started this thread with. Every datapoint on the laundry goal automatically ended up on this one, but this one also includes machine washes. I really like how you can immediately spot the inflection point where I got through my entire laundry backlog.

1 Like

CW: technically self-harm

This goal represents a major personal victory. I started it in 2016 to combat a nervous tic involving my lips (perlèche). It’s become a mindless act, a way to cope with stress and, basically, a totally compulsive and unconscious behavour. I derailed once and didn’t keep up with it. In spring of 2019 I thought I’d have the perfect excuse to stop touching my face. But even an (at the time) very scary disease such as COVID-19 was not enough of a deterrent.

I restarted the goal in September 2021. I may have been feeling a little less stressed than usual and I was cautiously restarting my Beeminder goals, keeping to 3 active goals if I recall correctly. In the first 6 weeks I was thinking about this goal every minute of the day. Maybe it doesn’t look like it, but business-as-usual would’ve made me derail instantly. Those little steps in the graph felt like great accomplishments. But still I had some days where I had to add multiple data points.

I played around with the slope, increasing it pretty quickly when I got scared, but later dialled it down again. Getting closer to the bright line, apparently I dialled it up a little, but, somehow, I ended up on #day0 of an almost 4-month streak now. Probably in the second week or so, I added hashtags to the previous days’ data points, but in the third week I added some all the way up to #day100. Those served as markers of my progress and probably helped a little to keep up the habit. At the time I was also doing the Hammertime sequence and posting in the gratitude journal. All things that may have made me more mindful and could have contributed to my success.

Along the way I’ve been dialling the goal down. I really hope this becomes a never-will-I-ever type of goal. So far it seems I have successfully kicked a 20-year old habit and I couldn’t be more pleased!

I almost forgot, but around #day0 I created a companion goal recording every time I even touched my lips. This goal was really necessary when starting out to remove any ambiguity about what was actual lip-picking. It also allowed me to record (using 0 datapoints) whenever I used lip balm or even lip scrub. The latter is something I’d never used before and which I can probably attribute some of my initial success to. When the urge was extremely great to pick at some dry skin, I could get rid of it with the scrub. In general, I think this is a habit that gets easier to kick once you stop doing it and vice-versa.

Now I’m letting pessimistic presumptive datapoints run up my graph up to the bright red line to stay mindful of it. But it’s clear it’s no longer really useful or necessary.

PS: COVID-19 in mind and mostly scared of ending up with a replacement behaviour, I’ve created goals to stop touching other parts of my face, such as my brows, which can get a little dry at times, …


I’ve encountered some compulsive habits-related posts before. Here’s one about nailbiting.

1 Like


This goal was directly inspired by this post by @zzq. It measures any and all time spent involved with any aspect of backing up your data, or as zzq calls it, “interacting with [your] backups”. In my case that even extends to file management (organizing data), since I started this goal woefully underprepared.

I cannot recommend this enough. It’s been a couple of months now and I’m still not backed up well, but I can only imagine with a little horror how much worse it would be if I hadn’t done all this work in the mean time. Even if I were to think I had a foolproof system by now, the work would never stop (maybe dialled down a little).

PS: If I recall correctly, that initial peak was me restoring data off of a drive that didn’t have any backups…

1 Like

I’m minding a backlog of a certain blog. I’m a bit stubborn and wanted to use a doless here, instead of the more sensible domore. Since the blog has a lot of pretty short posts (about 800), I wanted something that was really low-friction.

I scraped all the blog’s URLs and pasted them into an Etherpad instance. I then pointed a URLminder goal at the txt export of that Etherpad. Since the blog URLs don’t contain spaces, each URL is counted as a word. I just go to the end of the document, open the number of posts I need to read for the day in a couple of tabs and delete the lines containing the URLs.

At first I created a feeder goal (a domore URLminder goal) copying data points to a doless custom goal, since you can’t create a URLminder goal as a doless goal using the interface. But after a derailment, support volunteered to move the URLminder info over to the target goal.

I can see myself returning to this pattern. This could also easily be applied to a case where you wanted to write something about each URL, say 50 words. So instead of removing the URLs, you’d write some text under them to reach your goal for the day.


Dang, that is clever. But does it risk creating a new backlog, of browser tabs?

See also our latest blog post on the control systems approach to beeminding backlogs:

One thing I like about the simple do-more control systems approach is that you can keep using it to keep up with new blog posts (in your example) after catching up on the backlog. It’s both a backlog obliterator and preventer.

Understand the concern, the way I wrote that, but it’s not an issue at all. I only delete the URLs after reading them. And I’m tracking open tabs.

I really like the control systems approach and I do use it in a couple of goals (like pocket). Not in my goals tracking browser tabs, since I really want to get to 0 there, so I’m able to retire some browser profiles. If the blog was still more active and had longer-form posts, I’d probably do just that.

1 Like

Ooh, that’s smart – you’re on the hook in two ways there, too.


This is a manual entry doless goal. Of all the goals I posted about so far, this one has the cutest name. It’s minding a backlog of iOS reminders. They’re easy to create, but they exist outside of my regular task management and they tended to accumulate and languish.

Minding these down to 0 or maintaining a certain max level turns them into either some kind of inbox or a holding pen for short-lived tasks. So tasks can be marked as done or deleted when they were finished or they when they were added to my main task tracker.

I’d love to keep this going after I reach 0, but realistically I’d only consider doing that if it were an autodata option.

1 Like

All but one of my tab-related goals have now reached 0 at one point. Some tabs were moved to my pocket queue, which I’ve been minding separately. I still don’t know how to get to the number of unarchived links (on desktop). Searching for “.” seems to get you the total number of articles your list… Anyone knows?

A scary number of tabs came from a single link-aggregator site. I think my activity on that site could have been replaced by a bot clicking on every article containing one of a small number of keywords… Since I’m still interested in most of that content, those tabs were not purged. They were moved to a separate backlog, whose URLs I will be minding like I explained previously. That’s the final jump in all of these following graphs.

Two of these graphs illustrate what I believe to be a bug, where I edited the roads to end them early. I edited them to end immediately (i.e. the day before the current day). In the Graph Editor’s view, the graphs updated, but on the main website, the final graph update was never performed (so they still show infinity instead of fin). In this paragraph, I’ve used road to mean the bright red line and graph (image) to mean its visual representation. As bug reports go, this was a pretty terrible one. Sorry!

Continuing, I’ll be giving a tabdeath goal a try. That means a net reduction of 3 active goals; pretty good!

1 Like

Have you emailed that through to us, with the links to the misbehaving goals? If not, I think probably all that needs doing to fix them is a “rebrain”, and then it might be useful for Danny to take a look at why updating through the visual graph editor didn’t poke the goals to properly refresh. :grin: That’s all probably easiest via email.


I have a small backlog of bugs and subjects to post about, for when I have a forum-posts emergency, or to allow me to prioritise the bugs I find. Since this one’s bitten me multiple times now, I’ve followed your advice and I just reported it by email.

The unreasonable effectiveness of the Gmail Snooze script

This is one of the 3 goals I used to get my feet wet again on Beeminder back in October of 2021. It hasn’t been active all this time (I adjusted the graph for this post). I think the first two restarts were done with the intention of maintaining a level slightly above 0 (maybe 10-15 total mails in the inbox), and, if I remember correctly, I forget to set the right level when restarting. Twice…

February is when I started using Gmail Snooze. That has been such a great combination. The only issue was how effective it was at getting me to deal with less pleasant emails. Which caused me to want to take a break from the goal for a while.

I really can’t say enough nice things about this script. What I liked about the workflow was sending all sent mails directly to your inbox. That means they are easily tagged right after sending and (optionally) snoozed, depending on whether a follow-up might be necessary.

@dreev, is the script open-source? The only thing I’d change is more of a personal issue. I have a lot of tags containing dates and other numbers, so tagging a mail with, say 1 or 2, takes a lot of keypresses (13 and 23, respectively). If I could tag with “s1” and “s2” (like the former expired tags) instead, that would get me close to a minimal amount of keypresses again. Is that something that could be added (or maybe the x-tags could be repurposed)? Also, a while back you were teasing a new inbox system in the beemails… :wink:


Yes! https://github.com/dreeves/gmailsnooze
(Though it’s possible that version has fallen behind what I currently use for myself in Google Apps Script.)

I should mention for others that the built-in snooze feature that Gmail has has come a long way in the meantime and is probably fine for most people. I do still prefer my script though.

Agreed about putting all sent mail back in your inbox so you can decide whether to snooze it for followup. And for others I should mention that that’s a thing anyone can do with just a filter; it’s not part of the fancy scripting. See the “Re-Ping” section of http://dreev.es/snooze. Oh, wait, you have to be logged in to Gmail to even see that. Lemme paste the relevant bit:

Re-Ping just refers to snoozing your own outgoing mail so it comes back to you and reminds you to follow up — re-ping the person — if you haven’t gotten a response.

There’s no separate feature for this, you just want your own sent mail to be easily snoozeable, the same as incoming mail. What you do is create a filter so your sent mail initially stays in your inbox:

  1. Create a filter (available from the “show search options” dropdown on the search box)
  2. Set the From to your own email address, or your username — something that will match all the email addresses you send from
  3. On the next screen, check nothing but “Never send it to Spam”

Experiment ongoing! Here are my notes: https://github.com/beeminder/blog/issues/4


@dreev On the issue of keeping your script up-to-date in GitHub, I’ve recently switched to using Google Clasp to develop my App Scripts projects locally and then deploy using clasp push. That way I can keep GitHub as the Single Source of Truth and easily push my updates back to GAS. Would be happy to help you get that set up at some point if you’re interested.


Brilliant! I had the repo starred already, but it seems I forgot!

1 Like


I have a backlog of exactly 9 months worth of old podcast episodes. There’s no obvious way to isolate the backlog. So I just want to report how many I listen to. Basically, I want to maintain at least the average amount released (about 22 episodes / month).

What I really like about the setup is that I’m planning to base my decisions on the yellow lines. Whenever I’ve crossed 4 yellow lines I’m going to ratchet back to 7 days. 9 of those ratchets and I should’ve cleared most of the backlog [0].

@dreev I got distracted by the magic behaviour of those yellow lines. I’ve always thought they demarcate 7 day’s worth of buffer. But, depending on the zoom level (?), goal start date, … they represent a single day instead. Neither of these situations are documented on this help page, so I’m not really sure what the expected behaviour is.

Compare these two screenshots. They differ in graph start date by 1 day.

I had it looking how I wanted, but after my first ratchet today, the yellow lines are back on a daily resolution. Is anyone else tripped up by this?

1 Like

Good call on the Anti-Magic violation there! Our thinking (probably before formulating the Anti-Magic Principle!) was that beyond the orange, blue, and green lines, the yellow lines are really just to shade the good side of the Bright Red Line, so we have heuristics based on what seems to look good. If we wanted to be more dogmatic about anti-magic… I’m not actually sure how we’d satisfy the aesthetic desiderata. There’s probably some way though!

I have to think harder but I’m tentatively standing by the design choice here. Again, good eye spotting the issue!

Oh, and for your use case, does it work to just do everything in terms of the raw number of safe days?

Yes, I’m really watching the exact number of safe days (37+), but I liked the YBR-nostalgia of watching/being in lanes.

Indeed, my guess was that this was an aesthetic issue. It’s clear to see how the degenerate case, where only part of a single yellow line, or none at all could be confusing. I’d say shading could be accomplished by actually shading in a light yellow, with darker lines overlaid.

In practice, one could say that currently every goal’s good side is marked by a different “shade” of yellow. I’m talking about the emergent shade (caused by the density of yellow lines) that’s especially apparent when looking at the graphs in thumbnail form. Maybe some people are depending on that shade to get some kind of intuition about the intensity/slope of the goal (flat forever goals tend to be really yellow) or maybe the gallery would look bland with only a single shade of yellow? But maybe it’s something to consider experimenting with? Maybe a unified yellow shade results in a cleaner and less noisy design feel?

1 Like