Implementing SM-2 in Rust
borretti.me
borretti.me
The repo is here[0], and if you like long form unedited videos about someone failing to program, you can see my struggles with Idris 2 here[1]
[0] https://github.com/dspx-plcr/qtt
[1] https://www.youtube.com/playlist?list=PL5CIEWYHtEXommjLd_zOP...
These days I often wonder if I should just switch to FSRS [1], which Anki also switched to. It delivers better results. However, I am hesitating, since I understand SM-2, and it is easy to read the code while FSRS is complex and feels kinda black-boxy, which wouldn't feel right to me.
A quick note to the implementation above: I wonder if having that many answer options is worth it. It probably increases the cognitive effort needed for grading and I wonder if the increased precision in some cases is worth that. But who knows?
[1] https://colab.research.google.com/github/open-spaced-repetit...
Still the basic idea is you should show up regularly, but sometimes I had to skip a couple of days and could get back on track by just doing my average number of repetitions plus 20% or something of the like for a while.
A big problem in general comes from the fact that an SRS is a big investment of time and people will get extremely defensive to “protect their investment”. It’s very difficult to get fair comparisons and good recommendations, I almost never got to try SuperMemo because I was just reading comments of defensive Anki users.
Unfortunately memory does not work that way. You can't just put a pause on forgetting (if we could we wouldn't need spaced repetition in the first place). The backlog will continue to grow because memory degrades over time (without review). The backlog simply represents the cards that have a less than X% chance of being recalled (where X is usually 80-90%).
Any SRS is better than SRS (if an SRS is appropriate at all--it usually isn't), and the difference between algorithms is either imperceptible, or worse a UI/UX regression to most users.
Have you asked them recently? A lot of the criticism of Wanikani, including on its own forums, is describing it as a burnout machine because of a mix of the primitive SRS system and the level lockouts. Particularly since Anki has switched to FSRS and people are comparing the relative workloads.
btw in Mochi you can set the multiplier. It doesn't need to halve. I set mine to 0.1, which practically means "tomorrow" for most cards, or "in a few days" for cards with a very long streak of recall success.
https://mochi.cards/faq.html Mochi uses SM-2 without EF adjustment and without resetting intervals. This is outdated.
https://mochi.cards/docs/faq/ says Mochi multiplies by a number >1 on recall and by a number in [0,1] on forgetting. This FAQ is linked from the front page and seems to be the correct one.
And, indeed, checking the review settings for my deck shows the multiplier settings.
Since I created Mochi there have been some new algorithis developed. Most notably FSRS [0] looks promising.
[0] https://github.com/open-spaced-repetition/free-spaced-repeti...