I’d been intending for a while to write a program to help me memorize stuff, most notably Japanese vocabulary. I’d been kind of goofing of for a while, reading much of the Rails book and taking the first few baby steps towards creating the Rails app, but nothing serious. Which is a problem, given that I’m going on vacation soon.
So I spent most of the day getting serious about it, and I’m proud to say that I just finished my first quiz through it! At the start of the day, I had the structure for entering items (almost all of which Rails gave me completely for free, I’m not sure I’d spent as much as 30 minutes working on it); today, I tweaked the layout for that and then added the quiz functionality. So now I have a nice slightly AJAXy quiz page which shows the next question to review (if there is one), plus an “Answer” button; if you click on that, it reveals the answer, plus another pair of buttons to mark your answer as correct or incorrect. Click on one of those and it brings you to the next question, and updates the data base with the appropriate review time, winning streaks, wrong answers, etc. for the one you just answered. (And the next review time takes all of those factors into consideration, so you see harder items more frequently.)
Amusingly, the process of working on it gave me examples of how I can use it for things other than Japanese vocabulary review: I don’t program in Ruby in my day job, so I occasionally forgot bits of syntax and other functionality. So, from now on, I’ll just enter that stuff into the database! Which turned into a feature request: I was already planning on making sure that newlines were preserved, but I decided that I’d better make sure that indentation is preserved as well…
There’s a lot of work to do: it’s incredibly ugly (in appearance, the code is much nicer), there’s no search functionality, there’s no pretense at security (I’m running it on my home machine, so it’s inaccessible from elsewhere without ssh port forwarding), there’s no multiuser support. (Sorry, Jim and Praveen, you’ll have to wait a bit, but multiuser support is very much on the road map!) But what is there is genuinely useful, and (as far as I can tell) works. I’m planning to switch my vocabulary review over to it as fast as possible; and I’ve added nightly database backups, including offsite replication, in case anything goes wrong.
And my experience with Rails as part of this has been quite positive: I didn’t have any Rails experience before this other than what I’ve gotten from books, I’ve spent something like 6 hours programming, and I have something useful at the end. That’s really good, as far as I’m concerned.
This post has not been revised since publication.