quiltro.org

The shape of Yip! to come

Published on

This is a post about Yip!, an experimental programming language I’ve been building. I took a small break from working on it, went to a furry convention which was super fun, but now I’m back and here’s what’s going to happen.

Truth is, I’ve been struggling with burnout. I wrote the first iteration of Yip! in around five and a half weeks, spent countless nights without getting enough sleep, riding on the high of getting a new thing I was proud of to work. And then, suddenly, one day I looked at it and I realized I hated what I had built.

Hate is a strong word, and it’s the wrong word, but I didn’t know it. I had given five weeks of my life to this project, and suddenly not knowing what to do with it was… devastating, to the point I wanted to give up. I didn’t, as you can see. I turned my efforts not to the runtime, but to the semantics it implements, and wrote a small informal specification for myself that guided me on what I wanted Yip! to become.

And then, another round of devastation: I realized I had outgrown the design I worked myself to the bone for.

Only now I’m realizing it’s really not that bad. I spent five weeks building my idea of the language, revising it in the process, ended up with code I didn’t like. No big deal. People are still interested in the idea, as much as I tell myself the code sucks. The design might be flawed, but those same flaws taught me what to do better next.

My problem, in retrospect, was my eagerness. I kept adding things, I kept experimenting with new ideas, without care as to what it did to the language. Lots of these ideas got retrofitted, without much thought for how they’d interact with the rest of the system.

So, I’m rebuilding Yip! from scratch. Same language, same name, near-identical syntax, a smaller and more coherent core, one that you and I can hold in our head.

I don’t know how long this rewrite will take. I couldn’t have started it without those five weeks of restless work, but I can promise you I won’t be pulling all-nighters working on it again ;)