See the article : http://blog.greweb.fr/?p=2130
See the example running : http://greweb.fr/glsl.js/examples/balls/
Fork me on Github : http://github.com/gre/glsl.js
EDIT:
In my video, I've talk about the loop limitation, it's actually defined by ES 2.0 ( see Appendix A of http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf )