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...

Monday, October 09, 2006

Behaviour-Driven Design

Finally some time to talk about my most recent pet pieve. Rest assured, the message is just the same as with my rants on Test-Driven Development. But as Dan says: It's all about getting the words right. Dan has gotten this impulse from Domain Driven Design, and you all should know how I feel about that.

So what is the core message: TDD is not about testing, it's all about behaviour!!! Behaviour-Driven Design helps us put the right focus on unit testing. Is this really any different from TDD? Well, not if you do it right. The problem is that the right way to do TDD is often hidden by the word Test. Many people think the main benefit of Test-Driven Design is testing your code, which is natural with this name.

WRONG!

The most important benefit of TDD is that it drives the design, the behaviour of your code. This is what BDD helps point out. BDD is an extension of TDD and Acceptance-Test Driven Planning. Basically it gives a template to use when defining User stories, that includes a context for the story, a benefit that the feature will give and a set of scenarios that can be used for acceptance tests.

For me this puts a required frame around the whole concept of developing quality code. There needs to be a connection between the story with its acceptance criteria, and the tests that we write for the code.

JBehave is a testing framwork that tries to make it easier to write tests the way the should be written. Its Ruby cousin is rBehave (the site is not operational yet, coming soon). I haven't had the chance to try them out yet, so the code will have to wait until another time. Be sure to check it out.

Thursday, October 05, 2006

MEGO

Kevlin Henney tought me a new expression in his talk, that I think it is worth to share:

MEGO - My Eyes Glace Over...

which refers to the effect you see when people are just not getting what you talk about.

People I didn't get the chance to meet

The problem with a big conference like JAOO has become, is that it is just impossible to get around to talking to all the people you would like to. There were a couple of the speakers I would have liked to talked to. Karsten Lentzsch was here, you know, the JGoodies guy. I also would have liked to catch up with Patrick Linskey from BEA. We have some outstanding questions with them. Still I'm only one person.

The biggest regret though, is not being able to talk to more of the other developers that are here. It is a great chance to meet other people with the same interests. I think one of the problems is that the conference has gotten so big, and being split across the SAS hotel and the Musikkhuset Concert Hall, it gets harder to meet people.

Wednesday, October 04, 2006

JAOO Day Three - Wednesday

There was an especially interesting track today, and thats the track called "Back to the Future". This is one of Dave Thomas' brainchild, which allows him to present the things that have been done before. One of his pet pieves is that we need to study the past in order to develop the right technology the right way for the future. And I totally agree with him. That's why I spent most of my time in that track today.

The first session was the introduction to the track by Dave Thomas, a talk he calles "Hot old ideas". In this talk he goes through much of the history of computing and programming languages, basically listing all the languages and given a brief description. You'll have to look at the presentation. The message is: It is dangerous to live in a monoculture! Learn about other languages and technologies to find out what was done in the past, what worked, what didn't and most importantly: WHY!!!

The second talk was done by Guy Steele (father of the Scheme language, together with Gerald Sussman). His talk was about "The history of Scheme". He explained the tradition at MIT that led up to the creation of Scheme, as well as some of the other languages that was created at MIT prior to Scheme. This was very interesting, especially after having studied the Abelson/Sussman lectures, which use lisp (of which Scheme is a dialect).

After lunch I went to a presentation by Dan North and Niclas Nilsson about "Behaviour -Driven Development". As I have mentioned earlier, I have spent some time talking to these guys over the last couple of days, and I must say that BDD really interests me. In fact I think it is a key to doing software development right!! Wow. That's a big statement. I think that deserves a separate blog entry. To be continued.

The last session of the day was a brilliant talk by Kevlin Henney called "The five considerations of Software Architecture". In this talk Kevlin lists five considerations that should be in the back of our minds when we are dealing with software development. The considerations are:
  • Economy
  • Visibility
  • Spacing
  • Symmetry
  • Emergence

These are not rules, simply considerations that needs to be taken into account when we are making the decisions that make up the architecture and design of our systems. After the talk, Kevlin told me that he really has a four hour talk on this subject that shows how these considerations really are applicable to any level of development from the business analysis to the coding itself. Since Kevlin is such a brilliant speaker, I'm considering brining him to Stavanger to do this talk for Statoil. I think it would do us good.

The day ended with a panel of selected speaker talking about the future of programming, more specifically how will we be programming in 2016 (ten years from now). Dave Thomas moderated the panel, which consisted of Guy Steele, Ole Lehrmann Madsen, Steve Vinoski, Kevlin Henney and Erik Meijer. In my opinion, the panel really didn't take the subject far enough, and ended up talking about how concurrency will influence future programming. There was also some discussion about how tools and programming languages will evolve. All in all pretty interesting.

After this event I would up in the hotel bar for a couple of hours with Dan North, Niclas Nilsson and a couple of other guys, one of them was a thoughtworker called Ian Cartwright. He's a young guy, but as all thoughtworkers, pretty smart, and actually the substitute for Martin Fowler. Turns out he has co-presented with Martin on a number of occations. This was an enjoyable couple of hours, and we got to talk a little bit about our situation in Statoil, and the thoughtworkers shared a couple of tips with me. They all offered to help us out if we wanted, which is good to know. We also spent some time discussion Aspect oriented programming, and a seed for a new article was sawn. I think it is time to give some counter examples to this AOP thing, since all we hear is that it is useful for things like logging and security. I'm considering doing an article on this even if it means I'll have to read up on AOP a bit. We'll see. It's good to know that these guys, who are unbelievably smart guys, are actually interested in the opinions of a guy like me. Cool.

Common pitfals and misconceptions of Agile methods

I really found that the insights offered by Jutta Eckstein in her talk yesterday deserves a separate post. I'll list the pitfalls she mentioned and describe them a little.

Too much focus on practices

This means that we implement the practices like daily meetings, test-driven development and so on without looking at the values that these practices are supporting. This is a key point! It is the agile values that makes agile methods work. The practices of for instance XP or Scrum are just there to support and enforce the values. Many people doesn't get this.

Missing result orientation

One of the fundamental ideas in agile methods is the goal of producing a product that is useful to a customer. If we loose track of this and start to focus on just delivering without the link to creating business value, there is no overall goal, and the project fails.

Too many interruptions

Not taking sufficient steps to protect the team during an iteration can be fatal to projects. If the team is not working on a fixed task list during an iteration, or the team is not fully allocated to the task at hand. Scrum helps with this by isolating the team for the iteration and removing other impediments.

Repeat the same mistakes

Do retrospectives and learn from it. The mistake many new agile projects make is that they identify the mistakes in retrospectives, but don't do anything to make it better. Point is to adapt to the things that are identified.

Lacking integration of the product

The importance of integration is ignored or underestimated. Frequent build failures or build takes too long is often a problem. This cannot be ignored during an iteration or sprint.

No overall release plan

Most people plan individual iterations or sprints but some forget that it is the product roadmap or release plan that is the most important.

Agile is for developers only

Agile methods affects the entire the whole organization. Jeff Sutherland (Scrum) argues that the entire organization needs to be organized as a set of Scrums in order to reach the hyper-productive states. He has done this, so he knows what he is talking about.

Common misunderstandings


Agility is ...
  • ... a specific methodology only - NO there are many
  • ... defined by practices - NO actually it is the values that matter
  • ... and undiciplined approach - NO it takes a lot of diciplin to do agile


Agility really is:
  • Value system
  • Neither chaos nor dogmatism
  • Joint responsibility
  • Culture of change
  • Continuous learning

Tuesday, October 03, 2006

JAOO Day Two - Tuesday

The day started with a really interesting keynote by Guy Steele from Sun Microsystems. He is a language designer and the father of Scheme (lisp dialect used in Emacs among other things). The talk was about an interesting new language under development called Fortress. It is supposed to be a language for the scientific community, and as he said "It is supposed to do for Fortran what Java did for C". By which he means remove the possibility for making the most common mistakes, as well as providing platform independance and multithreading. The goal is to make the syntax of the language as close to mathematical notation as possible, plus they want to grow the type system and compiler, which means that they have to have an extendable type system where the types are not built in but specified in libraries (which you can override with your own implementations of course). Very cool stuff.

Most of the rest of the day I spent in the track titled "What makes agile work?". The introduction was by Jutta Eckstein, and she talked about common pitfalls when adopting agile methods especially in large organizations. I'll do a separate post on that, as I think it is especially important for us in Statoil.

Similarly, Roman Pichler talked about a failed attempt of introducing agile in a company, and why that failed. The main reason was that the initiative came from management, and as soon as the going got though, the management backed out and reverted to the "safe" old ways of the gant chart and the project plan.

After lunch I enjoyed a session with Kevlin Henney, where he talks about the "Six faces of Agile Development". This are six different aspects of agile methods that influence how it works and how it can be implemented. The six faces are:
  • Practices
  • Organization
  • Architecture
  • Tools
  • Skills
  • Attitude
These are all aspects that needs to be considered when trying to adopt an agile methodology. Basically his message (as well as others in this talk): When it comes to adopting agile techniques, one size does not fit all. Be agile in becoming agile.

One of the most interesting talks of the day was by Jeff Sutherland (father of Scrum), on "Making good Scrum". The main message here was that Scrum easily gives you a productivity gain of the factor of 2, just by implementing it correctly. That is just by using product backlogs, sprints, daily scrums and so on. The potential, as shown by Toyota, and numerous examples in the IT industry, is a productivity gain in the order of 5-10 times. In order to acchieve this, the first step is to be really agressive in removing impediments for the teams. This attitude has to go all the way up to the top management. The next steps are really just becomming more agressive in the whole scrum implementation. Also the scrum implementation needs to be done throughout the organization, not just in the software development teams. The most successful companies, like PatientKeeper where Jeff now works as CTO, actually organize all levels of management as scrum teams. These are very cool idea that makes me look forward to the Scrum Master training class I'll be taking with him on Thursday and Friday.

Afther this, Esther Derby, author of many books, among others "Behind Closed Doors - Secrets of Great Managers" (which I recommend all should read), had a talk about "Organizational Culture and agile adoptation". This basically had to do with how different organization cultures influence how you can introduce agile methods. Nothing really new here, but it is important that we evaluate the culture when we try to implement agile methods.

For the last session of the day, I chose Eric Evans and his talk on how Domain Driven Design can benefit from Domain Specific Languages. Eric admits to being a little sceptical to DSLs and their use for core business domains. He thinks it might be just too complicated to build domain languages for business domains. Charles Simonyi from Intentional Software (the DSL guys referred to in Martin Fowlers Language Workbenches article) of course disagrees, and there was a little interesting discussion of this after the talk. Erics position is that the DSL are more useful for the generic subdomains, especially the technical ones. He used examples from time and money to show how a DSL could improve that code.

After the talk we had a little discussion between Eric Evans, Dave Thomas and Obie Fernandez (Ruby on Rails guy working for ThoughtWorks in the US) (I was there too, but contributed very little to the discussion ;-) . It started out with Dave commenting on that the stuff Eric is doing in Time and Money has already been done many times by others, for instance the code in Kent Becks TDD book (actually written for Dave by Ward Cunningham !!!), and that "real" languages has these concepts built in. He referred to technology developed as part of financial applications. The discussion went on to discuss quality of libraries for languages, and that there really isn't any market for this as people does not want to pay for them, which leads to questionable quality in many if not most cases. We also touched upon other languages like Ruby and Ruby on Rails, and Obie was saying that with JRuby we would be able to deploy Rails apps on Tomcat, which would be great because then companies hosting Java web apps can host Rails apps. Then Dave said that that will bring the servers down because the Java VM is not resource sharable, which basically means that each session has its own JVM with resources and instances of shared libraries and the whole shebang. My point in relating this is that talking to Dave (or listening to him) always leaves me with a mixed feeling. The guy has been around for so long, and done so many different things, that he more or less knows as everything works (at least that's what it feels like to me), so while I'm excited to learn this stuff, I'm also bummed out by his disillusioned outlook on things. I guess that it comes at time when we all start being more realistic. I certainly allways learn alot from these discussions.

After this I was quite exhausted after a long day, so I went to get some food and went to bed early. Tomorrow is another full day of interesting talks.

Monday, October 02, 2006

JAOO Day One - Monday

This has been a most interesting day. Usually the first day, and at least the first half of the first day is pretty slow when you're at a conference. You haven't really made much contact with the other participants yet, and you're just adjusting to the conference.

I went to a few sessions in the Modelling and Design track, and some in the SOA track. Martin Fowler was supposed to chair the modelling track, but unfortunately he was unable to come due to back problems (apparently he has cronic back problems), and it was Dave Thomas (the original, not pragmatic), and he was reiterating the theme from last year (see previous blog) that models and modelling is not equivalent to UML and UML diagrams. Model driven development should be all about human communication and alignment of the model in everyones head. Much in the way Eric Evans has preach to us.

After that I was in a presentation that sounded very promising as its title was Resources, Event, Agents. So I was thinking that we might get some of the SJEF ideas here, but it turned out that he was referring to the REA business pattern, so I was quite disappointed, so I left.

I caught a talk by Beat Schwegler of Microsoft about "Architecting Applications for a changing world". His main theme was to make sure that what is implemented can be directly traced to value for the business. The business model must be mapped to the service model which again should be mapped to the technical model. There are two messages here one is that the service model must reflect the business model, and the other is that the service interfaces should be separated from the underlying (or implementing) technology. This last point is just as important, as this will make sure that the service interfaces are not technology driven.

Gregor Hohpe had a talk about conversational patterns in messaging systems. It was very interesting to see the different patterns of message interaction. This is work in progress from Gregor.

Finally I was fortunately enough to catch a talk by Erik Dürenburg of Thoughtworks about Software Vizualization. Basically this was about creating tools to answer the questions you want answered about your systems. Tool creation is a much vider topic (which I will return to), but in this context it is about analysing source code or running systems to provide answers to questions. Visualization can range from tables of metrics (like the ones we get from JDepend) to graphs of class dependencies. He showed that with very limited efforts they were able to analyse jar file dependencies, using a tool called CodeCrawler to visualize them. They also use a small tool like GraphViz Dot for most of the graphics generation. This is definately something we should use. There is a critical need to monitor the runtime jar dependencies of our system. How cool would it be to build a tool that does this for us.


I intentionally missed Eric Evans sessions, as I've been through that a number of times before, but I met up with him after his talk and we had a chat, and we ended up going to the ending keynote together. This was an inspiring talk by Alistair Cockburn on Methodology and the human aspects of agile methodologies. Very interesting stuff.

The day ended with the conference party, and I was fortunate enough to end up at a table next to Alistair Cockburn (so I finally met him), Dan North, Niclas Nilsson and serval other interesting people. We ended up discussing various agile topics. Great guys to talk to. Dan North is the man behind a new concept called Behaviour-Driven Development which is a step beyond Test-Driven Development. He and Niclas has a talk on this on Wednesday, which I look forward to. We ended up talking and drinking beer for most of the evening, and I had a great time.

I also got the chance to speak with Kevlin Henney, Dave Thomas and Gregor Hohpe. After this, the rest of the conference will be much more fun. This is what I mean when I say the first part of the first day is slow. Looking forward to tomorrow.

JAOO Opening keynote: The Amazon.com technical platform

Werner Vogels held the opening keynote, talking about the technology platform behind the Amazon.com success.

Amazon.com is really a technical platform, not just a web site. This makes it possible to support other sites, not just selling products from other vendors, but also running their sites and fully integrating their e-commerce sites. This is possible due to an architecture with extensive use of webservices to wrap both functionality and data. The services are split into a set of Foundation services and a set of Aggregator services. All of which are available to customers of Amazon.

Very interesting to see how the need for scalability has driven the development of a service oriented architecture using webservices. The resulting architecture is very close to the SJEF principles that we adhere to.

Kick off for JAOO 2006

I'm now at the JAOO 2006 conference. This year looks very promising with a lot of great speakers like Eric Evans, Martin Fowler, Jeff Sutherland, Alistair Cockburn, Jutta Eckstein, Dave Thomas, Gregor Hophe and the list just goes on and on.

I'll try to attend as many sessions as I can over the next couple of days. My only regret is that I'm alone from Statoil, as there is just too much for one guy to cover.

I'll keep you posted by things that I pick up during the next days, so be sure to keep your eyes (or RSS readers) fixed on this blog for the next couple of days.

SPE Annual Technical Conference and Exhibition

I just returned from San Antonio, Texas, where a collegue and myself were fortunate enough to be allowed to participate with a paper on software agents and their potential in the upstream oil business.

The conference was a huge success for us. Lots of interest in our paper, and we learned some things about the state of practice as well. And quite frankly we are not impressed.

San Antonio was very nice, as well. It is a very nice city, and we got to se a lot of it. The weather was nice as well with the temperature in the high twenties, low thirties all week (centigrades of course). We enjoyed the riverwalk, the Alamo and the other sights tremendously. Even got some souvenirs...