Deep JavaScript: Theory and Techniques