GeekOut 2015 Summary
I last had the pleasure of visiting the lovely Baltic city of Tallinn in 2012, when I presented JSF 2.2 and the Rockstar talk at GeekOut 2012. Now that I've got something new (for me anyway) to talk about I made the cut and was invited back to present Servlet 4.0 at GeekOut 2015. Attendence was capped at 400, giving this conference a very exclusive feel. Indeed, 99% of those that registered for the conference actually did attend. This was the 5th installment of the GeekOut conference, hosted by ZeroTurnaround. This was the first time the conference had two tracks, so my report here only covers the sessions I actually attended. All of the sessions were video recorded, and I expect the sessions will be made available soon.
Day one started with back-to-back plenary sessions offering two different perspectives on the #java20 theme. Stephen Chin gave a historically rich but technically light session featuring lots of freshly recorded video clips with Java luminaries. Of course there was ample content from James Gosling, who I would like to congratulate for winning the 2015 IEEE John von Neumann Medal. This puts James in the company of such titans as Leslie Lamport, Donald Knuth, Ivan Sutherland, and Fred Brooks. I was happy to see that Stephen dove deeper and offered the perspectives of John Rose and Georges Saab on more fundamental aspects of the history of Java. Martin Thompson followed Steven with a very complimentary session. The session was so complimentary I'd almost say they coordinated. Martin's session gave his personal perspective on Java over the years, with some very interesting stories from his work on making Java perform well. I liked his perspective on the causes and challenges of bloat in a long-lived software ecosystem. Another very interesting perspective was the extent to which high frequency trading drives advances in performance (in Java and in the entire industry). Martin's talk piqued my desire for a #java20 talk about all the companies that have been spawned directly or indirectly by the Java ecosystem. I'm thinking Interface21, Tangosol, JBoss, NoFluffJustStuff, ZeroTurnaround, Atlassian, Parleys and there are many others. Hey, I'm pretty sure there's an interesting talk in there somewhere.
After the plenary sessions, we broke out into the two tracks, starting with my session on Servlet 4.0 and a session on Cassandra. My session was quite well attended, and it went pretty smoothly. We'll see how the feedback shows up, however! After my session, I went down to see Markus Eisele talk about Apache Camel. I hadn't followed the progress in the Camel community and I'm happy to see it is doing well since. Also nice to see my old pal Gregor Hohpe represented virtually, as his book is represented in spirit in Camel itself.
Day two started out with Attila Szegedi's highly technical Rhino talk. This was the first talk of the day, after the party night, so it was a little lightly attended. However, those that made it there were rewarded with an in-depth understanding of the rationale for some performance related design decisions in the implementation of Nashorn.
The 10:30 slot was another effectively plenary session, but out in the demo area. Stephen Chin's highly effective NIGHTHACKING brand came to GeekOut with a panel discussion on the #java20 theme. The video is on the NIGHTHACKING website. This was a lot of fun, and I got to put my Javagator old-timer test out there. I also had the pleasure of a brief chat with Stephen regarding JSF 2.3 and Servlet 4.0.
I was really looking forward to Tomasz Nurkiewicz's session about CompletableFuture, particularly because of its use in the Java SE9 HTTP/2 client. Thomas managed to pack a whole lot into a short, well constructed, code powered session. It's not easy to explain the differences between thenApply(), thenCombine(), thenCompose() and many other methods in the API, but Tomasz succeeded. He even surfaced an important naming inconsistency between the CompletableFuture API and the java.util.Optional API: thenCompose() == flatMap(). For more on this topic from Tomasz, check out his blog entry The Definitive Guide to Completable Future. Personally, I think it's a bit bold to give a single blog entry such a lofty title, but you can't argue that it does indeed cover the topic very well. I meant to ask Tomasz if his code samples from the talk were taken from an upcoming book. Tomasz, if you happen to see this little blog entry, please plug the book if there is one.
I had high hopes for the next talk, Gleb Smirnov's concurrency talk. It was probably a great talk, but sadly this is when my jetlag hit hard and I was struggling to keep up. I'll look for the video!
I took a pass for the 15:00 slot due to the afore mentioned jetlag and opted to save my energy for one final session, Andrzej Grzesik's Go. I'd taken a quick look at Go before the session, so I was in a good position to enjoy it. This session made no excuses about having nothing to do with Java and instead just tried to give a quick tour of the Go language and programming environment, with a view towards lowering the barriers to entry to give it a try. Go succeeds because it rules several fundamental things as simply out of scope. There is no dynamic linking. There is no UI. There is no API to the threading model. There is no inheritance. I'm glad Go is out there because sometimes you don't need that stuff. For what it's worth, here's a nice post on Go from the Docker guy.