JavaScript Puzzlers: Puzzles to Make You Think (and write fewer bugs)