NDC TechTown 2023
2023-09-18..2023-09-21
Kongsberg, Norway
[NDC TechTown 2017, NDC TechTown 2018, NDC TechTown 2019, NDC TechTown 2020, NDC TechTown 2021, NDC TechTown 2022, NDC TechTown 2023, NDC TechTown 2024, NDC TechTown 2025]
| title | author | length |
|---|---|---|
| Keynote: Safety and Security: The Future of C and C++ | Robert C Seacord | 58m |
Becomes WG14 convenor and catalogs concrete failures and fixes: a common compiler optimization simplifies pointer+len checks into Len<0 and removes bounds… | ||
| How to start a modern C++ project? | Mikhail Svetkin | 59m |
Walks through creating a working modern C++ project with concrete choices: uses CMake presets to standardize configure/build/test/package steps, adds vcpkg… | ||
| Tips and Tricks for Becoming a CMake Master | Hans Vredeveld | 59m |
Shows how to ship a self-made find_package module for Oracle (targets Oracle 12, GCC 10, CMake 3.18) and a reproducible pipeline that runs Oracle ProC to… | ||
| Standard C++ Toolset | Anastasia Kazakova | 55m |
C++ tooling is finally converging: clang as language engine now provides compiler, LSP, clang-tidy and clang-format (note: clang-format uses a fuzzy parser and… | ||
| An engineer's guide to Linux Kernel upgrades | Ignat Korchagin | 45m |
Linux kernel bugfix branches produce weekly bugfix releases; on 5.15 there are ~132 weekly updates with ~50% exceeding 100 commits, 23 >200 and 10 spikes >500… | ||
| Safer C++ with MISRA-C++ 2023 | Peter Sommerlad | 01h 05m |
MISRA C++:2023 gives concrete rules for C++17-era code: mandatory static-analysis checks, sanitizer use, and unit tests; it limits function calls in range-for… | ||
| Keynote: Steps to Wisdom | Kate Gregory | 52m |
Seasoned developers adopt the mindset this should work and push past stuck points by reading compiler errors, searching, asking on include Discord or emailing… | ||
| Reintroduction to C | Olve Maudal | 01h 02m |
C is framed as the right tool for embedded firmware, OS and language runtimes, with concrete rules and gotchas: C99 guarantees implicit return from main… | ||
| How symbols work and why we need them | Anders Schau Knatten | 01h 02m |
Shows how ELF on Linux implements C/C++ linkage with three symbol tables (symtab, dynsym and debug), how relocations let the linker fix calls, and why the… | ||
| Return Oriented Programming, an introduction | Patricia Aas | 57m |
Explains how to get code execution on non-executable stacks by converting C shellcode into inline assembly then into a ROP chain, using 32-bit addresses to… | ||
| C is So Back: Unbreaking the Charter | Björkus Dorkus | 01h 09m |
Argument: the C committee compares each addition against the charter and often finds tradeoffs between no invention without exception and practical need. C23… | ||
| How hacking works | Espen Sande-Larsen | 01h 06m |
Shows concrete exploits: a return‑oriented programming demo that hijacks control flow with GDB, a printf format‑string leak that reveals remote environment… | ||
| C++ Coroutines from scratch | Andreas Fertig | 01h 06m |
Starts from plain functions and implements working coroutines: a chat generator with promise methods yield_value/return_value and await_transform, an… | ||
| Design Patterns - The Most Common Misconceptions (1 of N) | Klaus Iglberger | 43m |
Argues that common confusions are practical not theoretical and demonstrates C++ fixes: a Bloch style fluent constructor uses strong types plus variadic… | ||
| Template Meta-State Machines, Madness and Shannon | Jason McGuiness | 01h 08m |
A C++ library implements an extreme template meta-state machine using computed goto, an unordered_tuple of transition wrappers and a generated perfect hash… | ||
| A C++ journey from old to modern - Modernising ObjectiveFrame | Jonas Lindemann | 01h 03m |
Code originally written for C++98 and SGI/Windows OpenGL is modernized into a single cross-platform build that compiles on Windows, Linux and macOS, replaces… | ||
| Playing Video Games One Frame at a Time | Ólafur Waage | 59m |
Shows how programmatic play actually works: runs Doom demo files deterministically to approval-test a C++ refactor, executes dozens of demos in CI and compares… | ||
| C++ MythBusters Strike 2 | Victor Ciura | 01h 08m |
Makes-or-break specifics: modules aren’t yet a universal win—real-world compiler support is uneven so the “restructure and huge build speedups” claim is… | ||
| Offline first computing in an online world | Ørnulf Staff | 01h 03m |
Claims that combining CRDT + DDS yields truly distributed offline‑first apps and demonstrates it by wiring Automerge over a brokerless DDS network. Uses a… | ||
| Secure development with C++ - Lessons and techniques | Helge Penne | 50m |
C++ projects get concrete advice: enable all warnings and Werror, run clang‑tidy, run sanitizers and fuzzers in CI (unit and integrated tests), and keep… | ||
| Most Malleable Memory Management Method | Björn Fahller | 01h 03m |
Demonstrates using C++ PMR to cut allocation churn and tune locality: baseline run records 133,540 allocations with heaptrack, then swapping to an… | ||
| So, you want to use C++ Modules ... cross-platform? | Daniela Engert | 01h 00m |
Shows that C++ Modules work cross‑platform but with caveats: msvc is broadly usable, clang 17 and GCC lag and show BMI consistency issues and crashes during… | ||
| git beyond pull & push | Jørgen Kvalsvik | 01h 03m |
Practical git techniques for real workflows: staging with git add -p to create focused commits, git rebase -i plus fixup/--autosquash to reorder and squash… | ||
| Rethinking Binary Search: Improving on a Classic with AI Assistance | Andrei Alexandrescu | 57m |
Proposes a concrete rewrite of STL binary-search primitives: implements a bounds-leaning search (cut 1/2 then 1/4) plus a left-leaning upper bound and optional… | ||
| C++hatGPT: How AI Tools Impact Your Life as a Systems Programmer | Andrei Alexandrescu | 01h 01m |
Argues that large language models train by next‑word prediction and use continuous vector embeddings, which lets them synthesize novel but semantically… | ||
| Locknote: How Badly Do We Want Correct Compilers? | John Regehr | 53m |
Compiler testing work uses differential fuzzing and program synthesis to find and fix real miscompilations, reporting hundreds of bugs and shifting compiler… | ||
| Image processing with Halide | Svenn-Arne Dragly | 57m |
Zivid rewrites an OpenCL structured‑light pipeline in Halide and keeps the same algorithm while moving scheduling into the library, cutting a baseline CPU step… | ||
| What is Linux kernel keystore and why you should use it in your next application | Ignat Korchagin | 55m |
Linux provides a kernel key retention service that stores keys outside process memory and exposes them via syscalls: ADD_KEY to add blobs and request_key to… | ||
| C++ Features You Might Not Know | Jonathan Müller | 53m |
Covers concrete surprises: a[b] == b[a] and why raw-array indexing is commutative; how unary + performs integral promotion, triggers pointer decay and unary +… | ||
| Don’t Throw Away the Key: What Developers Should Know about Encryption | Liz Moy | 51m |
Walks through which ciphers to avoid and which to prefer: Triple DES and RC4 have known vulnerabilities, AES is acceptable if the cipher mode is chosen… | ||
| Our Adventure building a massively scalable mixed C++ and Rust remote compiler cloud | Damien Buhl | 50m |
Tipi.build runs remote C++ (and some Rust) builds on Docker Swarm and multicloud machines, claiming 500-core build hosts and caching that shrinks many 10 GB… | ||
| Leveraging the power of C++ for efficient machine learning on embedded devices | Adrian Stanciu | 39m |
Shows how C++ with TensorFlow Lite runs image models on a Raspberry Pi Model B (4-core, 4 GB) using MobileNet for image classification and ResNet50 transfer… | ||
| The art of living with broken things | James Westfall | 55m |
Claim: end-to-end tests have a different failure policy than unit tests—failing or flaky E2E tests often provide valuable, actionable signal. Built an… | ||
| Concurrency Improvements in C++20: A Deep Dive | Rainer Grimm | 01h 00m |
C++20 adds concrete primitives and demos: atomic wait/notify and atomic<shared_ptr> so pointer ops avoid races, compare_exchange_strong loop is used to… | ||
| In-memory database with indices from scratch | Hana Dusikova | 55m |
Shows a practical C++ implementation that layers co_await-based fetch and a tiny scheduler on top of libcurl multi API to run many downloads in one thread… | ||
| Why Data Access Patterns Have Always Mattered | Jason Turner | 56m |
Argues that memory layout and access order still drive performance, backing it with a 6502 assembly comparison where a linked list costs 49–64 cycles vs 43–57… | ||
| Out-of-order execution - what can it do for me? | Patrick Schittekat | 01h 00m |
Explains how modern x86 CPUs decode instructions into microops, use a reorder buffer and memory-disambiguation to run loads/stores out of order, and how that… | ||
| Understanding And Mastering Flat Containers | Vitaly Fanaskov | 47m |
C++23 adds std::flat_ containers implemented as sorted contiguous sequences; the presenter builds naive versions and compares them to std::map and Boost… | ||
| nothing matches | ||