ACCU Conf 2018 Trip Report

A couple of weeks ago we traveled to Bristol for the annual ACCU Conference with our booth and 4 talks from our team (including a keynotes plenary!) in the main program. In this blog post I (Anastasia Kazakova, PMM for C++ Tools), Timur Doumler (Software Developer in the CLion team) and Phil Nash (JetBrains C++ tools Developer Advocate), would like to share our impressions and some interesting findings we had from the conference.

ACCU: Professionalism in Programming

ACCU doesn’t run a pure C++ conference. The official slogan is Professionalism in Programming, which gives the conference some freedom with the topic selection. Historically it mostly focussed on C++ and related languages, with C++ taking up most of the available tracks and time slots at ACCU each year. However, Rust, Python, Swift, Web Assembly, and other languages are always welcome to the program. As well as general topics like Open-Source Software development tips, code review and architectural principles, software development team management and others.
accu_logo
I am honored that for the past 2 years now I have been a member of the ACCU Program Committee; I’m impressed with the variety of topics submitted to ACCU! It’s a quite a challenge each year to choose topics under these circumstances. But I hope the content from this year’s conference was interesting and useful to all the attendees.

Talks (Anastasia’s overview)

I didn’t manage to attend a lot of the talks due to various reasons. However, some of the ones I did see are really worth mentioning.

First of all, I was really impressed by 105 STL Algorithms in Less Than an Hour, by Jonathan Boccara. Everything about this talk was awesome: the introductory video the talk started with, the great map of STL world and, of course, the detailed systematization of STL algorithms. Grouped by how the algorithms work with the collection, the map was completely full. The talk summarized the most valuable knowledge about each group and each algorithm in the group. Do you know that Land of Queries is the most crowded one, which means most STL algorithms do not modify the collection? Or can you recall the difference between stable_sort / stable_partition vs. simple sort / partition? How do algorithms that query a property (like all_of, any_of, none_of) work on empty collections? Answers to all these questions can be found in this talk.

These 10 tricks that only library implementors know, by Marshall Clow (Qualcomm) and Jonathan Wakely (Red Hat) was a very thoughtful talk. When containers and wrappers in the standard library don’t know the exact type of the elements they store, there are many interesting issues raised. Especially, when you want the wrappers to preserve some characteristics from the entity they are wrapping (for example, the is_copy_constructible property).

Vittorio Romeo demonstrated the implementation of Zero-allocation & no type erasure futures, which was an interesting approach to future implementation. And Odin Holmes talked about compilation speed improvements in his talk named How to be polite to unicorns. Showing the statistics and proving the fact that we mostly wait for SFINAE and templates during the compilation, Odin suggests some optimizations to known features and library implementations.

Talks by our team include:

  • Keynotes by Hadi Hariri, Kotlin/Native – Embracing existing ecosystems, bringing our new JVM and Android language, Kotlin, to a variety of native platforms. Interop with C is available, as well as CLion’s or AppCode’s plugin which let you try the new technology right now.
  • Phil Nash, Swift Driven Development, is dedicated to TDD, covering both general essence and Swift language usage for these purposes.
  • Timur Doumler, talking about rules and pitfalls of Class Template Argument Deduction in C++17. Timur is currently working on proper CTAD implementation in CLion, so he really knows every dark corner of it!
  • Anastasia Kazakova, showing how modern tooling can help with the C++ language abstractions hiding the actual meaning of the code in Debug C++ Without Running talk. Learn how to overview full macro replacement, debug typedefs substituting them step by step, investigate overload resolutions and giving the includes profiler a try.

Exhibition

This year’s edition was similar to ACCU 2017 in terms of my feelings and impression of the conference in general and JetBrains recognition in particular. With the booth in the main corridor, where the entrances to Bristol 1, 2, 3 rooms are located (which also means just opposite the keynotes location!) we had lots of interesting chats with the attendees over the days. We chatted about our tools, our contribution to the C++ committee work, general C++ and about the other languages and technologies used by the ACCU attendees.
IMG_0042

After collecting some survey answers, we found out that this year GCC is trending as the compiler of choice (with >80% votes) with ACCU attendees. Last year GCC was also on top but with MSVC coming a very close second place. C++11 and C++14 are still the most popular C++ standards attendees are using, but it’s great to see the growing adoption of C++17! And as always, we are happy to see our tools are among the most used C++ IDEs along with Visual Studio and Vim.

Over to Timur: first time on JetBrains side of the expo table!

I have attended (and spoke at) ACCU in the past, but this time felt very special. It was the first conference I spent mostly at the JetBrains booth. Although it meant I didn’t get to see many talks, it was still an extremely rewarding experience and definitely worth it. I really enjoyed interacting with the attendees, whether it was the positive feedback from happy long-time (or newly converted) CLion users, people pointing out bugs or requesting missing features, or even people who use vim and emacs instead of an IDE, or with those who work on unusual platforms that we don’t support yet. All these different perspectives and all the feedback is invaluable to creating a good and useful product. And, of course, such conversations are also a lot of fun.

An overarching theme at this year’s ACCU was the importance of improving diversity and inclusivity in our industry. The opening keynote of the conference was dedicated exclusively to this question, emphasising the role education plays to get more women (and other currently underrepresented groups) to choose a career in software development – and what we can do to make everyone feel welcome and respected. The other noteworthy event was the public launch of includecpp.org – a new global community promoting diversity and inclusivity and providing a safe welcoming environment for developers interested in C++. These activities sparked many interesting discussions amongst the attendees, and overall it feels like we have started moving in a good direction.

I did manage to attend a few very insightful technical talks. Definitely worth the time was Roger Orr’s Nothing is better than copy and move. He described the new rules of guaranteed copy elision and temporary materialisation in C++17 in an easy-to-understand way, complete with a historical overview, some coding guidelines, and useful insider knowledge about the inner workings of a compiler when passing and returning objects from a function. The keynote by Lisa Lippincott, looking at program flow as different shapes in a topological space and the insights we gain from that, which was very inspiring and thought-provoking. And finally, my personal highlight was Jonathan Wakely and Marshall Clow’s session These 10 tricks that only library implementors know!. Listening to the lead developers of two major standard library implementations, libc++ and libstdc++, talking about their template programming techniques was very instructive, and some of these tricks can be very useful in many other situations outside of the standard library – if you know about them.

My own talk was about class template argument deduction (CTAD), and its proper usage and underlying mechanics. It is a new language feature added in C++17, and it is exciting to see that developers have already started getting into gear and using it in their code. I also learned interesting things from the questions I received there. One particular source of confusion seems to be whether, in a class with template argument T, a constructor parameter T&& is turned into a forwarding reference by CTAD, and why or why not. (It is not, but the actual rule describing this is not easy to find in the standard.)

Overall, I had a great time, and this year’s edition confirmed again the very special position ACCU has in the professional C++ calendar. The conference is big enough to have a high quality of speakers, and at the same time small enough to feel like a big family. The organisers put a lot of effort into the programme, coming up with a new theme every year, hosting a very entertaining themed conference dinner, lightning talk sessions with a good dose of stand-up comedy, and great additional social activities like the traditional Friday party and chess tournament hosted by Bloomberg. I can’t wait to come back next year!

Over to Phil: great lightning talks and include<C++> initiative

The conference has been in Bristol long enough, now, that for a large portion of the attendees (maybe even most) it’s all they’ve ever known. Personally, I miss Oxford (where it was previously hosted), but Bristol is a nice city to have on the doorstep – plenty of bars and restaurants nearby, a park right opposite the hotel and, a bit further, a picturesque harbour which makes for a great backdrop to an early morning run.

I still think that one of ACCU’s biggest strengths (which could easily turn into a weakness, but I don’t think it has) is its appeal beyond C++. The C++ core is still strong enough that I’d consider this primarily a C++ conference – aimed at C++ developers who also want to keep an eye on other languages and technologies. But there is also enough content outside of C++ that many attendees are not C++ developers, and never have been – yet they still enjoy the conference. This balance makes for a nice confluence in the communities.

Between my own 90 minute talk, and preparing for two additional lightning talks while I was there, I didn’t get to attend many of the other sessions. What I did see was up to the usual high standard of ACCU – with a good mix of top international speakers, as well as a chance for those less experienced to get started. It was interesting to also see a few talks about community building. There were plenty of talks I didn’t make it to that I will be waiting for the videos of. I’m pretty sure the lightning talks get better every year – and they were very well attended. On the second night, when we didn’t have use of the main auditorium (because it was being prepared for the conference dinner), the room was packed and overflowed into the hallways!

As is often the case there were a few lightning talks that were actually responses to earlier talks at the conference – which always gives it a nice dynamic, playful, feeling.

IMG_0114
The subject of inclusion and diversity came up numerous times again at the conference. I do think that the ACCU conference has one of the most diverse attendances of all the tech conferences I go to. There’s still much further to go, of course – but there are a number in, and associated with, the ACCU community working hard on the challenges of doing so. I’m pleased that we were able to distribute the #include <c++> stickers I had printed unofficially via our booth as it gave us a chance to show our own support for the initiative and demonstrate that it is important to us.

Resources

In the end, let us summarize some interesting links dedicated to ACCU 2018:

See you at ACCU 2019 in a year!

Your CLion Team
The Drive to Develop

This entry was posted in Conference & Events and tagged , , . Bookmark the permalink.

8 Responses to ACCU Conf 2018 Trip Report

  1. Tano says:

    Hi,
    I saw the annual raport, but there is not CLion there, is there a public report on CLion?
    (https://www.jetbrains.com/annualreport/2017/)
    Thanks

Leave a Reply

Your email address will not be published. Required fields are marked *