Lately I’ve found it useful to think of my memory in the same way. I’ve got working memory (7±2 items?), consisting of things that I’m thinking about in this very moment. I’ve got short term memory and long term memory. And if I can’t find something after trying to think of it for a while, I’ll look it up (frequently on Google). Cache miss for the lose.
Short term memory is working memory. “Short-term memory” is a distinction no longer used by cognitive psychologists.
Really, you have highly activated long-term memory (working memory), less activated memory (things you’ve recently thought about), and even less activated memory. Level of activation, and graph distance from activated nodes, is what determines probability and speed of recall.
This is basic cognitive psychology; I don’t know of any good textbooks on the subject because the classes I took in this never used textbooks, but with some scholarship (authors I recommend are Baddley & Hitch, Attkinson & Schiffrin, and later Engle) you should know this to be true.
Notice that this is true at the micro and macro levels of processing. You can use an API in a day and be familiar with it while still losing track of things at the end of the day. You can use an API for a month and be reasonably fluent in it a month later.
nVALT looks like an incredibly valuable tool; I use a simple wiki for this but feel like that should be further out in my cache hierarchy, storing more organized and structured content rather than quick notes. Thanks for pointing it out.
However, human memory is functionally infinite: the process is bound by encoding time rather than any notion of “space”. As such, you should definitely invest in creating a set of Anki decks. Anything you want to quickly remember forever should be in an Anki deck. nVALT and related systems should only store relationships, things you can’t easily fit on Anki decks and want to be able to compute over.
You can make things even easier to remember by making them more proximal to things you’ve overlearned and will never forget; for example, learn functional programming and express everything in terms of functional programming. If you want to learn a new API or framework, phrase it in terms of functional programming. This is just an example, but given thought you can extend this practice.
As such, you should definitely invest in creating a set of Anki decks. Anything you want to quickly remember forever should be in an Anki deck.
I’ve found that memorizing info in Anki takes significantly longer than writing it in my digital notebook. In his Anki guide, gwern writes:
if, over your lifetime, you will spend more than 5 minutes looking something up or will lose more than 5 minutes as a result of not knowing something, then it’s worthwhile to memorize it with spaced repetition. 5 minutes is the line that divides trivia from useful data.
It takes me on the order of seconds to copy-paste info in to my digital notebook; we’re talking a 10-100x difference in time investment here. And digital notebook lookups are pretty fast; it takes maybe 10-15 keystrokes to look up most info that I’ve recorded. So I think from a caching perspective maybe it makes sense to put a broad range of info in a digital notebook and for things you want to be able to look up extremely quickly, perhaps use Anki (although you’ll likely find that if you’re using it that often you’ll come to memorize it anyway. Another memory management trick I’ve come across: before looking info up, try to recall it first. Trying to recall things is substantially better for memorizing them than just re-reading info. Using this method you’ll automatically find yourself memorizing info you use often.)
I think Anki is plausibly a good fit for info that’s useful to know in situations where you aren’t already being primed to look it up. For example, if I want to remember to never feel sorry for myself, there aren’t really situations in my life where I might want to look up a page in my notebook with the answer to the question “do I want to feel sorry for myself?” But a spaced repetion cloze deletion card like “[...] feel sorry for yourself” has the potential to program that attitude in to me.
As a first step, I wouldn’t put that much stock into Gwern’s guides. I’ve found that Gwern has his own way of doing things but it rarely seems to generalize at least in my experience. Self-experimentation is good but no matter what you can’t get much out of an N=1 sample unless you are that particular person.
I find that going to any sort of persistent store incredibly harmful for my flow state while programming, so I try to get as much as possible into Anki. I think you’ll find that if you sum the time spent attempting recall and the 3-5 seconds per lookup you’ll also get far more than five minutes for any reasonably well-used concept.
I also find that the concepts in my Anki decks tend to be the ones that come up when I’m problem solving in general or trying to be creative. In a psychology (not neuroscience—none of this is neuroscience, much like programming is unrelated to byte patterns except as an implementation detail) sense, Anki is just generally raising the activation level of those concepts, and so when you try to think of things, you will think in terms of those concepts. That’s why the self-programming cards thing works. But also, it means that when you think about anything, you think in terms related to your Anki concepts.
The OP of the second post you linked seems like they didn’t use a lot of Anki functionality. Anki’s most popular plugin (maybe second most since I think kanji is still implemented as a plugin) is image occlusion, which seems like it would perfectly mesh with flash cards. However, I still use spatial memory with Anki just by associating Anki values with directions. It’s not hard to do.
Overall, I think it’s something you should invest in. No matter what you say about its value, it is a reliable way to move things from RAM (let’s say) into L2 cache. This is something you should have familiarity with.
You can also check my comment history for a small OCaml utility, Space, that automates some aspects of making Anki cards.
Short term memory is working memory. “Short-term memory” is a distinction no longer used by cognitive psychologists.
Really, you have highly activated long-term memory (working memory), less activated memory (things you’ve recently thought about), and even less activated memory. Level of activation, and graph distance from activated nodes, is what determines probability and speed of recall.
This is basic cognitive psychology; I don’t know of any good textbooks on the subject because the classes I took in this never used textbooks, but with some scholarship (authors I recommend are Baddley & Hitch, Attkinson & Schiffrin, and later Engle) you should know this to be true.
Notice that this is true at the micro and macro levels of processing. You can use an API in a day and be familiar with it while still losing track of things at the end of the day. You can use an API for a month and be reasonably fluent in it a month later.
nVALT looks like an incredibly valuable tool; I use a simple wiki for this but feel like that should be further out in my cache hierarchy, storing more organized and structured content rather than quick notes. Thanks for pointing it out.
However, human memory is functionally infinite: the process is bound by encoding time rather than any notion of “space”. As such, you should definitely invest in creating a set of Anki decks. Anything you want to quickly remember forever should be in an Anki deck. nVALT and related systems should only store relationships, things you can’t easily fit on Anki decks and want to be able to compute over.
You can make things even easier to remember by making them more proximal to things you’ve overlearned and will never forget; for example, learn functional programming and express everything in terms of functional programming. If you want to learn a new API or framework, phrase it in terms of functional programming. This is just an example, but given thought you can extend this practice.
Thanks for the neuroscience info!
I’ve found that memorizing info in Anki takes significantly longer than writing it in my digital notebook. In his Anki guide, gwern writes:
It takes me on the order of seconds to copy-paste info in to my digital notebook; we’re talking a 10-100x difference in time investment here. And digital notebook lookups are pretty fast; it takes maybe 10-15 keystrokes to look up most info that I’ve recorded. So I think from a caching perspective maybe it makes sense to put a broad range of info in a digital notebook and for things you want to be able to look up extremely quickly, perhaps use Anki (although you’ll likely find that if you’re using it that often you’ll come to memorize it anyway. Another memory management trick I’ve come across: before looking info up, try to recall it first. Trying to recall things is substantially better for memorizing them than just re-reading info. Using this method you’ll automatically find yourself memorizing info you use often.)
I think Anki is plausibly a good fit for info that’s useful to know in situations where you aren’t already being primed to look it up. For example, if I want to remember to never feel sorry for myself, there aren’t really situations in my life where I might want to look up a page in my notebook with the answer to the question “do I want to feel sorry for myself?” But a spaced repetion cloze deletion card like “[...] feel sorry for yourself” has the potential to program that attitude in to me.
See also: http://lesswrong.com/lw/juq/a_vote_against_spaced_repetition/
As a first step, I wouldn’t put that much stock into Gwern’s guides. I’ve found that Gwern has his own way of doing things but it rarely seems to generalize at least in my experience. Self-experimentation is good but no matter what you can’t get much out of an N=1 sample unless you are that particular person.
I find that going to any sort of persistent store incredibly harmful for my flow state while programming, so I try to get as much as possible into Anki. I think you’ll find that if you sum the time spent attempting recall and the 3-5 seconds per lookup you’ll also get far more than five minutes for any reasonably well-used concept.
I also find that the concepts in my Anki decks tend to be the ones that come up when I’m problem solving in general or trying to be creative. In a psychology (not neuroscience—none of this is neuroscience, much like programming is unrelated to byte patterns except as an implementation detail) sense, Anki is just generally raising the activation level of those concepts, and so when you try to think of things, you will think in terms of those concepts. That’s why the self-programming cards thing works. But also, it means that when you think about anything, you think in terms related to your Anki concepts.
The OP of the second post you linked seems like they didn’t use a lot of Anki functionality. Anki’s most popular plugin (maybe second most since I think kanji is still implemented as a plugin) is image occlusion, which seems like it would perfectly mesh with flash cards. However, I still use spatial memory with Anki just by associating Anki values with directions. It’s not hard to do.
Overall, I think it’s something you should invest in. No matter what you say about its value, it is a reliable way to move things from RAM (let’s say) into L2 cache. This is something you should have familiarity with.
You can also check my comment history for a small OCaml utility, Space, that automates some aspects of making Anki cards.