Impressions from Groovy Grails Exchange - day 2

13 December 2013

Graeme Roche kicked of day two of the Groovy Grails Exchange with the keynote: 'Road to Grails 3.0'. He presented several tentative dates fro Grails releases, 2.3.5 before the end of 2013, 2.4 in the first quarter of 2014 and a demo-able version of 3.0 at the end of 2014. Big thanks and a large applause was sent to Burt Beckwith, who have left the Pivotal company, but still makes independent contributions. New fultime employee on the Grails Core team is Lari Hotari, allready one of the biggest contributers to the Grails Project, also received a warm welcome from the audience.
Grame continued his talk presenting the new stuff from Grails 2.3. Aether has replaced ivy for dependency resolution, and forked execution when running tests, not poluting an already running applications metaclasses. He presented the REST support in grails for url-mappings, versioning and resources. The @Resource annotation for domain classes makes it a REST resource, without even a controller. In controllers, the new 'respond' keyword joins render, return and redirect, and automaticly determines the responce type (xml,json etc) from the request. 
On the asynchronoes stuff, Grails now use the GPars library, and have Promises. The @DelegateAsync can be used to turn a non-async service into am async with a few lines of code, keeping the service DRY. All domain classes have the .async namespace, so you can access them like DomainClassName.async.get(id) etc. - pretty cool, especially whith complex dynamic finders.
Databinding have been improved, and now provide @BindingFormat and @BindUsing annotations. Security is improved by better XXS prevention, automatically encoding variables, knowing the environment (js,html etc.).
The @Transactional annotation, created at Hackergarden at GR8Conf, have removed proxies to Spring transactions, solving a lot of problems, and even working in controllers.
In the end of the keynote, Graeme presented the ideas for Grails 3.0. It wil  provide application profiles, a new Gradle build system and plugin delieation. Old fat will be cut, and it will NOT be backwards compatible, but guides for upgrading should be supplied.
After the keynote, I chose to attend 'MetaProgramming with the Groovy Runtime' by Jeff Scott Brown. Jeff made a cool live-coding session, re-implementing the Expando class, and the concept of the metaClass, including the setProperty, getProperty and methodMissing methods. It was really funny to see Russell Winder smiling, when the discussion came to String as a final/immutable class. At the end, Jeff demonstrated how to get the class the closure is attached to through the metaClass, using the delegate variable.
The next talk was Graeme again, this time presenting 'RESTfully ASYNC with Grails 2.3'. It had a considerable overlap with the keynote, but he elaborated a bit on some of the topics. Towards the end of the talk, he did do a live demo, which was really nice, seeing the RESTservice client working with the service.
The lunch was classic british, and really delicious. Great work from Skillsmatter to handle lunch for everyone with almost no time spend waiting in line!
After the lunch break, I attended Dan Woods with 'Groovy for System Administrators'. He presented ome nice ideas on how to setup and deploy servers in a Linux environment, using Gradle scripts to package rpm packages (or .debs). The script was (almost) Luke Daley approved! In the last part of the talk, Dan demonstrated how to use Groovy for authentication, from the kernel space. This was very technical, but the code is available form Dan's github account. 
Tomas Lin was presenting 'Building Lightning Fast REST services, immediably trying to scare the audience away, claiming it would not be about REST anyways. He did give a few links for REST definitions, but did instead focus on Dropwizard, a fast java framework. He recommended using the right tools for the right task, and not consider it an exclusive OR between the technologies, enabling a service oriented architechture. The presentation was really performed well, with semi-live coding on video. 
The last talk of the conference was 'Application Architechture in Groovy' by Dan Woods. He emphasized that architecture should be adaptable and easy to maintain. Dan had a lot of great points on readability of code, the role of the architect and style in general: Idiomatic Groovy can be scary: Don't go whirling down the rabbit-hole and discard all type information etc. (Read Burt Beckwiths Programming Grails book - it is GR8)
Quote of the talk: '"Goldilicks Groovy": Not too Groovy... just Groovy enough.' 
The last official part of the program (before leaving for the pub) was the park bench discussion, with Russell Winder, Jeff Brown, Cédric Champeau, Luke Daley, Guilaume Laforge, Stephane Maldini and Dan Woods. After a slow start, the questions came rolling, while Dan Woods kept the tweet-streem flowing :)
The Groovy Grails Exchange is really well planned and executed - great work by the Skillsmatter crew and Peter Ledbrook. I'll be back again next year!