I enjoy creating programming languages.
The joy, the self-surprise of writing a first original program or stringing together an original sentence in a foreign language, but now one whose words and grammar you have forged out of baser things.
It turns out I've written a few small ones on purpose, and many more by accident.
I've also implemented a couple using Dart. Dart has been unreasonably productive to work in, both by virtue of its design and the excellent tooling and documentation that surround it. I just have to walk around the sharp edges of mutable state a little more carefully than I do in Clojure.
Keep an eye on the mini-language feed for upcoming posts about how and why I made some of these languages.