Part 3: Notes, reflections, and story-telling regarding chapters 11+ of Build Your Own Lisp). Read pt 2 and pt 1.

I just closed the back cover on Build Your Own Lisp. I’d fallen off the train on this one a bit; I read to the end of the book, but I couldn’t follow through on typing out everything to the very end. Here’s a scattering of notes/reflections:

The Environment

The environment and lexical scoping now register “under the hood” a lot better. I remember the first time I tried to understand lexical scoping and the environment in JavaScript when I first started to learn to code. It was illuminating to build the actual environment.

Error Reporting

I got the most bored when I had to implement error messages. I have a few ideas why that happened. Generally, when I’m building something for myself, I’m thinking about the best-case, best-usage scenario; I’m not thinking about error reporting at all, because why would I write a program that has errors? I must be good at computers. Admittedly, this still happens when I’m building side projects or tools for myself.

So that chunk of the book cemented that I have a ways to go both in mindset and in my capacity for user empathy (ie, this is not just for me).

Respect for Creators

This book was hard. It made me feel like I definitely don’t have a degree in CS (I don’t). It also made me feel like C is trickier than I thought (it is because I haven’t written enough of it). My comfort with Lisp, in general, was high enough to enjoy seeing how it was made, but my comfort with C was not quite there. Working with memory concepts, double pointers, and even thinking in structs and type definitions are not going to get easier unless I write more code with them.

It was pretty cool to see how the macro-esque system was implemented, and helped me think about code as data.

My respect for language creators has certainly doubled (or quadrupled, at least). I think, if anything, this book had made me appreciate the many languages that are made available, FOR FREE (and not only that, but that creators are setting aside any time at all to encourage / foster community around a language). It kind of blows my mind.

Learning Curve

It’s easy for me to get stoked about trying out new books and learning resources, but it feels like I’ve often gone head first thinking that the learning curve is going to be linear. In my experience (at my experience levels), it hasn’t. But that’s ok too. I think I wrote about this in a previous post somewhere, but I think that broadly speaking, I’m stretching the elastic just a bit farther into territory I don’t understand, and someday it’ll snap back to me. And if not, (and in the meantime) at least I’ll be able to pick up some of the more simple concepts that were either off my radar.

In fact, things might be better this way. I think I’d rather hurt my brain with yet another book with a surprisingly difficult learning curve, then coast through something that just re-affirms knowledge I already have. I’m trying to get more comfortable with being uncomfortable. The feeling sucks, though, when you feel like you’re wading through the mud and not making any progress.

Generally, if I’m not having fun with something like this, then that’s a red flag. I’m doing these things in my spare time, as it is, so I need to have a positive force motivating things behind the scenes. In the end, my motivation did wane, I think out of either a) losing interest or b) not feeling up to the task (either from a lack of experience or something else). In either case, there’s always something on the backlog to switch in.

All in all, I’m excited that I read through the book in some capacity, and that I wrote about it as well. Unfortunately, I’m spending less time writing a lisp these days (ie, not for my day job), so I’ll be on the lookout for more ways to keep those parens clashing.

(((((((( Thanks For Reading. ))))))))