ACCU Conference 2012

 

Another year had flown by and all of a sudden the annual ACCU Conference was upon me once more. This being my fifth year I was pretty comfortable that I knew roughly what to expect. However a change in hands of both the conference chair (now Jon Jagger) and the hotel owner (whilst we were staying there!) meant that there was always going to be something new to delight us.

 

Tuesday

 

The main conference is preceded by a tutorial day that I didn’t attend this year. For those trying to digest as much about C++11 as possible this would have been a fine start as Nico was back in the fold with an update to his fine book on the C++ Standard Library. Not that the other two options – Java garbage collector tuning and IT design/architecture – should be glossed over, but C++ 11 definitely appeared to be the primary focus.

 

I arrived early that evening with the intended goal of checking out my presentation on a projector, but after checking in and walking back towards the main part of the hotel I bumped into various people that I’ve not seen since last year. So I decided that a quick pint and catch-up wouldn’t hurt as there was plenty of time before tomorrow. I guess some of us just never learn…

 

Wednesday

 

Tim Lister got to kick-off this year’s conference keynotes with a talk on Project Patterns, on which he and his colleagues have written a new book. He suggested that Project Habits would have been a more suitable name as it was not about defining best practices but documenting common behaviours. Although he courted controversy with Lessons Unlearned the one that generated the most interest was Dead Fish – a project that smells rotten but nobody’s willing to speak up about it. This was a delightful start to the conference that set the tone in more ways than one.

 

As someone who does little C++ these days I wasn’t there to soak up all the C++ 11 goodies, but I still wanted to keep my eye in. C++ has its share of warts and Nico Josuttis put together a talk on the Best & Worst New Features that nicely illustrated how to get the most out of the recent changes, but more importantly identified some of the new traps you may fall into. And there are a few peaches! I think overall Nico had more Best than Worst features to discuss so it’s clearly a net gain.

 

The lunchtime routine changed slightly this year and it felt as though the bottleneck of past years was now behind us – I certainly got served more quickly each day. So I had ample time to chat before spending my early afternoon listening to Detlef Vollmnan describe Parallel Architectures. This session was a nice spot of revision on the changes in CPU architectures over the last decade and a look forward to what we can expect in the near future. He briefly covered the classic problem with the Double-Checked Lock pattern to illustrate how re-ordering under the covers affects us and also the costs associated with NUMA configurations. This provided a pleasant prelude to a talk I would attend the following morning.

 

Last year I gave my first ever talk and so I was hoping that by this year I’d have learned some new tricks and would give a slightly more polished show. I think the slides were a little more colourful and I felt brave enough to do a little live coding that I hope added to the experience. With a strong C++11 track I wasn’t expecting to get many interested in TDD based database development, but there were more than enough still awake at the end to make me feel pleased with my efforts.

 

The lightning talks are now a staple part of the conference and provide a forum at the tale end of the day to either add a poignant finale to a keynote or allow the more disgruntled among us to let off steam with a good old rant. There is generally more of the latter which was perfectly illustrated by Pete Goodliffe with some choice examples from his current codebase. On the more constructive side Jonathan Wakely reminded us about the virtues of shared_ptr and make_shared in particular. Aaron Ridout got to reply to a talk from Seb Rose last year suggesting that not taking up new employee references can be detrimental to your company too. With 8 talks on the first night there was clearly no problem finding willing volunteers.

 

Thursday

 

It was business as usual Thursday morning as I bolted down my fry-up to get to the keynote after a late night in the bar chewing various programming ‘fats’. Phil Nash had the honour of representing ACCU’s home-grown talent with a piece titled The Congruent Programmer. Given that he could barely speak a week before due to a nasty cold he did an excellent job of trying to answer that tricky question about what it is that drives us and what introspection might help us to develop ourselves in the future. I thought the analogy to the Alexander Technique was a little tenuous but his point was well made.

 

After the morning coffee break I decided I needed to feed my concurrency habit further and so embraced Russel Winder’s talk on the multi-core revolution. Russel is not shy of telling us how wrong the shared memory approach is and that the Actor, DataFlow and CSP models are the way forward. To him shared memory multi-threading is technique for OS implementers, not application programmers. He decided to cement these ideas by implementing the various forms in Go, D and C++ to show how they might look; with an eye on whether the new C++ threading additions are too little too late as it doesn’t have the high-level constructs, yet. Given what I had planned to see in the afternoon this was a fine bit of middle ground.

 

The vast majority of the sessions after lunch were 45 minutes long so I decided to pick two opposite views on the state of the C language – Dirk Haun’s Is C going the Way of the dodo and Andrew Stitcher’s When Only C will do. The former was part-musing from the speaker and part-workshop to allow the audience to provide some thoughts on why there are still so many C programmers and whether that will continue. It was interesting listening to the various opinions and small doses of nostalgia always goes down well. I felt a little less satisfied by the follow-up talk because I didn’t find the argument for pure C to be at all compelling (as opposed to using a subset of C++). Andrew’s example did reinforce the notion that C is the common ground between all languages due to its ABI, but perhaps sometimes it’s only the C ABI that will do, not necessarily the entire language…

 

More coffee was required before my final concurrency session, this time with Anthony Williams. I wondered if I had entered a parallel universe with Russel talking earlier about C++ and Anthony using Groovy for his examples! This was a great companion to that earlier session because Anthony added in the Active Object pattern and Loop Parallelism too. He also used his own Just Thread library to show how you can build on the C++11 standard library to give the higher-order mechanisms for the actor and dataflow models.

 

The second round of lightning talks gave Phil Nash a chance to extend his keynote further by providing a heart-warming tale about one particular user of his C++ unit testing framework Catch. Matt Turner vented anger on fluent style interfaces whilst Charles Bailey tackled the classic Law of Three. It wouldn’t be an ACCU conference without Didier Verna pointing out the superiority of LISP and he kindly obliged.

 

The Xbox Connect Challenge provided an amusing backdrop to the evening’s proceedings in the hotel bar as grown men (and women) were flinging themselves around in an attempt to outdo one another. Pete Goodliffe set a good early pace, but his crown was soon taken and the high-score rose to the heights of the more hardened gamers. There were definitely a few sore limbs the following morning for those that let the alcohol fuel their competitiveness.

 

Friday

 

Uncle Bob had the pleasure of entertaining us on the Friday morning with a Requiem for C. After going to two sessions the previous day on the topic it was interesting to see what spin he would put on its demise. There was a fair amount of personal background to start with that finally lead up to his eventual inauguration to C. Then we had the downward slope as he tried to convince us that we are getting further and further away from the metal with technologies such as the JVM and so consequently C’s value is diminishing rapidly. Some may have bought this, but from the lightning talks to follow others weren’t so easily taken in. He also wore a head-cam during the keynote which should make for interesting viewing by others later.

 

Devops, Infrastructure-as-code by Gavin Heavyside was my first choice of the day. This was one of those thoroughly practical talks that gives you insight into how others teams do stuff; the stuff in question being continuous deployment and other devops related activities such as monitoring. He took a deeper look at Chef, which is used to manage deployments, and the DSL used in configuring/testing it and explained how they perform zero-downtime deployments. The use of tweets from DevOps Borat as a backdrop made this all the more enjoyable.

 

I find that I need to limit myself on the number of sessions by Kevlin Henney as he makes me think too damn hard by questioning the status quo, and with a title like SOLID Deconstruction you new this was going to do just that. Last year he turned SOLID into just SID and this year it became FLUID, although serious artistic license was required for the D! The discussion of cohesion was particularly useful as it’s a term that’s often banded about but not well defined. One thing I found most interesting, but which was never highlighted, was the way that he named the test fixture and test methods in one of his examples.

 

Sadly I spent too long chatting over coffee to get into John Lakos’ talk and so I had to go find another, and I’m really glad I did as Jurgen Appelo was a pleasure to listen to. He took us through the murky waters of Complexity Thinking and Systems Thinking to look at its failed application to social systems such as software development. I thought this was going to be way out of my league as I had no idea who any of the “experts” were, but fortunately he translated the concepts into something us mere mortals could understand and added a large dash of humour to keep the session from drying up. It’s sessions like these that help break down the divide between programmers and managers.

 

The final round of 11 lightning talks opened with Tom Gilb following up last years attempt to quantify love by showing that music can be quantified. Diomidis Spinellis tried to convince us that we should alias the entire C++ library so that it follows Java naming conventions. Ed Sykes & Raj Singh explained how they had pushed pair programming to the next level with Posse Programming and Bernhard Merkle responded to Uncle Bob’s keynote by showing that C, albeit in a more modern non-standard form, still matters.

 

Friday night plays host to the speaker’s dinner where delegates get the chance to wine and dine with those that have preached to them during the last few days. Each course is met with a change of table to ensure there is a constant stream of new faces to chat with, and a new random element this year meant speakers could be forced to move too. Once again coffee was served whilst an auction raised money for Bletchley Park and the boat race made a welcome return too in the bar afterwards to battle out once and for all whether C was really dead or not…

 

Saturday

 

Even though the disruption caused by the volcano was well and truly behind us the conference has maintained the format of the lightning keynotes on the Saturday morning. These are 4 shorter keynotes hosted by a variety of speakers. Naturally, over indulgence from the previous night meant I missed the first two and so I started the day listening to Emily Bache’s Geek Feminism. Emily took a look into what differs between men and women to see what it might be about the way software development teams work that might be off putting to women. She made a particularly poignant observation that the Wisdom of Crowds is amplified by diversity and so being a minority is actually highly beneficial. The final keynote was from Jurgen Appelo that looked into what motivates us. He took various established sets of core values and munged them together to come up with his own variant that goes by the rather long-winded acronym CHAMPFROGS!

 

Giovanni Asproni has always been the conference chair when I’ve attended and so unshackled from these duties he had the opportunity to host a session instead. This was on API Usability and looked into what it means to design an API, whether that is for public or private consumption. His example of how the Single Responsibility Principle had been taken to the extreme was amusing but also enlightening. He is never one to pass up the opportunity to berate the Singleton pattern, and this occasion was no exception. Giovanni pulled together lots of little threads to provide one of those bread-and-butter talks that reminds you of all the little things you have to remember every day.

 

My final session of the conference was to be with Diomidis Spinellis about UML Graph, a tool to enable the generation of small UML diagrams using annotated source code. The premise of generating model diagrams from source code versus manual drawings was compelling and something I’ve been recently looking into with Doxygen. He then went on to discuss other tools for generating different sorts of diagrams and charts to give you plenty of options on how to programmatically create them; a very informative end to the conference.

 

Epilogue

 

The hardest part about coming home from 4 days at the ACCU conference is integrating oneself back into society. It’s an intense few days where you can literally eat, drink and sleep all things about programming. Depending on the kind of organisation you’re going back to you might be bursting with energy just waiting to pass on all that valuable knowledge, or perhaps you’re a small cog in a very big wheel with disinterested co-workers. Either way your participation means that you’ll be a better programmer for having gone and ultimately that’s what it’s all about.

 

Chris Oldwood

31 May 2012

 

Bio

Chris started out as a bedroom coder in the 80s, writing assembler on 8-bit micros. These days it’s C++ and C# on Windows in big plush corporate offices. He is also the commentator for the Godmanchester Gala Day Duck Race and can be contacted via gort@cix.co.uk.