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.]


8 Responses to “Mnemosyne”

  1. Daniel Koning says:

    I didn’t do anything about it until recently

    Because you forgot?

  2. David Carlton says:

    Interesting experience report; thanks for posting it! I found your report of an increase in confidence to be particularly notable; a similar flavor to the GTDish claim of the benefits of getting worries off of your mind and storing them somewhere externally.

  3. dfan says» Blog Archive » Mnemosyne update says:

    […] is a spaced repetition program for aiding memorization; see my first post about it for the whole scoop. That was the one-month report, and it’s now time to post a three-month […]

  4. brokenwriting says:

    Any chance you would consider posting or sharing your chess openings card pack for Mnemosyne?

    I used Mnemosyne to help me study for my Amateur Radio Licensing exam. It’s an excellent resource, and a fellow ham was nice enough to share their pack online!

  5. dfan says:

    Cool, it’s nice to see other people using Mnemosyne for something other than language learning, which seems to dominate the use cases.

    I don’t think my chess opening cards would be that useful to post; for one thing, it’s just my own personal opening repertoire, which no one else is likely to share.

  6. Stefan says:

    I’m amazed that you do this extra work although CPT supports flash-card learning. Though I have to admit it is not using such a sophesticated methodology as SuperMemo. Anyway, one of my motivations to work on CPT again was the idea of incorporating space repetition into CPT. So maybe one day you don’t need another program to study you chess material this way. I have to add that the space repetition approach will probably not make it into the next version, but a later one.

  7. dfan says:

    Thanks for replying, Stefan, and thanks for Chess Position Trainer! It’s a great tool and I look forward to version 4 with great anticipation.

    I have used the built-in training system in CPT in the past but I found that it doesn’t work so well with the way I remember things. With the CPT trainer I tend to drill a lot at first to get lines to 100% right away, but then they doesn’t come back for review often enough. Or if I haven’t gotten everything to 100%, when I drill I only get new lines and not old ones, because their percentage is so much lower. Although using a separate program for my memorizing in addition to one for maintaining my repertoire seems like a lot extra work, I think it’s paid off well for me. If a future version of CPT supports spaced repetition as well I’ll be very interested in trying it out.

  8. Stefan says:

    Thanks for your explanation which will help me to improve the training function and fits to my own observations. There is another aspect I would like to somehow cover: to focus the training on the main lines first and only when you know these already well it should test you in the less likely lines. I have to find out how to implement this though.

Leave a Reply