I’m reading a fine classic of programming, The Art of the MetaObject Protocol.

It’s interesting how dated some of the assumptions in it are. For instance, it reads as though they’re being intentionally obtuse, but only because I’m now so used to these ideas from Ruby – when the book was written, this was obscure, fringe stuff and there wasn’t a good vocabulary for it.

I had somehow gotten the impression that the book was about designing extended REST APIs, or what we’d now call a HyperMedia API. That impression now appears to be ten kinds of wrong.

Instead, it’s about extending a language upwards, using macros, in many different directions at once.

Suddenly, I’m seeing possibilities that Ruby hasn’t got, or has screwed up pretty thoroughly. Interesting.

Though it seems like the commentary on metaobject protocol in Ruby is pretty weak in general.