ACCU 2022
2022-04-06..2022-04-09
-- online --
ACCU ·
[ACCU 2016, ACCU 2017, ACCU 2018, ACCU 2019, ACCU Autumn 2019 Belfast, ACCU 2021 Online, ACCU 2022, ACCU 2023, ACCU 2024, ACCU 2025]
who it's for
c++ developers, c++ library authors, tooling and build engineers, software architects, embedded systems engineers, test engineers, rust-interested c++ developers
topics
CMake ninja and out-of-source builds; C++20 concepts refactoring; user-defined literals in C++20; std::atomic<std::shared_ptr> lock-free designs; P2300 senders and receivers concurrency; constexpr and consteval usage; std::jthread and synchronization primitives; TLS 1.3 and RSA implementation details; SonarLint and quality gates in CI; RISC-V microprocessors for embedded; documentation with concepts and ranges
| title | author | length |
|---|---|---|
| Keynote: Growing Better Programmers | Guy Davidson | 01h 22m |
Advocates using code reviews as primary mentoring tool and shows a real bug: a hand-rolled recursive rotate that never increments its write index, fixed and… | ||
| TLS Cryptography for Programmers | Peter Bindels | 01h 26m |
Explains exactly how TLS handshakes and ciphers work, showing a 10‑bit RSA demo, why real RSA uses montgomery multiplication (about 500× speedup) and why most… | ||
| Things I Learnt While Trying to Avoid Becoming a CMake Expert | CB Bailey | 01h 34m |
Maintains several widely used CMake modules and shows concrete patterns: using ninja for fast incremental builds, preferring out-of-source builds, and… | ||
| C++20 Concepts | Andreas Fertig | 01h 02m |
Demonstrates using C++20 Concepts to replace a 19-class, inheritance-heavy libc++ implementation of libc++ optional with a single class, cutting 1187 lines to… | ||
| SonarSource: The Power of Clean Code | Geoffray Adde, Olivier Gaudin | 37m |
Live demo shows Sonar tooling catching real C++ problems: lambdas copying vectors (performance), insecure OpenSSL ciphers (crypto risk), memset being optimized… | ||
| A lock-free std::atomic std::shared_ptr | Timur Doumler | 01h 28m |
Claims a portable lock-free std::atomic<std::shared_ptr> is implementable using a split refcount design that keeps a control-block pointer and a local refcount… | ||
| A Friendly Introduction to Rust for C++ Developers | Hendrik Niemeyer | 01h 29m |
Rust enforces ownership and borrowing so the compiler rejects dangling or simultaneous mutable/immutable references with clear error messages; examples compile… | ||
| Structured Concurrency | Lucian Radu Teodorescu | 01h 21m |
Claim: P2300 senders/receivers let an entire concurrent C++ application be expressed as nested computations that have one entry and one exit, so the whole… | ||
| Embracing User-Defined Literals Safely | Pablo G Halpern | 01h 36m |
Explains concrete rules and tradeoffs for C++ user-defined literals: four forms (cooked, raw, numeric-template, string-template), 12 cooked overloads, and when… | ||
| C++20: The Small Pearls | Rainer Grimm | 01h 23m |
C++20 features are demonstrated with working code examples linked from the slides and live on Compiler Explorer though some chrono time zone queries time out… | ||
| Equal Rights for Tests | Jon Jagger | 01h 26m |
Argues that tests must be equal to code and gives concrete practices: instrument tests for coverage and measure cyclomatic complexity of test functions with… | ||
| Fun With Type Erasure | Pavel Novikov | 01h 12m |
Demonstrates a C++ dispatcher that parses JSON requests (using tao::json) and maps fields or positional arrays to real function parameters with type checks… | ||
| C++20 – My Favourite Code Examples | Nicolai M. Josuttis | 01h 35m |
Walks through concrete C++20 code: replaces template overloads with concepts solve overload ambiguity using requires expressions; uses ranges and views are… | ||
| Structured Networking | Dietmar Kühl | 01h 01m |
Concrete demo of a P2300-style networking stack that composes senders/receivers into an echo server, showing async accept/connect/read/write on an io_context… | ||
| Diversity Is Too Important to Be Left to Women | Hannah Dee | 01h 25m |
Tech teams average ~20% women and that imbalance amplifies microaggressions (the petri multiplier predicts r^2 more hits on the smaller group). Evidence cited… | ||
| Learning from C++ Juniors’ Mistakes | Amir Kirsh | 01h 31m |
Course uses a demo project and a graded exercise (container-ship → 3D stacks) as a case study and finds concrete, repeatable junior errors: many teams copy or… | ||
| Properties & Bindings for Modern C++ | James Turner | 16m |
An open-source, header-only MIT library implements C++ properties with change-notification signals, operator-overloaded assignment/conversion and… | ||
| It’s Only Pasta: a Few Tips on Software Architecture to Avoid Spaghetti Code | Lucian Radu Teodorescu | 16m |
Argues that three concrete architectural practices — overview, coherence, balance — cut spaghetti code by focusing on essentials, grouping similar components… | ||
| C++ in the World of Embedded Systems | Vladimir Vishnevskii | 01h 11m |
Covers embedded system classes (limited‑resource, real‑time, safety‑critical) and argues modern C++ is usable on many targets as compiler support moves to… | ||
| Advanced Dependencies Model in Conan 2.0 C, C++ Package Manager | Diego Rodriguez-Losada | 01h 13m |
Conan 2.0 replaces Conan 1.x’s blunt dependency graph with explicit requirement traits (headers, libs, run, build, visibility), plus package types and… | ||
| The Hip Approach to Safeguarding your Users | Charles Weir | 22m |
Research shows teams routinely misidentify what needs safeguarding after work with over a dozen companies. Run short workshops with post‑its and prompt cards… | ||
| Why It’s Good to Be A Software Manager | Jim Pascoe | 19m |
Becoming a technical manager does not mean stopping coding; hands-on work continues while owning architecture and roadmap decisions, using Jira or a simple… | ||
| How I Teach Modern C++ One Pixel at a Time | Mike Shah | 01h 26m |
Semester-long course frames learning around pixel projects: students implement a doom fire effect, image filters, parallax and a falling-sand sandbox, then… | ||
| C# Values and Value Types | Steve Love | 01h 03m |
Compares classes, structs, records and record structs by showing concrete code: equals/getHashCode overrides, IEquatable, operator overloads, and the… | ||
| Remove This Idiom | Victor Ciura | 21m |
Upgrading to an MSVC STL revision that marks over 3,000 functions with [[nodiscard]] uncovers silent bugs where code calls remove without erasing, or omits the… | ||
| Measuring the Overhead of iostreams: What Is the Difference? | Ahto Truu | 20m |
A simple harness generates 1–2 million lines (10–40 million integers) and runs gcc 9.2 -O2 binaries on Ubuntu to compare C stdio vs C++ iostreams with… | ||
| How Code Fails in the Real World | James Turner | 01h 19m |
Adds direct crash and error reporting to a large cross‑platform desktop app using CrashRpt then a century backend that wraps crashpad/brakepad and performs… | ||
| Finding ODR Violations with ORC | Foster Brereton, Lee Thomason | 24m |
C++ One Definition Rule bugs can silently corrupt behavior across builds; ORC wraps the linker, scans DWARF debug info and flags mismatched type and vtable… | ||
| C++ Const Correctness Refresher | Vladimir Vishnevskii | 19m |
Covers concrete const-correctness fixes: use strict compiler diagnostics and static analysis, make objects const by default, and propagate immutability for… | ||
| Sandboxing a Linux Application | Martin Ertsås | 01h 25m |
Walks through building a minimal but fragile Linux sandbox that actually runs an injected binary, demonstrating use of namespaces (user, mount, pid, net)… | ||
| Example Mapping – Theory and Practice | Seb Rose | 22m |
Example mapping describes a concrete workflow using a deck of colored cards: a yellow story card, blue rule cards, green example cards and red question cards… | ||
| DevSecOps - By Any Other Name | Seb Rose | 23m |
Argues that “DevSecOps” often becomes a renamed silo unless an organization invests in tooling and process change; cites a 2020 GitLab survey showing no… | ||
| Deliberate Architecture | Robert Smallshire | 01h 14m |
Industry demographics produce many inexperienced hires and a high churn rate so the claimed developer half‑life ~3.5 years forces architectures that survive… | ||
| How to Use C++20 Coroutines for Networking | Jim Pascoe | 01h 14m |
Shows a concrete recipe: prototype the chat in Lua prototype to learn suspension, then implement it in C++20 using co_await suspension semantics and Boost.Asio… | ||
| Vim for Fun | Andy Balaam | 01h 04m |
Vim claims to be fast (dates to 1991), handles huge files and long lines, and turns editing into a decades-long game; the demo shows concrete commands (hjkl… | ||
| A Year In A Rainforest: Engineering For Survival | Matthew Dodkins | 01h 25m |
Remote ocean and rainforest devices run months by using an FPGA for real‑time filtering and a microcontroller that stores only metadata to SD cards, backed by… | ||
| Remote Is a Four Letter Word | Dom Davis | 19m |
Argues that “remote” is the wrong word and that successful teams have long been distributed not remote, citing a 1990s support rota with offices in London… | ||
| Phoenix? | Björn Fahller | 13m |
Burnout escalates into constant fury and tunnel vision that erases priorities and social life, and recovery starts when management enforces an empty to-do list… | ||
| Coroutines: C++ vs Rust | Jonathan Müller | 01h 05m |
Compares C++ coroutines using a user-defined promise type and std::coroutine_handle (compiler allocates a heap state by default, with optional elision) against… | ||
| Asynchronous I/O and Coroutines for Smooth Data Streaming | Björn Fahller | 01h 04m |
Linux io_uring (Linux 5.1) and C++20 coroutines are combined into a UDP-read pipeline that submits preallocated 1500‑byte buffers to the ring, receives packets… | ||
| What Has C++20 Ever Done For Templates? | Hendrik Niemeyer | 01h 21m |
C++20 actually adds concrete template tools: concepts provide compiler-enforced predicates (std::invocable, std::same_as, predicate hierarchy) and drive… | ||
| Classic Vulnerabilities | Patricia Aas | 01h 16m |
Examines decades-old, concrete exploits: an unlink heap primitive is reproduced against Chocolate Doom and a proof-of-concept merged to Chocolate Doom as a… | ||
| Embracing the **noexcept** Operator and Specifier *Safely* | John Lakos | 01h 28m |
Explains that the noexcept operator is a compile time query used mainly to let generic code pick a faster path for moves and swaps, demonstrates a vector… | ||
| Neotron - Writing a Single-Tasking ‘DOS’ for Arm Microcontrollers, in Rust | Jonathan Pallant | 01h 34m |
A tiny, open-source Neotron OS implements a single-tasking DOS on Cortex‑M hardware using Rust, targeting RP2040 dual‑core 133MHz boards with 256KB RAM and… | ||
| The C++ Tech Community @ Bloomberg | Vittorio Romeo | 33m |
Bloomberg builds an internal C++ Guild that organizes 11 tech communities, mobilizes 150 active contributors, and drives concrete results: a tooling working… | ||
| Throwing Graphs at COVID | Dom Davis | 01h 29m |
Live coding builds a simple contact-tracing simulator using Go structs and pointers and a Neo4j backend queried with Cypher. Code creates 100 person nodes… | ||
| A Practical Approach to Error Handling | Arno Schödl | 44m |
Describes a concrete workflow: check every API call, keep aggressive runtime asserts in release, mark functions noexcept everywhere so failures are forced to a… | ||
| Cool New Stuff in GDB 9, 10 and 11 | Greg Law | 01h 10m |
GDB 9–11 adds concrete tools not vague promises: a debuginfod server that serves debug info by build-id (useful when a customer had >50 GB of debug info that… | ||
| Abstraction Patterns: Making Code Reliably Better Without Deep Understanding | Kate Gregory | 01h 05m |
Codebases reveal missing structure: spotting literal magic numbers and converting them to named constants, grouping seven boolean flags into a single options… | ||
| Powerful Data Processing Pipelines with C++20 Coroutines | Andreas Weis | 01h 27m |
Shows a concrete pipeline implementation: file source -> zlib deflate filter -> sink using C++20 coroutines, ring buffers and a simple acquire/commit API… | ||
| The Victorian Internet | Jim Hague | 42m |
A concise history of how 19th-century telegraph projects turn global communication from weeks to minutes: detailed routes and repeaters such as Alice Springs… | ||
| Do You Want Fries With That? From Punched Cards to DevOps and Beyond | Gail Ollis | 43m |
Argues that security is treated as an add‑on rather than built into developer workflows, using a staged punch‑card pipeline demo (analyst → coder → punch‑card… | ||
| Documentation in the Era of Concepts and Ranges | Christopher Di Bella, Sy Brand | 01h 15m |
Compares current docs (Abseil, fmtlib, LLVM, Catch2, range-v3, Boost.Range) and recommends concrete changes: put a short description and an example at the top… | ||
| The Basics of Profiling | Mathieu Ropert | 01h 17m |
Explains when sampling versus instrumentation actually finds root causes, demos the game profiler Optick live and compares it to vTune; shows a mutex that… | ||
| Matrix is a Distributed Real-time Database | Andy Balaam | 01h 07m |
Describes Matrix as an open federation you can run locally (Synapse on port 8008, typically backed by Postgres) and uses JSON over HTTP (protocol v1.2). Shows… | ||
| Kill All Mutants! (Intro to Mutation Testing) | Dave Aronson | 01h 06m |
Explains how mutation testing actually works: AST-based tools make thousands of tiny code variations and run only the covering tests, flagging surviving… | ||
| C++ MythBusters | Victor Ciura | 01h 21m |
Claims and evidence: sprintf uses the global locale and a mutex so switching to libformat gives ~3–4× speedups on macOS and ~20× on Windows in a cited case… | ||
| Many an `any` | Alisdair Meredith | 01h 21m |
Implements several concrete std::any designs starting from a minimal version that stores the value on the heap via a void pointer plus a templated deleter and… | ||
| Contractual Disappointment in C++ | John McFarlane | 01h 27m |
Lays out four concrete contract kinds (C++ API, standard, end‑user, and a test-user contract), shows a PID controller assert and a real bug where a sentinel… | ||
| Sandbox Games - Using WebAssembly and C++ to Make a Simple Game | Ólafur Waage | 01h 12m |
Builds a browser sliding-puzzle and a Wordle bot by compiling C++ to WebAssembly with Emscripten + C++, exposing functions via the module import object and… | ||
| The Genius of RISC-V Microprocessors | Erik Engheim | 01h 01m |
Explains why RISC‑V is modular not monolithic, claims the base RV32I spec is tiny enough to read in hours and extensions are frozen for compatibility; shows… | ||
| Tradeoffs in the Software Workflow | Titus Winters | 01h 21m |
Argues that shipping small changes matters quantitatively: DORA shows 46x more frequent deployments, 440x faster commit→deploy, 170x faster MTTR, and 5x lower… | ||
| Introduction to Verifiable Computing | Ahto Truu | 01h 25m |
Shows how verifiable computing turns C functions into quadratic arithmetic programs and uses commitments, bilinear pairings and discrete‑log hardness to… | ||
| An Introduction to Multithreading in C++20 | Anthony Williams | 01h 28m |
Where to start with C++20 multithreading is practical advice not theory: use jthread with stop_token so destructors request stop and join, use parallel… | ||
| Law of Demeter: A Practical Guide to Loose Coupling | Kris Jusiak | 01h 28m |
Shows concrete before/after C++ code: a god-object using singletons and chain calls like manager.instance.getSpeakers.get that is hard to test, then refactors… | ||
| How to Rangify Your Code | Tina Ulbrich | 01h 15m |
Shows how to refactor real C++ loops into concrete range pipelines using range-v3, the standard library ranges and helpers like ranges::to; demonstrates… | ||
| Crowd Your Way Out of a Paper Bag | Frances Buontempo | 01h 10m |
Simulations show simple agent rules producing realistic crowd effects: a one‑lane queue produces ghost jam stop‑and‑go waves; a two‑lane hack causes risky lane… | ||
| Level Up Your Debugging Workflow with CMake Presets, Disassembly View, & GitHub Actions | Julia Reid | 58m |
Demonstrates using cmakepresets.json (requires CMake 3.21+) and the CMake Tools extension to build the same C++ project across three OSes and two editors, runs… | ||
| What Classes We Design and How | Peter Sommerlad | 01h 20m |
Categorizes C++ types as Value, Subject, Relation, Manager (scope, unique, general) and gives concrete rules: prefer the Rule of Zero, treat relation types… | ||
| Live Coding | Dietmar Kühl | 04m |
Live coding uses a commit-per-change workflow: every edit becomes a git commit that gets reloaded, driven by a small script that stitches files into a commit… | ||
| wordlexpr -- compile-time Wordle | Vittorio Romeo | 05m |
Implements a playable Wordle that runs entirely at C++ compile time by encoding game state in types, taking a seed and each guess as preprocessor defines, and… | ||
| How We Hired an Outstanding Junior Developer | Austin Bingham | 05m |
Company posts role in Norway requiring legal right to work and gets 77 applications. Two reviewers independently screen with veto rights, cut to about 20, then… | ||
| Building Graphical Appliances Made Easy | Alan Griffiths | 05m |
Shows a concrete workflow to get a graphical kiosk running on Ubuntu Core and reproduce the device on a Linux desktop: install the ubuntu-frame snap, set… | ||
| How lng is a Piece of String | Seb Rose | 05m |
Estimation is hard and repeated practice alone does not reliably improve accuracy; research on the Agile Alliance shows relative estimation using story points… | ||
| Squid Game C++ Edition | Tina Ulbrich | 06m |
Three rapid C++ puzzles ask for the return value given short snippets and an input hint rather than full code, delivered as multiple choice with three options… | ||
| My Thinking Is Not for Sale | Charles Tolman | 05m |
Argues that money buys body time in front of a computer but not the mental work of design, because thinking is a voluntary gift and cannot be directly… | ||
| A Happy Little Accident | Peter Bindels | 03m |
A BMP image painted in GIMP becomes a raw .com program by saving a 102‑byte bitmap, renaming it to helloworld.com and running it under DOSBox. The file size… | ||
| MEAD! | Dave Aronson | 05m |
A simple home mead method: combine 300–400 g honey, 750 mL spring water and about a gram of yeast in a jar, stir until dissolved, cover with cloth and wait —… | ||
| Getting to ACCU | Robert Smallshire | 05m |
Journey from Oslo to Bristol by car and rail: 40-minute drive to Oslo Central at 06:01, high-speed rail to Gothenburg arriving 09:45, onward to Copenhagen… | ||
| What Am I? | Andy Balaam | 06m |
Live-coded a simple simulation that visibly renders a green multi-part body and moves it by updating a leading edge array, mapping inputs to direction so arrow… | ||
| My Favorite Theorem: How Mathematics Can Surprise Us | Hendrik Niemeyer | 05m |
A rapid tour of concrete surprises: the Banach–Tarski paradox shows a ball can be cut into a finite number of pieces and reassembled into two identical balls… | ||
| A Programmer: Still Growing | Jim Hague | 05m |
Career reflection that ties concrete milestones to learning: finding an August 1980 magazine and a February 1981 cover anchors decades of change, the original… | ||
| Direct Aggregate Initialisation | Timur Doumler | 05m |
C++20 lets aggregates be initialized with parentheses, enabling make_shared and emplace_back to perfect‑forward into aggregates and letting macros avoid… | ||
| Quantifying Dinosaur Pee | John Lakos | 05m |
Calculation uses simple calculus and an exponential decay model versus a discrete model, both giving nearly identical results for 165 million years and an… | ||
| Straw Man | Seb Rose | 05m |
Straw-bale studio built starting with eight concrete footings, a sawn-wood frame and piles of standard straw bales that cost £2.50 per bale; structural trusses… | ||
| Moving an `int` Is Slow: Debug Performance Matters! | Vittorio Romeo | 05m |
Benchmark shows C++20's std::accumulate uses std::move in assignment and on -O0 that call is not inlined, producing 1.4× slowdown versus C++17 for an int-heavy… | ||
| This One's for my Mum | Dom Davis | 05m |
Claim: programming is composing, not magic — treat code as musical score that a machine interprets like a musician reads notation. Schools expect universal… | ||
| co_pilot | Ólafur Waage | 05m |
Shows practical results from feeding C++ prompts to GitHub Copilot and inspecting its suggestions: attempts to write memory allocators, smart pointer… | ||
| The 5 Colour Theorem | Andy Balaam | 06m |
A concise, constructive proof that any planar map requires at most five colors, using proof by induction and the Kempe-style idea of swapping along alternating… | ||
| Clacks - Sending Home A Tribute | Gail Ollis | 05m |
A short live reading of a passage from Going Postal that shows how the clacks network uses semaphore shutters and an overhead code with flags like G, U and N… | ||
| Programming Puzzlers | Pete Goodliffe | 05m |
A rapid live quiz that flashes about 30 icons each mapping to a programming term, using a slide deck of simple pictograms and a stopwatch. Audience correctly… | ||
| Better Support for Emotive Programming in C++ | Pablo G Halpern | 05m |
Demonstrates that many emoji can already appear in C++ code via identifiers and user‑defined literals but the common smiley `: )` cannot because syntax forbids… | ||
| A Book That Everybody Should READ | Felix Petriconi | 04m |
A tightly focused recommendation of a forensic book about the Horizon accounting system used in British Post Offices in the early 2000s, tracing how software… | ||
| Running A Student Conference For 15 Years (Give Or Take) | Hannah Dee | 05m |
A student-run women-in-tech conference starts in 2008 with 50 students funded with a small grant and homemade lunches, keeps the same program format, and grows… | ||
| Measuring The World | Mathieu Ropert | 05m |
A rapid tour of measurement history gives concrete claims and surprises: the Egyptian cubit ≈50 cm, the Roman mille passus = 1,000 paces later morphing into… | ||
| Beelzebub Has A Devil Put Aside For Me | Dom Davis | 06m |
Claim: USB-C is a connector not a protocol and the port says almost nothing about the data that travels over the wire. Thunderbolt is a separate, faster… | ||
| What Is The Connection Of A Scriber And An Interrupt Routine? | Felix Petriconi | 05m |
A backyard ground-source heat pump loop of 300 meters goes into the ground and connects to a home interface, metered with a one-pulse-per-watt sensor wired to… | ||
| nothing matches | ||