Skip to content


I have a terrible memory. I’m pretty good at remembering processes and techniques, but very bad at remembering raw information. Luckily, I went into computer science, which is all about the former, rather than biology or something. (My musical memory is quite good, but that’s definitely an exception.) I find it very frustrating to spend a fair amount of time amassing knowledge (say, reading a history of the United States because I feel embarrassingly ignorant of it) only to have forgotten most of it a year or two later.

So last year I was excited to read a Wired article about Piotr Wozniak and his SuperMemo program. The idea is that you can feed everything you want to remember into a program that is scientifically tuned to spit out the right flashcards for you at exactly the right times. What makes it work is the principle of spaced repetition, discovered in the 19th century, which asserts that the time between reviews of a given piece of information should increase (exponentially, in fact) over time. Since facts that you start out by needing to review every day can eventually be reviewed every hundred days or more as their period increases, you can regularly stuff more facts into the database and your daily quota of flashcards doesn’t need to increase too much. The SuperMemo program handles all of that automatically, as well as doing obvious things such as reducing the period of facts that you find you have forgotten.

I didn’t do anything about it until recently, when I was reading David Carlton’s posts about writing his own SuperMemo-like system to help him learn Japanese[1][2][3][4]. I had been thinking for a while about using such a system to memorize my chess openings, and someone in a comment to his posts mentioned Mnemosyne, which is an open-source implementation of the same ideas, so I gave it a whirl.

Mnemosyne does handle images, but it’s a little painful to enter chess positions into it. I’ll put the technical details of how I do it in a postscript.  I dutifully started entering positions; my general technique is to play blitz games online, and for each game enter all the positions up to the point that I feel I should know to have a mastery of that opening (if they’re not already in the database).

One month later, I’m up to a library of 200 positions (and counting). The repetitions have gotten spaced out enough that I generally have 10 or fewer positions to review on any given day (of course, the whole thing only really works if you do daily reviews, but because of the system, it’s not much of a chore, and in fact I rather look forward to it).

Has it helped? I think it’s helped a lot. My former method of remembering openings was mostly to frantically cram every once in a while. Reviewing 10 positions every day, day in and day out, is much more productive. It’s also nice to know that a program is in control of the system. I trust that it is handing out positions to me when I should see them, and that my knowledge of my opening repertoire as a whole will be maintained at a decent level without me having to cram. In fact, one of the nicest results is just a large increase in my confidence. I don’t worry, “I should know this line, but I haven’t looked at it in a while, I should probably cram it again because I’ll feel stupid if I run into that person at the club who always plays it and I’ve forgotten what to do”; I trust that if the line is in the database, I have the appropriate chance of remembering it.

Learning and remembering stuff in Mnemosyne is so much fun that I actually picked up Esperanto again, which I had dabbled with years ago, just to have another thing to memorize. (I figured it would be more rewarding in a shorter time than if I relearned French or Latin — though maybe I’ll do one of them next…) That has also been working out great, and I feel like I’m retaining vocabulary much better than the last time I tried. Even better than the short-term benefit is the supposed long-term benefit that if I stop actively studying it but keep on doing daily reviews — and remember, the time needed to do that will go down if I’m not adding material — I’ll theoretically be able retain most of it instead of letting it all go down the drain once more. If that is really the case, it would be great. We’ll see.

[P.S. Here are the gory details of the system I use for storing chess positions, for the morbidly curious who are interested in following in my footsteps. I store my opening repertoire in Chess Position Trainer, a free application that nicely handles things like transpositions. When I want to store a position into Mnemosyne, I copy the position from CPT in FEN notation using Ctrl-C and paste it into a chess diagram generator (I use this one. Then I save off the resulting image into my .mnemosyne/images directory with a name like 0187.png (the number increases every time, of course). In Mnemosyne, I make a card with that image and the correct move, perhaps with additional notes that I should remember about that position. Importantly, I also enter an annotation like “[0187]” to the position in CPT, so I know that I’ve already added it to Mnemosyne and needn’t do so again in the future. It’s slightly tedious but not enough so to stop me from doing it.]