The post is pretty subjective and doesn't sound like it comes from someone who spent much time w/ coffeescript.
If you're gonna hate on it, there are much more significant things to hate on:
- whitespace are significant in a hard-to-spot way, e.g. `foo () ->` vs `foo() ->`
- it adds a lot of potential for ambiguity and the need to revisit syntax in existing code when editing it, e.g. going from `foo(1)` to `foo(1).bar(2)` in js doesn't require deleting text in existing code. In CS, going from `foo 1` to `foo(1).bar(2)` does (and have fun grepping for the variations.) Another example: take untog's promise example and add a reject callback.
- accidental implicit returns and variable shadowing bugs do happen and they're not very easy to trace because they break code elsewhere instead of where the problem is
- Coffeescript doesn't provide a systematically superior environment (e.g. compare to compile-time type checking in Typescript or immutability-by-default in Clojurescript), but being a transpilable language, it does create significant downsides (need for a file watcher/build system, limit hireability/hinder initial productivity for non-CS devs, etc)