Project idea: From Bambam to Lisp

Do you know Bambam? No, not this nice track by Sister Nancy, I mean the Linux "game" for toddlers. The screen is locked (all keystrokes and clicks go to the program) and every key pressed and mousebutton clicked results in a randomly places letter, image or sound. Very nice if you want to give your kid the opportunity to "use" your computer without damaging anything (well, anything other than the hardware).

Currently it is very simple. Imagine it would be more complicated, with rules that govern the placement of symbols. With some playing around, those rules should be obvious. When you write something intelligible, something different could happen, so you "unlock" more functionality by understanding the rules. The rules should start really simple and then allow for unlocking entire new modes of playing, maybe more complicated games (like TuxRacer). Then, at some point, one could have rules that involve very tedious typing until one can start the next game or the next level, but at the same time provide a scripting engine (some flavor of LISP for example) and some explanations how to use it. The kid could get rid of the annoying part of the rules by writing scripts. And then go on and use the programming language to find out more about the game(s) and ultimately about the programming language. In the end, it could unlock Wikipedia, YouTube and finally the whole WWW.

I heard so many stories of people breaking the parental lock in their parents' TV when they were kids. I'm sure today's kids can "break" many more such "locks".

I'm sure much has been done to introduce kids to programming, and some programs are out there that teach basic usage of mouse, keyboard and touch screen (and voice input?). I just aim for a continuous path starting at the level of Bambam (or even below).

For developing something, I guess any crazy experiment would be fun. The test subjects have a lot of time :-)

[UPDATE 2014-02-12]
I took some time to re-write the old Bam Bam to get less and cleaner code that runs on Python3, putting some more features in it that should make it easier to modify it later on. My next task would be to include some kind of piano (preferably using a MIDI synth), but I have no experience with that stuff. I guess there is a decent MIDI library for Py3k that I can just use (with Pygame / inside Pygame?). Do you know one? Do you have other ideas for this project? I'll put the thing on Github as soon as I have done the next round of code cleanup (to get rid of most of the old code).

Another idea I had recently was to not go directly to Lisp one day, but explore the beauty of combinator logics instead. Now I have to actually read Smullyan's book on mocking Mockingbirds whereof I had previously read only a rehash of the part that deals with fixed-point combinators. Back then, I was so impressed that I subsequently had named my new laptop "sagebird", which is slang for such a fixed-point combinator.

[UPDATE 2015-02-01]
Now I found some time to re-write the code even more, obtain some public domain graphics from the Tango icon project and some public domain sounds from pdsounds (which I cut a little bit) and finally made the rewrite public:
GitHub: Bam Bam Bam.

My son (now roughly 1.5 years old) is still hooked on this silly game!

[UPDATE 2015-03-12]
In the latest version, every letter makes the sound of this letter (although this is really a German-specific thing for now). This makes a very different gameplay for my son, who is now really trying to use the keys on the keyboard to hear a specific letter. This seems to help him learn reading letters (and he loves it, which is the important part).

Now I'm impatient when I'll find time to implement more "modes" to play around with ideas. Hopefully someone else (with kids and a programming background) will fork and experiment. You're invited!

My brother wants me to port it to Android, which should be possible in principle, since the PyGame library (at least some parts of it) were ported. It would also be relatively easy to just re-implement it, as the code is just 3 screen pages long.

See also my other project ideas.


2 Responses

  1. A lovely idea! You could also end in Lua, instead of Lisp.

    Such an app is also needed for Smartphones and tablets. The most important task is teaching how to read and type. With a touchscreen, you could start teaching the concept of a decision: Tap left big key, something happens. Tap right big key, something else happens. If you tap a key very often, it splits into two smaller keys. In the end, you get the alphabet? If you type in animal names you "unlock" sounds? First it was enough to just type the first letter of the name?

    E.g. see an elephant and the "E" symbol. Touch "E", you see and hear the elephant. Later in the game, you need to touch "EL". etc.

    And then, one day, you unlock wikipedia!

  2. Teaching kids how to type is a delicate business - I remember reading studies that kids' motor skills are much better if they start to learn writing with a pen and only after mastering that move on to typing, than in the other direction. So it seems that typing skills hurt other motor skills, though I can't offer any explanation of this phenomenon (except the typing-first kids may lack practice in their motor skills).

    Given that, I'd prefer to teach kids anything besides writing. On today's smartphones and tablets, one could as well include some kind of writing with a pen. I'm fairly certain that we'll see a lot more toddler-specific tablets in our playrooms in future.