December 5, 2020
6 years ago, I bought a book titled You can have an amazing memory, by Dominic O’Brien. I remember clearly my excitement before reading it. I was going to learn a secret that would change my life! The technique in question is called the mind palace, or memory palace, or method of loci. It indeed proved to be a powerful tool to memorize long sequences of easy to visualize (or easy to convert into such) items, such as decks of playing cards or sequences of numbers. I focused on the well-known speed cards challenge of memory competitions; after a few weeks, I could memorize a deck of 52 cards in just over 1 minute.
I then started science-intensive studies, and naturally tried to apply my new superpower there. It failed. I discovered that placing vivid images into some mind palace was not the secret to developing a deep understanding of scientific topics, far from it. Besides, the number of loci required grew too fast. I had to find something else.
(I still highly recommend the mind palace technique if you like to show off, or if you want to memorize long sequences of easy items.)
I won’t describe all the techniques I’ve tried over the years, but I’d like to emphasize that this kind of pursuit is well suited to self-experimentation, and I’m happy to have tried many things.
I can think of 2 main ways in which memory is useful:
I haven’t found anything as good as spaced repetition software for long-term memory. I’ve been using Anki in particular for about 4 years, and fell behind only 2 days over the last 3 years. I have about 6,700 cards in my (unique) deck, averaging about 40 card reviews a day in about 15 minutes.
I often delete cards while reviewing. This is perfectly normal: perhaps the card was badly formulated (I also often reformulate, split or merge cards), or it was a mistake to include it in Anki (maybe it’s too hard), or it wasn’t a mistake at the time, but my model of my future self has changed in the interval. Indeed, one factor that may make spaced repetition easier for some people is a clear mental model of who they want to become in the future. If you don’t know what you’ll want to have memorized in a few years, what are you supposed to put into Anki now?
But deleting cards seems a bit extreme. After all, I’ve invested time in formulating all the questions and answers. Perhaps there’s a small probability I will need them again? Memory as a cache to the rescue.
Anki allows cards to be suspended, which means they’re still in your collection but you will never see them during reviews, except if you un-suspend them. I’ve become a fan of the feature after realizing that suspended cards constitute another level of cache. They take longer to access than “really there in the brain” cards, but their storage is incredibly cheap compared to the brain (no reviewing time, easy to search for if you’ve constructed them with good keywords). And they can quickly be moved back to the brain’s long-term memory (un-suspended) if I change my mind again.
About 9% of my 6,700 cards are suspended. I’ve even been adding some cards and immediately suspending them, thinking: “this is currently too costly to really memorize, but it’s worth it to have it here, easily searchable. And maybe in the future I’ll want to actually memorize this”. A few examples.
To better understand this running analogy to caches, let’s introduce the computer’s memory hierarchy:
This pyramid is foundational in computer science. Each level of memory acts like a cache to the level below: the registers act like a cache to the processor’s caches (themselves divided in two levels), which act like a cache to the RAM, etc. Without this pyramid of caches, computers would be either prohibitively expensive, prohibitively slow or prohibitively feature-less.
Personal memory systems should be designed to emulate this success story:
At the top, the working memory is our smallest and fastest cache, allowing us to think and compute. Unfortunately, it doesn’t seem to be possible to increase the size or speed of this cache in healthy individuals. At the bottom, we have everything that’s been stored by human kind and that we can access: the Internet, books, etc.
A personal memory system optimizes the hierarchy of caches between them. The fastest cache will usually be the brain’s long-term memory, but not always. For example, suppose I wanted to embed a long quote in an essay:
A longer quote
Even if I had a perfect memory and memorizing the quote didn’t cost me anything, I would still need to type it when I want to use it. It may be faster to have a file containing quotes that I can access quickly, find the quote quickly and copy-paste it quickly. There are many real-life examples of this. One goal of personal memory systems is indeed to make the other caches as fast as possible, to avoid spending time and energy memorizing things that could be retrieved as fast or faster another way.
There’s one major difference between the memory hierarchies of humans compared to computers: for humans, writing to caches actually takes time. This must be optimized as well. In Spaced Repetition for Efficient Learning, Gwern mentions a useful heuristic, called by others the “5 minute rule”: a spaced repetition card’s formulation and reviewing over a lifetime will take roughly 5 minutes on average. Therefore, a piece of information is worth formulating into Anki if knowing it will result in more than 5 minutes of time gained. A few thoughts on this rule:
So what do these intermediate caches contain? First, personal notes. Not ground-breaking, but still an area where major optimizations can be performed for making writes and reads faster.
I personally use org-roam, a Roam Research alternative built on top of emacs’s org mode. The system is based on a set of unordered plain text files corresponding to notes on pretty much anything, forming a graph made by links and backlinks. Two things matter a lot for any such system:
I look forward to a few things:
Another intermediate cache is the information that’s here on your computer, without you explicitly putting it there. Again, the tools matter. Autocomplete as an interface by Ben Kuhn develops the importance of autocompletion. Autocompletion and suggestions are indeed great ways to make cache reads faster.
The line between this cache and the Internet one is blurry: tldr, which uses the Internet, is often faster to use than the local man pages…
A general theme, however, is that a lot of work has already been done for us. Without any explicit personal memory system, we already benefit from the existence of the Internet, the ever increasing performance of hardware, personal storage, autocompletion, styling of visited links in browsers, search engines…
Did I mention search engines? Searching for information is also a skill that can be developed to a virtuoso level (not only through search engines). I actually think in terms of personal information processing systems, rather than personal memory systems. But I feared the title would have been too abstract, and I don’t have as much to say about the searching for information and interacting with it part.
This article has focused a lot on memory as a cache, and very little on memory as really there in the brain no need to look anything up, despite the latter being probably more important, simply because I had more to say on the former. But there’s a reason I’m still making a lot of Anki cards, despite having worked on perfecting my other caches.
I realize that this post seems well suited to a video version. Maybe later.
I’d love to know about your own personal memory system. Please also let me know if there are any mistakes above, or if you can think of any improvements to make to what I describe above.
My Anki cards mostly fall into one of these categories:
20 rules of formulating knowledge by Piotr Wozniak is an absolute must-read for beginners. I agree with every single of the 20 rules.
Spaced Repetition for Efficient Learning by Gwern starts with a literature review on spaced repetition, then describes his personal experience with Mnemosyne, featuring the “5 minute rule”, thoughts on the long-term workload of spaced repetition, and musings on “dynamic cards” that would change randomly at every review, to allow learning from examples while avoiding memorizing the actual example (noise) instead of the underlying concept or skill.
Augmenting Long-term Memory by Michael Nielsen is an interesting article for experienced Anki users, as well as a good introduction to Anki for complete beginners. Michael Nielsen notably hints that Anki, although a simple program, can be thought of as a virtuoso skill to be developed. He lists useful ways in which he’s using it, most importantly to understand complex material in depth, and gives some good Anki advice. He argues that memory is a fundamental part of problem solving and creativity.
Using spaced repetition systems to see through a piece of mathematics, also by Michael Nielsen, dives deeper into the idea that understanding is not all black or white, but rather something that can always be further deepened, and describes in detail how he uses Anki to support his understanding process, which involves attacking an idea from different angles and different levels of abstraction.
Memorizing a programming language using spaced repetition software by Derek Sivers is a nice short overview of how Anki can be used to help with programming. The first sentence of the essay might be what some need to read: “I’ve been doing this for a year, and it’s the most helpful learning technique I’ve found in 14 years of computer programming.” Most of the value comes after the first year, though. I actually expect the overwhelming majority of Anki’s value to me to lie in the future. This makes his statement even more striking.
Spaced repetition by Andrew McKenzie is another interesting personal account of using spaced repetition. I like his “overall spaced repetition experience”: “I wanted to start doing SR flashcards for several years before I actually started — approximately speaking, since May 2008 […] For the next 3 years after that I had a fairly constant low level of guilt/anxiety about how I should be doing SR flashcards. This anxiety spiked whenever I forgot something I had previously learned. Of course, after a year or so, I thought it was too late and that I was a lost cause with respect to spaced repetition.”
The Janki method series by Jack Kinsella (Janki Method — Using SRS to Improve Programming and Janki method refined) focus on programming and contain great advice, such as only creating an Anki card on code after trying the code snippet in question, ankifying mistake post-mortems, ankifying big-picture insights from past projects, some criteria to determine if a piece of programming knowledge is suited to ankification, an unusual use of Anki cards on best practice… He also doesn’t hesitate to suspend cards once he suspects they might never be relevant again.
Instilling Novel Thought Patterns and Making Your Long-Term Memory Accountable with Anki by Alexey Guzey details an interesting use case of Anki to repeat thought patterns to yourself every day (using a special Anki deck with a maximum interval of 1 day). I’ve been experimenting with this as well for 2 years now, and have found it reasonably, but not exceptionally, useful. Unfortunately, simply answering the card correctly every day (in my case, every 3 days and later every 10 days) doesn’t ensure that the habit is effectively ingrained. It’s too easy for reviews to become mindless. I’m also afraid of moral licensing: most of these cards are about how I want to be a good person, and answering them correctly might give me the false impression I’ve already succeeded in this respect.