ACCU Conference 2014

 

Another 12 months has flown by and I find myself heading down to Bristol for the ACCU annual conference. This will be my 7th year in attendance and 4th time speaking – I think I’m beginning to get the hang of this now.

 

Last year saw the move to the new venue in Bristol; this year it’s more likely to be business as usual as we’ll all know where the various rooms, bar and toilets are. Any teething troubles (not that I personally noticed any) will likely be ironed out and hopefully we can now just relax and enjoy the show.

 

Here’s how it went for me…

Tuesday

Despite not going to any of the tutorials I was still treated to an unexpected talk by Uncle Bob as the hotel was also playing host to the Batch & Bristol Scrum Group. So, whilst not technically an ACCU event it was nonetheless a good start to my conference program. He gave a short session about the past and possible future of Agile, with a particular emphasis on Kent Beck’s original notion of healing the divide between developers and The Business. This was a great reminder of why we do the practices we do.

Wednesday

The opening keynote came from Bill Liao who helped a school kid set up a not-for-profit coding dojo in Ireland to help teach kids programming. Naturally it’s grown and has gone multi-national but the key point seems to be that it’s run by, and for kids which is a great achievement. The boy/girl ratio is almost equal in some cases and their mantra of “Be Cool” has helped maintain a positive attitude. It was certainly an inspirational start to the week’s proceedings.

 

Clearly Didier Verna’s persistence has paid off because I chose Uncle Bob for my first session which was about how Clojure is the new C. The first half of his talk was pretty much a cut-down version of his Requiem for C keynote from a few years’ back where he laments how far most of us are now abstracted from the hardware. Given this, his argument was that LISP, perhaps in the form of Clojure, provides a modern “high-level assembly language”. While I agreed with many of his points I think I’ll still find writing expressions in infix notion more convenient.

 

The lunchtime break was followed by Charles Bailey’s talk on Git archaeology. Now that I’ve used Git for 9 months I felt prepared to tackle some of the more hardcore Git tools. After a brief recap of the Git object model he provided a number of examples to show how you can slice-and-dice the log to unearth useful details about the changes in your commit history. Making sense of merge commits is definitely essential and he provided some good advice there too after showing us some real-life octopus merges.

 

My final session for the day was spent with Roger Orr who was attempting show what Order Notation is, and more importantly, how it can be used in practice. With the mathematical definitions out of the way Roger, in his own inimitable way, took the seemingly obvious case of strlen() and showed how in extreme cases it can stop being O(N) and be much worse (think page faults). He then showed a more traditional use when tackling the many different ways you can create a sorted container of integers by using both sorted and non-sorted containers.

 

The 15-minute lightning talks were back again this year to provide a backdrop to the shorter 5-minute versions that run on Thursday and Friday. For the third time this week I got to see Uncle Bob, this time giving his views on what our Professional Disciplines should be if regulation were ever to rear its ugly head. Next up Nico Josuttis gave an impassioned plea to consider what is happening to our privacy and what we, as programmers, can do to help provide the tools to enable more secure communication.

 

I followed Nico with a (possibly deluded) attempt to cast code snippets in a slightly humorous modern-art style. Steve Freeman then continued the more classical lightning talk tone by explaining why the Given/When/Then style of tests can be unnecessarily verbose as we try to tackle the contorted language that often comes from writing this style of test. Finally Pete Goodliffe concluded the day with a short and amusing poem about code.

Thursday

Four years ago Dan North failed to make his conference keynote due to volcano problems. Luckily this year it went without a hitch as he tried to explain why Agile doesn’t scale. This was an interesting and entertaining talk as he explained how the same principles we apply at team-scale just don’t work when applied at the organisation level. Whilst I know first-hand of the effects of “Enterprise Scale” development it was good to understand more about what (supposedly) drives the middle and higher tiers of management.

 

I chose Wojciech Seliga’s talk to take me up to lunch which was about the problems faced dealing with the high volume of automated tests that covers a variety of different build configurations and platforms for their JIRA product. This was a really good talk as it covered both the quality of the tests themselves, the attitudes of the developers working on them and the performance of the build pipeline. There was lots of good stuff to take away and think about.

 

After a spot of lunch I decided to go with two shorter talks. The first was Continuous Delivery with Legacy Code by Dan Swain & Leon Hewitt which was about the architectural refactoring work they had needed to do to support use of a secure 3rd party payment service. Whilst the narrative was very interesting due to the constraints imposed by the secure service, I felt the use of “Continuous Delivery” in the title was somewhat misleading.

 

This talk was immediately followed by Sven Rosvall who showed how modern mocking tools can be used directly on concrete types and static methods as an alternative to introducing interfaces or proxies into your design. The tools do some low-level jiggery-pokery to the underlying virtual machine to work around the normal mocking limitations and he showed a couple of examples in both .Net and Java. Whilst it’s good to have tools like this I wasn’t the only one left wondering whether they would be used as an excuse to avoid refactoring or coming up with a better design.

 

My final session that day was to be with James Grenning. Even though I haven’t written any C in 15-odd years I have worked on some OO-style C codebases and I was intrigued to see how he was going to apply the classic SOLID principles to a non-natively OO language. It all worked surprisingly well given the lack of built-in polymorphism and the Single Responsibility Principle always pays dividends. It’s amazing how much unnecessary gunk we can encapsulate and avoid leaking in our header files. We then watched him write some C code TDD-style that made me wish I’d known that 20 years ago!

 

The first set of twelve 5-minute lightning talks got underway after a break with Francis Glassborow describing how important it is that programmers learn multiple languages of both the computer and natural kinds. The others included Charles Bailey pointed out Git’s use of the colour red instead of green to denote deleted code, Thaddaeus Frogley did a primer on the graphics pipeline, Dirk Haun with neat wearable camera, Andy Balaam wowed us with programs that generate themselves and Dmytro Mindra convinced us it’s good for geeks to get up and talk.

Friday

Didier Verna provided us with the Friday keynote titled “Biological Realms in Computer Science”. This was an engaging talk that delved into the similarities between Biology and Computer Science. The analogies between cells and computers were fascinating and he had many excellent quotes to draw upon to supplement his apparent fondness for the T-800 Terminator.

 

Whilst the vast majority of talks are obviously relevant to our day-to-day jobs as programmers there is still room for some more leftfield sessions that address our other needs as a human being. Phil Nash’s talk looked into the idea of healthy body/healthy mind to remind us that our effectiveness as a programmer depends heavily on the way we look after ourselves, or not. Instead of just looking superficially at our diet he delved right down into the chemistry to tell us in more detail about what it is we’re eating. The background for this was his own impressive personal journey to look after himself better and in turn improve his cognitive abilities.

 

Two years ago at the ACCU conference I purchased a copy Overload Issue 8 (amongst others) and it contained an article by one Kevlin Henney about immutability. That article provided the starting point for an excellent talk about how we can use immutability more effectively, especially when concurrency is involved. Jon Skeet predicated the Java Date class would feature at some point and he wasn’t disappointed. He even did a good job of trying to convince us that editing his slides to fix a coding error wasn’t a state change.

 

The late afternoon slot was the easiest choice to make of the whole event as it was time for my own talk. I knew I’d picked a contentious topic – version control practices – but luckily the flame-war was reserved for the bar afterwards.

 

Another short break and the second set of lightning talks were underway. Due to the hotel getting the main room ready for the dinner, we all squeezed into one of the smaller rooms and sadly many couldn’t fit in! Once again there were twelve talks with Ed Sykes kicking off the set by explaining about the Quantified Dev project he’s working on. Some of the other talks included Emyr Williams answering Pete Goodliffe’s call to become a better programmer, Alisdair Meredith showing us what’s coming up in C++ 14, Frank Birbacher describing colour spaces, a poem from Charles Tolman and a somewhat harrowing account of what happened in Ukraine from Dmytro Mindra.

 

At the beginning I said the big change happened last year, but there was another significant change this year - the conference dinner. For a start the menu was less traditional; which was not surprising given the Bollywood Banquet theme. The tables surrounded a dance floor and we were treated to some wonderful Bollywood music and dancing between courses. We also got to join in and strut our stuff, plus there was a “dance off” between the US and UK, although I’m not sure exactly what prize victory brought.

 

Of course some things never change and we soon retired to the bar until far too late to chew over the week’s events and life in general.

Saturday

I’m sure one day I’ll grow up and go to bed at a responsible time during the conference. Until that day comes I’m probably going to keep missing the opening sessions on the Saturday morning (hint, hint, start them later) and with me leaving early I only got to see one talk. It was also the only C++ talk I attended – Anthony Williams on the future of C++ concurrency. This was a detailed look into some of the proposals that might feature in the next standard (at the moment some are already documented in a TS). Anthony took us through continuations, executors and schedulers to show how we might compose, control and manage our task workload. Naturally std:async and std::future got to feature heavily, not least because of the contentious nature of their lifetimes.

On Reflection

I’ve been out of the professional C++ programming world for a few years so that makes it marginally easier to choose my sessions because I don’t feel duty bound to go to them all. Anything that can help narrow the selection process is a must if a decision is ever to be made at all. Dithering too long can be the difference between fitting in the room and having to start the selection process all over again!

 

As I sat on the train on the way back home I remembered how annoyed I was at having to put Breaking Bad season 4 to one side whilst I came to the conference. Clearly the 4 days were pretty intense because I never once thought about what else I might be doing instead (spending time with the wife and kids notwithstanding). It just goes to show that 7 years on it still hasn’t lost its magic.

 

Chris Oldwood

15 April 2014

 

Bio

Chris is a freelance developer who started out as a bedroom coder in the 80’s writing assembler on 8-bit micros; these days it’s C++ and C#. He also commentates on the Godmanchester duck race and can be contacted via gort@cix.co.uk or @chrisoldwood.