This week I attended, as usual since I don't remember when, to Greach 2017, an international conference about the Apache Groovy language and ecosystem. Greach is held each year in Madrid but everything is in English, and nowadays it's probably one of the Top3 worldwide events about this technology.
The event is organized mainly by Iván López (@ilopar) and Alberto Vilches (@albertovilches), with some help from other colleagues and a lot of Sponsors. Everything was perfect: the location is great, the spaces were confortable, the wifi more or less worked fine, cafeteria in-place, free wardrobe,... the lunch boxes were far from perfect, but that's another story more related to the venue.
TLDR; The conference content and speakers were great, in addition to the logistics. I missed the workshop day, but everyone told me it was also fantastic (both venue and contents). I learned a lot, not only about Groovy or Grails, but also about GraphQL, Ratpack and concurrence in general.
Let me summarize some of the talks I attended:
- Make concurrency groovy again, by Alonso Torres (@alotor). Alonso gave an excellent overview of the main available resources regarding concurrence in the Groovy ecosystem, comparing some of them in terms of design, code readability and even performance. Threads, functional style resources, parallel collections, Atomic variables, fork/join, GPars, actors... and even how to steal a bit from others (Clojure, Akka or Spark) thanks to the Java bindings. Take a look at the slides
- Javaslang & Groovy: The best of both worlds, by Iván López (@ilopmar). Another hands-on master class by Iván, combining and comparing some of the benefits of Javaslang with what's available out-of-the-box in Groovy. The demo part (90% of the talk) covered a lot of interesting examples: Optional vs Option, Try, Functional Interfaces, Tuples, Javaslang collections, Pattern matching, validations, ...
- Back From The Dead: HTTP Builder NG, by Noam Tenne (@NoamTenne). Noam gave a complete review of the features included in HTTP Builder NG, the current available implementations and some advanced features and use cases like header parsers, content parsers, request interceptors or request encoders
- hasMany Considered Harmful, by Burt Beckwith (@BurtBeckwith). Burt gave this talk for the first time in 2010 at the Spring One, pointing out some performance problems when mapping collections with any ORM tool (like GORM or Hibernate). After seven years, he revisited the topic repeating (sadly) the same warnings about more or less the same problems, some of them critical with huge data collections
- GraphQL development with Groovy, by Mario García (@marioggar). Thanks to Mario now I have a clear view of what GraphQL provides, and specially what it does not provide. He reviewed the main features, the logic behind schemas, types querying, hierarchy, operations, the introspective nature of GraphQL... Mario also demoed some useful combination of GraphQL with tools like GraphiQL or Relay. He even teased GQL, his own DSL library to use GraphQL directly from Groovy. Awesome :-)
- Groovy Puzzlers 4: The Bytecode Bites Back, by El Groovyssimo (@el_groovyssimo) and Noam Tenne (@NoamTenne). Again, this was fantastic. Entertaining and somehow even educational. It's based on the Java Puzzlers created by Joshua Bloch and Neal Gafter, but focused on Groovy. Big fan of the format
- Alexa, Tell Me I’m Groovy, by Ryan Vanderwerf (@RyanVanderwerf). Ryan explained how the Alexa platform works and some basic info about the main SDKs: Alexa Skills Kit and Alexa Voice Service. Ryan also showed how he uses Grails apps to create Alexa services and cards, and how to test them online with Echosim.io. Very interesting, and one of those talks in which the audience leaves with some good ideas for the future
- Grails keynote, by Graeme Rocher (@GraemeRocher). The anual Grails keynote in Greach, in which Graeme showed what came with Grails 3.2 (improvements in the awesome JSON views, in profiles, GORM 6, ...) and what will come with Grails 3.3: GORM 6.1 (already available independently), Spring Boot 1.5.x and Hibernate 5.2. Regarding GORM, the main things for the 6.1 version are: Improvements in common AST transforms, common services, and Data Services, package scanning and a better mapping DSL. Graeme showed some of the new features and they looked amazing, very good work :-)
- Geb best practices, by Marcin Erdmann (@MarcinErdmann). Marcin gave us some tips to make a better use of Geb, starting with the reminder that a Module is a Navigator, that Navigators are iterable, and the advantages of overloading some methods, having dynamic base urls or page parametrizations. He also explained how to inject Javascript into pages (if needed). Other best practices: using strongly typed Geb code, tracking the current page type, always keep the at checks simple and quick and that modules are not meant only for reuse but also to isolate complex blocks.
- Mastering Async In Ratpack, by Danny Hyun (@Lspacewalker). Danny went beyond the basic concepts of concurrency in a fantastic code-driven talk, showing a lot of good examples about the complexity of this kind of problems. He explained how Ratpack comes to the rescue, how the Ratpack concept of Promise works, how to manage them and how to test complex concurrent execution flows. Very complete for 45 minutes and very well presented. Homework: read about the C10K problem and the Disruptor pattern
Ivan talking about javaslang and groovy! #greach pic.twitter.com/zkxySl6SQu
— Ryan Vanderwerf (@RyanVanderwerf) March 31, 2017
It's time for #groovypuzzlers! @el_groovyssimo and @NoamTenne rocking on stage at @greachconf! pic.twitter.com/mVjhLJ6fhr
— Izertis Community (@IzrtsCommunity) March 31, 2017
Alexa can do GREAT stuff! @RyanVanderwerf has her tell @Greachconf we're all #Groovy 😎 @amazon #grailsfw @groovypodcast pic.twitter.com/c2KfK0A7u2
— Ted Vinke (@tvinke) April 1, 2017
What's new with #grailsfw?@graemerocher delivers keynote @greachconf and fills us in! pic.twitter.com/RJ029GnXGN
— Object Computing (@ObjectComputing) April 1, 2017
Notes for Rapid Ratpack Web app development https://t.co/XPKWNA3dg1@greachconf #greach #groovylang
— not the mama (@Lspacewalker) March 31, 2017
See you in Greach 2018!!