Jake Worth

50 Days of Code

Published: October 31, 2018 2 min read

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 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. Paraphrasing Steve Jobs, it’s a high floor of the technology skyscraper. From that vantage point, crawling through a collection of tokens is exhilarating. It’s not quite low-level, but it feels that way to me.

I love how simple logic slowly builds into something mind-breaking even to most programmers. I love how small decisions inform the user experience. I enjoy thinking about design 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 uncritically to the “this language is bad and here’s why” school of thought. It’s almost always a bad argument.

This challenge has been fun, even on the days when it’s hard. I’m committed to hitting Day 100, and I anticipate spending most of that effort on Monkey. There’s much to learn.

✉️ Get better at programming by learning with me. Subscribe to Jake Worth's Newsletter for bi-weekly ideas, creations, and curated resources from across the world of programming. Join me today!

Blog of Jake Worth, software engineer in Maine.

© 2022 Jake Worth.