I think this is a well-thought out article. We use Scala quite extensively at Hulu, and it is important to use its more powerful features only when they really make sense. You can do quite amazing things with the language, but it doesn't mean you should.<p>I think a classic example of going overboard with Scala is a dispatch library - even as someone who writes Scala extensively, it is incomprehensible to me. On the other hand, for certain tasks, being able to craft an internal DSL is a great thing. For a hobby project I once wrote a DSL for a simplex solver in Scala, turned out pretty neat:
<a href="https://github.com/ZenBowman/AIMA/blob/master/src/test/scala/org.zenbowman.linearprogramming/LPLangTest.scala" rel="nofollow">https://github.com/ZenBowman/AIMA/blob/master/src/test/scala...</a><p>And then there's a great version of embedded BASIC in Scala:
<a href="https://github.com/fogus/baysick" rel="nofollow">https://github.com/fogus/baysick</a><p>With great power comes great responsibility, and it is important to remember the Perlis rule:
Syntactic sugar causes cancer of the semicolon