Loading…
Attending this event?
CppNorth 2024, The Canadian C++ Conference
July 21-24, 2024 • Toronto, Canada
At the Microsoft Canadian Headquarters (Suite 4400)
In: CIBC SQUARE, 81 Bay St., Toronto, ON M5J 0E7, Canada
Track B clear filter
Monday, July 22
 

08:45 EDT

Opening Keynote: The Aging Programmer by Kate Gregory
Monday July 22, 2024 08:45 - 10:30 EDT
We all get older every day. But when are you old? Do the natural changes of aging make it harder to be a good programmer? Do you have to stop or can you keep going? What can you do to make both aging and programming more pleasant for yourself? How can you help the older people you know, and set up systems that will help you when you need it? When it comes to ensuring a pleasant and long old age, it's not too late -- and it's also never too soon.
Speakers
avatar for Kate Gregory

Kate Gregory

Partner, Gregory Consulting
Kate Gregory is an author, sought-after conference speaker, trainer, 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 a well-connected member of the software development... Read More →
Monday July 22, 2024 08:45 - 10:30 EDT
Track B

11:00 EDT

A Study of Plugin Architectures for Supporting Extensible Software
Monday July 22, 2024 11:00 - 12:00 EDT
Building extensible software is a goal and a often a metric of good software design. It is becoming more and more common for users to also contribute to the development of the software that they use--especially in the domains of computer graphics and gaming. Terms like 'modding' software have been around since at least the early 90s when the popular game Doom allowed for users to create their own content and modify the behavior of the program. Behind these programs there thus must be a mechanism for allowing users to 'hook' into the main program. In this talk, I will be showing several software developer kits including Autodesk Maya 3D (C++), Unity3D (C#), Unreal Engine (C++), and QT Modeler(C), and present a case study of how they are designed. At the end of the design discussion I will present how to get started building your own plugin system, and what considerations must be taken in mind (e.g. does the application or plugin manage resources, what should be exposed in the API, how do you embed a scripting language, and how should you distribute your plugins). Attendees will leave the presentation with practical knowledge on how to build software that can be extended by their user base.
Speakers
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 →
Monday July 22, 2024 11:00 - 12:00 EDT
Track B

13:00 EDT

Beginner's mind, expert's mind—How we think about, read, write and teach code
Monday July 22, 2024 13:00 - 14:00 EDT
We are all born with the innate ability to count and to learn languages. Sadly, the same cannot be said for programming. What's more, neither linguistic nor math prowess seem to translate into coding skills. Similarly, just because you are an expert in C++ concurrency doesn't mean you won't have a hard time deciphering a textbook Haskell program. So what is it that makes us adept at reading, writing and reasoning about code? Crucially, can the journey on the path to become a better programmer be facilitated?

In this talk we will try to answer this question by exploring the cognitive processes involved in reading, producing and reasoning about code. We will discuss the role of short- and long-term memory, and introduce terms such as cognitive load, beacons and chunks. Enriched with live experiments and illustrated with examples in C++, we will see how these concepts interplay with our programming abilities. Finally, we will discuss how we can use this knowledge to write better code, grow as programmers, facilitate collaboration between developers of different levels, or improve the onboarding of new team members.
Speakers
avatar for Dawid Zalewski

Dawid Zalewski

I'm a computer engineer and a passionate teacher with over 25 years of programming experience. I have co-evolved together with various languages including Basic, Turbo Pascal and 8051 assembly to finally settle in the land of C++ (with occasional visits to Python, C# and a few others... Read More →
Monday July 22, 2024 13:00 - 14:00 EDT
Track B

14:15 EDT

Safe Static Initialisation and Cleanup in Libraries
Monday July 22, 2024 14:15 - 15:15 EDT
Static initialization is utilized to ensure that values are constructed before main(), making them available for use immediately and allowing important prerequisites to be established. However, the initialization of these values is more complex than it first appears. Statically linked or dynamically loaded libraries also need their own dependencies, global variables, and lifetime management making the picture more complex when we use other people’s code this way.

In this session, we will explore how applications and libraries handle initialization and discuss methods for building safe initialization mechanisms in our libraries. Whether you develop and distribute code as a library or SDK, or you are simply curious about how application initialization happens, this session is for you.
Speakers
avatar for Ashley Roll

Ashley Roll

Ashley has 30 years of experience as a software engineer and architect in Brisbane, Australia. He has worked in large and small projects spanning web applications, desktop applications, business systems as well as embedded hardware and firmware.
Monday July 22, 2024 14:15 - 15:15 EDT
Track B

15:45 EDT

Meandering Through C++ to Create ranges::to
Monday July 22, 2024 15:45 - 16:45 EDT
See how I meandered through writing a version of *ranges::to* because I was impatient for the GCC 14 version. It had to be easy, right? After all, it is just copying pipeline elements to a container. Ha! Ha! No.

This trek encounters *concepts*, *if constexpr*, and containers that are copyable and others that are not. Eventually, an encounter with a **** approach, which I can only reveal during the talk, solved the copy problem for most containers. But then there are sets and queues. Finally, wrangling with `range_adaptor_closure` to work as the pipeline's endpoint was, well, interesting.

Why is ranges::to important? It is easier to use than other methods of invoking pipelines.

The talk is code intensive to illustrate all the steps to demonstrate the development process and the solution.
Speakers
avatar for Rudyard Merriam

Rudyard Merriam

Retired, Mystic Lake Software
Rud Merriam is a retired software developer, having lived through the spaghetti, structured programming, and object-oriented development paradigms. He's now trying to figure out functional programming and the ranges library.He wrote his first FORTRAN IV in 1968 and his first C++ in... Read More →
Monday July 22, 2024 15:45 - 16:45 EDT
Track B

17:00 EDT

Testability and API Design
Monday July 22, 2024 17:00 - 18:00 EDT
Good code must be both testable by its developers and usable in application test drivers and integration tests. We will explore and recommend approaches for designing APIs that result in both easily testable code and convenient interfaces for test drivers and integration tests. We will discuss specific techniques, simplified versions of examples from popular libraries such as BDE, and how to write generalized mocks.
Speakers
avatar for John Pavan

John Pavan

John is currently an Engineering Team Lead at Bloomberg. He has been a software developer for 25+ years, and is interested in improving the experience of using C++ with a particular interest in API design.
avatar for Aram Chung

Aram Chung

Aram Chung is a software engineer on the Insights Workflows team at Bloomberg. She thinks C++ is delightfully low-level and Python is delightfully high-level: “Recondita armonia di bellezze diverse” (and if you got the reference, she wants to be your friend). In her spare time... Read More →
avatar for Lukas Zhao

Lukas Zhao

Lukas Zhao is a senior software engineer at Bloomberg, where he works on the FX Pricing Engineering team. In his eight years with the company, he contributed to the building of a distributed electronic trading platform microservice system, which won several ETFExpress awards, and... Read More →
Monday July 22, 2024 17:00 - 18:00 EDT
Track B
 
Tuesday, July 23
 

09:00 EDT

Lightning Talks
Tuesday July 23, 2024 09:00 - 10:30 EDT
Lightning Talks
Tuesday July 23, 2024 09:00 - 10:30 EDT
Track B

11:00 EDT

... + CTAD + NTTP = 🤩
Tuesday July 23, 2024 11:00 - 12:00 EDT
C++ is a language of many features and new keep being added over time. Rarely does any individual addition have a significant impact on how we write code, but when put together they can enable game-changing expressiveness. In this session we look at how the wombo combo of variadic templates, class template argument deduction (CTAD), and non-type template parameters (NTTP) enables writing code in a declarative manner never seen before, the practicality of which is shown on a real world problem from the domain of thermodynamic simulation.
Speakers
avatar for Miro Knejp

Miro Knejp

Miro Knejp, Miro Knejp
Miro wrote his first line of C++ code in 1997 at the age of 12, and it has been his programming language of choice ever since. He's especially passionate about low-level programming, low latency, 3D graphics, games engineering, and chemistry. Miro holds a Master's degree in Computer... Read More →
Tuesday July 23, 2024 11:00 - 12:00 EDT
Track B

13:00 EDT

Keynote: Eric Wastl
Tuesday July 23, 2024 13:00 - 14:30 EDT
Keynote: Eric Wastl
Title & Abstract: To be Announced (soon)
Speakers
avatar for Eric Wastl

Eric Wastl

Founder and Creator, Advent of Code
Eric Wastl is the creator of Advent of Code, an Advent calendar of small programming puzzles. He's a Software Engineer with over 15 years of professional experience in software engineering, software architecture, web development, security, system administration, math, developer education, and mentoring... Read More →
Tuesday July 23, 2024 13:00 - 14:30 EDT
Track B

14:45 EDT

Mitigating the intellectual anxiety associated with learning the C++ programming language
Tuesday July 23, 2024 14:45 - 15:45 EDT
Learning a new programming language can be a heinous task, especially when faced with biases and myths surrounding the language. In this speech, we will discuss how to overcome biases and break down the barriers to learning a new programming language using technical terms and examples. In the context of programming languages, we will focus on the case of C++ and discuss its features and applications, as well as the perceived biases around the language. We will explore the benefits of using C++ and how it can be used to build high-performance applications and also relate our experiences in learning C++ from Africa that is geographically isolated from other developers and the challenges of mixing and matching of spoken languages. The speech will provide practical tips for learners seeking guidance from experienced programmers. We will also discuss the role of mindset and motivation in the learning process and provide strategies for developing a growth mindset. Attendees will leave this speech with a better understanding of the biases that can impede learning, and the steps they can take to overcome these biases and become successful learners of a C++ programming language. The speech is designed to inspire and encourage beginners to embrace the challenge of learning a C++ programming language and unlock their potential as programmers.
Speakers
CA

Cpp Africa(Dennis Onyeka ikemefula, Emmanuel Danso Nyarko)

CppAfrica is Africa's first C++ community set up to introduce the world of programming in C++ to the African community. CppAfrica was co-founded by Dennis Onyeka, a software engineer from Nigeria, and Emmanuel Danso Nyarko, a recent computer science graduate from Ghana. It is a growing... Read More →
Tuesday July 23, 2024 14:45 - 15:45 EDT
Track B

16:15 EDT

Uplifting Your Career as a Youth in Tech
Tuesday July 23, 2024 16:15 - 17:15 EDT
In this engaging talk, I will be discovering my journey into tech as a teenager, and share some advice for starting your career as a fellow teenager.
Speakers
avatar for Sohaila Ali

Sohaila Ali

Ambassador, Canada Learning Code
Sohaila Ali is a high school student who currently works as a Teen Ambassador at Canada Learning Code, and a Coding Instructor at The Ismaili Canada. She has obtained the AWS Certified Cloud Practitioner certification as well. She is interested in cloud computing, software engineering... Read More →
Tuesday July 23, 2024 16:15 - 17:15 EDT
Track B

17:30 EDT

Hiding your Implementation Details is Not So Simple
Tuesday July 23, 2024 17:30 - 19:00 EDT
A key programming principle that encapsulates significant aspects of Object-Oriented Programming, is to hide your implementation details. This guidance aligns with principles such as encapsulation, decoupling, and programming for interfaces rather than concrete types.

Yet, keeping your implementation details hidden is no easy feat. In this talk, we'll discuss the challenges, highlight tricky situations, and share tips on how to steer clear of them.

Applying the practices presented in this talk, participants will be well-equipped to navigate potential pitfalls, foster best practices, and ultimately write C++ code that is more elegant, robust and maintainable.
Speakers
avatar for Amir Kirsh

Amir Kirsh

Teacher, Dev Advocate, Academic College of Tel-Aviv Yaffo
Amir Kirsh is a C++ lecturer at the Academic College of Tel-Aviv-Yaffo and Tel-Aviv University, previously the Chief Programmer at Comverse, after being CTO and VP R&D at a startup acquired by Comverse. He is also a co-organizer of the annual Core C++ conference and a member of the... Read More →
Tuesday July 23, 2024 17:30 - 19:00 EDT
Track B
 
Wednesday, July 24
 

09:00 EDT

Keynote: April Wensel
Wednesday July 24, 2024 09:00 - 10:30 EDT
Keynote: April Wensel
Title & Abstract: To be Announced (soon)
Speakers
avatar for April Wensel

April Wensel

Founder, Compassionate Coding
April Wensel is an international keynote speaker, software engineer, and technical leader whose varied career spans such fields as education, research, healthcare, and entertainment.After a decade in the tech industry, she founded Compassionate Coding in order to bring more compassion to the softwa... Read More →
Wednesday July 24, 2024 09:00 - 10:30 EDT
Track B

11:00 EDT

Simplify and Secure Equation Systems with Type-Driven Development
Wednesday July 24, 2024 11:00 - 12:00 EDT
Lea is a researcher working on an autonomous ship project. She needs to write complex dynamical equations to model the ship movement, but she keeps making errors that cause bugs and jeopardize the project.

She decides to use template metaprogramming and constexpr to build a compile-time library that can catch these errors and simplify the equation writing.

In this talk, you will learn how Lea explores features of C++, such as strong types, metaprogramming and tuple algorithms, to create a library that can automatically map types to indices.

This mapping enables her to write nonlinear equation systems with meaningful names. It makes it even possible to build up libraries of individual systems that can be combined at compile-time.

You will also see how Lea faces the challenges of design and implementation in the realm of metaprogramming. Will she succeed in her quest? Will the ship sail safely? And will it be worth the effort? Come and find out.
Speakers
avatar for Arne Berger

Arne Berger

Software Developer, Bruker Daltonics
Arne (he/him) is a C++ developer at Bruker Daltonics, where he creates control software for mass spectrometry devices. He has a background in optimization and optimal control, having participated in various research projects for over 7 years. Arne is a clean code enthusiast who strives... Read More →
Wednesday July 24, 2024 11:00 - 12:00 EDT
Track B

13:00 EDT

Optimization Remarks - helping the compiler generate better code
Wednesday July 24, 2024 13:00 - 14:00 EDT
Optimization remarks are logs of Clang's optimization passes, describing optimization attempts and failures - which might be mitigated. Sometimes. Deciphering them might seem a matter for compiler authors, but we can kick-start this effort together.
About 50% of the talk would be dedicated to practical examples of missed optimizations and mitigations - with emphasis on alias analysis and escape-analysis. We will also discuss other compilers and even other languages.

Speakers
avatar for Ofek Shilon

Ofek Shilon

Senior Developer, Speedata
A Mathematics MA by training, but a 20Y C++ developer, writer and speaker in both the Linux and MS universes. Member of the maintainers team of Compiler-Explorer (==godbolt). Fascinated by compilers, debuggers and pretty much anything low level. Fiercely hated by his cat for no apparent... Read More →
Wednesday July 24, 2024 13:00 - 14:00 EDT
Track B

14:15 EDT

Composition Intuition II
Wednesday July 24, 2024 14:15 - 15:45 EDT
This sequel to Composition Intuition will be a masterclass about everything you wanted to know (and potentially what you didn't even know you wanted to know) when it comes to function composition and combinators. We will cover the different "composition strategies" used in languages like C++, Python, Haskell, APL, J, KAP, Jelly, Uiua, Clojure and more. Furthermore, we will in more detail cover the most common combinators and the patterns in which they are most useful.
Speakers
avatar for Conor Hoekstra

Conor Hoekstra

Senior Library Software Engineer, NVIDIA
Conor (he/him) is a Research Scientist at NVIDIA working on array programming models and languages. 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... Read More →
Wednesday July 24, 2024 14:15 - 15:45 EDT
Track B

16:15 EDT

Closing Keynote: Tony Van Eerd
Wednesday July 24, 2024 16:15 - 18:00 EDT
Closing Keynote: Tony Van Eerd
Title & Abstract: To Be Announced (Soon)
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.
Wednesday July 24, 2024 16:15 - 18:00 EDT
Track B
 
Share Modal

Share this link via

Or copy link

Filter sessions
Apply filters to sessions.