Spaced repetition can allow for infinite recall (2022)
207 comments
·February 2, 2025gwern
adham-omran
Wozniak is incredible, it saddens me that SuperMemo will probably drift into obscurity due to being closed source and the chances of seeing its source code drift away day by day, it took a few years to get anything beyond IE support after that died.
I wish to see a FOSS incremental reading application in the very least, such an underrated concept.
ehnto
There is some progress in open source implementations. Anki originally used a SuperMemo-2 implementation, it now uses the improved FSRS algorithm. There is also an incremental reading addon.
It's a fairly opinionated space, which is surprising since there is good data. But regardless, SuperMemo, FSRS, both work, you will make progress with either. People can just pick either and get started.
https://github.com/open-spaced-repetition/free-spaced-repeti...
turbojet1321
> I wish to see a FOSS incremental reading application in the very least, such an underrated concept.
There's an Anki plugin[0] though I know almost nothing about Anki or incremental reading, so I have no idea who good it is.
david_allison
> I wish to see a FOSS incremental reading application in the very least, such an underrated concept.
Be the change you wish to see in the world
triyambakam
Wow, never heard of SuperMemo and this Wozniak. What an interesting and awesome rabbit hole
david_allison
The site's a great rabbit hole to go down for a few days. Woz is the father of digital spaced repetition.
Be aware that it's not peer reviewed, and some of the findings take a lot of experimentation if you want to dive deep and reproduce them.
My understanding is that his thoughts on sleep are pretty controversial within the sleep optimization community.
hinkley
I used to dabble in the sleep space since my circadian rhythm is shot anyway.
But the self reporting aspects of the “data” always made me suspicious. People in certain phases of sleep dep, hypoxia, or a number of other debilitating events don’t know they’re experiencing symptoms until someone else tells them they are. That’s why you’re trained to look for signs in others.
So I am sorry but I don’t trust you if you tell me you feel great on four hours of sleep a day. Let’s do a task or a test and see if you can brain or you’re just euphoric.
epsilon-delta
I still remember vividly the day I first heard of SuperMemo and Wozniak, I spent the next ~6 hours reading everything about him and his software.
Interesting fact, SuperMemo is written in Pascal.
iyn
Yeah, I've been in the same (amazing) rabbit hole, can recommend.
Are there any public sources about SM being written in Pascal? TIL
itronitron
As a colleague of mine used to phrase it, "yeah, I could learn that new thing but then I'd have to give up an episode of Gilligan's Island" ...
road_to_freedom
But this estimate is for "free learning"?
orzig
I have been wondering about this in the context of being ready for work in the age of LLM‘s. What nobody can deny is that they memorize information at a superhuman level, so it might reduce the value of having done that myself. On the other hand, “couldn’t you just google that“has been an erroneous retort to the value of space repetition for decades, during which I’ve gotten a lot of value out of doing. has been a erroneous retort to the value of space repetition for decades, during which I’ve gotten a lot of value out of doing it.
veqq
In the same way that notation is a tool of thought [1] actually knowing facts paves routes[2] of possibility and impossibility (instead of pausing everything to research or drowning in too many paths).
It's akin to seeing 37*55 and knowing it won't be a 20 digit number, greatly reducing your search space. Imagine feeding someone without knowing what they like (how do you choose something?) vs. "allergic to dairy"?
[1] https://www.jsoftware.com/papers/tot.htm [2] https://alexalejandre.com/programming/forge-deeper-thought/
hombre_fatal
It seems pretty easy to illuminate this question once you consider concrete examples.
For example, neither google nor an LLM replaces the utility of building your own vocabulary so that you can express yourself in a foreign language when you're in convo with someone.
sunnybeetroot
If the goal is for you to be understood in a foreign language, this will become possible in the near future with real time translation with something as simple as an AirPod. https://m.youtube.com/watch?v=WzUnEfiIqP4
randomname11
Sure but being understood and expressing yourself are not the same.
hiAndrewQuinn
A software-based spaced repetition system probably could have made someone appear borderline superhuman in the era before Google. Google cleared a lot of this low-hanging fruit, and then it became "merely" the best way to cram facts into your noggin so you can become an expert at whatever you want, which is still extremely valuable. Your doctor probably used SRS to get through medical school, and now look at how much money they're making. For most professions, nothing -> Google was probably a much bigger jump than Google -> LLMs, so I expect that to still largely be the case.
TL;DR: SRS is, perhaps counterintuitively, most useful for those of us seeking true mastery over something.
cratermoon
> it became "merely" the best way to cram facts into your noggin so you can become an expert at whatever you want
Counterpoint: a noggin full of facts does not an expert make. Makes a good cocktail party trick, or Jeopardy champion. Expert in a subject? Definitely not.
hiAndrewQuinn
Necessary, but not sufficient. Even the greatest genius can't operate without any raw material in there.
TwoNineFive
> during which I’ve gotten a lot of value out of doing. has been a erroneous retort to the value of space repetition for decades, during which I’ve gotten a lot of value out of doing it.
I imagine spaced repetition is not actually a cause of repeating yourself. That's just caused by being too lazy to proofread before you post.
yapyap
LLMs memorize information at a superhuman level the same way an 8 tb harddisk does.
Silly.
iwsk
Actually it's way easier to search for the information in an LLM compared to an 8 tb harddisk.
The search is vague, and the result is nondeterministic, but in a lot of cases it's still the better method.
https://fchollet.substack.com/i/137628402/llms-as-program-da... I like the way this article puts it. "LLM is a continuous, interpolative kind of database"
cratermoon
> the result is nondeterministic
That funny way to spell "hallucinated"
null
szundi
What you remember becomes part of your thinking and reasoning. So no, why would you google something if it doesn’t come to mind as something relevant.
lm28469
> What you remember becomes part of your thinking and reasoning
I find it also true for books, you unconsciously internalize things by reading the full book VS reading a summary. I sometimes reread books I read 10+ years ago and I often have these "ah so that's where I got this idea from". Most of the time it isn't even about the main point of the book, it can be a sentence or a dialogue that left an imprint on your psyche
I'd hate to be a simple proxy between google/llms and the real world
bluGill
You can't know it all so choose what is important to know and what you look up.
dgfitz
I would even go as far as to say, you don’t know something, so you look it up, and now you know the thing. Onus to remember notwithstanding, I personally feel like when I look something up I didn’t know, it tends to stick.
Except for the regex syntax, and ffmpeg pipelines, I won’t ever dedicate brain-space for those.
So I suppose I contradict myself. Huh. Nuts.
implmntatio
it doesn't have to become part of your thinking and reasoning, even in context, even though it does carry some actual weight. because it can be (over)shadowed. something that some people currently learn to code into LLMs, if I understood layering and quantization more or less superficially correct.
so, you might want to google it, because some part in the back of your head itches to remember something that is actually relevant and located on the rim (of the knowledge graph) of something that you do remember.
fucked up indexing. an 8 hour rabbit hole and that one of 43 links you didn't open in a new tab.
L_i_m_n
FSRS is a really clever iteration on Anki's SM2 algorithm. I've been playing around with various spaced repetition implementations lately - there's a great collection of open source libraries at github.com/open-spaced-repetition. I ended up using their typescript bindings for a vocabulary builder I'm working on (deft.so) and it's been surprisingly straightforward to implement.
jamager
I found FSRS is not great for languages because it optimized for the wrong thing, ie. how likely you will recall a word after X days without encountering that word.
There are 2 big problems:
1. If you are studying seriously, you will encounter many words outside your SRS practice, so the FSRS prediction fails flat.
2. More importantly, language learning is not about recalling words.
The algorithm I use for my app has a different set of objectives, it's <30 lines of straightforward code, and it works better (I tested it for months to be sure about it)
I'll open source it soon
runarberg
I used the same binding for a kanji learning app (https://shodoku.app).
I had some problems with their documentation though. Following their examples was pretty straightforward, but I always had trouble e.g. what is the difference between State.Learning and State.Relearning, or what does fuzzy mean in FSRS parameters, or reps on a Card. You have to either read the algorithm explainer or the Anki source code to understand that.
joshdavham
> I had some problems with their documentation though.
I agree that our documentation is pretty bad at the moment haha. But I'm hoping we'll start cleaning things up more this year. I'd also like to potentially move away from using github's wiki system...
david_allison
On the Anki side: if you document it, I'll answer questions.
runarberg
Thanks for your work. My issues were exclusively stuff like this page here: https://open-spaced-repetition.github.io/ts-fsrs/interfaces/...
It is great to have the docs well organized like this, what is missing is just a short explanation of what all those mean. The information is available, e.g. in the README or in the source code. So honestly it is just a minor annoyance, rather than a major issue. I was able to use ts-fsrs just fine actually.
joshdavham
hey David :D
wahnfrieden
Can’t read Anki source unless your work is GPL. Could you share the insights yourself?
runarberg
My work is MIT, as is ts-fsrs. I said anki source code, but I was being hyperbolic. To understand the different exports of ts-fsrs I had to browse around in different repos at https://github.com/open-spaced-repetition (particularly rs-fsrs; which I think is used in Anki proper) as well as read the algorithm https://github.com/open-spaced-repetition/fsrs4anki/wiki/The... and infer by names being used.
I complain here, but this is open source and if I was slightly more ambitious I would submit PR with the missing docs (or at least an issue).
PS. my work is here https://github.com/runarberg/shodoku in case you are interested, but the source code bears the mark of being a weekend hobby project, so read at own risk ;)
joshdavham
Not all of Anki's source code is GPL. The FSRS implementation used within Anki is BSD, for example.
yamrzou
Besides LineByLine (https://linebyline.app), does anyone have tips on memorizing long texts using spaced repetition?
david_allison
SuperMemo 19 (2024 - Desktop/Windows) has incremental reading support
https://super-memory.com/help/read.htm
Disclaimer: AnkiDroid maintainer
nilsherzig
Thank you so much for your work on Anki Droid, I use it daily
david_allison
Much appreciated, thank you!
Still got a long way to go for me to be happy, but we make great progress every year
https://forums.ankiweb.net/t/ankidroid-2024-roundup-2-20-1-c...
rahimnathwani
I don't how well it works in practice for long texts, but for song lyrics I've used this Anki plugin: https://ankiweb.net/shared/info/2084557901
It takes a text, and creates a bunch of cloze deletion cards, each presenting you with a number of lines, and asking you to recall the next line.
laurent_du
No offense but why don't you memorize the songs by singing them instead? I memorized hundreds of songs just by being a dad and singing to my kids every evening. Of all the things you'd want to remember, song lyrics look to me to be the easiest by far.
mcshicks
I guess it matters how long it is and if you need to know it exactly, and how long you need to retain it. I had to memorize 50 to 100 word phrases and I chained them together with index cards. The first sentence is the cue for the second, the second for the third, etc. Carried them around in my pocket in order and started from first a few times a day until I could do the whole thing. But I only needed to know it exactly for a few weeks usually.
gavmor
I've gotten tremendous mileage out of exporting book highlights to BufferApp.com and setting them to release only once per day or so. Shuffled, they pop up days, weeks, months after I've put down the book, re-igniting its themes as they spark discussion.
IssaRice
I also made a theoretical calculation like this a couple of years ago [1]. I didn't answer the question "Can you memorize an infinite number of facts?" but rather the question "If you add a constant number of cards to Anki each day, what does your daily review load look like in the limit?"
david_allison
We've recently added a simulator in the deck options of the new scheduler.
If you don't want to upgrade to FSRS
* Export a colpkg
* File -> Switch Profile -> New
* Import
* Deck Options -> Enable FSRS & Optimize
* FSRS Simulator (experimental)
runarberg
I wrote a kanji learning app around Anki’s Flexable Spaced Repetition (FSRS) algorithm https://shodoku.app
My design principal is that I don’t need to be limited to few words, a sentence, and maybe a picture for each flash card. Instead each flashcard can be the all the relevant parts of the whole dictionary related to the kanji that you are learning.
Another design principal (where I deviate from Wankikani) is that drawing the kanji helps remembering it. So my app has two sided cards, one for drawing and one for reading. Both reading and writing practice include every word in the dictionary + example sentences that contains that kanji.
My third design principal is that I can learn vocabulary at the same time as I learn the meaning and the writing of the kanji (in fact, I like to learn a few vocab words instead of memorizing the different readings). So you can bookmark vocab words you want to learn along the kanji, and the next time the SRS system picks the kanji up for review, these words pop up at the top, to help you recall.
Note that the app is still in development, so use at your own risk, although I am actively using it for my kanji-studies. I still have a couple of features missing before I can call it done enough.
csdvrx
> I still have a couple of features missing before I can call it done enough.
I've checked your website and HN profile but there's no email to contact you, so here are some simple suggestions: when you enter a deck, I would suggest you add 2 shortcuts or buttons: one to randomly jump from the present card to another one of the same deck, and the other to randomly jump to another deck in the review set
This is because when faced with a sequence, the brain learns the order the element in the set, which may affect recall.
Being able to randomize the set helps prevent that, and give better results.
runarberg
Thanks for the suggestion. The code is open sourced at https://github.com/runarberg/shodoku
I think you were browsing the cards and using the quick navigation to go to another card in the same deck. When you actually review the cards using the SRS system to review the cards (the big “Review” button), there is a setting (in the settings view) to enable fuzz (a small random delay; defaults to on) which will effectively scramble the cards for your next review. I actually had been using it for a couple of months without fuzz and just random noise in my retention abilities were enough to scramble the decks, at least in my experience.
But a button in the quick navigation bar when browsing the cards to jump to a random card is not a bad idea.
csdvrx
> I think you were browsing the cards and using the quick navigation to go to another card in the same deck.
Yes, I was just looking at how it works because I liked how you presented your design principles.
My personal design principle is to minimize friction and allow immersion to concentrate on the task and not on the navigation.
> I actually had been using it for a couple of months without fuzz and just random noise in my retention abilities were enough to scramble the decks, at least in my experience.
I don't know about you, but when using cards or other repetition-based systems, I've found my recall is strongly increased by randomization: if you can "predict" which card you will be shown next (and I often did), you are not learning the content of the card, but their sequence. This is helpful for some tasks where order matters, but it's often an hinderance for things that don't have a natural order
> But a button in the quick navigation bar when browsing the cards to jump to a random card is not a bad idea.
A button is nice, but since your content doesn't fully fit on the screen, you should also consider keyboard shortcuts: being able to immerse in the viewing helps a lot for memorizing (cutting distractions)
After a while, I guess you must have nailed the common part (the drawing) while still benefiting from the varying part (the list of words): if you can have that on the screen more easily, without much friction (like scrolling down past the drawing), you will be able to immerse into that. Exposing the drawing area could be a setting, or more simply you could have shortcuts or buttons to jump to the word section.
Actually, maybe you should also get a button and a shortcut to randomize the words themselves: to take a quick example, https://shodoku.app/kanji/%E5%85%88 lists 104 words.
I think you know the #1 better than say the #103, because you have seen the top of the list more. If they are sorted by frequency (ie how common they are), that could be good when begging, but after a while you may want to learn the less common one, and having to scroll down may reduce your desire to do so.
I tested jumping to the bottom of the page with the End key, and I think you have a "load-on-demand", so you should be able to test my hypothesis quickly: look at the web server stats for the chunks of a given page for your own IP, and plot the frequencies: I think the bottom where the #103 word is will be seen far less often that the top where the #1 word is.
You have made a very cool project, and I like your design principles, so I hope you won't find my suggestions offensive or disrepectful.
socksy
Random bit of UX feedback. When on https://shodoku.app/decks/add the + symbol means to add the deck, but in the interface even knowing that I accidentally pressed it 3 or 4 times to try and fold back the kanji after having clicked "show".
runarberg
Thanks for the feedback. I am a UX engineer and frankly I‘m a little embarrassed I was caught employing such a bad UX pattern.
Even without the confusion of toggling a hidden detail, the or-or-off toggle button is known to be bad UX as it is unclear whether the toggler is on or off, unless clarified with a label. https://news.ycombinator.com/item?id=39342649
My next feature is going to be custom decks, which is implemented on this page. I will for sure fix this (by adding labels, and changing the icon to a checkmark for active decks).
Thanks again, this was helpful.
david_allison
> Anki’s Flexable Spaced Repetition (FSRS)
Sorry to nitpick: Free Spaced Repetition Scheduler
dang
Discussed at the time:
Spaced repetition can allow for infinite recall - https://news.ycombinator.com/item?id=32381206 - Aug 2022 (169 comments)
wahnfrieden
I made a well-received native iOS/macOS app for mining Japanese web and ebook content (Mokuro manga up next) into Anki or my own companion flashcard app: https://reader.manabi.io
I'm now working on flashcard auto-reviews while reading, so that if you read words/kanji that you have cards for, it'll automatically mark those cards as reviewed rather than ask you to recall them shortly after you just had to recall during your reading.
I hope this helps people replace more SRS time with actual reading (or listening)
purplethinking
I've done the whole spaced repetition and Anki thing, realized that if it's boring, you won't learn as well, and you won't stick with it in the long term, once you miss a week and suddenly you have 863 reps to get through to catch up. Instead, read stuff you're interested, apply it in your work, learn mostly Just In Time for when you need it. Learn by doing.
keiferski
Strongly disagree. The worst thing that’s happened to educational theory is the idea that everything needs to be fun and exciting to be worth doing. Some stuff is worth doing because it works, even if it’s a little boring. SRS is one of those things.
hombre_fatal
If an approach is so boring that you don't do it, then what does it matter how effective it might be?
Either find a way to make it less boring or switch up the approach. Whatever gets you to keep a habit is what's important.
Same with any habit we want to develop. Cooking. Exercise. Language learning. Building software. Meet people.
keiferski
Because realistically doing your Anki cards should take 10-30 minutes a day, maximum. If you can’t slog through 30 minutes of learning vocabulary/etc. then the thing you’re learning isn’t very important to you. SRS isn’t about doing flash cards for hours on end, it’s about determining the maximum retention rate while doing the minimum amount of work.
Even then, personally I don’t find Anki that boring at all. But I make custom cards that include audio, images, and other items.
colin_jack
> If an approach is so boring that you don't do it, then what does it matter how effective it might be?
Yeah true, but an obvious argument is that this is where discipline comes in. If you are one of the people Anki works for, then you have to find the level of discipline required to stick with it.
zozbot234
> once you miss a week and suddenly you have 863 reps to get through to catch up.
You only have to "catch up" ASAP if you want to minimize the risk of forgetting any card at all, and then having to memorize it again. Otherwise, just working through the backlog at your preferred pace is the best strategy; you'll still be recalling most of the cards and the system will push repetitions for those that you do recall further out in time.
Perhaps the Anki devs should add some kind of special workflow in the UX that shows up when the user has a huge backlog to go through due to missed reviews, and tells them this. Because you're right that just seeing a bare number (863 cards to go through!) can be quite scary.
jamager
Spaced repetition is the cherry on the cake: learn by practicing, but create your own cards along the way, and when reviewing just focus on making a recall effort, not nailing everything.
For language, 10-20 mins / day is great, and if you are putting enough effort, 6-8 reps is enough to learn a card with 2 new concepts at ~15secs / rep, which really makes a difference long term.
I made a tool[1] with that approach in mind and tailor-made for language acquisition patterns. The key part is that creating cards (audio included) must be super-easy and fast, but they need to come from you nevertheless.
dotancohen
This looks very interesting. The language dialect that I am learning now has no online sources, but many words are similar to other dialects that are online. How does the app find the native pronunciations of words? What can we do with the voice notes, other than just listening to them? Transcription?
sunnybeetroot
Wow this looks great! Reminds me a bit of Mochi.cards
jamager
Thanks! Still polishing a few corners...
runarberg
I think the mistake here is simply to many new cards a day. If you miss a week and have 863 reps, you definitely are going way too fast. You shouldn’t have to spend more than 5-20 minutes daily going over your review, and if you miss a week you shouldn’t need more than two or three half hour sessions to catch up.
I think there are diminishing returns as well by having to many daily new cards, as there is only so much you can commit into memory every day. So you will probably end up having terrible recall as well (which further adds to your reps).
I’m using Anki to learn Japanese. I actually go a step further in taking it slow as I’m still on my N5 vocab (first 1000 words) after 9 months of learning. I think it will be another 9 months before I can read stuff I‘m interested in in Japanese (which will probably be Go books).
purplethinking
I used it for language learning and CS among other things. The thing is, life gets busy. Suddenly you have a kid or two. Spaced Repetition falls into the same category of things that people in their 20s do because they have too much time, like using intricate note taking systems, journaling, training for triathlons and being really into artisanal coffee.
colin_jack
I haven't found that at all. I'm well past my twenties but find Anki is one of the things I can fit in, mainly because even with kids and responsibilities you can often find small periods (say 15 mins) of time through the day. It's not enough time to sit down and start into something really complex, especially as the time is sometimes interrupted, but it is enough time to try a few questions.
bmacho
You can do Anki while commuting, if you use public transport. Then it's just free time.
If you don't use that, then you have to use your time dedicated to learning, where Anki is probably more efficient than your learning method anyway.
runarberg
I guess it just boils down to what you want to do with your spare time. You find time for HN. Me, I can find time for 20-60 min a day studying Japanese (of which 5-20 is in Anki). I also find time for 20-60 min a day playing go so ¯\_(ツ)_/¯
xhevahir
Am I missing something here? Because I fail to understand how something like this is susceptible of a priori proof or disproof. Seems pretty obviously an empirical matter.
yanis_t
I merged spaced repetition with knowledge management app (), and I must say it was the biggest personal improvement for me in terms of organising and remembering stuff.
As a product though I struggle to make it work. I assume people mostly afraid of their notes and cards stored in the cloud vs local storage, which is understandable.
laurent_du
Logseq does it already and is well-established. Probably other solutions like Obsidian can do the same. It's a tough market to be in.
szundi
Seems nice. The page is so irritating on iOS that it must dominate your revenue losses though, not fear from cloud. Like portrait screen 4 colums of 2 character wide lines of texts. All video autostarts on fullscreen when gets into view, ehh. Have to ask, have you ever tried this?
antasvara
Just so the original poster knows, this also happens on Android running Microsoft Edge.
yanis_t
Thanks for bringing this to me. The website is optimized for web, so I didn't really tested on mobile devices, but yeah, this looks horrible...
Update: made it look a little bit better.
dnadler
Oof, yeah, this site is really not great on iOS.
The first time I published a site, I was surprised by how much traffic came from mobile devices, even though my page was intended for desktop users. I really shouldn’t have been surprised, but fortunately I had some basic analytics and saw fairly quickly how bad my bounce rate was on mobile and was able to work on it a bit.
bloomingkales
The redundant nature of mass scale internet content operates on spaced repetition I think. If you doom scroll HN for example, over time you’ll know more about random things. WSB might be a better example. I didn’t realize how many stock ticker prices and movements over the last few years are now embedded in my mind, without deliberately trying.
This is the 1000th time you’ll have read the same thing. The hivemind naturally regurgitates the same information at a predictable cadence. We’re due for a few Rust posts on HN, for example.
If you stay tapped in, you will always be learning from this organic body.
david_allison
> The redundant nature of mass scale internet content operates on spaced repetition I think
Not really. Depends on the definition of spaced repetition, but you typically want increasing intervals (normally exponentially) for it to be effective.
See 9.1: https://pcl.sitehost.iu.edu/rgoldsto/courses/dunloskyimprovi... [PDF]
rahimnathwani
Not all spaced repetition is equally effective.
Repeated exposure (e.g. re-reading a book) does something, but active recall is much more efficient at solidifying memories.
Wozniak estimates that you actually get a maximum of~300,000 based on his decades of data, so it seems the simplified model misses some effect and so converges to the wrong total: https://supermemo.guru/wiki/How_much_knowledge_can_human_bra...