The key to learning foreign languages (or anything for that matter–I have a rant on that I’m working on) is proper use of an SRS. An SRS, or Spaced Repetition System is an algorithm for managing flashcards in the most efficient manner possible. Current SRS programs use the state of the art in cognitive science to predict how long it will be until you are at risk of forgetting a fact, and schedule your review of the material accordingly. The first review might be in a few hours, the next in a few days, then weeks, months, years… The result is that use of an SRS has enter-and-forget [sic] semantics–once you put a fact into your SRS, you don’t ever have to deal with the logistics of remembering that fact. Just make sure you open up your SRS to review at least once a day and it’ll handle all the details for you

So what SRS do I recommend? For a while I had been using jMemorize, an open source SRS that shows great potential. However at the time of this writing some very critical features are missing, and I can’t say I like the bare-boned scheduling algorithm it uses. It’s open nature put it far ahead of the competition though, and for the last six months or so I had been using my own hacked version of it.

But then I discovered Anki. Anki’s user interface is beautiful. It’s feature set has almost everything you need. And it’s scheduling algorithm is perfect. There are a few things that annoy me. For example, I can’t get cards with images to sync correctly to Anki’s server. But jMemorize lacks support for either images or syncing.. so really, who am I to complain?