C++ on Sea 2025
2025-06-23..2025-06-25
Folkestone, United Kingdom
[C++ on Sea 2019, C++ on Sea 2020, C++ on Sea 2021, C++ on Sea 2022, C++ on Sea 2023, C++ on Sea 2024, C++ on Sea 2025]
| title | author | length |
|---|---|---|
| Lightning Talk: Design by Intuition | Timur Doumler | 06m |
A concrete decision method is presented: state the problem, list requirements, draw an evolution graph, and fill a simple three-option decision table… | ||
| Lightning Talk: Shimming OpenSSL Out of Necessity | Braden Ganetsky | 05m |
A prebuilt library expects removed symbols so linking fails with an undefined reference to SSL_library_init because that name became a macro in newer OpenSSL… | ||
| Lightning Talk: Not Much option() Left - Surviving CMake With Toolchain Files | Damien Buhl | 07m |
CMake option() interacts badly with CMAKE_TOOLCHAIN_FILE: older CMake (around 3.12) reads options inconsistently unless you write cache variables or use FORCE… | ||
| Lightning Talk: Clang TSA - A Note about Thread Safety | Florent Castelli | 06m |
Clang Thread Safety Analysis (TSA) detects missing locks at compile time by reading annotations like GUARDED_BY and function contracts such as acquire/release… | ||
| Lightning Talk: To Flush or Not to Flush? - That Is the Question | Robert Leahy | 05m |
Writes a simple file example that fails against /dev/null and reveals that ofstream destructor flush hides errors, so programs can report success when flush… | ||
| Lightning Talk: From Wide to Wrong - Spotting Dangerous Conversions in C++ | Nico Eichhorn | 05m |
Provides a compile-time hard check that rejects unsafe narrowing when calling functors by wrapping functor parameter types in C++11-compatible wrapper types… | ||
| Lightning Talk: It Is a Pipe, but Should It Be? (Sorry Magritte) | Björn Fahller | 05m |
Implements a right-curry template and an ary type that binds arguments from the right so partial application takes the trailing parameters, then adds a pipe… | ||
| Lightning Talk: Naming is Hard - A Field Study | Tina Ulbrich | 04m |
Company inspects oil and gas pipelines and stores up to terabyte per inspection of sensor data to locate defects called features; processing uses a custom… | ||
| Lightning Talk: Terminating Your Bugs With Time Travel and AI | Rashmi Khetan | 05m |
Demo shows an extension that pipes an explain command into Undo’s deterministic time-travel debugging session and queries Claude (AI) to interpret debugger… | ||
| Lightning Talk: Teaching the NES - What 6502 Assembly Reveals About Modern C++ | Tom Tesch | 06m |
Teaching NES games in 6502 assembly forces students to see what compilers and C++ actually hide: no types, just pointers, memory and a PPU GPU. Students build… | ||
| Lightning Talk: Pólya Performance Thinking | Andrew Drakeford | 06m |
Apply Polya’s four steps to real performance tradeoffs: understand and restate the context (requirements, data, unknown final design), then devise a plan using… | ||
| Lightning Talk: Simple Compile Time Dynamic Programming | Andrew Drakeford | 05m |
Uses constexpr functions with plain arrays and loops to run bottom-up dynamic programming at compile time, building a DP cost matrix and a split-point matrix… | ||
| Lightning Talk: How to Cook Your CPU with C++ | Conor Spilsbury | 05m |
A change in compiler optimization from -O0 vs -O2 turns a benign spin-check into an infinite loop that pins a core at 100% CPU after a rebuild, because the… | ||
| Lightning Talk: A Compiler Optimization and the 2-Adic Numbers | Cassio Neri | 06m |
Shows a concrete algorithm that computes reciprocals via a Newton half-iteration that contains no division, implements two concrete code paths (double for 1/3… | ||
| Lightning Talk: Let’s Make VLD Great Again | Alex Vanden Abeele | 05m |
Visual Leak Detector is resurrected: fork updated from the old 2.59/MS fork (which officially only supports up to VS2015 and only unofficially runs on 2019) to… | ||
| Lightning Talk: Teaching GameDev - A C++ Centric Approach | Koen Samyn | 06m |
Howest Game Development program uses C++ as the core language and starts from basics because enrollment is open to any high‑school graduate, teaching… | ||
| Lightning Talk: Dying for Your Language - History of Esperanto | Guy Davidson | 06m |
Esperanto is a constructed international auxiliary language created by Zamenhof in 1887 and today counts about 2,000 native speakers and ~100,000 total… | ||
| A Recipe for Designing Your Work Week as a Software Engineer | Sandor Dargo | 05m |
Create a spreadsheet table with column headers for each responsibility (reporting, telemetry, meetings, learning, mentoring, buffer), assign concrete hours or… | ||
| Lightning Talk: GPU Programming with C++ and Triton | Gil Hoben | 05m |
Proposes using Triton Python DSL to write GPU kernels that compile to a CUDA binary loaded from C++, showing a position-update kernel for agent based… | ||
| Lightning Talk: Conan Strikes Back - Easy Migration to Conan 2.0 | Evgenii Seliverstov | 06m |
Conan 2.0 migration requires concrete edits: replace conanfile.txt and old recipe syntax, switch to the new generators/toolchain flow (move from legacy make… | ||
| Lightning Talk: Start a User Group, in 5 Easy* Steps | Robert Schimkowitsch | 05m |
Practical five-step recipe: recruit local allies, secure a free or cheap venue (university, library, hackerspace), plan a low-pressure first meetup focused on… | ||
| Why Technical Engineering Interviews Are Broken and How to Actually Make Them Better | Kristen Shaker | 01h 03m |
Current interviews rely on banks of practiced problems, rigid rubrics and AI‑assisted cheating (LeetCode, Advent of Code style questions and startups that… | ||
| What C++ Needs to be Safe | John Lakos | 01h 28m |
Bloomberg shows a concrete roadmap: macrobased contracts in production since 2004 (open sourced 2012), funded clang prototypes and library work to land… | ||
| Teaching an Old Dog New Tricks - A Tale of Two Emulators | Matt Godbolt | 59m |
Implements the original ZX Spectrum twice: a straightforward C++11 emulator (~3,000 LOC, instruction decoder and codegen) and a modern C++ version that uses… | ||
| C++, C#, Rust or Python - Which is the Best Choice for Low Energy Consumption? | Tina Ulbrich, Hendrik Niemeyer | 49m |
Reproduces benchmarks for Monte Carlo pi with 10 million samples and an Adler‑32 checksum on 50 MB, measures energy via Code Carbon (RAPL/Intel PCM fallback)… | ||
| std::generator in C++23: When to use, and how to improve it | Johannes Kalmbach | 57m |
std::generator is type‑erased, allocates heap storage and shows measurable overhead vs inlinable code: a tiny two‑yield generator allocates 96 bytes on GCC and… | ||
| Rust Traits In C++ | Eduardo Madrid | 58m |
Shows a concrete path to get Rust Traits–style runtime polymorphism in C++ by building custom virtual table structures and concrete value managers inside a… | ||
| Understanding Large and Unfamiliar Codebases | Mike Shah, Chris Croft-White | 58m |
Large legacy repo (examples: over 1,000,000 lines overall, OpenTTD ~300k C/C++ lines) gets explored by running and attaching debuggers, sampling profilers and… | ||
| Will Your C++ Program Still Be Correct Next Year? | Björn Fahller | 56m |
A practical testing philosophy that treats tests as executable requirements, not just examples: a word-histogram example reveals real bugs, fixes, and design… | ||
| Faster, Safer, Better Ranges | Tristan Brindle | 59m |
C++ ranges often lose performance and can be unsafe; this describes a concrete alternative: Flux v2 implements an internal-iteration-first model with resumable… | ||
| Telling Your Technical Story | Sherry Sontag | 45m |
Advice centers on concrete practices: reviewers blind proposals with use Speakerfish to blind-review proposals so selection favors a clear point of view; draft… | ||
| C++ Performance Tips - Cutting Down on Unnecessary Objects | Prithvi Okade, Kathleen Baker | 52m |
Extra temporaries cost CPU and heap: examples show a copy of std::string or std::vector causing two heap allocations vs one when moved or constructed in place… | ||
| Extending std::execution Further - Higher-Order Senders and the Shape of Asynchronous Programs | Robert Leahy | 50m |
Shows how std::execution in C++26 implements higher-order senders by building two concrete algorithms: branch and repeat. Delivers operation-state classes, a… | ||
| Don’t Get Overloaded by C++ Overload Sets | Roth Michaels | 01h 05m |
Covers concrete overload-resolution mechanics: name lookup picks one scope then overload resolution ranks exact match, promotions before conversions… | ||
| Beyond Sequential Consistency - Leveraging Atomics for Fun & Profit | Christopher Fretz | 01h 22m |
C++ atomics are measured end-to-end on a lock‑free ring buffer: default sequentially consistent code hits about 10M ops/s on an Intel Xeon, switching to… | ||
| Smart Pointers in C++ | Khushboo Verma | 53m |
Covers concrete failure modes and fixes: using ptr.get on a unique_ptr produces a double delete when ownership isn’t transferred; unique_ptr<T[]> or… | ||
| Rethink Polymorphism in C++ | Nicolai M. Josuttis | 01h 23m |
Argues that runtime inheritance plus heap pointers is error-prone and slow, and demonstrates alternatives using std::variant, variadic templates and move… | ||
| Contracts in C++26 - An Insider's Overview | Andrei Zissu | 01h 02m |
After two decades of work the Contracts MVP is confirmed for C++26 (P2900 with rationale P2899) and specifies concrete syntax like pre(...) for preconditions… | ||
| The Power and Pain of Hidden Symbols in C++ Programming | Jason Turner | 01h 00m |
Claim: making symbols -fvisibility=hidden by default and exporting only the intended API, then enabling link-time optimization, shrinks and speeds real C++… | ||
| C++ Variadic Templates and Parameter Packs | Vladimir Vishnevskii | 53m |
Refresher on using C++ variadic templates and parameter packs with concrete examples: a tuple-backed container implemented by expanding packs into template and… | ||
| Cost of Abstractions in Embedded Systems | Marcell Juhasz | 54m |
Detailed case studies target an STM32 microcontroller, cross-compiled with GCC -Os and RTTI disabled, measuring binary size and loop iterations on hardware… | ||
| Contracts, Safety, and the Art of Cat Herding | Timur Doumler | 01h 30m |
C++26 adds language contract assertions with four evaluation semantics (ignore, observe, enforce, quick enforce) and the proposal P3100 catalogs 90 cases of UB… | ||
| What Can C++ Learn About Thread Safety From Other Languages? | David Rowland | 55m |
Argues C++ can borrow Rust/Swift ideas by adding send/sync traits and using C++26 reflection and metaclass generation to wrap types into synchronized_value… | ||
| Re-Release: Missing (and future?) C++ Range Concepts | Jonathan Müller | 01h 09m |
Describes concrete new range concepts implemented in a think‑cell library (C++23 subset, using some C++26 conveniences): reserve_hint / approximately sized… | ||
| Mind the Gap (Between Your Code and Your Toolchain) | Yannic Staudt | 16m |
Linkers hit a ~2 GB default limit for huge debug info and the practical fix is to emit split debug symbols (.dwo) which shrinks the binary to about 10–15%… | ||
| Missing (and future?) C++ Range Concepts | Jonathan Müller | 01h 09m |
Range concepts and library changes that enable real optimizations and compile-time metaprogramming: adds approximate-sized ranges/reserve_hint to propagate… | ||
| Safe and Readable Code - Monadic Operations in C++23 | Robert Schimkowitsch | 01h 10m |
Shows how C++20/23 monadic operations make code clearer by using std::views::transform and std::views::join, returning errors with std::optional or… | ||
| The 10 Essential Features for the Future of C++ Libraries | Mateusz Pusz | 01h 32m |
Talk lists 18 features (shifted up from the planned 10) and shows concrete changes using a quantities and units library as a running example. It demonstrates… | ||
| To Err is Human - Robust Error Handling in C++26 | Sebastian Theophil | 45m |
C++23 and C++26 additions get used: std::expected for return-value error flow, contracts for configurable pre/post checks, and library hardening to turn STL… | ||
| Welcome to v1.0 of the meta::[[verse]]! | Inbal Levi | 01h 04m |
Proposal P2996 is effectively accepted and introduces P2996 voted into C++26 draft enabling static compile-time reflection via a lift operator, splicers, a… | ||
| Software Engineering Completeness - Knowing When You Are Done and Why It Matters | Peter Muldoon | 01h 29m |
A practical framework called the Software Engineering Completeness Pyramid lays out concrete criteria for “done”: code meets acceptance criteria with dates… | ||
| CMake for the Impatient | Steve Love | 54m |
Shows a working minimal CMakeLists.txt that builds main.cpp into world.exe using real commands cmake -B bin then cmake --build bin, and demonstrates generator… | ||
| An Introduction to Reinforcement Learning - Snake Your Way out of a Paper Bag | Frances Buontempo | 53m |
Implements tabular Q‑learning in C++ (std::vector, std::deque, std::map) starting on a 1D five‑cell line then a 2D grid, using epsilon‑greedy (epsilon=0.1)… | ||
| Understanding C++ Value Categories: lvalue, rvalue, xvalue, std::move, std::forward & Best Practices | Mantrala Sandeep | 01h 02m |
Clear, example-driven breakdown of why C++ has five value categories (lvalue, xvalue, prvalue, glvalue, rvalue), how rvalue references plus std::move enable… | ||
| The Pattern Matching We Already Have | Braden Ganetsky | 58m |
Argues that C++ already has real pattern matching: concrete mechanisms are overload resolution, partial/explicit template specializations, template argument… | ||
| Building Robust Inter-Process Queues in C++ | Jody Hagins | 01h 07m |
Examines two popular SPSC queues (Daugaard, Rigtorp) and shows that simply mmap-ing them breaks: std::atomic is not an implicit-lifetime type in C++20… | ||
| Namespaces 101 | Sandor Dargo | 01h 16m |
Covers namespace syntax and evolution with dates: C++98 namespaces, C++11 inline namespaces, C++17 nested namespace openings and C++20 nested inline openings… | ||
| Three Cool Things in C++26: Safety, Reflection & std::execution | Herb Sutter | 01h 11m |
C++26 makes three concrete shifts: it defines erroneous behavior so uninitialized local variables either terminate or get detected by default with an opt‑in… | ||
| nothing matches | ||