Loading…
Attending this event?
Cottonwood 8/9 clear filter
Monday, September 16
 

11:00 MDT

Creating a Sender/Receiver HTTP Server
Monday September 16, 2024 11:00 - 12:00 MDT
The sender/receiver framework for asynchronous operations in C++ is well on its way towards standardization in C++26. Previously, the theoretical background and implementation of the framework was shown but there wasn't much detail on how an application using sender/receiver would look like.

This presentation shows how to create a simple HTTP server using the sender/receiver framework with matching networking senders together with a coroutine task and and async scope. The code is created live using fundamental facilities. The goal is to demonstrate that the use of an asynchronous framework doesn't necessarily lead to excessive complexity when using C++'s facilities effectively. The resulting server could be embedded into any application, e.g., to inspect its state or change configurations. The takeaway is that it is reasonably straight forward to create an asynchronous program.
Speakers
avatar for Dietmar Kühl

Dietmar Kühl

Developer, Bloomberg
Dietmar Kühl is a senior software developer at Bloomberg L.P. working on the data distrubtion environment used both internally and by enterprise installations at clients. In the past, he has done mainly consulting for software projects in the finance area. He is a regular attendee... Read More →
Monday September 16, 2024 11:00 - 12:00 MDT
Cottonwood 8/9

12:30 MDT

Cpp2/cppfront BoF informal meetup
Monday September 16, 2024 12:30 - 13:30 MDT
This session is an informal “BoF + show-and-tell” meetup for people interested in Cpp2/cppfront.
Here are some ideas:
- Do you have a pull request you're working on? Show it off and get feedback
- Chat in person about some of the GitHub cppfront Discussion topics
- Other related topics welcome!
- Last year Herb used this meeting as a chance to run some informal polls
Speakers
avatar for Neil Henderson

Neil Henderson

Software Developer, Blue Tarp Media
Monday September 16, 2024 12:30 - 13:30 MDT
Cottonwood 8/9

14:00 MDT

So You Think You Can Hash
Monday September 16, 2024 14:00 - 15:00 MDT
Hashing is crucial for efficient data retrieval and storage. This presentation delves into computing hashes for aggregated user-defined types and experimenting with various hash algorithms. We will explore the essentials of hash functions and their properties, techniques for hashing complex user-defined types, and customizing std::hash for specialized needs. 
   Additionally, we (re)introduce a framework for experimenting with and benchmarking different hash algorithms. This will allow easy switching of hashing algorithms used by complex data structures, enabling easy comparisons. Hash algorithm designers can concentrate on designing better hash algorithms, with little worry about how these new algorithms can be incorporated into existing code. Type designers can create their hash support just once, without worrying about what hashing algorithm should be used. 
   You will gain practical insights and tools to implement, customize, and evaluate hash functions in C++, enhancing software performance and reliability.
Speakers
avatar for Victor Ciura

Victor Ciura

Principal Engineer, Microsoft
Victor Ciura is a Principal Engineer on the Visual C++ team, helping to improve the tools he’s been using for years. Leading engineering efforts across multiple teams working on making Visual Studio the best IDE for C++ Game developers.   Before joining Microsoft, he programmed... Read More →
Monday September 16, 2024 14:00 - 15:00 MDT
Cottonwood 8/9

15:15 MDT

Bridging the Gap: Writing Portable Programs for CPU and GPU
Monday September 16, 2024 15:15 - 16:15 MDT
This talk presents a series of effective patterns to address challenges arising when
code is developed that shall operate seamlessly on both GPU (Cuda) and CPU environments.
This scenario is a common oversight among Cuda developers,
given the substantial architectural differences between CPUs and GPUs.

The patterns presented cover a range of scenarios,
from handling stray function calls,
strategies for conditional compilation,
exploiting constexpr functions,
leveraging undefined behaviour,
usage of Cuda specific macros,
conditional instantiation of templates,
and
managing compiler warnings and errors.

Key patterns include: "Host device everything", "Conditional function body", "Constexpr everything", "Disable the warnings", "Defensive Programming", "Conditional Host Device Template", and "Function dispatching".

We evaluate each pattern based on ease of use, maintenance overhead, applicability and known usages. Additionally, pitfalls to avoid and considerations for implementations are provided to guide developers in adopting these patterns effectively.
Speakers
avatar for Thomas Mejstrik

Thomas Mejstrik

Scientist, University of Vienna
Thomas Mejstrik earned his doctoral degree in Mathematics from the University of Vienna, Austria, specializing in numerical linear algebra and high-performance computing. Additionally, he obtained a Master's degree in Piano Education from the University of Music and Performing Arts... Read More →
Monday September 16, 2024 15:15 - 16:15 MDT
Cottonwood 8/9

16:45 MDT

Composing Ancient Mathematical Knowledge Into Powerful Bit-fiddling Techniques
Monday September 16, 2024 16:45 - 17:45 MDT
If you're interested in high-performance computing, this talk is for you! This talk aims to revolutionise how you think about the performance of associative operations.

Associative iteration is a powerful technique that allows for efficient computation of associative operations (addition, multiplication, and other monoids) in `O(log(N))` time as opposed to `O(N)` time.

The name for this technique was coined by my collaborators, and it is my goal to share their insights about it.

Associative Iteration is an absurdly general technique that leverages the properties of associativity that when combined with parallelism can achieve outstanding performance with very little effort.

We define Associative Iteration (unrelated to "iterators" as you might expect) as the repeated application of some associative operation with respect to a "count", some explicit number of operations. This technique applies generally to all monoids, so whether you're concatenating string, multiplying matrices, or simply adding integers, this talk will be useful to you!

Furthermore any "divide and conquer" algorithm that can be represented using this method should achieve near optimal or optimal performance.

This talk will specifically introduce a templated function that allows you to leverage the power of Associative Iteration in a way specific to parallelism.
Speakers
avatar for Jamie Pond

Jamie Pond

Lead Software Developer, mayk inc
Monday September 16, 2024 16:45 - 17:45 MDT
Cottonwood 8/9
 
Tuesday, September 17
 

09:00 MDT

Relocation: Blazing Fast Save And Restore, Then More!
Tuesday September 17, 2024 09:00 - 10:00 MDT
Programming normal C++ leads to the use of dynamic memory, pointer chasing, and other issues that zap performance. Because there haven’t been practical solutions to those problems we seldom discuss them, creating the impression that they are unavoidable. Fortunately, the same C++ that binds us frees us to devise techniques centered around the concept of “relocatability” to solve those issues. We will explain what relocatability is and how to achieve it.

Consider the example of runtime polymorphism. You may want to have interfaces and implementations of interfaces. If your object refers to a “polymorphic” member, it normally cannot be implemented as a concrete sub-object, only as a base class pointer that points to a dynamically allocated instance of a derived class. This leads to millions of small objects dispersed throughout memory, all referencing one another. This is already very expensive and other issues around object layout makes things worse. One presenter witnessed 7% of Google Search Qrewrite CPU spent on dealloc, which must chase pointers to finish!

When we want to save the state of such programs, we must traverse those complex object graphs and encode them in complex file formats: serialization is required. Restore is further complicated by needing millions of small allocations which are often ephemeral. In general, working with data architected in this way is error prone and has abysmal performance. Our alternative to these complex object graphs is to lay out program data according to program design objectives, in our case allowing object moves. This is the essence of relocation. The set of techniques we will share with you is complete. Now that we can represent program state as simple, relocatable data, save and restore is simply memory mapping buffers.

For runtime polymorphism, we can use “Type Erasure”, the Design Pattern behind `std::function`, tailored for relocatability. Our Type Erasure performs better than normal polymorphism. We get better performance, we have no allocations, no deallocations, and no pointer chasing; resulting in happier programming. For other issues we get benefits of the same magnitude.

We will explain both well known and novel relocation techniques. The novel techniques have required the formulation of Generic Programming concepts including what we call “Value Manager”. We are presenting these for the first time.
Speakers
avatar for Eduardo Madrid

Eduardo Madrid

Consultor
Eduardo has been working for many years on financial technologies, automated trading in particular, and other areas where performance challenges can be solved in C++. He contributes to open source projects and teaches advanced courses on Software Engineering with emphasis in Generic... Read More →
Tuesday September 17, 2024 09:00 - 10:00 MDT
Cottonwood 8/9

12:30 MDT

CppCast Episode 390: CppCon Special
Tuesday September 17, 2024 12:30 - 13:30 MDT
In this session, the hosts of CppCast, Timur Doumler and Phil Nash, will be recording CppCast Episode 390: CppCon Special at CppCon in front of a live audience. The guest for this episode is... you! This will be an interactive episode in which the audience can ask us questions directly on the show – about the podcast, our work, or anything else in the world of C++ and beyond!
Speakers
avatar for Timur Doumler

Timur Doumler

Independent, Independent
Timur Doumler is the co-host of CppCast and an active member of the ISO C++ standard committee, where he is currently co-chair of SG21, the Contracts study group. Timur started his journey into C++ in computational astrophysics, where he was working on cosmological simulations. He... Read More →
avatar for Phil Nash

Phil Nash

Yak Shaver, Shaved Yaks Ltd
Phil is the original author of the C++ test framework, Catch2. He's an independent trainer and consultant. 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 CppCast. More generally he's an advocate for... Read More →
Tuesday September 17, 2024 12:30 - 13:30 MDT
Cottonwood 8/9

14:00 MDT

Back to Basics: Debugging and Testing
Tuesday September 17, 2024 14:00 - 15:00 MDT
Your code is not working -- PANIC! Well, not quite! In this session we are going to show you how to write tests to uncover bugs in the first place (and to guard against regressions when they’re fixed) and how to identify the bugs’ root causes with a debugger. These two fundamental software engineering skills (debugging and testing) in combination helps us write better software by improving our confidence that bugs do not reappear -- especially as software scales and changes over time. Debugging and testing are two related skillsets, and in this talk we will provide an introduction and concrete tools showing by example how to utilize each skill together. If you have never used a debugger and think ‘if it compiles it must work’ then this is the talk for you.
Speakers
avatar for Greg Law

Greg Law

CEO, Undo.io
Greg is co-founder and CEO at Undo. He is a programmer at heart, but likes to keep one foot in the software world and one in the business world. Greg finds it particularly rewarding to turn innovative software technology into a real business. Greg has over 25 years' experience in... Read More →
avatar for Mike Shah

Mike Shah

Professor / (occasional) 3D Graphics Engineer
Mike Shah is currently a teaching faculty with primary teaching interests  in computer systems, computer graphics, and game engines. Mike's research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics. Along with teaching... Read More →
Tuesday September 17, 2024 14:00 - 15:00 MDT
Cottonwood 8/9

15:15 MDT

Unraveling string_view: Basics, Benefits, and Best Practices
Tuesday September 17, 2024 15:15 - 16:15 MDT
In the world of C++, efficient string handling is crucial for performance-critical applications. Enter string_view, a lightweight view into character sequences. In this talk, we’ll explore the fundamentals of string_view, its advantages over traditional string, how it compares to std::span, common pitfalls to avoid, and practical case studies for using it effectively. Whether you’re a beginner or an intermediate developer, join us to enhance your code’s performance and adopt better practices.
Speakers
JL

Jasmine Lopez

Software Engineer, Microsoft
PO

Prithvi Okade

Software Engineer, Microsoft
Tuesday September 17, 2024 15:15 - 16:15 MDT
Cottonwood 8/9

16:45 MDT

Using Modern C++ to Build XOffsetDatastructure: A Zero-Encoding and Zero-Decoding High-Performance Serialization Library in the Game Industry
Tuesday September 17, 2024 16:45 - 17:45 MDT
XOffsetDatastructure is a serialization library designed to reduce or even eliminate the performance consumption of serialization and deserialization in the game industry by utilizing zero-encoding and zero-decoding. It is also a collection of high-performance data structures designed for efficient read and in-place/non-in-place write, with performance comparable to STL. 

Custom allocators are used to keep fields in contiguous memory, enabling them to be sent directly. Offset pointers are used to maintain pointer validity after buffer resizing and memory movement caused by modifications to variable-size fields. Some other techniques, such as containers that support offset pointers and auto-resizing mechanisms, are involved.

The performance statistics demonstrate that XOffsetDatastructure is a high-performance library, offering advantages in terms of encoding and decoding time, read and write performance, and message size compared to other modern C++ serialization libraries.
Speakers
avatar for Fanchen Su

Fanchen Su

Fanchen Su is a game research & development expert and team leader. He has over 20 years of experience in designing, writing, and maintaining C++ code. His main areas of interest and expertise are modern C++, code performance, low latency, and maintainability. He graduated from Wuhan... Read More →
Tuesday September 17, 2024 16:45 - 17:45 MDT
Cottonwood 8/9
 
Wednesday, September 18
 

09:00 MDT

Hidden Overhead of a Function API
Wednesday September 18, 2024 09:00 - 10:00 MDT
API design and code performance are some of the most discussed topics in the C++ community. However, surprisingly little is said about the fundamental element of programming where they meet: the function signature. As a result, overhead that can be incurred inside every function body and at every call site is not commonly recognized. Non-inlined function calls are places where the ABI specification comes into play, and its effect on the generated assembly doesn’t always match expectations, even on the common platforms.

In this talk, we’ll bridge the gap and provide a comprehensive list of performance pitfalls to be aware of when designing a function signature, including a compiler’s view on the frequently debated questions:
- returning by value or by output parameter;
- passing parameters by value or by reference;
- using abstractions that are commonly considered to have zero runtime overhead, such as std::unique_ptr and std::span.
Speakers
avatar for Oleksandr Bacherikov

Oleksandr Bacherikov

Software Engineer, Snap Inc
Oleksandr Bacherikov is a Software Engineer at Snap Inc working on Computer Vision and Machine Learning magic for mobile devices. He has more than 15 years of experience in Competitive Programming and is interested in implementing algorithms in the most effective, concise, and generic... Read More →
Wednesday September 18, 2024 09:00 - 10:00 MDT
Cottonwood 8/9

12:30 MDT

Bitcoin Script: Implementation Details and Use Cases
Wednesday September 18, 2024 12:30 - 13:30 MDT
Kris will explain Bitcoin Script, a stack-based scripting language integral to Bitcoin's transaction validation process, Bitcoin Script plays a crucial role in defining custom transaction rules and smart contract functionalities. He will explore the inner workings of Bitcoin Script from a technical standpoint, focusing on its implementation details in C++.

Attendees will gain insights into key concepts such as opcodes, stack operations, and the evaluation engine, as well as security considerations for safe script execution. Additionally, practical use cases will be examined to demonstrate Bitcoin Script's real-world scenarios.



In Eduardo Madrid’s presentation, Role Playing Bitcoin Protocols Including the Lightning Network, scheduled for Thursday, with just an intuitive understanding of Bitcoin Script he will describe the higher abstraction level protocols, such as the Lightning Network.

Join us on Friday for a panel in which Eduardo, Jon, and Kris will answer Bitcoin questions.
Speakers
avatar for Kris Jusiak

Kris Jusiak

https://github.com/krzysztof-jusiak
Kris is a passionate Software Engineer with experience across various industries, including telecommunications, gaming, and most recently, finance. He specializes in modern C++ development, with a keen focus on performance and quality. Kris is also an active conference speaker and... Read More →
Wednesday September 18, 2024 12:30 - 13:30 MDT
Cottonwood 8/9

14:00 MDT

Secrets of C++ Scripting Bindings: Bridging Compile Time and Run Time
Wednesday September 18, 2024 14:00 - 15:00 MDT
You must have a certain skill set to write a scripting binding interface for C++ like luabind, sol2, pybind, or ChaiScript. This is a skill set that few seem to posses. But developing this skill set helps you to understand the language in a new, deeper, and more unique way.

We will start from the first principles of what we are trying to accomplish and why. We will then cover the basics of deducing function signatures with templates and the limitations that are hit when you have function overloads. We will wrap these user provided functions with a compile time <-> runtime interface, then demonstrate a simple function dispatch engine.

If we have time, we will then show function reference syntax and how you can use this to bind script engine functions back into the C++ statically typed world.

We will not get to an actual parser for a scripting language. That will be left as an exercise to the viewer.
Speakers
avatar for Jason Turner

Jason Turner

Sole Proprietor, 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!
Wednesday September 18, 2024 14:00 - 15:00 MDT
Cottonwood 8/9

15:15 MDT

Building Safe and Reliable Surgical Robotics with C++
Wednesday September 18, 2024 15:15 - 16:15 MDT
This talk examines the use of C++ in building distributed robotic surgical systems, emphasizing safety, performance, and reliability. While C++ offers strong performance benefits, it also presents challenges in meeting industry standards and regulations in the medical technology field. We discuss the architectural decisions and strategies employed to meet international safety standards for medical devices, and present techniques for writing efficient, safe and reliable software. Our experience in building a surgical robotic system serves as a case study, highlighting the challenges and solutions in this highly regulated domain.
Speakers
avatar for Milad Khaledyan

Milad Khaledyan

Staff Robotics Software Engineer, Johnson & Johnson MedTech
Milad Khaledyan is a Staff Robotics Software Engineer at Johnson & Johnson MedTech, based in Santa Clara, CA, USA. With extensive experience across various companies, he specializes in software development for robotics in medical devices, as well as autonomous robots in manufacturing... Read More →
Wednesday September 18, 2024 15:15 - 16:15 MDT
Cottonwood 8/9

16:45 MDT

Adventures with Legacy Codebases: Tales of Incremental Improvement
Wednesday September 18, 2024 16:45 - 17:45 MDT
An experience report with tips and tricks for how to make incremental improvements to legacy code and how to prepare C++ code for reuse that has deep dependencies in legacy codebases. We will study real world examples from the merger of three companies all with 20+ year old C++ codebases.

The first part of the talk will cover techniques for making incremental changes to a large legacy C++ codebase. Adopting static analysis and runtime sanitizers, adding test coverage, updating conventions and style, using modern idioms, deprecating and removing legacy code, and fixing undefined behavior all comes with a cost. We will look at practical techniques for making incremental change in these areas without breaking the bank.

In the second part of the talk we will cover the challenges involved with sharing and reusing C++ code from a large legacy codebase and pragmatic techniques for sharing code. Examples will cover easy to extract pieces of code to libraries with deep legacy dependencies. Techniques will range from source code sharing, to hiding behind a DLL boundary, and methods that fall in between.
Speakers
avatar for Roth Michaels

Roth Michaels

Principal Software Engineer, Native Instruments
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... Read More →
Wednesday September 18, 2024 16:45 - 17:45 MDT
Cottonwood 8/9
 
Thursday, September 19
 

09:00 MDT

Performance engineering - being friendly to your hardware
Thursday September 19, 2024 09:00 - 10:00 MDT
Practical software does not run in abstract vacuum, it runs on underlying hardware platforms. Practical software engineering does not exist in abstract vacuum either. The software layer sits in between the domain specific requirements on top and the underlying runtime platforms below. Many interesting developments have happened on all three of those layers over the years, and while contemporary hardware has gone a long way forward, it often suffers from the attention deficit caused by an overshadowing flood of advancements and “advancements” in the software part of the universe. This new shiny programming language is safe, performant, and solves a backlog of problems that have been dragging for long. While that new shiny programming paradigm automagically relieves from dealing with low level details and the toolchain is plain amazing. The hardware side brings into this fistfight a set of new architectures, ISAs, and hardware abstractions – just to stay on par with the software side. Looks perfect? What else would an engineer dream about, no?
Not really. Let’s take a look at the contemporary commodity hardware platforms of today, and also at the trendy software engineering waves of today, and try to sense how and why it could (and frequently does) cross out the potential benefits of hardware advancements – and what could be done to actually be friendly to your underlying hardware, and at what cost.
Speakers
IB

Ignas Bagdonas

Principal Architect, Equinix
Ignas Bagdonas has been involved in network engineering field for over two decades, covering operations, deployment, design, architecture, development, and standardization aspects. He has worked on multiple large SP and enterprise networks worldwide, participated in many of the world's... Read More →
Thursday September 19, 2024 09:00 - 10:00 MDT
Cottonwood 8/9

12:30 MDT

C++ Under the Hood: (cont.)
Thursday September 19, 2024 12:30 - 13:30 MDT
This session will cover the content that did not fit in the alloted time of my primary session: "C++ Under the Hood". sched.co/1gZfx (Wed afternoon)


I will address the ">>>" topics in the session (that did not fit) plus opun request may review the "✓" topics (that did fit).


The abstract for my main session:
My talk will examine the internal C++ mechanisms around the topics of:
✓ o The C++ onion as it relates to construction, destruction and polymorphism,
>>> o Order of Object construction & destruction, and pre- & post-main() processing.
✓ o Member Function Pointers (not your father’s C function pointer),
✓ o Member Data Pointers (not raw pointers) (data-morphic functionality),
>>> o Understanding the Call Stack, Stack Frames and Base Pointer mechanisms
Speakers
avatar for Chris Ryan

Chris Ryan

ISO-CPP/WG21 Standards Member •• Technical Speaker •• Conference Advisor, •• Emeritus ••
Chris Ryan was classically trained in both software and hardware engineering. He is well experienced in Modern C++ on extremely large/complex problem spaces and Classic ‘C’ on Embedded/Firmware devices (large & small). Chris has no interest in C#/.,Net, Java, js or any web-ish... Read More →
Thursday September 19, 2024 12:30 - 13:30 MDT
Cottonwood 8/9

14:00 MDT

Limitations and Problems in std::function and Similar Constructs: Mitigations and Alternatives
Thursday September 19, 2024 14:00 - 15:00 MDT
In this talk, we will delve into the limitations and challenges associated with using std::function, std::packaged_task, std::apply, and similar constructs in modern C++ development. Despite their utility, these constructs often introduce performance overheads by invoking copies and moves of captured member variables, leading to increased complexity and unexpected behavior. I will share practical examples and common pitfalls encountered in real-world applications. Finally, I will present an alternative approach I have developed to mitigate these issues, offering a more efficient and reliable solution for developers.
Speakers
avatar for Amandeep Chawla

Amandeep Chawla

Sr. Computer Scientist II, Adobe
Amandeep Chawla is a seasoned software engineer with over 20 years of experience in C++. Since graduating in 2002, he has been actively working with C++ throughout his career. In his early years, Amandeep specialized in embedded systems, where he utilized a small subset of C++. This... Read More →
Thursday September 19, 2024 14:00 - 15:00 MDT
Cottonwood 8/9

15:15 MDT

What’s new for Visual Studio Code: Performance, GitHub Copilot, and CMake Enhancements
Thursday September 19, 2024 15:15 - 16:15 MDT
Get ready to dive into the latest C++ developments in Visual Studio Code (VS Code) developed in the last year. Our focus has been on faster extension performance, from optimizing the time to colorization to faster symbol searching in your workspace. Also, discover how VS Code has been supercharged to boost your productivity through new features such as extracting to a function and an easier CMake integration process for your projects. Throughout this session, we will deep dive into how you can leverage GitHub Copilot, your AI-powered pair programmer, to create, maintain, and optimize your C++ projects. Whether you are a VS Code veteran or just getting started, join us to learn more about the newest features in VS Code.
Speakers
avatar for Sinem Akinci

Sinem Akinci

Sinem Akinci graduated from the University of Michigan with a focus in Industrial Engineering and Computer Science. She now is the Product Manager at Microsoft working on Cross-platform and CMake developer experiences in Visual Studio and VS Code
Thursday September 19, 2024 15:15 - 16:15 MDT
Cottonwood 8/9

16:45 MDT

Linear Algebra with The Eigen C++ Library
Thursday September 19, 2024 16:45 - 17:45 MDT
Linear algebra is an essential part of scientific programming, particularly in domains such as quantitative finance, data science, physics, and medical research.  It is also relevant to imaging in game development.   As C++ did not have all the convenient built-in multidimensional array capabilities and supporting libraries that came with typical Fortran platforms, scientific programmers making the transition to C++ back in the late 1990’s and early 2000's often found themselves in an inconvenient situation with limited options.  These included building up this functionality mostly from scratch, wrestling with interfaces to numerical Fortran libraries such as BLAS and LAPACK, or somehow convincing management to invest in a third-party commercial C++ linear algebra library.

The situation has improved substantially over the years with the development of several well-regarded open-source linear algebra libraries for C++.  One in particular that has become popular, first released in 2006, is the Eigen library.  It has been adopted for use within both the TensorFlow machine learning library and the Stan Math Library, as well as at CERN, and it can also be found in the implementation of high-performance quantitative trading strategies in C++.

In this talk, we will examine the setup and basics of the Eigen library, followed by a discussion of some of its more advanced features, including applications of matrix decompositions frequently used in quantitative work, as well as its compatibility with STL algorithms.  It will conclude with an overview of how it can be used within the context of the C++26 BLAS interface proposal (P1673), via an interface with std::mdspan now available in C++23.
Speakers
avatar for Daniel Hanson

Daniel Hanson

CppCon Student Program Chair
Former faculty, Dept of Applied Mathematics/Computational Finance & Risk Management, University of Washington, Seattle.  Remains active in computational applications of C++ and supporting the CppCon student program.  
Thursday September 19, 2024 16:45 - 17:45 MDT
Cottonwood 8/9
 
Friday, September 20
 

09:00 MDT

Back to Basics: Object-Oriented Programming
Friday September 20, 2024 09:00 - 10:00 MDT
When delving into Object-Oriented Programming (OOP) in C++, we encounter several pivotal decisions. Questions arise: which data members should be private, public, or protected? Should we solely inherit from a class, or is there a need to modify the base class behavior? And when do we necessitate a virtual destructor? Moreover, are there scenarios where certain member functions cannot be virtual?

Understanding the concept of a virtual member function is crucial as it allows polymorphic behavior. Delving deeper, one might wonder about the compiler's implementation of this mechanism.

Integrating virtual functions with other features, like default parameters, demands careful consideration. This talk will explain why that's the case.

Oh, and by the way, the classic question is, what is the difference between struct and class? Come to my talk to get answers to all these questions.

By the end of this talk, you will depart with a lucid comprehension of OOP subtleties in C++, along with an acute awareness of potential pitfalls.
Speakers
avatar for Andreas Fertig

Andreas Fertig

Unique Code GmbH
Andreas Fertig, CEO of Unique Code GmbH, is an experienced trainer and consultant for C++ for standards 11 to 23.Andreas is involved in the C++ standardization committee, developing the new standards. At international conferences, he presents how code can be written better. He publishes... Read More →
Friday September 20, 2024 09:00 - 10:00 MDT
Cottonwood 8/9

10:30 MDT

C++/Rust Interop: Using Bridges in Practice
Friday September 20, 2024 10:30 - 11:30 MDT
A practical guide to bridging the gap between C++ and Rust. We cover bindings, including a manual approach, and compare them with generated bindings using CXX.  We also show how to link CMake with Cargo and link with transitive C++ dependencies using Conan.
Speakers
TW

Tyler Weaver

Sr. Software Engineer, SciTec
Tyler Weaver has been writing C++ for 10 short years in multiple domains. He's worked on signal processing, robotics, and now back-end web development at SciTec.
Friday September 20, 2024 10:30 - 11:30 MDT
Cottonwood 8/9

12:00 MDT

Bitcoin Panel: Ask Us (Almost*) Anything
Friday September 20, 2024 12:00 - 13:00 MDT
Join Eduardo, Jon, and Kris for an open discussion of the Bitcoin protocol, including implementations and implications.

* Note: We will avoid any discussion of partisan politics and will not give legal, financial, or tax advice.
Speakers
avatar for Eduardo Madrid

Eduardo Madrid

Consultor
Eduardo has been working for many years on financial technologies, automated trading in particular, and other areas where performance challenges can be solved in C++. He contributes to open source projects and teaches advanced courses on Software Engineering with emphasis in Generic... Read More →
avatar for Kris Jusiak

Kris Jusiak

https://github.com/krzysztof-jusiak
Kris is a passionate Software Engineer with experience across various industries, including telecommunications, gaming, and most recently, finance. He specializes in modern C++ development, with a keen focus on performance and quality. Kris is also an active conference speaker and... Read More →
avatar for Jon Kalb

Jon Kalb

CppCon, Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.He is... Read More →
Friday September 20, 2024 12:00 - 13:00 MDT
Cottonwood 8/9

13:30 MDT

What's New in Visual Studio for C++ Developers
Friday September 20, 2024 13:30 - 14:30 MDT
If you want to find out all the new features and improvements we've made to Visual Studio, MSVC, and vcpkg for C++ developers in the last year, this is the talk for you.

The last year has seen a huge explosion in AI tooling. In Visual Studio, this comes in the form of GitHub Copilot: an AI pair programmer for providing in-editor suggestions, answering questions through a chat interface, and more.

Outside of AI, we've continued to improve the core Visual Studio experience regardless of the platform you're targeting. For example, we've made improvements to our CMake and remote Linux support, our Unreal Engine experience, tools for memory layout visualization and #include cleanups, new visualizations for C++ Build Insights, in-editor support for GitHub pull requests. Of course, we've also continued work on C++ standards conformance and the code generation of the MSVC compiler.

You'll see all of these features in action in a real-world codebase to see how they can improve your day-to-day development by augmenting your existing workflows and giving you new utilities to add to your toolbelt.
Speakers
avatar for Michael Price

Michael Price

Senior Product Manager, Microsoft Corporation
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... Read More →
avatar for Mryam Girmay

Mryam Girmay

Product Manager, Microsoft
Mryam Girmay is a Product Manager dedicated to boosting the productivity of Visual Studio. She has a background in embedded systems development. When it comes to hobbies, she loves painting, plays volleyball, reading books, and family/friends time.
Friday September 20, 2024 13:30 - 14:30 MDT
Cottonwood 8/9

14:45 MDT

Data Structures That Make Video Games Go Round
Friday September 20, 2024 14:45 - 15:45 MDT
Modern video games are complex beasts that contains multiple systems interacting with one another storing, transferring and processing large sets of data in real time. While some data structures from the standard library such as the std::vector gets you by 90% of the time you need to store and process data, there will be the occasional 10% that requires a unique take.

This presentation aims to discuss the unique data structures that are commonly used in video games / game engines that caters to the occasional 10%. We will go over several systems outlining their requirements, constraints and present custom data structures that gets the job done.
Speakers
avatar for Al-Afiq Yeong

Al-Afiq Yeong

Senior Systems Programmer, Criterion Games | Electronic Arts
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... Read More →
Friday September 20, 2024 14:45 - 15:45 MDT
Cottonwood 8/9