Last month I flew out to Seattle for CppCon 2017 with fellow Codeplayer’s Michael Wong and Christopher Di Bella. This was my second time at CppCon and as with the previous year it was a real pleasure to be there, I saw a lot of familiar faces and digested a lot of great content.
My trip report is a little later than I had hoped because I wanted to wait until the talks were available online before posting.
CppCon this year was bigger than ever with approaching 1200 attendees and 7 tracks; making it even harder to pick which talks to go to. Thankfully all the talks are made available online, so if you couldn’t make it to the conference or even if you did but couldn’t get to see all the talks you wanted to, you can go online and watch them. I only got to a handful of the talks as I often had conflicting appointments, but I’ve highlighted a few from what I saw that I would recommend checking out and some which I didn’t make it to but heard good things about.
- The opening keynote from Bjarne Stroustrup Learning and Teaching Modern C++ was set around the theme of “we are all students, and we are all teachers”, and this set the tone for much of the rest of the conference. This was continued in many other talks and open content sessions as well as in the Trainers Panel, with a surprise appearance of Scott Meyers.
- Ben Deane & Jason Turner presented Constexpr ALL the Things!. A look at the current, and potentially future capabilities of constexpr, and how they can be used to create a compile-time JSON parser. A great practical demonstration of the power of constexpr and a very enjoyable presentation.
- Anthony Williams presented Concurrency, Parallelism and Coroutines. An overview of the current parallelism and concurrency landscape. Good for either those unfamiliar with parallelism and concurrency in C++ and interested in what it’s all about or for those already familiar and looking to see what’s new.
- Herb Sutter presented a keynote Meta: Thoughts on generative C++. An early look at proposed new feature for C++ that would allow developers to redefine the behavior of a class using compiler-time code injection. This was a great and thought-provoking presentation which I cannot possibly do justice here, so it really needs to be seen to be appreciated.
- Jan Babst presented Driving Into the Future With Modern C++: A Look at Adaptive Autosar. A look at new standardization of guidelines for safety-critical C++ in automotive with practical examples and guidance. A really interesting insight into a rapidly developing industry and how they are adapting to C++.
- David Watson presented C++ Exceptions and Stack Unwinding. An in-depth look at how exception handling is implemented. A great talk for anyone who’s ever wondered how the magic of exception handling works.
- Chandler Caruth presented Going Nowhere Faster. Another great talk from Chandler on optimisation, this time looking at loop optimisation as well as how you can profile memory access to understand where performance is lost. Another must see for those interested in getting the most performance out of their code.
- Matt Godbolt presented the closing keynote Unbolting the Compiler’s Lid: What Has My Compiler Done for Me Lately?. A look back at the creation of the popular compiler explorer tool and the very clever things compilers regularly do for us. A very interesting and entertaining talk, well worth checking out.
- Sara Chipps presented Building for the Best of Us: Design and Development with Kids in Mind presented programmable friendship braceltes for pre-teen girls called Jewel Bots, and how to design a more accessible C++ API for a younger demographic. It was a very intertaining presentation with some users of the Jewel Bots as guest speakers, presenting what they had done on the devices.
The conference this year had a few prominent trends.
- The first as I mentioned earlier was the topic of teaching C++, and how best to do it; which as the standard has been quickly evolving and the community growing; has become increasingly improtant. Though this is by no means an answered question; this will continue to be a hot topic for some time, often with no clear right or wrong answer.
- Another trend, as you may imagine was C++17; with the new standard is hot off the standards committee, there was a great number fo talks presenting new features in the language and standard library.
- Finally there was a trend of paralleism and concurrency; there were a number of talks presening the parallelism TS, recently introduced to C++17. With th current trends in computer architectures it’s becoming increasingly more important to leverage multi-threaded applications; and the topic of understanding how to achieve this is a rapidly growing area in the C++ community.
As well as enjoying the conference I was also there to present myself, as were my two colleagues. Our work is primarily in parallelism and heterogeneity in C++, which I was happy to see is a growing area of interest in the C++ community.
- I presented Designing a Unified Interface for Execution, a look at the current proposal for executors; an effort by the C++ standards committee to standarise execution for a range of multi-threaded, heterogeneous and networking devices. This was the first public presentation of the unified executors proposal; it was recieved very well and we got a lot of great feedback from potential users and implementors.
- Michael presented The landscape of parallel programming models: is it still hard or just OK? with Paul McKenney and Maged Michael, an analysis of existing programming models for parallel programming models and what the future of parallel programming in C+ looks like. This was a 2 part talk which took an in-depth look from the hardware all the way up to the high-level software abstractions. Part 2 of this can be fond here.
- Michael and I presented C++17 ParallelSTL: A Standardization Experience Report for CPU and GPU on SYCL, a look back at the standardization process of ParallelSTL and how Codeplay implemented ParallelSTL to accelerate the parallel algorithms on GPUs with a live demo. In this presentation we demonstrated ParallelSTL running on a GPU using an implementation based on SYCL, and this was very well recieved.
- Christopher presented Learning C++ Isn’t Difficult - Teaching C++ Is The Trick, an open discussion session on best practices for teaching C++ and ran a class on Exploring the C++ Standard Library. The open session was also very well recieved and the audiance was very engaded leading to some very interesting discussion about best practices when it comes to teaching C++. The class also went very well with great feedback from the attendees.
Getting the Most out of CppCon
For anyone considering attending next years CppCon, I thought I’d give some pointers why you should go and how to get the best out of it.
You might think that since the talks are made available online there’s not much point in going to the conference itself. But the talks are just the tip of the iceberg at CppCon. There is a great deal of content that is not made available online such as classes, open content and the poster session, and this is not to mention the benefit of simply being at the conference amongst a welcoming community of C++ developers.
The classes are of a very high quality; last year I went to Anthony Williams’ class on concurrency in C++ and this year I went to Stephen Dewhurst’s class on template programming, and each time I learnt a great deal which I was able to take back not just for myself but also for my company.
Simply being at the conference itself provides so many opportunities to meet people and develop yourself, your company or contribute to the community. At the conference, you have direct access to fellow developers, potential customers or partners, library developers and committee members. This year I spent every lunch and evening after the conference meeting people and I still never found time to see everyone I’d have liked to.
One aspect of CppCon I would highlight, and this is true for many conferences but I feel more so of CppCon is that there is an overwhelming amount of content. I found myself on many occasions struggling to decide what to go to because every option was interesting. So it helps greatly to have an idea of what you want to see in advance.
For any content which is not recorded such as open sessions, classes or posters, make sure to take notes and/or request slides or learning resources to take back with you as you may forget things soon after the conference, there’s only so much information your brain can hold.
To wrap up, CppCon is a great conference that is well worth attending, not just for the talks and classes, though they are great, but also to be part of the C++ community there. I hope to be there again next year.