Friday, September 28, 2007

Architectural decisions

Yesterdays tutorial really got me thinking about this subject. I firmly believe that the most important thing to document about a software system is the decisions made. A couple of years ago there was a seminal article published in IEEE Computer, called "Architectural Decisions: Architecture Demystified" that argued this exact point.

We have been trying to follow this advice, but we haven't really made much headway, and so when I listen to the tutorial yesterday, some of these old thoughs came back to me, and I started to think that maybe patterns and pattern languages could be a good solution to this problem. The more I think about it the more I see a good fit to the problem.

As it happens, I left JAOO yesterday to go to Oslo for a meeting, and I didn't know, but the topic of this meeting was Architectural Decisions and how we can capture and use them. Talk about coincidence. I cannot really talk more about this at this stage, but suffice it to say that I think we have something here that we can really use that will help us in this endevour. I promise to come back to this when I can.

Thursday, September 27, 2007

Patterns-Oriented Software Architecture - JAOO Tutorial

The final part of this years JAOO for me was a tutorial on Patterns-Oriented Software Architecture held by Frank Buschmann and Kevlin Henney.

To make a long story short this is all about how to design a system by using pattern languages (catalogs of interconnected patterns), and creating a narrative of the different choices made in the process to serve as a documentation of the finished system.

This is an interesting approch to system design. Now, as it happens, Kevlin is sitting next to me as I write this, waiting for our fight to Copenhagen, and so I got the chance to discuss a little bit with him about the background of the material. The two main purposes of pattern languages in software architecture is to aid in design by showing which solution exists to a specific problem in a specific context, and what the trade-offs are, and second to serve as a documentation of the architectural decisions made during the evolution of the system.

I think that patterns and especially pattern languages are an overlooked design tool that we need to start using more.

Both Kevlin and Frank has extensive experience in creating complex systems, and todays tutorial was all about distributed systems, which we also deal extensively with.

Thanks guys, for some real helpful tips and tools.

Almost meeting Joe Armstrong

I'm really kicking myself. I had multiple oportunities to meet with Joe Armstrong during this years JAOO. When I came in on Saturday, he was actually on my flight. When I got my bags and got outside, there was this guy standing in line waiting for the bus. There was something about him, and he looked at me, and generally seem open to contact, but I was just anxious to get to my hotel, and didn't initiate contact.

Several times over the next couple of days, I kept seing this guy, and thinking that there is something familiar about him, not making the connection. Then on the last day there was an article in the JAOO daily newsletter about Joe Armstrong, and a picture. Of course, then I realised that this guy that I hadn't talked to was Joe Armstrong, one of the creators of Erlang, and that the reason he looked so familiar was that I had seen a much younger version of him in the Erlang video that is available online. This is when I started to kick myself. I managed to miss his talk and his book Programming Erlang was sold out, and now I couldn't see him anywhere. Typical. Oh well, at least I know what he looks like now.

Wednesday, September 26, 2007

JAOO Day 3 - summary

Today was the last day of the conference part of JAOO. It's not over, though, as there will be tutorials tomorrow and Friday.

I spent most of the day in the track called Professional Developer. This track was hosted by Bob Martin, and featured a lot of interesting talks. First up was Kevlin Henney, who did a talk called With Economy and Elegance. I always find Kevlin to be an intersting speaker, and this was no different. The only "problem" with Kevlin is that he is so smart and such a fast thinker, that it is really hard to keep up with his ideas. I hadn't seen Kevlin until today, and was wondering where he had got to this year, and I was pleasantly surprised when he came up to me before the talk and said hello and chatted for a while. He told med that he had been travelling alot lately, amongst other places, to Trondheim !!!, and therefore couldn't justify spending the whole week in Aarhus.

Following Kevlin was a talk by Laurent Bossavit that describe the old craftsman societies of France and Europe and how they were structured and how they handled passing on the craft. There is a resurgence of such societies that also include software professionals, and the ideas of craftsmen and their apprentices and journeymen are an intersting way of dealing with training in the software profession.

The third talk of the day, was a chance for me to see and hear Michael Feather speak for the first time. Michael has written many influential articles and books, from the humble dialog, through rules for unit tests to the book "Working Effectively with legacy code". He did a really interesting talk on error prevention, listing several techniques for preventing bugs in code including inspection, design-by-contract, formal notation for specification and test driven development. His point was that we are not using these techniques to the extent we should, and that they all have value and we should use at least one of them. As you may know, I'm a real fan of Test-Driven Development, and prefer that, but I see that something like design-by-contract can have its benefits as well.

The final talk was by Pete McBreen on Software Craftsmanship. Pete has written a book by the same name that I really enjoyed, and I think that looking at software development as a craft has real benefits.

I took the last session off, and just wandered around for a bit, trying to let my impressions sink in a bit. During this time I finally also caught up with Dave Thomas (Smalltalk Dave or Big Dave, not Prag Dave), who I also hadn't seen earlier at this conference. I thought that was strange because he is on the program comittee, and he told me that he too came in only last night, having spent the last couple of weeks on safari in Afrika. Then I ran into Charlie Nutter and Thomas Enebo (the JRuby guys), and ended up hanging out with them looking at the JRuby code. I'll talk more about that in another post, but the thing that really surprised me was that I was able to download their trunk from subversion, load it up into Netbeans, and successfully run the JUnit tests without failures. That shows great dedication on their part.

We all went together to listen to the final panel, where Erik Meijer, Eric Evans, Erik Dörenburg (Thoughtworks) and Diana Larsen (Agile coach) debated about key things they had learned at the conference. The panel was led by Martin Fowler. Interestingly one of their main points was Glenn Vanderburg's talk on The overlooked power of JavaScript, and this really got an interesting discussion going in the audience.

Charlie and Thomas were going to the speakers dinner, and the bus was leaving from my hotel, so we went back there and had a quick beer together before they had to leave. Those two are really interesting individuals, and clearly were commited to making a Java implementation for Ruby so that the rest of us can enjoy Ruby on the JVM. I'm going to look into ways to help them with this. This is something I would like to contribute to if I'm able. We'll see.

So the final day is over. Now only the tutorial tomorrow remains. That promises to be interesting, and I'll let you know how that went tomorrow afternoon.

Tuesday, September 25, 2007

JAOO Day 2 - summary

So another intersting day here at JAOO is over. Today I spent most of my time in the Enterprise frameworks track, which at JAOO is not about J2EE or .Net, but rather things like Castle ActiveRecord for Mono (.Net on Linux), Rails ActiveRecord and Grails (Rails imitator written in Groovy).

The morning keynote was held by Erik Meijer. He is currently working for Microsoft, and has brought many influences from more academic languages like Haskell to Visal Basic. He was talking about how he would like the future progress not to require anything new on part of the user. I think he has a good point in that we really should try to make the user experience as hassle free as possible. He referred to a formula for success that says that the chance of success is the perceived problem to solve diveded by the perceived hassel of adoption of the solution.

After that I listened to a couple of presentations on a few different options for persistance that try to break away from the "truth" that OR-mapping is the way and the light. I think it's interesting to look at things like Rails ActiveRecord as an alternative to Hibernate. Granted, ActiveRecord does not nearly provide the same flexibility and power as Hibernate or TopLink and EJB 3, but if it fits your problem, you end up with a much simpler persistance layer due to the convention over configuration principle. Especially with the rise of JRuby, this will be interesting for us. I promise to come back to that in a later post.

I also got to see Eric Evans doing his talk on strategic design, and while I've seen this many times now, it is always good with a refresher. We always seem to forget the bigger picture when developing software. For some reason it is always more tempting to work with some technically challenging problem that with the domain of the users. Eric argues (and I very much agree with him) that our greatest efforts should be spent where it generates the most benefit, and that is the core domain, the main reason why we create the software in the first place.

The final talk that I got to go to (I had to skip the Sun keynote because of the IT run), was a real treat. Glenn Vanderburg talked about the overlooked power of JavaScript. I'm certainly guilty of of underestimating JavaScript as a programming language. Glenn made the argument that this is largely due to it's missbegotten name that kind of leads you to think that it is related to Java. It's not. That's what we've always said, but then we made the misstake of dismissing it on those grounds. I'll summarize Glenn's talk in another post.

So. This day is over. Time is really moving fast here at JAOO. One of the major problems is that there are always at least two, sometimes three sessions you want to go to, then you also want to stay in the halls and hallways and talk to all the interesting people. There is just not enough time. I know I say this every year, but it is true. So frustrating...

Well. Tomorrow is another day.

JAOO Conference party

Monday night is really the highlight of the JAOO conference for me. I talked about this last year as well, and the first day of JAOO I allways feel a little strange. Then after the Monday night party the mood of the conference totally changes.

I was lucky enough to end up on next to Thomas Enebo and Charles Nutter (JRuby). And as if that wasn't enough. Martin Fowler had decided that he would like to meet them too, and ended up between me and Charles. On my other side I had Jonas Bonér (Terracotta) and across the table was Floyd Marinescu (InfoQ, formerly TheServerSide). As you can imagine it was not booring...

I actually managed to talk som sense and actually got a smile or two (and something I like to interpret as a nod of approval) from Martin Fowler. I talked a lot with Floyd as well, and got a chance to tell him that I enjoy his site.

Charles and Thomas are really interesting guys. They are the lead developers of JRuby, the Ruby implementation on the JVM. In order to do this you have to know both the Ruby language and the JVM really well. I particularly talked alot with Thomas, and found out that he actually has ancestry in Norway.

A great evening.

Monday, September 24, 2007

JAOO 2007 - Day 1

I'm just taking the time to catch my breath a little after the sessions of day 1 here at JAOO.

It's been a day packed with interesting talks, and when I have the proper time, I will do more detailed writeups of my thoughts, but for now a summary is the only thing I have time for.

The day started with a keynote from Robert Martin, talking about craftsmanship and professonalism in software development. I very much adopt Bob's views, and I will do a detailed post about the points in his keynote. The main message however is that we need to take our craft seriously, and be professional when we develop code. Don't write bad code and write your tests.

After this I went to the Real-world Ruby track, and there were quite a few interesting talks there. First up were the JRuby guys - Charles Nutter and Thomas Enebo. They talked about the possibilities created by a Ruby implementation on the JVM. Quite a few things there really struck a chord with me, and I'll be sharing my thoughs on this in a later post.

After this, Marcel Molena, who is on the Rails core team, talked about beauty in code and what that means. Not really about ruby or rails, but it demonstrates an attitude of the ruby and rails communities which I really like.

Then I went out of the Ruby track and into the languages track for a talk about Scala. I haven't done a post about Scala, but I've fiddled around with it a little bit. In this talk, however, I realized how little I've really understood about the language. Again, a topic for a later post. Brace yourselves, this is only day one.

After this, Rich Kilmer, back in the ruby track, did a talk on domain specific languages and ruby, showing how well ruby lends itself to creating domain languages, in the sense of programs that are readable to domain experts.

The final touch of the day was a chance to listen to Charles Simonyi talking about his experience as a space turist. Charles is a remarkable man, and the father of Word and Excel. He is now a multi billionaire, who lives on his yacht with a crew, and the developers of his company, Intentional Software. His is the origin of the language workbench concept that Martin Fowler is talking so much about these days. Anyway, the talk was about space travel, and it was really great to see, first of all a man who has lived his dream, but also the process of how it all came together. He showed many pictures spanning from the start of the training to the actual mission itself. Great stuff.

Well, thats day one. I'll be back tomorrow with more great stuff. Stay tuned...

Sunday, September 23, 2007

Ruby and Rails tutorial

As I mentioned in the last post, I was in a Ruby and Rails tutorial today. If you read it, you may recall that I said that I probably didn't need it.

Boy, was I wrong...

While I have been using ruby and rails for quite some time, it has primarily been small stuff. A script here, and a small rails app there. Not really enough to get the full grip of the power of ruby. I feel that the tutorial today really opened my eyes to some of the potential of ruby that I really did not understand before.

I've mentioned the meta programming in ruby before, but I haven't really understood it. This opens up a world of possibilities. I really look forward to playing with it.

I also got to talk a little with Glenn Vanderburg in the breaks, and that was very interesting.

The main thing that this brought back to me was really how much I love Ruby as a programming language. And I haven't really understood why I prefer ruby to for instance a language like Python. I realise now that it boils down to the differences in philosophy of the creators of the languages. The philosophy of Guido Van Rossum (creator and benevolent dictator of Python) is that there should be only one way of doing things in the language. Matz (creator of Ruby) has the oposite philosophy that more ways of doing things is a good thing in a language. This is really the key for me. I wan't that flexibility. This is what I love about ruby.

An effect of this is that it attracts a great community, and this community is very focused on producing clear and beautiful code, which Ruby helps you do.

Thanks, Glenn for making this clear to me.

Saturday, September 22, 2007

Ready for JAOO 2007

I've just arrived in Aarhus for this years JAOO conference. I've written before about how much I love this conference, and I hope it's going to be the same this year. There is certainly no shortage of brilliant speakers and interesting talks.

Tomorrow (Sunday), I'll be in a tutorial on Ruby on Rails, which I don't really need, but it'll be good to meet Glen Vanderburg, and on Monday the conference starts proper. Finally I'll participate in a tutorial on Pattern-Oriented Software Architeture

I will try to post my experiences and reflections over the next few days. Hopefully I'll have as good a time this year as I've had the previous years.

Stay tuned...

Documenting conference experiences

There is a pattern emerging in this blog, and that is that all activity is centered around the conferences I attend.

It shouldn't be surprising, as the primary reason for establishing this blog was to document my experiences at conferences, and a way of conveying some of the experience to my colleagues and friends back home.

The other primary reason is that it's when I'm at a conference that I have the time to reflect on things, get new inspiation by talking to interessting people and last but not least have the time to write it down in this blog.

Well, it's that time again... Hold on for this years batch of posts...