Michael Weber: Random Bits and Pieces

...Please don't assume Lisp is only useful for Animation and Graphics, AI, Bioinformatics, B2B and E-Commerce, Data Mining, EDA/Semiconductor applications, Expert Systems, Finance, Intelligent Agents, Knowledge Management, Mechanical CAD, Modeling and Simulation, Natural Language, Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web Authoring just because these are the only things they happened to list.

Kent M. Pitman

Lisp Logo (by Conrad Barsky)

I attended ECLM 2006 in Hamburg, Germany. The good thing is that everybody and their dogs already wrote their impressions on the meeting, so I can just pick from Planet Lisp with whom I agree most. I refer to Christophe Rhodes and Juho Snellman for a good summary of the event.


The talks of Jans Aasmans of Franz Inc. and James Anderson of Ravenpack did not contain much Lisp meat, mostly marketing, nothing about why Common Lisp was the right choice and what were the problems and benefits of choosing it. Similarly, the PCMan talk from the Cadence guys did not contain much motivation why CL was being used over other languages (especially since they used Tcl/Tk for the interface anyway, via LTK).

Things started improving with Arthur Lemmens' talk about his persistance library Rucksack. I have seen Arthur giving a demo before at a cl-lc meeting in Cologne, which was great fun. So, when I saw the Lispworks editor this time I was immediately hoping for another demo in the same style, but unfortunately it was not interactive. Arthur was showing Lisp code, nevertheless. Also, he was mostly reading prepared notes which is really something to avoid when giving a talk, in my opinion, as it kills a lot of the dynamics.

Martin Cracauer of ITA Software gave a talk about how they optimized their airfare pricing software QPX to cope with the enormous search space. According to Martin, it was written in Common Lisp because there are some hairy algorithms at work, but Common Lisp still offers the ability to optimize at the bare metal if needed. Martin gave some example of this, but he also mentioned that they removed an optimization causing less consing and let the garbage collector handle it because it was not worth it: the GC was good enough. Additionally, these optimizations can be neatly hidden from programmers working at higher layers, for example with macros. This combination is not so easily possible with other languages.

I did not have the same worries as Christophe before the talk, mainly because I chatted a bit with Martin over lunch. We both basically have the same problem to solve, namely finding things in a way too large search space. Except that unlike QPX, we cannot easily cheat by checking only a fraction of the search space and then bailing out, because we are looking for serious errors in programs and protocols. In the worst case, if we would overlook an error in software used in an airplane, passengers would not reach their destination, instead of just paying slightly more for reaching it... Well, overdramatization aside, we are usually dealing with less life-threatening examples and case studies, which are just complex enough to test our algorithms under mostly realistic conditions.

I almost forgot to mention Klaus Harbo's talk on cl-muproc. He showed how Erlang-style message passing would look like in Lisp. It was interesting that most people in the audience seemed to at least know about Erlang. For me, the talk did not show anything new, given that I know Erlang for a long time, and some time ago Luke Gorrie kindly sent me slides of an earlier presentation from Klaus. As processes in cl-muproc are heavyweight for now, Klaus warned that one cannot just carry over the exact same style of programming as in Erlang, where one can create thousands of (lightweight) processes. Termite might be more interesting from this perspective, however, I am not saying that cl-muproc is without merits. It supports several supervisor behaviors, and far as I understood it was born from a need to develop fault-tolerant applications in CL.

In the last talk of the day, David McClain demoed SigLab, a Lisp application for signal processing. That was both an interesting demo of SigLab's (and CL's) capabilities, and a fun talk to listen to.

There were some announcements after the talks. Nikodemus Siivola pulled Steel Bank Studio out of his proverbial hat. A slide or two would not have hurt, though. He could have had some better (free) advertising, I guess, considering that at least two of the regular speakers mumbled something about SBCL support of their products being possible in theory, but there being some issues to resolve.


Besides the chat with Martin Cracauer, Randall Pitts of CogneSys cornered me during one of the breaks. Some time ago, I made connections between two of my former students and CogneSys, and also some more with other Lispers and him. It was nice meeting him in person, after the earlier email contacts.

I talked with some more people, but unfortunately I could not attend the dinners, because I arrived only on Sunday morning (after a five hours drive), and I skipped the Sunday dinner to finally catch some sleep. On Monday, Irina and I went sightseeing in Hamburg. We had very nice weather, and since we started early we basically had the city for ourselves. Things not to miss when in Hamburg:

  • Drinking hot chocolate at one of the Balzac coffeeshops
  • Miniatur Wunderland, the world's largest model railroad system. They have a model of their model train in their Hamburg city model (sic!).