News
2008.09.02 - Minor version update to 0.1.1 - Had to do a emergency minor version/page update to replace all the places where I mixed up the kanji for "revenge" with "review" in the Japanese. :)
2008.08.30 - Anki Stream Beta is Live - The web page and the beta release (version 0.1) of Anki Stream are online. Welcome Anki Stream beta testers! Please have a look around, download the program, try memorizing some stuff with it, and let me know what you think: bishopw ~ ! at ! ~ gmail.com. Thanks!
Introduction
Anki Stream is a tool for long-term flash card review, mostly necessary when learning foreign languages. Like Piotr Wozniak's SuperMemo, Damien Elmes' Anki, and the Mnemosyne Project, it schedules flash cards for review using spaced repetition, allowing thousands and tens of thousands of words to be remembered over years and decades. Anki Stream focuses in particular on presenting an intuitive visualization of how cards are scheduled and making the scheduling formula transparent and adjustable by the user.
The Problem
Do you need to memorize a ton of stuff and keep it in your mind for a long time? Flash cards work well for memorizing new words in a foreign language or other small chunks of information. If you review them frequently, flash cards can also keep the words or info chunks fresh in your mind over long periods of time, even if you don't use them often in daily life. But when you are studying intensively for a big foreign language exam, like I am right now for the level 1 JLPT, there are so many new words to learn that without a smart, automatic method of organizing your flash cards for review, your card pile will quickly grow out of hand and become useless.
For example, the level 1 JLPT requires that you learn about 10,000 Japanese words, mostly written in the 2000 or so characters of the general use kanji, no less. So if you have 10,000 flash cards in front of you, how do you review them? When you sit down to review, you need to know which of your thousands of cards to study right now, and which you still remember well enough to not waste time on.
The Solution
My idea for Anki Stream crystalized while reading this article in Wired about Peter Wozniak, the inventor of the memory software "SuperMemo". According to the memory research discussed in the article, the best time to review a word is just before you are about to forget it. If you review before then, you are wasting your time, but if you wait longer than that of course you will have forgotten the word and need to relearn it.
This leads to another important result of memory research, the principle of "spaced repetition": if you continue to review something right at this "forgetting point", the forgetting point itself will move farther into the future exponentially according to the number of times you review. This is illustrated in the graph below, which I also stole from the Wired article:
CHANCE OF REMEMBERING SOMETHING VS. TIME
Forgetting happens more and more slowly as you review with correctly spaced repetition.
As we can see from the graph, if we just arrange our review sessions so we review each of our cards right at its forgetting point (illustrated as the "90% chance of remembering" line in the graph), we will probably master those cards quickly and need to review them less and less frequently, clearing out more and more review time for more and more new cards. See Damien Elmes' description of spaced learning here, or, of course, the Wired article for a more thorough discussion of these concepts.
Of course the forgetting point is different for every card, and the overhead of keeping track of the thousands of different forgetting points for the thousands of different cards in our pile would quickly overwhelm us if we tried to do it by hand. So we need a tool that will calculate and remember the forgetting point of each card for us. And when we sit down to review, we need the tool to show us those cards that are closest to their forgetting point.
Several memory programs have been developed that do exactly this. Piotr Wozniak's SuperMemo, Damien Elmes' Anki, and the Mnemosyne Project are the three I'm most familiar with.
I considered using each of these when trying to figure out what to do for my JLPT prep but none of them had quite the balance of utility and simplicity that I was looking for. Also I wanted a more visual, intuitive feel for my memorization progress and for how my cards were scheduled, and I had an idea about how to do this with a "stream" metaphor. So I made Anki Stream.
Anki Stream
Anki Stream displays your scheduled flash cards as a "stream" of flash cards that flows slowly downward out of the future, toward the present time. When you review, Anki Stream shows you all the cards close to or past the present time marker, and as you answer each one you can watch where Anki Stream re-inserts it upstream. Your review session is complete once all the cards near the current time have been reviewed.
Anki Stream also lets you easily adjust the formula it uses to re-insert the cards after you correctly or incorrectly answer them. By default, missed or new cards are scheduled for review just five minutes in the future. Each time a card is answered correctly its (initially five minute) repetition period is extended by six times. (Six times just seemed to work pretty well in general for me.) So, if you continue to answer a card correctly, it is scheduled subsequently thirty mintues, then three hours, then eighteen hours, then four and a half days (etc.). into the future. Additionally, cards that are missed frequently have an extra "drag" factor applied so they are scheduled sooner, and a maximum repetition period wall can be set (initially at 60 days) so that cards will not be scheduled out beyond that. You can easily view and modify these numbers through the Anki Stream interface.
See the Tutorial section below for more on the scheduling formula and the stream display.
Some other useful Anki Stream features:
- Human or machine readable xml file format.
- Import/export to comma-delimited text files for faster card editing and swapping.
- Instantly switch between languages (right now just Japanese and English) via the Help menu!
Download
Please click the link below to download Anki Stream:
* * * Download AnkiStream-0.1.1.jar! * * *
If you are using Internet Explorer it may mistake the .jar file for a .zip file and you will not be able to execute it. Internet Explorer users please instead download AnkiStream-0.1.1.zip, which is a zip file that contains AnkiStream-0.1.1.jar. Please remove the jar file zip archive and then double click the jar file. Whew.
Once you've downloaded the file, you should be able to double-click it to run the program (it might take a couple of seconds to start). Anki Stream is written in Java and the AnkiStream-0.1.1.jar file is an executable Java "jar" file that should run on any operating system that has a Java installed (recently most operating systems come with Java installed by default).
If double-clicking the jar file doesn't work, your operating system may not have Java installed and you will need to download and install it yourself before you can run Anki Stream. You can do that at http://www.java.com/.
Anki Stream on Ubuntu, OS X, and Vista
Anki Stream is completely free for anyone to download and use. It is also an open source project that anyone can modify or contribute to. Details on modifying and contributing can be found in the Contributing section below.
Tutorial
Getting Started
When you first double-click the AnkiStream-0.1.1.jar file the main Anki Stream window should appear with an empty stream (this might take a few seconds).
The exact appearance will vary depending on your operating system, of course, but the buttons and menus and everything should be basically the same. I'm taking these screenshots from my Ubuntu Linux Gnome 2.2 Desktop ("Crux" theme), which is what I developed the program on.
When Anki Stream first starts up it will also create two files in your home directory. AnkiStream.xml is the default data file that your first stream as well as your preferences will be stored in. ankistreamdata.dtd is an XML "Document Type Definition" that describes the format of the data in AnkiStream.xml. Those of you who are interested in how Anki Stream's data is formatted in the XML file can look at this. Although you can save your stream files anywhere you like, Anki Stream will always look in your home directory and recreate these two default files when it starts up. I am fixing this for version 1.0.
As the text box in the left hand pane suggests, please click the "Add Cards" button to add some cards to your new stream. The following Add Cards dialog will appear:
Add Cards dialog.
Lets add a flash card for learning the Japanese word "暗記", ("anki" - memorization/rote learning). In the upper text box type the "question": "暗記", or "anki" if you don't have a Japanese input method installed. Press tab to continue to the lower text box and type the answer "memorization/rote learning". Press tab again to move to the "Add and Continue" button.
Try adding one more card. "小川" - "ogawa" - "stream", for example. When you are done, tab to "Add and Close" to add the last card and close the Add Cards dialog. Now your display should look something like this:
You can watch the cards we just added flow slowly downward, past the "current time" and into the "past". This indicates it is time to review them.
Click the "Begin Review" button in the lower left to do this, and you will be presented with the review interface:
After you flip the card, the answer is displayed in the lower text box. Click "Right" if you got it right, or "Wrong" if you got it wrong. The reviewed card will be re-inserted into the stream (in the future if you got it right, or near the present if you got it wrong) and the next card needing review will be shown. You can also check the statistics of the last reviewed card in the lower right corner.
If you find a mistake on one of your cards while you are reviewing, you can also edit the question or answer by clicking the text boxes changing the text, and then clicking "Save Card Changes".
The review continues until you click the "End Review" button or until all cards in front of the "review until here" line on the stream diagram have been cleared out. The "review until here" line is set by default to 30 minutes after the review start time. In future Anki Stream releases I plan to make this adjustable.
After your first review.
At this point you can add more new cards with the "Add Cards" button, or take a break. Even after you close Anki Stream, the cards you've just reviewed will continue to flow downward to and past the "current time" marker and it will be time to review them again. So don't stay away too long! ^_^
The following tutorial sections are coming soon:
As Your Stream Grows
Adjusting the Scheduling Formula
Exporting / Importing
File Format
Contributing
Code
Anki Stream is an open source, free software project, distributed under the MIT/X11 free software license.
Here is the license:
Copyright (c) 2008 Bishop Wilkins
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Anki Stream is currently beta software, and I don't really want to take new features for the "official" releases I will be linking here until I have the current features working well in version 1.0 and can move on to version 1.1, but bug fixes are welcome. And of course you can add as many new features for your own versions as you want. The source code is distributed in the jar files, along with some brief explanatory notes in the README file in the root directory. Or you can get the most up to date code distribution from the SourceForge Subversion repository here:
Translations
I'm definitely interested in adding translations for languages other than just English and Japanese. Both for this page and for the text in the program itself. Anki Stream is easy to update with new languages. If you can translate from the English or Japanese into another language, all you need to do is edit this pound-sign delimited strings file and add the translated text onto the end. Or send me a file with the translations and I will quickly incorporate them into the next version.
Oh yeah and also if a native Japanese speaker would please proof-read the Japanese text in the program and on this site and fix my horrible Japanese for me I would also be grateful.
Money
Also, if you get a lot of memorization out of Anki Stream and you have money, please consider making a financial contribution!
Suggested donation: $10 per 1000 cards successfully memorized! ^_^
Contact
Please send questions and/or comments to me at: bishopw ~ ! at ! ~ gmail.com Thanks!