Monday 21 January 2008

Day One

Tutorial: Pattern Oriented Software Architecture
I went to this tutorial as well, which I thought was OK.

Frank Buschmann is someone that has really lived creating and building a big, distributed system, and it showed. He is rather tall, but stooped and is very animated when he speaks. He definitely lives for the code and maybe has seen a few too many software corpses for his own good.Kevlin Henney on the other hand, is your typical relaxed consultant - guru, who seems to take everything in his stride (i.e. "OK, relax there Frank, everything will be all right..."). Together they make a good team and they interacted reasonably well, swapping over from each other after a couple of slides.

The basic idea that I got from the tutorial was that an architect can create a whole system just by applying one pattern after another to accommodate the forces working on the system to be developed. This idea was originally put forward by Christopher Alexander in his book, The Timeless Way Of Building, which was about applying things like the courtyard pattern to make a building a nice place to live in.

In software development, there are many different patterns and most have been "discovered" to work under a specific context. For instance, the Gang of Four patterns in that famous book are now seen to be a set of patterns for building frameworks (i.e something like swing or struts) and not really applications. Application patterns are much more context dependent. A pattern used for a logging service in a distributed environment would be different to the same service used in a non-distributed environment, because the forces under consideration are different in those contexts.

Buschman and Henney are both distributed system experts and they have spent a long time documenting and publishing a book or two on these types of patterns, so their examples were from this domain. They told a story demonstrating how they built a system using these ideas, and did things like applying the domain object pattern onto the big ball of mud at the start and using something called a half object pattern to span object state over several parts of a distributed system. I thought these ideas seemed reasonable, especially when they emphasised things like coding to an interface and layering your code properly.

At the end of the session I asked Kevlin if he thought that test driven development could be of any use in this way of building systems, and he surprised me by saying that it is no coincidence that the primary discoverers of the design patterns movement were also the primary movers in the test driven development movement. Its clear to me now that you can't really build high quality software without unit tests.

In summary, there is a lot more to patterns than the gang of four, and I have yet another set of books to stick on my wish list.

Keynote : Software and Services - Konvergenz von Web 2.0, SOA and SaaS
Microsoft have made some good games in the past (for example Urban Assault) , but I had some bad experiences programming Visual Basic as a noob, so I had this sinking feeling when
I saw the name Microsoft on the slides. It looks like Microsoft are going to try to support open
APIs in the future. I'm not sure though, because it was late and it was in German, and the word 'monetise' appeared on several slides). I wanted to ask Ms. Sondermann if she knew when the next version of Combat Flight Simulator was coming out, but she didn't take any questions at the end.

Night School : 10 Ideas Java Guys Should Steal From Ruby
In my night school I saw Bruce Tate. Bruce was a major league Java guru and has written several super java books, one of which really helped me in learn spring. Bruce turned out to be a very, loud, active, enthusiastic speaker who still looked like he can ride up a mountain or two. I guess he was so loud because otherwise we would have fallen asleep, but the information he gave out should have kept everyone awake.

His theme is that there are several ideas in Ruby language and the community that could be used to improve the overall process of programming in Java. He gave several examples using closures, continuations and meta-programming, demonstrating how easy it is to write small pieces of code that do a lot in this language. He also pushed the idea of Convention over Configuration (which has been picked up by Maven) , using the trash can (when something has been deprecated, eventually throw it away) and obsessing over testing (exactly).

All in all, a very cool talk, but I think someone called Bruce should be wrestling crocodiles for a living on Australian TV. Something to consider for the future if the old Ruby thing doesn't work out.

No comments: