« Beeminder home

Beeminder Blog

We have a pair of blog posts from 2022 called “Backlog Freshening” and “Backlog Freshening For Humans” that we’re still very pleased with. To recap, say you have a backlog of something — tasks, emails, blog post drafts, bugs, you name it — that it’s not realistic to clear. (If you do need to clear it, see “Control Systems For Backlogs.”) Which is to say, you have a collection of items. And you don’t want the collection to be the place where items go to die. Enter freshening, in which you sort the collection by least-recently-touched, and then you beemind regularly revisiting the collection, stalest item first. Every +1 that Beeminder demands is satisfied by making progress on or improving in some way that stalest item. You can also think of it as doing spaced repetition on your collection.

It turns out we have a lot more to say about this, most of which we’re saving for a future post about Freshenable Collections generally. Today we want to share a particular example we think this works great for: your rolodex.

Oh, sorry non-ancient people, that means your database of contacts. As in friends and family and colleagues. Fellow humans with whom you have relationships.

Being weirdos, Bee and I keep ours in a GitHub repository as a set of gissues (er, GitHub Issues — we call them “gissues”; did we mention we’re weirdos?). You need something that lets you sort or query by least-recently-updated, and gissues are such a thing. So here’s the protocol we use.

Phase 1: Migration

Assuming you don’t already have your address book in a collection that’s sortable by least-recently-touched, you can make the migration part of the Beeminder freshening goal. Here’s how that looked for us:

  1. Export your Google Contacts to a big text file
  2. Create an empty private GitHub repository called “rolodex”
  3. Create a freshening goal on Beeminder (also “rolodex”)
  4. When Beeminder demands its +1, satisfy it by moving a contact from the text file into a newly created gissue for that person

In other words, migrating pre-existing items to gissues counts as freshening.

Note: In the event you someday make a new friend you should certainly make a gissue for them, but that doesn’t count as a +1 on the freshening goal. Freshening is all about the old stuff. Eventually the new friend will become the stalest gissue and you’ll freshen them then.

Phase 2: Steady State

Ok, suppose there’s no one left to migrate. You keep right on going with the same Beeminder goal, just that how you get those +1’s changes. Now you get your +1 by pulling up the stalest gissue and freshening it, i.e., updating it so it’s no longer the least recently updated one.

Things that change the updated-at date on GitHub include editing the description or title, changing tags, adding or editing a comment, and assigning the gissue to someone.

(That last one matters for Bee and me, sharing a rolodex. She can assign me people on my side of the family, for example. Then when sorting by least-recently-touched, we can also filter out gissues assigned to the other person. Also we’re currently do this with individual goals but this is a great use case for group goals.)

Emoji reacts and external references don’t seem to update the timestamp.

That said, and possibly especially because there are two of us beeminding the same list (consistency! accountability!), we like to have some guidelines for what counts.

  • Adding or updating contact info (addresses, phone numbers, etc)
  • Adding any notes about birthdays or children
  • Editing keywords or labels/tags (maybe you want to be able to search up all the lawyers or nurses you know?)
  • Adding notes about your history together
  • And of course: actually pinging the person

Of course, contacting a person IRL doesn’t update the timestamp of the gissue, so either leave a comment with a brief description of how/why you pinged them, or add a list of dates you talked.

What if there’s someone whose entry in your rolodex has reached quiescence/efflorescence and you don’t have it in you to reach out to them? (Hopefully this isn’t because it’s been so long that you’re embarrassed to, but that’s all the more reason to get a rolodex freshening goal up and running!) Whatever the reason, there’s one other option for freshening them, which we call snoozing them. Technically, that means applying a special label that you exclude when you query for the stalest contact in the rolodex. Pragmatically/morally, it means admitting that you’re ok with that person going out of sight and out of mind if they don’t initiate contact themselves. They’re still in the system, still searchable, but you’re taking them out of your freshening rotation. Probably permanently, since Beeminder will never prompt you to ping them again.

Dialing It In

I’m at 316 freshenings and counting, dialed to 0.29 per day. It doesn’t really matter how steep your bright red line is but one way you might want to think of it is that, if you dialed it to 1 per day and you have, say, 350 unsnoozed contacts, that’s almost a year between freshening each contact. If you have 700 contacts, maybe commit to 2/day (or 1.9) if you don’t want to neglect anyone for more than a year. If you’re ok going a few years between freshening any given person, well, you can do the math. (Namely, dial the bright red line to \(\frac{n}{d}\) where \(n\) is how many contacts you have and \(d\) is your preferred staleness cap in days.)

We’ve been evolving this system for three years now and hope others can get value out of it as well, or take inspiration from it. We’ll end with Beeminder superuser Lanthala’s description of her rolodex system, since it’s more normal-person-friendly and generally much simpler than ours:

I keep a spreadsheet called Friends & Contacts, where each person is a row. One of the columns is “last pinged”, and I usually keep the sheet sorted by that column so I can see who has been neglected. It is very low lift and high usefulness, especially for former work colleagues who I’d normally lose touch with. And I have a Beeminder goal to ping a person on my spreadsheet about once every 10 days, which keeps me checking the sheet.

Beeautiful!

Tags: