I just got home from the second conference I gave a talk at during September[1] and decided to write about my experiences while I am slowly decompressing.

NDC TechTown

At the start of September, I was at NDC TechTown, which is a relatively small conference in Kongsberg, Norway. There I gave my talk "Solve Hard Problems Quickly Using SAT Solvers" (video, slides[2]) for the first time. The slot I had was 1 hour, but speakers were supposed to aim at 45 minutes before Q&A[3]. I did fit my talk into the 45 minutes but then overran my slot because of a lengthy Q&A session. The story I am sticking with is that this shows people found the talk subject interesting.

Apart from giving a talk, I of course also watched a bunch of talks, and I want to mention 3 of them explicitly. The first one was the great keynote by Patricia Aas, "Elections: Trust and Critical Infrastructure", which was interesting in that Patricia managed to get meaningful changes for the Norwegian elections.

The second one was "Make your tests tell the story of your domain" by Anne Leandro and Mads Opheim. It suggested mixing human languages (in their case English and Norwegian) when naming things in your code, so that general programming is done in English (sort is still sort, getters start with get, etc.), but domain-specific parts are written/named in the language of the domain (in their case legal terms are written in Norwegian). This helps domain experts understand your code (and tests) better, and makes for easier verification of correctness. I am not sure I agree with their ideas[4], but it did make me think, which I believe is the best thing a talk can do.

The third one was "The Anatomy of an Exploit" by Patricia Aas, and I want to preface this by saying that it was a good talk and I would recommend it to most of my coworkers. At the same time, I kinda regret not going to a different talk in the same time slot. Why? Because there was a mismatch between my expectations and the contents of the talk, where I read the abstract in a different way than it was intended. This meant that I expected to go over the basics quickly and then look at a small modern(ish) exploit, but the talk pretty much fully overlapped with "Smashing the Stack For Fun And Profit".

The reason I am writing about this is that from talking with other CppCon attendees, a bunch of people ran into the same problem with various talks. This opens up a question, can we do something about it? My answer is that I have no idea. I don't think that speakers set out to make misleading abstracts, and while there is some incentive to make the abstract vague[5], people do not want to trick people into coming to their talks. There were some ideas along the lines of asking speakers for "sample slides" or providing attendees with the outline of the talk, but I do not think either of these really works.

All in all, NDC TechTown was great, and if you are in Europe, you should think about going there in 2020.

CppCon

In the second half of September, I was also at CppCon, which is by far the biggest C++ conference. This is its first year in the new venue in Denver, Colorado, and I cannot say that the new venue seems good.

Apart from some teething problems, like a bunch of presentation rooms having a terrible echo, that will hopefully get solved before the next year, the Gaylord Rockies have a serious problem of looking luxurious until you look closely. As an example, the bathroom counter in my room was lavish, but the walls to the other rooms were paper-thin, so they basically did not filter noise. I don't know about you, but I would rather have a boring bathroom counter and actual sound isolation between rooms. ¯\_(ツ)_/¯

As a bonus, the acoustics and sound isolation between different presentation rooms are also lacking, and I could often hear a speaker from a different room during a pause in the talk I was actually attending.

Anyway, I gave an improved[6] version of my talk "Solve Hard Problems Quickly Using SAT Solvers" (video, slides) on Thursday. I am not entirely happy with my performance (I was sick as a dog and dropped my presenter remote), but I had a couple of people come up to me during the rest of the conference and tell me it was great, so I think that in the end, the talk went quite well[7].

I also had a lightning talk about 3 features of Catch2 you should know, "Catching New Tricks" (video, slides), on Tuesday. Finding out that the lightning talks were in the biggest room in front of so many people stressed me out a little, but I think that the talk went well enough in the end.

As to talks I was at, apart from the different keynotes, I strongly recommend Miro Knejp's "Non-conforming C++: the Secrets the Committee Is Hiding From You". It was fun, fairly informative and Miro had an incredible gimmick for his talk that I could never pull off. Seeing Miro drop down behind the podium and emerge with a tinfoil hat was the single most memorable moment of CppCon for me.

I also recommend two talks about Unicode by Peter Bindels and JeanHeyd Meneide. The talks were "Unicode: Going Down the Rabbit Hole", which provided a history and background on the history of writing systems, text encoding and Unicode, and "Catch ⬆️: Unicode for C++23", which showed the current design for text encoding in C++ from SG16[8].

Other interesting talks I saw were "Abseil's Open Source Hashtables: 2 Years In" by Matt Kulukundis, who planted Hyrum Wright in the audience to provide interruptions at the right time, "TMI on UDLs: Mechanics, Uses, and Abuses of User-Defined Literals" by Stephen Dewhurst, which gave me some interesting ideas for terribly abusing UDLs in some throw-away codebase.

The last thing I want to say in regards to the talks is that I found it interesting (and sad), that even though the fact that speakers should not use laser pointer[9] was stated many times using many different channels, I still think that about 1/4 of talks I saw used them. So if you are reading this and might give a talk later, please DO NOT USE LASER POINTER. Either build highlighting into your slides, or use on-screen highlighting, such as with the Logitech Spotlight.


  1. When I sent in my talk to CppCon, I thought that CppCon will be
    in May. As it turned out, I mentally swapped around CppCon and C++Now. Ooops. ↩︎

  2. The link actually leads to the version of my slides given at CppCon. ↩︎

  3. I don't think many speakers actually hit that, but the conference sent out the email with this information literally the evening before the start of the conference proper. ↩︎

  4. Even if I did agree, I could not apply the idea to my own code. The domain experts for our product speak at least 5 different languages, so we have to use English as the lowest common denominator anyway. ↩︎

  5. AFAIK, it is very rare for a speaker to have the full talk ready when submitting an abstract. Given that, it is typical for the final talk and the initially planned outline to differ, as you find out that you need to add/remove some sections when working on the slides. As an example, in my 50 minutes, I cover only about 3/5 of the initially planned outline, because I have to explain the basics slowly to avoid losing my audience outright. This, in turn, incentivizes vague abstracts that cover both the initial, often overly ambitious outline, and the final more realistic contents. ↩︎

  6. The section with MKS constraints was improved with new diagrams and better explanation. ↩︎

  7. Since I am not a big fan of recycling talks, this talk is now essentially retired. ↩︎

  8. At least it was my impression that this design is what SG16 mostly agrees on. ↩︎

  9. There are two problems with laser pointers. The obvious one is that they will not be a part of the recorded video, so the talk will be much less comprehensible on video later. The less obvious one is that with some exceptions, all rooms had (at least) 2 projection surfaces, and laser pointer can only highlight things on one of them. ↩︎