In three distinct but related sections, Raymond de Lacaze presents and describes metaprogramming, metaclasses and the metaobject protocol.
Metaprogramming, is today somewhat synomous with the notion of programming with macros. Ray describes in detail what macros are, how to write them correctly so that they are hygienic, how to debug them and when to use them. Examples are provided in Common Lisp. He also briefly describes what meta-programming looks like in other less homoiconic languages.
Metaclasses are described along with what they are used for and can accomplish. A specific use-case is examined in depth. This is done in the context of the Common Lisp Object System (CLOS) and a brief introduction to CLOS is provided.
Metaobject protocol leverages material from the seminal book "The Art of the Metaobject Protocol" (AMOP) and describes the problems that MOP's were designed to solve. Ray explains how to design and implement a metaobject protocol for CLOS. Specifically he examines code that implements the 'defclass' macro which is CLOS's class definition mechanism, and extends the implementation to support metaobject protocol functionality.
Finally, time permitting, Ray shares his personal ideas on what it means to have a meta protocol for Clojure and how it might be useful.
Pizza, beer and soft drinks generously provided by Meetup.