So this year I got the opportunity to speak and visit Greach 2015 in Madrid, Spain. I've never been in Spain before, but after visiting I definitely want to go back. Although the trip to Madrid was more cumbersome than planned, because of the strikes in France, I arrived at the speaker's dinner on time. Just go to mention that the Madrid metro is a very pleasant way to go around in Madrid. It was good to see old and new faces and to catch up and just have fun. Friday April 10th was the first day of the conference. The conference is held at the university in the south of Madrid. Jochen Theodorou, one of the Groovy core developers, opened the day with the keynote about Groovy's past, present and future. He gave a very nice overview of how Groovy evolved over the years and Groovy has been around already for a long time. Of course the latest news this year is Pivotal's hands off of Groovy and Grails. Jochen explained he first gets a good vacation and then decides what to do himself. Groovy is now in the process of getting an Apache project so the continuity of the development of the language should be saved. Then the rest of the day two tracks were presented at the same time. And there were difficult choices to make. Fortunately all talks are recorded and they will be added to the Greach Youtube channel.
I went to the talk Groovy and Scala: Friends or Foes by Marco Vermeulen. He showed how we can use Spock with Groovy to test Scala code using a Gradle build. So both worlds can live together and we can intermingle where possible. The application written in Scala was pragmatic and that is something I missed when I looked at Scala for the first time. This talk really got me interested to learn more about Scala. Next up was the talk AST - Groovy Transformers: More than meets the eye! by one of the conference organizers Iván López. He showed a lot of the (local) AST transformation that are already available in Groovy and that we can use everyday in our programs. Each AST transformation was clearly explained and he showed samples on how to use them. After his talk it was my time to present Grails Goodness. In this talk I live coded a selection of the blog posts about Grails I did write. Somehow there is always to little time to show everything I wanted, but still I think I was able to show some nice features of Grails.
After a very good lunch it was time to attend Hacking the Grails Spring Security 2.0 Plugin by Burt Beckwith. It is always fun to attend a session by Burt Beckwith and this was no exception. The plugin is almost ready to be released and he showed us the components that make up the plugin and how to customize things in our applications. The plugin provides some defaults, but they can easily be overwritten or changed if we want to. The next talk was a discussion Gr8Workshop: A Guided Discussion about Teaching and Diversity in the Groovy Community by Jennifer Strater. She first showed some basic principles of teaching something, followed by experiences she had with Groovy workshops both for beginners and more advanced developers. It was interesting to hear to Groovy can of course also be the first programming language for a developer. Normally I am used that Java developers learn Groovy, but also developers from a different background or just new developers get used to Groovy quickly. Russel Winder told that in the UK programming is a mandatory subject at school for children starting from 5 years. I think it is great that kids learn more about programming and solving problems at a young age. He also said that children learn by playing and sometimes we forget that adults can learn the same way.
I went to Advanced Microservice Concerns by Steve Pember where he presented his real world experiences working with microservices. For example to have separate code repositories and that the DRY (Don't Repeat Yourself) principle doesn't need to apply among microservices, we want as less dependencies as possible between services. He also showed his preference for using a message broker to communicate between microservices in a flexible way. Other concerns like monitoring and logging were also covered, for example he showed the Elastic search, Logstash and Kibana (ELK) stack. The last session of the day was about The Groovy Ecosystem by Andres Almiray. He gave a good overview of all the projects related to Groovy that are out there. And there a lot of Groovy related and influenced things we can use, besides maybe the obvious Gradle, Grails and Groovy itself. He also gave GVM a special place, because GVM ties it all together and gives us very easy access to a lot of the tools and projects.
The second day of the conference was even more packed with now three tracks to choose from. I am glad the talks are recorded so I can still see what I missed afterwards. We could choose to follow a workshop or between two talks. I didn't attend the workshop, but followed the talks. The first one was Grooscript in Action by Jorge Franco. He created a Grooscript, which is a tool to convert Groovy code to Javascript. The tool is really impressive, it can already do so many things and I was amazed by how much of the Groovy syntax is supported. There is also a Gradle plugin for Grooscript. He showed a very nice working application with a Spring Boot backend and a Javascript fronted which was created with Grooscript. With this tool it is very easy to write Groovy code (we already know) and have Javascript application transformed for us. And it is not a small subset of Groovy we can use, we can use a lot already. The following talk was Documentation brought to life: Asciidoctor & Gradle by Markus Schlichting. He showed why we would want to have our documentation written in Asciidoctor, close to our sources and integrated with our build automation as compared to for example writing documentation in Word. He had some nice example on how to setup our Gradle builds to working Asciidoctor. I liked the watch plugin that he used, so every time the Asciidoc source file changes it is automatically transformed.
The next talk was DSL'ing your Groovy by Alonso Torres Ortiz. He gave a good overview of the different options we have to build a DSL in Groovy. For example using closures, builders, meta programming, AST and scripting. For each option he had some nice examples. I really liked how he wrote a AST transformation to mimic the data table syntax from Spock in his own DSL. Up next was Groovy enVironment Manager (2015) by the author of GVM Marco Vermeulen. He showed the components that make up GVM and his plans with the tool. GVM is now targeted to Groovy stuff, but he will create SDKenv that will support other SDK's as well. I also liked to hear about the components that make up GVM, like the Broadcast API we can use. Tools that are included in GVM can themselves add the tool or SDK to GVM and automatically it will be available for us to install.
After lunch Trisha Gee presented Is Groovy better for testing than Java?. She showed her real world experience of transforming JUnit tests to Spock. The different features of Spock and Groovy were shown like data tables and mocking and stubbing. It turned out that Java developers didn't have any real issues to use Groovy for their testing and still Java for the production code. The mental shift between Java and Groovy wasn't that big and the readability and terse syntax of the Spock specifications really added to better and more tests in the project. Burt Beckwith presented Little Did He Know... with non-related observations and tips about Groovy and Grails. The title of the presentation is based on a movie Stranger than fiction. He started with explaining some of the magic that happens with domain classes and constructors in Grails and Groovy. It turns out that Grails has an AST that will add a non-argument constructor to domain classes, but this intervenes with argument constructors we like to add ourselves. The talk was filled with nice examples and very useful tips.
Schalk W. Cronjé presented Idiomatic Gradle Plugin Writing. He is (co-)author of for example the JRuby and Asciidoctor Gradle plugins and had some very nice tips on writing plugin code. Especially to have some conventions on how the plugin and tasks need to be configured. I really liked the code that showed how to be flexible in accepting input files for your plugin to work with. With his example code of just a couple of lines it is possible to accept String, File and Closures to get files. He stressed it is important to be consist and prefer methods over property assignments. The last talk of the conference was Groovy on the Shell by Alexander (Sasha) Klein. Groovy is of course also a very good scripting language and why not use it in our shell as well. We know the syntax and he showed it is very easy to write shell scripts in Groovy. For example with Grab annotation and she bang operator we can write self contained scripts that can be executed by anyone as long they have Groovy.
The Greach conference is a great conference. The organizers did a very good job and presented a very good program. It was difficult to choose between tracks and therefore it is a good thing the talks are all video taped and will be available on Youtube. The attendees and speakers are all very passionate about their profession and working with Groovy and Groovy related tools and languages. It is a good place to catch up on the latest developments and speak with the people behind the projects and the users. Hopefully I will be back next year and enjoy another Greach.