[HN Gopher] Implementing SM-2 in Rust
___________________________________________________________________
Implementing SM-2 in Rust
Author : Tomte
Score : 94 points
Date : 2024-12-27 08:04 UTC (14 hours ago)
(HTM) web link (borretti.me)
(TXT) w3m dump (borretti.me)
| intellectronica wrote:
| Cool!
|
| 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.
| zetalyrae wrote:
| Ok, I've identified the root of my confusion here. Mochi has
| two FAQs:
|
| 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.
| knubie wrote:
| Hey sorry about that. I will take down the old FAQ, or at
| least redirect it to the new one. The other thing not
| mentioned in that section of the FAQ (that I will add now) is
| the re-review phase. When you miss a card during review it
| will go to the re-review queue. Missing it again in that
| phase will reset its interval to 1.
|
| 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...
| ChadNauseam wrote:
| Hopping in to say that I've used mochi very regularly for over a
| year and love it. It's definitely an aesthetic improvement over
| Anki. I'm kind of confused why it isn't more popular - I remember
| doing a bunch of research on SR software and not finding any I
| liked, and then only finding Mochi by chance when the creator
| left an HN comment
| greenavocado wrote:
| There is no indication that Mochi is using any modern spaced
| repetition algorithm like FSRS. Even FSRS has huge problems but
| its the best one that's fully deployed and well tested and it
| is way better than SM-2. The future of SRS involves integration
| of fMRI based findings about memory formation and knowledge
| tracing but that is at least 5-15 years out.
| adastra22 wrote:
| This is way down the rabbit hole of unimportant tweaking. One
| of the most popular SRS websites for language learning,
| Wanikani, uses essentially the Leitner method, which is one
| of the oldest and has no dynamic adjustment. It works just
| fine and their users self-report a preference for the simple
| algorithm.
|
| 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.
| Macha wrote:
| > It works just fine and their users self-report a
| preference for the simple algorithm.
|
| 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.
| adastra22 wrote:
| Be ware of availability bias. Wanikani is wildly popular,
| with a massive number of users. It dominates that
| particular space. And with a large user base, they will
| have a vocal minority advocating for changes. On the
| other hand I have met a fair number of users in the wild
| and not a single one has complained about this.
| graboid wrote:
| Nice. I also have an implementation in Rust (no public
| repository, private note-taking app). One low-hanging fruit (IMO)
| to improve on the base SM-2 is to more smartly pick the initial
| ease. I just took the average ease of "similar" mature items.
| Since for my use-case, spaced repetition items are embedded in
| notes, "similar" items meant items in the same note, or in notes
| that were tagged similarly.
|
| 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://github.com/open-spaced-repetition
| adastra22 wrote:
| Is there an actual problem that you'd be solving by switching
| algorithms?
| zetalyrae wrote:
| FSRS gives you the same retention for less work, or,
| equivalently, you can remember more things for the same
| amount of time worked.
| adastra22 wrote:
| While being more opaque & difficult to self-correct for.
| How much more work are we talking about? A theoretical
| couple of minutes in a year? Not worth it.
| dspx_plcr wrote:
| I did something similar recently in Idris 2, specifically to see
| how ergonomic using quantitative type theory is. My experience is
| it's quite a hassle, but I don't think that's beyond reproach.
|
| 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...
| IncreasePosts wrote:
| Is there any spaced repetition system that doesn't require me to
| tweak a bunch of parameters to get good results? I would love if
| it could just learn how I learn and adjust accordingly. I want to
| be able to pop in 4x a day or just once or just skip some days
| and have it adjust accordingly, instead of just leaving me with a
| huge back log.
| adastra22 wrote:
| All of them? Adjusting parameters is more of a power user move.
___________________________________________________________________
(page generated 2024-12-27 23:01 UTC)