As of this writing, I'm most of the way through Chapter 8, stopping just before actually implementing blocks.
Honestly, the biggest points of confusion for me were that I never stripped my "challenge" code out, so the syntax of the language I'm developing has some capabilities that aren't in the book. I made the call to hold the values inside "cells" instead of storing them directly, because checking tables for false and nil is kind of fiddly in Lua, so it's easier to wrap them.
One thing I've wanted to try in PL stuff is having an operator that applies to a function, an unevaluated expression, and a block, or something along those lines, with the idea that this would allow expressing control flow as library functions with syntactic sugar. Alternatively, a syntax that would support calling functions in that way.
For now, I'm reading ahead, because I want to see what the bytecode interpreter is like, and get some idea of which language I want it to be in. I'll try to get through reading about classes tomorrow, look at the next section, then circle back to chapter 8. For now, it's late.
Oh, hey, I stopped doing the horizontally ruled section dividing stuff for no compelling reason. I'd like to bring those back, but I'm sleepy right now.
So, I'll just say that next time, I'll look back over this week.