CppConhttp://www.cppcon.org — Presentation Slides, PDFs, Source Code and other presenter materials are available at: github.com/CppCon/CppCon2014 -- Why do you write C++ code? There is a good chance it is in part because of concerns about the performance of your software. Whether they stem from needing to run on every smaller mobile devices, squeezing the last few effects into video game, or because every watt of power in your data center costs too much, C++ programmers throughout the industry have an insatiable desire for writing high performance code.
Unfortunately, even with C++, this can be really challenging. Over the past twenty years processors, memory, software libraries, and even compilers have radically changed what makes C++ code fast. Even measuring the performance of your code can be a daunting task. This talk will dig into how modern processors work, what makes them fast, and how to exploit them effectively with modern C++ code. It will teach you how modern C++ optimizers see your code today, and how that is likely to change in the coming years. It will teach you how to reason better about the performance of your code, and how to write your code so that it performs better. You will even learn some tricks about how to measure the performance of your code. -- Chandler Carruth leads the Clang team at Google, building better diagnostics, tools, and more. Previously, he worked on several pieces of Google’s distributed build system. He makes guest appearances helping to maintain a few core C++ libraries across Google’s codebase, and is active in the LLVM and Clang open source communities. He received his M.S. and B.S. in Computer Science from Wake Forest University, but disavows all knowledge of the contents of his Master’s thesis. He is regularly found drinking Cherry Coke Zero in the daytime and pontificating over a single malt scotch in the evening. -- Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
CppCon 2014: Chandler Carruth Efficiency with Algorithms, Performance with Data StructuresCppCon2014-10-21 | http://www.cppcon.org — Presentation Slides, PDFs, Source Code and other presenter materials are available at: github.com/CppCon/CppCon2014 -- Why do you write C++ code? There is a good chance it is in part because of concerns about the performance of your software. Whether they stem from needing to run on every smaller mobile devices, squeezing the last few effects into video game, or because every watt of power in your data center costs too much, C++ programmers throughout the industry have an insatiable desire for writing high performance code.
Unfortunately, even with C++, this can be really challenging. Over the past twenty years processors, memory, software libraries, and even compilers have radically changed what makes C++ code fast. Even measuring the performance of your code can be a daunting task. This talk will dig into how modern processors work, what makes them fast, and how to exploit them effectively with modern C++ code. It will teach you how modern C++ optimizers see your code today, and how that is likely to change in the coming years. It will teach you how to reason better about the performance of your code, and how to write your code so that it performs better. You will even learn some tricks about how to measure the performance of your code. -- Chandler Carruth leads the Clang team at Google, building better diagnostics, tools, and more. Previously, he worked on several pieces of Google’s distributed build system. He makes guest appearances helping to maintain a few core C++ libraries across Google’s codebase, and is active in the LLVM and Clang open source communities. He received his M.S. and B.S. in Computer Science from Wake Forest University, but disavows all knowledge of the contents of his Master’s thesis. He is regularly found drinking Cherry Coke Zero in the daytime and pontificating over a single malt scotch in the evening. -- Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
*-----* Register Now For CppCon 2022: cppcon.org/registration *-----*Interview with Colin Dowd - Undo - CppCon 2024CppCon2024-09-13 | Register Now for CppCon 2024: cppcon.org/registration Join Colin Dowd and Kevin Carpenter from September 15th - 20th at CppCon 2024 Aurora, Colorado, to enjoy the many and varied inspirational talks! ---
Interview with Colin Dowd - Undo - CppCon 2024
Kevin Carpenter from @cppevents interviews Colin Dowd ahead of CppCon to talk about what exciting things Undo has prepared for the conference. Make sure to stop by and check in with them when you arrive!
Colin Dowd Director of Sales North America for Undo ---
Registration for CppCon: cppcon.org/registration 100+ Sessions Over 5 Days! Pre and Post Con Workshops/Classes/Course and Much More! Join Us Onsite!
#undo #debugging #cppcon #cppprogramming #cpp #programmingcourse #cpp #computer #coding #cpplearning #code #software #softwaredevelopment #technicalcourses #cplusplusprogramming #cplusplusInterview With Klaus Iglberger (C++ Software Design) - CppCon 2024CppCon2024-08-26 | Register Now for CppCon 2024: cppcon.org/registration Join Klaus Iglberger and Kevin Carpenter from September 15th - 20th at CppCon 2024 Aurora, Colorado, to enjoy the many and varied inspirational talks! ---
Interview With Klaus Iglberger (C++ Software Design) - CppCon 2024
Kevin Carpenter from @cppevents interviews Klaus Iglberger ahead of his two-day onsite training course "C++ Software Design"
Course Description “The design plays a much more central role in the success of a project than any feature could ever do. Good software is not primarily about the proper use of any feature; rather, it is about solid architecture and design. Good software design can tolerate some bad implementation decisions, but bad software design cannot be saved by the heroic use of features (old or new) alone.” (Klaus Iglberger, C++ Software Design)
Good Software Design — the proper management of dependencies — is the foundation for the success of a project. The basic building blocks for software design are design patterns. Design patterns have proven themselves invaluable over several decades and thus knowledge about them is essential to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, how we think about design and implement solutions. This also affects how we implement design patterns.
This training class explores modern C++ software design and the modern forms of classic design patterns. It provides guidelines, idioms and best practices for sustainable and maintainable design, which enables programmers to create professional, high-quality code. Amongst others it will answer the following questions:
How does good C++ design with a minimum of dependencies look like? What are the most important rules for robust, maintainable, and sustainable design? What are the most common pitfalls in C++ software design? Why does classical C++ design based on inheritance hierarchies fail so often? How are the classic design patterns implemented in modern C++? What are alternatives to the classic design patterns? After this course, participants will …
… have a detailed understanding of the essential design principles; … understand the benefits of separation of concerns; … be able to design code with minimum dependencies; … have an impression of the modern alternatives of classic design patterns; … have gained knowledge about modern design techniques; … understand how std::function, std::any, and ranges work; … favor composition over inheritance; … know about the importance of value semantics; … comprehend the advantages of non-intrusive design.
Prerequisites Course participants should have a solid base knowledge of C++ and at least one to two years of experience with the language. Some experience with inheritance hierarchies and templates is expected. Additionally, the course is interesting for you, if one or more of the following statements apply to you:
You are not aware of the impact of dependencies on code quality You don’t know the SOLID principles or don’t consider them for your work You believe object-oriented programming is about inheritance relationships You consider moving functionality into classes the preferred design choice You want to reevaluate classic design patterns You want to get an impression of modern C++ design patterns You wonder about type erasure and expression templates or their value
Course Topics The Need for Good Software Design Design Patterns — An Introduction Design Patterns in Modern C++
Visitor (classic and modern) Strategy (classic and modern, incl. Policy-Based design) Command Prototype Bridge (incl. the fast pimple idiom) External Polymorphism Type Erasure Decorator CRTP Expression Templates Adapter ---
Course Instructor - Klaus Iglberger
Klaus Iglberger is a freelance C++ trainer and consultant. He has finished his PhD in Computer Science in 2010 and since then is focused on large-scale C++ software design. He shares his expertise in popular advanced C++ courses around the world (mainly in Germany, but also in the rest of the EU and the US). Additionally, he is the author of C++ Software Design, the initiator and lead designer of the Blaze C++ math library, one of the organizers of the Munich C++ user group, and the (co-)organizer of the Back-to-Basics and Software Design tracks at CppCon. __
Registration for CppCon: cppcon.org/registration 100+ Sessions Over 5 Days! Pre and Post Con Workshops/Classes/Course and Much More! Join Us Onsite!
#cppcon #cppprogramming #cpp #programmingcourse #cpp #computer #coding #cpplearning #code #software #softwaredevelopment #technicalcourses #cplusplusprogramming #cplusplusInterview With Mateusz Pusz (Structured Concurrency in C++) - CppCon 2024CppCon2024-08-23 | Register Now for CppCon 2024: cppcon.org/registration Join Mateusz Pusz and Kevin Carpenter from September 15th - 20th at CppCon 2024 Aurora, Colorado, to enjoy the many and varied inspirational talks! ---
Interview With Mateusz Pusz (Structured Concurrency in C++) - CppCon 2024
Kevin Carpenter from @cppevents interviews Mateusz Pusz ahead of his two-day onsite training course "Structured Concurrency in C++"
Course Description Today, C++ software is increasingly asynchronous and parallel, a trend that is likely only to continue going forward. While the C++ Standard Library has a rich set of concurrency primitives and lower-level building blocks, we lack a standard framework for asynchrony and parallelism that C++ programmers desperately need.
Asynchrony and parallelism appear everywhere, from processor hardware interfaces to networking, to file I/O, to GUIs, to accelerators. Every C++ domain and every platform needs to deal with asynchrony and parallelism, from scientific computing to video games to financial services, from the smallest mobile devices to your laptop to GPUs in the world’s fastest supercomputer.
This training shows that concurrency is not only about the C++ Standard Library threading and synchronization low-level tools. During the workshop, you will learn how to write efficient, asynchronous, and highly concurrent code without the need for any manual synchronization between threads, leading to simpler code and faster runtimes. During the hands-on exercises, you will implement coroutine tools from scratch and create parallel processing pipelines with a new framework called Senders/Receivers proposed for standardization as a part of C++26. The Senders/Receivers framework is publicly available on GitHub so that it can be used in production immediately without the need to wait for the next C++ release.
During the workshop, we will work with the latest version of the compiler thanks to the Compiler Explorer, so no special environment preparation is needed.
Training Highlights
Understanding what structured concurrency is and how it helps in writing thread-safe code without the need for additional synchronization A detailed discussion of coroutine machinery and its suspend and customization points Introduction of schedulers, senders, and receivers abstractions, as well as an overview of all the asynchronous algorithms provided by the Sender/Receiver framework
Workshop Structure
40% lecture 60% hands-on coding
Course Topics
Asynchronous Programming with Coroutines Coroutine keywords, restrictions, suspend points Coroutine return type std::coroutine_traits Coroutine promise interface std::coroutine_handle Awaiters and Awaitables Symmetric Control Transfer C++ exceptions support Eager and Lazy Tasks async with coroutines sync_await
Structured Concurrency with Senders and Receivers Motivation The structure of an asynchronous processing pipeline Data parallelism with senders Cancellation support Transferring the work Sender factories Sender adaptors Sender consumers Implementing an asynchronous algorithm Sender/Receivers and Coroutines
Mateusz Pusz is a software architect, principal engineer, and security champion with more than 15 years of experience in designing, writing and maintaining C++ code for fun and living. C++ consultant, trainer, conference speaker, and evangelist focused on Modern C++. His main areas of interest and expertise are code performance, low latency, stability, and security.
Mateusz worked at Intel for 13 years, and now he is a Principal Software Engineer and the head of the C++ Competency Center at EPAM Systems. He is also a founder of Train IT that provides dedicated C++ trainings and consultant services to corporations around the world.
Mateusz is a contributor and an active voting member of the ISO C++ Committee (WG21) where, together with the best C++ experts in the world, he shapes the future of the C++ language. He is also a co-chair of WG21 Study Group 14 (SG14) responsible for driving performance and low latency subjects in the Committee. In 2013 Mateusz won “Bench Games 2013” – worldwide competition in the C++ language knowledge. ---
Registration for CppCon: cppcon.org/registration 100+ Sessions Over 5 Days! Pre and Post Con Workshops/Classes/Course and Much More! Join Us Onsite!
#cppcon #cppprogramming #cpp #programmingcourse #cpp #computer #coding #cpplearning #code #software #softwaredevelopment #technicalcourses #cplusplusprogramming #cplusplusInterview With Patrice Roy (Optimizing with Modern C++) - CppCon 2024CppCon2024-08-22 | Register Now for CppCon 2024: cppcon.org/registration Join Patrice Roy and Kevin Carpenter from September 15th - 20th at CppCon 2024 Aurora, Colorado, to enjoy the many and varied inspirational talks! ---
Interview With Patrice Roy (Optimizing with Modern C++) - CppCon 2024
Kevin Carpenter from @cppevents interviews Patrice Roy ahead of his two-day onsite training course "Optimizing with Modern C++"
Course Description C++ is seen by many as a language one uses to get more from a program: more speed, more deterministic behavior, lower resource consumption, etc. Interestingly, C++ does not necessarily make programs faster or smaller; what C++ brings to programmers is control, and that control can lead to all sorts of optimizations.
This course will bring participants to:
Identify those locations in a program that could benefit from optimizations, including gathering information from profiling tools Perform fecund optimizations of a function or of the entire program: reducing memory consumption, increase average execution speed, reducing latency on some key operations, increasing compilation speed, etc. This will include a look at programming practices that make code better even though they are not optimizations per se Benefit from compiler flags to add to the optimizations resulting from our efforts on the source code itself Topics covered in this course include:
FUNDAMENTALS (approx. 60 minutes) - What do we mean by “optimization”? - Optimizing for what / towards what end? - Average execution speed - Worst-case execution speed - Smallest average deviation - Reducing latency when some event occurs - Memory consumption - Layout of objects in memory
- UNDERSTANDING THE INTERDEPENDENCIES BETWEEN THESE ASPECTS - Impact of optimizing one aspect on the others - Measuring (before and after) - Detecting regressions
- HOW WE WILL MEASURE EXECUTION SPEED - HOW WE WILL ESTIMATE MEMORY CONSUMPTION FOR ONE OR MANY OBJECTS - This is a delicate topic
- EXERCISES
Note: this first section will be limited to a broad overview of the topics covered therein.
PROFILING AND IDENTIFICATION OF "HOT SPOTS" - THIS SECTION WILL EMPHASIZE IDENTIFYING THOSE LOCATIONS IN A PROGRAM WHERE OPTIMIZATION COULD BRING BENEFITS. WE WILL USE TWO APPROACHES: - Analytical approach, reading code - Identifying locations where the need for optimization is evident - Examining examples where the need for specific gestures is a lot less evident - Examining examples where optimizations would lead to local or systemic performance regressions
- Profiling using tools - The goal here is to make it clear that investing a lot of effort at the wrong place in a program can be an inefficient use of our time
- EXERCISES (integrated throughout the section) Note: the topics in this section will be reinvested and integrated throughout the rest of this training.
LEVERAGING MODERN C++: TECHNIQUES AND LANGUAGE FEATURES - Impact of standard algorithms and lambda expressions - These have been called “negative cost abstractions” in the sense that, if well used, they make programs that use them faster than programs that do not
- IMPACT OF OBJECT SIZE AND LAYOUT ON PROGRAM SIZE AND EXECUTION SPEED. IN PARTICULAR WE WILL DISCUSS: - Alignment - The empty base optimization and the [[no_unique_address]] attribute - The impact of AoS (array of structs) and SoA (struct of arrays) representations - True sharing and false sharing - Bit fields
- CLASSICAL OBJECT-ORIENTED TECHNIQUES AND MODERN ALTERNATIVES - Generic approaches (templates, traits, concepts) - Static polymorphism - Using std::variant - Leveraging the type system to move computation from run-time to compile-time
Patrice Roy has been playing with C++ either professionally, for pleasure or (most of the time) both for over 30 years. After a few years doing R&D and working on military flight simulators, he has moved on to academics and has been teaching computer science since 1998. Since 2005, he has been involved more specifically in helping graduate students and professionals from the fields of real-time systems and game programming develop the skills they need to face today’s challenges. ---
100+ Sessions Over 5 Days! Pre and Post Con Workshops/Classes/Course and Much More! Join Us Onsite!
#cppcon #cppprogramming #cpp #programmingcourse #cpp #coding #cpplearning #code #software #softwaredevelopment #technicalcourses #cplusplusprogramming #cplusplusInterview With Phil Nash (Accelerated TDD: For More Productive C++) - CppCon 2024CppCon2024-08-21 | Register Now for CppCon 2024: cppcon.org/registration Join Phil Nash and Kevin Carpenter from September 15th - 20th at CppCon 2024 Aurora, Colorado, to enjoy the many and varied inspirational talks! ---
Interview With Phil Nash (Accelerated TDD: For More Productive C++) - CppCon 2024
Kevin Carpenter from @cppevents interviews Phil Nash ahead of his two-day onsite training course "Accelerated TDD: For More Productive C++"
Course Description We all know that writing tests for our code is “what we should do”, and maybe we’re even doing that already. But it feels like extra busy-work that slows us down – and they hardly ever catch any bugs anyway…
Maybe we’ve even tried TDD, and felt that it was just adding even more ceremony to the problem with no real advantages.
But the advantages are definitely there! We just need a good grounding in what TDD _actually_ is (and isn’t) and how to do it properly – especially in the context of C++, which brings its own idiosyncrasies and bottlenecks to the matter.
That’s what this workshop aims to be. Whether you’ve never written a test before, or you’ve had some mileage with TDD already, be prepared to ratchet up your productivity by thinking about things in new ways and gaining more approaches to breaking down problems in sustainable ways.
Prerequisites - Be comfortable with the basics of C++. Being an expert is not required - A laptop with a reasonably modern OS. - A compiler capable of running C++11 (ideally gcc, clang or VC++) – don’t worry if it’s not what you use in your day job. - A development environment you’re comfortable with. - An open mind and motivation to find better ways of doing things.
Course Topics We’ll cover the following topics, but not necessarily exactly in this order:
FIRST DAY
Why “Accelerated”? Why test?
What is a test? - Type of test (unit, integration, system, regression, acceptance…) - Roles of a test - How testing makes us go faster
Why test first? - Coverage = Courage - Design pressures - Mental modes - Focus and flow - Never more than 5 mins from green
How to TDD - The TDD Cycle - The Art and Craft of TDD - Are we done yet?
Relevant Design Principles - Separation of Concerns - Single Responsibility - Cohesion - Low/ Loose Coupling - SOLID?
Growing Software, Guided By Tests - Putting it all together - Treat test code like production code - Negative paths - Avoiding brittle tests - Pruning tests - Dependent Tests - Tests as documentation
SECOND DAY
Decelerated TDD - Slowing down to speed up - Deliberate Practice
Pain points and Limitations - Slow running tests - Flakey Tests - Brittle tests revisited - Testing the implementation - Orthogonal concerns (e.g. logging, error handling) - Premature Generalisation - Beware a false sense of security - Getting legacy code under test - Getting team buy-in - The Transformation Priority Premise
Beyond TDD - BDD - ATDD - Property based Testing - Mutation Testing - Fuzz Testing - Treat test code like production code, except when you shouldn’t - Mocking - Risk Planes
Next Steps - Keeping the momentum going - Pairing - Forming habits
We’ll work through several demos and exercises together and will often work in pairs.
Phil Nash is the original author of the C++ test framework, Catch2, and composable command line parser, Clara. As Developer Advocate at SonarSource he’s involved with SonarQube, SonarLint and SonarCloud, particularly in the context of C++. He’s also a member of the ISO C++ standards committee, organiser of C++ London and C++ on Sea, as well as co-host and producer of the Cpp.chat and No Diagnostic Required podcasts.
More generally Phil’s an advocate for good testing practices, TDD and using the type system and functional techniques to reduce complexity and increase correctness. He’s previously worked in Finance and Mobile and offers training and coaching in TDD for C++. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
Registration for CppCon: cppcon.org/registration 100+ Sessions Over 5 Days! Pre and Post Con Workshops/Classes/Course and Much More! Join Us Onsite!
What can go into a lambda expression? Let's put in all the things. ---
Ben Deane
Ben has been programming in C++ for this whole millennium. He spent just over 20 years in the games industry working for companies like EA and Blizzard; many of the games he worked on used to be fondly remembered but now he’s accepted that they are probably mostly forgotten. After getting more interested in modern C++, in the teens he started giving internal company talks and then talks at various conferences, spreading ideas about types, algorithms and declarative and functional techniques.
In 2018 he left the games industry and worked in finance for a short spell, writing high-frequency trading platforms using the most modern C++ that compilers could support. Now he is a Principal Engineer at Intel where he puts monads inside your CPU. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #lambdaLightning Talk: Making Friends With CUDA Programmers (please constexpr all the things) Vasu AgrawalCppCon2024-05-10 | cppcon.org ---
Lightning Talk: Making Friends With CUDA Programmers (please constexpr all the things) - Vasu Agrawal - CppCon 2023 github.com/CppCon/CppCon2023
The `--expt-relaxed-constexpr` flag in nvcc allows `constexpr` code to be used on device, removing the need for explicit __device__ annotations. I'll encourage library authors to annotate more code as `constexpr`, allowing CUDA C++ programmers to use the library directly (rather than writing their own), saving work and thus making friends. ---
Vasu Agrawal
Vasu is a research engineer working at the intersection of graphics, machine learning, computer vision, and virtual reality (aka "the Metaverse"), focusing on high-performance, low-latency applications. In his free time, he enjoys watching movies & sci-fi TV shows, learning to play guitar (poorly), and practicing Tae Kwon Do. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Detecting Constant Folding to Prevent Substitution Failure - Patrick Roberts CppConCppCon2024-05-09 | cppcon.org ---
Lightning Talk: Detecting Constant-Folding to Prevent Substitution Failure - Patrick Roberts - CppCon 2023 github.com/CppCon/CppCon2023
Substitution failure can often be tricky to handle. This talk explores usage of the GCC and Clang compiler intrinsic __builtin_constant_p to short-circuit potential substitution failures in the context of writing a state machine. ---
Patrick Roberts
Patrick is a licensed Professional Engineer with three years of experience developing C++ software for low-latency systems. He enjoys solving complex problems with template metaprogramming techniques acquired while working at Quantlab Financial, and he has a Bachelor of Science in Electrical Engineering from University of Houston. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Undefined Behavior - Toolkit to Improve Communication With Clients - Laura KosturCppCon2024-05-08 | cppcon.org ---
Lightning Talk: Undefined Behavior - Toolkit to Improve Communication With Clients - Laura Kostur - CppCon 2023 github.com/CppCon/CppCon2023
My talk is about Socially Undefined Behaviour related to working in code. For example what happens when your product owner's instructions and directions are neither instructive nor directive or when a client uses a feature in a way you never imagined. The provides a simple toolkit and a call to action to keep the conversation going. ---
Laura Kostur
I am a communications professional with over fifteen years of experience in helping translate from expert to plain language and back again. I'm "techy" by marriage and have seen these challenges firsthand. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Program Complexity and Thermodynamics - Vadim Alexandrov - CppCon 2023CppCon2024-05-07 | cppcon.org ---
Lightning Talk: Program Complexity and Thermodynamics - Vadim Alexandrov - CppCon 2023 github.com/CppCon/CppCon2023
The roots of program complexity can be traced to the fundamental laws of physics. In this talk, we explore how to apply the laws of thermodynamics to better understand the challenges we face during software development. ---
Vadim Alexandrov
Vadim Alexandrov is a Senior Software Engineer on Bloomberg's Portfolio Data Engineering team. He joined the firm 8 years ago, and has worked as a software developer in the finance industry for more than 25 years, mostly writing C/C++. He earned a Master of Science degree in plasma physics from Moscow State University. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #thermodynamicsLightning Talk: Is Polymorphism in C++ Really That Bad? - Paul Tsouchlos - CppCon 2023CppCon2024-05-06 | cppcon.org ---
Lightning Talk: Is Polymorphism in C++ Really That Bad? - Paul Tsouchlos - CppCon 2023 github.com/CppCon/CppCon2023
Case study of how we used polymorphism at my work to solve a problem with hardware control. I'll present what we did wrong at first, how we corrected it and the performance we can achieve for our particular application. I'll also briefly mention ways we can further improve our design. ---
Paul Tsouchlos
I'm a C++ dev that enjoys coding outside work and writing open source libraries and applications. I've worked with C++ for ~8 years and enjoy implementing algorithms and have a great interest in AI and high performance computing. __
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Enhancing C++ exceptions with Context - Shachar Shemesh - CppCon 2023CppCon2024-05-03 | cppcon.org ---
Lightning Talk: Enhancing C++ exceptions with Context - Shachar Shemesh - CppCon 2023 github.com/CppCon/CppCon2023
Exceptions in C++ are missing important context. You know something bad happened, and you kinda know what, but you don't have any context on what the program was trying to do, or why it was trying to do it.
Class Context to the rescue! ---
Shachar Shemesh
Shachar Shemesh has been programming computers since the 8-bit era, and still finds passion in it today. Shachar's professional career has taken him to security, networking, storage and video streaming. Outside his professional career Shachar is... also programming. He has several open source projects to his name, and is lately working on creating his childhood computers, from scratch, on low-cost FPGAs. Shachar also plays the saxophone. Not necessarily well. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
std::move allows the creation of const rvalue references, which is almost always wrong. It also allows moving out of lvalue references, which can be dangerous since you don't have real ownership over them and a caller might not expect the object to disappear. Let's fix those problems using macros, reflection, and more macros. ---
Jonathan Müller
Jonathan is a library developer at think-cell. In his spare time, he works on various C++ open source libraries for memory allocation, cache-friendly containers, or parsing. He also blogs at foonathan.net and is a member of the C++ standardization committee. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Know Your Audience: Who’s Building Your C++ Code - Chris Thrasher - CppCon 2023CppCon2024-05-01 | cppcon.org ---
Lightning Talk: Know Your Audience: Who’s Building Your C++ Code - Chris Thrasher - CppCon 2023 github.com/CppCon/CppCon2023
Know who is building your code because it impacts the decisions you make in your build system. My talk presents an idea for dealing with how different people need different things from your build. ---
Chris Thrasher
Chris Thrasher is a robotics software developer who focuses on how to best use C++ and related build tools to deliver robotic systems. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: (Fine) Wine and MSVC: What Could Possibly Go Wrong? - Yannic Staudt - CppCon 2023CppCon2024-04-30 | cppcon.org ---
Lightning Talk: (Fine) Wine and MSVC: What Could Possibly Go Wrong? - Yannic Staudt - CppCon 2023 github.com/CppCon/CppCon2023
A short story about wine, command line arguments, paths and what it takes to cross compile binaries for Windows targets on a Linux host using MSVC and why you might consider doing the same! ---
Yannic Staudt
Yannic is one of the co-founders of tipi.build, a hacker at heart and has written software for anything from 4 bit micros to distributed data processing systems. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Lets Fix Sparse Linear Algebra with C++. Itll Be Fun and Easy! - Benjamin BrockCppCon2024-04-29 | cppcon.org ---
Lightning Talk: Let's Fix Sparse Linear Algebra with C++. It'll Be Fun and Easy! - Benjamin Brock - CppCon 2023 github.com/CppCon/CppCon2023
Sparse linear algebra is hard. There are a large variety of different sparse linear algebra formats, and they all require obtuse index arithmetic in order to use. But what if we could fix this? In this talk, I'll present an idea for "fixing sparse linear algebra" using customization points, the ranges library, and high-level multi-dimensional iteration. ---
Benjamin Brock
Ben Brock is a PhD student at UC Berkeley, where he works on building libraries, tools, and algorithms for high-performance computing. His main work focuses on building a cross-platform library of data structures for distributed applications, with a focus on sparse linear algebra and graph algorithms. Ben is also a member of the GraphBLAS Languages Committee and is involved in drafting the C++ GraphBLAS API Specification. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Higher-Order Template Metaprogramming with C++23 - Ed Catmur - CppCon 2023CppCon2024-04-26 | cppcon.org ---
Lightning Talk: Higher-Order Template Metaprogramming with C++23 - Ed Catmur - CppCon 2023 github.com/CppCon/CppCon2023
C++20's Concepts transformed metaprogramming, but they can still be inflexible and are not readily composable. I demonstrate a few simple yet powerful techniques to allow building concepts from type traits, type transformations and even other concepts. ---
Ed Catmur
At Maven Securities for the best part of a decade, I work to make developers happier and more productive, and programs (mostly C++) faster, more powerful, and more correct. __
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
Hopefully an amusing and light-hearted look at C++ and its strengths and responsibilities in the software world from a recent life-changing experience. ---
Neil Henderson
Neil is a C++ software developer from Australia working with video and media. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Write Valid C++ and Python in One File - Roth Michaels - CppCon 2023CppCon2024-04-19 | cppcon.org ---
Lightning Talk: Write Valid C++ and Python in One File - Roth Michaels - CppCon 2023 github.com/CppCon/CppCon2023
A demo of a neat/horrifying hack to use the preprocessor to define a constants file that can be consumed by C++ and Python. ---
Roth Michaels
Roth Michaels is a Principal Software Engineer at Native Instruments, an industry leader in real-time audio software for music production and broadcast/film post-production. In his current role he is involved with software architecture and bringing together three merged engineering organizations and legacy codebases: Brainworx, iZotope, and Native Instruments. He also supports the Audio Research team to help accelerate moving research to productization and developing fast prototyping tools for product teams. Before merging with Native Instruments, when he joined iZotope, Roth was the lead library designer of a new internal cross-platform "Glass", part of which is now available as open-source. More recently in his former role as Mix/Master Software Architect, Roth helped develop the reference implementation to move iZotope's products to subscription and led the team that launched the company’s first SaaS offering for music producers. Roth studied music composition at Brandeis University and continued his studies in the Dartmouth Digital Musics program. Roth began his career in software development writing software for his own compositions, and the works of other composers and artists, and teaching MaxMSP to composers and musicians; both private instruction and designing university courses. Before joining iZotope, he was working as a consultant for small startups working on mobile applications specializing in location services and Bluetooth. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #pythonprogrammingLightning Talk: Filling the Bucket: Reading Code, C++ Code Interviews & Exams - Amir Kirsh - CppConCppCon2024-04-18 | cppcon.org ---
Lightning Talk: Filling the Bucket: Reading Code, C++ Code Interviews & Exams - Amir Kirsh - CppCon 2023 github.com/CppCon/CppCon2023
We are going to review and practice a reading code challenge. Reading code skills are quite important, maybe even more than writing code. So let's dive together into filling the bucket code reading challenge! ---
Amir Kirsh
Amir Kirsh is a C++ lecturer at the Academic College of Tel-Aviv-Yaffo and a visiting lecturer at Stony Brook University, previously the Chief Programmer at Comverse, after being CTO and VP R&D at a startup acquired by Comverse. He is also a co-organizer of the annual Core C++ conference and a member of the ISO C++ Israeli National Body. __
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: C++ and the Next Generation: How to Support Women and Families in Tech - Sara BouléCppCon2024-04-17 | cppcon.org ---
Lightning Talk: C++ and the Next Generation: How to Support Women and Families in Tech - Sara Boulé - CppCon 2023 github.com/CppCon/CppCon2023
We have a problem in Tech. Statistically speaking, women make up 27% of the workforce in Tech, and half of women in tech drop out by the age of 35. What are some steps and strategies that we can take as a community to support our colleagues success. ---
Sara Boulé
I am currently a Lead SW Engineer at Laerdal Labs, DC. We provide solutions and tooling for hospitals, universities, first responders to help save lives and improve patient outcomes.
I am the one with a baby strapped to me. Come say hi! I don't bite (although she might). ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #womenintech #diversityintech #cppLightning Talk: Spanny: Abusing C++ mdspan Is Within Arm’s Reach - Griswald Brooks - CppCon 2023CppCon2024-04-16 | cppcon.org ---
Lightning Talk: Spanny: Abusing C++ mdspan Is Within Arm’s Reach - Griswald Brooks - CppCon 2023 github.com/CppCon/CppCon2023
mdspan introduced in C++23 gave us a standard multidimensional way to view into a container of data. While the canonical use case is to refer to a stack or heap allocated data, the accessor policy allows you to inject any side effect allowing the data to come from anywhere... like a robot arm inspecting bins. ---
Griswald Brooks
I'm the robotics track chair. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #roboticsLightning Talk: Help! My Expression Template Type Names Are Too Long! - Braden Ganetsky CppCon 2023CppCon2024-04-15 | cppcon.org ---
Lightning Talk: Help! My Expression Template Type Names Are Too Long! - Braden Ganetsky - CppCon 2023 github.com/CppCon/CppCon2023
Even the name of this talk is too long! If we're ever working with expression templates, we can easily make type names long enough to slow down compilation time. Suddenly our "zero-overhead" expression templates start giving a large compile time overhead. I'll show off a C++20 trick to fix this problem. ---
Braden Ganetsky
Braden Ganetsky graduated from the University of Manitoba with a degree in mechanical engineering, but soon pivoted to C++. Now he spends his days working on supply chain simulation software, and spends his nights working on parser combinators and getting involved in the C++ community. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
I explain some of the ways to make interfaces, both static and dynamic in this talk, and how concepts can be optionally used. ---
Megh Parikh
I work at Bloomberg as a C++ developer since about 4 years. My interests are in understanding different programming languages and reason about the choices taken. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: Un-Undefining Undefined Behavior in C++ - Jefferson Carpenter - CppCon 2023CppCon2024-04-11 | cppcon.org ---
Lightning Talk: Un-Undefining Undefined Behavior in C++ - Jefferson Carpenter - CppCon 2023 github.com/CppCon/CppCon2023
Interpreting the C++ abstract machine in the context of the real machine that it runs on. If your program contains UB, the compiler is allowed to emit any code whatsoever, and may optimize out any code paths leading to UB. But what if you made it so the compiler had no way to tell that the behavior was undefined? Then it would have to generate code such that, if the behavior was defined, the program would run correctly. Then you can write all the UB you want! In this undefined talk, I give a couple examples of UUB (un-undefined behavior). ---
Jefferson Carpenter
I spent my early life as a baby, but soon grew into a child. By college I had already graduated from high school, and now I'm extant. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: A Fast, Concurrent Data Loader for Time-Series Data - Glenn Philen - CppCon 2023CppCon2024-04-10 | cppcon.org ---
Lightning Talk: A Fast, Concurrent Data Loader for Time-Series Data - Glenn Philen - CppCon 2023 github.com/CppCon/CppCon2023
In this talk I briefly share the design of a high performance data loader used to iterating over time series data stored on disk across many individual files. The data loader aggregates data streams from different sources and of different kinds of data, orders it by timestamp, and feeds it to an offline test harness concurrently and without locking. ---
Glenn Philen
Today I work remotely for Invisible AI, a computer vision company, and study Computer Science at Georgia Tech. Prior to this I worked on computer vision projects at Carnegie Mellon and in finance. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
Sometimes things are not what we think of them. But we keep using them based on our perception. ClangFormat is a widely used tool by the C++ community. Join me to explore the typical delusions around it. ---
Anastasia Kazakova
As a C and C++ software developer, Anastasia Kazakova created real-time *nix-based systems and pushed them to production for 8 years. She worked as an intern in Microsoft Research, Networking department, outsourced in Telecom, and launched the 4G network. She has a passion for networking algorithms and embedded programming and believes in good tooling. With all her love for C++, she is now the Product Marketing Manager on the JetBrains C++ tools and .NET marketing teams. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppLightning Talk: The Power of Silence and Music in Agile Software - Valentina Ricupero - CppCon 2023CppCon2024-04-08 | cppcon.org ---
Lightning Talk: The Power of Silence and Music in Agile Software - Valentina Ricupero - CppCon 2023 github.com/CppCon/CppCon2023
To work in a highly uncertain environment (startup) with limited resources and time pressure to deliver products to the market requires innovation and creativity. In this lightning talk I will show some of the framework and facilitation tools, I used in the past and I am currently using at tipi.build to foster innovation, make decisions and leverage the full power of a team. ---
Valentina Ricupero
Valentina Ricupero helps teams and leaders find the path to success through a clear plan, sustainable growth and speed to market. In the past 14 years, Valentina held leaderships roles in the software industry ranging from business development to innovation and customer success team lead. At tipi.build, Valentina focuses on creating pathways for users to connect, learn and engage. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
In this lightning talk, we will explore the journey of implementing coroutines in C++17 before they were added to the language in C++20. The implementation uses macros, template metaprogramming, assembly functions, and more that resulting in working coroutines despite somewhat "horrible" code. Discover how local variables within the coroutine body were leveraged to calculate frame sizes and ensure correct variable lifetimes during suspension, resumption, and destruction. ---
Alon Wolf
Alon is a Senior Software Engineer at Medtronic specializing in 3D and computer graphics with a passion for high performance. He has developed many custom simulation and rendering engines for different platforms using modern C++. He also writes a C++ technical blog and participates in game jams. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
Introverts often shy away from speaking at conferences, while conferences need all the speakers they can find. This talk will show introverts that speaking is a natural role for them. ---
Rudyard Merriam
Rud Merriam is a retired software developer, having lived through the spaghetti, structured programming, and object-oriented development paradigms. He's trying to figure out functional programming and keep up with the latest C++ standards.
Rud wrote his first FORTRAN IV in 1968 and his first C++ in 1990 with Borland's Turbo C++. During his career, he worked mainly with embedded systems, with one system measuring the flow in real pipelines. Since retirement, he has used C++ with multiple NASA Centennial Challenges of robotics on Mars and the Moon. He sporadically writes about C++ on Medium.com. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #introvertLightning Talk: Constraining Automated Trading Risk with Linux Signals - Max Huddleston CppCon 2023CppCon2024-04-03 | cppcon.org ---
Lightning Talk: Constraining Automated Trading Risk with Linux Signals - Max Huddleston - CppCon 2023 github.com/CppCon/CppCon2023
Correct signal handling is a basic but important aspect of Linux applications. I'll give a brief overview of Linux signals, expand on why process management is a risk for a trading firm like Optiver, and how we've used Linux signals in our core control applications to mitigate that risk. ---
Max Huddleston
I'm a software engineer at Optiver based out of our Austin office. I joined Optiver three years ago after graduating from the University of Wisconsin - Madison. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #linuxGreat C++ is_trivial: trivial type traits - Jason Turner - CppCon 2023CppCon2024-04-02 | cppcon.org ---
Great C++ is_trivial: trivial type traits - Jason Turner - CppCon 2023 Jason Turner - CppCon 2023 github.com/CppCon/CppCon2023
There are many ways to initialize an object in C++, and much time spent analyzing the efficiency of the many options. We then think and rethink and overthink how to avoid copies and if a `std::move` would be more efficient in a certain case.
But if we understand what it means for a type to be trivial most of these questions now become meaningless. We can get all of the efficiency we could hope for, and probably more.
We will look at the trivial type traits, what they mean, and how they affect our code. Will will then examine the benefits of using trivial types and the impact on performance. ---
Jason Turner
Jason is host of the YouTube channel C++Weekly, co-host emeritus of the podcast CppCast, author of C++ Best Practices, and author of the first casual puzzle books designed to teach C++ fundamentals while having fun! ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppBetter CMake: A World Tour of Build Systems - Better C++ Builds - Damien Buhl & Antonio Di StefanoCppCon2024-04-01 | cppcon.org ---
Better CMake: A World Tour of Build Systems - Better C++ Builds - Damien Buhl and Antonio Di Stefano - CppCon 2023 github.com/CppCon/CppCon2023
Recently the C++ community is all about safety and new “successors” programming languages are popping up like Cpp2, Carbon, Val and others to complement C++ towards software security and memory safety.
While it’s very beneficial to design new languages features to support safety, it is equally important to have proper tooling. One key aspect of a programming language’s usability and safety is how the code written can be shipped to end-users and how the software supply chain security can be guaranteed.
Happily the C++ community has been unifying in the last decade from various build systems on CMake. Despite it’s massive adoption it is still criticized for reasons ranging from it’s turing-completeness to the fragmentation of the different CMake styles across codebases. It also lacks important features than newer build systems provide: dependency management, SBOM (Software Bill Of Material) generation, reproducible, hermetic and remote builds.
Newer potential “successors” build systems for C++ (e.g. bpt, GN, Meson, BuildCC) but also polyglot build systems like Bazel and Gradle have been designed to overcome these issues. In this talk we will analyze which choices were made and which benefits they offer. Finally looking at how software supply chain security, static+dynamic code analysis, reproducible, hermetic and remote builds are achieved in their ecosystem.
After looking at an overview of the design decisions and benefits that these “successors” build systems provides, we will identify best practices and provide pragmatic solutions to get all of this today with CMake.
To prove our point we will finally demo SBOM generation, build reproducibility to the single byte and remote builds on a large CMake codebase. ---
Antonio Di Stefano
Antonio (@TheGrizzlyDev) is a DevEx engineer at EngFlow, his main focus is elevating the happiness and productivity of software engineers. Open Source contributor to Natalie, a fast Ruby to C++ transpiler, he spends his spare time on Snazel : the only way to get Snake and Doom run on Build Systems DSL.
Damien Buhl
Damien (alias daminetreg) co-founder and CEO tipi.build is an enthusiast C++ developer. Opensource entrepreneur, CppCon Speaker, GameMaker.fr community founder, Qt for Android contributor, Boost.Fusion maintainer since 2014. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppPlenary: Coping With Other Peoples C++ Code - Laura Savino - CppCon 2023CppCon2024-03-29 | cppcon.org CppCon 2023 Early Access: cppcon.org/early-access Access All 2023 Session Videos Ahead of Their Official Release To YouTube. At least 30 days exclusive access through the Early Access system. Videos will be released to the CppCon channel on a schedule of one video per business day, with initial releases starting in November. --- Plenary: Coping With Other People's Code - Laura Savino - CppCon 2023 github.com/CppCon/CppCon2023
Sometimes we're fortunate enough to work with a small group of devs who share our coding values, and when we see their PRs come in, we nod along and say, "Yup, that's what I would have done. Oh, nice, that one's even better than my usual approach, I'd better tuck that idea away for next time."
This perfect alignment is precious... and particularly elusive in C++. Most of us are living in codebases that are profitable, complex, and updated in ways with which we have legitimate beef. How can we keep a sense of curiosity, progress, and satisfaction amidst patterns we would never have chosen?
This presentation explores the often-overlooked social aspects of C++ development, offering both practical tools and light-hearted commiseration. We'll draw from the field of behavior science to build strategies that address conflicting design patterns and the strong opinions that come with them. ---
Laura Savino
Laura Savino is a Photoshop engineer, globally recognized tech speaker, and expert in developer communications. She has adapted to both decades-old legacy codebases and beta versions of languages & frameworks. She's worked with a team that replaced their data layer with a functional reactive model that erased all the types, transitioned from working on cutting-edge Swift to egregiously templated Objective C++, and once attempted to replace a series of sequential `#define`s with a well-scoped enum that had unintended far-reaching consequences. Rather than swearing off computers entirely, she copes by scouring peer-reviewed articles about psychopathology and occupational health. __
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk
#cppcon #cppprogramming #cpp #codeBehavioral Modeling in HW/SW Co-design Using C++ Coroutines - Jeffrey Erickson, Sebastian SchoenbergCppCon2024-03-28 | cppcon.org ---
Behavioral Modeling in HW/SW Co-design Using C++ Coroutines - Jeffrey Erickson & Sebastian Schoenberg - CppCon 2023 github.com/CppCon/CppCon2023
Faced with the challenge of modeling a hardware IP that is controlled by a processor running C code, we developed two key methodologies that we want to share with the C++ community. The first is “Register Hooking”, where we use the preprocessor to alter the behavior of primitive data type interactions to allow for a model interaction without extensive code alteration. The second methodology is the use of coroutines to define side effects through behavioral models, which constitutes the majority of this talk.
Coroutines have the advantage of representing the parallel nature of hardware in a syntactically friendly way. Using coroutines also avoids several potential synchronization problems that arise with multi-threaded approaches or extensive and nested use of async/future. Complex hardware interactions can be represented with relative ease using coroutines. ---
Jeffrey Erickson
Jeffrey E Erickson works in HW/SW Codesign Architecture in the Programmable Solutions Group at Intel Corporation. He holds a BS in Electrical and Computer Engineering from the University of Virginia and a doctorate from Rutgers University and UMDNJ. For 15 years he has worked in embedded systems development including FPGA-processor integration, secure firmware development, and systems modeling. He holds 3 patents in image processing and signal integrity.
Sebastian Schoenberg
Sebastian Schoenberg is a Principal Engineer at Intel Corporation and responsible for Intel’s FPGA and eAsic firmware software architecture. After completing his PhD in computer science at the University of Technology in Dresden, Germany, Sebastian joined Intel’s Research Labs where he applied his micro-kernel and real-time operating system background to develop modern hypervisor software architectures to help define Intel’s Virtualization Technology Hardware Architectures. During his time at Intel’s Internet of Things group, Sebastian was driving information-centric network and distributed IoT edge computing software architectures for next generation smart IoT applications and scalable IoT device onboarding capabilities. Sebastian holds 30+ patents in the area of virtualization, Internet of Things and Information Centric Networking. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppWriting Python Bindings for C++ Libraries: Easy-to-use Performance - Saksham Sharma - CppCon 2023CppCon2024-03-27 | cppcon.org ---
Writing Python Bindings for C++ Libraries: Easy-to-use Performance - Saksham Sharma - CppCon 2023 github.com/CppCon/CppCon2023
The unix philosophy encourages writing small applications that compose well, and unix / linux / sh have provided us with nice chaining tools that let us achieve this. This works well enough, but chaining of processes makes it complicated to actually share memory space, library versions, and memory layouts of various objects. Working within a single programming language (Python for instance), we can script and keep local memory state and chain together things however we like. Think of numpy or pandas as examples.
In this talk we will discuss how we can use boost::python and friends to help us build our C++ libraries as dynamically linked libraries that can be exposed safely as python functions and objects in python programs. This will be done entirely in C++, with Python being the equivalent of a shell for us (helping us invoke our library's methods).
We will use some real-world-inspired examples of libraries as case studies to explore how to design the user facing API for such software, and what kind of nuances to think about while doing so. As a result, the attendees will learn how to go about designing python bindings for their own applications, and how to consider the performance implications of each design choice.
We will discuss, among other things, the following topics: 1. Managing memory to inter-op smoothly with Python, which is garbage collected 2. Inter-operability and conversion between C++ and python data containers 3. Handling multiple threads and background processing 4. Sharing data and pointers across modules 5. Ensuring build system consistency to avoid incompatibility across build environments 6. Some common API design ideas tried and tested in actual applications. ---
Saksham Sharma
Saksham Sharma is a Director of Quantitative Research Technology at Tower Research Capital LLC, a high frequency trading firm based out of New York. He develops low latency and high throughput trading systems and strategies used for the firm's global quantitative trading. In addition, he also helps design and improve big data research infrastructure used for trading research using a combination of C++ and Python. Thanks to an urge to optimize his daily workflow, he also owns the build systems, tooling, and package managers for C++ within his team.In the past, he has worked in the fields of program analysis research, functional programming, and systems security. He is a reformed geek (exemplified by a switch to VSCode after almost a decade with Emacs), and now enjoys driving, guitar, badminton, and snowboarding. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #pythonBuilding Effective Embedded Systems in C++: Architectural Best Practices - Gili Kamma - CppCon 2023CppCon2024-03-26 | cppcon.org ---
Building Effective Embedded Systems in C++: Architectural Best Practices - Gili Kamma - CppCon 2023 github.com/CppCon/CppCon2023
Embedded development is a complex process that brings together software, electronics, physics, mechanics, and algorithms. Designing a system with embedded components requires careful consideration of multiple factors. However, there is a lack of knowledge regarding correct practices in building embedded systems. In my talk, I will offer valuable insights to enhance the effectiveness of embedded development, focusing on improving robustness, speed, and maintainability. By addressing the challenges in this field, attendees will gain a deeper understanding of how to design and build embedded systems correctly. Through practical advice and best practices, I aim to empower developers to overcome obstacles and achieve successful outcomes in their projects. ---
Gili Kamma
Gili Kamma has a B.S.c in electrical engineering from Tel-Aviv University, Israel. With almost 20 years of experience developing embedded systems, she has worked across plenty of technical environments, BSP and low-level drivers in C, C++, Python, C#, Java, DB, and Cloud. She is an expert in developing embedded systems, gained a lot of knowledge from changing projects and products every year or two for the past 20 years. She has extensive experience in creating applications from scratch, improving the performance of existing ones, and maintaining products by solving bugs and ensuring quality. She has broad experience in industries such as Automotive, Cyber, IOT, Networking, and Aerospace. These days, she is the R&D manager at Blitz Electric Motors in Israel. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cpp #ُembeddedsystemAbstraction Patterns for Cross Platform Development Using C++ - Al-Afiq Yeong - CppCon 2023CppCon2024-03-25 | cppcon.org ---
Abstraction Patterns for Cross Platform Development Using C++ - Al-Afiq Yeong - CppCon 2023 github.com/CppCon/CppCon2023
Writing code that's intended to work across multiple platforms; be it hardware, graphics APIs, online storefronts or operating systems can be rather difficult. Many software engineers struggle when it comes to abstracting code especially junior engineers be it for a commercial software or a hobby project. To make matters worse, there's often not a lot of materials covering such as advance topic. This presentation aims to discuss several abstraction patterns that can be used to write cross platform code using the features and tools that C++ and operating system offers, from the bad to the good as well as the benefits and pitfalls of each method in terms of complexity, maintainability and performance. A case study of several cross-platform frameworks will also be included in the presentation. Hopefully this presentation will serve as a starting point and become the main reference for engineers across multiple experience levels across various industries when writing cross platform code. ---
Al-Afiq Yeong
Al-Afiq Yeong is a Software Engineer currently working in the Engine team at Criterion. His day to day involves performance monitoring games, making sure memory gets managed efficiently and developing new technologies that will empower future games developed with Frostbite. Prior to games, he was a full stack developer maintaining and building web apps in the service, nuclear and finance industry. Outside work, he spends most of his time writing his own rendering engine while trying to avoid the allure of the games sitting in his Steam library. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
Getting started with C++ can be intimidating, especially if you are learning on your own. Where do you even start?!
This talk walks you through getting started with C++, from obtaining a compiler toolchain and useful libraries, to finding learning resources and deciding whether you should be using source control and continuous integration. If you are already on your C++ journey, there’s likely stuff you weren’t familiar with that could make your life a bit easier. If you are a C++ expert, it’s useful to remind yourself of the challenges that beginners face so that we can help them avoid all the mistakes we made along the way. ---
Michael Price
Michael Price (he/him) is an experienced software engineer, currently working as a Product Manager with the Microsoft C++ team. His experience working at major software companies for over 18 years informs his thinking about how to enable C++ developers around the world to achieve more. His current focus is on enhancing C++ tooling to take advantage of the PaaS (platform-as-a-service) and IaaS (infrastructure-as-a-service) offerings from organizations like GitHub and Microsoft Azure.
In his spare time, Michael enjoys playing recreational soccer and spending time with his wife, two sons, and several household pets. He particularly likes playing board/card games and video games with his children. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
Most developers have at least some notion of the meaning of object, state, invariant, value, and invalid. On the other hand, it can be surprisingly difficult to precisely define these words in a way that matches both intuition and common usage. This difficulty has even led to divergence within the C++ standard library!
This talk is a journey of discovery where we not only find satisfactory definitions, but identify practical, good coding practices along the way. At the end of this talk you'll be able to name implicit contracts, understand the deep connection between move semantics and exception safety, and, in general, have a greater appreciation for the meaning of the programs we write every day. ---
David Sankel
David Sankel is a Principal Scientist at Adobe and an active member of the C++ Standardization Committee. His experience spans microservice architectures, CAD/CAM, computer graphics, visual programming languages, web applications, computer vision, and cryptography. He is a frequent speaker at C++ conferences and specializes in large-scale software engineering and advanced C++ topics. David’s interests include dependently typed languages, semantic domains, EDSLs, and functional programming. He is the project editor of the C++ Reflection TS, Executive Director of the Boost Foundation, and an author of several C++ proposals including pattern matching and language variants. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
Are you confident that the code you write, and the changes you make, are correct? What does “correct” even mean? How do we know the code we write today won’t become a long-term liability? These persistent questions can be enough to suck all the fun out of programming, but it doesn’t have to be that way. In this talk, we’ll look at the connective tissue of good code and show how to keep it strong and supple. There is no need to wait for language features to start using contracts. We’ll suggest replacing code reviews with something better and charting the path to a more hopeful future of software. ---
Dave Abrahams
Dave Abrahams is a founding contributor of the Boost C++ Libraries project and the founder of the first annual C++ conference, BoostCon/C++Now. He is a contributor to the C++ standard, and was a principal designer of the Swift programming language. He recently spent seven years at Apple, culminating in the creation of the declarative SwiftUI framework, worked at Google on the Swift for TensorFlow project and, briefly, on the Carbon language, and is now a principal scientist at Adobe's Software Technology Lab.
Sean Parent
Sean Parent is a senior principal scientist and software architect managing Adobe's Software Technology Lab. Sean first joined Adobe in 1993 working on Photoshop and is one of the creators of Photoshop Mobile, Lightroom Mobile, and Lightroom Web. In 2009 Sean spent a year at Google working on Chrome OS before returning to Adobe. From 1988 through 1993 Sean worked at Apple, where he was part of the system software team that developed the technologies allowing Apple’s successful transition to PowerPC. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppBack to Basics: Forwarding References - How to Forward Parameters in Modern C++ - Mateusz Pusz 2023CppCon2024-03-19 | cppcon.org ---
Back to Basics: Forwarding References - How to Forward Parameters in Modern C++ - Mateusz Pusz - CppCon 2023 github.com/CppCon/CppCon2023
This talk is a part of the Back To Basics track and provides the introduction to Forwarding References. During the talk, we will learn why those references are so important that they got a special name and how to use `std::forward` with them. We will put a lot of effort into understanding when we are dealing with them in the source code, and when it is not the case. We will also try to answer the question if they really deserve a "universal reference", as some people call them, and see how they may improve the overload set we write. Finally, we will learn about potential pitfalls they may introduce and how to handle them. ---
Mateusz Pusz
A software architect, principal engineer, and security champion with over 20 years of experience designing, writing, and maintaining C++ code for fun and living. A trainer with over 10 years of C++ teaching experience, consultant, conference speaker, and evangelist. His main areas of interest and expertise are Modern C++, code performance, low latency, safety, and maintainability.
Mateusz worked at Intel for 13 years, and now he is a Principal Software Engineer and the head of the C++ Competency Center at EPAM Systems. He is also a founder of Train IT, which provides dedicated C++ trainings and consulting services to corporations worldwide.
Mateusz is a contributor and an active voting member of the ISO C++ Committee (WG21), where, together with the best C++ experts in the world, he shapes the future of the C++ language. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
There are 3 major researches in C++ community nowadays. Developer Ecosystem research by JetBrains is conducted yearly, with the infographics and the raw data published for free for everyone. Since launch we learnt many insights on how to collect and process the data to get the results which are not presenting our thoughts on state of the art but close to the real world. The knowledge starts from the way to ask questions and goes to the way we interpret the answers, including the “facepalm” issues we meet yearly.
In this talk, I'll feature the results of the recent C++ community surveys, make some comparisons, and will try to showcase how to treat the differences. We'll also dive into the survey methodology aspects, learning how to remove brand, targeting and sampling biases, as well as see how a "properly" asked question changes the data in our C++ reality. This knowledge is crucial for everyone who rely on such researches and want to use them in a correct way. Come and learn how the magic numbers are collected and how to apply them to your decisions! ---
Anastasia Kazakova
As a C and C++ software developer, Anastasia Kazakova created real-time *nix-based systems and pushed them to production for 8 years. She worked as an intern in Microsoft Research, Networking department, outsourced in Telecom, and launched the 4G network. She has a passion for networking algorithms and embedded programming and believes in good tooling. With all her love for C++, she is now the Product Marketing Manager on the JetBrains C++ tools and .NET marketing teams. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
In the realm of C++ development, threading and memory management play a crucial role in crafting highly parallel and optimized programs. However, the absence of a memory model in C++98 posed challenges. Thankfully, with the advent of C++11, significant changes were introduced, including the introduction of a memory model, which brought forth a plethora of new and exciting tools for developers to leverage. This talk aims to delve into the realm of the C++ memory model, showcasing the arsenal of tools at our disposal. Attendees will gain insights into how CPUs and compilers optimize code and understand the criticality of adhering to the memory model correctly. Practical guidelines on utilizing these tools effectively will also be explored.
Throughout the talk, we will illustrate practical examples and share best practices for utilizing the diverse set of tools now available to us. From atomic operations to memory barriers, we will explore the range of techniques that allow us to develop robust and thread-safe code.
This talk will also illustrate the newer tools from newer C++ standards like JThread and so this talk will show how memory model is used and how it advanced since C++11 ---
Alex Dathskovsky
Alex has over 16 years of software development experience, working on systems, low-level generic tools, and high-level applications. Alex has worked as an integration/software developer at Elbit, senior software developer at Rafael, technical leader at Axxana, software manager at Abbott Israel, and now a group manager a technical manager at Speedata.io, an exciting startup that will change big data and analytics as we know them. In his current job, Alex is developing a new CPU/APU system working with C++20, massive metaprogramming, and the development of LLVM to create the next Big Thing for Big Data. Alex is a C++ expert with a strong experience in template meta-programming. Alex also teaches a course about the new features of modern C++, trying to motivate companies to move to the latest standards. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppBuilding Consensus on a Set of Rules for Our Massive C++ Codebase - Sherry Sontag - CppCon 2023CppCon2024-03-14 | cppcon.org ---
Building Consensus on a Set of Rules for Our Massive C++ Codebase - Sherry Sontag - CppCon 2023 github.com/CppCon/CppCon2023
In this talk, we will trace our efforts to build consensus across our Engineering department on how we use C++ at Bloomberg. We will use the example of how we are introducing broader naming conventions across the company’s massive C++ codebase, impacting our package management infrastructure and build tools. We will describe the lessons we’ve learned and the pitfalls we fell into as we were trying to achieve that goal, so that attendees can apply these lessons within their own organizations when introducing their own set of C++ rules.
This will also highlight the value of journalism skills in approaching engineering questions. Most important are the willingness to seek out all sides of a question; being humble enough to truly listen to even your loudest critics; and the endurance to keep asking questions until the issues become completely clear.
Our effort involved input from more than 150 people across many different application and infrastructure teams, many with different needs and coding styles. We then developed a set of rules that worked, though we also realize that the right answer will likely require ongoing flexibility. ---
Sherry Sontag
Sherry Sontag came to Bloomberg Engineering after co-authoring “Blind Man’s Bluff,” a New York Times bestseller about submarine espionage during the Cold War. Hired by Bloomberg 17 years ago for her ability to talk to anyone and actually listen, she recently has been working to create community consensus among developers as part of the Code Governance Solutions team. She is a graduate of Columbia University’s Graduate School of Journalism and Barnard College, Columbia University. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---
#cppcon #cppprogramming #cppDesigning Fast and Efficient List-like Data Structures - Yannic Bonenberger - CppCon 2023CppCon2024-03-13 | cppcon.org ---
Designing Fast and Efficient List-like Data Structures - Yannic Bonenberger - CppCon 2023 github.com/CppCon/CppCon2023
Ordered data structures like lists, queues, or stacks consume large shares of compute and memory footprints of many applications. However, the design of such containers, including the containers in the C++ STL, has mostly stayed the same in the past few decades. With computer architectures and performance shifting towards multi-core with multiple layers of caching in the past 10-15 years, these fundamental data structures designed for single-core architectures often become performance hot spots. This talk describes the process of designing an ordered, list-like data structure well suited for modern CPUs starting with the naive approach for a linked list and ending with a design optimized for today's computers, showing a drastic reduction in cache misses and thus showing 2+ times better performance compared to their STL equivalents. ---
Yannic Bonenberger
Yannic Bonenberger is a Software Engineer at EngFlow working on distributing builds across 10,000s of CPU cores. During his career, he has worked with many customers to reduce build times of large C++ applications from 3 hours or more to less than 20 minutes.
Before EngFlow, Yannic worked on compilers and developed tooling for integrating C++ libraries into larger applications primarily written in other languages while preserving idiomatic programming in both languages. ---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: events.digital-medium.co.uk ---