Trip report: NDC Techtown 2024

Trip report: NDC Techtown 2024

September 15, 2024

This year’s Techtown conference in Kongsberg is through, and I wanted to do a trip report of sorts. There were ~400 attendees, the highest attendance yet, and an all-around fantastic atmosphere. I learnt a lot and had the privilege of striking conversations with many brilliant people, on diverse topics such as language design, compiler development, compiler features, embedded constraints, programming techniques, and I am already excited for next year. The programme was superb and I cannot think of a single slot where which talk to attend was an obvious choice. These are the ones I went to and a few thoughts on them.

It all opened with Anastasia Kazakova’s keynote on addressing language pain points with tooling. I’m happy this year’s keynote was on tooling considering my very own talk this year was on the new prime path coverage feature in GCC, and it certainly set the right tone for the conference as far as I am concerned. It is very impressive what tools can do, even in a language like C++, when given enough understanding of the language and environment. I am not yet personally convinced of the autocomplete family of features, but there is without a doubt real benefits to instant feedback.

I went to see Robert Seacord’s talk on the correct use of integers in safety-critical systems. His talks has changed my programming before, and I generally support his position of almost always preferring standard integer types over always using intN_t. That, sadly, meant missing Hana’s talk on her favourite data structures, but she was kind enough to give me a rundown later plus showing off her brilliant visualisations. I recommend watching the talk just for that. It is a good primer on data structures (as in available library implementations) as well as computer science, too. After a few chats I apparently also missed out by not attenting Piotr Wierciński’s talk Demystfying process address space: Heap, Stack, and Beyond.

My own talk, Path coverage in gcc was up next, where I made a case for measuring prime path coverage, and how to do so using the upcoming GCC feature. It was well received with a nice Q&A, which is really all I can ask for. It also gave me the chance to be approached by many throughout at the hallway track with even more questions and some genuine insights. Good stuff.

Robert Seacord had another talk, this time reflecting on the state of C, C++, and Rust (and other languages, really, but Rust was the big one) for safety critical systems. I found it particularly interesting as it addressed some of the practical challenges when looking to replace C and C++ in the industry. Tooling and tooling experience shows up again, as well as the mountains of existing code, and neither is odd considering C’s 40 year head start. Unfortunately, this meant missing both Martin Ertsås and Björn Fahller, but that’s how it is sometimes. I am happy the talks are recorded.

Darrel Raines of NASA had a fabulous talk on the realities and constraints of embedded development for space flight. Software and computers have been a part of their missions since day one, and in some cases very modest hardware in a hostile environment where failure to perform correctly can be fatal, and replacing and upgrading can be extremely difficult. For one, it makes you appreciate getting things just right, and also appreciate the discipline and process that makes it happen.

Day two opened with JeanHeyd Meneid’s talk on adding operator overloading for C. I think it is an interesting proposal and I am certainly not opposed to operators, and the proposed solutions seem to address the common criticisms. It’s neat, too, because it really just feels like a beefy macro system and not overly magical, but the big question is whether or not the committee will actually accept it. I think my main worry is that if it does get voted in it will never really be used because 1. people will also target older standards and 2. the programs and domains that benefit the most from operator overloading (which C already has, anyway) aren’t usually written in C anymore.

Theodor Thornhill did a talk on performance tracing and application debugging using (processor built-in) tracing rather than sampling. He showcased it both for guiding his Zig program for the 1 billion row challenge, as well as finding a real performance problem in a distributed application. I found the latter particularly interesting. I really wanted to see Tina Ulbrich and Hendrik Niemeyer’s talk on green programming, too, and look forward to the recording.

I rounded up the talks with two talks by young, first-time speakers, Paulo Martinez’ and Joakim Lier’s talks on binary size and compilers respectively. The talks were quite enjoyable and I am sure they will both keep on giving excellent talks in the coming years.

Finally, there was Sean Parent’s locknote on local reasoning in C++. Communication is probably the most important aspect when programming and designing interfaces, and he is very much on point in that just poor signatures alone prohibit local reasoning. I would recommend this talk to anyone, if anything just to freshen up on the implications of various parameter types and qualifiers.

Before the main conference event I did the two-day training on git with an excellent group of students. They were curious, inquisitive, and quick, and we spent two whole days training on how to better leverage git when programming We went over techniques and philosophy when crafting commits, merging, history rewriting, cherry-picking, log querying, transports, and more.

The Oslo C++ User Group upheld the tradition of having a meetup the day before the conference, and this year we got to do a book launch – Anders Knatten’s “C++ Brain Teasers”. There was a fun interview session with him and Olve Maudal, and we were treated with a couple of puzzles. This was interesting and educational as is tradition.

That wraps up the trip report for Techtown 2024, and now beings counting days until next year’s event.