ACCU 2019 trip report

This year I was ready. I had prepared a stock of jokes about Britain, its food, its weather, the absence of good wine and the tumultuous relationship with the EU. It was time for ACCU 2019.

This year’s edition of ACCU was held from April 10th to April 13th, in Bristol as always. I arrived a day earlier from Paris after a short stop in France which was supposed to offer some supply of good weather and trips to a few winemakers in preparation for the harsh conditions of Great Britain.

From the start things went awry as I could only spare half an hour for a visit to a winemaker in Vouvray who turned out to be quite forgettable, not to mention the weather that was only barely keeping it up together. Still I didn’t immediately notice that something was off, having spent the pasts months enduring the cold winter of Sweden. It took a second flight from Paris to Bristol to realize it: spring is there (although a couple of Bristol locals apologized for the weather being unexpectedly non-terrible).

Many meetings

My arrival was pretty unremarkable. It was, of course, raining and people still drove on the wrong side of the road. I had come across my former colleague Jonathan Boccara (of Fluent C++ fame) while waiting at my gate. We traded some war stories and he told me about his book he would be showing at the conference. I didn’t have the time to read it yet but I already heard some positive feedback about it.

ACCU is, like most conferences, a good time for me to spend some time face to face with friends from the C++ community living around the world. It is sometimes said that there is more value in the discussions with the people you meet at conferences that with the conference content and I would partly agree. Depending on the circumstances, I do feel like the bulk of the value falls slightly one side or the other. At times there’s a presentation that justifies the whole ticket in itself, sometimes I meet someone and have a discussion that is as valuable to me as the sum of all the talks I attend to.

The other reason I often see so many familiar faces is that, in my opinion, people don’t try to attend conferences nearly enough. After asking around a bit it does seem like I’m not the only one to have noticed that. Regardless of the company, there will be a small minority that ask their manager to be sent there, and large majority who will never do so. I am not sure how to explain it. Not feeling like it’s worth the time? Thinking it’s only for some “elite”? Maybe simply too focused on the day-to-day job, on the next deadline?

I don’t claim to have the answer, but I will certainly encourage anyone who never asks to go to do so, and those who do to encourage their colleagues to do the same. We are always happy to see new faces, meet new people and buy them a drink at the conference bar at the end of the day.

Keynotes

As I mentioned in my last year trip report, I was a bit disappointed by 2018’s opening keynote. This time was quite the opposite. ACCU 2019 opened with M. Angela Sasse telling us about security. The key takeaway was that the human, the user, will always be the weak link regardless of the technology deployed. More importantly, the fact that security is everyone’s business and not just the IT department means it must offer a good UX else it will be badly used or worked around. This was pointed out in the 90s and it still hold true today, with sadly little progress to show for it.

The great Herb Sutter travelled from his Redmond office to England to tell us about his vision for the future of error handling in C++. While I already knew about his work on the matter (it was sent to SG14 for review a couple months back), it was nice to have a refresher in front of the all conference. In short, the direction is toward better exceptions, with bounded, predictable throw and catch times. No more need for dynamic allocation. No extra cost when no exception occur (this is already mostly the case on x86_64) and a push for noexcept becoming the default unless otherwise specified.

The closing keynote was given to none other that Kate Gregory who walked us through a nice lecture on code empathy , or how to read the previous programmer’s emotions through existing code, try to understand what triggered those emotions and how to react when confronted to it. I have a hunch that it will be a nice combination to Jonathan’s book on how to deal with legacy code, as the two seem closely related.

Talks

At the rate of 3 talks a day outside keynotes, there was a total of 12 I could potentially attend during the conference. Subtract one because I had to attend mine and perhaps another one where I was busy writing slides and we get a rough estimate of about 10. While that number could make for a nice clickbait section (“10 ACCU talks you won’t believe I attended”), I will stick to my boring routine of mentioning the ones I remember the most. Also keep in mind that there were 5 tracks, meaning I saw roughly 17% of the conference content.

The two talks that made the biggest impression on me were Vittorio Romeo’s Higher-order functions and function_ref and Andreas Weiss’ Taming Dynamic Memory - An Introduction to Custom Allocators. The first one did a good job of explaining what higher-order functions are and also the content and benefits of the function_ref proposed addition to the C++ standard , all in one session. The second one offered a good tour of custom allocators, how they work and when they can be considered to replace the standard ones. Both presenters also had to accomplish their tasks while fending off the many questions coming from John Lakos who sat on the first row each time (a victory he congratulated them for at the end).

The next two talks I can think about were Peter Bindel’s and Simon Brand’s Hello world from scratch, and Andy Balaam and CB Bailey’s How does git actually work?. Both explained things we do every day by taking very simple use case (building a very simple program and committing some changes to a VCS) and showing what happens under the hood. They also both ran out of time before showing all they had planned because it turns out abstraction is no myth: even our simplest tasks are actually fairly complex when you look at how they are done. I think they both did a good job at it and would gladly schedule both in a “how does XXX works” track. That is a good theme that I would suggest having at every conference.

Next up is Kevlin Henney’s What do you mean. Kevlin is quite the celebrity in Bristol and I really liked his talk at the previous edition. While perhaps not as remarkable (I would have appreciated a clearer outline to follow), this one was still quite interesting. The main point was that meaning is derived from both what is said or written and the context that surrounds it. The latter being subjective, it implies a bunch of assumptions by both parties that, when not in line, lead to quite the misunderstanding. The main obstacle to solving that problem is that assumptions are, by definition, implicit and so can only be discovered when proved wrong (“Oh but I assumed that…”). This of course brings us back to the software craftmanship practices of frequent iterative deliveries and testing.

Finally I’d like to mention Christopher Di Bella’s How to Teach C++ and Influence a Generation. Last year, Christopher started SG20, a study group in the standard committee focused on education. Education and teaching is an important subject to me, partly because of my own personal experience of learning C++ in school, then learning another language also called C++ around 5-10 years later. As you may guess, the first one was more in the line of “C with classes” while the second looked more like the C++ we know and recommend today. To that end the group has worked on some guidelines on how to write teaching materials. They also run polls to better understand how and when people learn C++. A good complement to this talk would be Bjarne’s keynote at CppCon 2017 Learning and Teaching Modern C++.

Lightning talks

One of the best things at ACCU is how the lightning talks sessions are organized. They are simply done in the keynote room as the closing session of each day. That way, most of the conference attends before going out for beers or dinner. Program is usually decided between the day before and a couple hours before the session, meaning last minute entries are definitely an option.

It’s a great opportunity to bring up a point you had in mind but couldn’t get in as a talk, respond to a previous talk (or lightning talk) or simply raise awareness in the community on a particular matter. For example, upon arriving in Bristol on Tuesday I learnt that the great people from the Paris meetup were planning to announce a new conference. I put a few slides together, slipped in a joke or two about english food and Brexit, then went up on stage on Wednesday to tell everyone about CPPP.

Of all the C++ conferences I went to, I think this formula works best and is one of the reasons ACCU feels like a big family gathering. If you are a conference organizer and have some lightning talk sessions, I strongly suggest you consider this option. It might feel intimidating to step up on stage in front the entire conference, but then again I feel the familial atmosphere helps reducing the pressure.

Until next time

On Friday I gave my talk, The State of Package Management in C++. Frequent readers of this blog will probably be familiar with the topic. I gave a tour of package management in C++, why we want it and how far we’ve come yet (spoiler warning: enough for you to try it). As you can see the ACCU has made a fantastic job of uploading the recording on YouTube in less than a week.

But the greatest learning of all for me came after the conference, when I discovered that airlines will now charge you 50£ when boarding your plane for bringing a laptop bag with your carry-on luggage. I used to do that all the time, but today it appears you can be charged extra depending on the mood. I suppose next time I will have to put my stuff in cargo :(

Do not let that stop you from attending conferences though, I still hope to see you there!