I had the pleasure of being invited to sit on the Expert Panel in the Concurrency Challenge Track at JAOO 2009 in Aarhus. JAOO is an impressive event, and the venue was very pleasant. Unfortunately, I didn’t have time to experience the surroundings or indeed the conference, except for the Concurrency track.

I did catch Simon Peyton Jones’ keynote speech in the morning. Simon is always entertaining, and as part of my background project to learn Haskell through osmosis, I wouldn’t miss a talk on Haskell type classes.

A large music auditorium is not the best for technical talks, though. I have had the experience of singing on such a stage, in which case the blinding spotlights can even have a focussing and reassuring effect. But for a technical talk, you really want to see the audience and sense whether they understand you. When singing you can’t well stop and ask ‘are you with me so far?’, so it’s better to just press on and do your thing – not always the right strategy for a tech talk. Simon, being a master of the podium, simply walked to the edge of the stage, shaded his eyes and asked the audience to wave as evidence that they understood. You don’t just learn Haskell when he is talking.

The Concurrency track was well stacked, with Brian Goetz, Kresten Krab Thorup, Dave Thomas, Rich Hickey and Simon P-J as speakers, and me joining them on the panel.

Brian Goetz gave the obligatory “Free lunch is over” talk, explaining the reasons behind the current multicore trend. I’ll admit that I haven’t been to that many commercial conferences, but my former employer Ericsson had both the foresight and resources to arrange many seminars over the years, inviting leading experts from Sun, Intel, SICS et al, to ensure that every software developer in the company got the message loud and clear. I assume that many have been exposed to similar indoctrination. But it is necessary, and most of all interesting – at least to all who thrive on challenge and new opportunities. Brian kept a good pace, making sure to repeat the key points regularly to make sure they sunk in.

Kresten and Dave played tag and gave an overview of actor-style modeling. Kresten managed to demo how awkward (albeit doable) it is to work with actors without appropriate syntax, and how nicely it could be formulated with the right syntax. An important point, I think, as I firmly believe that we tend to be much more affected by the mental cues built into the language syntax than we perhaps realise. I overheard parts of a discussion at breakfast about whether languages should “lecture us” on the best way to write software, or whether it should simply get out of our way as much as possible. I personally prefer opinionated languages, and my experience with use of Erlang (a very opinionated language) in large commercial projects has reinforced that view.

Dave accounted for some of his experiences with modeling concurrency with actors, drawing on human analogies. I grew fond of this style of modeling while working with Command & Control systems in Alaska. It’s tempting when trying to automate something to become a bit too theoretical and conceive strategies that look nothing like what humans would choose if solving the problem manually. My mentor back then, Col John (Shep) Shepherd, was a retired Air Force Colonel, former fighter pilot and AWACS Commander. He had no training on computers, but knew exactly what he wanted from a Command and Control system. And, like most who have not only trained for, but also seen combat, he had a fairly dramatic view on the consequences of failing to meet the requirements. Simple and intuitive strategies were favoured over the esotheric, and the results were nothing less than astounding.

Dave also mentioned a background in Command and Control, but we didn’t have time to compare notes in this regard. Some other time, maybe…

I will not say much about the panel, but the main criticism seems to have been that we did not disagree enough. Perhaps a few die-hard C++ and threading experts would have spiced it up a little? As it was, all members of the panel were advocates of functional programming and immutable data.

The afternoon session continued with Rich Hickey talking about Clojure’s strategy for handling values that change over time. A very well thought-out lecture with some very important lessons. Talking to some members of the Clojure Users’ Group in Denmark, it appears as if Rich’s approach works very nicely in practice too.

Simon Peyton-Jones ended the track with a talk on nested data parallelism in Haskell – one of his favourite research projects. A great talk. In the words of Ola Bini: “Neat, geeky stuff.”