• Watch recording

    Talk type: Talk

    Getting the most out of GDB

    GDB is more powerful than you probably think. Lots of short and simple examples demonstrating the more advanced features of GDB, Once you know about them you'll be able to debug more productively.

  • Watch recording

    Talk type: Conversation

    C++ Russia 2021 Conference opening

    Find out what to expect over the next four days. The hosts will tell you about the schedule, interesting talks and what format they will be held in, as well as how our website works, where the discussions will be, how to connect to the chats, and where to ask questions of the speakers.

  • Watch recording

    Talk type: Talk

    Fun with type erasure + dispatching data from abstract structure to function parameters

    Sometimes we want some kind of magic that would call the appropriate handler for a request, and put appropriate request fields into function parameters. We want this magic more when the number of handlers with many parameters grows significantly. In this talk, we will concentrate on type erasure to make a convenient and user-friendly way of organizing request handlers.

  • Watch recording

    Talk type: Talk

    Concurrency in C++20 and beyond

    The evolution of the C++ Concurrency support doesn't stop there: the committee has a continuous stream of new proposals. This talk also introduced some of the most important of these, including the new Executor model.

  • Watch recording

    Talk type: Conversation

    Conversation in the studio about C++ in compilers

    C++ is written in very different fields - with different requirements, features, and complexities. And if you're not involved with compilers, you may have a rather vague idea of how the developers' work there is different from yours. Maybe you should just drop everything and go there. Or vice versa, it's not your thing at all, and С++ in this area aren't long for it?

    Experienced people can help you figure this out. Let's talk about the peculiarities of this area with those who have spent more than a year in it: Evgeny Zuev and Pavel Kosov. And Alexey Veselovsky will help to lead this conversation.

  • Watch recording

    Talk type: Talk

    Anatomy of asynchronous engines

    In the last years, asynchronous engines with coroutines are gaining popularity in almost all programming languages. Let's look at how these engines work and what's good about them for I/O-bound applications.

  • Watch recording

    Talk type: Technical interview

    Technical Interview: System Design

    A technical interview is a complicated thing in itself, and not everyone has any idea how it goes. And when the interview has a narrow focus, even more so. The architectural interview (System Design) is one of the most difficult, both for the candidate and the interviewer.

    As part of the broadcast from the main studio, one of these interviews will be conducted by Alexander Granin. He will be considering a candidate Pavel Filonov from PC for a C++ developer position in the architecture area.

    Let's see how the interview usually goes, what knowledge and skills the candidate needs, and at the same time analyze mistakes that can be made by both sides.

  • Watch recording

    Talk type: Talk

    Background tasks: Resource management and cancellation

    This talk is about the analysis of one problem that is often encountered in practice — the removal of a heavy operation from a UI thread. Another nontrivial part of working with background operations is the implementation of cancellation. We will take a look at how it all can be written one by one, with three main mechanisms of asynchronous programming.

  • Watch recording

    Talk type: Talk

    Integrating Lua scripts into a C++ application to implement the Visitor pattern

    The speaker will discuss the use of Lua scripts to implement typical patterns and solve typical problems in the field of IoT. The use of scripts allows you to increase the flexibility of the system, to easily adapt it to the needs of a particular customer, to avoid rewriting the source code many times when the requirements of the project change. The use of Lua scripts is considered on the example of a simple demo application developed in MFC for MS Windows. The application allows you to modify scripts "on the fly" and study how it affects the logic of the system.

  • Watch recording

    Talk type: Talk

    JIT in ClickHouse

    Maksim will talk about how his team worked on JIT compilation of requests and operation GROUP BY in ClickHouse.

  • Watch recording

    Talk type: Talk

    Contract-based programming in C++

    We will try to figure out what is wrong with assert, what is contract programming and how so-called right program looks like. We will have a look at the contracts which did not reach C++20, and we will also discuss what to do if we want contracts right now.

  • Watch recording

    Talk type: Conversation

    Conversation in the studio about C++ in databases

    C++ is written in very different fields - with different requirements, features, and complexities. And if you're not involved in databases, you may have a rather vague idea of how the developers' work there is different from yours. Maybe you should drop everything and go there. Or, on the contrary, it's not your thing at all, and in general, C++ in this area is not long left?

    Experienced people can help you sort this out. Therefore, let's talk about the peculiarities of this area with those who have spent more than a year in it: Konstantin Osipov, Alexei Milovidov and Andrey Aksenov. And Pavel Filonov will help to lead this conversation.

  • Watch recording

    Talk type: Talk

    Just Enough Assembly for Compiler Explorer

    In this talk you'll learn the very basics of X86 Assembly and the X86_64 calling convention, just enough to understand the full Assembly listing of simple functions on Compiler Explorer.

  • Watch recording

    Talk type: Talk

    (ab)using enum

    Using Enum is a little feature of C++20 with its little pitfalls. Elena will show helpful, harmful and unexpected examples of using it.

  • Watch recording

    Talk type: Talk

    Zen and the art of code lifecycle maintenance

    What is Software Quality, and how do we improve it? We look at a set of related principles and practices that help us get there, and along the way define what Quality actually is.

  • Watch recording

    Talk type: Talk

    Interchangeable AoS and SoA containers

    In this talk Pavel will introduce C++ library which unifies AoS and SoA data placement strategy along with quantitative and qualitative analysis.

  • Watch recording

    Talk type: Talk

    C++ in the world of embedded systems

    The talk offers an introduction into the concepts, variety and architectural specifics of embedded systems and reviews the application of the C++ language and the environment for the embedded software development.

  • No record

    Talk type: Talk

    C++ puzzlers

    Panel discussion is not recorded

    If you think you know all the ways to shoot yourself in the foot in C++ - you could be wrong. Yuri and Phillip invite you to embark upon an exciting journey along the perilous paths of your favorite programming language. You've got some blood, gore, and UB-filled pits to look forward to. So stock up on some popcorn!

  • No record

    Talk type: Talk

    Performance and safety: how to combine

    Panel discussion is not recorded

    It is common to have a trade-off between 2 quality attributes. Is it possible to archieve safety without significant performance downgrade? We’d discuss both specific cases and common concerns. We invite you to join the discussion and together find the best solutions

  • Watch recording

    Talk type: Conversation

    Conversation in the studio about C++ in Embedded

    C++ is written in very different fields - with different requirements, features, and complexities. And if you're not involved in Embedded, you may have a rather vague idea of how the developers' work there is different from yours. Maybe you should just drop everything and go there. Or on the contrary, it's not your thing at all, and there's not much time left for C++ in that area anyway?

    Experienced people will help you to figure this out. So at the conference, we will talk about the peculiarities of this field with those who have spent more than a year in it: Vladimir Vishnevsky and Ignat Voroshilov. And Kirill Tikhonov will help to lead this conversation.

  • No record

    Talk type: Talk

    Less is better: how to optimize interview time

    Panel discussion is not recorded

    At the beginning of the year, the team realized that it was possible to optimize time for engineers to participate in hiring so that they could more easily switch context between work tasks. Speakers will share how they looked for moments where it made sense to improve things, and listen to how participants optimize their teams' dating and technical interview processes. We'll discuss how not to waste interviews on the candidate and the interviewer themselves. And we'll just talk about the hard stuff in hiring.

  • Watch recording

    Talk type: Technical interview

    Technical interview: Algorithmic section

    A technical interview is a complicated thing in itself, and not everyone has any idea how it goes. And when the interview is narrowly focused, it is even more so.

    Egor Suvorov will conduct an interview with Ilya Shishkov, who will conventionally work with the algorithmic section. The goal is to show how it usually takes place, what knowledge and skills the candidate needs, and at the same time to analyze mistakes that both sides can make.

  • No record

    Talk type: Talk

    Anxiety and career

    Panel discussion is not recorded

    Anxiety is the little sister of fear. Is it a mechanism of evolution that has preserved our biological species, or a brake on the development of our career? How to determine the line that separates benefits from harm, how to learn to control the unwanted consequences of anxiety on development? Oleg is going to share how to identify the causes and show a simple and effective technique for managing your own anxiety.

  • Watch recording

    Talk type: Talk

    Typescripten — generating type-safe JavaScript bindings for emscripten

    WebAssembly has become a very popular target platform for C++ developers. However, emscripten does not provide type-safe wrappers to the standard JavaScript APIs. Open source tool "typescripten" has been built on top of three powerful technologies to close this gap, but it easy to say than do, as usually. Sebastian will discuss the challenges we faced and the choices we made when designing this framework.

  • Watch recording

    Talk type: Talk

    Unexpected things to know about working with Unicode in C++

    It is rare to find a program that does not require string manipulation. If you are not limited to Latin ASCII, you have to deal with locales and national alphabets. Denis enjoyed digging through the source code of rantime libraries and discovered a lot of intricacies he wanted to talk about. Let's see what modern C++ has to offer for storing, comparing and processing Unicode strings. How productive are these operations and what assumptions might be wrong?

  • Watch recording

    Talk type: Talk

    ThreadSanitizer anatomy

    Last time Alexey analyzed in detail the internal structure of ASan, now it's his turn to tell how TSan works, what is under the hood, what he can and what he cannot.

  • Watch recording

    Talk type: Talk

    Improving the quality of the first introduction to static analysis with the Intelligence Diagnostic Filter

    Imagine you have decided to try a static analysis tool for the first time. You launch analysis and get hundreds or thousands of warnings. Among them, of course, there will be false positives. Unfortunately, static analysis is impossible without them. All in all, your impression of the tool will depend on which warnings you see first.

    Nikolai's team thought it over and decided to make the Intelligence Diagnostic Filter mechanism that allows you to look through the best warnings. In this report we will see its concrete implementation in a plugin for Visual Studio 2022.

  • No record

    Talk type: Talk

    Semi-automatic refactoring of everything with clang-tidy and clang-query

    Panel discussion is not recorded

    Michael will show you how to add your own checks into clang-tidy and start automatically refactoring your code base. He will give a little tour of the LLVM ecosystem and explain how to look for patterns in AST and how to use this to automate your routine and mini refactoring. Will partially touch on libtooling, clang-query.

    Come in to talk about manual and automatic refactoring and try something new.

  • Watch recording

    Talk type: Talk

    C++ in two atypical projects

    Oleg will talk about how the team counted the passability of the shops and crossroads with darknet and YOLO9k; how the team optimized matchmaker unit in the cryptocurrency exchange and why C++ remains a good choice.

  • Watch recording

    Talk type: Conversation

    Conversation in the studio about C++ in GamеDev

    C++ is written in very different fields - with different requirements, features, and complexities. And if you're not involved in GameDev, you may have a rather vague idea of how the developers' work there is different from yours. Maybe you should just drop everything and go there. Or on the contrary, it's not your thing at all, and there's not much time left for C++ in that area anyway?

    Experienced people will help you to figure this out. So at the conference we will talk about the peculiarities of this sphere with those who have spent more than a year in it: Kirill Shabordin, Vladimir Atamanov, and Andrei Aksenov. And Alexander Pirogov will help to lead this conversation.

  • Watch recording

    Talk type: Talk

    PGO: How it works and how to use it properly

    Profile-guided optimization is a powerful technique that can improve application performance. In this talk, we'll understand how this technique works, how to customize it, and how to gain maximum profit from it.

  • Watch recording

    Talk type: Conversation

    Conversation in the studio about C++ in HFT

    C++ is written in very different fields - with different requirements, features, and complexities. And if you're not involved in HFT, you may have a rather vague idea of how the developers' work there is different from yours. Maybe you should just drop everything and go there. Or on the contrary, it's not your thing at all, and there's not much time left for C++ in that area anyway?

    Experienced people will help you to figure this out. Therefore, the conference will talk about the features of this area with those who have spent more than a year in it: Michael Matrosov, Oleg Fathiev and Artem Verkhoglyadov. And Pavel Filonov will help to lead this conversation.

  • Watch recording

    Talk type: Talk

    C++20 coroutines in Seastar

    Seastar is ScyllaDB’s cooperative runtime. Starting this year it was first to adopt C++20 coroutines for production level system software. In this talk I will walk сover seastar use of coroutines, compiler and standard pitfalls and advantages of coroutines over feature-based programming.

  • Watch recording

    Talk type: Talk

    Why vcpkg is not Conan

    Alexander will present two cross-platform package managers for C++, will consider the differences in approaches, the opportunities for integration, adding your own libraries.