At the start of the program there is a for/in loop that goes over the properties of the canvas context, and adds a new property, with a shorter name, for each of them. It took some experimenting to find an abbreviation algorithm that doesn't have clashes on any of the methods we use---I ended up using the first letter of the name plus the the 7th letter, if any. So lineTo becomes l, and quadraticCurveTo becomes qt. I can then use these short names to actually access the methods---without ever having written out the full name.
Not a bad choice, methinks. That's an amazingly polished experience for sub-1k. I do wonder if some of the arguably-better submissions were excluded for bugs, though I think I'd do the same in a competition. Readily-apparent bug = disqualified.
The chess entry doesn't support a fundamental game move (castling). I'd consider that a bug but last time someone pointed that out they got blasted on HN.
I'm struggling to understand how the hell this is done. Is the whole thing generated in code (as in the imagery/graphics) or are they external elements that are loaded into the application and manipulated in the code?
I can't help but say that I think that there were more deserving demos, in terms of how impressive/fun they were compared to the winner, though I'm glad to see the chess one up there. Not to knock the winner though, it's also a good demo and probably won because of better cross-browser compatibility or something.
Clever.