Devoxx 2012: Conference Days

16 Nov 2012    

The second part of Devoxx consists of 3 Conference Days. The talks during the Conference Days are shorter then those of the University Days. Also during the Conference Days “Quickies” are organised in between sessions; Quickies are even shorter talks (15 mins) on a very specific subject.

Day 1: Methodology and Lambda expressions

After the keynote, I opted for: 7 Things: How to make good teams great by Sven Peters of Atlassian. This turned out to be a great talk. I have a short list containing his 7 suggestions:

  1. It's flowtime: discussed the problem with productivity when interrupted ..
  2. Feed your brain: visit conferences, take part in coding sessions, organize brown bags, ... I would like to add: become an active participant of a JUG.
  3. Say: well done: on the importance of (public) appreciation.
  4. Report robot: measure everything and make sure reports are generated automatically.
  5. Eat your own dog food: Use the software you have built, before shipping it to the customer.
  6. Do a special day: 1 day to do less pleasant things, such as documentation.
  7. Experimentation days: At Atlassian they experiment during ShipIt Day, 20% time and innovation week.
Sven also shared disclaimers regarding the feasibility of these suggestions. I strongly believe these (in 1 way or another) contribute to developer motivation!
Another very interesting talk was On the road to JDK8: LAMBDA, PARALLEL LIBRARIES, AND MORE by Joe Darcy. Joe started his talk by explaining the difficulty to implement these kind of large languages changes (without actually breaking the language) and then went on to explain and illustrate Lambda expressions (closures), interface evolution (default methods) and parallelism. It struck me how (relatively) simple, Oracle kept the syntax. I intended to give some code examples, but I found this nice article by Brian Goetz that has a lot of code examples and a good explanation. I'm especially a fan of the internal iteration, combined with the stream operation style:
int sum = blocks.filter(b -> b.getColor() == BLUE)
                .map(b -> b.getWeight())
It always should have been like that :-) I also think the default implementation of an interface is a good thing. Sure this is multiple inheritance of behavior, but not of state.
Other fun and interesting talks were the talk about Java on the Raspberry Pi and the possibilities of the Chrome Dev Tools.

Day 2: Testing and anti-patterns

Day 2 started with a Google Keynote, where they illustrated their current “hot” technologies: Maps, Android, Authentication and Chrome. Google presented some impressive demos (eg. live webcam editing in HTML5) and illustrated they really are on top of the game. After the keynote, I opted for the talk on Unitils For Enterprise Applications by Smalls. I had used Unitils before in different projects, so I didn’t really learn a lot of new things. I did like their explanation of the module system (eg. WebDriver module, Database module, Mail module, ..) and they also provided some explanation on the difference between unit, integration and system tests.

After Unitils, I attended a brilliant talk on Modern Software Development Anti-Patterns by Martijn Verbrug (‘the Diabolical Developer’) and Ben Evans. In the ironical style so typical for Martijn, they actually had a very good point to make: think carefully about the choices you make regarding:

  • technology: don't follow all the hypes.
  • methodology: find one that works for your specific use case.
  • architecture: design what you need, but don't "over-design".

Martijn did a somewhat similar talk last year at Devoxx that is also worth checking out on Parleys.

Other talks I attended were: JSR353: Java API for JSON and Android Developers’ Tools. I was impressed with the evolution of the ADT. It has been a couple of years since I last did Android Development, but the talk made me want to get started again.

Special mention goes out to the Parleys talk by Jo Voordeckers, Stephan Janssen and Benjamin Dobler. They decided to completely re-write their application, using HTML5. This kind of use-case was very interesting for me to get a “feel” on the current state of HTML5. While their accomplishments are impressive, it struck me how many different JavaScript libraries they needed to get it all working: Bootstrap, Require.JS, Backbone.JS, Moment.JS, Phantom.JS, Underscore.JS and Handlebars. They managed to do it in 3 months though, with only 3 people.

Day 3: Java FX and Java EE

Day 3 started with Annotation Features in JDK8 by Joel Borggren-franck. The biggest addition was JSR308: Type Annotations. The examples were concise and clear. After this talk on language changes, I moved on the Building Amazing Applications with Java FX by Richard Bair and Jasper Potts. Using a scheduling application (for Java One and Devoxx) as an example they explained features of the available Java FX tools. The Scene Builder definitely was impressive. For the first time I had the impression Java FX was really worth looking into. Previous demos were less impressive, but the current tooling and possibilities have evolved nicely. Also fun to see, their demo application was running fine on a Raspberry Pi.

Last talk of the day was Real World Java EE by Adam Bien. Most of the talk was Adam live coding a “Slides” application, using different Java EE6 features. I was very impressed by the ease of development of JEE6. Adam combined the coding with tips on which design patterns are useful in a JEE6 context and which should (probably) be avoided. He also advised a ‘sane approach’ regarding modularity. This combination of JEE6 use and a pragmatic approach regarding design patterns really appealed to me. Thus, after the session, I wanted to buy his book: Real World Java EE patterns from the Devoxx bookstore, but unfortunately they weren’t selling it yet (it was released 8 weeks ago) so I will have to order it from Amazon. Adam has a blog that is also worth checking.