October 31, 2018
Recently, I hit Day 50 of the ‘100 Days of Code’ challenge. I’ve been focused on language design, and I’d like to pause here and reflect on that experience.
I started by building a language written in Ruby called Awesome. I’d been eager to explore language design for most of this year, and this was a great introduction. Next, I moved into my current project, a language written in Go called Monkey. Monkey has been a much more challenging (I’m learning Go on fly) and satisfying endeavor. I’d like to thank Marc-André Cournoyer and Thorsten Ball for the incredible books that guide this journey.
I love how simple logic slowly builds into something unknowable even to most programmers. I love how small decisions inform the user experience. I enjoy thinking about tradeoffs that people have grappled with since the beginning of programming.
I hope that these projects help me write better code. I’ve gained a lot of empathy for language creators and maintainers; never again will I listen to the “this language is bad and here’s why” school of critique and not push back. It’s a reductive argument that doesn’t stand up to scrutiny.
This challenge has been really fun, even on the days when it’s hard to do. I’m committed to hitting Day 100, and I anticipate spending most of that effort on Monkey. There’s much to learn.