So, the 2006 European Common Lisp Meeting is now over, and I had fun.
For me, the meeting began on Saturday evening, though I hear that some of my younger colleagues had arrived earlier and sampled more of the available tourism and alcohol. Which, in retrospect, was a good idea, because the Saturday dinner was the only time I had available to visit Hamburg itself, and the dinner was held in a restaurant off the Reeperbahn, which turns out to be a touristy red-light district. Oh well; I will have to defer the pleasure of admiring the Gate of the World to a future visit.
The dinner crammed 90 people into a first-floor restaurant room, where we sampled typical Hamburgian fare and made or renewed acquaintances. I chatted to Peter van Eynde about Debian (Lisp and politics, sadly intertwingled), Rudi Schlatte and Dave Murray about multimedia content indexing and metadata. At one point, I was pointed out from afar, apparently to demonstrate that I am not as scary in the flesh as I am as a disembodied pair of nicks on IRC.
Since we hadn't already paid for our drinks at the dinner, consumption was moderately restrained, which I think helped attendance at the 9:30 start of the meeting proper. The room wasn't quite full, which probably meant that there had been some last-minute cancellations – there was capacity for 125 attendees. The first talk, AllegroGraph: a large scale graph database applied to the Semantic Web and telecom fraud detection was given by Jans Aasman of Franz Inc., and described an application of their AllegroCache product for storing RDF, querying OWL and buzzwording the Semantic Web. I couldn't get myself enthused about the technology, though of course it's fine that Franz is making money selling this stuff to companies; the ontology/semantic network stuff is too static to represent changing information, which is the interesting bit. AllegroCache and the Prolog as query engine is neat stuff, of course, but since that was last year's presentation from Jans it doesn't count as new and exciting. The final disappointment was that no mention was made in the talk of telecom fraud detection.
The organizers of ECLM2006 are both smokers. Since they got to design the schedule, they put 5 minute breaks between every pair of talks that didn't otherwise have longer intervals. For those of us who don't smoke, this was an opportunity for coffee and chat, which is the important bit of these meetings. I spoke to people who I only new from IRC and mailing lists, and even to some whose names I didn't recognize at all. Good stuff, and I hope that this habit will continue (though the smoking should stop: I was surprised at how many of the attendees smoked; it was at times quite oppressive).
James Anderson's talk was titled Lisp tools for time series computations, which was of potential interest. Sadly, most of the talk content was about the difficulties of dealing with real-time data: Ravenpack build tools to make predictions of market indices based on non-market data (e.g. news stories) as well as market data (past prices, trading volumes). Again, the actual material was slightly unconvincing, this time because it was revealed that the company backers do not use the company's software, but merely sell it to day traders. (As my neighbour whispered to me, "day traders will buy anything"). The scientist within me was extremely disappointed that the predictions didn't even come with error bars attached, or indeed any kind of stability analysis: indeed this was quoted as a problem, where notably different predictions are made if data come in or are analysed in slightly different orders (or if a butterfly flaps its wings in the data centre). Oh well.
We got a talk about design tradeoffs in building a persistence library for CLOS from Arthur Lemmens' talk Rucksack: a flexible, lightweight, open source persistence library. Indexing strategies, root sets for the (incremental) garbage collection, collection strategies, concurrency issues, and so on, were discussed in some detail. Arthur also had the honesty to say that the library was still evolving – even saying that it was not finished yet – so there's no download link. One interesting thing about Arthur's design is that it is very much a userland library; the way he was describing it, he'd used very few hooks into the compiler and environment he was developing on, so it should (famous last word) be relatively easy to port between Lisps.
Then the folks from Cadence GmbH talked about The PCMan meta version control system: Common Lisp from top to bottom. The problem they were describing was how to manage multiple versions of code bodies from multiple sources, with various restrictions on redistribution, and various properties (such as whether they are binary blobs or text). They described their system, which ended up being a discussion of how to keep information in a database synchronised across multiple clients; a problem that Marc Battyani has talked about and demonstrated before. They also demonstrated ltk, which is neat – I've heard good things about ltk-remote, though they didn't demo that – but uncompelling to someone who doesn't do the fields-and-widgets style of GUI.
By this time I'd had just about enough of talks about difficult things one can desire to do with Lisp and databases. Fortunately it was lunchtime, so I got a chance to refuel and to talk with others. Nikodemus and Rudi had a long discussion about extensible streams (a topic that Jörg Höhle and I chatted briefly about later), and I think it was at this point that I talked to Lutz Euler about vectorization and x86-64 stuff. There were plenty of people I would have liked to chat to longer or indeed at all, and failed to; such is life.
The next talk, Common Lisp in a high-performance search environment was from Martin Cracauer of ITA software. As he started talking about the size of the database and the search space for the problem of finding an optimal price for travelling between A and B, my heart sank, but I was soon relieved as we neatly avoided another talk about interfacing to databases and instead heard a discussion about some impedance mismatches between Common Lisp and really high performance: things such as structures having header words (for type and length information); arrays of structures necessarily being arrays of pointers; the tag bits in a lisp object necessarily restricting the range of an unboxed integer, and so on. He then talked about the various ways in which ITA uses Common Lisp to solve these problems: using CMUCL's system-area-pointer; going beyond that and punning fixnums as pointers to word-aligned data (which works because of the tag bits); and discussing features of the Lisp compiler underlying CMUCL which assist (such as being able to do full untagged 32-bit arithmetic within function boundaries). He did also assure the audience that there were applications in use and development at ITA that do use more traditional CL style, with CLOS, functions, conditions, and so on.
cl-muproc: Erlang-inspired multiprocessing in Common Lisp from Klaus Harbo did more-or-less what it said on the tin: it was an embedded language for doing Erlang-inspired multiprocessing in Lispworks. It built on the provided concurrency of the underlying Lisp, so it suffers in comparison with Erlang's processes as each Lisp process is relatively heavyweight, but the basic demos that we were given looked quite like the Erlang demos most of the audience had already seen.
The final talk of the day, SigLab: a Lisp-based signal and image processing and modeling facility, was given by David McLain, and it was worth the journey in itself. SigLab is an embedded language for describing and implementing signal processing networks; it wraps various platform libraries and provides an exceedingly slick environment; the textual (code) representation is primary, but it provides very good visualization of both the network and its results when applied to given signals. Some of the examples used to demonstrate it were good fun, too. Also mentioned in the talk was a differential equation for the ear's frequency response, which I need to check out; it's claimed to be a damped oscillator with a spring constant proportional to 1+γ<y²>. (I mostly want to know if this is a first approximation, or if there are mechanical reasons to believe this beyond the fact that it must be something like that to stop the ear exploding). If there were video of the presentations available, this one would be the one to download; I don't know if there is, though.
And then it was all over bar the dinner and impromptu demos. I found a lutenist and demoed the tablature editor (based on climacs) developed for the ECOLM project. Later, I gather I got quite a crowd to look at gsharp (favourite comment: "it has keyboard macros; shame it doesn't scroll and it doesn't print"); I was concentrating too hard on not causing a lisp error to notice, as I had foolishly disabled the debugger in the image I was using. David Lichteblau's eclipse-in-cloak-on-sbcl demo is both cooler and more useless than even a score editor which can't print or export, though, and he also got a good audience. Later, I also finally got to see beirc and closure integrated and usable, hidden in the fog of one or two too many beers.
And then it really was all over, and after a short train ride through Hamburg (I didn't even get to see the river) I was back in the UK and to reality. Next year, ILC in Cambridge.