jCrete 2019 trip report

   I will try to briefly describe my experience from jCrete 2019 in this post with the hope you will get some good impressions of the event. It was my first time attending an unconference after so many other (mostly Java-oriented) tech conferences over the last few years. An unconference is essentially a series of discussions initiated by the attendees whereby everyone proposes and schedules a topic for discussion that the other attendees can join. The main point is that certain groups of interest gather and exchange ideas and knowledge through open discussions in a round-table manner. At jCrete 2019 there were 4 days of discussions (Monday to Thursday) and 1 day of workshops (Friday). At the beginning of each day typically between 8:30 and 9:00 attendees were gathering at the OAC (Orthodox Academy of Crete) to propose and present brifly the discussion topics and 3 slots of sessions were running afterwards. The only exception was Tuesday where sessions were running after lunchtime due to the early-morning excursions to Balos and Elafonisi.

   This year we were almost the full BG Java User group team attending (with the exception of Mitia) or overall 13 people with family members. We were also quite lucky that recently RyanAir started a direct flight from Sofia to Chania, just and hour and twenty minutes flight time, right on the spot ! I wasn't able to join for the first day of discussions on Monday and so I will share experiences from the second day of jCrete when I arrived. 

Day 2

   The island of Crete is very picturesque and you can spot right from Chania airport and on the road towards Kolymbari, one of the villages closes to the OAC and where our entire group has settled during our stay.

 I was lucky I was travelng together with Peter Tahchiev (the founder of the BG JUG) and we were hoping to be able to get to Balos on the second day as our flight was arriving quite early (around 8a.m. in the morning) but I would have missed the afternoon sessions and so we decided to just head straight to Kolymvari. Our place was just next to a typical Greek-style church and once we arrived we headed straight to the rocky beach nearby. It was fairly painful to go bare-foot on it and in the water to be honest.

Shortly I headed to the OAC for lunch to meet with quite some friends attending this year and meet some new folks. Topics proposals then kicked in and scheduled.

The first discussion I attended was around dependency management with the idea to discuss strengths and weaknesses of the dependency management mechanisms in the various build systems and try fill the gaps in between them. A notable representative of the Maven community in the discussion was Robert Scholte. One of the main discussion points was the different problems and solutions people have adopted to cope with the notorius Jar hell problem. One interesting suggestion was to introduce the possibility to specify library version globally so that it takes respect across all versions of the same library coming from transitive dependencies. 

    The second dicussion I attended was around the sjavac tool led by Marcus Lagergren (one of the creators of jRockit JVM, a Java champion). The main point of the discussion was that sjavac needs to get more development and adoption in the Java ecosystem as a more-performant alternative to standard javac. Some remarks Marcus did was that the tool, although being shipped with the JDK releases, doesn't see a nether some active development or discussion in the mailing lists, nor is being support out of the box in tools like Maven, for example.

   The third discussion was led by me and my friend and colleague Misho and it was a combined discussion about the security APIs that are still missing from JDK and how to push Java developers to write more secure applicatons. The discussions expanded to a more general one covering what needs to improve in the Java ecosystem in terms of security:

   - better documentation and guidelines for developers;
   - simpler security APIs (take DTLS as an example);
   - more JSRs around security (an idea here is blockchain);
   - more capabilities around the existing security sandbox model (such as more flexible permission checking).

In the evening we made a visit to a 3000-year old olive tree nearby considered a national monument along with a few glasses of beer at the Cretan brewery. Second day finished with a tasty dinner at the OAC followed by Cretan music and dances.

Day 3

Sessions started early in the morning. The first one I attended was about the spectre and meltdown vulnerabilities presented by Cliff Click. While the topic is a bit involved I would say it was quite interesting to know about especially due the fact that these classes of attacks are fairly hard to guard against at the software (or in particular OS) level. 

The second discussion was a very involved and active discussion on some of the key decision invocporated in Project Valhalla currently under development. One of the main features being discussed were the value (or inline) types and the performance gains they would bring from the way they are inlined. Two arguments presented were the confusing-for-developers naming of classes representing value types with the @__inline__ annotation being mentioned by Ben Evans and the possibility to have inlining based on a set of dependent types that would provide the possibility to optimize the memory layout of entire data structures (such as hash tables) rather than just types which was outlined by Martin Thompson.

The third discussion I joined was around Java and IoT. General consideration being that OSGi is indeed fairly well suited for building IoT platforms in Java.

Lunch followed with a nice relax time at the Golden Beach close to Chania followed by a late evening walk and dinner with scenic view at the sea in Chania.

Day 4

The day started as expected early in the morning and the first discussion I joined was about JVM internals with a good code walkthrough describing some of the main concepts incorporated in the JVM and discussing some of the intricacies related to implementing some of these concepts in a JVM implementation.

The second one was a presentation by Martin Thompson on why memory layout matters taking the layout of data structures as an example. This a more detailed discussion on some of the points outlined by Martin during the Valhalla discussion from the previous day.

The third session I attended was about stream processing in Java. Two of the key frameworks being discussed were Apache Spark and Hazelcast JET with Greg Luck being a notable representative of the latter. An interesting discussion formed around usecases people faced in applying savepoints and machine learning in combination with the streaming use cases they had. 

Lunch followed with a picturesque trip to the Elafonisi beach ending with a tasty barbeque at the OAC.

Day 5

Sessions are already over but on this last day there were a few workshops running. The one I attended was around making contributions to the Maven ecosystem where me, Mihail and Stefan from the JUG made a pull request for the maven-jdeps-plugin that allowed for the possibility to scan also classes on the classpath and not only in the application itself. The issue was reported by Andres Almiray considering the fact that the Gradle jdeps plug-in already provided that capability.

Lunch followed along with another visit to the Golden and Kalathas beaches ending with a dinner at the Sunset taverna.

On the next day our journey was going to an end early in the morning when our entire group was back to Sofia ...