ACCU 2018 trip report

I was in Bristol last week for the 2018 edition of ACCU. Now is the time for me to give my feedback about the talks, share what I learnt and complain about English food.

I must start by confessing to some ignorance: I didn’t know about ACCU, what they did or how long they’ve been around until last year when somebody asked me if I planned to submit a paper there.

It’s great to see that the British had an association with quality conferences and publications for so long. In comparison France only has (to my knowledge) a couple of for-profit magazines on programming that never struck me as worth mentioning. As for conferences, of course we have the great Paris User Group but we fall short in terms of native languages conferences.

Keynotes

To me, keynotes should be the highlight of a conference. I usually have big expectations from them. They should challenge my views, open new horizons and leave me inspired as if I just got out of Plato’s cavern.

A confusing start

In that respect, I have to admit that ACCU 2018 and I started on the wrong foot. The opening keynote was about diversity and inclusivity, a certainly present (and kind of polarizing) topic. It was 25 minutes long (out of a potential full hour), in which the presenter, Gen Ashley, simply explained her biography and then went on to show pictures and video ads of her various groups.

I’m sure she meant well, and I believe ACCU wanted to send a message by having their opening keynote on that topic, but to me it just fell flat. There was just no content here to challenge my views or give me something to ponder. A 5 minutes lightning talk on the next day about a sociology paper gave much more food for thought, an observation shared by most people I talked about to.

Getting better, with sponsors

The second keynote, a presentation of the Kotlin language by Hadi Hariri was certainly better, but still not quite there. There were certainly some insights to draw from a study of another language, but instead of focusing example, the talk went on a bit too long on live coding and by the end it felt like a product ad. And like Patrice Roy on that matter, I don’t like keynotes that look like they’re trying to sell me something.

I understand that JetBrains (the makers of Kotlin) was a sponsor to the conference and sometimes a paid-for talk is a necessary evil, but in this case another label could have been better. Someone actually told me “it was not a keynote, it was a mandatory talk to which people may not have gone otherwise” and I think that’s an accurate description. Mandatory talks are not necessarily a bad thing, they are a great occasion to push people outside their confort zone and show them sometimes they wouldn’t have seen otherwise. I for one would probably not have chosen a talk on a language that used to run on the JVM if I had the choice and I would have missed some interesting insights.

Be careful what you wish for

With Lisa Lippincott’s keynote The Shape of a Program I got what I asked for, and then some. The content was certainly new and challenging, to the point that I’m still not entirely sure what I saw.

From my meager understanding, it seemed to be drawing a parallel between code sequences and topologies. The notion was certainly interesting, as it opens new ways to visualize your programs and how they behave. I especially liked the idea that a function post-conditions are usually another one’s pre-conditions.

Someone suggested me to watch her other talks (this was the first for me) because it helps getting a better sense of the topic. I’ll definitely check them out.

The finale

It’s no secret that the closing keynote is usually the one that makes the biggest impression, simply because it’s usually the last presentation you see before jumping into your car/taxi/train/plane ride home. And on that matter, Seb Rose’s Software development - learning to walk again certainly didn’t disappoint.

His talk told the tale of his last big hiking project (in France no less :D) and how each step and unforseen setback could be compared to a software development project and how you usually use Agile to get through.

One may argue that there weren’t that many new ideas in there (something I held against some other keynotes), but in this case it worked for me. First, it is quite possible that not everybody in the room was that familiar with Agile, and second even I was convinced of the principle, sometimes it’s encouraging to get some echo of your personal experience.

I would certainly recommend this video to students, young graduates or simply people wanting to get a feel of what Agile is and why we do it. The story of Seb’s trip clearly shown how things can and will go wrong, forcing you to adjust your plans.

Talks

There were five tracks at ACCU besides the keynotes, with most of the time a lot to choose from. I’ll try to mention the ones I saw and that made an impression.

  • Designing multithreaded code for scalability by Anthony Williams was not about what I expected (I went in thinking it would be about patterns to avoid synchronization), but it was quite good nonetheless. Sometimes you do need to synchronize is this talk is about what you should and should not use to scale with 10, 100 or 1000 threads.

  • Nothing is better than copy or move from Roger Orr told the entire history of how structures have been exchanged between functions since the early days of C. Copies, moves, pointers (and references) all had a reason to exist. One key takeaway for me was that moving is not always cheap and sometimes costs as much as copying (think std::array for example).

  • C++ Templates Revised by Nicolai Josuttis was a nice refresher on how templates and metaprogramming have evolved over the last few years, especially with the release of C++17 and the various features it brings to the table. A good talk to keep in touch with today’s patterns.

  • C++ Modules and Large-Scale Development by John Lakos could probably have been called Everything John Lakos hates about the current Modules TS. Joking aside, it was an interesting combination of the various patterns in large C++ codebases that he has been championing since his 1996 book combined with the current state of the Modules TS, how they interesect, and how they don’t. I left thinking that the matter is probably in good hands, but may take a while to get there.

  • Kevlin Henney’s Procedural Programming: It’s Back? It Never Went Away was to me the highlight of the conference. This was everything I’d want from a good keynote, except it wasn’t advertised as such. In the talk Kevlin demonstrated that a lot of practices and trend that have been sold as “new” over the past years were actually theorized in the 60s or early 70s. You could draw a comparison with the re-discovery of the works from Ancient Greece and Rome during the Renaissance, except that so far it feels more like we are not so much re-discovering as more about re-inventing without any knowledge to the history of computer science. It left me wondering how much I was missing by never reading those old books (oldest one I ever read was the K&R 2nd edition).

  • C++ Today: The Beast is Back by Jon Kalb was a good recap of the history of C++ and the challenges it faced. While educative, it felt like a missed opportunity to discuss the present and future of C++. I brought the topic during the Q&A and interstingly Jon answered that to him the biggest challenge C++ would face in the next years is the lack of teaching in universities that leads to some ignorance or dismissal of the language from the new graduates. I hadn’t thought about this so far and I think that topic would be very welcomed as a talk or panel in future conferences.

  • Grill the C++ Committee was the usual panel Jon offers when he can and featured a dozen members of the committee. My key takaway came from a remark by Alisdair Meredith that going to committee meetings is the way to learn from the best, a feeling that most panelists shared. I’m gonna need to find a way to get there…

  • In Creating an Incremental Architecture for your System, Giovanni Asproni offered us a break from C++ centric talks and discussed a more general topic. He defended the idea that software architecture cannot be planned in advance, or at least that no plan should be expected to stay unchanged during development. This reflected again a lot of the Agile insights and validated some conclusions I had made in the past on that matter. As with Seb Rose’s keynote, I found it interesting that other people with other experiences had came to the same conclusions I had.

  • The mighty challenge of modelling geopolitical behaviour in Total War: how AI can deliver entertainment by Guy Davidson and Duygu Cakmak was for me a nice overview of how game AIs work. I remember seeing some of those in school (and more recently, coding games), but there were also some algorithms I only saw in finance so far, such as Monte-Carlo. It was overall a quite intesting talk since my next job will involve games with some common themes with the Total War series.

  • How to be polite to unicorns from Odin Holmes felt a bit similar to the Tacit Metaprogramming he gave at C++ FRUG last March. In any case it was welcomed do-over since I find the concepts presented both revolutionary and hard to grasp at first (and maybe second too). His way of doing metaprogramming feel like a very elegant (and apparently much faster to compile) alternative to the way I’ve done it since I read Alexandrescu’s book. In the future the C++ standard will probably go another direction (full constexpr) but until we get there, I recommend you take a look at his work if you’re into metaprogramming.

  • There were also three very funny (also sometimes insightful) lightning talks session animated by Pete Goodliffe. I would be very tedious to list them all but suffice to say that they ended each day perfectly and I would encourage my readers to watch them (if they were recorded, I’m not certain).

People

It’s been repeated time and time again that the real value of going conferences is the people you meet. I would prefer to say that it is both an opportunity to catch-up on the state of the art, and also a great way to meet your peers.

That guy with which you speak a lot on Twitter? He’ll probably be there. The speaker with a very good talk you watched on Youtube? He’ll be there too. The person you didn’t know about but who had a very insightful experience to share? Also there. A potential new job offer? Definitely there.

On that matter, I’ll have to be a bit harsh on my compatriots: there were simply not enough French attendants. I’ve met a lot of Germans and English at European conferences, but only a handful frenchmen. This may or may not be due to the fact that we are on average kinda terrible with foreign languages, but it’s certainly a contrast with how fast the Paris C++ User Group fills up when we announce the next meetup.

In conclusion, I am encouraging my readers once more to visit those conferences. Ask your employer to send you, propose a talk or just find one close to you to save on cost. And if none happens in your country, maybe there’s something to be done too? I’m especially looking at you, Paris.