14-Mar-2004 Cologne Meeting

Ten people were in attendance for this one, five from the BeNeLux contingent and five natives. They seemed to get good exercise touring the city, and I also got a little while waving my arm wildly with a cellphone in my ear so a couple of them could see which direction the meeting place was.

(Oddly enough, some waitress was waving back at me, apparently thinking I was someone else.)


Pascal's Lecture: "The Metaobject Protocol"

CLOS+MOP is certainly one of those very lispish things. Like Escher's drawing of two hands drawing each other, it allows the user to specify the system using the system's own mechanics in a "metacircular" way.

This was Pascal's first time giving this particular lecture, and I found it effective in breaking the ice so one can confidently move into the subject. There is a lot to the MOP: software engineering ideas, as well as an evolution from the simple dictatorship model of user interaction. Enough ideas to be distracting. So such an overview is useful.

Pascal started out with slides talking about the motivation from a user's perspective -- how does an implementor choose between two tradeoffs which vary wildly in performance, when only the user has enough info to competently decide? After sketching out how the metaobject protocol solves such a situation, he stepped through the various subprotocols' steps (listed at the end of Andreas Paepcke's paper), showing where the MOP opens things up to the user.

I think the MOP is an effective view into CLOS; it's boring to learn a static system where all the tradeoffs have been decided beforehand. It's interesting to see a dynamic system where you can join the dialogue if you're so inclined. And the big win is the dialogue may be a later optimization step, if ever.

(If you have a copy of "The Art of the Metaobject Protocol", I think the intro and chapter 5 would go along well with Andreas's paper. And there are more papers riffing on the MOP's design/engineering.)


Conversation

There was an introduction round before the lecture. Some random snippets of the ensuing conversation:

Lisp attack and defense

Herman Ehrenburg made the interesting argument that lisp may not play nicely in large projects. As you can imagine, this opened up a big debate.

This reminded me of Jonathan Rees's game-theoretic point about lisp being for the lone hacker and Java's sadomasochism existing to protect you from bad programmers. (My tentative opinion is that a powerful language can allow you to fashion a good defense. But I don't have experience here.)

Deadlines

Back during the December meeting, Arthur Lemmens mentioned that a client of his converted from C++ to the dark side, in order to meet a Christmas deadline. At this meeting, he announced success -- the deadline was comfortably achieved.

Of course, there was a solid business justification. The work was highly iterative where code was frequently rewritten, and the client made an educated decision after taking a long period becoming comfortable with lisp. [Paid advertisement: "Another Lispworks success story -- who needs Franz's '1st class environments' when you have a 1st class environment?"]

Candy

Should've been emptied into bowls or something. BeNeLux guests who hadn't attended the December meeting didn't seem comfortable opening packaged candy. Before the last meeting, a friend of mine had fun sorting colors into different bowls; must recruit her again.

ALU news

Ernst van Waning mentioned that the ALU (Association of Lisp Users) is soon accepting membership again.

Abstract algebra defined

On the way to the Borsalino, we sort of broke up into little groups, and Mario Mommer noticed I was reading a book on abstract algebra. I asked him what he thought the definition of algebra was, and he thoughtfully opined it was the science of binary operations. It's very rare that these terms are defined, much less using the interesting term "science" in this context.

Organic paradigms

At the Borsalino, I mentioned one of my pet theories that as software becomes more complex and organic, things like dynamically scoped functions and the Conditions System will evolve into a new paradigm in its own right.

(Earlier, Pascal lent me a copy of Robert Floyd's Turing Award lecture "The Paradigms of Programming" -- the sanest treatment of paradigms I've ever seen. It seems back then he viewed software paradigms as these little techniques that a complete programmer might be conversant with. Now, they've "evolved" into religions, and warring martial-arts schools.)

"How can there be methods and systems to arrive at something that is living? To that which is static, fixed, dead, there can be a way, a definite path, but not to that which is living. Do not reduce reality to a static thing and then invent methods to reach it." -- Bruce Lee

Incidentally, that Floyd lecture even mentions his first epiphany with lisp.

BeNeLux meeting

I recently heard the BeNeLuxers have scheduled their Amsterdam meeting on April 25. As I hear (and this is tentative) there will be three macro-themed lectures: macros, codewalkers and compiler macros.

Oh, I recently noticed Arthur was credited with helping out the Series folks with their implementation. So if you are a functional junkie looking for the next lazy eval fix, remember to speak with him.


Main author: Tayssir John Gabbour

This page is linked from:

Cologne