CppCon 2017 For Fun and Profit
I've just returned from attending my first ever CppCon. The experience was very inspiring and I feel like I've learned more than I've ever learned within a week. I met many wonderful, incredibly smart people and even made some new friends.
I was a bit nervous before the conference as it was the first time traveling this far on my own and my first time attending such a big conference. Luckily, as it turned out, a fellow Dutchman was making exactly the same trip, the great Jan Wilmans (@janwilmans), owner of nullptr.nl. We stuck together during the conference and managed to have lunch and/or dinner with a number of inspiring speakers. This made for some great conversations, ranging from C++ to Doctor Who.
Trip Summary
Prior to the conference I read Kate Gregory's insightful blog post on Surviving An Intense Conference. She advises to come up with a goal that you want to achieve by attending the conference. The goal I set was to learn more about template (meta) programming, to meet interesting people and to speak with a number of inspiring speakers.
I started towards my goal by attending a pre-conference course, Modern C++ Template Programming, taught by Steve Dewhurst. I had some understanding of template (meta) programming before starting the course, however, I feel I have a much better understanding of it now than I did before. The course had a lot of content and was well structured. Some of the material was left for the students to study at home as well as some exercises (which I'll be attempting to solve over the next few days :-)). I am glad I decided to attend the course, and would certainly recommend it to anyone seeking to improve their understanding of a particular topic in C++.
On Monday, the conference was kicked off by Bjarne Stroustrup with an inspiring keynote, Learning and Teaching C++. He stated we are all teachers and that we must aspire to be better teachers. An important part of this is making simple things simple, complexity is the enemy of good teaching. In our teaching we should strive to provide a rationale, to explain why. Our goal should always be to get ideas into students' heads, never to show off. We should also not forget the we are ourselves also students, and must be in order to keep up.
I found Bjarne's keynote quite inspiring and I will strive to improve my teaching. The theme of learning and teaching C++ was repeated in several other talks and panels. The message was quite clear, we need to do better, we need to give good examples and we need to explain our rationale.
On Tuesday I attended Nicolai Josuttis' talk on The Nightmare of Move Semantics for Trivial Classes. Through an example of a simple class he shows all the different constructors we have to implement for a number of different use cases. He explained the issue very well and showed clearly what we could do to improve the situation. This talk had a lot of immediately usable and clear advice. Nicolai is a great presenter and did a wonderful job of keeping everyones attention.
In the afternoon on Tuesday, I attended Odin Holmes' talk, Agent Based Class Design, C++ With a Robot Glue Gun. I had been looking forward to this talk after having seen some of his previous talks on YouTube. In this talk Odin introduced us to Tabea, Marie and Paul the magical unicorns living inside the compiler making all our template magic work. The talk was a higher level description of his idea for Agent Based Class Design, an alternative to Alexandrescu's Policy Based Class Design. Odin explained clearly what he was trying to solve and how this technique could help. The details were left for another talk, but the examples were impressive and left me wanting to dig into the internals of this technique.
Wednesday morning Kate Gregory presented the 10 Guidlines You Need to Start Using Now. She makes a very clear point: We need to stop bike-shedding. Whenever there is uncertainty about the best solution, we should look to the Core Guidelines for advice. The guidelines she presented are all focused on making the code simpler and stating intent more clearly. After initially reading the Core Guidelines a few months ago I tried to (unsuccessfully) apply them at work. After this talk I feel compelled to give it another try.
On Thursday I enjoyed Juanpe Bolivar's talk on Postmodern Immutable Data Structures. He does a great job of explaining the ideas and implementation of an immutable Relaxed Radix Balanced Tree. Most impressive was his demonstration of an editor he implemented. He loaded a 1GB file in mere seconds and showed us he was able to copy and paste the entire buffer without running out of memory. This talk had me trying to come up with a place where I could use this impressive data structure.
On the last day of the conference Matt Godbolt explained the history of Compiler Explorer in his talk Unbolting the Compiler's Lid: What Has My Compiler Done For Me Lately? He showed some interesting examples of exploring code and the generated assembly. I think he did a truly wonderful job and made us all appreciate the amount of work that goes into maintaining this wonderful tool. He told us we should all go and hug a compiler writer and thank them for the wonderful work they are doing to optimize our code.
There were many more talks, lightning talks and panels I attended, too many to describe. Most talks were both brilliant and inspiring, some talks were neither. The discussions after the talks, while enjoying a cup of coffee, were what made this one of the most interesting events I've ever attended.
The weekend before the conference there were also two dinners, the volunteer dinner and the T-shirt dinner. This was an opportunity to get to know each other in an informal setting, and both were a lot of fun. During the conference we used Slack to get together for lunch or dinner. This worked great and made it easy to find a group of people to join. I'm very glad to have met everyone and I'll fondly remember all the cool, nerdy conversations we had.
See you next year at CppCon 2018!