Monday, 29. September 2008, 17:02:47
Day started with opening keynote with Anders Hjerlserg. It was allright. His talking about his background and how little programming languages have progressed in last 50 years is always intertaining, although I've heard i before. The news in his talk was the C# 3.0 release and the added semi-functional features, and he also ahd a section on F#, and what this all meant in a concurrent world. We were asked to give all the talks we attended a red, yellow or green card based on how good we thought it was, and I gave Anders a green card.
The next talk was with Patrick Linskey, on Designing for Scalability. It was interresting, though he said some half-truths with regards to how CAS operations worked. Nonetheless, he had many good points regarding vertical and horisontal scalability in general, and how deviding an application into tiers could improve its scalability. Most of it was th kind of stuff that people already know - nothing ground breaking - but still good to be reminded that these techneques are still relevant and useful. I think I gave him a green or yellow card.
Then I went to a talk about XML persistence with John Davis. It was mostly about the problems that investment banks face with a certian insidiously complex FpML standard, which is an XML schema that apparently changes every two months. The problem these banks had, was that the schema was too complex to feasibly turn into a relational representation for storage in a database, and so the XML had to be persisted in some other way, which turned out to be data-grids or compute-grids. That was his (the speakers) idea anyway. The real takeaway was that you shouldn't just put a database into your architecture ust because that's how you've always done things - a database should only be used if it really adds value in its own and there are no other more suitable alternatives. It was an intertaining talk. Green card.
Following lunch (which was pretty good considering the scale and the amount of food that had to be produced) I went to a talk about aesthetic programming in ruby. At first, the guy was just rambling nonsence trying to find a proper definintion for the word aesthetic and how it could possibly have anything to do with code. But then towards the second half of the talk, he turned the talk around and made a case about clarity and readability. To such a degree, in fact, that he told a story about when he once had a non-coder sit with him and he was guiding this person, which was a stake holder on some project, through the (readable) code he had written (in an internal Ruby DSL), and this stake holder was able to fully understand how the code understood the business domain. This mutual understanding inspired confidence in the correctness of the code and turned out to be an important factor in the success of that particular project. So the talk ended up being about how language, both code and english, are used to convey ideas and concepts, and how these can be best expressed. He (the presenter) attributed Rubys forces in expresiveness, succunctness and readability, and highlited them as important factors for creating DSLs that are able to accurately describe concepts of the domains he used as cases in his talk. The idea was that these forces/advantages of using Ruby, could be generalized to most projects and especially those that used DSLs to some degree. The takeaway was that creating a DSL can be very important to a given project, because of their ability to accurately and concicely work with the concepts of the projects problem domain. And following this, Ruby was a very good language because of its powerful ability to create internal DSLs. I gave this talk a green card.
The next two talks was about the Fortress programming lnguage with Guy Steele, and an introcuction to the Scala programming language with Bill Venners. Guy's talk was interresting, but the language seemed very academic. It had some very powerful concepts with regards to concurrency, but it really looked like it was aimed at scientists rather than ordinary programmers with ordinary problems, like myself. The Scala talk.... oh, I almost fell asleep. Bill kept fiddling with his microphone and had many uhh's and umm's. Scala may be an interesting language but Bill really didn't look like he was properly prepared for the talk and that reflected in how he presented Scala. I gave Guy a green card for the nonetheless intertaining talk, and Bill got a red card.
The final talk of the day - the "party note" or whatever they called it - was with Erik Meijer. Meijer talked about why functional programming (still) matters, and he did so in a very intertaining and (to some, like me) convincing way. Perhaps he only seemed convincing because I was already convinced about the points he made. This was really the most interresting talk of the day. He started by laying out a battle plan: he would convince management that functional languages mattered by showing them a trend curve showing 100% year-over-year increase in the userbase of, as he called it, "fundamentalist functinal languages". The curve started this year with two people: himself and Simon Payton-Jones, and then next year he would have convinced two other people, and then 8 the year after that. So with management convinced, all he had to do was to make that trend curve come true by convincing us programmers, and he would do so by a brain-washing technique: he would first break us down with fear, and then slowly build us up again. He showed how these newfangled self-proclaimed functional languages really wasn't all that functional, and how they broke down in the face of complex interactions with side-effects. He also showed how the type systems of C# and Java was lying to us programmers. For instance, System.currentTimeMillis() claims it returns a long, but that is untrue because it is a different long every time we call it - so it really ought to be a sequence or iteration of longs. He also showed how side-effects had a particualry dark side when combined with closures, and the lazy-evalutation nature of Linq in C#, and even how Erlang wasn't really thread-safe. With the programming crowd thoroughly broken down, he then proceded to show how a
real functional language, namely Haskell, handled side-effects and concurrency. Learning Haskell, or some other
proper functioanl langauge was his takeaway and secret evil agenda. I gave him the greenest card in the stack.
After all the talks, there were a break before the Conference Party started at 19:00, with some nice foods, beer and Jazz. I got to sit next to some people from Version2, and danish online IT publication, and a guy from a software house called Demit, they were building custom software for companies and government institutions in .NET - apparently a troublesome thing to do in many ways, though that wasn't really a surprice.