14-Dec-2003 Cologne Meeting
The last meeting in Cologne was entertaining. In some communities, "user meetings" are kind of depressing. Fortunately I did not at any point feel like a 'user'; instead we were just people meeting to discuss a common interest.

Of course, it helped there were some new victims, two of whom came all the way down from Amsterdam, to help stir the pot.

Pascal's Lecture: "Dynamically Scoped Functions as the Essence of AOP"

Pascal Costanza argued that dynamically scoped functions were at the heart of Aspect-Oriented Programming. He twice presented this to Java audiences, and fortunately many of the concepts seem more quickly grasped by lispers.

He introduced the dflet macro, which allows one to dynamically rebind a function just like a special variable. In addition, you can invoke call-next-function within that function redefinition when you desire to call previously bound versions. (i.e. you can access definitions higher on the stack.) This way, you can meet new requirements like logging without touching old code.

All this is implemented in 52 lines at the end of his paper. Slides are also available.

I personally hadn't yet looked closely at Aspects before, so I can't judge the lecture from an AOP expert's standpoint. However, Arthur Lemmens seemed very interested in Pascal's 52-line Lisp implementation in its own right, since he felt it would make a very useful technique for his professional lisp work. Hopefully someone will run with this technique; Kent Pitman once mentioned dynamic functions were once up for standardization, and the dflet macro may be key for exploring them sanely.


The conversation before Pascal's lecture was lively enough that people complained of hunger pains because time flew. (An effective way to track time.) Some random snippets from that conversation:

What is the ALU?

Ernst van Waning is a member of the ALU board, and naturally we were curious about this esoteric bunch. He explained it a while, touching upon how Ray de Lacaze singlehandedly organized the NY conference, and noted that at this point "grassroots" was the likelier model than some centralized command & conquer. I got the impression (and it could just be my mind filling in/making up stuff here) that the ALU was formed in an environment when there was a large explicit market for lisp, and a central channel needed to exist to unite some dialects. These two conditions do not exist today, so no doubt the ALU's scope is limited for now.

Incidentally, conference vids were brought up. Maybe some small clips of the proceedings be made available, so new people could see something interesting? Arthur (the other half of the Amsterdam duo) mentioned Ernst gave a tutorial about macros there. I don't know the audience level of that tutorial, but such things could be useful. Or the Sussman keynote could appeal to a mainstream audience, an early form of which is at www.aduni.org.

Marketing -- hot or not?

This was kind of a silly topic, and as we all know, everyone has an opinion on those. I think it was pretty clear none of us respects anyone who lays on the Big Sale. I personally do enjoy when newbies ask about lisp, because they force me to question assumptions, but frankly if someone does not love what they do, what possible reason would anyone want them to use lisp? There are those who are interested in lisp without "knowing" it yet, but lisp is now so close to the surface that it suffices to answer peoples' questions honestly when they come up.

As a side topic, we noticed the culture shock of dealing with other language communities. For example, with Pythonistas it's disturbingly common to claim, "Guido said X. I don't think Guido wants Y." Feel free, dear reader, to judge what effect this must have on users.

Cliki security

Tiny topic. Security model:
  • Too easy to hack, so who wants to?
  • If there are many users per lone gringo, the defense is spread over many editors, most of whom won't even see the defacement.
I found it an interesting design tradeoff that Cliki was written from scratch, so it doesn't have the sweet version control rollback systems of older wikis. I find it the right decision since it kind of has to be in lisp; yet it's sensible to note the disadvantages as part of design curiosity. As I understand, the main anti-malice defenses for Cliki are freezing it for a couple days, backups and low hackability interest.


M&Ms. Arthur had a weakness for sour candies though, so the 80/20 principle must be minded. Bottled water had a monopoly on the pre-Borsalino beverages, so its success was unsurprising.

Roads to Lisp

Big topic with many branches. You can read Pascal's entry on Cliki; he related the Richard Gabriel "only the creatively intelligent can prosper in the Lisp world" challenge. I think this little red pill really works on some people.

Peter Herth created a multiplayer realtime MUD, and felt Java and Python did not give him the dynamism he wanted. So he discovered Scheme which provided a wonderful extension language. Then he went over to the dark side with Lisp for standalone projects.

Mario Mommer and Marcus Breiing did not refresh my memory over email, so I will let them post here or on Cliki if they wish.

I am also fuzzy on Arthur's background, but he mentioned how generally his clients are glad to let him determine the choice of tech. So he uses Xanalys Lispworks. [Paid advertisement: "Lispworks -- when Franz just gets you NOWHERE."] However, he had a scientist client who insisted on C++ because it made him comfortable to know a little of what was going on. Arthur nudged him a little over time, since they were doing exploratory work and he knew Lisp would save the client money; but of course the customer is always right in the end. However, the client came around to the dark side since a Christmas deadline loomed. Arthur noted that despite a rewrite, they were happily on schedule to comfortably meet the deadline.

(A discussion ensued here about methodologies relative to the different languages. Ernst pointed out the efficiency of the waterfall model; while it’s clearly not amenable to requirement changes, it’s still the most efficient when one can pull it off. For those interested in such things, I heartily recommend McConnell's _Code Complete_.)

Ernst was "electrified" when he learned of Lisp macros, and had a good time using SICP with his students. He had some interesting info about what percentage of his students desired to "push on” and become very good, as opposed to those who sort of plateaued and became satisfied with relatively modest goals. Apparently, he got sick of academia when (among other things) his fellow profs acted in the stereotypical manner when discussing lisp, and eventually he left to pursue professional goals.

Personally, I just kind of blabbed something to the effect that I had previously wondered why all the power of computer modelling could not present a sane, regular representation of computation.

Greek letters and academia

During the meeting before, Mario Mommer gave an impressive lecture on his macro language for his work in numeric analysis. Pascal strongly suggested he publish a paper, on the reasoning that you ideally want 3 things from a paper about a computing system:
  1. real-world applicability
  2. actually implemented
  3. novelty

Apparently too many papers lack all 3, while Mario’s fulfilled them all. So he was already ahead of academia’s current standard.

Pascal also related the anecdote illustrating how relative a concept “readability” is. He always had trouble deciphering those greek letters which CS people use in formulas. At a conference, he asked a friend to try out lisp, since he secretly felt her greeked-up papers were unreadable. She replied Lisp was so hard to read...

Incidentally, Paul Graham also pointed out the sad madness of greek letters.

Control structures

At the Borsalino I asked Pascal, who researches languages, if he thought functions were a limiting abstraction. Perhaps they were holdovers from the mathematical world and not geared to computerdom? I expected him to say something like, "Oh, continuations are best of course."

I believe he said his crazy fantasy was dynamic functions as default. A friend of mine visited and wanted my attention, so he mostly expanded to Arthur on how this could be made to work. Sigh, my loss.

Erik Naggum trollin’

I remember a couple people discussed the success of lectures, and I casually joked about how Erik Naggum would be a top draw. Ooo boy. Heads perk up at He Who Must Not be Named. People unknotted from their private conversations. I escaped the carnage by talking with my friend, who didn’t know and didn’t care about some random Erik fellow.

Later lectures

Peter will be giving one on "Python for Lispers."

As I wrote this, a new person asked about the meetings. I haven’t checked up with him yet, but perhaps he can give one on Agile Methodologies. These were mentioned during the meeting, and not everyone was familiar with these promising new (?) methodologies.