Last week I visited Krakow for the Geecon (pronounced "Geek on") conference. I've never attended Geecon before, but our CTO Martijn had delivered a talk there a few years ago and recommended I go, so I submitted a talk on writing software that plays nicely with your CPU Cache. I was also asked by Steve Poole to help out with running an Adopt OpenJDK Testfest on the Saturday after the conference.
I had arrived on Tuesday and did a little sight-seeing around the old town before the conference itself started on the Wednesday. I attended some really interesting talks on Wednesday:
- Steve Poole presented on IBM's proposal for adding a Packed Objects concept to the JVM. This is a way of providing information to the JVM about the memory layout of an object and its most compelling advantage is for serialization with native code, where it lets you make a class look like a struct to a library written in C. It also helps solve the Locality of Reference problem in Java. I've asked him to run a hackday in London and see if developers find it easy enough to use.
- Kirk Pepperdine gave a talk on G1 Tuning. Unfortunately things didn't out so well for Kirk in terms of AV equipment which is a shame because his observations about the problems and opportunities surrounding G1 had advanced since he gave a similar talk at DevoxxUK. Its also a shame because when your AV equipment fails you as a speaker there's little you can do to recover. I'm sure the next time Kirk gives this talk it will be as good as his talk on CMS GC Logs.
- Erik Onnen talked about network tuning. Some really good stuff about the tradeoffs with asynchronous vs synchronous network programming and a discussion of their architectural choices for running a high performance network stack pushing out data to millions of mobile phone users. Sadly he didn't have time to go through kernel tuning optimizations, but we had a bit of a chat afterwards which was interesting and that kind of conversation is the real reason you go to conferences to begin with.
I also gave my own talk on CPU Caching that which I felt went well. There weren't many questions after I spoke, but I realised when asking around that its much more common for Polish people to come up afterwards and ask you questions. I also had the running theme of AV equipment failure, which manifested itself as an epic audio feedback loop. Switching to a hand held mic seemed to fix the problems.
Wednesday evening there was a party in a local bar, which made me pretty glad to have already presented my talk.
On Thursday morning I saw Oliver Gierke's talk on Spring Data. Spring Data provides an API to access many different SQL and NoSQL data stores, but has gone down the route of having different APIs for different backing stores which is interesting. This drops the abstraction advantage of standardised annotations across all backends, but lets developers write code that's tailored to the data store in question, while still providing integration with the Spring framework. I also attended Manik Surtani's talk on NoSQL and data grids - always a compelling speaker.
In the afternoon I took a bit of time off the conference in order to view the Krakow salt mine, which contains many interesting salt sculptures and is highly recommended if you're in the area. I got back to conference in time for Joel Spolsky's keynote. This was mainly using the development of various features in stackoverflow as examples of how to build communities and get the right people to come to your technical community. Its interesting to see the similarities between what I see happening at the LJC and the approaches that are being taken elsewhere.
Thursday evening there was the speaker's dinner which involved discussion with Joel and also our chief scientist Kirk. I learnt never to travel via Charles de Gaul airport. I'm not sure that's a valuable lesson but it is a lesson. The restaurant (Le Scandale) had a bar that did some great espresso Martinis, recommended if you're in Krakow and in need of an espresso Martini.
I didn't make it in particularly early on Friday morning, but I did make it to a really good talk by Ken Sipe on wireless network hacking. Not the usual fayre for a software conference, but it was well received by the audience and had some fun moments. If you were already in the mood to ever trust a wireless network, then you won't after seeing this talk. Ken also had a few great, and generally applicable, quotes during his talk including "You should always know one level of abstraction lower than you work" and "If you can't split it, you can't scale it".
The closing keynote of the conference was given by Sven Peters from Atlassian on Kick-Ass software development. When he started out I thought that it was going to be a fairly light hearted talk lacking in useful content, due to his focusing on the film Kick-Ass and wearing a suit from the film. I realised as the talk went that he had some really good takeaways. For example going into details on how to make it easy for your users to submit feedback. This is something I've been pushing at work for a while and its helped us a lot in get early feedback on Censum. He also talked about structuring your teams so you could use the ability of UX designers where appropriate, but also not slow developers down when there's limited design expertise.
Steve Poole and I ran a good OpenJDK Testfest on the Saturday, writing some open source tests around the Base64Encoder class and the Japanese Calendar in JSR-310. The guys from the Polish JUG were really enthusiastic about contributing to OpenJDK and good programmers to boot. One of things that we've learnt from running a couple of these events now is that the success of the events hinges upon being able to focus on specific OpenJDK classes. If you don't do this attendees get lost in the mass of core Java classes that have been accumulated over the years and don't write good tests.