NDC TechTown 2025
2025-09-22..2025-09-25
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: Rust is not about memory safety | Helge Penne | 46m |
Argument: Rust’s appeal is not just memory safety but that the type system and APIs make incorrect programs hard to express. Uses concrete features: Result and… | ||
| More Speed & Simplicity: Practical Data-Oriented Design in C++ | Vittorio Romeo | 01h 07m |
A live particle demo refactors an OOP design (vector<unique_ptr<Entity>, virtual dispatch, heap allocs) into data‑oriented layouts (separate vectors for… | ||
| The Real Problem of C++ | Klaus Iglberger | 57m |
Argues the real problem is people not the language: widespread projects still use legacy patterns so safety features sit unused, creating a guessed 10% bubble… | ||
| Real-time Safety — Guaranteed by the Compiler! | Anders Schau Knatten | 01h 03m |
Shows how Clang 20 Function Effect Analysis plus RealtimeSanitizer let the compiler enforce realtime constraints: mark functions non-blocking (or… | ||
| Rust at Volvo Cars | Julius Gustavsson | 53m |
Volvo Cars ships an ECU fully written in Rust for the SPA2 EV platform, developed by 6–10 engineers into production for Polestar 3 in 2024. Firmware runs on a… | ||
| Block-Based Parallel Programming | Bryce Adelstein Lelbach | 56m |
NVIDIA presents cuTile, a block (tile)-based kernel model compiled to Tile IR that JITs Python kernels (C++ API coming) and maps array-centric code to GPU… | ||
| Parallel Algorithms: Work Smarter, Not Harder | Jana Machutová | 43m |
Adds one execution-policy parameter to use C++17 parallel algorithms and the library handles thread management; performance wins appear only on large data and… | ||
| Performance engineering - being friendly to your hardware | Ignas Bagdonas | 01h 11m |
Shows how commodity hardware actually behaves: DRAM is a leaking capacitor array with ~tens of nanoseconds for row operations and one kilobyte row granularity… | ||
| Adventures in Serialization: A Flexible Approach for Embedded Systems in C++ | Jørn Bersvendsen | 57m |
Built a C++20 serialization library that actually implements dozens of real legacy encodings — 5-bit integers, 3-byte floats, B64 blobs and packed bitfields —… | ||
| Faster programs with your compilers autovectorization feature | Ivica Bogosavljevic | 42m |
Explains how compilers emit SIMD instructions, shows Clang/GCC/MSVC vectorization-report flags and why cost model indicates not beneficial appears, and… | ||
| Embedded Rust in Production | Ulf Lilleengen | 55m |
Akiles runs Rust on battery-powered access devices for over four years and has 25,000 devices in the field, using the embassy executor for cooperative async… | ||
| Extending MicroPython with Rust: Two Worlds Collide | Jan Matějek | 54m |
MicroPython firmware (≈65,000 lines) on STM32-class devices with ~192–256KB RAM meets Rust to regain speed and reduce allocations; proto codec rewritten in… | ||
| How to declare a constant in C++ | Mikhail Matrosov | 52m |
C++ constants behave differently at compile time and runtime: prefer constexpr whenever possible because it enables compile-time folding and removes duplicate… | ||
| OTA Updates in the Wild: Lessons from the Field | Jana Perić | 43m |
Over-the-air updates need atomic, interruption‑resilient installs with crypto signing, rollback and observability; common choices are a full-image AB scheme… | ||
| Dynamic memory allocation challenges in safety critical systems | Xavier Bonaventura | 57m |
Explores how ISO 26262 and recent MISRA/Autosar guidance forbid dynamic allocation after init and why: demos use readelf, objdump and GDB plus GitHub examples… | ||
| A bird's eye view of a parser | Joakim Lier | 52m |
Explains how parsing actually works by building the data structures: uses Thompson's construction to make finite state machines for regular languages… | ||
| C++20 Modules, 5 Years Later | Mikhail Svetkin | 01h 08m |
C++20 modules cut compilation work by prebuilding interfaces so repeated preprocessing and parsing are avoided, showing 20–70% faster results in the… | ||
| Comprehensive Testing of Embedded Software | Eivind Bergem | 55m |
Argues that embedded Rust code should be split into 90% hardware-agnostic logic and a tiny hardware layer so most behavior is unit-testable on laptop CI. Shows… | ||
| Five Issues with std::expected and How to Fix Them | Vitaly Fanaskov | 46m |
C++ std::expected currently allows value and error of the same type, mixes monadic and procedural APIs, lacks customization points for failed access, and… | ||
| How Debuggers Work | Sy Brand | 59m |
Breakpoints work by mapping source lines to machine addresses via DWARF line tables and then stopping the process either by writing an 0xCC int3 software… | ||
| When to give up, and how? | Björn Fahller | 47m |
Programs that silently mask bugs cause worse failures than crashing; corrupting user data is the real horror. Use assertions and contracts where possible, and… | ||
| "Just switch the compiler", they said. | Arne Mertz | 52m |
Switching a compiler takes months not minutes and requires new dev environments, CI nodes and rebuilt binaries for every dependency, with real failures like a… | ||
| What REALLY happens when a computer does "Nothing" | JF Bastien | 01h 04m |
Survey of real NOPs across hardware and software shows concrete results not platitudes: CPUs encode many different no-ops, ARM uses a hint 0 alias and a… | ||
| Composite Array Types in C | Robert C Seacord | 37m |
C’s composite-type rules cause surprising undefined behavior when array sizes come from runtime or unevaluated expressions: unevaluated VLA size creates UB… | ||
| How to Change the World | Kate Gregory | 01h 01m |
Concrete playbook for making other people change: pick one precise goal, map who must change versus who you can actually influence, then shrink scope or… | ||
| Implicit Conversions Considered Harmful | Jason Turner | 01h 02m |
Implicit conversions create surprising behavior and hidden costs: converting string literals to std::string makes temporaries and extra copies, pair-to-pair… | ||
| The Past, Present and Future of Programming Languages | Kevlin Henney | 01h 10m |
Languages evolve slowly and the mainstream set stays surprisingly stable: TIOBE/RedMonk show a top five unchanged across years and most popular languages… | ||
| Dream Machines and Walled Gardens | Anders Norås | 55m |
Timeline shows coinage of the word hypertext in 1965 and a working prototype called the Jot editor that stores every edit as an append-only stream; an… | ||
| Path coverage in gcc | Jørgen Kvalsvik | 37m |
Implements prime path coverage in GCC and lands in GCC 15 with a new -fpath-coverage instrumenter that emits .gcno and human- and machine-readable reports… | ||
| Coverage, quality, and Goodhart's Law | Jørgen Kvalsvik | 58m |
Measures collapse under Goodhart but coverage used well finds real problems: using GCC 15 and zcov on a borrowed binary search shows 15/24 paths covered, a… | ||
| The role of new languages in the Future of the Qt Ecosystem | Cristián Maureira-Fredes | 55m |
A new effort called Qt Bridges claims to unlock Qt UI features for multiple languages without traditional C++ bindings by providing language-specific bridges… | ||
| Rustly typed APIs; ... JSON RPC with Rust, Procedural macros and a DSL | Mathias Myrland | 31m |
Procedural macros parse a custom DSL to generate JSON‑RPC client and server Rust code: typed traits, authorization checks, OpenRPC schemas and a Tower… | ||
| Unlocking Performance Through Reverse Engineering | Patrick Schittekat | 01h 04m |
Reverse engineering using Google microbenchmarks, perf performance counters and raw perfmon events uncovers concrete CPU limits: the Meteor Lake performance… | ||
| Test automation with Python Behave without BDD | James Westfall | 54m |
Argues that Python Behave is a practical end-to-end automation framework even without BDD and shows production use at Neat over four years to test… | ||
| Profiling with Heaptrack and Hotspot on Embedded Linux | Milian Wolff | 01h 02m |
Shows concrete workflows: use Hotspot + perf (perf record --call-graph dwarf -z ...) to find a string-hashing hotspot that yields a ~4× speedup and a… | ||
| Swarmfare - When the shit hits a thousand fans | Jan Dyre Bjerknes | 44m |
Experiments use 7 cm EPFL robots with a binary light sensor and tiny reactive rules that produce reliable phototaxis through emergent aggregation within… | ||
| The Code is Documentation Enough | Tina Ulbrich | 50m |
Argues that code must express intent so compilers and humans catch bugs: demonstrates renaming a weighted‑average implementation, replacing a raw loop and… | ||
| Introduction to Bazel | Xavier Bonaventura | 01h 01m |
Bazel claims fast, correct builds by hashing artifacts up front, running actions in a file‑system sandbox and caching intermediates locally and remotely, with… | ||
| War story from the build system trenches: Integrating Bazel and Testwell CTC++ code coverage | Johan Herland | 56m |
Integrates Bazel with Testwell CTC++ by wrapping CDC++ with per-compilation hooks that rewrite timestamps, absolute sandbox paths and fingerprints so… | ||
| Eliminating bugs: testing is not enough | Giles Chamberlin | 01h 00m |
Claims that testing alone fails because tests don't scale and error propagation loses information; concrete bug: a SIP-style address with a port >65535 travels… | ||
| The joys and sorrows of portable, cross-platform 3D graphics in Qt 6 | Laszlo Agocs | 01h 02m |
Qt 6 replaces a tight OpenGL dependency with a portable stack that renders Qt Quick and Qt Quick 3D via Vulkan, Metal, Direct3D11/12 and OpenGL and compiles… | ||
| Knockin' on Header's Door: An Overview of C++ Modules | Alexsandro Thomas | 58m |
C++20 modules are now usable but messy: named modules, header units, global fragments and module partitions compile on GCC 15, Clang and MSVC in the tested… | ||
| Practical TSN; using NetChan for distributed PoC | Henrik Austad | 55m |
NetChan is a small C library for Linux that wires TSN into prototypes using PTP, SRP, MQ prio, CBS and the earliest-transmission-first / launch-time hooks on… | ||
| Good Bye Electron, Hello Rust + Tauri! | Andreas Lillebø Holm | 01h 06m |
Squarehead replaces Electron with Tauri v2.25 and a Rust backend, claiming much smaller bundles (Electron example ~263 MB), lower memory use, and stricter… | ||
| CMake — From Basics to Building | Petr Kmoch | 01h 01m |
CMake 3+ usage principles with actionable rules: explains the distinct configure vs generate phases so configuration logic never depends on build-time choices… | ||
| Building C++: It Doesn't Have to be Painful! | Nicole Patricia Mazzuca | 45m |
reMarkable rewrites a monorepo into multiple repos and ships a CMake helper called rho CMake library that automates platform handling, feature flags… | ||
| Cryptographic Side-Channels on Embedded Devices | Tjerand Silde | 01h 02m |
Embedded devices leak timings, power and EM so that single power trace reveals whole RSA key when using textbook square‑and‑multiply; adding dummy branches can… | ||
| Towards Correctness, Safety and Security in C++26 | Daniela Engert | 01h 02m |
C++26 pushes concrete changes: about 90 historical undefined-behavior categories get reclassified so compilers and the built-in constant-evaluator can diagnose… | ||
| Will your program still be correct next year? | Björn Fahller | 56m |
Implementing a words-per-count histogram, the code evolves from manual prints to automated assertions and then to real frameworks: doctest, Catch2, and… | ||
| Rust/C++ Interop: Carcinization or Intelligent Design? | Victor Ciura | 01h 02m |
Claim: general-purpose high‑fidelity interop has not yet been achieved. Survey covers C as the duct‑tape route and tools: bindgen/cbindgen (source‑gen C FFI… | ||
| Thinking Outside the Box – Social Sustainability in Tech Education & Recruitment | Eskil Domben | 57m |
GET Academy runs a nonprofit, evidence-backed pipeline that trains nontraditional candidates through a 20-week core program (HTML/CSS/JavaScript from day one… | ||
| nothing matches | ||