This is the most educating thing I have seen on HN in a while.
I went through the code for each, starting with the simplest and working my way up to the much more interesting and complex.
The only thing missing is a way to edit the JS and see the result. Looks like it's easy to use an embedded jsfiddle[0], but I have not tried it myself.