NDC TechTown 2019
2019-09-02..2019-09-05
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 |
|---|---|---|
| Elections: Trust and Critical Infrastructure | Patricia Aas | 58m |
Norway now requires a manual preliminary count of paper ballots and treats voting systems as national security under the new law, yet no national process… | ||
| The TANDBERG Way | Olve Maudal | 01h 07m |
Tandberg grows from 1990 to a billion-dollar business with 50% market share and gets acquired by Cisco for 19 billion NOK (~$3.3B). Engineering builds an XC90… | ||
| Combining C++17 Features | Nicolai M. Josuttis | 59m |
Shows concrete C++17 recipes: use compile-time if plus if-with-init and scope_lock to lock zero or many mutexes without deadlock; use class template argument… | ||
| C++: λ Demystified | Andreas Fertig | 57m |
Demonstrates how lambdas compile by using C++ Insights to show the closure class, call operator, and conversion to a function pointer for stateless lambdas… | ||
| The Most Average Function There Is | Andrei Alexandrescu | 59m |
Builds a genuinely single-pass generic mean that picks sum and division types per element kind (signed vs unsigned, integral vs fractional), detects sequences… | ||
| C++ Concepts for Developers | Hubert Matthews | 54m |
C++20 adds concepts as compile‑time constraints on template parameters that check whether expressions compile but cannot enforce semantic axioms (cannot prove… | ||
| C++ Modules and Large-Scale Development (Part 1) | John Lakos | 01h 01m |
Argues that C++ modules change architecture more than speed, claiming modules must support incremental migration, interoperability with headers, and identical… | ||
| C++ Modules and Large-Scale Development (Part 2) | John Lakos | 01h 13m |
Argues that allocator-aware infrastructure yields major real-world wins: measured examples include a companywide ~20% speedup and large reductions in memory… | ||
| C++ in containers | Marc Goodner | 59m |
Shows how C++ services run in containers end to end: a C++ OpenCV face detector called from a Node.js site behind an Nginx proxy, built with Docker multi-stage… | ||
| Model Based SW Engineering: a success story from development of the Joint Strike Missile | Trygve Røste, Tormod Ambli | 54m |
Trygve Røste & Tormod Ambli
Missile systems are complex embedded systems with demanding requirements related to both product and process. With development… | ||
| Generators, Coroutines and Other Brain Unrolling Sweetness | Adi Shacham Shavit | 56m |
C++20 coroutines produce lazy generators that let serial code yield values on demand; examples show an iota infinite generator, a spiral generator producing… | ||
| How I learned to love Ada as a C++ developer | Maya Posch | 01h 00m |
Argues Ada yields clearer, safer low‑level code and is often shorter: a hand‑written command‑line parser ports from C++ 176 vs 136 lines and runs; Ada’s… | ||
| Developing a missile simulator | Arnstein Tinjar | 49m |
KDA Missile Division builds a simulator that runs actual missile operational software (NSM/JSM) inside a synchronized hybrid simulator + discrete event core… | ||
| How did Linux become a mainstream embedded operating system? | Chris Simmonds | 43m |
Linux shrinks and ports: early wins are a few-hundred-kilobyte busybox, MTD drivers plus JFFS/JFFS2 for flash, and ubiquitous u-boot bootloaders, which let… | ||
| From circuit board design to finished product: the hobbyist’s guide to hardware manufacturing | Sebastian Roll | 42m |
Build of a handheld programmable gamepad with Wi‑Fi/Bluetooth, touch screen, microphone, speaker, joypad, buttons and sensors uses an ESP32 MCU, BME280 env… | ||
| A Short Life span - For A Regular Mess | Victor Ciura | 57m |
Argues that std::span arrives from the GSL to replace pointer+length pairs but ends up a non-owning borrow type with surprising semantics: copy is shallow… | ||
| Using Android as OS for a single purpose system | Martin Ertsås | 43m |
Built a telepresence endpoint using AOSP as the OS: development uses Android Studio and virtual devices, JNI for C/C++ HDMI and driver hooks, and a custom… | ||
| How to build Python-C++ libraries | Jørgen Kvalsvik | 49m |
Explains how to produce redistributable Python wheels for C++ extensions by using scikit-build + CMake to control compiler flags and dependencies, CI… | ||
| The Hitchhiker's Guide to Faster Builds | Viktor Kirilov | 01h 00m |
C++ is known for things such as performance, expressiveness, the lack of a standard build system and package management, complexity and long compile times. The… | ||
| Storage Duration and Linkage in C and C++ | Dan Saks | 58m |
Explains why names are resolved per translation unit and how the linker uses external linkage to merge definitions; shows that extern without an initializer is… | ||
| Developing the Bloomberg Terminal -- Local performance & measurement techniques | Paul Williams | 01h 04m |
Bloomberg Terminal combines a C++ data layer with embedded Chromium/V8 to handle ~10–50k updates/sec across 100–200 windows; the pipeline uses a compact… | ||
| HiMake - the build tool that builds the Kongsberg missile software | Arne Førlie | 46m |
HiMake is an enterprise build system used since 2002 to compile Kongsberg missile software; it generates native makefiles from concise HMK package descriptions… | ||
| Securing the Connected Car | Mirza Krak | 43m |
2015 Jeep Cherokee researchers chain a remote compromise from Wi‑Fi to cellular by exploiting a predictable Wi‑Fi key (unit boots to Jan 1 2013 time window)… | ||
| "Allegro" Means Both Fast and Happy. Coincidence? | Andrei Alexandrescu | 55m |
Takes std::sort (GCC baseline) on 1M random doubles, replaces the small-range routine with a custom heapified insertion: a faster make-heap, branch elimination… | ||
| Anchored Metadata | Austin Bingham | 55m |
A tool called spor externalizes code metadata into separate files and stores topic+context+offset for each anchor, then realigns anchors to edited source using… | ||
| Modern techniques for keeping your code dry | Björn Fahller | 51m |
Shows how to build zero-cost abstractions in modern C++ using fold expressions, constructor template argument deduction and deduction guides, lambda factories… | ||
| Containers unplugged: Linux namespaces | Michael Kerrisk | 54m |
Walks through concrete namespace effects and commands: shows the /proc//ns inode identifiers, uses unshare + mount /proc demo to prove PID namespaces need a… | ||
| Containers unplugged: understanding user namespaces | Michael Kerrisk | 54m |
Explains that user namespaces let a process be UID 0 inside a namespace while remaining an unprivileged UID outside, with 38 capabilities split into… | ||
| C++ Smart Pointers - Usage and Secrets | Nicolai M. Josuttis | 01h 02m |
Compares shared_ptr and unique_ptr with concrete tradeoffs: make_shared saves one allocation and is usually faster but can keep the combined control block… | ||
| C++ Code Smells | Jason Turner | 56m |
Counts about 748 best-practice rules but narrows to concrete smells and fixes: construction vs assignment leads to needless temporaries but modern GCC9 often… | ||
| "New" Features in C | Dan Saks | 01h 00m |
Many C projects still target C90 but newer standards actually add usable features and important portability traps. C99/C11 introduce fixed-width and "at least"… | ||
| Compile-Time Regular Expressions | Hana Dusikova | 01h 03m |
A C++20 library that parses and compiles regular expressions at compile time using constexpr/compile-time strings, producing finite automata embedded in the… | ||
| Locknote: The Internet of Pwned Things | Troy Hunt | 37m |
If it connects, it can be pwned! As much as we may love IoT, it introduces all new vulnerabilities in places we've never before seen them. We're collecting… | ||
| Overview on the Synthesis of Beyond Budgeting, Open Space, Sociocracy & Ag | Jutta Eckstein | 01h 00m |
Argues that company-wide agility requires combining Beyond Budgeting, Open Space, Sociocracy and Agile into a practical recipe: replace annual fixed budgets… | ||
| Prioritizing Security correctly | Ole Alexander Pihl Konstad | 52m |
Argues that security features must be prioritized like any product feature by converting risk into the same currency as other work (users or money), using… | ||
| Using Conan in a real-world complex project | Kristian Jerpetjøn | 57m |
Shows how Conan replaces messy ExternalProject and git submodules to enable reproducible cross‑compiles for IncludeOS by packaging dependencies (GSL… | ||
| Customizing Qt to create first class graphical experiences on highly customized hardware | Andreas Aardal Hanssen | 54m |
Describes hacking Qt to run on devices with no GPU or framebuffer by writing a custom kernel framebuffer driver, an EGL native pixmap integration and a Qt… | ||
| Unicode - going down the rabbit hole | Peter Bindels | 56m |
Covers why text breaks: mojibake examples like O’Neill from wrong encodings, a live homoglyph demo (Cyrillic “Apple”), and the limits of Han unification… | ||
| No Nonsense UI Design | Erik Engheim | 52m |
Practical rules for making complex GUIs clearer: apply Gestalt rules—proximity, continuity, similarity—to show which controls affect which lists, use… | ||
| Make your tests tell the story of your domain | Mads Opheim, Anne Landro | 48m |
A 300,000-line Java monolith serving the Norwegian courts runs automated value-chain tests that exercise full workflows so product experts can read the domain… | ||
| Embracing Modern CMake | Stephen Kelly | 01h 03m |
Argues that “Modern CMake” is a target‑centric style introduced around 2011 and present since CMake 3.1 (Dec 2014), urging migration from directory variables… | ||
| The ultimate guide to software updates on embedded Linux devices | Mirza Krak | 48m |
Coverage of battle‑tested open source update stacks with concrete tradeoffs: image‑based A/B atomic updates (Android/ChromeOS style) reduce bricking but double… | ||
| Scaling Qt from Desktop to Servers and Micro-controllers | Volker Hilsheimer | 49m |
Qt moves from desktops to servers and MCUs by shrinking and isolating layers: copy-on-write value classes and pimpl consolidation cut allocations, a… | ||
| Reverse engineering a legacy software in a complex system: A systems engineering approach | Maximiliano Moraga | 29m |
Combines CAFCR model with practical reverse engineering and live code tracing to map legacy software to system goals, decomposing into… | ||
| C++ Insights: See your source code with the eyes of a compiler | Andreas Fertig | 58m |
C++ Insights is a Clang-based source-to-source tool that shows what the compiler actually does by transforming code back into readable C++, emitting things… | ||
| Just enough Assembly for Compiler Explorer | Anders Schau Knatten | 01h 00m |
Covers concrete x86_64 details you can use on Compiler Explorer: the System V AMD64 calling convention puts integer args in RDI/RSI, return values in RAX/EAX… | ||
| The Anatomy of an Exploit | Patricia Aas | 57m |
A step-by-step exploit walkthrough shows a vulnerable C program that reads with gets-based vuln and how overwriting a stack buffer changes local variables and… | ||
| The Dawn of a New Error | Phil Nash | 01h 00m |
Survey shows 52% of C++ codebases ban exceptions; proposal p0709r1 promises zero-overhead deterministic exceptions by throwing values and new syntax (fro/try)… | ||
| Uncertain Models - Learning from the past and optimizing for the future | Markus Fanebust Dregi | 40m |
Shows how Equinor turns uncertain reservoir and windfarm models into actionable plans by sampling ensembles, running each concrete model through existing… | ||
| The Evolution of Accelerated 2D and 3D Graphics in Qt | Laszlo Agocs | 01h 00m |
Shows how widgets still use the raster QPainter path (backing store -> native bitmap) while Qt Quick renders via a persistent scene graph that batches geometry… | ||
| Testing The Tests: Mutation Testing for C++ | Seph De Busser | 44m |
Describes a C++ mutation-testing effort that actually builds mutators (operator swaps, initializer-list vs count ambiguity, removing range-for ampersands… | ||
| Freestanding C++ - Past, Present, and Future | Ben Saks | 01h 01m |
Defines the portable baseline: freestanding C limits guaranteed headers to core language support while freestanding C++ adds things like type_traits, atomic… | ||
| car infotainment system with TomTom LIVE Services | Peter Bindels | 43m |
Renault Carminat/OurLink runs on Android 2.3 NDK and requires porting large C++ code with a Bionic libc; the port removes 127 dynamic_casts (22 checked… | ||
| nothing matches | ||