Just back at the hotel after a fairly long day and some interesting sessions. There seem to be a few very popular phrases here this year. People are talking about the differences between declarative and imperative programming languages - a great session by Anders Hejlsberg this morning on programming languages and the fact that we should perhaps be focusing more on the 'what' of programming rather than the 'how', with examples from C#, Linq and F#. Since we're reaching the limits of Moore's Law, it'll enable language systems to have more control of the 'how', and perhaps more importantly, the 'where', making systems more easily parallelisable and thus distributable.
Then I found out about Gant. It's Ant, but with build files written in Groovy rather than XML. There we go, the declarative/imperative comparison again. All the usual Ant tasks are available and accessible with syntax that looks very much like the original XML but translated directly to Groovy. If your build files are trivial, then it doesn't really gain you much, but if you're finding that your build.xml isn't very DRY, or you're ending up using a lot, then it's probably worth giving it a try. And if you're finding that you have lots of cause to use ..., then you probably ought to look at gant. If there are tasks that you find you can only achieve by calling out to external scripts (such as the example that we were talking to Martin Fowler about over lunch then there's no question. There's even a nice tool to convert your existing build.xml, ant2gant and a gant ant task so that you can write a 3-line build.xml to integrate it with your favourite CI tool. Nice.
After lunch there were a couple of interesting-looking talks on cloud computing, but one tried to pack waaay too much information in to the available time and so ended up going too fast; the other overran wildly and was a bit too much of a product pitch for VMWare (as I had feared from the abstract) for my liking.
Then, oh yes, then there was a great talk from Richard Gabriel: Designed as Designer. It was introduced as the reason behind the name of the track in which it had been placed: The Odd Track. Yeah. Actually it was quite thought-provoking, though it's provoked so much thought that I may have to consider the content for some hours more, perhaps over beer. Richard's point was that conceptual integrity is a mark of great projects, which he illustrated with the story behind the 600-year gestation of the duomo in Florence. It's a truly great building, and yet was not the work of a single architect, but many, and proves that wonderful things can be constructed by teams and can maintain their conceptual integrity throughout.
Lastly a very entertaining presentation by Erik Meijer on "fundamentalist functional programming". FP is the other thing that many people are talking about this year, for the same reasons as were outlined by Joe Armstrong last year - procedural programming with shared state doesn't scale across multiple cores, and as we come to the limits of increases in compute capacity as defined by Moore's Law, we're going to need to deal with that problem.