My son needs to work on his times tables. To help him, I created a simple HTML5 application that drills you on multiplication problems. The image below is a screen shot of the app in action; click on it to open a static page with further instructions.
I came up with a gameplay mechanism that I think is fun and simple to understand. You can run out of time on individual problems, or answer them incorrectly. But you win only if you manage to answer enough problems correctly on the first try, within a fixed time limit (seven seconds). I also experimented with choosing problems based on difficulty—I had recently seen a very cool blog post that reported on a study quantifying the relative difficulty of multiplication problems. The app assumes most kids can easily multiply by 1 and 10, and is more likely to ask them to multiply by, say, 6 or 8.
In this post, I wanted to say just a bit more about the technical details. Although the program is very simple, it’s my first attempt to create an HTML5-based application, and so I found the process interesting. I wrote it in a programming language called Haxe, with the OpenFL toolkit. I’ve been following the progress of Haxe for a few years now, and I’ve been quite impressed with the features it offers.
OpenFL is a toolkit that permits the same program to be deployed to a number of targets. It’s currently experiencing some growing pains—they recently factored out the increasingly irrelevant Flash-alike core API, and are erecting a more principled infrastructure called Lime in its place. Lime looks very promising, but the implementation isn’t quite complete and the documentation is badly in need of an update. Still, I very much look forward to seeing where it goes.
I have a few other Haxe-based coding projects on the go at the moment, which I hope I’ll be able to demonstrate here later. I’m very much hoping that I can get all the way through the iOS app development process entirely within Haxe, because I found the intended process (based on XCode and Objective C) to be so excruciating.