Projects Can Sometimes Be the Worst Way to Learn JavaScript
sitepoint.com