I attended CppCon, and all I got...

published at 02.10.2015 20:12 by Jens Weller

... was an awesome conference! So this is my trip report. I really enjoyed the week in Bellevue, it was a pleasure to see so many of you again, so I want to thank Jon Kalb for organizing a great CppCon for the 2nd time.

As you might know, I do travel quite a lot to conferences, so CppCon was the 3rd conference I attended this year, and next week I'll be at the Qt World Summit (aka QtDevDays) in Berlin. Later this year is still my own conference, Meeting C++ 2015. All of them are different and in their own way special, the CppCon with almost 700 attendees is the biggest, purely on C++ focused event. It lasts a week, and offers a lot of content, up to 6 sessions in parallel can make it quite hard to choose. I tried to choose based on topics, and rarely on speakers. Yet Alexandrescu can be very entertaining, and had a very interesting talk on allocators.

Keynotes

Shortly before CppCon the C++ Core Guidelines leaked to the public, I did look a little bit over them before I attended Bjarnes Keynote, but still there were lots of surprises. The GSL was one of those. GSL is to me an alias to Global Starcraft League, so it was a little bit weird to hear Bjarne Stroustrup say GSL on stage, but the following slides explained the goals of the GSL. There is not just a document written on how to write C++14 by Bjarne and Herb, there is also a library implementation that supports it. So, on Tuesday Herb Sutter followed up where Bjarne had stopped, but then did do an interesting turn and showed another twist of their idea: the GSL and Core Guidelines are also meant to help static analysis tools to understand code better. This will be integrated into Visual Studio 2015.

Next was Sean Parent, who talked about better data structures. He had prepared some awesome slides which showed how a forest structure could be implemented with a shoe lace and beats. He also presented some ideas for algorithms implemented on top of the STL. I just had to implement a tree like structure, and currently I do think about if the forest structure he presented would be a fitting replacement. His keynote was another chapter out of his planned book, which I'm really looking forward to.

On Thursday, Chandler Carruth presented on Tuning C++. Chandler will give the opening keynote later this year at Meeting C++, so I was eager to see what he would present at CppCon. After a few slides on tuning, benchmarking, optimizing and sharing an early story of him being new at google with us, he switched to the console. No more slides, just a live demo. The topic was on how to use the perf tool under linxu to understand the assembler, and how to achieve what you actually wanted to measure. This was really useful and practical. Now I'm looking forward to the follow up, his opening keynote at Meeting C++ will likely also contain a live demo, but it will be different from CppCon. Chandler is very excited about going to Berlin.

Going to so many conferences gives me sometimes the chance to watch talks or even keynotes a second time. I had already seen Eric Nieblers keynote on ranges at C++Now(and watched the recording from C++ Siberia), and meeting him at CppCon before Friday, he told me it would be nearly the same. I'm really interested in ranges, but also my CMS needs at sometime something like a calendar, so seeing some of the code details again was very interesting. And I think a few slides were new... The conclusion of Erics keynote was, that ranges will become STL2 backed by concepts. Eric is really busy working on the standardization of his range library, which is now his full time job, paid by the C++ Standards Foundation (isocpp.org).

In conclusion, the keynotes were very different from last years keynotes. Maybe some people had hoped for a different set of keynotes than what we got. Its always difficult to find speakers, and topics for a keynote are the choice of the speaker mostly. Mike Acton did last year a good job at being right and controversial. People had something to talk after his keynote, which was also entertaining. This year the keynotes came from the core of the C++ community, and they all delivered. I'm already looking forward to next years keynotes.

The talks

I attended a lot of talks, and started to take notes, which helped me to reflect on some of them later. CppCon offered this year even more content then last year, with open content sessions and lightning talks. More lightning talks. Even over Lunch you could sit in a talk, which I mostly did. Most of the conference went by without me running into conflicts which talk to attend. Except when modules and copperspice were on the same time. There was later a second talk on copperspice, so I was still able to watch both of them. But first to modules.

Modules are awesome. I think they are the most popular feature not yet in C++, I frequently get asked about them on the social media. People don't know much about modules, but everybody has an opinion. So it was really great to see Gabriel dos Reis present for a full hour about his modules proposal, implemented in VS2015 Update 1. I've seen a keynote on modules in 2012, clang has an implementation, what Gabi presented was different. His presentation is a must watch, and I really hope that we are able to see this next year take shape as a Technical Specification. My most popular tweet from CppCon is from this talk (also the 3rd best).

The second talk on copperspice was on friday, this talk was also a must watch for me, as I attend the Qt World Summit next week, and copperspice is a Qt4 fork. Previously I had heard some feedback on copperspice from some Qt folks I know, and also had my own questions about it. The goal of the Qt4 fork copperspice is, to replace most of the technical dept in Qt with modern C++. They have implemented a nice alternative to the signal and slot mechanism in Qt, based on C++11. One feedback of the talk was, that they should release this work as a separate library.

One very nice surprise was the talk on open source robotics, which featured ROS 2, a C++11 implementation of a popular robotics framework. In 30 minutes the talk gave an overview on how C++ was used in robotics and why they chose C++11 for writing ROS 2. Then, the talk continued with the 2nd speaker, presenting about an open source robotics simulator. As not everybody can own his own robot, the simulator is able to run ROS 2 code and simulate a wide range of different robots. After a while I began to notice, that she actually was presenting inside the simulator. She closed with showing how one can implement UI Elements, using her own slides as an example.

I also attended a talk on RCpp, as I thought it would be good opportunity to get a feel for R and see how it can be connected to C++. This was the talk with the fewest viewers I attended at CppCon. We were only 8-10 people, but that might be because people went else where, as the speaker was a little late. But then followed a very good talk on R and how it can be connected to C and C++.

My own talks

I had submitted an overview talk on encryption, which was my scheduled talk for this years CppCon. But I decided to present on my own CMS in a lunch session and give two lightning talks.

First, on tuesday, my lunch session. Its in the same talk I'll talk about encryption on the next day. Everything goes very well, and I am presenting the work I did since August in implementing my own CMS and blogging about it. I focused on showing code and presenting future goals of my CMS. As its lunch time, and there is a similar session on, Roland Bock presenting his KISS Templates library, the room is not totally packed. Roland and I are also competing with lightning talks, so even its lunch, its hard to choose at CppCon. Go for lunch, or watch a talk, and which one? The lunch sessions were not recorded.

My lightning talks, a short 5 minute talk on boost serialization (I still have to put an update about this on my blog), and a 15 minute talk about integrating TinyMCE in my CMS Qt UI. I had to go a little bit on overtime for the serialization talk (5 minutes are really challenging) and both lightning talks went very well.

Only my talk on encryption left! Easy! I presented in the same room the day before, so things should work as planned. I remember last years talk, where I had to reboot my laptop and still then had to share my screen, only seeing my slides, no notes, no time, only slides. Same thing this year...

I picked the topic on encryption, as I think its an important one, and there has been not a lot of content outside of library documentation and wikis when I started looking into this last fall. When I did this talk at C++Now, I learned I was the first there to present on encryption. Its a challenging topic, and neither am I an expert at it, so when I decided to give a talk on this topic, it was clear that it should be an overview, to give people an orientation. I choose 3 libraries, 2 are C++(cryptopp,botan), one C(libsodium). The first two offer a wide selection of algorithms, libSodium focuses on a cryptobox based approach, but also contains the necessary algorithms for this. I plan to post later a full overview from what I learned about encryption to my blog, as a follow up of my talk. The talk went fairly well, but without my notes and also only seeing the slides, I was a little quick with the presentation. Which left some time for questions. Thanks for the good questions and feedback!

Even more Content!

At the evening there are lightning talks at CppCon or sessions like Grill the Committee and a planning session for next years CppCon. So your day at CppCon can start at 8am and end at 10pm, and maybe you should hang out at the bar after that too? Also, in front of the CppCon conference, there was a two day workshop on C++ held by Michael Caisse, just as Meeting C++ offers a workshop day. The recordings will come online in the next weeks, so CppCon might just start for you? I'm looking forward to see a few more talks I have missed. Like the one on boostache, as Michael Caisse and I shared the same time slot.

Conclusions

So, CppCon turned out to be a great C++ event. I enjoyed my stay in Bellevue, and shared some of the experience on twitter (#cppcon) with all those not able to go. It is always a pleasure for me to spend a week with so many C++ programmers, and to be able to exchange so many thoughts on different C++ related topics. Highlights? On Monday, running into Herb Sutter while just entering CppCon, but he is usually busy, so Bjarnes and his Keynotes were the first hightlights, especially understanding and reflecting on the topic of GSL and C++ core guidelines. I had a chat on modules with Gabi, was able to just hang out in many talks and could relax. And many more memories.

There was a very well attended community session at 8 am in the morning. It featured a good discussion on the topic of C++ user groups, and started with a small presentation by Jon Kalb. C++ User Groups and the community are important to me, so that it was nice to see so many share so early in the day experiences and ideas on this topic. One thing where CppCon maybe is able to learn from Meeting C++, is that I always have used my own conference as a tool to motivate people to visit or found their own C++ User Groups. I intentionally don't make it a choice anymore, I always will have a section on this in my closing message. As community is not a choice, we are all part of it.

Last but not least: I bricked two phones on the way to CppCon, so that I only had my N9 to work with and take pictures. I still love my N9, but the camera is a little outdated, thats why I choose not to put any pictures into this post.