Heffalump: a flashcard-based memorisation tool
Today, Heffalump is nowhere near as good or mature as other tools that address the same problem. Try them all before Heffalump.
As long as I'm actively using and developing Heffalump, though, there's a chance it might catch up one day.
What It Does Do
- loads, creates and saves databases of items
- lets you add simple, textual question/answer pairs to databases, and allows you to tag them with keywords
- lets you browse the database
- lets you search the database by text/keyword
- schedules items for review based on the SM-2 repetition spacing algorithm from SuperMemo
- lets you review the currently reviewable items, and allows you to grade your recall (as per SM-2)
What It Doesn't Do
- look pretty doing it
- anything else
- a Java installation, version 1.5 or better (earlier may work if you're lucky).
- a little patience, at the moment, as this is the first release
Get version 1.0.0beta3 (released 2007-10-12) as:
- a generic Java jar, 2.2MB; should run anywhere
- a Mac OS X disk image, 2.4MB; should work on OS X 10.4 and above, and probably some earlier 10.x as well
Click for full-size versions.
I'm aiming to make Heffalump:
- free, as in both beer and speech
- platform-agnostic, which is why it's written in Java
- easy for non-technical people to install and use
- integrate with my OS X desktop as much as portable Java allows
- mobile, as in eventually available as a MIDlet too so you can review on the move
- pluggable, allowing more interesting kinds of questions/answers than just plain text
Heffalump is licenced under the GNU General Public Licence, version 3.
Features I'm likely to add soon:
- An improved main window that shows more than just a button. I'd like to see some basic statistics about the database, like number of items in total/items due/items overdue.
- A MIDlet port that lets me do reviews on my mobile phone. If it's not too much of a strain on the input capabilities of a MIDlet, I'd also like to be able to add to a list of things I've realised I want to know.
- Better OS integration. For OS X this means: menus - integrate the menu bar on the Mac and rearrange it on that platform to fit what OS X users expect; a more familiar file choosing dialog; Preferences, About, Window menu and suitable menu item mnemonics; ensure all scroll panes always have handles. Linux: try running it, plus Debianisation. Windows: try running it, and find out if there's something like an OS X .app that's easier for the user than a jar..
- Templates. Instead of showing %s, show "What is the etymology of '%s'?". Also include tags in the template so you don't have to add them to each item.
- Vice-versas (reversible questions). Goes hand-in-hand with templates, and just requires two bits of information instead of one. A truly vice-versa-able question might be "Which King of England was born in %s?" with its pair being "In what year was King %s born?". The smarts to not ask a question and its vice-versa in the same session.
- Searchable free text alongside an item. Allows, for example, noting the context of what a king did when you memorise his reign, or having a picture of him, or whatever; reminding yourself how you remember a word in a foreign language; silly stories resulting from numbers memorised with the Major System.
- More types of questions. I'd like to be able to circle places on a map, draw borders around countries, have some sort of fuzzy text matching on my answers, and have semi-templated, semi-random questions that aren't really set in stone but just remind you how to do things - like presenting you with a random multiplication. The ability to just draw a mind-map on the screen and compare it mentally with the original. Etc. (These things are probably beyond a mobile implementation.)
- Statistics. I'd like to know my current workload, in minutes per day. I'd like to know my average recall grade. I'd like to know all sorts of things that Supermemo can already tell its users, and I'd like to be able to view them as graphs.
Other stuff I've thought about:
- A way of reviewing items outside of the SM-2 schedule, perhaps as preparation for an exam.
- Secure items. Mac OS X has a keychain. KDE has a wallet. I'm sure all the DEs have these, and I kinda like the idea of being able to memorise passwords and personal items without storing them in the database.
- Import and export of CSV, Supermemo, Mnemosyne and perhaps other formats.
- Optionally submit Mnemosyne-style statistics back to that project.
- More repetition spacing scheduling algorithms, if they're unencumbered.
- Some way of accessing communal flashcard databases and sharing cards with such databases.
- Explicit forgetting of cards. Perhaps SM2 etc make this fairly pointless?
- RTF/HTML/whatever markup in question/answer texts. People seem to like that.
- Automatically detecting when a new version is out, and offering to upgrade.
E-mail me at firstname.lastname@example.org.
Contributions are welcome. There's currently no documentation outside the source code, so contact me if you're interested in helping.
If you want to see what you're in for, the source is available:
- inside the released JARs you probably already have
- to browse
- by anonymous svn:
svn co svn://www.iwilcox.me.uk/heffalump/heffalump/heffalump/trunk heffalump
Credit is due to the following people and projects, in no particular order:
- the XNap Commons project for autocompletion
- the Apache Commons project for some reflection-based hashing code
- the Apache Xerces(-J) project for their XML DOM parser implementation
- P. Simon Tuffs for the One-JAR project that lets me bundle the above libraries neatly into one standalone jar.
- the Mnemosyne project for their QT tool which inspired me to write this one
- the SuperMemo project for inspiration, tons of information and for their SM-2 algorithm
$LastChangedDate: 2007-10-12 13:53:32 +0100 (Fri, 12 Oct 2007) $