Alex headshot

AlBlue’s Blog

Macs, Modularity and More

QConLondon 2012 Day 1

2012 Qcon Conference

Today was the first day of my 3rd QCon London, held in the QEII Conference Centre opposite the Abbey of Westminster (which some of my international followers may well have seen in last year’s Royal Wedding). This year it seems bigger than ever before, and having bumped into Floyd it seems that it’s a record sell-out, with 300 more people than in last year’s conference.

As with previous years, the conference has an opening and closing keynote held in the main auditorium and then splits out into a number of tracks. This year, the first day’s tracks included:

  • Architecture Evolution and Improvement
  • Highly Available Systems
  • Cloud Architectures, APIs and Tools
  • Cross Platform Mobile
  • Hard-Core Java
  • High Performance Systems
  • Big Data and NoSQL

With such a choice, the problem is knowing in which room to be in – though fortunately some of the presentations are video’d and will slowly make their way to the InfoQ homepage (of which I am a regular regular author), and the presentation slides are being uploaded in appropriate formats as well.

Kickoff

The day kicked off with an entertaining look at Big Data, courtesy of Martin Fowler and Rebecca Parsons of Thoughtworks, and included the memorable line (paraphrased from Douglas Adams) “You may think it’s a long way down to the Chemists. But that’s just peanuts to Big Data.” On a slightly more useful note, Martin did refer to the Periodic Table of Visualisation Methods and Code City as two different ways of zooming in on data, which can be easier to detect graphically than through numbers.

There were a few nuggets of information, such as the fact that Wallmart has 1m transactions/hr and Facebook has 40b photos; however, I think his point was that any company can have big data problems. If you have a single server and the only approach is to “buy a bigger server” when you need to scale, that will only take you so far down the curve. At some point you need to be able to scale horizontally, not just vertically, and doing so often involves a different approach to the problem solving domain (e.g. MapReduce instead of relational databases).

HTML5 and Mobile Web

There was a lot of good stuff today on HTML5 and the Mobile Web, including Sencha’s new Sencha Touch 2 announcement. A few good resources worthy of note for the future is:

  • Mobile HTML 5, a comparison between different mobile operating systems and what they support
  • iWebInspector, a remote JavaScript debug utility for Safari on the Simulator
  • Wink Toolkit, a collection of platform compatible elements for dynamic web applications

Cloud and Network APIs

There was a JClouds presentation on how to design good Cloud APIs, mostly falling into the ‘common sense’ category. For example, using REST and JSON seemed to be no-brainers, as well as supporting HTTP verbs properly and using multi-part and range-based downloads/uploads.

There was a brief talk from a Google employee on how to design APIs (from someone who worked on Buzz … do we really want to know?) but this was hardly Next Gen APIs. It covered the JSON discovery API (available at http://code.google.com/apis/discovery/) but this is hardly new; the discovery was announced in May 2011 and the updates for the APIs themselves was in May 2010. Yawn.

Java

There were a number of good Java talks; there’s some notes from the upcoming Features of Java8 from Kreska, including the story that there will be a two-year upgrade plan for Java in the future. Of course, Java8 will have some welcome (Lambda) and unwelcome (Jigsaw) features, but at least it will be coming on a more regular schedule, starting next year.

There were some good presentations on how to get better performance out of JVMs, including how to deal with latency and performance due to garbage collection. Twitter’s presentation covered how the GC works, including some misconceptions (such as object creation; it is often easier to create a temporary object and throw it away rather than have a pooled cache of objects; the temporary object won’t outlast the nursery generation, whereas if it is pooled it will.

Some other stats were given; for example, a new Object() takes up 16 bytes, and a new byte[0] takes 24 bytes. In addition, an object’s memory layout is often padded to the nearest word; so a class with a single byte may take 24 bytes of space, and a subclass with another byte may take 32 bytes. Some of this is hidden in libraries, such as Apache Thrift, which peforms network deserialization of data. In a class with a primitive field, a BitSet is used to determine if the primitive value has been set or not; but that BitSet adds between an extra 52-to-72 bytes worth of space depending on the word size.

Compressed OOPs can help – and are default on newer JVMs below a 30Gb size – but for applications which go above the 32Gb heap size, the jump is an extra 30% of memory to deal with the long words.

There was a general warning against using ThreadLocal storage, which has a nasty tendency to escape the local surrounding space and thus leak memory (or connections if there are many threads).

There were additional features such as -XX:+UseSerialGC, +UseParallelGC, +UseParallelOldGC but probably more useful was -XX:+PrintGCDetails, +PrintHeapAtGC, +PrintTenuringDistribution which can be used to determine whether the size of the nursery (or Eden) generation is appropriate. Tuning the young generation is far more important than any other aspects, since all tuning needs to start with the initial generation.

Azul had a similar prsentation but contained less information, spending most of the presentation defining terms such as ‘Parallel GC’ and ‘Concurrent GC’. The main reason for all of these definitions, it seems, was to be able to say that the Azul Zing garbage collector doesn’t have any of the stop-the-world problems that Hotspot does; and therefore, doesn’t have any customisable options because it all Just Works.

The Azul Zing machine and technical implementation is quite impressive; but the presentation was really dry towards the end.

The evening keynote was generally a waste of time, and only really served to highlight the fact that the presenter doesn’t know how to pronounce Java. Still, at least I got to catch up on some mail.

Evening Party

QCon is unique in that it has an after-hours party on the first day of the conference. This can help break the ice and get to know others who are attending. It was held in the same location as last year; but even though there were more people at the conference, the space felt less crowed, perhaps because they opened up a second room. There was some kind of demonstration going on outside, which was presumably for an unrelated event, but otherwise things went through smoothly and there was plenty of beer for all.