ACCU Conference 2013

It’s April once again and that can only mean one thing – apart from the school holidays and Easter eggs – it’s the ACCU Conference. This year saw one of the biggest changes to the conference – a new venue. And not just a new hotel but in a new city too! For the last 5 years I’ve only ever been to the same hotel in Oxford and so with much trepidation I headed down to Bristol. One of my biggest “worries” was what was going to replace all those long standing traditions, like “Chutneys Tuesday”? But hey, we’re all agile these days so we should embrace change, right?

Wednesday

Once again I didn’t get to partake in one of the tutorial days on the Tuesday which was a shame as they looked excellent as usual. Instead I made my way down on the Wednesday and arrived in the early afternoon. That meant I missed lunch, but also more importantly the keynote from Eben Upton about the Raspberry Pi and a talk from Jonathan Wakely about SFINAE. The comments coming through on Twitter about these, and the other parallel talks, generated much gnashing of teeth as I cursed my late arrival.

 

Not wanting to take things lightly I dived head-first into Johan Herland’s session about Git. I’ve done a little messing around with Git and have read the older 1st edition O’Reilly book but I wasn’t sure whether I’d really understood it. Luckily Johan walked us slowly through how Git works in theory, and then in practice. I’m glad I saw this as it seems I was on the right track but he explained some things much better than the book. I also got to quiz him in the bar later about how some Subversion concepts might translate to Git, or not as it seems, which was priceless.

 

Next up, was Pete Goodliffe doing the live version of his C Vu column on Becoming a Better Programmer. This was split into two parts with the first being Pete discussing what we even mean by “better”. He provided some of his thoughts and there were the usual array of highly entertaining slides to back them up – you are always guaranteed a good show. The second part was provided by various speakers (chosen by Pete) who got to spend 5 or so minutes discussing a topic that they believe makes them a better programmer. Unsurprisingly these varied greatly from the practical, such as Automation (Steve Love), to the more philosophical – The Music of Programming (Didier Verna). The audience got to have a quick vote on what they felt was the most useful and Seb Rose’s Deliberate Practice got the nod.

 

Once the main sessions have finished for the day the floor is opened up to everyone in the guise of Lightning Talks. These are short 5 minute affairs where anyone can let off steam, share a tip or plug something (non-commercial). Even though it was only the first evening there was a full program with talks about such topics as Design Sins (Pete Goodliffe), C++ Active Objects (Calum Grant), BDD with Boost Test (Guy Bolton King), Communities (Didier Verna) and an attempt at Just a Minute from Burkhard Kloss. With 12 talks in total it was a good start.

 

Although not directly part of the ACCU conference, the Bristol & Bath Scrum Group held an evening event afterwards where James Grenning talked about TDD. Although it had been a long day already I couldn’t resist squeezing one more talk in, especially from someone like this. Being aimed at a wider audience than just developers meant there were an interesting assortment of questions afterwards which was useful. One in particular was the common question of writing the test first versus immediately after which always causes a interesting debate.

Thursday

A full English breakfast and plenty coffee set me up for the day and I was greeted with my first 2013 keynote, courtesy of Brian Marick. He started with an interesting tangent about crickets and how they tune into a mate and eventually got onto the topic of how to cope with the inevitable natural decay older programmers will suffer from. The thing that has stuck with me most is the advice of converting “goal attainment” to “maintaining invariants”. This he explained by showing how a baseball fielder might try to catch a ball by moving himself so he sees a linear trajectory rather than trying to anticipate a parabolic path. This was one of the most enjoyable keynotes I’ve seen.

 

I didn’t have much choice in what I went to after Brian as it was might turn to step up to the plate. This was my third year of speaking and I’d like to say I might finally be getting the hang of it. At least, I don’t think anyone fell asleep.

 

Unbeknownst to me until I checked my Twitter feed afterwards but there was a small bug in the code on one of my slides. This made my next choice easy – The Art of Reviewing Code with Arjan van Leeuwen. There was plenty of sound advice here, particularly around the area of getting started in code reviews where it’s important to make both parties comfortable to avoid a sense of personal attack. As Ajan pointed out, time is often the perceived barrier to doing reviews, but it’s reminded me how valuable it can be.

 

That was only a short session and the other 45 minutes I spent with Ewan Milne as he discussed Agile Contracts. Although I don’t get involved (yet?) in that side of the process I still find it useful to comprehend the other parts of an agile approach. Understanding how the different forms of contract attempt to transfer the risk from one side to the other was enlightening – especially when you consider the role lawyers try to play in the process. Ewan normally has his hands full with organising the lightning talks so it was good to see him speak for longer than 30 seconds.

 

My final session for the day was to be spent with Michel Grootjans. With a title of Ruby and Rails for n00bs I felt that suited my knowledge of Ruby right down to the ground and hoped I would get to see what some of the fuss is about. It actually turned out to be way more useful than I expected because Michel developed a simple web app using a full-on TDD approach too. Not only did I get a small taste for what Ruby and Rails is about but I also saw someone develop a different sort of application using different tools in a more enterprise-y way.

 

Once more, after the main sessions had completed, most of us convened to the main hall to listen to another round of lightning talks. This time there was a total of 13 topics with an even wider range than the day before. Notably for me, given my attendance at an earlier session on Git, was a rant from Charles Bailey about Git being evil. There were also complaints about poor variable naming (Simon Sebright) and why anyone would use C++ when D exists (Russel Winder, naturally). On the more useful front we saw Dmitry Kandalov implement an Eclipse plug-in in 5 minutes and a C++ technique that seems close to C#’s async/await mechanism (Stig Sandnes). The abusive C++ award though goes to Phil Nash with his <- operator for implementing extension methods. Oh, and Anders Schau Knatten used “Science” to help us decide that C# is in fact the best programming language.

Friday

What better start to the day than a keynote from the very person we have to thank for C++ - Bjarne Stroustrup. It’s been some years since he graced the ACCU conference with his presence and so like many I was looking forward to what he had to say about the modern state of C++. His presentation was generally about the new features we now have in C++ 11 as he had a separate session planned for C++ 14. However there was as much about how the established practices (e.g. RAII) are still the dominant force and critical to its effectiveness. Naturally there were plenty of questions and he pulled no punches when airing his opinion on the relationship between C and C++.

 

With my C++ side ignited I felt it was only right that I attend Nico Josuttis’ talk about move semantics and how that plays with the exception safety guarantee of a function like push_back(). He entered the murkier depths of C++ to show how complex this issue is for those who produce C++ libraries. When someone like Nico says C++ is getting “a little scary” you know you need to pay attention. My “moment of the conference” happened here when, in response to a question for Nico about the std::pair class, Jonathon Wakely instantly rattled off the C++ standard section number to help him find the right page…

 

We all love writing fresh, new code, but many of us spend our lives wallowing in the source code left to us by others. Cleaning Code by Mike Long was a session that showed you why refactoring is important and what some of the tools and techniques you can use to help in the fight against entropy. This was a very well attended talk and rightly so with a good mix of the theoretical and practical. One tool in particular for finding duplicate code certainly looked sexy and will definitely be getting a spin.

 

After another round of coffee I decided to close the day off by listening to the C Vu editor (Steve Love) explain why C# is such as Doddle to learn and use. Yes, his tongue very firmly placed in his cheek. As someone who uses C# for a living it's easy to forget certain things that you take for granted with something like C++, such as the complexity guarantees of the core containers. Generics also came in for a bit of a bashing as a watered down version of templates. Anyone who thinks the world of C# is dragon free would have done well to attend.

 

The final set of lightning talks took their cue from the volcano fiasco a few years ago. Back then, due to speaker problems caused by a lack of air transport, a set of 15 minute lightning keynotes were put together instead and that’s the length these ones adopted. Seb Rose opened the proceedings with a response to an earlier lightning talk about whether the term “passionate” is a useful one for describing the kind of people we want to work with, given its dictionary definition. Much nodding of heads suggested he was probably right. He was followed by me trying to show how many of the old texts, such as the papers by David Parnas, are still largely relevant today. And, more importantly they’re often cheap. Tom Gilb was next up to answer a question I had posed in my talk about quantifying robustness. Let’s face it, we knew he would. Finally Didier Verna got to extend his earlier slot on The Pete Goodliffe Show to go into more detail about the similarities he sees between music and programming. I’ve never really given Jazz a second thought before, and even though we only got a 30 second burst of his own composition my interest is definitely piqued.

 

The Friday evening always plays host to The Conference Dinner, which is a sort of banquet where we get to spend a little more time mingling with the various speakers and attendees. This is a perfect opportunity to corner a speaker and ask some questions you didn’t get a chance to earlier. Jon made sure the tables regularly got mixed up to keep the flow of people moving between courses which helps you mix with people you might not normally know. After the dinner there was the Bloomberg Lounge to keep us entertained through the night, if you fancied staying up until silly o’clock.

Saturday

There was another change to the session structure this year as the Saturday keynote was moved to the end of the day; instead the normal sessions started earlier. Sadly I overdid the conference dinner again and so an early start was never really on the cards.

 

How to Program Your Way Out of a Paper Bag seemed like the ideal eventual start to the day. Frances Buontempo had sold the idea well – is it possible to actually write a program to get out of a paper bag? Obviously there was a certain amount of artistic licence, but ultimately she did it, and along the way we got to find out a whole lot about machine learning. I was a little worried there might be a bit too much maths at that time of day but it was well within even my meagre reach.

 

My final session of the conference was to be with Hubert Matthews - A History of a Cache. This was a case study of some work he been involved in. The session had a wonderful narrative as he started by explaining how the system was originally designed, and then went on to drop the bomb on how he needed to find a huge performance boost with the usual array of “impossible” constraints. Each suggested improvement brought about a small win, but not enough by itself and that’s what made it entertaining. It also goes to show what can be achieved sometimes without going through a rewrite.

Epilogue

I keep expecting the magic of this conference to wear off, but so far it seems to be holding fast. I have looked around at some of the other conferences but I’m just not as impressed by the content or the price for that matter. I thought the new venue worked well and even though it was a little further to travel it wasn’t exactly onerous. More of the talks were filmed this year and so hopefully I should be able to catch up on some of those I missed. With 5 concurrent sessions running in each time slot you’re never going to get to see everything you want to, but that’s just another reason to keep coming back year-after-year – to try and catch up on everything you’ve missed in previous years. Of course in the meantime the world has moved on and there’s another load of new stuff to see and learn!

 

Chris Oldwood

19 April 2013

 

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 or @chrisoldwood.