I usually make my own dialects of languages that already exist, I got furthest making my own Forth and Lisp interpreters. As for why, the best way of learning a new language, for me at least, it to implement (or even just trying to implement) and interpreter or compiler for it. Despite being for learning, I have managed to make something semi-usuable out of both of them.
The interpreters are available at:
https://github.com/howerj/libforth
https://github.com/howerj/liblisp