mnemo - a memory accellerator

SourceForge Project Page

What is it?

In the late 1980's, a student in Poland named Piotr Wozniak began developing a shareware application called "SuperMemo" which was the inspiration for the strange heap of bits you now survey. It's purpose was to automate a sort of time-based flash card system which would repeat each item at longer and longer intervals in an attempt to optimize the durability and quantity of memorization.

It was not open source.

"mnemo" is an Open Source application for similar purpose.

The material to be learned is divided into "items", the smallest pieces of information reasonable for repetative drill. To prevent confusion, these should be grouped into categories, units, and/or lessons so that the user will know what context they're in. Those items are then presented on a schedule which "accellerates" the knowledge into the future.

There is no built-in test capability other than self-assessment. Each item presents a "question" and waits for user input (pressing the Enter key). Then the "answer" is shown and the user is expected to grade his/her-self on how well they think they knew the answer. When the answer is well known, the interval until the next presentation of that item is increased by adding about half its current value. When not so well known, it may stay the same... or be decreased so the item will be reviewed sooner.

When the user wishes, it can calculate a "score" of how many items have been learned so far, and how many there are altogether.


  • Drill intervals are tracked per-item.
  • Accellerated intervals.
  • Keyword-based content filtering.


  • Perl
  • POSIX-y environment (Linux/BSD/UNIX/Cygwin)

What this means is:

For Linux, *BSD, etc., you're probably all set.

For Windows, you'll probably need to install Cygwin first.

Try it!

If you use Linux, you can try "mnemo" with this little script.

What's it good for?

  • Foreign Language Vocabulary
    • Comes with files containing the entire "Baza Radikaro Oficiala" (official basic root-word list, more than 2400 roots) in 9 parts from the Akademio de Esperanto.
    • The most commonly-used words should be introduced first for the quickest path to comprehension.
  • Tabular Data
    • Arithmetic facts (addition, subtraction, multiplication, division)
    • Metric units
    • Conversion factors
    • Constants for chemistry, physics, etc.
    • Phone numbers of family, friends, contacts, etc.
  • Published Question Pools
    • Amateur Radio license exams
    • Professional certifications
    • Government/Military advancement exams
  • Study Fact-Intensive Subjects
    like Biology, Law, History, Medicine, etc.

Using "mnemo" to Remember Your Life

You've probably heard that most men will use up their whole stock of interesting stories about themselves in about six months. You may know people who don't seem to remember much of their past outside of some wild times in highschool or college. Others might be stuck on an unpleasant event of the past which they remind themselves of daily. These are problems with uneven rehearsal of life memories. Those few memories that get attention more often are the ones that people remember, but they can become distorted for lack of contact with the original. Details can change. It's a documented fact of psychology that memory, on its own, is inaccurate, selective and unreliable.

There is no special part of your memory reserved for your priceless "life memories" and they, like other memories of facts and people will slip away... unless you do something to prevent it. Sure, you could keep a journal and maybe someday you might even read it if you don't lose it. Or you could use services like to send an e-mail to yourself in the future as long as you keep the same e-mail address and they continue to offer their service perpetually for free. But will just one reading or one reminder really give you the benefit of fully remembering? Probably not.

Use "mnemo" as an occasional log. Set up a personal category like "This was my life." and plop a journal entry into it every once in a while. Put an interval of a week or a month on it. Don't use it as just a vent for bad things. Those have their place, but make sure to write entries about new and good things, people you meet, places you find or visit, anything important that's happenning. Pack your "mnemo" with gems. Include as many senses as you can in your description; sights, sounds, smells, textures and flavors. Make a note of your emotions but not overmuch unless they play a significant rolé.

As "mnemo" brings these up at increasingly distant points in your future, you'll be keeping the reality of the memories fresh. If one seems hazy or you have trouble remembering, then knock down the interval by answering with a one or a zero depending on how poorly you recall it. You'll be maintaining a direct tie to the original events, keeping your memory fresh and accurate, and preventing uneven rehearsal which would overemphasize some things and lose others.

In time, you'll have a treasure of experiences being brought back to you just as you may have been about to forget them. Who knows whether they might not help you in your future? What mistake might you avoid repeating? Might a happy memory from the past be a comfort or make the difference between having a bad day or a good one? How charming might you be if you can bring back for someone else the memory of a shared time and place which they had forgot?

Using "mnemo" on Other People?

Since the concept is simple, it's theoretically possible to "push" items into other people's memories and to present material in a repetitive way with a minimum of annoyance. The "mnemo" user just has to somehow cause the other person to recall the item of interest and gauge how well they think it's working on them.

Use "mnemo" to teach small children their emergency contact info; names, phone numbers, address, etc.

Of course it's subjective, based on how familiar you think your target, er, "audience" has become with the item but that should be close enough.

DO NOT use "mnemo" to impress yourself upon acquaintances, contacts, friends, or family. It has a bad side-effect. Although I previously advocated using "mnemo" for building a network of personal relationships, I found that the decreasing frequency of contact and the resulting superficiality of each encounter seemed to extinguish the friendship rather than maintain it. Using "mnemo" in this way would only build a network of ex-friends who may begin to wonder why you won't go away.

The Future

The primary goal of current development is to make "mnemo" multi-media capable. By letting your web browser be the user interface, the items will be able to contain multi-lingual text, images, sounds, video... anything your browser can handle!

Yes, I'm still working on it... on and off. Right now it looks as though the best platform for development and deployment would be Zope, but I've never done anything much in PHP before. It'll be a while.

Some applications that come to mind:

  • Learn non-Latin writing systems like Chinese, Japanese, Korean, etc. using Unicode fonts or graphics. Animated graphics could even teach calligraphic stroke order.
  • Learn to identify plant and animal species, types of clouds, rocks, titles and artists of famous works, or the names of all your kids' friends using pictures.
  • Learn foreign vocabularies both in writing and sound.
  • Finally learn the names of all those Irish folk tunes by ear, and be able to recall the tune from the name too.
  • Sign language uses movement which could be shown in small videos or animations. You could even make them in 3D, if you want.
...but that's still in the works.

To make this accessible to users who don't want to learn the guts of the data storage format, there will have to be some sort of content editing interface as well. Something that lets them cut and paste between browser windows would be ideal. As an intermediate solution, I've made a "record jar" format which is pretty easy to comprehend. Logo Copyright © 2003,2005 Rick Miller