Loading…
CppNorth2022 has ended
CppNorth, The Canadian C++ Conference, July 17-20, 2022,
The Omni King Edward Hotel, Toronto, Ontario M5C 1 E9

Log in to bookmark your favorites and sync them to your phone or calendar.

Saturday, July 16
 

09:00 EDT

Concurrency with Modern C++
This class gives you a detailed insight into the multithreading facilities of C++. Starting with the foundation in C++11, continuing with the parallel STL in C++17, and closing with the concurrency features in C++20. Additionally, we will have a more in-depth look into the C++ memory model consisting of the atomics and the various memory orders in C++. This insight will provide you with a better understanding of the general concurrency features of C++.


Morning Break 8:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Croissants, Danishes, and Muffins served with fruit preserves and butter
  • Assorted whole fruit

Mid-Morning Break 10:45am – 11:15am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted plain and fruit Greek yogurt

Lunch 12:15pm – 1:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Sodas
  • Mediterranean cobb salad with chickpeas, cherry tomatoes, roasted peppers, olives, hard-boiled eggs, feta, pomegranates, cucumbers, and oregano vinaigrette
  • Farro Salad: Sultana raisins, crushed almonds, fine herbs, and citrus
  • Heirloom tomato salad: Arugula, torn basil, and balsamic reduction
  • Marinated chicken with capers, olives, tomatoes, and grilled vegetables
  • Tortilla Espanola with roasted pepper, confit tomatoes and salt cod
  • Penne Primavera al forno
  • Rose water minted fruit salad
  • Orange olive oil almond cake

Afternoon Break 3:00pm – 3:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Sodas
  • Brownies and Blondies


Speakers
avatar for Rainer Grimm

Rainer Grimm

I've worked as a software architect, team lead, and instructor since 1999. In 2002, I created company-intern meetings for further education. I have given training courses since 2002. My first tutorials were about proprietary management software, but I began teaching Python and C... Read More →


Saturday July 16, 2022 09:00 - 17:00 EDT
C - Kensington

09:00 EDT

Game Development with Low Latency and High Excellence
Game development is a broad field deployed to a broad range of devices, such as phones, laptops, desktop computers with custom GPU hardware and consoles. One feature of development that unites all deployments is the requirement to fit all computation within the amount of time taken to display a frame. This drives the requirement for low latency programming. This course will cover much of the lower-level hardware information required to successfully develop low latency applications by showing you how to get to the metal of the machine and the GPU, a task well suited to C++ deployment. It will also cover topics such as optimisation and profiling, debugging and assembly, multithreading, file IO and some of the fundamentals of programming such as abstraction and generic programming.


Morning Break 8:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Croissants, Danishes, and Muffins served with fruit preserves and butter
  • Assorted whole fruit

Mid-Morning Break 10:45am – 11:15am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted plain and fruit Greek yogurt

Lunch 12:15pm – 1:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Sodas
  • Mediterranean cobb salad with chickpeas, cherry tomatoes, roasted peppers, olives, hard-boiled eggs, feta, pomegranates, cucumbers, and oregano vinaigrette
  • Farro Salad: Sultana raisins, crushed almonds, fine herbs, and citrus
  • Heirloom tomato salad: Arugula, torn basil, and balsamic reduction
  • Marinated chicken with capers, olives, tomatoes, and grilled vegetables
  • Tortilla Espanola with roasted pepper, confit tomatoes and salt cod
  • Penne Primavera al forno
  • Rose water minted fruit salad
  • Orange olive oil almond cake

Afternoon Break 3:00pm – 3:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Sodas
  • Brownies and Blondies


Speakers
avatar for Stephanie Brenham

Stephanie Brenham

3D Team Lead Programmer, Ubisoft
Stephanie is a 3D Team Lead Programmer at Ubisoft Toronto. She most recently worked on Far Cry 6, which was the winner of the 2021 Navgtr award for Outstanding Graphics. In her role, she is responsible for the visual fidelity and performance of the graphic systems in games. Prior... Read More →
avatar for Guy Davidson

Guy Davidson

Head of engineering practice, Creative Assembly
Guy Davidson is the co-author of Beautiful C++ and the Head Of Engineering Practice at Creative Assembly, one of the worlds largest and oldest game development studios, which he first joined in 1999, as well as a regular speaker and trainer.Guy is also a co-founder of the #include... Read More →


Saturday July 16, 2022 09:00 - 17:00 EDT
Vanity Fair B

09:00 EDT

Generic Programming: from Strange to Normal
Generic programming has been both a scary aspect and a strength of C++ for decades now. Seen as something that is often complex to express yet easy to use, this programming paradigm pervades contemporary C++ programs, and many are those who use the standard library without noticing how much of it is made of generic types and algorithms.

This course proposes an exploration of generic programming through many lenses. From relatively simple use cases, we will move to expressing one’s own generic types, writing efficient and safe generic containers and algorithms, writing and using type traits, solving real problems through template metaprogramming (the reputedly scary part; we’ll make it fun), variadic templates, programming with constexpr, fold expressions, and getting acquainted with the beauty of concepts. In the end, we will write less code to get better results.




Morning Break 8:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Croissants, Danishes, and Muffins served with fruit preserves and butter
  • Assorted whole fruit

Mid-Morning Break 10:45am – 11:15am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted plain and fruit Greek yogurt

Lunch 12:15pm – 1:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Sodas
  • Mediterranean cobb salad with chickpeas, cherry tomatoes, roasted peppers, olives, hard-boiled eggs, feta, pomegranates, cucumbers, and oregano vinaigrette
  • Farro Salad: Sultana raisins, crushed almonds, fine herbs, and citrus
  • Heirloom tomato salad: Arugula, torn basil, and balsamic reduction
  • Marinated chicken with capers, olives, tomatoes, and grilled vegetables
  • Tortilla Espanola with roasted pepper, confit tomatoes and salt cod
  • Penne Primavera al forno
  • Rose water minted fruit salad
  • Orange olive oil almond cake

Afternoon Break 3:00pm – 3:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Sodas
  • Brownies and Blondies


Speakers
avatar for Patrice Roy

Patrice Roy

Professor, Université de Sherbrooke
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 moved on to academics and has been teaching computer science since 1998. Since 2005, he’s... Read More →


Saturday July 16, 2022 09:00 - 17:00 EDT
B - Knightsbridge
 
Sunday, July 17
 

09:00 EDT

Concurrency with Modern C++
This class gives you a detailed insight into the multithreading facilities of C++. Starting with the foundation in C++11, continuing with the parallel STL in C++17, and closing with the concurrency features in C++20. Additionally, we will have a more in-depth look into the C++ memory model consisting of the atomics and the various memory orders in C++. This insight will provide you with a better understanding of the general concurrency features of C++.

Morning Break 8:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Bagels with Whipped Cream Cheese
  • Assorted whole fruit

Mid-Morning Break 10:30am – 11:15am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Granola Bars: Cranberry/Almond, Ginger Blueberry, Quinoa, Apple Cinnamon
  • Fruit Smoothies:  Strawberry and Banana

Lunch 12:15pm – 1:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted sodas
  • Tum Yum Soup with shrimp
  • Korean style crunch ramen noodle salad with julienne vegetables and sweet ginger dressing
  • Edamame slaw: Crisp apples, red cabbage, roasted peanuts, carrots, and soy lime vinaigrette
  • Thai Mango Salad
  • Sweet and spicy chicken
  • Fish and vegetable coconut curry
  • Vegetable potstickers
  • Kimchi fried rice
  • Coconut tapioca pudding with lychee and pineapples
  • Citrus salad

Afternoon Break 3:00pm – 3:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Lemonade
  • Crudité with dip


Speakers
avatar for Rainer Grimm

Rainer Grimm

I've worked as a software architect, team lead, and instructor since 1999. In 2002, I created company-intern meetings for further education. I have given training courses since 2002. My first tutorials were about proprietary management software, but I began teaching Python and C... Read More →


Sunday July 17, 2022 09:00 - 17:00 EDT
C - Kensington

09:00 EDT

Game Development with Low Latency and High Excellence
Game development is a broad field deployed to a broad range of devices, such as phones, laptops, desktop computers with custom GPU hardware and consoles. One feature of development that unites all deployments is the requirement to fit all computation within the amount of time taken to display a frame. This drives the requirement for low latency programming. This course will cover much of the lower-level hardware information required to successfully develop low latency applications by showing you how to get to the metal of the machine and the GPU, a task well suited to C++ deployment. It will also cover topics such as optimisation and profiling, debugging and assembly, multithreading, file IO and some of the fundamentals of programming such as abstraction and generic programming.

Morning Break 8:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Bagels with Whipped Cream Cheese
  • Assorted whole fruit

Mid-Morning Break 10:30am – 11:15am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Granola Bars: Cranberry/Almond, Ginger Blueberry, Quinoa, Apple Cinnamon
  • Fruit Smoothies:  Strawberry and Banana

Lunch 12:15pm – 1:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted sodas
  • Tum Yum Soup with shrimp
  • Korean style crunch ramen noodle salad with julienne vegetables and sweet ginger dressing
  • Edamame slaw: Crisp apples, red cabbage, roasted peanuts, carrots, and soy lime vinaigrette
  • Thai Mango Salad
  • Sweet and spicy chicken
  • Fish and vegetable coconut curry
  • Vegetable potstickers
  • Kimchi fried rice
  • Coconut tapioca pudding with lychee and pineapples
  • Citrus salad

Afternoon Break 3:00pm – 3:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Lemonade
  • Crudité with dip


Speakers
avatar for Guy Davidson

Guy Davidson

Head of engineering practice, Creative Assembly
Guy Davidson is the co-author of Beautiful C++ and the Head Of Engineering Practice at Creative Assembly, one of the worlds largest and oldest game development studios, which he first joined in 1999, as well as a regular speaker and trainer.Guy is also a co-founder of the #include... Read More →
avatar for Stephanie Brenham

Stephanie Brenham

3D Team Lead Programmer, Ubisoft
Stephanie is a 3D Team Lead Programmer at Ubisoft Toronto. She most recently worked on Far Cry 6, which was the winner of the 2021 Navgtr award for Outstanding Graphics. In her role, she is responsible for the visual fidelity and performance of the graphic systems in games. Prior... Read More →


Sunday July 17, 2022 09:00 - 17:00 EDT
Vanity Fair B

09:00 EDT

Generic Programming: from Strange to Normal
Generic programming has been both a scary aspect and a strength of C++ for decades now. Seen as something that is often complex to express yet easy to use, this programming paradigm pervades contemporary C++ programs, and many are those who use the standard library without noticing how much of it is made of generic types and algorithms.

This course proposes an exploration of generic programming through many lenses. From relatively simple use cases, we will move to expressing one’s own generic types, writing efficient and safe generic containers and algorithms, writing and using type traits, solving real problems through template metaprogramming (the reputedly scary part; we’ll make it fun), variadic templates, programming with constexpr, fold expressions, and getting acquainted with the beauty of concepts. In the end, we will write less code to get better results.

Morning Break 8:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Bagels with Whipped Cream Cheese
  • Assorted whole fruit

Mid-Morning Break 10:30am – 11:15am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Granola Bars: Cranberry/Almond, Ginger Blueberry, Quinoa, Apple Cinnamon
  • Fruit Smoothies:  Strawberry and Banana

Lunch 12:15pm – 1:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted sodas
  • Tum Yum Soup with shrimp
  • Korean style crunch ramen noodle salad with julienne vegetables and sweet ginger dressing
  • Edamame slaw: Crisp apples, red cabbage, roasted peanuts, carrots, and soy lime vinaigrette
  • Thai Mango Salad
  • Sweet and spicy chicken
  • Fish and vegetable coconut curry
  • Vegetable potstickers
  • Kimchi fried rice
  • Coconut tapioca pudding with lychee and pineapples
  • Citrus salad

Afternoon Break 3:00pm – 3:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Lemonade
  • Crudité with dip


Speakers
avatar for Patrice Roy

Patrice Roy

Professor, Université de Sherbrooke
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 moved on to academics and has been teaching computer science since 1998. Since 2005, he’s... Read More →


Sunday July 17, 2022 09:00 - 17:00 EDT
B - Knightsbridge

18:00 EDT

Registration Reception and Game Night
Get to know your fellow attendees, socializing and playing games.


Speakers! Tech-Check: Bring your laptop to validate the A/V configuration.


Welcome Reception 6:15pm – 9:00pm
  • Antipasto: Marinated Vegetables, Italian Meats and Crisp Breads
  • Caprese Salad
  • Thin Crust Gourmet Pizzas
  • Mushroom Bacci with Arugula and Roasted Garlic Cream Sauce
  • Crudité and Dips
  • Soy Glazed Sweet Potato and Aubergine Maki Roll (vegetarian)
  • Pastrami Salmon, Apple Fennel on Blini
  • Corn and Lentil Croquette (Vegan and Gluten Free)
  • House Made Beef Sliders with Bread and butter, pickles, cheddar, and tomato
  • 2 tickets good for domestic and imported beer, assorted sodas, and bottled water
  • Cash sales available after tickets


Sunday July 17, 2022 18:00 - 21:15 EDT
Vanity Fair A
 
Monday, July 18
 

08:00 EDT

Registration
Morning Beverage 7:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted bottled fruit juices

Monday July 18, 2022 08:00 - 08:45 EDT
Vanity Fair A

08:15 EDT

Chi Gung with Guy
Chi Gung with Guy (extracurricular activity, non-conference event)
Morning warm-up/awake-up
Length 15 minutes, ends 15 minutes before the keynote

Speakers
avatar for Guy Davidson

Guy Davidson

Head of engineering practice, Creative Assembly
Guy Davidson is the co-author of Beautiful C++ and the Head Of Engineering Practice at Creative Assembly, one of the worlds largest and oldest game development studios, which he first joined in 1999, as well as a regular speaker and trainer.Guy is also a co-founder of the #include... Read More →


Monday July 18, 2022 08:15 - 08:30 EDT
Vanity Fair B

08:45 EDT

Opening Keynote: Kate Gregory "Am I a Good Programmer?"
Speakers
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, Microsoft Most Valuable Professional (MVP), and partner at Gregory Consulting. Kate has been using C++ since before Microsoft had a C++ compiler. She is an early adopter of many software technologies and tools, and... Read More →


Monday July 18, 2022 08:45 - 10:30 EDT
A - Crystal Ballroom

10:30 EDT

Break (30m) (snack)
Morning Break 10:30am – 11:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted sodas
  • Individual plain and fruit Greek yogurt
  • Whole seasonal fresh fruit

Monday July 18, 2022 10:30 - 11:00 EDT
Palm Court

11:00 EDT

Programming for Warm Days: Avoiding Dangerous Conversions
Join Patrice Roy for an informal live coded session about temperature and how one can convert nicely between measurement units.  It will be both technical and amusing.

Speakers
avatar for Patrice Roy

Patrice Roy

Professor, Université de Sherbrooke
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 moved on to academics and has been teaching computer science since 1998. Since 2005, he’s... Read More →


Monday July 18, 2022 11:00 - 12:00 EDT
B - Knightsbridge

11:00 EDT

C++ Lambda Idioms
Ever since they were introduced in C++11, lambdas have been an essential language feature. Each subsequent standard added more functionality: we got generic lambdas and init captures in C++14, constexpr lambdas in C++17, default-construction and assignment, explicit template arguments and more in C++20, and even more possibilities are coming in the upcoming C++23 standard.

In this talk, we are looking at various interesting things you can do with lambdas. Some of these are well-established, useful idioms; others are lesser known, surprising tricks. Have you ever inherited from a lambda? Can you think of three different ways to call a lambda recursively? Do you know what happens if we assign an immediately-invoked lambda expression to a static variable? If not, then this talk is for you.

Speakers
avatar for Timur Doumler

Timur Doumler

Developer Advocate, JetBrains
Timur Doumler is C++ Developer Advocate at JetBrains and an active member of the ISO C++ standard committee. As a developer, he worked many years in the audio and music technology industry and co-founded the music tech startup Cradle. Timur is passionate about building inclusive communities... Read More →


Monday July 18, 2022 11:00 - 12:00 EDT
A - Crystal Ballroom

11:00 EDT

Quadrable

Quadrable is an authenticated multi-version database. It is a C++ library that implements a sparse binary merkle tree with compact partial-tree proofs. There is also a git-like command line that uses the library. Quadrable's primary implementation is a header-only C++17 library that uses LMDB as its persistent backing store. The data-structure used is authenticated, which means that the entire contents of a table can be digested down to a 32-byte hash. Anyone who knows this hash can perform remote queries and be confident that the responses haven't been tampered with. The DB is updated in a copy-on-write manner, which allows very inexpensive snapshots and checkpoints. Quadrable has a specially-designed proof export format that avoids including redundant sibling hashes and ones that could be calculated during verification. Proofs allow reconstruction of a partial-tree, which allows a verifier to perform local queries on this partial-tree and/or update it as though the entire data-set was available. If new proofs are downloaded, the partial-tree can be expanded to include the new values. New proofs can also be generated from the partial tree itself. The C++ library supports batch operations, which means that multiple values can be retrieved or modified with a single traversal of the tree. All get operations are zero-copy and involve no locking. Also included is the quadb command-line tool. It implements a git-like management interface for the DB, exposing nearly all the library's features. A native GUI is in development.

Speakers
avatar for Doug Hoyte

Doug Hoyte

Programmer based out of Toronto.


Monday July 18, 2022 11:00 - 12:00 EDT
C - Kensington

12:00 EDT

Buffet Lunch (Provided)
Lunch Buffet Provided 12:00pm – 1:30pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted sodas
  • Chef’s soup of the day
  • Antipasto of grilled vegetables, cured meats, olives, and crisp breads
  • Kale salad, quinoa, pomegranates, edamame, dried cranberries, heirloom cherry tomatoes, hemp seeds and cider vinaigrette
  • Baby romaine wedge salad with crumbled blue cheese, creamy ranch dressing and crispy bacon
  • Jerk chicken with grilled pineapple
  • Fish fry up with fresh kettle chips and tartar sauce
  • Indian lentil and vegetable curry with warm naan bread
  • Geelli pasta, capers, olives, sun-dried tomatoes, and confit tomato sauce
  • Dulce de leche cheesecake
  • Ice wine macerated fruit salad



Monday July 18, 2022 12:00 - 13:30 EDT
Vanity Fair A

13:30 EDT

The fine details behind C++ containers and algorithms
The C++ specification defines, in the library part of the spec, all sorts of requirements for containers and algorithms. Those requirements include complexity requirements, invalidation and concurrency rules. In this talk we will explore a sample of these rules to better understand the considerations of the spec and the practical implications. We would understand the limitations posed for library implementers and for users, go through some benchmarks and conclude with some practical advice and recommendations.

Speakers
avatar for Amir Kirsh

Amir Kirsh

Teacher, Dev Advocate, Academic College of Tel-Aviv-Yafo and Incredibuild
C++ lecturer at the Academic College of Tel-Aviv-Yaffo and at Tel-Aviv University and Dev Advocate at Incredibuild. Previously the Chief Programmer at Comverse. Co-organizer of Core C++ conference and a member of the Israeli ISO C++ NB.


Monday July 18, 2022 13:30 - 14:30 EDT
B - Knightsbridge

13:30 EDT

Building Abstractions at the Hardware-software Boundary
With the slowing of Moore’s law and explosion of ML workloads - there has been a new renaissance in domain specific architectures (DSAs) to help meet today’s compute demands. A large swath of these architectures are spatial in nature where compute is often unrolled in space to expose as much parallelism to accelerate a given workload. With this comes a natural regularity to the overall architecture which software compilers can take advantage of. Here we explore the inherent challenges that traditional architectures like GPUs and CPUs have for the software compilation problem, and discuss how DSAs can avoid such problems in its software architecture. Additionally, due to the deterministic characteristics of many spatial architectures like FPGAs and Tensor Streaming Processors (TSPs) - we show how we can use software to abstract out many of the details of the hardware to make the software compiler agnostic to specific hardware parameters of the device (such as vector length or number of PEs). Unlike traditional architectures, this allows a software chip-model to drive the underlying algorithms mapping to a given architecture and accurately model the resulting performance of the hardware - even prior to the construction of the device. Furthermore, this makes migration to new devices much simpler and simplifies the overall software development process. We will illustrate these concepts using FPGA open source tools and Groq’s TSP.

Speakers
avatar for Andrew Bitar

Andrew Bitar

Andrew Bitar received his MASc from the University of Toronto, where his research focus was on spatial architectures and applications for FPGAs. Before joining Groq, he was a Technical Lead at Intel developing a FPGA Deep Learning Accelerator and compiler. Andrew now leads a team... Read More →
avatar for Aidan Wood

Aidan Wood

Aidan Wood received his BASc from the University of Waterloo in 2021. During his degree he completed internships at AMD, Ubisoft Toronto, and Intel PSG. He concluded his degree with a capstone project building a configurable soft processor and accompanying LLVM-based C Compiler. At... Read More →


Monday July 18, 2022 13:30 - 14:30 EDT
C - Kensington

13:30 EDT

The Power of Compile-Time Resources
You've seen others constexpr All The Things, perform compile-time raytracing, optimize their regular expressions beyond anything thought previously possible, generate embedded platform settings, and perform absurd examples of C++ on ancient computers. You think that's all very interesting, but you still don't see how it applies to your real world large scale project.

In this talk we will see how we can apply real world compile-time (constexpr) resources in an established project and what kind of impact they will have.

Speakers
avatar for Jason Turner

Jason Turner

Owner, 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!


Monday July 18, 2022 13:30 - 14:30 EDT
A - Crystal Ballroom

14:30 EDT

Break (45m) (snack)
Afternoon Break 2:30pm – 3:15pm
  • Regular/Decaffeinated coffee and Hot teas
  • Assorted Sodas
  • Maple sugar shack tarts, Nanaimo bars, Ketchup chips and hickory sticks, Smarties



Monday July 18, 2022 14:30 - 15:15 EDT
Palm Court

15:15 EDT

Cute C++ Tricks (and what you can learn from them): part 2 of N
During the COVID-19 global pandemic, as we all searched for ways to stay connected to the C++ community, I innocently started posting short, 25-line or less C++ snippets of counterintuitive C++ code that I called my "Cute C++ trick of the day." The amount of attention these tricks got was surprising, and as I've posted more of them, I've realized that these counterintuitive snippets of C++ code offer pithy and memorable ways to teach people some intermediate or advanced aspects of C++ (that often come up in real code!).

I gave part 1 (of N) of this talk at CppCon 2021, and this is part 2 (of N). In this presentation, I will dissect a few more of my most popular "Cute C++ tricks" to a level of detail not possible on social media platforms like Twitter. I'll talk about how and why these tricks work the way they do, talk about the dark corners of C++ they touch upon, and talk about what you should actually do if you need to produce the same effect in production code. While not targeted at beginners, these tricks span the gauntlet from features that most intermediate programmers are aware of (but never thought to use in a particular way) to dark corners of the language that many of my C++ committee colleagues were surprised to learn about. Throughout it all runs a common thread: learning how to exploit your own curiosity to expand your toolbox, gain a better grasp of the fundamentals of C++, and ultimately, become a better programmer.

Speakers
avatar for Daisy Hollman

Daisy Hollman

Software Engineer, Google
Dr. Daisy S. Hollman began working with the C++ standards committee in 2016, where she has made contributions to a wide range of library and language features, including proposals related to executors, atomics, generic programming, futures, and multidimensional arrays. Since receiving... Read More →


Monday July 18, 2022 15:15 - 16:15 EDT
A - Crystal Ballroom

15:15 EDT

Binary Object Serialization with Structure Traversal & Reconstruction
I will present a minimally intrusive technique for extending a class to do data serialization in a binary format. When storing, it can deduce the data types using Template Argument Deduction (TAD).

When loading it uses a homebrew reflection technique for dynamic object creation. Reflection as a language feature will be unavailable until C++26. This serialization technique can dynamically recreate a persisted complex data structure/structure network. This is a platform agnostic technique. Not everybody is yet able to migrate to C++20, so this using C++14 compliant std::enable_if<>. We will also explorer optimizations for C++17 and what it takes to convert this technique to use C++20 concepts.

This trying is an exploration of multiple ideas that you might be able to apply to your code. It is not a talk trying to sell you on the use of this library. Serialization is just one application.

Speakers
avatar for Chris Ryan

Chris Ryan

[](){SpeakerLiaison();}
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 →


Monday July 18, 2022 15:15 - 16:15 EDT
C - Kensington

15:15 EDT

Lets Talk: Extend and Embed Python with C++
Python is very communicative. On the one hand, it is very easy to call C++ functionality from Python (extend), and on the other hand, Python can be used directly from a C++ runtime (embed). Extending allows you to offload performance-critical parts of your program to C++ or to overcome the GIL (global interpreter lock) in Python. Thanks to embedding a Python interpreter in your C++ application, the C++ application has a scripting interface.

I show how you can include existing shared libraries and extend Python with your own shared libraries thanks to the ctypes module. Furthermore, I introduce the frameworks SWIG and pybind11 to almost automate this process. Finally, I go into the mirror image process: How to embed Python in a C++ application.

Speakers
avatar for Rainer Grimm

Rainer Grimm

I've worked as a software architect, team lead, and instructor since 1999. In 2002, I created company-intern meetings for further education. I have given training courses since 2002. My first tutorials were about proprietary management software, but I began teaching Python and C... Read More →


Monday July 18, 2022 15:15 - 16:15 EDT
B - Knightsbridge

16:15 EDT

Break (30m)
no food

Monday July 18, 2022 16:15 - 16:45 EDT
Palm Court

16:45 EDT

Resolving Template MetaProgramming challenges using Type_expr
Template MetaProgramming (TMP) is an arcane part of C++ that the library Type_Expr attempt to simplify. I will show some problems with other library and explain the basic on how to read the code, and after that it become a series of challenge that we will resolve on compiler explorer.

The crux of the presentation will resolve around a sorted tuple by type size.

The attendee will learn useful tricks to debug and develop template-based code.

Speakers
avatar for Rémi Drolet

Rémi Drolet

C++ Enthousiast


Monday July 18, 2022 16:45 - 17:45 EDT
C - Kensington

16:45 EDT

Software Engineering Languages
By now we understand that programming languages are tools, and we should use the right tool for the task. Programming and Software Engineering share some basic skills but are in many ways different tasks. We collectively spend a lot of time thinking about the design, usage, and development of programming languages, but we know that some are better for collaboration and maintenance than others. What language and ecosystem features underpin that distinction, and what features would a language focus on if it was specifically building for the Software Engineering use case? This talk will be a somewhat opinionated survey of the programming language options available today, with some predictions about what comes next.

Speakers
avatar for Titus Winters

Titus Winters

Sr. Staff Software Engineer, Google
Titus is a principal Engineer at Google, where he has worked since 2010. He founded Abseil, Google’s open-source C++ library that underpins more than 250M lines of Google code with 12K+ active internal users. He is one of the four arbiters for Google’s official C++ style guidelines... Read More →


Monday July 18, 2022 16:45 - 17:45 EDT
A - Crystal Ballroom

16:45 EDT

Lessons learned from porting LibreOffice's build system to Meson
LibreOffice is the single largest open source C++ code base in the world. It currently builds with a bespoke build system written only in GNU Make. While this has worked fine for a long time it has many known downsides. The biggest among these is that not many people know enough about the system to change it to new requirements.

The developers have shown interest in replacing the current system with a standard build system, specifically Meson. Eventually a test port was written to examine how reasonable such a change would be. In this talk we examine how such a port was done, what parts of it took the most amount of effort, how dependencies were handled, what unexpected potholes were fallen into and so on.

The results should be useful for everyone considering updating an existing build system to a modern one.

Speakers
avatar for Jussi Pakkanen

Jussi Pakkanen

Consultant, Rakettitiede oy
Jussi Pakkanen is the very model of a modern coder general. He programs in styles typed, scripted and functional. He's dealt with historical build systems quite cadaverous, replacing them with Meson files short, snappy and glamorous. In creating apps embedded, kernel, gui and terminal... Read More →


Monday July 18, 2022 16:45 - 17:45 EDT
B - Knightsbridge

17:45 EDT

Break (15m)
no food

Monday July 18, 2022 17:45 - 18:00 EDT
Palm Court

18:00 EDT

Speaker Dinner (Ticket required)
Speakers’ Dinner
(Ticket required) 6:00pm – 8:00pm
  • Regular/Decaffeinated coffee and Hot teas
  • Roasted tomato and fennel soup with orzo and arugula oil
  • Sourdough, multigrain, dark rye rolls with butter
  • Regular/Decaffeinated coffee and Hot teas
  • Double entrée of Pan seared filet of beef with woodland mushrooms and oven roasted filet of salmon with shaved fennel and tomatoes in a dill beurre blanc
  • Roasted potatoes
  • Seasonal vegetables
  • Tiramisu and chocolate espresso mousse
Vegetarian OptionPlease pre-order via registrar@cppnorth.caby Thursday, July 14
  • Regular/Decaffeinated coffee and Hot teas
  • Yukon Gold potato and leek soup with chive crème fraiche
  • Porcini crusted beet fillet, leek fondue, dale, Du Puy lentils and vegetable saute
  • Passion Fruit Moose: White chocolate cup swirled with passion fruit coulis
  • Hosted wine, beer, sodas, bottled water

Monday July 18, 2022 18:00 - 20:00 EDT
Vanity Fair A

20:00 EDT

Movie Night: with Walter Brown
Using video excerpts and short movies, Walter Brown will take us on a journey exploring and celebrating the programming profession, allowing us to reflect on where we’ve come from, and what it is that makes our profession great. Not to be missed!


Movie Night 8:00pm – 10:00pm
  • Regular/Decaffeinated coffee and Hot teas
  • Iced Tea with lemon
  • Fruit Punch
  • Carrot vegan cookie bites
  • Pretzels and popcorn
  • Assorted tarts and squares


Speakers
avatar for Walter E Brown

Walter E Brown

With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a computer programmer for almost 60 years, and a C++ programmer for more than 40 years.He joined the C++ standards effort in 2000, and has since written circa 175 proposal papers. Among... Read More →


Monday July 18, 2022 20:00 - 22:00 EDT
A - Crystal Ballroom
 
Tuesday, July 19
 

08:00 EDT

Registration
Morning Beverage 7:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Freshly squeezed orange juice

Tuesday July 19, 2022 08:00 - 09:00 EDT
Vanity Fair A

08:30 EDT

Chi Gung with Guy
Chi Gung with Guy (extracurricular activity, non-conference event)
Morning warm-up/awake-up
Length 15 minutes, ends 15 minutes before the keynote

Speakers
avatar for Guy Davidson

Guy Davidson

Head of engineering practice, Creative Assembly
Guy Davidson is the co-author of Beautiful C++ and the Head Of Engineering Practice at Creative Assembly, one of the worlds largest and oldest game development studios, which he first joined in 1999, as well as a regular speaker and trainer.Guy is also a co-founder of the #include... Read More →


Tuesday July 19, 2022 08:30 - 08:45 EDT
Vanity Fair B

09:00 EDT

Keynote: Chandler Carruth ⚗️🧪Science experiment time!🧪⚗️
Chandler has been working with a few folks on a new science experiment! It's ready for more people to get involved across the wider C++ community, so come find out all the fun details!

Speakers
avatar for Chandler Carruth

Chandler Carruth

Software Engineer, Google
Chandler Carruth is the technical lead for Google's programming languages and software foundations. He has worked extensively on the C++ programming language and the Clang and LLVM compiler infrastructure. Previously, he worked on several pieces of Google's distributed build system... Read More →


Tuesday July 19, 2022 09:00 - 10:30 EDT
A - Crystal Ballroom

10:30 EDT

Break (30m) (snack)
Morning Break 10:30am – 11:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Whole seasonal fresh fruit
  • Cream Scones: Lemon curd, strawberry preserves, and whipped butter

Tuesday July 19, 2022 10:30 - 11:00 EDT
Vanity Fair A

11:00 EDT

Value Oriented Programming. Part 1: You say you want to write a function
Aaahhh!
You say you want to write a function....

TL;DR. This is a talk about functions. We all write them, but look around, most are bad. Can we do better?

Aaahhh!
You say you want to write a function
Well, you know
We all want to change the code
You tell me that it's evolution
Well, you know
We all want to change the code
But when you talk about member functions
Don't you know that you can count me out?
Don't you know it's gonna be
All right
All right
All right

You say you got a real solution
Well, you know
We'd all love to see the plan
You ask me for a contribution
Well, you know
We all doing what we can
But if you want money for params with all that state
All I can tell you is, developer, you have to wait
Don't you know it's gonna be
All right
All right
All right

You say you'll change the param direction
Well, you know
We all want to change your head
You tell me it's the common solution
Well, you know
You'd better free your mind instead
But if you are still writing functions that return void now
You ain't gonna make it with anyone anyhow
Don't you know it's gonna be
All right
All right
All right

All right, all right, all right
All right, all right, all right
All right, all right

Speakers
avatar for Tony Van Eerd

Tony Van Eerd

Stunt-double for C++ Expert, Christie Digital
Tony has been coding for well over 25 years, and hopefully coding well for most of that. Previously at Inscriber, Adobe, and BlackBerry, he now enables painting with light at Christie Digital. He is on the C++ Committee. He is a Ninja and a Jedi. Follow @tvaneerd


Tuesday July 19, 2022 11:00 - 12:00 EDT
A - Crystal Ballroom

11:00 EDT

Taking Static Type-safety to the Next Level
This talk will present a full-blown solution for a problem that has not been solved in C++ before: How can physical unit types (think Meters, Seconds, ...) be used inside vector / matrix types from a linear algebra library where each entry can have a different unit? The presented solution uses C++'s strong type system to provide physical unit annotations for each matrix element. Furthermore, it also enables coordinate frame and quantity kind annotations (think X- and Y-position in coordinate frame A or B which have identical units but refer to different things).

We will learn what is the best way to represent these annotations, how they propagate through linear algebra operations, how they determine the subset of valid operations on each type and of course and most importantly, how this can be implemented efficiently in C++ (with a special on how C++20 is a game-changer here). While developing the solution, we will also understand how this leads to code that is more expressive and less likely to contain errors because the majority of bugs can be caught at compile-time.

Applications that benefit from this include robotics, computer graphics, automated driving and any other domain that works with physical units, different coordinate frames and matrix operations.

Speakers
avatar for Daniel Withopf

Daniel Withopf

Daniel Withopf has been working on solving real-world problems with C++ in robotics and related fields for over 20 years. He currently is a Software Engineer at the German car supplier Bosch where he wrote and maintains an object tracking framework for self-driving car projects. While... Read More →


Tuesday July 19, 2022 11:00 - 12:00 EDT
C - Kensington

12:00 EDT

Lunch (on your own, not provided)
Tuesday July 19, 2022 12:00 - 13:30 EDT
Vanity Fair A

12:15 EDT

TIME CHANGE !!! Why Iterators Got It All Wrong
You understand iterators, right? How would you describe them? "Iterators are used to point into sequences of elements." Sounds good? More recently, the concept of ranges has been introduced to mean anything that exposes iterators. In particular, ranges include range adaptors for lazily transforming or filtering sequences of elements, and they, too, have iterators. All good? Unfortunately, not. The iterator concept, which we have been using since the advent of C++, is fundamentally flawed. In particular, some iterators must behave differently depending on whether they are meant to point at an element or at a boundary between elements. So elements and boundaries are really two distinct concepts. In this talk, I will convince you that the problem is real and has practical implications, make a proposal on how to fix it and show how the solution not only fixes the problem but makes for clearer code and prevents mistakes.

Speakers
avatar for Arno Schödl

Arno Schödl

CTO, think-cell
Arno is responsible for the design, architecture and development of all our software products. He oversees think-cell's R&D team, Quality Assurance and Customer Care.Before founding think-cell, Arno worked at Microsoft Research and McKinsey. Arno studied computer science and management... Read More →


Tuesday July 19, 2022 12:15 - 13:15 EDT
B - Knightsbridge

13:30 EDT

Abstraction: the true superpower of C++
The word "abstraction" is used extensively when discussing the facilities of C++. But what does it actually mean? Can you spot an abstraction when you see one? Can you spot the correct level of abstraction? Can you spot what is being abstracted? And what does a zero-cost abstraction mean? All these questions and more will be answered in this talk.

Speakers
avatar for Guy Davidson

Guy Davidson

Head of engineering practice, Creative Assembly
Guy Davidson is the co-author of Beautiful C++ and the Head Of Engineering Practice at Creative Assembly, one of the worlds largest and oldest game development studios, which he first joined in 1999, as well as a regular speaker and trainer.Guy is also a co-founder of the #include... Read More →


Tuesday July 19, 2022 13:30 - 14:30 EDT
A - Crystal Ballroom

13:30 EDT

Computing⌴in⌴the⌴1960’s
What was it like to be a computer programmer almost 60 years ago?

I started programming in those days, and would like to share with you my recollections and first-hand experiences on how we went about the job of programming. I will describe what the hardware was like and what software was available for programmers, and will also offer anecdotes dating from that era.

Come and join me in a return to the time of punch cards, punched paper tape, unit record equipment, and disk drives the size of a laundry machine!

Speakers
avatar for Walter E Brown

Walter E Brown

With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a computer programmer for almost 60 years, and a C++ programmer for more than 40 years.He joined the C++ standards effort in 2000, and has since written circa 175 proposal papers. Among... Read More →


Tuesday July 19, 2022 13:30 - 14:30 EDT
B - Knightsbridge

13:30 EDT

How Hard Could It Be? Lessons Learned from Replacing int64 With int64_t.
Before we could begin migrating int64 to int64_t, we first had to create a replacement for printf, complete with constexpr format string validation. Scale brings complexities most never anticipate, and the largest refactoring of Google’s codebase provides an amazing roadmap for those unexpected pain points. We’ll touch on many of the complicating factors in this multi-year effort, including overload sets, code generators, ODR-violations, printf, RTTI, and performance regressions. We’ll discuss the tools we used to address each of these, and how they can be leveraged to ease refactorings in codebases of any size.

Speakers
AS

Andrew Soffer

Software Engineer, Google
Andy Soffer is a mathematician turned software engineer. He has been working at Google for for five years on networking, speech recognition infrastructure, and most recently core libraries and refactoring tools. In his free time, he enjoys running, and playing board games.


Tuesday July 19, 2022 13:30 - 14:30 EDT
C - Kensington

14:30 EDT

Break (45m) (snack)
Afternoon Break 2:30pm – 3:15pm
  • Regular/Decaffeinated coffee and Hot teas
  • Fresh vegetable juices
  • Energy waters
  • Seasonal fruit skewers
  • Energy bars
  • Crudité vegetables

Tuesday July 19, 2022 14:30 - 15:15 EDT
Vanity Fair A

15:15 EDT

Slowing Down to be Faster - C++ and Divisible Algorithms in Real-Time Systems
A Real-time system needs to respect a set of constraints; typically, such systems are defined as systems for which delivering the right results but not on time is as bad as not delivering the right results. Depending on the system, the impact of not respecting these constraints can go from unpleasantness or discomfort (so-called "soft" real-time) to actual physical harm ("hard" real-time).

Most real-time constraints fall in one of four categories: a task has to be [b]rief (execution has to complete within a fixed amount of time once started), [i]mmediate (low-latency: execution has to start within a fixed amount of time following some event), or iterate with [r]egularity (e.g.: task has to be executed n times per second) or [c]onstancy (e.g.: task has to be executed every 1/nth of a second).

In the case of [r] and [c]-type tasks, there tends to be some residual time between two consecutive executions of a task. That time can be spent sleeping, but it can also be invested towards performing non-real-time tasks which help the real-time system behave better as a whole.

In this talk, we will examine how one can leverage C++ to achieve the goal of making a real-time system behave better by changing the way non-real-time tasks are performed.

Speakers
avatar for Patrice Roy

Patrice Roy

Professor, Université de Sherbrooke
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 moved on to academics and has been teaching computer science since 1998. Since 2005, he’s... Read More →


Tuesday July 19, 2022 15:15 - 16:15 EDT
A - Crystal Ballroom

15:15 EDT

Are you structure bindable? A tour via concepts, SFINAE and Herb Sutter's pattern matching
C++17 added the pythonic-style structure binding declaration. However it is not so easy to reveal if a given type T is structure bindable. In this talk we would dive into this question, striving for creating a concept for structure_bindable. The talk would take us to a tour via concepts, SFINAE and Herb Sutter's proposal for pattern matching, [p2392r1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2392r1.pdf).

Speakers
avatar for Amir Kirsh

Amir Kirsh

Teacher, Dev Advocate, Academic College of Tel-Aviv-Yafo and Incredibuild
C++ lecturer at the Academic College of Tel-Aviv-Yaffo and at Tel-Aviv University and Dev Advocate at Incredibuild. Previously the Chief Programmer at Comverse. Co-organizer of Core C++ conference and a member of the Israeli ISO C++ NB.


Tuesday July 19, 2022 15:15 - 16:15 EDT
C - Kensington

15:15 EDT

How to "OO" in C++
C++ has many ways to implement polymorphism: Inheritance and virtual functions, static polymorphism, concept-based polymorphism, the visitor pattern, variants and overloaded, etc. While this is very powerful, it can also be very confusing (after all, many languages are "one size fits all"). In this talk, I will explain and demonstrate each approach, including how to use it and why it exists, and then provide a framework for deciding which one to use in your code. I will also explain why "OO" is in quotation marks.

Speakers
avatar for Mike Spertus

Mike Spertus

Mike is a Senior Principal Engineer in AWS Dev Tools, and an Adjunct Professor at the University of Chicago. He has been involved with the C and C++ family of languages since the mid eighties, when he helped write one of the first MS-DOS C compilers, and is a long-time member of the... Read More →


Tuesday July 19, 2022 15:15 - 16:15 EDT
B - Knightsbridge

16:15 EDT

Break (30m)
no food

Tuesday July 19, 2022 16:15 - 16:45 EDT
Vanity Fair A

16:45 EDT

C++ Standard Parallelism
Imagine writing parallel code that can run on any platform - CPUs, GPUs, DPUs, specialized accelerators, etc - without any language or vendor extensions, external libraries, or special compilation tools. It's no longer just a dream - you can do it today in Standard C++!

Parallelism is increasingly common in software, from supercomputer simulations to mobile applications. But writing parallel code is increasingly challenging, due to an explosion of diversity in hardware, a trend that's likely to continue into the future. To meet this challenge, the C++ Committee has developed C++ Standard Parallelism, a parallel programming model for Standard C++ that is portable to all platforms, from your smartwatch to your supercomputer, and delivers reasonable performance and efficiency for most use cases.

Our vision of C++ Standard Parallelism consists of three key components:

Common parallel algorithms that dispatch to vendor-optimized parallel libraries
Tools to write your own parallel algorithms that run anywhere.
Mechanisms for composing parallel invocations of algorithms into task graphs.
In this talk, we'll dive into the roadmap for C++ Standard Parallelism - we'll discuss what we already have that you can use today, what's coming down the line, and where the future may lead us.

Speakers
avatar for Bryce Adelstein Lelbach

Bryce Adelstein Lelbach

HPC Programming Models Architect, Principal Architect at NVIDIA, Standard C++ Library Evolution Chair
Bryce Adelstein Lelbach has spent over a decade developing programming languages and software libraries. He is a Principal Architect at NVIDIA, where he leads programming language standardization efforts and drives the technical roadmap for NVIDIA's HPC and Quantum compilers and libraries... Read More →


Tuesday July 19, 2022 16:45 - 17:45 EDT
A - Crystal Ballroom

16:45 EDT

The Best Parts of C++
C++ is a big language, and it gets bigger every year. Is C++ it too big? Do we just continue to make the language harder to learn? Or, perhaps, do these language additions actually make the language better and easier to use? We will take a pragmatic look at the changes brought to C++ over the years and what impact they have had on how we write code.

Speakers
avatar for Jason Turner

Jason Turner

Owner, 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!


Tuesday July 19, 2022 16:45 - 17:45 EDT
C - Kensington

16:45 EDT

What Makes Good C++ Programmers: a Continuous Search for C++ Teaching Recipes
C++ evolution is challenging for both students and teachers. The language did not become any easier to teach as the amount of required material grew over the years. This talk is a discussion based on more than 20 years of teaching C++, from C++98 to C++20. Focusing on the challenges, the tools, the changes made along the years, expectations and a lot of practical examples, of both success and failures. We will discuss how a modern C++ course syllabus should look like, exercises and exams, writing code and reading code, using code examples and more. The work of the ISO C++ Study Group 20, on C++ Education, would also be discussed, as it is highly related this subject. The talk is aimed at sharing personal experiences, practical tips and advice, but also discussing with the audience and getting different views. It is aimed not only for educators, but to anybody who is interested in the challenges of teaching C++, including those who are working with, or going to recruit, junior C++ programmers, getting to know the challenges and contributing to this discussion.

Speakers
avatar for Amir Kirsh

Amir Kirsh

Teacher, Dev Advocate, Academic College of Tel-Aviv-Yafo and Incredibuild
C++ lecturer at the Academic College of Tel-Aviv-Yaffo and at Tel-Aviv University and Dev Advocate at Incredibuild. Previously the Chief Programmer at Comverse. Co-organizer of Core C++ conference and a member of the Israeli ISO C++ NB.


Tuesday July 19, 2022 16:45 - 17:45 EDT
B - Knightsbridge

17:45 EDT

Break (15m)
no food

Tuesday July 19, 2022 17:45 - 18:00 EDT
Vanity Fair A

18:00 EDT

#include Dinner (Ticket required)
A dinner to celebrate and support our diverse community.
The dinner will Include a presentation from Nathalia Silva.


#include Dinner 6:00pm – 8:00pm
  • Regular/Decaffeinated coffee and Hot teas
  • Sourdough, multigrain and dark rye rolls and butter
  • California organic greens with sun-dried tomatoes and toasted pumpkin seeds in a basil balsamic vinaigrette
  • Pan seared supreme of chicken with sauteed leeks and mushrooms in a pommery mustard sauce
  • Roasted potatoes
  • Seasonal vegetables
  • Flourless chocolate cake with Kirsch soaked cherries and Tahitian vanilla cream


Speakers
avatar for Nathalia Silva

Nathalia Silva

Google
Meet Nathalia Silva, a Toronto-based Cloud program manager and the founder of the tech community group 'Women Developers Toronto' - a community of 400+ female technologists. Her love for technology and DEI initiatives keep on motivating her to make a change in the tech world!


Tuesday July 19, 2022 18:00 - 20:00 EDT
Vanity Fair A

20:00 EDT

Lightning Talks
Lightning talks are short-form talks, which are unlike traditional conference presentations. Each speaker gets five minutes and must use a limited number of PowerPoint slides.

The main goal is to spark new conversations and collaborations across disciplines with fast-paced presentations. It’s a great opportunity to learn about the work of a large number of attendees with similar interests in a relatively short period of time.

Tuesday July 19, 2022 20:00 - 22:00 EDT
A - Crystal Ballroom
 
Wednesday, July 20
 

08:00 EDT

Registration
Morning Beverage 6:30am – 9:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Apple and Cranberry Juice

Wednesday July 20, 2022 08:00 - 09:00 EDT
Vanity Fair A

08:30 EDT

Chi Gung with Guy
Chi Gung with Guy (extracurricular activity, non-conference event)
Morning warm-up/awake-up
Length 15 minutes, ends 15 minutes before the keynote

Speakers
avatar for Guy Davidson

Guy Davidson

Head of engineering practice, Creative Assembly
Guy Davidson is the co-author of Beautiful C++ and the Head Of Engineering Practice at Creative Assembly, one of the worlds largest and oldest game development studios, which he first joined in 1999, as well as a regular speaker and trainer.Guy is also a co-founder of the #include... Read More →


Wednesday July 20, 2022 08:30 - 08:45 EDT
Vanity Fair B

09:00 EDT

keynote: Tara Walker "Yes! Robotics for the C++ developer"
Speakers
avatar for Tara Walker

Tara Walker

Principal Software Engineer, Microsoft
Tara is a Principal Software Engineer on the Azure IoT product group primarily focused making services for IoT and Intelligent Edge great on Azure. While she now primarily focuses on IoT, Tara has additional expertise and interests in Serverless, Artificial Intelligence (AI) cloud... Read More →


Wednesday July 20, 2022 09:00 - 10:30 EDT
A - Crystal Ballroom

10:30 EDT

Break (30m) (snack)
Morning Break 10:30am – 11:00am
  • Regular/Decaffeinated coffee and Hot teas
  • Brownies and Blondies
  • Fresh cut fruit with. Minted orange yogurt dip

Wednesday July 20, 2022 10:30 - 11:00 EDT
Vanity Fair A

11:00 EDT

C++20 Ranges in Practice
Among the many new additions to C++20 are Ranges, a modern revision of the STL offering updated algorithms and new “views” with lazy evaluation.

In this example-based talk we’ll work through several practical demonstrations of how the new Ranges functionality may be used to solve everyday problems concisely, elegantly and efficiently. In addition, we’ll offer tips on how to avoid common errors in your Ranges code, and demonstrate a couple of useful utility functions which you can drop into your codebase today.

Speakers
avatar for Tristan Brindle

Tristan Brindle

Tristan is a freelance developer, trainer and WG21 member based in London, UK. He’s the author of NanoRange, an independent C++17 implementation of the C++20 ranges facilities, and various other open-source tools. He is also a director of C++ London Uni, a not-for-profit organisation... Read More →


Wednesday July 20, 2022 11:00 - 12:00 EDT
C - Kensington

11:00 EDT

Multidimensional C++
For decades, C++ has lacked a proper facility for working with multi-dimensional data structures. Finally, in C++23, we have one - `mdspan`, a non-owning multi-dimensional abstraction. It parameterizes layout and access, which allows us to write generic code that is agnostic to the structure and nature of the multi-dimensional data. It supports both compile-time and run-time extents, so we can trade off between compile-time optimizations and run-time flexibility. It has a powerful slicing interface which makes it easy to form new perspectives to our data.

But `mdspan` doesn't have any iterators.
...
What?

In this talk, Bryce will take you on a quest - a quest in search of performant multi-dimensional iterators in C++.

Speakers
avatar for Bryce Adelstein Lelbach

Bryce Adelstein Lelbach

HPC Programming Models Architect, Principal Architect at NVIDIA, Standard C++ Library Evolution Chair
Bryce Adelstein Lelbach has spent over a decade developing programming languages and software libraries. He is a Principal Architect at NVIDIA, where he leads programming language standardization efforts and drives the technical roadmap for NVIDIA's HPC and Quantum compilers and libraries... Read More →


Wednesday July 20, 2022 11:00 - 12:00 EDT
A - Crystal Ballroom

11:00 EDT

Programming with kids (and what's in it for us!)
Are you raising the future generation of programmers? What do we need to watch out for? Let’s talk about programming with kids and how we grow as they grow!

Speakers
avatar for Fatemeh Jafargholi

Fatemeh Jafargholi

Director-Actuarial Programming Lead, Moodys' Analytics
I've been programming in C++ for about 15 years as a backend programmer. I lead a team of software developers, and also the task of educating all the software developers in our department, and I love it!


Wednesday July 20, 2022 11:00 - 12:00 EDT
B - Knightsbridge

12:00 EDT

Lunch (on your own, not provided)
Wednesday July 20, 2022 12:00 - 13:30 EDT
Vanity Fair A

13:30 EDT

The Twin Algorithms
This is the third and final talk of The Algorithm Intuition Trilogy, the first two talks being Algorithm Intuition (C++Now 2019) and Better Algorithm Intuition (Meeting C++ 2019). This talk will explore the history of a programming language that has algorithms built into its core. This language has many links to modern programming languages today - including C++ - and studying this language has been the most fun and most rewarding academic task I have ever completed. I hope to share everything I have learned about this language and how you can apply it to C++ (and any language).

Speakers
avatar for Conor Hoekstra

Conor Hoekstra

Senior Library Software Engineer, NVIDIA
Conor (he/him) is a Senior Library Software Engineer at NVIDIA working on the RAPIDS team. He is extremely passionate about programming languages, algorithms and beautiful code. He is the founder and organizer of the Programming Languages Virtual Meetup, he has a YouTube channel and... Read More →


Wednesday July 20, 2022 13:30 - 15:00 EDT
B - Knightsbridge

13:30 EDT

Forward Progress in C++
If you are coming to a C++ conference, then you probably have heard of the memory model before now. But what have you heard about forward progress guarantees in C++? Without forward progress, most synchronization is meaningless, making the topic a pre-requisite.

Unlike the memory model, however, it is not really an option to leave the topic to experts. That’s because assumptions of progress are implicitly part of the contract for calling libraries that synchronize inside. So, unless you are writing purely serial code, you are making assumptions about forward progress in your C++ code.

This talk will provide a whirlwind tour of the subject – foundations, interactions and practice. I will provide references for further reading as much as possible.

Speakers
avatar for Olivier Giroux

Olivier Giroux

I am a veteran GPU architect of 20 years, an ISO C++ committee member of 10 years, and its chair of concurrency and parallelism for the past 4 years. I'm the only hardware engineer on the committee. I like to talk about formalizations of parallelism and memory models.


Wednesday July 20, 2022 13:30 - 15:00 EDT
C - Kensington

13:30 EDT

A Medley of C++
This session will consist of several mini-presentations delivering individual C++ nuggets. Each is too long for a 5-minute lightning talk, but is also too short for a full 60- or 90-minute slot.

Please join me as we explore:

classifications within the universe of C++ types,
how form follows use in C++ declaration syntax,
how C++ lambdas came to be thusly named,
the influence on C++20 of an early 20th-century mathematician,
and more!

Speakers
avatar for Walter E Brown

Walter E Brown

With broad experience in industry, academia, consulting, and research, Dr. Walter E. Brown has been a computer programmer for almost 60 years, and a C++ programmer for more than 40 years.He joined the C++ standards effort in 2000, and has since written circa 175 proposal papers. Among... Read More →


Wednesday July 20, 2022 13:30 - 15:00 EDT
A - Crystal Ballroom

15:00 EDT

Break (45m) (snack)
Afternoon Break 3:00pm – 3:45pm
  • Regular/Decaffeinated coffee and Hot teas
  • Peach and Blueberry Smoothies
  • Individual Assorted Tea Loaves

Wednesday July 20, 2022 15:00 - 15:45 EDT
Vanity Fair A

15:45 EDT

Closing Keynote: Sean Parent "The Tragedy of C++, Acts One & Two"

Ten years ago, soon after the release of C++11, I presented a talk at C++Now titled C++ Now What? That talk looked at where C++ should go next. In the last decade, what progress has been made?

This talk examines why C++ remains successful, where we still have gaps, and what gaps have widened. Will the next decade bring more of the same or something fundamentally different?


Speakers
avatar for Sean Parent

Sean Parent

Sr. Principal Scientist, Adobe Systems
Sean Parent is a principal scientist and software architect for Adobe’s digital imaging group. Sean has been at Adobe since 1993 when he joined as a senior engineer working on Photoshop and later managed Adobe’s Software Technology Lab. In 2009 Sean spent a year at Google working... Read More →


Wednesday July 20, 2022 15:45 - 17:15 EDT
A - Crystal Ballroom
 
Filter sessions
Apply filters to sessions.