The ACCU conference returned in hybrid mode this year. Several writers share their experiences.
From Phil Nash
I’ve been attending ACCU conferences since 2001, and I don’t believe I have missed one since 2009 (except for 2020, when the whole event was canceled). It was the first programming conference I started attending, and also where I launched my speaking career in 2004, speaking at every one since 2009. So ACCU is a conference very close to my heart.
I was obviously disappointed that 2020 had to be canceled – it was too short notice at the time to transform it to an online event. 2021 did run online. But that means that the 2022 event was the first in-person ACCU event since 2019! Actually about half of the attendees were still online, as it was a hybrid event. I didn’t really interact with the online component, though, except for some minimal interactions on the Discord server. I heard from several people, however, that the recreation of the physical venue in Gather Town was very impressive and helped them to keep more connected to the in-person event. Kudos to Jim and Jonathan Roper, and the others at Digital Medium, for doing a great job of that while also handling the recording and streaming on the in-person side, this year. As a conference organizer myself, who has been navigating many of the same things (also in collaboration with Jim) I have an idea of just how huge a task that is – with so many possible ways to fail! Other than a handful of minor hitches, from what I saw everything went remarkably smoothly!
But what about the content? Well, personally, I didn’t get to see many of the talks. On the first day, I was focused on getting ready for my own talk, at the end of the day, and a lightning talk after that. On day two I was more focused on the Sonar booth – then had to leave before the end of the day as I was off on a family holiday the next day! So I’ll cop out and say that I’m familiar enough with many of the regular speakers and the types of content they were presenting that I’m 100% sure that 2022 continued to be an exceptionally high quality conference year – both for C++ developers and others. Traditionally two of the five tracks have been C++ specific, and the others have been about other languages and technologies, as well as less technical things, such as agile practices – but almost always accessible to a C++ audience, which is still very strongly represented at ACCU.
I did see the first 30 minutes of Guy Davidson’s opening keynote, which had been excellent up to that point – so I will definitely be finishing it in video form later. He had just gone through an extended, and entertaining, setup for why the role of mentoring is so important, and I have to say I agree with that.
Of course, I was there for my own talk. We had a slightly delayed start due to some technical difficulties. Since the last time I have presented at an in-person event I have bought a new Macbook Pro (M1 Pro). These machines caused a bit of a stir for bringing back several non-USB-C ports, including an HDMI port – so I thought I would have less trouble with connecting to a display. In fact the main display was fine – but connecting to Jim’s video capture device (or devices, he tried a couple) had a lot of issues. This year it was not just recording that was impacted – but the online attendees were relying on that stream to be able to see my slides at all! Eventually we had to give up and they pointed a camera at the projector screen and streamed that. There were some complaints that it was not quite readable in places, but I think it just about worked. For anyone that was watching that stream – sorry about that. You might want to watch one of the other versions of it I have recorded, such as the one from CPPP last December.
In the evening there was an hour of lightning talks, hosted by the shoeless Pete Goodliffe! In fact there were lightning talks every evening (except Saturday), but this was the only session I was present for, so I had requested that my submission be on that night. The ACCU lightning talks seem to have become a forum for speakers to challenge each other to do sillier, funnier or more off-beat presentations each year! This time saw Dom Davis spend most of his five minutes talking about USB connection standards – all to set up reciting an extract from Queen’s Bohemian Rhapsody, “Thunderbolt and Lightning, very very frightening, me” (and it continues). Pete, himself, did a series of programming related visual puns. The standout, for me, though, was Andy Balaam’s (pre-recorded, but otherwise) live-coding of a Snake game in Javascript, all to set up a set of puns about chasing our own tail and being consumed by ourselves. My own lightning talk wasn’t really a talk at all. The exact nature is a heavily guarded secret (so far I have only done it at conferences that don’t record their lightning talks – and I hope to do it at least once more before I make it fully public). All I’ll say is that it relates to build dependencies and ABI stability in C++ ... but barely.
On day two I went to see the sponsored session by two of my colleagues at Sonar. After all, it would have been rude not to! In fact one of the presenters was our CEO, Olivier Gaudin – a very busy man who took an unprecedented amount of time out of his schedule to join us at the conference! The other was PM for the C++ Analyzer, Geoffray Adde. I could be biased but I think they did a fantastic job of explaining what the problem is and how it affects all of us – even if we are very careful about software quality. Of course they followed up with how our tools not only help, but have a few special features that make it much easier than you might think. It was great to see a good audience in attendance – almost a packed room – which was very impressive given the in-person attendance numbers this year.
Although these were the only sessions I saw this year, conferences like the ACCU are as much about the so-called ‘hallway track’ as they are about the sessions themselves. As my first in-person event with a Sonar booth, since joining last June, the booth experience was also particularly important for me. Unfortunately, the goodies that we had planned to have on our table to give away didn’t turn up (an occasional bane of the conference booth business)! So all we had were some Swiss chocolate bars and a set of C++ puzzler questions I was able to print out while I was there. Foot traffic was also lower, as everyone fit into the main food areas at either end of the hallway we were in, rather than having to spill down the hallway during all the breaks! Nonetheless we had some great conversations – many with people already familiar with Sonar tools from other language ecosystems – and the quiz questions proved to be very ‘sticky’ with people hanging around and coming back repeatedly – determined to solve them all. In retrospect we may have made them a little too hard. By the time I left, only one of the chocolate bars (which we promised to anyone that answered all the questions correctly) had gone – and even they admitted that a few people (most or all of whom were standards committee members) had pooled together to solve the questions! Welcome to C++!
It goes without saying that it was amazing to catch up with so many people that I hadn’t seen for 3+ years (as well as meeting a few new people). I also managed to spend a whole evening in the bar discussing coroutines with Nicolai Josuttis.
Which seems like a good point to do a final_suspend
.
is the original author of the C++ test framework, Catch2, and composable command line parser, Clara. He is Developer Advocate at SonarSource, and a member of the ISO C++ standards committee, organiser of C++ London and C++ on Sea. He co-hosts and produces the cpp.chat and No Diagnostic Required podcasts.
From Dom Davis
The three hardest things in software development are:
- Explaining what I do to my mother
- Agreeing on what the hardest things are
- Writing date/time libraries
I write this on March 770th 2020 [2022-04-10 as Russel would have written it in the old fashioned Gregorian calendar] after a whole bunch of us got together for the first time in... well we’re not really sure. Time, it seems, has been extra weird in the past 750 or so days.
I am, of course, referring to ACCUConf 2022, a partial return to the ACCUConf we knew and loved in The Before. Carrying on from 2021’s online only conference, 2022 saw a hybrid conference with some people attending in person [God, I’d missed you lot], and some attending online [I still miss you].
And wow, did I learn a lot. Including such esoterica as “I can’t read the GoDocs for fmt”; spam, 419 advance fee fraud, and man in the middle attacks are hundreds, if not thousands of years old; and new ways to code my way out of a paper bag. And that was just the advertised sessions! As always, a huge amount of learning, networking and communication was going on in the ‘corridor conference’, but then if you’re reading this I’m likely preaching to the converted. If you’ve not been, then next year’s conference is 2023-04-19 to 2023-04-22. You really should come because it’s the people who make the conference.
And it’s that point I want to raise. We want all sorts at ACCUConf, both as attendees and as speakers. Fresh idea, new perspectives, bonkers personal projects, or something that you find fun or interesting. Chances are if you find it fun and interesting, lots of others will too. Honestly, some of my favourite talks are the ones that go off the beaten track because so often they surprise and delight.
Don’t get me wrong, I still enjoy the Big Name speakers ACCU continues to attract, but I also want to see the next generation of Big Names. The future luminaries in our field. So here is your challenge: Go out there among your networks and encourage new people to submit talks, even if it’s just a lightning talk – in fact especially if it’s just a lighting talk, they’re the best bit of the whole conference.
For those that are completely new to public speaking I am absolutely positive that some of us who are old hands would be happy to offer help, guidance and mentorship. I know I would. Plus we can all offer smiling faces and interested looks from the audience. We are, after all, a friendly, welcoming, and inclusive crowd with a diverse array of interests.
If you include lightning talks I did 4 talks this year. My ego absolutely loved it. You can be sure I’ll be submitting a plethora of talks for next year [cough Keynote cough], do you really want to see me speak another four times? Actually, thinking about it, forget everything I just said. We’re all good ☺.
is a veteran of The City and a casualty of The Financial Crisis. Not content with bringing the world to its knees, he then went off to help break the internet before winding up in Norfolk where he messes about doing development and devops. Dom has been writing code since his childhood sometime in the last millennium – he hopes some day to become good at it.
From Hannah Dee
ACCU was my first conference for a long time and I threw myself into the conference experience, enjoying talks on all sorts of topics. The event was a bit more dynamic in planning than many conferences because people kept pulling out with COVID (and so other people kept stepping up and offering talks to fill the gaps). This meant there were more short talks than I think had originally been planned. There were also more general talks, which suited me fine. Here are the things I’m taking away from those sessions attended:
Day 1 highlights
Guy Davidson’s keynote on growing better programmers: Lots of good insight into how to be more friendly and humane in code reviews and how to mentor junior staff.
Seb Rose on behaviour driven development (BDD) and how to write good scenarios, talked about how we break down programming tasks as part of the development process, and how we communicate ideas. He introduced a handy acronym for this. BRIEF: scenarios should be Business readable, use Real data, be Intention revealing, be Essential, be Focused (and be brief). I think this applies to all systems communication to be honest – use shared language, sensible examples, right level of detail, don’t waste each others time.
Charles Weir & Lucy Hunt ran an online session on different ways to discover technical security requirements. I was a bit late to this one as I went to the wrong online system, but the general idea was to investigate a couple of different card games for information security [Berkeley, Microsoft, Washington]. I might have to pick up some of the games and look into this for teaching.
Day 2 highlights
Jutta Eckstein looked at how the Agile principles of development can be sustainable. This was workshop where we considered of each of the agile principles with regard to the triple bottom line of sustainable development: environmental, social and economic sustainability. Some of the agile principles (e.g. “simplicity: maximising the amount of work not done”) fit really well with sustainable goals. Others not so much.
Dom Davies talked about remote vs distributed working based upon many years in distributed teams – starting with global teams in the late 90s. He suggested that the key is to deal with everyone as if they’re distributed, even if you’re sitting next to each other. This makes a lot of sense to me. The hybrid experience is a strange one.
Matthew Dodkins talked about designing systems that would run for a long time without maintenance – specifically, bat and dolphin detectors which could run for a year in a rainforest or underwater. This talk covered a lot of detail about planning, testing, and concepts like sentinel functions (things which spot when something stops happening). Always think about what happens next.
Day 3 highlights
Patricia Aas’s keynote was one of my favourite sessions of the conference. She looked at some “classic” vulnerabilities (heap manipulation, format string vulnerabilities etc.) and showed how they related to modern security issues. This is a talk I will watch again, and that I will heavily recommend to my first year infosec students.
Next up was a talk after my own heart: Andy Balaam spoke about “vim for fun”. I have been a user of vim for about 25 years now (whoops) so have a fairly good understanding of how it works, however, it’s always good to visit a session where you know. This time I picked up new movement commands: } and { to go forwards or backward to the next empty line.
Kate Gregory’s talk was another strong contender for favourite presentation. It was about abstraction, which is a pretty big topic. Increasing abstraction localises complexity, which reduces the cognitive load; quite often, you can work out abstractions from the code without actually understanding the domain much at all.
Useful rules of thumb:
- magic numbers-> named constant gives type and semantics
- groups of variables -> struct or class
Variables can be grouped by similar names (empdate
, empname
, empfirstname
… are we looking at an employee class here?) or by ‘load bearing white space’. I love the concept of load bearing white space. So often we stick extra lines in code to break stuff up visually – but not conceptually. why not make that break explicit and part of the abstraction?
It was really interesting to see a talk which looked at this from the perspective of code, rather than problem analysis – Kate described being brought in as a consultant to fix legacy systems with tens of thousands of lines, and thinking about how we can abstract from code to tidier code (rather than from a problem to code) was very interesting. One on my ‘will watch again’ list.
Day 4 highlights
Gail Ollis and Ian Reid spoke on the tension between information security professionals (and security policies) and developers – often security is seen as a bolt-on by developers, and fundamental by security professionals. This is going to be a difficult circle to square, but they’ve been doing some interesting work around interviews with both communities. A good analogy came up – infosec professionals are like goalies: their aim is a clean sheet; developers are like strikers: their aim is to score goals. Success in one case is defined by absence of failure, which is going to lead to different risk-taking behaviour.
Titus Winters delivered the final keynote of the event on how we measure the cost of tradeoffs in the software engineering workflow. How to you measure the cost of a mistake or the value of preventing a defect? The earlier you detect, the lower the cost in terms of time (developers etc.). Titus is dealing with very large systems and teams, with static analysis, IDE, code review, CI, fuzzing, canary releases etc. etc. so the ability to manage and measure this stuff is something he’s got some very interesting thoughts on. Particularly liked:
It’s programming if ‘clever’ is a compliment, it’s software engineering if ‘clever’ is a criticism.
Other intriguing things and references from the conference
- This website: https://www.vimgolf.com/
- A paper from Google about gender/age/race effects in code review: https://cacm.acm.org/magazines/2022/3/258909-the-pushback-effects-of-race-ethnicity-gender-and-age-in-code-review/fulltext
- This video from pyconline AU, available on YouTube: https://www.youtube.com/watch?v=AUTsDTVtfFE&t=2s
References
[Berkeley] ‘Adversary Personas’, available at https://daylight.berkeley.edu/adversary-personas/
[Microsoft] ‘Elevation of Privilege’, available at https://www.microsoft.com/en-gb/download/details.aspx?id=20303
[Washington] ‘Security Cards’, available at https://securitycards.cs.washington.edu/
Hannah’s contribution was originally published on her blog on 27 April 2022 and is available from: https://www.hannahdee.eu/blog/?p=1820
is a lecturer in computing at Aberystwyth University. She is interested in computer vision, robotics, information security and data science. You can contact her via her blog atFrom Timur Doumler
From April 6-9, 2022, I attended ACCU 2022, the 25th edition of the ACCU conference, in Bristol, UK. It was only my third in-person conference post-COVID (after CppCon’21 and ADC’21). It felt very special to be back in Bristol after a three-year break, and it felt as good as ever to be among real people again. With all COVID restrictions now lifted in the UK, this was the first event on the C++ conference circuit that truly felt like it was back to normal. There was no social distancing or any other measures to impact the conference experience, and the vast majority of attendees were not wearing masks.
For me, ACCU has a special place in the C++ calendar for many reasons. First, ACCU is known for its exceptionally friendly and nice community, including folks who have been attending ACCU regularly for a decade or more, but also being especially welcoming and approachable to first-timers. This year was no different – it was great to be back meeting old friends and making new ones.
ACCU is also special in that it is not only about C++ (although it has a large proportion of C++ content), so you also get content on other technologies and non-technical talks about soft skills and other interesting things. The quality of the talks is very high and the size is just right: bigger than ‘small’ conferences like C++Now, but not as big as CppCon or MeetingC++, so you still get the chance to meet and talk to most attendees.
In pre-pandemic times, I would usually expect about 400 people at ACCU. This year, however, we only had about 150 people on site, so it was noticeably quieter than usual (although the vibe was as positive as ever). In addition, there were about as many people attending online, as the conference was fully hybrid this time, with three on-site and two online tracks and the option for online attendees to watch the on-site talks and ask questions.
The organizers went to great lengths to make the online component of the conference really enjoyable, including recreating the whole conference venue (Bristol Marriott) online inside gather.town. But I have to admit that I did not engage with the online component. Why spend time in video chat rooms when you are on site at the venue and have real people to interact with? Therefore, the following trip report is focusing exclusively on the on-site component of the conference.
Not only were there fewer people on-site, but also fewer booths. I spotted the traditionally present Bloomberg booth, as well as Graphcore and SonarSource booths. And we had a #include table again, which was a very popular hangout spot. Sadly, JetBrains did not have a booth this time, as the rest of my team was unfortunately unable to attend. In fact, out of all of the ACCU conferences I’ve attended, this was the first one with no JetBrains booth! One of my most memorable conference experiences was walking up to the JetBrains booth at ACCU 2017 and asking them whether they would consider hiring me, and the following year I was working behind the very same booth. I very much hope we will be back there in full strength next year, but this time I was representing JetBrains on my own.
Conference day 1 started with Guy Davidson’s keynote ‘Growing Better Programmers’. Guy is a good friend of mine and this was his first proper conference keynote. I have to say he did an amazing job! Speaking from many years of experience, Guy shared many great thoughts about mentoring and supporting programmers, promoting good practices, conducting helpful code reviews, being a good manager, and much more.
I missed the talks following the keynote because I was busy practising my own talk, how to implement a lock-free atomic shared_ptr
, which I presented that afternoon. Following that, I was met with the usual dilemma at such conferences: there are multiple tracks and you can only go to one. The program is so high-quality that you end up missing a lot of fantastic talks you really want to see. My talk of choice was ‘Zen and the Art of Code Lifecycle Maintenance’, a very deep and insightful investigation of what we actually mean by ‘code quality’. The talk was given by Phil Nash, my predecessor as C++ Developer Advocate at JetBrains, who now works at SonarSource.
My first day at ACCU 2022 wrapped up with a lightning talk session moderated by Pete Goodliffe. This is the true highlight of the ACCU conference: the lightning talks are usually very entertaining, creative, funny, thoughtful, and mostly not about programming at all. In between the talks, Pete tells dad jokes, and if any speaker overshoots their 5 minute speaking limit, Pete takes away the microphone mid-sentence and pushes them off the stage. It’s hilarious!
Day 2 opened with a keynote by Hannah Dee, `Diversity Is Too Important to Be Left to Women`. I was really impressed by this talk. It covered why diversity and inclusion are important, what we should do, and what we should not do, and covered it all in a way that felt extremely well-researched and backed up by data and facts. Even though this issue was already very close to my heart before Hannah’s talk, I learned about so many new things from her, like the concepts of gender role spillover and stereotype threat, how self-efficacy affects performance, the Petrie multiplier (a very simple yet powerful mathematical model), pareidolia, and more. I highly recommend this talk as a solid, approachable, and enjoyable introduction to anyone interested in the topic of diversity in tech.
Switching gears after the keynote and diving into C++ code again, I went to ‘C++20 – My Favourite Code Examples’ by Nico Josuttis. This talk was full of interesting C++20 code. Nico started by showing various ways to use C++20 concepts and constraints in practice. Among other things, I learned that we can use a requires
-clause inside an if constexpr
, like this:
void add(auto& coll, const auto& val) { if constexpr (requires { coll.push_back(val); }) coll.push_back(val); else coll.insert(val); }
This is a very convenient way to branch on the existence of a member function, something that was a lot more cumbersome pre-C++20. Nico then showed practical examples of how to use ranges, views, the spaceship operator, and other C++20 features all working together. Along the way, I also learned how to implement your own range sentinel! Of course, it would not be a Nico Josuttis talk without a healthy dose of ranting about things that the C++ standard committee has gotten wrong in Nico’s opinion: how cbegin is utterly broken, how ‘forwarding reference’ is a bad name, how std::views::elements<0>
does not work for user-defined types unless you declare your own tuple customization points before you #include <ranges>
(which is quite unfortunate indeed), and so on.
ACCU is one of the conferences that offer talk slots to sponsors, but often these can be very interesting, so I went to a sponsored session during the lunch break: ‘The Power of Clean Code’ by the SonarSource folks. I was very happy to see CLion in action there, supplemented by their SonarLint plug-in, which looks like a very powerful tool that I definitely need to check out in more detail.
After lunch, another ACCU speciality was waiting. The normal talk length is 90 minutes, but they also have 20-minute ‘quick talks’, usually several of them back to back. The ones I chose were very interesting and relevant explorations of ‘soft’ topics: a talk by Björn Fahller about burnout, a talk by Dom Davis about remote working, and a talk by Joe Pascoe about how to be a good manager.
The second day finished with another round of lightning talks, followed by the C++ Pub Quiz hosted by conference chair Felix Petriconi.
Day 3 started with a keynote by Patricia Aas about software vulnerabilities, and this was another absolute highlight of the conference. Patricia took us on a fascinating time travel journey through the last two decades. Her slides were packed with interesting code examples demonstrating vulnerabilities arising from malloc, use after free, heap buffer overflow, integer operations, and printf format strings. Among other things, I learned what a ‘Write-What-Where primitive’ is and that format strings are an almost Turing-complete programming language! Patricia’s talk ended with the thought that we would all benefit from more cross-pollination between the systems programming community, which C++ is part of, and the binary exploitation/vulnerability community.
The next talk slot had no fewer than three coroutines-related talks scheduled against each other. I decided to listen to Björn Fahller’s talk about using coroutines for asynchronous I/O on Linux and how they really help to avoid callback hell. In C++20, we got a basic low-level API with hooks into the compiler that enable the use of coroutines, but no library facilities whatsoever on top of that to actually use them. So even for the most basic coroutine example, we need to write a lot of boilerplate code by hand – the coroutine type, the promise type, and so on. This is very hard to learn and to teach, but Björn did a good job guiding the audience through the required machinery. His talk also contained references to other helpful introductory talks about C++20 coroutines, such as Pavel Novikov’s ‘Understanding Coroutines by Example’.
The other highlights of Day 3 for me were Kate Gregory’s ‘Abstraction patterns’ and another talk about coroutines, this time by Andreas Weis, showing how to use them for data processing pipelines (reading a file from the disk, compressing it, and so on). With my background in audio software development, I was fascinated by how Andreas’ data pipelines were structurally virtually identical to audio processing graphs, containing sources, sinks, filters, and buffers, with data channels exchanged in between them. This makes me think (again!) that coroutines would probably be very useful in that domain, too.
In the evening, there was a third lightning talk session hosted by Pete (they were so popular this year that Pete ran out of lightning talk slots!), which was just as much fun as the others, and finally the traditional conference dinner, which I always enjoy. The ACCU conference dinner is geared towards enabling as many conference attendees as possible to mingle with speakers. Speakers remain at the same table throughout the dinner, while everyone else changes tables after every course. This is good fun and you get to meet lots of new people. In addition, there is always a theme – this year it was film.
And now we’re at the last day of ACCU! I started the morning by attending Mathieu Ropert’s ‘Basics of profiling’. Mathieu delivered a really good beginner-friendly introduction to profiling, why it’s important, things you need to know such as sampling profiling vs. instrumentation profiling, and more. He then actually live-demoed profiling his video game Hearts of Iron IV with the Optick Profiler, a instrumentation profiler, and Intel VTune, a very powerful sampling profiler. He explained what to look for and how to interpret what you see, and finished off his talk with useful general tips on how to optimize a C++ program. This hands-on approach including live demoing is rarely seen in conference talks, and I really enjoyed it.
Later that day I attended John McFarlane’s talk ‘Contractual Disappointment in C++’, which I also highly recommend. The title would suggest that the talk was about contracts in standard C++ and how we ended up not having them, but actually it was not about that at all. Instead, John talked about contracts as a programming concept, the difference between bugs and errors, different types of contracts, and other things that every programmer should think about.
Finally, it was time for the last talk of the conference: Titus Winters’ closing keynote! Titus, the author of Software engineering at Google, aka the Flamingo Book, decided to fully embrace his new brand and showed up on stage in a flamingo shirt. His keynote titled ‘Tradeoffs in the Software Workflow’ was just as high-quality and thought-provoking as I had hoped and tackled really big questions for our industry such as ‘What is the value of the code that you write?’ and ‘What is the value of preventing a defect?’ This is another talk that I highly recommend. In fact, all the talks I saw this year were so good that I am very impressed once again by the quality of the ACCU conference program.
Of course, in between all the talks, there was the all-important hallway track. Even though there was no JetBrains booth this time, I was still very busy talking to people about JetBrains products in general and CLion in particular. Some noteworthy interactions involved helping a CLion user figure out how to build the LLVM project in CLion (which gave me some good ideas for putting together a ‘CMake in CLion’ tutorial) and multiple folks asking about the new ‘thin client’ remote development mode in CLion (which is currently still in Beta, but nevertheless already very usable, so I recommend you check it out now!).
And that was it from ACCU 2022! I am really looking forward to next year’s conference, but in the meantime, I will be attending other in-person C++ events, with the next one on the calendar being C++Now in beautiful Aspen, Colorado. See you there!
The contribution from Timur was originally published on the JetBrains CLion blog on 21 April 2022, and can be accessed here: https://blog.jetbrains.com/clion/2022/04/accu-2022-trip-report/
is C++ Developer Advocate at JetBrains and an active member of the ISO C++ standard committee. As a developer, he worked for many years in the audio and music technology industry and co-founded the music tech startup, Cradle. Timur is passionate about building inclusive communities, clean code, good tools, low latency, and the evolution of the C++ language.