I think his real point is that there's no 'truthy', no evaluation to true. Later in the article he says that
if (a) a.foo();
isn't possible because of that. A better example would've been (a != null) instead of (1 == 1), imho.> This seems to directly contradict the first point. Which is it? It should do a dynamic type check and generate a run time exception in both cases. I don't see anything to convince me that "2" + 2 will be a concatenation... in the spec.
Not in the spec itself, right. But the current documentation seems to imply exactly what he states. See the definition of '+' here: http://www.dartlang.org/docs/api/String.html#String::String
"String +(Object other) Converts other to a string and creates a new string by concatenating this string with the converted other. "