DSLs in Groovy
groovy-lang.org
groovy-lang.org
All the DSLs look cool on the surface, but they are all based on syntactic tricks that have subtle and unintuitive failure modes. When you mistype something in one of these DSLs, the error that comes out of the Groovy parser will make almost no sense to a naive user, and it is not easy to fix that and make it friendlier. It can lead to a really hostile user experience which doesn't end well. I think this is one of the reasons there is quite an antipathy towards Gradle amongst many people, because it is essentially a Groovy DSL and even among programmers this experience where there is no real intuition or understanding of how the language is getting interpreted is very frustrating.
I've written a fair amount of Groovy, but it's mostly been simple stuff integrating with Gradle or Jenkins. Maybe I should give it a try on a more significant project. There are a few features that make it quite interesting and some ideas that I think other languages could learn from (the one that leapt to mind is the Elvis operator for a special case of null-coalescing).