Heh, I implemented almost exactly this same thing several years ago in Python[1], with the main difference just being the amount of polish and feature set. (I was, and continue to be, a very distractible person)
Good to see the idea getting more traction!