Spaced repetition, commitment and Lingwo.flashcards 0.1.4

After reading this post on Confessions of a Language Addict, I've started thinking a bit more seriously about "the commitment problem" with spaced repetition which I recently wrote about. To summarize the problem: Spaced repetition works great if you are committed to quizzing your flashcards everyday. But inevitably, you will have to stop for some period time.  When you come back, the number of expired cards could overwhelm you.

I was using Memorati™ religiously while I was reading the first Harry Potter book. It was fantastic. After finishing the book, I stopped doing flash cards for about 1 week. I needed a break. I have over 2.500 cards and I was on a very strict regimen. Several weeks have gone by and I have still been unable to catch up.

So... I was trying to think of a near-term solution, meaning something I can do today, without redesigning Memorati. I ended up creating a catch-up script -- which turned out not to be what I was looking for.

But what it did, was take all expired cards and set the expire date as if you learned them 1 day ago. So, cards at level 1 and 0, will be quizzed immediately, but the rest will be deferred until later, as if their interval had just started yesterday. Basically, the idea was that it simulates you having last used Memorati the day before, like you had never left.

I ran my script, leaving me with about 500 cards at level 1 and 0.  I quizzed about 200 of those cards. Only afterward did I realize that I'd have to run the script again the next day (thus differing the 200 I just did) for this to really help me to catch-up. But then I understood what it really was that I wanted it to do.

How it should work

Once you have a large enough number of cards, you shouldn't be doing all expired cards, everyday. You should be setting a goal in terms of number of cards or minutes per day. For example, after 100 cards you would pick up again the next day. The key is: if you miss a day, you should be quizzed the exact same 100 cards as if you hadn't missed a day.

We can simulate this (again its not perfect!) by favoring certain cards first. Whether that is favoring most recently learned, least recently learned, best known or least known cards -- it shouldn't matter. Personally, I think favoring best known, least recently known cards first would be ideal. This would mean that when tons of cards are expired, you would be pushing known cards into a higher level (and getting them out of the way) before addressing less unknown material.


So when will it be available?

You may or may not have noticed that I just released Lingwo.flashcards 0.1.4!  This is the first version released under that name and represents the same code running on (except, of course, with the name change).  For the next version (0.2.0), I will focus on creating a real REST API.  This will give the JavaScript client library more power and should allow me to more easily experiment with algorithm changes and new features.  In short: I'm not going to hack on this new idea until after 0.2.0 is out.  I should have some development updates next week.