Back home from my first POPL conference, I’m trying to collect my thoughts.

Overall, I was impressed with the high quality of the papers and presentations. While it’s not immediately obvious why industry representatives ought to attend POPL (which is, after all, a very academic conference), I’d like to suggest that it’s worth your while. You can expand your horizons and your network, and improve your intuition about where the programming community appears to be headed. Especially as we are experiencing a major paradigm shift, I’d expect that the first indications of trouble (or hope) might well come at conferences like POPL.

The panel discussion compensated somewhat for the lack of Erlang representation in the audience and on the podium, as message passing and Erlang received favourable mention.

Much of the discussion hovered around parallelism, of course, but Martin Rinard (represented by Arvin) offered the somewhat provocative view that today’s software is over-engineered and has too few errors in it! I had touched on this in my DAMP presentation the day before, as I mentioned that correctness is elusive in our commercial products, since the specifications themselves are often buggy (a claim also made by Mats Cronqvist at the Erlang Workshop 2004: “Most of the errors were not coding errors, but a working implementation of the wrong thing.”

My main reason for attending was the DAMP workshop, where I’d been asked to give a tutorial about Erlang programming for Multicore (presentation here). I’d call it an experience report instead, since (a) Erlang’s approach to multicore programming is that it’s supposed to be transparent, and (b) I’d be embarrassed to try to give a programming tutorial in front of people like Simon Marlow, Satnam Singh and Xavier Leroy…

I initially decided to put much emphasis on testing parallel programs using QuickCheck, and this also became the reason why I could go at all. The ProTest project sponsored the trip, since it gave us a chance to present some of its latest developments. I also think this is a very valid angle. Testing and debugging in the face of non-determinism is a real challenge. While preparing the presentation, we had great fun trying out the newest QuickCheck stuff and beating up some of my old discarded code experiments. We need to continue the work, and put some more focus on the semantics of the API. I’m pretty convinced that the code cannot be made bug-free on multicore without revisiting the API (which mimics Erlang’s built-in functions, by the way).

The DAMP workshop was great. I wish the Erlang maintainers could have been there. I enjoyed the talks and the discussions. Simon Marlow’s talk on Haskell’s concurrency primitives was very enlightening, and should be read by all who are interested in STM. John Reppy’s presentation on Manticore (haven’t found it on line, but this one appears similar) was also intriguing, perhaps especially the idea of an abstract low-level language for parallel execution. It’s possible that we’ll need something like that if we are to tackle a diversity of many-core architectures. I also enjoyed Sven-Bodo Scholz’s talk on Single-Assignment C (SaC), and couldn’t help thinking about whether it would be possible to integrate that into Erlang. (:

As always with these conference, one of the greatest rewards is the socializing in the evenings and during the breaks. I will try to spend some time studying Barry Jay’s pattern calculus and the Bondi language. There seems to be some kinship here with the Erlang language…