C++Now 2018 Trip Report

Last week was the first time I had ever attended a professional conference. It also marked the first time I had ever given a talk at a professional conference. The first first was easy. The other first was mildly terrifying.

C++Now is the annual C++ conference in Aspen, Colorado for experts and advanced users. The conference site is in the middle of some of the most beautiful scenery you can imagine. But, you’ll spend five straight days admiring the beauty of the minds that are there more than the scenery surrounding you. While I have watched many of the videos that have come out of C++Now (formerly BoostCon) nothing really quite prepares you for the torrent of technical knowledge that will be poured into you. The talks are lively, interactive, engaging. You’ll see presentations on everything from synthetic pointers to compilers to views to new language proposals to quantum physics.

And if you think you’re the Top Gun of C++ developers where you work, you should prepare yourself for being surrounded by people who have forgotten more about C++ than most software engineers know.

Great People

What makes C++Now special, though, are the people. C++Now is a small conference so everybody knows everybody else, unless this happens to be your first time. Over the past few years, I’ve watched dozens of talks but it was only last week that I got to meet some of the people in person that I have admired at a distance:

I had only known Peter Bindels (https://github.com/dascandy) as Dascandy online and from one of his talks. But Monday morning we were introduced and when he found out that this was my first conference he took the time to show me around and make sure I made it to the first session on time. Our only connection before that was that he’s from Holland and I grew up there. Peter’s simple act of kindness meant more than he will ever know.

Besides being one of the nicest people I’ve ever met, Matt Godbolt (https://xania.org/) has taught me more about assembly language than I ever learned in school. Like almost everyone else, I’ve used Compiler Explorer (https://godbolt.org/) since I first saw Jason Turner using it in one of his talks. I saw Matt at the social Sunday night and made it a point to go over and meet him. We wound up sitting together at a number of talks and I thoroughly enjoyed our conversations as well as the talk he gave Tuesday (see below). I joked with him that British accents make people sound smarter than the rest of us, but in fact Matt is just smarter no matter which accent he uses.

Bob Steagall (https://bobsteagall.com/) and I both come from the defense industry and that’s about where our career similarities end. I went to two of his talks, loved them both, but it was the one on synthetic pointers that gave me my “wait, what did he just say?” moment (see below). Bob did three talks this year which I can’t imagine pulling off given the technical depth required, but somehow he did. I’m watching his CppCon 2017 talk on allocators (the 231st talk on the subject) as I write this. He also wrote a review of my talk that left me speechless.

If you’ve spent any time on Fluent C++ (https://www.fluentcpp.com/), you’ll know what a dynamo Jonathan Boccara is. I first found his website looking for information on CRTP and given that he gives a daily ten minute talk at work it’s no wonder that there’s so much good material there. I had no idea who he was when he sat down next to me and only recognized him by the name on his tag. He’s an extremely smart person with a very soothing way of speaking. I went to his talk on Smart Output Iterators (see below) and thought it was wonderful. If you ever get a chance to meet him in person, make sure you do.

Michael Caisse has the most interesting picture imaginable on Slack and he is completely the opposite of who I thought he would be. His talk on Modern C++ in Embedded Systems was up against mine Thursday. It became a running joke between us that I was going to have a mannequin give my talk to the three people who would show up and sneak out to see his. He was very encouraging both before and after and I’m sorry I didn’t get more time to talk with him. If there’s one speaker that I would emulate it would be Michael. Somehow, though, I don’t think I could ever be that engaging.

Eva Conti (https://bunnyladame.blogspot.com/) is one of the most interesting people I met last week. But I’m sure she hears that from Ben Deane (her fiancĂ©e) all the time. Jon Kalb was getting everyone to try his ground chocolate whatever-it-was and we wound up standing next to each other. With nothing but awkward silence between us, one of us decided to kill it by starting a conversation. Turns out Eva has a very deep background in systems security. After a delightful conversation, she said she’d come to my talk and did just that. As we walked out after my talk, she paid me the best compliment I’ve ever gotten, “You should write a book on this.

Great Talks

The whole week is filled with great talks and like everyone else I had to make a lot of hard choices. Here are a few of my favorites (in order of their appearance on the schedule):

A Quantum Data Structure for Classical Computers – Charley Bay

Charley Bay’s talks really don’t fit the traditional C++Now model. But then again, neither does Charley. No one else would be able to explain quantum physics and its impact on computing like he can. Few of us have the intellectual bandwidth. This was the quintessential Charley Bay talk: starts fast, doesn’t slow down until the end and goes deep. It’s the equivalent of a quantum physics bullet train. I loved it. If you want to know what the future of computing holds, this is a great talk to start off with. He starts by breaking down the quantum of our data structures, moves through the history of quantum physics, eigenstates and time as a technology and ends with quantum data structures. I’m going to have to watch this again, and again, and again just to get it all.

Fancy Pointers for Fun and Profit – Bob Steagall

This talk was not on my initial schedule but I’m glad I went to it. I’ve spent a lot of time in my career using serialization/deserialization techniques to push data from one end of a system to another. Turns out that it was largely wasted. Fancy Pointers, AKA synthetic pointers, are an enormous opportunity that few people seem to know about. Even after a stunning demo of the technique, I still saw this as a largely academic discussion. It’s wasn’t until the last slide that I had my “wait, what did he just say?” moment. The use cases for this technique are everywhere and are often overlooked. If you’re pushing data around a system and writing a lot of boilerplate serialization/deserialization code, watch Bob’s allocator talk from CppCon last year and then watch this talk.

Smart Output Iterators – Jonathan Boccara

Smart output iterators are not intuitively obvious. We typically rely on the algorithm libraries to do the heavy lifting and ranges to limit the input. But Jonathan presented an interesting approach to move some of that work to the output iterators. It’s a compelling argument and one that he backed up with several examples of how code is simplified by this technique. I’m sure this approach will be developed further the more eyes there are on his talk and I am personally interested in using it in my code.

What Else Has My Compiler Done For Me Lately? – Matt Godbolt

I’ll have to admit that assembly language and compiler technologies are a bit of a mystery for me but Matt makes it easy to understand. Knowing how your code is seen by the compiler has become almost the minimum buy-in for software engineers interested in performance. And Compiler Explorer has become ubiquitous in achieving that goal. When you add optimization into the mix, Matt’s talks on how the compiler generates the code that actually runs is a must-see for any engineer. Unfortunately if you weren’t there, the video for this talk will not do it justice. Matt had his hands full with a very experienced (and engaged) audience, a very short deadline and an interruption that would have thrown anyone’s timing off. Someone arrived late, walked right in front of Matt, proceeded to crawl under a table and then started scrounging for stickers. While the audience sat there shaking their heads in disbelief and laughing at the absurdity of what was happening, Matt just went right on. Great job!

Easy to Use, Hard to Misuse: Declarative Style in C++ – Ben Deane

This was the talk that I was the most curious about. I’ve heard the term Declarative Programming before but in a very hand-wavy fashion. This is the talk that finally cleaned up the meaning for me and gave me a foundation for putting this style of programming to work. Declarative style is less about the modernization of the language and more about how we view the structure of code. It has at its heart eliminating control flow which simplifies the logic. It’s hard to conceptualize, but Ben had plenty of examples that made the concepts concrete. I’m looking forward to watching this again and it’s definitely a talk you’ll want to see if you missed it the first time.

Running With Scissors

Nothing will make you believe in the devil, the boogeyman and things that go bump in the night faster than spending your career working in secure environments and having to defend them.

I didn’t start out thinking of giving a conference talk. This past January, I went to the Denver C++ Meetup where predictably the main topics of conversation were Spectre and Meltdown. That’s when I met Charley Bay for the first time and wondered out loud if anyone would be interested in discussing secure coding techniques. Charley is one of the most positive and exuberant people I know and somehow over the next month that discussion morphed into a proposal for C++Now.

My first attempt at a proposal was OK. Charley made it great. He patiently walked me through the process that he had been forced to learn the hard way. The night before my talk we went through my slides together and between Charley and Eva, their excitement became my excitement.

My talk was on Secure Coding Best Practices. Secure coding isn’t a particularly popular topic and it’s one that we generally ignore right up until we get burned. It’s also a heavy topic. There really isn’t a way to talk about the subject with any levity when you’re talking about criminal intent, data losses and bugs that crash planes and kill people. It often becomes “the scary talk” we must have but don’t really want to. The truth is, as I explain in the talk, we’ve ceded the field to the other side instead of realizing that we control the field and therefore the engagement. It’s within our power to be the birds-of-prey but instead we become the accomplices to our own demise.

Probably the best moment was walking a skeptical audience through a buffer overflow exploit to do a privilege escalation attack and then using it live to get root access on a Linux VM. I used an older technique rather than something more modern because it’s simpler to conceptualize and, really, who wants to show a current exploit in a video that someone else can take and use against another person.

Surprisingly, I enjoyed doing the talk more than I thought I would. The audience was great, attentive and asked a lot of really interesting questions. And yes, I forgot to repeat the questions most of the time. My apologies to the viewers at home.

It’s interesting, though, what goes through your mind when you give your first conference talk:

After watching three straight days of really great talks just before you do your own:

Oh, this was a mistake. This is going to end in disaster and I have no one to blame but Charley.

10 Seconds to start:

Wait, what was my first line? What was I going to say first?

Something, something, darkside, something…

Oh man, can I call a timeout?

An audible?

A doctor?

Oh, darn…

Zero Seconds to start:

OK, breath.

No, breath. Like Phil Nash told you to.

No, really, breath. Because if you don’t it’s going to be super embarrassing when you pass out in front of the camera…

10 Minutes in:

If someone comes in late and crawls under the table again, I’m just going to lose it.

Godbolt is the nice Matt here!

27 Minutes in:

Man, could that spotlight get any brighter?

I’m going to go blind before this is done…

That moment when you realize that you forgot to add back_inserter to the slide you added the night before:

See, this is why we don’t add slides the night before!

Who do you think you are? Tony Van Eerd?

Plus, you missed the lightening talks…

46 Minutes in:

Repeat the question, repeat the question, repeat the question…

Wait, what was the question?

When someone pointed out that I was using an old school exploit to get root access on a VM:

Really? You thought I was going to show you an exploit you can use on someone today???

Seriously?

On the other hand, maybe that’s not such a…

90 Minutes in:

It’s over?

Wait, did I mention that std::string reserve() is non-binding on shortening a string?

Oh, darn…

The Road Home

If you’ve never been to C++Now, you should. If you want to excel at your craft, this is the place to be. The C++ community is extraordinarily generous and you’ll find yourself having endless conversations with the most talented people in our field. You’ll find people who are willing to pour their knowledge, passion and talents into you asking only that you become an active member of the community in return.

Will going to C++Now make you a better engineer?

Maybe. It depends.

It depends on whether you go there as a mere spectator or as someone who is looking to immerse yourself in the culture and community and then take what you learn back home with you and put it to good use.

Be forewarned, though. These are deep waters.

Jon Kalb does a herculean job putting on C++Now. That he does two major conferences a year on top of making a living is just mind boggling. I don’t know how he does it. But without him we would not have a place to call home for our community each year. And that includes the efforts of dozens of volunteers & staff who along with Bryce Adelstein Lelbach work together make this a great week for us all.

It’s our community, though. So if you aren’t a volunteer yet, this is the time to step up.

I came to C++Now by a strange road. I’ve known Jon for more than a year now and I’m not exactly sure how we wound up on Skype one Saturday afternoon. Like so many others, I didn’t meet him in person until last week. I was a member of the Planning Committee and helped pick the talks even though I had never been to the conference. I somehow volunteered to manage the near disaster of the closed hotel bar before ever having set foot in Aspen.

I’m grateful for both Jon’s friendship and the chance to give back to the community that has given so much to me.

I also owe a debt of gratitude to the Program Committee. It’s not easy work to decide who gets on the program and who doesn’t. It’s especially true when it’s someone new to the community and who doesn’t have a track record. Thank you all for the opportunity and the helpful feedback.

That’s a wrap for C++Now 2018 and this trip report. It went too fast and ended way too early. Whether I ever speak again at another conference or not, this past week will always be the first and the best. Thank you to everyone for making it an unforgettable week.

See you next year!