James Gough

Distinguished Engineer, Java Champion, Speaker and Author
JAlba 2018

29 May 2018

Earlier this month I was lucky enough to attend JAlba, an Open Spaces conference hosted in Edinburgh. If you haven’t attended an Open Spaces conference before I can’t recommend them enough. They are very different to big hussel and bussel of a large scheduled conference (though these have their own appeal too). At JAlba there were around 80 attendees, which meant the opportunity for white boarding styles of sessions and discussions. Apologies if any of this is inaccurate, it’s mostly from memory as I forgot to take notes.

Thursday

We started on the Thursday with two session slots, the sessions I attended were “Does the Software Industry need a Hippocratic Oath?” and Java 9 modules in Jetty. The two topics could hardly be any different and the first really hit home a sense of responsibility for the software we write. From my perspective it seemed quite tricky (and the group was quite big) to steer the conversation meaningfully, and I think that is fine. The fact is that trying to outline morality and responsibility is broadly subjective and 30+ developers will all have a unique perspective. There was certainly some useful exploration here in particular the idea that there is definitely room in the world for cheap, crappy code. For me that was the key separating factor, if you write suboptimal code and have been instructed to do so are you being unethical? This is where this argument dives from software more towards legal contract and responsibility and of course runs out of time.

The Jetty modules conversation was really interesting as it was looking at how to apply modules to an Open Source project. Jetty is used by many projects and has not had a module system in the past. This means that over time developers have used internal parts of the API and perhaps even applied some evil patches. I hadn’t really thought much about modules until this session and realise that I need to play with modules more. Issues that were discussed included:

  • Where should the public interfaces go? Should interfaces have their own module?
  • If an interface has it’s own module, but the implementation requires configuration e.g. threads in a thread pool - do you then expose the class?
  • When do you stop exposing things? When do you just end up back at the classpath?
  • Do you upset people by removing compatibility?

It became an excellent architectural discussion of using modules and became an interesting theme for more social parts of the trip.

Social

The first of the JAlba social activities was a walk around Edinburgh’s old and new town. The weather on this day was perhaps the most typical of Scotland - cold, grey and a little wet. I am not one for walking tours in particular, mainly as I quickly loose interest. This part of the conference probably had most value in being an opportunity to walk around and chat technology and get to know people better. In fact Nick Ebbitt and I discussed the Jetty modules session from earlier at some length whilst wandering round Edinburgh.

After the walking tour we went to The Scotch Whisky Experience and got a theme park like ride in a barrel. It was here that I first met Robert Scholte in a whisky barrel! The tour itself was quite fun and we got to saw a large unopened whisky collection - I’m still not sure how I feel about that.

After a thirst was worked up we Nick, Rob and I stopped for a quick beer down in Grassmarket before dinner. During which the conversation about modules came up again and I was explaining to Robert my opinions on modules and versions. In particular that versions belonged (in my opinion) in the build system, and ensuring binary version compatibility could be done via SNAPSHOTs and CI. After that short rant I found out what Robert does - which is to chair the Apache Maven project. This is the best part about Open Spaces, everyone is an attendee there are no presenters and who you’re talking to could be anyone in the tech community. Thankfully it seems like my view points were not too outrageous.

Friday

On Friday morning the first session I attended was on lambdas and performance. Unfortunately the person who had suggested the session wasn’t there to convey it, so we had to improvise. The discussion was focused on bytecode and low level implementation, some of which started to explore Graal a little.

This lead nicely into Heinz presenting a short session on Graal and looking at some practical examples of how it worked. Perhaps the most amusing part of this presentation was Heinz attempting to do an autocomplete to create a new fib function. However as well as a create method there was also an import static option. The fib function was coming from a package sun.jvm.hotspot in a class with a main called HelloWorld.

    public static int fib(int n) {
        return n < 2 ? 1 : fib(n - 1) + fib(n - 2);
    }

Interestingly in Java 9 a comment has been added around this being a function used for testing and the ternary operator removed.

The final session of the day was on Jetty internals, which was really cool. In the session we walked through Jetty’s threading model and design for various hand offs and low level structures for request processing. It was also really good to meet some of the committers for Jetty, especially as we’re using it in a growing number of projects.

Social

Friday was the day for the boat tour, however I had decided that I wouldn’t take the boat trip. Instead I decided to follow the somewhat nautical theme and hack around in the hotel with Kubernetes and Docker. Nick and I did some hacking and looked through Nick’s really good presentation on dismantling mocking. I finally managed to get my toy Birthday API project to work on Kubernetes. More to come on that when I get chance to write it up.

In the evening we returned to the The Scotch Whisky Experience for a tasting. The tasting was quite cool, and we each got a glass and blended malt to take away with us.

Saturday

On Saturday I facilitated a session on APIs, an area of interest of mine. The session discussion developed nicely as we looked at APIs from the perspective of lower level APIs right up to RESTful APIs. It was interesting to draw on some of the parallels from different conversations around versioning, building and maintaining APIs.

The second session we covered was on multi release jar builds using Maven. This is quite an interesting problem to solve, as although the multi release jar is a nice concept how does it work in practice? I hadn’t quite considered the challenges before, in Maven they take the approach of having a multi module build. This works really nicely with existing IDEs and tooling, with the output of each build creating the layered effect within the target jar.

It was soon time to wrap up the conference and say goodbye to a few people (some only until the final dinner).

Social

In the afternoon Robert and I went Geocaching, which was a really great way to see Edinburgh. We started at the Castle and ended up at a stunning canal 5km away from the hotel having covered around 15km of walking.

The caches took us all over to disused railway stations and stunning scenery. Whilst wandering around we also had a chance to reflect on the conference and discuss maven and open source Java.

There came a point where we got stuck finding a cache, in the image below I am actually in the river. Not sure we were quite in the right place, but it was fun.

We headed to the pub to oil the cognitive process and whilst there we came across the following riddle:

Oh, I have a constant need,
to always feed.
I always try to keep them at bay,
whilst trying to get my 5 a day.
I never stop for too long,
or before I know it, I’ll be gone.
Orange, Pink, Red, Blue,
Oh, how I hate it when you go boo!
The more you achieve,
The faster we all move - you wouldn’t believe!
So I have to ask: Who, or What am I?

My logic for this was way off, but after solving (thanks to Robert) we left the pub and found another handful of caches. All in all a great day.

After caching was done we went for the final dinner. It was nice to sit and chat to Maurice about the conference and what a fantastic job I think he had done. For the first time my walk home was downhill having stayed slightly away from the conference due to points. I enjoyed the walk into the venue and if nothing else it helped clear the head from the night before.

Summary

I thoroughly enjoyed attending JAlba this year and will be hoping to get an invite for next year’s edition. It was fantastic to catch up with some old friends and meet new friends. It only remains to say thank you to the disorganizers and Maurice for doing a brilliant job.

Sláinte.