Jake Worth

50 Days of Code

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.

Language design fascinates me. In my daily work, I live in frontend JavaScript code. To paraphrase Steve Jobs, it’s a very high floor of the technology skyscraper. From that vantage point, crawling through a collection of tokens is exhilarating. It’s not low-level, but it feels that way to me.

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.

Jake Worth

I'm Jake Worth, a developer at Hashrocket based in Chicago. Learn about me Follow me on Twitter