Jim, aka “Jeem” to many computing friends and colleagues and “Moth Man” to his Lepidoptera friends, will be fondly remembered by the many friends made over the years (Bell High School, Carleton University (as a Honours BSc graduate, computer programmer at the former Centre for Computing Services, and Assistant Professor), University of Toronto, Knights of the Lambda Calculus, Xerox PARC, Object Technology International (OTI), IBM, Photography Collectors Group, National Gallery of Canada, Camera Club of Ottawa, School of Photographic Arts Ottawa (SPAO) and the Museum of Nature) along with those gathered through his photography and mothing passion.

Kiczales, des Rivières, and Bobrow show that the “art of metaobject protocol design” lies in creating a synthetic combination of object-oriented and reflective techniques that can be applied under existing software engineering considerations to yield a new approach to programming language design that meets a broad set of design criteria.

One of the major benefits of including the metaobject protocol in programming languages is that it allows users to adjust the language to better suit their needs. Metaobject protocols also disprove the adage that adding more flexibility to a programming language reduces its performance. In presenting the principles of metaobject protocols, the authors work with actual code for a simplified implementation of CLOS and its metaobject protocol, providing an opportunity for the reader to gain hands-on experience with the design process.

In his 1997 talk at OOPSLA, Alan Kay called it “the best book anybody’s written in ten years”, and contended that it contained “some of the most profound insights, and the most practical insights about OOP”, but was dismayed that it was written in a highly Lisp-centric and CLOS-specific fashion, calling it “a hard book for most people to read; if you don’t know the Lisp culture, it’s very hard to read”.

Somechapters of the book are available online, and Amazon has the paperback. I haven’t seen the hardback version anywhere.