The Italian C++ Conference is the biggest and most successful event series organized by the Italian C++ Community since 2013 where professionals, companies, and students meet and share experience about C++ development and practices.
Marco is the founder of the Italian C++ Community. He works at Tetra Pak as one of the technical leaders of the AI Engineering Team, pioneering the development of AI-based applications for packaging lines. From 2011 to 2019, he served the Ferrari F1 Racing Team (Scuderia Ferrari) as a Software Engineer and C++ Specialist. Marco is very active in the tech communities environment: he founded the Italian C++ Community in 2013, Coding Gym in 2016, ML Modena in 2020, and he collaborates with ConoscereLinux. Since 2016, Marco has received the Microsoft MVP award for his commitment to divulgation.
Alberto Barbati
Senior R&D Programmer at Nacon Studio Milan
Topic: Hello, std::generator
Alberto learns about C++ in the early '90s and immediately falls in love with the language, showing inexplicably and incurably faith and optimism about it even in the most difficult times of its history and evolution. Makes a few minor contributions to the C++ Standard to please inner demons and impress colleagues. Early adopts every new language feature and version as a hobby and whenever his real job as a video game programmer allows. Attends C++ conferences stubbornly trying to convince people that coroutines are good.
Davide Bianchi
Senior Software Engineer @ Nacon Studio Milan and Teacher @ AIV
Topic: 5 Things you can learn by the C++ standard library
I'm a software engineer with 7 years of experience in the industry of video-game programming. Starting my career in Ubisoft Milan, working on Ghost Recon Wildands and Mario+Rabbids, I'm currently working in the R&D department of Nacon Studio Milan and teaching video-game programming in AIV. I'm mostly specialized in large scale software architectures and multi-threading, passionate about programming and, of course, gaming.
Luis Caro Campos
SW Tech Lead
Topic: Conan 2.0: lessons learned from the C++ ecosystem
Luis is a Electronics and Computer Engineer based in the UK, with previous experience as a C++ engineer in the field of Computer Vision and Robotics. With a passion to enable C++ engineers to develop at scale following modern DevOps practices. He is currently part of the Conan team at JFrog, focused on the problems of the C++ community at large.
Conor Hoekstra
Research Scientist at NVIDIA
Topic: New Algorithms in C++23
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 channel and is the host of two podcasts: ADSP and ArrayCast. Conor is also an avid conference speaker. You can find all of Conor’s conference talks and podcast appearances (on other podcasts) here.
Marco Manino
Product Architect Lead at Canonical
Topic: A case for non-virtual virtual inheritance
I started as a self-learner in high school. I studied at Politecnico di Torino, and took part in every learning experience I could, including Alta Scuola Politecnica - which allowed me to take a degree in Politecnico di Milano as well. I worked first as a freelance and as a consultant, then as a Lead Developer and Product Owner in the GSM-R (railway) industry. I am now a Product Architect Lead in Canonical.
Jonathan Müller
Software Engineer
Topic: C++ Features You Might Not Know
Jonathan is a library developer at think-cell. In his spare time, he works on various C++ open source libraries for memory allocation, cache-friendly containers, or parsing. He also blogs at foonathan.net and is a member of the C++ standardization committee.
Maurizio De Pascale
Chief Technology Officer
Topic: C++ and Game Development: the Good, the Bad, and the Ugly
Maurizio is a game developer and C-level executive with 15 years of experience in creating AAA games.
For more than 5 years he's been the Chief Technology Officer at IO Interactive, where he oversaw tech development of all projects and provided long term vision on technology.
Previously, he spent some years at Ubisoft Montreal as Technical Architect on Rainbow Six|Siege, where he provided technical leadership for the development of tools and infrastructures first, and for AI, animation and gameplay later on.
He has presented some of his work in talks at international conferences like GDC and CEDEC.
Before joining the games industry, he earned a Ph.D. in Robotics doing research on graphic and haptic rendering, collision detection and haptic devices.
Raffaele Rialdi
Senior Software Architect
Topic: Unreal Engine in C++, from scratch
Raffaele Rialdi has a master degree in Electronic Engineering, is registered at the Association of Engineers in Genoa and works in the software design and development field since 1987. Is a Microsoft MVP since 2003 with a weekly participation to meetings with various Microsoft teams about development. He is DotNetLiguria community president which organizes free events on software development. Currently works as Senior Software Architect consultant, speaker in conferences and trainer.
Vittorio Romeo (B.Sc. Computer Science, 6+ YoE at Bloomberg) works on mission-critical C++ infrastructure and provides Modern C++ training to hundreds of fellow employees.
He began programming around the age of 8 and became a C++ enthusiast shortly after discovering the language. Vittorio created several open-source C++ libraries and games, published many video courses and tutorials, actively participates in the ISO C++ standardization process, and maintains the popular SFML library.
He co-authored the acclaimed "Embracing Modern C++ Safely" book (published in January 2022) with J. Lakos, R. Khlebnikov, and A. Meredith.
Davide Di Gennaro
Senior Software Engineer
Topic: Lock-free Micro Problems
C++ Algorithm Designer, author of books on Metaprogramming.
Mike Shah
Associate Teaching Professor and 3D Graphics Engineer
Topic: Optimization Design Patterns
Mike Shah is an Associate Teaching Professor at Northeastern University in the Khoury College of Computer Sciences. His primary teaching interests are in computer systems, computer graphics, and software engineering. His research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics. Along with teaching and research work, he have juggled occasional consulting work as a 3D Senior Graphics Engineer in C++
Mohamed Selim
Senior Software Engineer at Luxoft Italy
Topic: Towards safe C++: type safety and safety critical domain challenges
C++ software engineer passionate about performance, design and quality. Coming from various domains: automotive, industry , research and medical imaging.
"Modules will solve everything", people say -- some optimistically, others sarcastically. However, modules are far from reaching real-world maturity, and it is still not certain whether they will improve compilation times in every situation and how costly it will be to migrate a large codebase. Do we have to suffer with excruciating compilation times until we are able to migrate to modules? Not at all!
If you are interested in learning about practical tools and techniques to improve compilation times on codebases of any size, *today*, this talk is for you! We will cover:
- How to accurately benchmark the compilation time of a codebase and detect bottlenecks; - Enabling precompiled headers in CMake, leveraging the "reuse from" feature; - Automatically transforming your build into a "unity build"; - When to selectively replace heavyweight standard library headers; - General techniques to reduce physical dependencies between components.
(click here to reduce)
"Modules will solve everything", people say -- some optimistically, others sarcastically. However, modules are far from reaching real-world maturity, and it is still not certain whether they will i...
The graphic framework Unreal Engine by Epic is one for the most popular and sophisticated game engines to create videogames but, more and more often, it is also used in other fields to build high-quality and stunning graphics interactive applications. The Unreal Engine learning curve is steep not only because of its large codebase but also because most of the developers use almost exclusively the "blueprints" with a graphical editor, with almost no-code. Behind the scenes there is of course C++ which thankfully is open source, but also very poorly documented. This makes the development process hard, with rare articles and videos showing C++ and its big advantages. In this session I will tell you my adventure as a novice in this world, how to create objects, the main libraries we can use and how to create animations.
(click here to reduce)
The graphic framework Unreal Engine by Epic is one for the most popular and sophisticated game engines to create videogames but, more and more often, it is also used in other fields to build high-q...
C++ in safety critical domain. How to approach type safety in particular when it comes to safety critical domains e.g. Automotive. Challenges in domain, beyond C++14 solutions.
Video games are some of the largest and most complex codebases today, usually measured in millions of lines of codes, with extreme requirements in terms of performance and memory efficiency, and a ton of concurrency sprinkled everywhere. Game developers also operates in an industry whose tempo is often dictated by strict milestones and unmovable release windows. These factors make C++ the best friend, but also the worst enemy, of game coders.
This talk will describe the AAA game development industry from a programmer's point of view (tools, environments, habits, processes and so forth), and recommend which bits of the language to embrace and which ones to stay away from. We will share lessons learned in developing a few videogames over the past 15 years.
In particular, we will touch topics like concurrency, debugability, compilation time, memory management, hot-reloading, modern C++, data oriented design and functional style programming.
Finally, we'll discuss what the future of game development might look like, and what are the challenges for C++ to stay relevant as the language of choice for game programmers in the future.
(click here to reduce)
Video games are some of the largest and most complex codebases today, usually measured in millions of lines of codes, with extreme requirements in terms of performance and memory efficiency, and a ...
C++ is a big language -- the upcoming C++23 standard will be over 2000 pages long. This talk will cover some obscure features you might not know. We will cover strange syntax like commutative array indexing and complicated declarators, surprising cases of undefined behavior in frequently used operators contrasted with a surprising lack of undefined behavior in operations that really shouldn't work, overlooked language facilities -- some of them actually useful, and half-forgotten standard library functions -- some of them for good reason.
For each feature, we will talk about the what, the why, and how you can use it to write better (or much, *much* worse) C++ programs.
(click here to reduce)
C++ is a big language -- the upcoming C++23 standard will be over 2000 pages long. This talk will cover some obscure features you might not know. We will cover strange syntax like commutative array...
"Premature optimization is the root of all evil" is a saying credited to Donald Knuth that speaks to many programmers with experience -- nut anecdotally I have observed folks overlooking the next sentence stating: "Yet we should not pass up our opportunities in that critical 3%". In this talk, the audience will be introduced to some common optimization design patterns. I will discuss precomputation, lazy versus eager evaluation, batching, caching, specialization, hinting, hashing, and using your compiler among 'optimization design patterns' that every programmer should be aware of. Examples will be demonstrated in Modern C++, and the goal is for the audience to leave feeling comfortable implementing each optimization design pattern to improve performance of their code.
(click here to reduce)
"Premature optimization is the root of all evil" is a saying credited to Donald Knuth that speaks to many programmers with experience -- nut anecdotally I have observed folks overlooking the next s...
C++23 has made a number of very important additions to the Ranges library that was introduced in C++20. This talk will be an overview everything new in the C++23 Ranges library as well as a high level overview of all the different "types" of algorithms in C++ (from C++98 to C++23).
(click here to reduce)
C++23 has made a number of very important additions to the Ranges library that was introduced in C++20. This talk will be an overview everything new in the C++23 Ranges library as well as a high le...
Another talk in the micro-problems series, focused on showing small and clever pieces of code that solve practical problems, this talk will be focused on lock-free code and applications.
In the context of DSP, C++20's `std::span` offers a great abstraction, allowing the user to write a code once, that can work both at compile-time and at run-time. However, oftentimes data processing needs some memory space to store transient results or cache intermediate values. While `constexpr` memory allocation are allowed in C++20, functions which explicitly allocate are cumbersome for embedded systems, as the size of the allocation can't be checked at compile-time for correctness. In this talk I will try to explore first some design alternatives to give the user more control on where to store transient data, and then a case for non-virtual virtual inheritance as a means to share buffers among similar algorithms, together with some metaprogramming tricks to ease their usage.
(click here to reduce)
In the context of DSP, C++20's `std::span` offers a great abstraction, allowing the user to write a code once, that can work both at compile-time and at run-time. However, oftentimes data processi...
C++ 23 introduces std::generator, a library facility that allows programmers to write ranges factories using coroutines, similarly to what can already be done in other languages.
Developers often look at the package managers of other languages with envy: Python (pip), Java (Maven, Gradle), Javascript (npm), Rust (Cargo). Arguably, the C++ ecosystem has challenges that are unique and not found in other languages, with decades of history. What is holding us back? With Conan, we aim to support this huge ecosystem: multiple build systems, managing and reusing system native libraries, static and dynamic/shared linking, multiple platforms, ability to cross-build, symbol visibility, propagation of usage requirements, and so on. All of these (and more!) place impossibly high expectations on a C++ package manager, in particular when developers want a powerful solution that doesn’t require them to compromise. This talk will describe and present these different challenges, define the problems, how different platforms and existing solutions like system package managers approach them, discuss potential solutions, and finally connect the dots to the latest Conan 2.0, explaining the rationale behind some of the newer approaches introduced in this recent major release, and why writing a C++ package manager is a bigger challenge than it seems.
(click here to reduce)
Developers often look at the package managers of other languages with envy: Python (pip), Java (Maven, Gradle), Javascript (npm), Rust (Cargo). Arguably, the C++ ecosystem has challenges that are u...
C++ programmers often complain about the lack of features in the standard library. Many community favorites - like optional, variant and byte - took years to come in; networking is not available yet, and graphics is nowhere to be seen. But taking a closer look at the algorithms and data structures that are already available, it is easy to witness a world full of clever solutions and efficient ideas: from what it drives the STL containers, to clever implementations of algorithm's functions down to some of the tricks that ensure that 0-cost abstractions are, indeed, free. In this talk we will present 1 container and 4 famous algorithm that are taught in AIV during the first year, discuss how they work and how they are implemented in the standard library and show how those algorithm are used in the context of video-game programming.
(click here to reduce)
C++ programmers often complain about the lack of features in the standard library. Many community favorites - like optional, variant and byte - took years to come in; networking is not available ye...