I was surprised with an invite from my company to attend the SpringSource conference in Lombard this week. We’re heavily dependent on Spring and the the 2GX part was about Groovy (which we use and love) and Grails (which I’d love to use). This was my first industry conference and I had a notion about how a successful open source company like Spring Source would run such a show.
I really enjoyed the Groovy offerings and will write more about them later in this post but I was completely unprepared for the commercial side of the conference. It makes sense that there are sponsors (VMWare owns SpringSource and I found out that EMCO owns VMWare) so there are big players involved in the conference. While I’m not naive about such practicalities I have to say I was creeped out by Rod Johnson’s (Spring’s creator) keynote address. It was one shameless commercial plug after another – it reminded me of meetings I’ve sat in with IBM reps.
The keynote the following night was a bit better and focused on some concrete forward looking aspects of Spring and related technologies without so many obvious pitches. Though we use VMWare heavily, I didn’t go to a single VMWare presentation so the keynotes were the extent of my being marketed to for the conference.
The Groovy topical material was generally very high quality. The teaching was somewhat variable but the presenters were all quite expert on their respective Groovy topics. Guillaume LaForge, the project lead for Groovy is a nice guy and gave a solid presentation on the Gaelyk framework for the Google App Engine. I learned a great deal about the App Engine and why I might like to build something to run on it under certain circumstances.
I went to a couple of Groovy GORM talks where there were some good take aways on db performance and optimization when using Hibernate with GORM. Also, it was announced that GORM will now support NoSQL persistence and of course, VMWare offers such a product. There were a couple of great sessions on Meta Programming and AST transformation. Groovy offers such powerful dynamic coding that I could see a downside being that these sorts of solutions are sought out too often.
There were a couple of lack-luster talks that crammed too much information in too short a time and turned into fast survey courses that I could have done just as well with Google. Concurrency was one of the topics that was treated this way and also one of the DSL presentations was a bit too introductory, time ran short and then the good stuff was rushed through at the end.
By far, the most practical talks were the one on functional programming styles available in Groovy and 3 talks on Gradle. I understand recursion but I guess I slept through the important point that tail-recursion has to be supported by the language itself – just making your recursive call at the tail end of a recursive function won’t protect you from stack overflows (bummer). I learned that the real win of tail recursion is that a tail recursive function is converted to iteration at compile time to avoid stack overflows. OK – I know some of you are thinking that I’m a dork for programming all these years and not knowing this but I haven’t ever had to write a large recursive routine. So, please forgive my ignorance and keep reading my blog
The Gradle tool looks awesome. The creator of it Hans Dokter, I believe, spoke on the evolution of build systems as a design domain which was interesting. Oddly, he never mentioned Make and just started with Ant but I suppose that is a Java-ism that is reasonable since Ant seems like a reinvention of Make using XML. Anyhow, Gradle is a very smart and flexible toolkit; not a framework. It is written in Java but scriptable using Groovy. There is a tight integration to Ant tasks and the Gradle folks are working to improve Maven integration/migration capabilities as they move towards a 1.0 release.
Overall, I enjoyed the conference and thought it was worth my time and would go back next year if I can make it.