I’ve been using a program I wrote to help me memorize stuff (mostly Japanese vocabulary) for more than a year now. And for almost all of that time, I haven’t modified the program at all: I had plans right from the beginning to add multiuser support (if for no other reason than to make it safely accessible outside my LAN), but ssh tunneling worked well enough for remote access, and in general the program worked fine for my purposes. (Well enough, in fact, that I have almost 5000 items stored in it!)
Buying an iPod Touch changed that, though. Once I took a bit of care to add a stylesheet that looked good on the device, I found that it was just as easy to go through my vocabulary on the iPod as it was on the computer, and it was hugely easier to fit the review into spare moments of the day. So I switched from doing one big review a day to at least three a day, plus a few more when I had spare moments around the house.
So that was a huge help. I still couldn’t review vocabulary during spare moments at work, though; and once I got an iPhone, the number of places where I could conceivably review vocabulary but couldn’t actually do so got even larger! This made making the program available safely on the internet a lot more urgent.
I ended up using authlogic for authentication support; there were a few odd testing issues, but in general it worked quite well. (I think I’ve figured out at least one of the testing issues; I hope to have time soon to confirm my hypothesis and submit a patch.) And once that was in place, adding the general plumbing to link items with users was straightforward. (And I learned something about Rails in the bargain.)
I still don’t necessarily recommend that anybody else use it. For one thing, I suspect that the spacing of my review sessions isn’t optimal: I’m using exponential spacing more out of optimism than any strong evidence that it’s the best pattern to use, and in fact I get the feeling that some of my gaps in the months-out range are a little bit off. And, for another thing, I’m sure that there are features that I don’t need that others would find important; I can’t promise to be able to add them.
I will, however, strongly recommend that, if you have an iPhone or an iPod Touch and are considering using some sort of timed review program, that you don’t choose a desktop-only solution (unless you have a desktop computer in your bathroom): it makes a huge difference to be able to nibble away at your items when you have free time instead of having to do larger batches at less frequent intervals. And I hope that I’ll be able to add feature requests that I deem sensible without making you wait too much; alternatively, I’m happy to make a Mercurial repository available if you want to tinker with it yourself. I will also back up your data offsite nightly (though I make no uptime guarantees for the server my program is hosted on: it’s my home computer, and if something bad happens while I’m on vacation, it could take a couple of weeks to get it fixed). And you should be able to export your items / timing information as an XML file at will, if you want to change solutions. (Though it’s your problem getting that XML file translated into whatever format the other solution wants!) Having used it for more than a year gives me confidence that I’ll remain interested enough that it shouldn’t disappear for the forseeable future.
So if any of you wants to give it a try, let me know and I’ll set you up with an account.
Incidentally, I mentioned a few months ago that I was feeling a bit swamped with projects and conference prep, and was planning to step back some from my normal blogging schedule. (Especially the video game related parts of it.) Fortunately, Agile 2009 is now over (though, don’t get me wrong, I enjoyed both the preparation and conference very much!), and some of my side projects are winding down, so things should be getting back to normal around here. In fact, over the last week and a half things have been much more prolific than normal on this blog; I don’t plan to keep that up, but it is very nice both to have the time and energy to blog like that and to remind myself that I really enjoy doing so.
This post has not been revised since publication.