Monday, October 05, 2009

JAOO 2009 Sunday tutorials

The first day of JAOO traditionally is set aside for tutorials. This was also true this year. When I was here two years ago they had the tutorials at the SAS Radisson, but this year the tutorials were held at Triforks new offices and in Musikkhuset.

I had picked out two tutorials, the first was with Dan North on BDD and the other was an introduction to Groovy and Grails with Graeme Rocher. Now I know both Dan and BDD already, and was looking forward to a more indepth look at BDD, while the Groovy and Grails tutorial was a last minute change as my original tutorial with Steve Freeman was cancelled.

Dan started out introducing agile and Domain Driven Design and then went on to describe his particular approach to the agile development process.

Dan stresses that it is important to do enough planning and design, and BDD integrates not just developers but also business analysts and testers in the development process. So what is enough? This will vary from project to project, and this is a key skill to develop for an architect and software developer. Combining analysis and design with agile and lean concepts like "latest responsible moment" and "pull" is the key to making this work. So, doing enough work when you need it, not before and not after.

It is also important to consider all the stakeholders in your project. Everyone who has an interest in your project is a stakeholder, and this will include many other than your sponsor, product manager and your users. Dan splits it into Core stakeholders which are the primary parties mentioned above, and the incidental stakeholders which could include security people, infrastructure people, the people responsible for maintenance of your application and so on. We had a little discussion about users, questioning whether they also most of the time are incidental stakeholders when they themselves had not asked for an application that changes the way they work.

There is of course a lot more to this, and I will do another blogpost on this topic when I get back from the conference. All in all this tutorial was very interesting, and I look forward to sharing this with my colleagues when I get home.

I must say I was a little disappointed with the Groovy and Grails tutorial. As I said I changed to this in the last minute, and I don't know what I expected, but I found out that the couple of hours I'd spent preparing in the hotel room the night before covered most of the tutorial. Especially with my prior knowledge of Ruby and Rails, which Groovy and Grails is quite similar with.

That said, Graeme Rocher comes across as a very engaged and competent guy, and even with the introductory level, there was a couple of cool things to see. The key takeaway for me was to see how Groovy for better or worse is integrated with Java. This makes it less suitable as a pure scripting language due to the increased startup time of the JVM, and more suitable as a supplement to Java for building web application or doing testing or other scripting tasks related to your Java projects. We also manged to get an interesting discussion about metaprogramming going. I really enjoyed that.

Well that is it for day zero. Watch out for more on the next couple of days as the conference progresses.

Sunday, October 04, 2009

JAOO 2009

Finally, the JAOO conference 2009 has started. Been through a day of tutorials as we are warming up to the conference proper, that is starting tomorrow.

The program is looking good as usual, and the quality of the tutorials today has been excellent. More on that in a later post.

The next days promises to be filled with interesting talks and good conversation. Really looking forward to it.

Wednesday, June 25, 2008

SEAS / DTC conference dinner

Last night was the conference dinner, and before you ask, yes I feel that today. It was held in an old church in Edinburgh called Mansfield Traquair, which is a really beautiful old building that has been refurbished into a social venue.

We started out with a "wee" glass of champagne as the Scots would say, and then were guided to our tables in the main hall of the church. The food was excellent and the wine was good, but I must say that the entertainment was not quite my cup of tea, with musical numbers between each course performed by "Stars of the West End". Mind you, they were all great performers, but I'm not very keen on all those musical songs. They even managed to mangle Queen's "We are the champions" at the end...

Fortunately, due to great company at the table by Simon Roberts and others, the evening was not a total loss. Thanks guys.

Tuesday, June 24, 2008

SEAS / DTC conference

Today and tomorrow I'm in Edinburgh for the Systems Engineering for Autonomous Systems conference. This is a conference on autonomous systems put on by the British Ministry of Defense, presenting the results of research done for mostly military purpose.

Then why am I here? The short answer is that we try to learn what we can about buiding autonomous systems in our own domain (oil and gas operations), and the research has come furthest in the military domain. We were first turned on to this conference last year by our good friends at AOS last year, and have been participating ever since. This year it is my turn.

I hope to learn as much as I can about the wast range of topics presented, ranging from architecture of autonomous systems to sensor utilization and communication.

I really think this could be relevant for our work in the coming years.

Also very interested to hear in the opening session this morning the focus on agility and agile concepts in wast research projects such as these. It is good to see that even though they talk about systems engineering, the focus of analysis and specification has been turned down in favor of capabilities and demonstration.

Monday, June 23, 2008

The beautiful city of Edinburgh

I'm here in Edinburgh for the SEAS/DTC conference (more on this later), and I must say that this is a very beautiful city. I'm especially taken by the location of the castle on the hill in the middle of the city.

I went for a walk tonight after settling in at the hotel, and got to see the sun set on the parapets of the castle. Very beautiful indeed. You should definitely come here if you get the chance.

Saturday, May 24, 2008

ScalaLiftOff

This has been a most excellent day. Just being in the company of so many great developers is inspiring. If you have a look at the list of participants at the site, you'll understand what I mean. Also, since this was the first community conference on Scala, I'm glad to have been present.

Martin Odersky had a couple of interesting sessions himself, in particular the one where he demonstrated the building of a fully functional spreadsheet in Scala. In fact this is the example from the upcoming book. Following this lead, David Pollack (creator of Lift), show how we could take this spreadsheet app into lift and make it web based. Very cool.

I also participated in an interesting session with Bill Venners on testing in Scala. As you know I'm bordering on obsessed on testing, so it was good to have an overview of what approaches are most common in the community.

Also we had a great discussion about what we can do about object persistence in Scala. As you may know, I'm not very happy with the state of the current tools in Java, and in particular I want to have more of a disconnect between the object layer and the persistence layer, enabling a varied choice of persistence mechanisms underneath a standard api. A number of interesting people was involved in this discussion, including Paul Snively from Lambda the ultimate.

So what did we get out of this first conference on Scala? The answer I feel is in two parts. Personally I got to learn a lot about Scala, and see who was interested in it, as I'm quite new to it. As a community, it was great to see people from so many different backgrounds getting together in support of a great new language. There were language theory guys, like the guys from LambdaTheUltimate, Ted Leung from the Python community, a bunch of guys from the Java community, and I even saw a couple of the Twitter guys there. I guess they are looking for a new paradigm to help with their scalability problems.

All in all a most excellent day. I certainly learned a lot.

Tuesday, May 13, 2008

Java SE 7 - New language features

There are a number of new features that has been proposed for future Java releases, and when the spec lead for the new Java 7 release, Alex Buckley set up this talk, I was naturally interested in finding out what had been chosen.

Alex cleverly avoided talking about many of the controversial issues, like closures or no closures, and instead focused on what is good language design and how to grow a language, as well as some of the smaller uncontested features that are almost certain to be included. All in all I thought it was a good approach, and a discusson on closures was done in other talks later in the week.

So, to the language features he presented as almost certain to be included in the next version. The first thing he mentioned was that they were adding the possibility to switch on strings. Today this is not possible (only works with enums, byte, short, char and int), and is really a nice addition to the language.

Next up was the possibility of multi-catch of exceptions. This will be very useful when you have to catch several exception and perform the same task. Today the solution would be to have repeated separate catch blocks and then call the same method for each catch block, while the new proposal allows catching multiple types in the same block.

This code:

try {...}
catch (X1 e) {foo();}
catch (X2 e) {foo();}
catch (X3 e) {foo();}

will turn into this

try {...}
catch (X1,X2 e) {foo();}
catch (X3 e) {bar();}


Connected with this, is the possibility for safe re-throw, where the catch block will now allow re-throw of the same type that was caught. For example
catch(final Throwable e)
that is really NullPointerException for instance will rethrow NullPointerException. Today, the rethrown exception will be Throwable, which is not good.

Modularity in the language is another big thing. JSR 277 proposes a module system that is included in the language to provide similar functionality to what you can get with OSGi today. A core package like com.statoil.jef.core can be a module, and introduces an accessibility level of classes and methods within a module. Will enable both package private and module private. Adding annontations for metadata like versioning of modules. The main advantage over OSGi is that it is in the languague and things like javadoc and javap will understand the module concept. It has unfortunately many disadvantages over OSGi, and the JSR 277 work is only meant as a starting point. More of the features of OSGi are planned to be included in later versions.

Then a demo was given about some of the additions to the Java annotation system. JSR-308 proposes several extensions to the annotation system ment to provide better compile-time type checking.
  1. Allow annontations in other places than declarations.
  2. Pluggable type systems, that you can define to your specific needs, plug into the compiler, and use.
The focus here is very much compile-time verification of the code, and some of this seems like a good idea, but in my experience, this problem has never been so big as to warrant this level of effort. I'm sure that there are systems out there that can benefit from this extra type checking, but to me this seems like too much for too little benefit. Makes the code more unreadable just for catching bugs that might not be there. I certainly prefer to use tools like Findbugs and unit testing instead. My main problem with the presentation was that they never mentioned these alternatives even with a single word.

Alex then rounded off the talk with a discussion about the long term evolution of Java, areas of interest and of non-interest. This is a very interesting part, since it hits at what will be considered for future versions. The main message was (as I understood it), that even if something is not included in the Java language, it doesn't mean it is not on the platform (JVM), with a reference to other languages on the JVM like Groovy, Ruby, Python, Fortress and Scala.

All in all a very enlightening talk.

Wednesday, May 07, 2008

JavaOne Day Two

The second day of JavaOne started with a refreshing jog towards the Golden Gate bridge. Thanks to Rune for dragging me out at 0630 for this, it was truly worth it.

We decided to skip the Oracle general session in favor of some breakfast, but the jog ended up making us so late, we barely made the first sessions after the general session.

I was lucky enough to get some fruit and a croissant at Moscone Center just in time to catch teh Script Bowl. This was a wonderfully exiting contest between some of the main developers of the different scripting languages that run on the Java Platform, namely Groovy, JRuby, Jython and Scala. Scala as you may know is not really a scripting language, but it can be used for this type of rapid development all the same.

The contest was divided into three rounds where the first task was to develop a twitter client as a desktop app, the second app was to create a web app, and the third was free-form development. The whole contest was judged by the audience via SMS, with the overall victory going to the JRuby guys. Way to go! Part of the reason for their success was that they had used their community to get the apps done, as well as bringing a very flashy app for the free-form round.

After this session I ended up getting Tom Enebo to sit down with me to do some development on JRuby. We couldn't really find anywhere good to sit down, and ended up sitting in one of the lounging areas with less than perfect wireless access, and thus did not get much done apart from downloading and setting up the latest JRuby trunk on my computer. I guess I'll have to get by on my own when I get home. Hopefully I'll have some time to contribute in the coming weeks. Tom (as well as the rest of the JRuby guys) is a very easygoing guy, and I enjoyed spending some time with him and the rest of the guys throughout JavaOne.

After our little coding session, we went to see Ola Bini's talk entitled JRuby on rails. It was nice for me to see how rails apps could be ran on the JVM with for instance the Glassfish server. Gives an idea of a good way to make use of JRuby.

The final session I attended was a session with Ben Galbraith and Dion Almeir on What's new in AJAX. It was a nice little history lesson in the development of JavaScript and the different frameworks based on it over the years. These two guys are a couple of masters of the art of presentations, and just for that is worth the time to show up.

After the AJAX talk I walked around the pavilion for a bit, and actually bumped into the JavaPosse guys (minus Tor), while I was talking to Pete Moore of Atlassian. They were there to talk to Pete too, so they didn't have too much time for me, but I did manage to discuss some Scala stuff with Dick and Carl. Turns out we are all going to the ScalaLiftOff unconference on Saturday.

Well that was it for the JavaOne stuff, and I joined Rune and Paul and a couple of other guys at a great steakhouse off Union Square for a big steak meal. Very nice.

Tuesday, May 06, 2008

JavaOne - Day One

Day one of JavaOne always starts with the Opening General session. This is Sun's showcase for new Java technology. This year there was a JavaFX theme. JavaFX was launched last year at JavaOne, and is supposed to be the answer to Adobe Flex and Microsoft Silverlight on the Java platform. This year they show a whole lot of apps created with JavaFX, and it was a lot of nice looking webapps. For closing, they brought out Neil Young and the announcement of his "collected works" on BlueRay disks using advanced java features.

After the general session I went to the JRuby talk. Not much new for me in the talk, since I've been following the project, but they had some very nice demos of what you can do with Ruby on the JVM.

After lunch I attended Joshua Blochs talk about More Effective Java, containing material from his second edition of the Effective Java Book. He launched a mnemonic for helping to remember when to use extends and super with generic wildcards: PECS (Producer Extends, Consumer Super) which reduces the problem to figuring out which is producing and which is consuming, and that's kind of the hard part anyway. It's a bandaid on a gushing cut. Generics are just not easy. The rest of the talk he spent on how to make effective use of enums, which was good, but didn't really seem that useful to me.

For the final session of the day I chose a session about the new Java 7 language features. There were some interesting things here that I'll make a separate post about later, but one interesting thing that they did not talk about was the closures debate. In stead the Java SE 7 spec lead Alex Buckley talked about the principles and considerations of language design, and at the end there was a long session about adding more annotation for better type safety. Like I say, I'll talk about that in another post.

After this I wandered around the pavilion for a while, looking at the different stands.

Blogging at JavaOne

I will try to put out the most of the news from JavaOne as the conference proceeds, but this is a very fast paced conference, and I must say that after the conference started today, it looks like I'm going to be very busy.

There are a lot of sessions, a lot of people, and very little wireless access, so I doubt that I'll be able to post my blog-entries until after the conference is done on Friday. Please bear with me.

Monday, May 05, 2008

CommunityOne

The week of intensive conferencing started today with the CommunityOne conference. CommunityOne is a free pre JavaOne conference organized by Sun. The conference includes several open source topics such as Linux, programming languages, NetBeans and others.

When I was going to the general session, I bumped into Tor Norbye and Dick Wall from the JavaPosse, and finally got to meet them. While we were talking, Ola Bini from the JRuby core team came by, and so I got to meet him too. This was a great start of the day.

The general session was dominated by talk about open source communities and their importance, and finally Sun launched the new OpenSolaris version with the new logo. Also the demonstration of OpenSolaris included a cool demo of the raid capabilities of ZFS (included with OpenSolaris). They had a raid with seven disks running live, and there on the stage put a sledgehammer to one of the disk, litterally turning it into a cupholder. For good measure they also kelled a second disk by putting a drillbit thorugh it. Of course the disks died, but ZFS were able to keep running and when new disks were plugged in, it also rebuilt the content. Very impressive.

After the general session I went to the NetBeans session to check out what were the new stuff in NetBeans 6.1. I have been using NetBeans 6.0 for my Ruby development, but since my experience before this has mostly been with Eclipse, it has seemed a little awkward to me. Now, this new version really seems to be a lot more polished, and I really like the fact that there is much more support for different dynamic languages like Ruby, Scala, Python and JavaScript in NetBeans. I'm definitely going to have a closer look at the new version over the next couple of days.

At lunchtime there was a quick performance by the JavaPosse, where they recorded a live podcast. It was fun to be there for the first time at a podcast that I listen to regularily these days. I really think this is a good group of guys, and they are able to gather all or at least the most important news and then discuss it in a meaningful fashion. I strongly recommend that you have a listen if you haven't already.

After lunch I wandered around a bit and got some coffee, and then it was time to listen to a panel about Ruby. What ruby is doing in a Java related conference, you say? Well, Sun hired the JRuby guys about a year and a half ago, and are now committed to getting Ruby on the Java VM, and I think there is a growing interest in dynamic languages in general and Ruby in particular in the Java community. I'm certainly one of the followers, and I believe that the JVM is a great way to run Ruby in the enterprise, getting imporoved performance and deployability. I will certainly be talking more about the benefits of JRuby later.

Sunday, May 04, 2008

Arriving for JavaOne 2008

So, I'm finally here at JavaOne 2008. I've been lucky enough to get to participate in this years conference, and I will do my best to relay my experiences to you. It was a long trip getting here. I only arrived yesterday, having spent last week in Paris on vacation with my family. I only got back home on Saturday evening, and had to unpack and repack for my trip to San Francisco.

I got to San Francisco yesterday after a gruelling 11 hour flight from Frankfurt. My flight coming in to Frankfurt was late, so several of us had to be ushered through the airport in order to make our flight, but we made it in the end. The flight was uneventful, but too long, and when we finally got to SF, and got through immigration and I got my bags, I boarded the BART train to the city center. Finding the hotel was not a problem as it is right on Union Square, smack in the middle of San Francisco, and when I got to my room, it was already ten in the evening (local time).

I went out for a little walk to clear my head and get some water, and as I returned to the hotel I ran into Rune and Paul in front of the hotel, and we agreed to meet the next day for breakfast. And with that, I was ready for bed.

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.