Programmable Attention

Programmable attention centers around making high-level decisions that orchestrate how we later spend our attention. It is rife in everyday life, albeit (usually) in a weak way. Examples include:

  1. email inboxes with snoozes
  2. setting a recurring event on the calendar
  3. todos which appear based on location
  4. Getting Things Done “Tickler” Files
  5. habit-enforcing systems (e.g. Beeminder, StickK)
  6. spaced repetition (e.g. Anki, SuperMemo)
  7. ML-trained “smart email inboxes”

Programmable attention is a powerful concept for a few reasons:

  1. There is a lot of inefficiency in how we choose to spend our attention.
  2. It leverages the pareto principle. Powerful programmable attention mechanisms (like spaced repetition) can orchestrate tiny tasks with minimal effort.
  3. It can protentially extend beyond just pure productivity use cases. For instance, Roam Research’s page + block references accelerate writing by resurfacing relevant ideas in a timely manner.

I was first introduced to programmable attention by the enthusiastic community centered around tools for thought (e.g. Andy Matushak [1] and Roam Research). While discourse around the idea is still very much active, I have developed the inklings of a framework with which I think about it. To me, two goals for people thinking about this are:

  1. to develop concepts for thinking about how programmable attention systems can extend beyond productivity (which is where these systems are most prolific, as can be seen from above examples)
  2. to develop general-purpose ideas that abstract over different use-cases

Given that I already gave many examples of programmable attention systems, what makes one better than another? I can think of four factors thus far:

  1. ease
  2. timeliness
  3. granularity
  4. trust

1 - Ideal systems should have a low skill floor (and ideally a high skill ceiling) to use. A good example here is how implementations of spaced repetition have improved over time. Before software-based spaced repetition, there was something called a Leitner Box. Maintaining a Leitner Box requires operational knowledge and quite a bit of elbow grease (i.e. shuffling cards around in a box). It was powerful compared to flashcards, but more tedious to use. Software replaced the physical box with a database and encapsulated the intricacies of the algorithm. This happened to the extent that most spaced repetition software is easier to use than physical flashcards.

2 - Good systems should also be able to increase impact whether it is productivity, learning or something else by accounting for context. The main way this happens is by surfacing an item into attention in a timely manner. Let’s say you have a blog post that you are working on periodically. A timely system should resurface the post while you are working on something relevant also also other factors like whether you want to explore adjacent ideas, how much time/energy you have etc. . This would allow you to bring your existing physical and mental context to bear on a relevant problem with minimal context-switching.

3 - Granularity perhaps not the best term here is about how higher-level decisions are able to orchestrate many smaller tasks. An example of low granularity is email snoozing. Your decision to snooze an email affects a single email once. Conversely, spaced repetition software has high granularity. Your decision to use the software and trust the algorithm allows you to learn a large number of items. The term “programmable attention” is evocative because it captures the idea that automation is essential for high-granularity systems.

4 - Lastly, we want users to trust the system with their attention. Many systems nowadays try to hijack our attention. Programmable attention wants us to explicitly control it. We want to build tools and systems that we can trust with our attention and to resurface things that we don’t want to slip through the cracks.

The best ideas to write about and revisit are those that resonate with you but aren’t fully fleshed out, so my thoughts on this topic are still evolving. If you enjoyed it or would like to discuss, reach out on Twitter (@iantay_). Also, Roam has a page ( showing how their open design challenges relate to programmable attention and it is definitely worth a look.