
Building Robust Inter-Process Queues in C++
The C++ standard was written with a single-process worldview. Processes are mentioned once - in a note stating that lock-free atomic operations work across process boundaries ...

An introduction to reinforcement learning: Snake your way out of a paper bag
When people talk about AI they tend to mean LLMs, so this talk will to remind us of other approaches to AI. Reinforcement learning (RL) is a type of machine learning, so part of AI. An 'agent' takes actions in a dynamic environment. Better outcomes are rewarded and worse outcomes are penalised ...

Smart Pointers, Dumb Mistakes
C++ smart pointers promise to make memory management easier—but they also introduce a new world of gotchas, performance quirks, and hidden complexities ...

C++23 in Practice: A Complete Introduction
C++23 is the latest C++ release, which major C++ compilers start to support now more and more. Therefore, it is time to look at the contents of C++23 (to both new features and relevant extensions/modifications) ...
click here for more...Rethink Polymorphism in C++
To implement polymorphism and heterogeneous collections the usual approach is to use inheritance and virtual functions ...

KEYNOTE: Contracts, Safety, and the Art of Cat Herding
In recent years, we have seen a strong push to make C++ 'safer' and 'more secure'. Several efforts are under way: contract assertions and library hardening have already been approved for the upcoming C++26 standard, while proposals like profiles and borrow checking are still in development ...

In Search of the Perfect Return: A C++ Programming Journey
Marcel Proust wrote (trans. ) that 'The true voyage of discovery... is not a journey to a new place; it is learning to see with new eyes. ' Accordingly, in the first part of this talk, we’ll explore a targeted selection of C++ features whose surface behaviors are already familiar to most of us ...
C++ Templates for Developers
As an intermediate-level C++ programmer, you already know about and have very likely used one or more kinds of C++ templates in your code ...
click here for more...
Back to Basics: Don’t get overloaded by overload sets
C++ developers write or use overload sets quite often in their daily work. On the surface overload sets seem like an easy to understand feature but this is C++ so there is lots of nuance lurking below the surface ...

Understanding, Using, and Improving `std::generator`
Generators are one of the most common uses of C++20 coroutines and the only one directly supported in the standard library (since C++23). In this talk, we will explore the interface and potential applications of std::generator, as well as its performance on current compilers ...

KEYNOTE: From LeetCode to Leadership: Fixing Broken Engineering Interviews
The traditional technical interview process is fundamentally flawed. Despite years of industry experience, many senior candidates are still subjected to algorithmic coding challenges that fail to reflect their actual job responsibilities ...

Green Programming
Energy consumption of IT centers is on the rise worldwide and makes up a non-negligible part of the total consumption. This is not just an economical but also an ecological problem ...


Safe and Readable Code: Monadic Operations in C++23
Let's talk about monads. What are they. Why and how would you use them. The aim of this talk is to introduce some fundamental functional programming techniques (such as monads) and explain how they make your code safer and more readable ...

The Power and Pain of Hidden Symbols
If you develop on Windows, you're used to the pain and annoyance of having to manually export symbols from your DLLs. If you develop on Unix, you're used to symbols in shared objects being implicitly exported ...
C++ Best Practices
In this highly interactive 2-day class, we will review code and discuss what makes for good, high-quality C++. If you have read one of Jason's C++ Best Practices books, you'll have more context and will be better prepared to discuss the content ...
click here for more...
To Err is Human: Robust Error Handling in C++26
Every program may encounter errors, some originating from internal bugs in the program, others coming from the environment the program is operating in ...

Missing (and future?) C++ range concepts
Iterators and ranges have been essential parts of the C++ standard library since its inception. With C++20, they were brought to the next level in the form of std::ranges: We now have formalized requirements on the algorithms, lazy views to enable pipelines, and much more powerful iterators ...

Welcome to v1.0 of the meta::[[verse]]!
This talk will introduce what is (likely) the final version of the 'Reflection' feature targeting C++26. With a proposal slated to introduce reflection to C++26 (including the “std::meta” namespace) getting strong support in WG21, we can already start imagining a whole new world of possibilities ...

CMake for the Impatient
CMake has emerged as a leading tool for managing C++ projects. Although it's not particularly new, there's a perception that it's complicated, arcane, or just unfamiliar ...

C++ Reference Binding: L-Values, R-Values, and Forwarding—What Could Go Wrong?
Abstract: Understanding value categories and reference binding is essential for writing efficient and correct C++ code. This talk explores the fundamentals of l-values, r-values, and their impact on function calls, object lifetimes, and reference binding rules ...

Extending std::execution: Implementing Custom Algorithms with Senders & Receivers
P2300 introduces std::execution and the Senders & Receivers (S&R) model as a new paradigm for expressing asynchronous computation. std::execution specifies a fixed set of algorithms that, in some sense, define the baseline DSL of S&R, but this set is not exhaustive ...

C++ Performance Tips: Cutting Down on Unnecessary Objects
In C++, unnecessary temporary object creation can lead to costly runtime operations, increased code execution, and higher memory usage. Luckily this can be improved. This talk investigates common scenarios that result in the creation of temporary objects, demonstrated through code examples ...


Will your program still be correct next year?
Let's discuss what tests are for, and let those thoughts evolve into guide lines for a good testing philosophy. This talk is based on my experiences, both good and bad, and will offer advice for testing throughout the lifetime of your program ...

The Pattern Matching We Already Have
All the way since C++98, we have already had pattern matching in C++. It's limited to specific places, but it's there ...

Teaching an Old Dog New Tricks: A Tale of Two Emulators
As a self-proclaimed C++ dinosaur, I set out to prove that my comfortable, battle-tested ways of writing code (somewhere between C++11 and C++14) were clearly superior to all this modern constexpr-everything, coroutine-laden C++ ...

Telling Your Technical Story
A good technical talk is as much about storytelling as it is about presenting information. At best, it is a shared experience between speaker and audience. Even the most complex topics can be presented simply and clearly, sparking questions, conversation, and perhaps even some argument ...

Back to Basics: Variadic Templates and Parameter Packs
Support for variadic templates was one of the major features introduced by C++11 standard. It not only enabled complex metaprogramming techniques but also made development of flexible and optimizable code much simpler ...

C++ Contracts – a Meaningfully Viable Product
After 2 full decades of multiple efforts aimed at introducing a contracts feature into the C++ language, contracts have finally been voted into C++26 at the February 2026 C++ Standards Committee (WG21) meeting in Hagenberg, Austria ...

Better Threading support in C++20
We got threading support by the language and library in C++11. There were however a few things missing, like RAII for a thread object, or a nice way to stop a thread, or to request it to stop. Similar problem, how do we stop a ‘waiting’ condition variable ...

Back to the basics: Namespaces 101
In this beginner-friendly talk, we are going to explore namespaces. They are an essential tool for organizing our codebase around different concerns and across different layers. But we cannot call it a day by simply stating that. We also need to discuss their evolution ...

Understanding large and unfamiliar codebases
It's your first day on the job as a new employee or intern. You setup your workstation and then download a repository of over 1,000,000 lines of code ...

The 10 Essential Features for the Future of C++ Libraries
C++ is a powerful language for building high-performance, flexible libraries. However, language and standard library limitations often hinder library developers from achieving their full potential ...
Structured Concurrency in C++: A Hands-On Workshop
Today, C++ software is increasingly asynchronous and parallel, a trend that is likely to continue ...
click here for more...
Software Engineering Completeness : Knowing when you are Done and why it matters
Whether creating new features, fixing bugs or looking at larger issues affecting a codebase, what does 'Done' mean in software engineering terms and what is its effect on delivering change in the real world ...

Beyond Sequential Consistency
In 2011, C++ introduced a formally defined memory model, providing a foundation for portable, multi-threaded code with well-defined correctness guarantees ...

Balancing Efficiency and Flexibility: Cost of Abstractions in Embedded Systems
This session will feature detailed case studies that measure the overhead associated with common programming abstractions in the context of embedded systems ...

Faster, safer, better ranges
C++20 added Ranges to the standard library, extending the classic iterator model introduced in C++98. Unfortunately, the iterator-based design means that Ranges can often end up leaving performance on the table, as well as causing safety issues and usability problems ...

What C++ Needs to be Safe
The world runs on C++. For more than two decades, C++ has served as the workhorse of high-performance, low-power, and low-latency software across industries. Its raw speed and unconstrained flexibility have made C++ the go-to language for and backbone of large-scale software development ...

What can C++ learn about thread safety from other languages?
Memory safety issues in C++ have been discussed in great length over the past few years but a big corner of safety and security, thread safety seems to get far less coverage ...