NDC TechTown 2024
2024-09-09..2024-09-12
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]
who it's for
C++ developers, embedded software engineers, firmware engineers, systems programmers, kernel developers, test engineers, security engineers, safety-critical software engineers
topics
eBPF with libbpf and bpftool; unprivileged user namespaces; C++ object lifetimes; constexpr in C++23; Rust on nRF52; quantized TinyML inference; mutation testing with Cosmic Ray; TPM integration in the Linux kernel; SSA and phi nodes in compilers; splicing sockets with sockmap; path coverage analysis in gcc; test architecture and auto-triage
| title | author | length |
|---|---|---|
| The existential threat against C++ and where to go from here | Helge Penne | 45m |
Government agencies (NSA, CISA, White House) push for migration away from C/C++ toward memory-safe languages, citing systemic memory-safety failures; Google… | ||
| A bird's eye view of a compiler | Joakim Lier | 52m |
Overview of a compiler pipeline that parses source into tokens and an AST, lowers to IR, runs middle‑end analyses (constant folding, propagation, dead‑code… | ||
| Linux user namespaces: a blessing and a curse | Ignat Korchagin | 47m |
Unprivileged user namespaces let an ordinary UID map to root inside a namespace and then create mount, pid and network namespaces to run rootless containers… | ||
| C++ Under the Hood: (Internal Class Mechanisms) | Chris Ryan | 01h 26m |
Examines concrete C++ mechanics: object layout and why a vtable at offset zero makes base-to-derived casts work, how multiple inheritance produces adjusted… | ||
| Test architecture is a real thing | James Westfall | 53m |
Argues that test architecture matters by showing concrete choices: end-to-end tests on Neat’s embedded devices, a python-behave page object model that… | ||
| Contrasting Embedded Software Development for the Space Shuttle and the Orion MPCV | Darrel Raines | 01h 07m |
Shuttle flight software spans about 500,000 lines of code and reports fewer than a thousand defects over 35 years yielding roughly one defect per 400,000 lines… | ||
| Not your GrandParent’s C++ | Phil Nash | 55m |
A brisk history of C++ shows concrete changes: 13 years of stagnation end with C++11 modernization, the committee adopts a timed “train” model, and features… | ||
| Introduction to eBPF | Martin Ertsås | 50m |
Shows how to compile and load eBPF C with libbpf and bpftool, attach tracepoint and cgroup hooks, and communicate via a ring buffer and hash maps (example map… | ||
| Not getting lost in translations | Daniela Engert | 58m |
Describes a library that preserves compile‑time checks of std::format while allowing runtime language selection by compiling gettext PO/MO data into the binary… | ||
| Using Edge Machine Learning to save power and development time | Eirik Midttun | 45m |
Demo uses a Thingy:53 with an nRF5340 to run TinyML on raw 3‑axis accelerometer data sampled at 100 Hz in 5‑second windows, classifying fan speed and flagging… | ||
| Crash and test failure analysis with AI... no wait, ehm, with regexes! | Jan Wegger, Thomas Hanssen | 49m |
A homegrown regex-based classifier evolves from a 2011 shell script into a web service with about 10,000 commits that replaces unreliable automatic grouping… | ||
| Beyond unit tests | Oyvind Tonsberg | 41m |
Cisco Lysaker labs run a fully automated pipeline that builds each commit (about 70 artifacts, ~1 hour clean build, incremental faster) then books real… | ||
| Remote blinky on nRF52 using Rust | Eivind Bergem | 48m |
Builds a remote blinky on nRF52 with Rust using the radio at 2.4 GHz (IEEE 802.15.4 style) to send tiny commands between two boards; sets up two devices each… | ||
| Metal-In Test-Driven Development: A Dual-Target TDD approach | Fran Climent | 01h 00m |
Metal-In TDD shows a Dual-Target workflow that builds a portable BatteryMonitor in C for an 8-bit MCU by driving behavior with unit tests, test doubles and… | ||
| Mutation Testing in Python with Cosmic Ray | Austin Bingham | 57m |
Mutation testing tool Cosmic Ray mutates Python ASTs (via Parso), runs the real test command (usually pytest) and records results in SQLite; a demo runs 67… | ||
| Monadic Operations in Modern C++: A Practical Approach | Vitaly Fanaskov | 54m |
Uses C++23 std::expected and std::optional plus ranges and the TL expected implementation for older toolchains to replace error-code/boolean returns in a real… | ||
| A clean slate | Giles Chamberlin | 45m |
Company starts in 2012 to build a virtualised, distributed videoconferencing system sold into customer datacenters and ends up public on the Norwegian stock… | ||
| Path coverage in gcc | Jørgen Kvalsvik | 01h 01m |
GCC adds a new fpath-coverage option to emit GCOV data for prime path coverage aimed at GCC 15 (NASA-funded). It computes prime/simple paths across function… | ||
| Design Patterns - The Most Common Misconceptions (2 of N) | Klaus Iglberger | 47m |
Compares CRTP, C++23 explicit object parameters and std::variant with concrete code patterns and a 10,000‑shape benchmark (225,000 translate ops, GCC 13.2 /… | ||
| Why Iterators Got It All Wrong — and what we should use instead | Arno Schoedl | 31m |
Claim: C++ iterators mix two different semantics — elements and borders — which breaks adapter chaining (reverse, filter, transform) and makes base()… | ||
| Omg, how do I write software that isn't a ticking timebomb!? | Eivind Jahren | 43m |
Shows concrete results using Property Based Testing with the Python tool Hypothesis to generate inputs, shrink failures and find real bugs—example: a numeric… | ||
| Bootable applications - an introduction | Michael Odden | 01h 03m |
Builds and boots tiny UEFI applications from C and Zig using clang/LLVM + lld, produces PE32+ COFF executables and a bootable IMG that flashes to USB, runs… | ||
| An (In-)Complete Guide to C++ Object Lifetimes | Jonathan Müller | 58m |
Claims the C++ standard has mistakes and walks through concrete rules: when declarations, new/placement new, memcpy/bit_cast, or std::start_lifetime_as… | ||
| Memory Model: Get your shared data under control | Jana Machutová | 51m |
Covers C++20 memory model with concrete examples that build a hikers-and-lighthouse story to show when each primitive is appropriate: latch for one‑time joins… | ||
| The Two Memory Models | Anders Schau Knatten | 01h 02m |
Compares the C++ memory model to CPU models and shows concrete examples: making the ready flag an atomic with acquire/release turns the red (racy) arrows green… | ||
| Memory Safety: Rust vs. C | Robert C Seacord | 01h 01m |
Argues that government pushes for memory-safe languages overstate immediate benefits, noting a Ferine qualified Rust toolchain exists but is certified only for… | ||
| TPMs and the Linux Kernel: unlocking a better path to hardware security | Ignat Korchagin | 47m |
TPM adoption is low because apps must juggle resource managers, competing TSS stacks and privileged device access; this work shows a concrete path: use the… | ||
| My favorite (constexpr) data structures | Hana Dusikova | 49m |
A Clank interpreter models the constexpr abstract machine using an AP value (an arbitrary‑precision, variant‑style runtime value) and symbolic addresses, which… | ||
| Speedrun through Splicing Sockets with Sockmap | Jakub Sitnicki | 47m |
Shows how to bypass the kernel network path by wiring sockets together with splice() syscall alternatives and sockmap + BPF programs, loading sk_msg and sk_skb… | ||
| Unleashing 🦀 The Ferris Within | Victor Ciura | 01h 01m |
Microsoft ports DirectWrite core and ports parts of GDI to Rust, Windows boots with the Rust GDI pieces and all GDI tests pass while microbenchmarks show equal… | ||
| The Magic of a Trace | Theodor Thornhill | 59m |
Shows how to use Intel PT via perf and the Magic Trace toolchain to get full execution traces, not samples, and to spot exact causes like a 750 ms re‑auth… | ||
| Using vcpkg in anger | Martin Hořeňovský | 42m |
Three years of production use reveals concrete vcpkg pitfalls and workarounds: use manifest mode and always pin a baseline because built‑in baselines change… | ||
| Getting Started with Embedded Linux Security | Simon Goda | 59m |
Overview lists concrete defenses and checks: use fortify_source and GCC stack protectors plus ASAN or Valgrind for memory bugs, run checksec/ckkc to audit… | ||
| Core and other guidelines. The good, the bad, the... questionable? | Arne Mertz | 50m |
Compares C++ Core Guidelines to how teams actually apply them, showing concrete harms and fixes: rule of five causes needless boilerplate and copy/move advice… | ||
| C++ Horizons | Bryce Adelstein Lelbach | 53m |
Claims three concrete C++ changes will reshape code: reflection/injection that extracts metaobjects, builds token sequences, queues injections and… | ||
| Exploring Dependency Injection and Reflection in Modern C++ | Mikhail Svetkin | 56m |
Shows concrete techniques to inject and introspect dependencies in C++20: implements any_settings type erasure to mix template and inheritance, uses boost::pfr… | ||
| Demystifying Process Address Space: Heap, Stack, and Beyond | Piotr Wierciński | 59m |
Linux x86 process layout shows 48-bit virtual addresses split into user vs kernel space, kernel uses KPTI for isolation, and ASLR randomizes most mappings… | ||
| How To Use `constexpr` In C++23 | Jason Turner | 01h 00m |
C++23 widens what can run at compile time and the rules matter: you cannot deallocate memory not allocated during constant evaluation, use reinterpret_cast, or… | ||
| Green Programming | Hendrik Niemeyer, Tina Ulbrich | 51m |
Experiment implements the Hunt seat-allocation algorithm in 14 languages and measures energy and CO2 with codecarbon emissions tracker on an Intel Core i7 with… | ||
| Hello Operator: Making The Call for C | Björkus Dorkus | 01h 05m |
Proposal to add C operators by decoupling an explicit operator-to-function binding (operator declarations that map to normal C functions) and using exact type… | ||
| Locknote: Local Reasoning in C++ | Sean Parent | 01h 09m |
Argues that local reasoning—proving a function or class correct from its API alone—scales software reliability by enforcing precise preconditions… | ||
| The Carbon Language: Road to 0.1 | Chandler Carruth | 01h 07m |
Carbon targets C++ interop as its 0.1 MVP by packaging a clang/libc++ toolchain and shipping nightly builds that already compile and run examples (a Prime… | ||
| Naming is Hard: Let's Do Better | Kate Gregory | 01h 02m |
Explains why many C++ names (RAII, partial_sort_copy) confuse intent and shows concrete fixes: rename a bloated set_status into approve and deny, prefer… | ||
| Cache friendly data + functional + ranges = ❤️ | Björn Fahller | 57m |
Shows a compact C++23 library (built with clang 18 and measured with perf) that replaces a vector-of-structs with structs of vectors and a templated table API… | ||
| Deep dive with Blueye underwater drones | Jonas Follesø | 01h 01m |
Blueye builds lightweight tethered inspection ROVs that weigh under 11 kg, dive to 300 m, and reach customers in 60+ countries with over 1,250 units shipped… | ||
| Correct Use of Integers in Safety-critical Systems | Robert C Seacord | 58m |
Argues that MISRA and AUTOSAR rules requiring replacement of standard integers with exact-width typedefs make code less safe and less portable, showing… | ||
| Keynote: How To Address 7 Major C++ Pain Points with Tools | Anastasiia Kazakova | 57m |
Covers concrete fixes for the top C++ pain points from the C++ Foundation survey: package management via vcpkg and Conan, shortening long builds by using an… | ||
| nothing matches | ||