This is WAT makes TypeScript good

By now I’m sure you have all seen the hilarious WAT video, but if not here it is for your viewing pleasure:

The very first question that the speaker Gary Bernhardt poses (after the Ruby parts) is that of what is expected when you execute the following javascript:

[ ] + [ ]

He says in that video that he would expect an empty array to result or he would also accept a Type error. But what you actually get when this is run is an empty string. Then we all WAT and laugh. He shows a few other examples of questionable things that javascript will do without any problems whatsoever.

So lets take this famous WAT-inducing example over to the TypeScript playground and lets see what happens…

Type error! So this is wat makes TypeScript good 🙂

DNS Move

My site was down for less than 24 hours recently due to transferring my DNS registration away from godaddy and over to So far I am definitely liking it better. I’ve been meaning to transfer off of GoDaddy for a while because I can’t stand them but this whole SOPA situation finally pushed me over the edge.

Should be back to normal again!

MemeCats: Chemistry Cat Strikes Again (via Lolcats ‘n’ Funny Pictures of Cats – I Can Has Cheezburger?)

MemeCats: Chemistry Cat Strikes Again Schrodinger's cat walks into a bar… …and doesn't Calcium plus magnesium equals lolz. … Read More

via Lolcats 'n' Funny Pictures of Cats – I Can Has Cheezburger?

The COLM Programming Language

My mind is reeling from this link. Read the Ph.D. Thesis if you can, it’s got a very detailed description of parsing techniques and also outlines COLM pretty thoroughly. COLM shares a LOT of things in common with MetaSharp. There are enough differences that I’m not too worried but lots of great ideas in here.

The primary difference which, I’m now jealous of, is that in COLM the patterns appear to be more like objects, while in MetaSharp they appear to be more like functions. You can declare matches and treat them inside of expressions and statements as variables and perform match operators on them inline. Very cool. I think that I could actually do something like that too… maybe construct a Type that holds the function and also a function? I’ll have to think about it. Also, the patterns have variables associated with them, which is something I was thinking about doing too. Except I was going to create a let statement but this is different still somehow, it’s like they are simultaneously patterns and nodes, that’s an interesting idea. Also while reading this I can see that my notion of the “PatternContext” that gets passed aroudn is probably useless. I think that I can totally just create local variables that get passed into the constructor instead. That would be so much cleaner. I can see that is how they are doing the symbol table also.

Also, I don’t think that you need to formally make a lex and token types. I think those are just normal patterns and matches. It gets very esoteric in a lot of places also, a lot of implicit variables and some functions I’m not sure where they’re coming from, seemingly random empty brackets [] peppered around. But I’m really glad to see that my idea of putting arbitrary statements in productions is not totally crazy.

Tons to think about now!