JAX London & MongoDB Tutorial

In previous years, JAX London would have been an easy, local conference to go to. This time it took me most of Sunday to get there, and not because of the Super Storm. Still, that gave me the day to finish off the tutorial I was running there on Monday morning. Not that I would be so unprofessional as to leave preparing things until the last minute, oh no….

But as in previous years, the main benefit of this conference for me was meeting most of the usual suspects from the London Java Community. For example, presenting were: Andy PiperBarry CranfordJim GoughPeter LawreySandro MancusoSimon MapleMartijn VerburgJohn Oliver: John StevensonRichard Warburton. The Community Night in particular also drew a lot of LJC members (including some first-timers) to JAX, and it was a really good “networking opportunity” (i.e. chance to have free drinks, catch up with friends and make new ones). I really enjoyed hanging out with everyone at JAX this year, I was tempted to write the names of everyone I spoke to and had fun with because it really made my conference, but I think that would make a very boring blog post. But if I spoke to you at JAX, you made my journey from Spain worthwhile, thank you.

As well as the LJC-types, there were some other really big name speakers too, including MongoDB’s Chairman Dwight Merriman. Highlights for me were:

  • Ken Sipe’s Spock talk. I saw this at GeeCON and that’s why I started using Spock to test the MongoDB Java driver, but it was great to see it again and pick up some extra tips
  • Ted Neward’s talk at the community night about being a CTO at a startup. It was really interesting, and nice to see a realistic view of the difficulties of that role.
  • James Governor’s keynote on how Java got its Mojo back. I like seeing facts and figures to back up a viewpoint, and as you’d expect from the founder of an analyst firm, this talk was full of them.

As James mentioned during his talk, the audience at JAX was, as in previous years, somewhat passive. I’m not really sure why, as around 50% of the audience came from outside the UK so we can’t even blame English reticence. And in a conference full of outspoken LJC-types, it seems an odd thing to have an unresponsive audience. Maybe it’s the venue, the main hall in particular seems to lend itself to sitting quietly in the audience and expecting to be entertained.

I presented four times at JAX, because, well, on home turf one ends up doing more than one expects.

  • Firstly, a tutorial on the new Java driver for MongoDB (more on this later);
  • Secondly, a clinic for novice speakers. This was a lot of fun, and I think it was useful for everyone. I’d love to run this again (I probably will at the LJC Open Conference). The aim is to give new speakers confidence, not focus on details like building a slide deck.
  • Thirdly, the third time out for my “Design is a Process, not a Document” presentation. It’s a relatively interactive presentation, which I don’t think worked so well at JAX, but it’s a fun presentation to give.
  • Finally, not only did I get roped into being on the panel for “How to start a community” at the community night, I ended up, somehow, moderating it. That was fun, it was the first time I’ve been a moderator, it’s a role I usually avoid as moderators ought to limit the amount of talking they do, which doesn’t sound fun to me.

The tutorial materials are available on GitHub. I haven’t provided a lot of guidance on how to get started online, but the exercises are there, and the slides which present the concepts and suggest the order to tackle the tests in. If people use these materials, please feel free to give me feedback on them, but be nice - they were designed for an in-person tutorial, not an online one. But it is a good way to get a feel for the new MongoDB Java API (in its current, unfinished, state).

So, JAX London - great speakers, and a good conference to meet not only Londoners, but a lot of international people too.

Upcoming Events

So yeah… in keeping with this year’s theme of basically only blogging about the exciting conferences I’ve been to, I’m going to blog about the exciting conferences I am attending in the future. I haven’t been great at doing that, the disconnect between the time I submit a presentation and the actual announcement means that I often forget I haven’t told anyone about what I’m up to.

Firstly, I’m back in the States this month to present my very first workshop - An Introduction to the Disruptor at Strangeloop.  I’ve been given a mere 6 months to prepare it (note: sarcasm) and it’s still a work in progress.  So, if you’re coming, feel free to suggest things you want to see covered.  If you are coming, I’d love to hear from you.

Secondly, I’m back in the States again a minute and a half later for several presentations at JavaOne.  I really enjoyed JavaOne last year, it was my first international conference, my first speaking gig, and a great place to meet loads of dead interesting people.  This year I’m being greedy and I’m doing more than one talk:

  • Sun 30th Sept: UGF10467 - Benefits of Open Source 
  • Mon 1st Oct: CON3732 - Concurrent Programming with the Disruptor
  • Wed 3rd Oct: CON5130 - London Java Community: How to Change the World
  • Wed 3rd Oct: CON11338 - The Problem with Women: A Technical Approach

I’m afraid the content catalog totally confounds me, so I can’t link to each talk specifically, but you should be able to search on the identifiers.

Then I’m back on home turf, at JAX London, doing the Disruptor talk yet again.  I always enjoy JAX, it has a lot of participation from LJC members, it attracts an international set of speakers and it’s right on my doorstep.

Finally, I’d really, really like to go to Devoxx again this year, but that hasn’t been confirmed yet.  I’ll do everything in my power to be there, but no promises.

Right.  I suppose I had better get back to writing this workshop…

Video of our JAX London session

Slide: Beginner's Guide to Concurrency

At JAX London Mike and I presented "Understanding the Disruptor - A Beginner's Guide to Hardcore Concurrency".
This is the session we initially previewed to the
London Java Community a few weeks earlier. The content is the same, but the feel of the presentation was quite different to us - the
venue for the LJC event was more intimate, and it was easier to interact with the audience. At JAX, we were up on stage,
which was pretty cool actually, but meant that it felt more like a lecture and it was less easy to connect with the audience.

Continue reading "Video of our JAX London session"

JAX London – I learn stuff and meet people

A couple of weeks ago, I was at JAX London along with a number of the London Java Community regulars (Martijn/Ben/John/Sandro/Simon/Zoe I’m looking at you….)

My purpose for attending was largely to present the Hardcore Concurrency for Beginners talk that Mike and I debuted at an LJC event a few weeks back. Almost as important was catching up with the aforementioned LJCers and meeting with as many people as would talk to me. After the disappointment of the sessions at Java One, sitting in a room being talked at was quite low down on my list of priorities. Sometimes it’s nice to be wrong.

The sessions at JAX were of a very high standard, and I learnt something from every one. I was pleasantly surprised by the calibre of international speakers that were there, and the sessions seemed to be pitched right for me personally, which was nice.


  • I’m going to cover these first because I like to end on a high note.  Firstly, although I was interested in the Open JDK session at the community night, it was really on way too late (and after too much beer - i.e. more than none) to get the most out of it.
  • It’s a bit of a shame that our session was the last presentation on the final day, by that time people’s brains are fried and we didn’t get as many questions, or as much interaction, as we usually would.  Maybe that’s because everyone understood and agreed with us.  But we did get great feedback so I could be scraping the barrel for things to complain about.

The following sections outline the main takeaway points for me.

Software Craftsmanship / Design
Sandro did a great job emphasising that Software Craftsmanship is about professionalism, not beauty.  We should be doing the right thing because we want to, because it makes everyone’s lives easier in the long run, and because it is the right thing to do, not because some process dictates that we do it.  The other thing that really struck me was how having a craftsman’s mindset leads to us taking ownership of our career and investing in it.  He also challenged us to stop being miserable and negative.  If we’re happy, we’ll attract more (presumably happy) people into our circle.

Jason Gorman's Slow and Dirty presentation showed that ignoring quality slows down delivery not just in the long run, in terms of maintainability, but also in the short run - a TDD exercise of approximately 30 minutes took less time to get right when done in a test driven fashion, despite that fact that we all still think writing tests takes too much time. He pointed out that Twitter and Facebook are statistical aberrations - not every startup can afford to assume they will be bought out of their scalability problems. There was lots of interesting stuff here about quality, which was pretty inspiring at the time but in retrospect, as a team that already does Test Driven Development almost to the extreme, I wonder what’s next for us to improve our quality even further.
Simon Ritter’s keynote stated that code should be a joy to read, not simply easy to read, and Adam Bien's presentation talking about simplifying code: thinking about design, and not getting bogged down in unnecessary design patterns in order to implement something simple.

Concurrency / Parallelism / Performance
Russel Winder’s session around message passing had me thinking. It was particularly interesting to see him say things that are possibly the opposite of what we (the LMAX/Disruptor types) are preaching. For example, that programmers shouldn’t care about the low-level details; that we should be using models (i.e. abstraction) to deal with parallelism; that you should let the JVM deal with thread management. However, I think he’s fundamentally coming from the same place as us: “concurrency” in the past was not a good model, it was designed for old hardware that was trying to run multiple processes on a single core. With multi-core systems you need to be running code in parallel instead.

Dan Hardiker’s performance testing presentation was another one that reinforced that testing first, finding what the real performance is, profiling and then targeted experimentation are all fundamental to getting good performance. There was a lot of good advice to how to write good performance tests too.
Another point from Simon Ritter’s keynote reiterated that the performance free lunch was over, and we need to get better at writing parallel code.

Both the Open JDK session and Ben and Martijn’s “Spring cleaning your code base with Java 7” had me attempting to do things with my mac I never intended to do (i.e. write code). Thanks to Ben and Martijn’s patience, I finally got IntelliJ playing nicely on the mac with Java 7, which was a challenge but I’m pretty pleased I’ve achieved it. The Open JDK one was not as successful for me personally, but I got a good feel for the process of building it (i.e. it’s hard and it takes a very long time).

Other great stuff:

  • The keynote by James Governor from Redmonk was really thought-provoking.  So thought-provoking I wrote no notes and can’t remember any of it.
  • As last time, the Community night was really great.  I met new people and I hung out with some old favourites.  Dear God I must stop drinking with those guys. Hotel bars are particularly awful for losing track of time.
  • I heard about the Java 7+ features enough times from various people to be able to give an overview of the release plan to my geek friends in the pub on Friday (hey, they asked).
  • I learnt how to use twitter to bridge that gap between me and other attendees, and made new friends without having to do the scary thing of approaching strangers.
  • The lunches we rather good.
  • Going to a conference 20 minutes from home is a bonus.  Nice to meet other London devs as well as the European ones too.
  • To me, it seems as if the relevance of the JCP is starting to seep out into the real(er) world.
  • The tables for laptops at the front of the rooms was an awesome idea.  For a start, it encouraged people to get into the room early to get one of those seats.
I had a great time at the conference, I learnt stuff and met people, which is all I really want.

For once, the photos aren’t mine. Images courtesy of JAX London.