Archive for May, 2018

C++Now 2018 Trip Report

Wednesday, May 16th, 2018

Last week, a little fewer than 150 C++ programmers gathered in Aspen, CO for C++Now 2018. This year the conference was scheduled before Mother’s Day, so with it being quite a bit earlier than usual, I was half-expecting snow and travel delays. In fact last week turned out to be uniformly lovely, for the most part with clear skies and temperatures in the low 20s Celsius.

After a connection through Denver, I arrived on Sunday afternoon ready for a week of geeking out about C++. As always, there were many talk slots where I had to make a tough choice, but professional recording by Bash Films means the ones I missed should be on YouTube in just a few weeks. Here are a handful of the standout presentations.

Smart Output IteratorsJonathan Boccara

I met Jonathan for the first time in person on Sunday night, although I’ve been reading his blog for a while and really enjoyed the recent algorithms talk he gave at ACCU. He has an infectious enthusiasm for C++ that comes across well, and this talk was very enjoyable. This sort of thing is right in my wheelhouse — I’m a sucker for algorithms and code structure — and exploring the space between the existing STL and the Ranges TS sparked in me a few ideas for exploration. I spent a while talking to Jonathan afterwards and I have some things to work up in the coming days and weeks.

Fancy Pointers for Fun and ProfitBob Steagall

The problem with submitting multiple talks to a conference is that they might get accepted, which is how Bob ended up with 3 talks to give at C++Now! Allocators are a hot topic at the moment, with lots of changes for C++17 and more than a few conference talks about them over the past year. Bob has been doing a lot of work in this area and he presented a nice demo of relocatable heaps with an impressively small amount of code. I think this has a real potential for saving time spent in serialization; it’s basically a memcpy between machines!

My Little *this Deduction: Friendship is … Uniform?Gašper Ažman

This was the kind of presentation that you only get at C++Now: a room full of C++ nerds arguing and trying to pin down the truth, just about kept on track by the presenter. It’s the sort of presentation that gets irked comments on YouTube, but for those of us in the room it’s brilliant fun. I think Gašper knew what he was getting into, and did a great job taking the audience through the ramifications of the proposal, even though at times they wanted to jump a dozen slides ahead! Anyway, this talk got the “most educational & inspiring” award, and well deserved. Congrats, Gašper! This is going to be an interesting one to caption…

Initializer Lists are Broken, Let’s Fix ThemJason Turner

This was a great talk of the kind we’ve come to expect from Jason: polished material taking us through various implementation options to solve a problem, with a good amount of audience participation, and of course exploration with Compiler Explorer. Jason: “I put this in Godbolt earlier…” Matt: “Oh, I wondered what that was!” It turns out that std::initializer_list has a few gotchas and — surprise — isn’t the panacea it may have initially seemed to some. Oh well. Jason’s new presentation secret is the ability to click on any code sample and bring it up inline in Compiler Explorer. That’s nifty.

Other talks and the Keynotes

There were so many more great talks — I really enjoyed Matt Calabrese‘s Argot: Simplifying Variants, Tuples and Futures; Zach Laine’s talks on Unicode support; Tony Van Eerd‘s Words of Wisdom; David Sankel’s C++17’s std::pmr Comes With a Cost; and Alan Talbot’s Moving Faster: Everyday Efficiency in Modern C++ to name just a few.

On the surface, Lisa Lippincott’s opening keynote and John Regehr‘s closing keynote (locknote?) were completely different — one talking about high level ideas for modelling program shape mathematically, the other concerned with compiler optimizations and undefined behaviour. I would say the similarity between them was the rigour each presenter brought to their subject. Both Lisa and John also have a talent for making the complex seem simple — I have a new framework to think about contracts now, and I have a deeper understanding of the reasoning and tradeoffs behind optimizations and undefined behaviour choices.

My Talk

This year, my talk Easy to Use, Hard to Misuse: Declarative Style in C++ seemed to me a bit of a departure from previous talks I’ve given. Generally, my talks do have some well-founded ideas behind them, but they tend to involve a large amount of code experimentation beforehand, and that is rather easy to talk about. This time, I had plenty of code examples, but they weren’t especially modern; this was much more a talk about the everyday basics of programming, and an attempt to think more deeply about good practices and consciously elucidate concrete guidelines. I’m glad that it was very well received, and that the time management worked out!

It’s sad to leave Aspen again, but I’m back to my regular schedule now with lots of new things to contemplate, disseminate among my colleagues, and investigate.