CppCon 2018 was held in Bellevue, Washington, on the last week of September this year. Flying from Stockholm proved a bit more painful than from Paris, as no direct flights are offered. My trip started somewhere around 11:15 at ARN, and ended in SEA around an eternity later (official sources settling around 15 hours).
With most of Saturday spent flying and brooding about the absence of direct destinations from Arlanda, I can’t say much happened the first day.
Sunday offered for optional trainings that I didn’t suscribe to, but I heard from those present that they were pretty good. One especially was about teaching the attendees how to be better speaker and offered a very attractive deal to first time speakers, which I hope they all took. On my side I used my (dubious) position as a veteran of CppCon to show Seattle around to two of my colleagues from Paradox Arctic. We went to see the Living Computer Museum which hosts an impressive collection of restored (and still working) mainframes such as DEC PDPs and VAXs and Xerox Sigma. You can even request a telnet access to them.
While visiting the place, I rolled on the table of random encounters and found Robert Maynard, who turned out to work on CMake. Unfortunately his occupation wasn’t known to me when we met so I missed a crucial occasion to introduce myself by saying “Hey, your build system is horrible, but all the others I tried are even worse. Anyway pleased to meet you.” Next time!
The evening was kicked-off by the ritual T-Shirt Dinner which requires you to put on a C++ T-shirt and then go to one of Bellevue’s restaurants to meet other developers. The place I picked started by giving us two tables, before they realized that more than 50 people would show up there and hastily found a larger space which still felt a bit overcrowded. In retrospect, it foreshadowed my impression that CppCon is growing too big for its venue.
Keynotes, plenaries and where is my brain teaser?
As I usually mention in my trip reports, I tend to have a somewhat (too) high expectation of keynotes and plenaries at conferences. This is where I expect to get challenged and walk out with a new perspective in mind.
This year, my personal award would go not to any keynote, but to Hana Dusíková’s Regular Expressions (video was removed, a new one is being uploaded) which is probably the best pratical use of
constexpr I’ve seen so far. The idea of generating state machines from strings at compile time is not only smart, but also proves faster than parsers generated by code generators (lex/yacc style). The concept demonstrated is applicable to any LL(1) grammar which opens a large panel of applications.
As for the keynotes themselves, I’d say they were good, but not as good as the past years. This is an entirely subjective advice though, that is heavily weighted by the fact that most topics didn’t feel as new (Bjarne Stroustrup on Concepts, Kate Gregory on Simplicity, Herb Sutter on Metaclasses and GSL) or as interesting (Chandler Carruth on Spectre). Of course, viewers who didn’t follow the previous editions of CppCon, or the other conferences of the season, would probably rate those talks much higher.
The keynote I didn’t mention yet was Mark Elendt’s Patterns and Techniques Used in the Houdini 3D Graphics Application which did a retrospective on the 30+ years his application lived through. I felt some personal connection with the talk, having worked on similar codebases in the past and I think it’s important to speak about those at least so that other developers realize they are not alone out there. Yes there were bad decisions to be made and fads that would have been better left alone, and no your company is not the only one to have fallen for it. As I explained in my previous blog post, Unicorns aren’t real.
This year marked the first time I attended the SG14 face-to-face meeting. It was quite insightful to see standard discussion from the inside out, at the price of missing a full day of the conference.
For the readers who don’t know already, SG14 is a working group that gives advice on C++ standard proposals relevant to Low Latency. It is open to anyone interested and is mostly attended by folks from the Gaming, Trading and Embedded industries.
A few papers were discussed, with especially two catching my attention:
- Object relocation by Artur O’Dwyer (D1144R0) offers to add a new trait “trivially relocatable” to the language that basically tells the compiler “moving this type amounts to a
memcpy()and not calling the destructor”. This could potentially optimize the relocation of any container, smart pointer or resource holder type.
- Linear Algebra by Guy Davidson (D1166R0) proposes to add linear algebra types and operations to the standard library. A worthy addition, if you ask me, as every video game company has to write its own or use some 3rd party BLAS implementation. Having standard vocabulary types would make it much simpler for two libraries using vectors and matrixes to interact.
One thing I felt by the end is that sometimes papers only really interest parts of the audience, for example Linear Algebra probably didn’t speak much to the Embedded people, whereas I couldn’t care much about the Freestanding Libary proposal. This might call for better planning from my side next time to skip some hours.
2018, The year of package management?
One of my big expectation for this year was to discuss the direction of build and package management for C++. Bjarne himself said during his CppCon 2017 keynote that the lack of accessibilty of 3rd party libraries is pulling students away from the language as it’s just too painful to write something more interactive than a terminal application.
While the talks and panels themselves didn’t seem to bring much (although I missed Peter Bindel’s), there was a good deal of discussion going on the side between the people from Conan, the Bincrafters, the maintainers of VCPKG, CMake, build2 and of course Isabella Muerte. A lot was said and would take (at least) a post by itself to summarize. In short, my takeaways are:
- CMake remains the best we have (for better or worse)
- Modules still need some work, especially on the interaction with the compiler to find them
- VCPKG’s goal is to package as many libaries as possible, working around broken builds like Linux distributions do when they package for
- Conan has put more focus on the tool itself and providing enterprise services for it, but is now investing to deliver more packaged libraries to the community
- The idea of a standardized package descriptor isn’t getting much traction, we’re more likely headed towards a de-facto standard if one software manages to win the market
- New tools such as
build2are interesting as research on the topic but I’m doubtful they will offer a practical solution to the current ecosystem
- Overcomplicated builds and reliance on non-native approaches (Cygwin/MSYS) is still the #1 reason why a library isn’t trivial to package
- Header-only libraries continue to be the “prefered” way to avoid the topic entirely
As this edition ended, I couldn’t help myself thinking that it wasn’t my favourite. The place felt too crowded, I couldn’t quote as many memorable talks, didn’t meet as many new people. But then I realized, this was perfectly normal. As the conference is growing, so am I. This is not my first time anymore. Or my first gathering of the year. I can’t meet Matt Goldbolt (among others) in person for the first time again.
When you first jump into this world, you’ll certainly be amazed by all those topics you didn’t hear about before, and those aweseome people you can finally see in person. As you become more of a veteran, your reasons for going may change. You go for the hidden gem, or for the late night discussion with the 3 experts in whatever field you’re intested in.
Whatever your profile, I’m pretty sure you’ll find it worthwile so… see you in Colorado next year!
Wait, Stockholm has no direct flight to Denver? Forget what I’ve just said, everything sucks!