х2019 Spring2018 Autumn2018 Spring2017 Autumn2017 Spring2017 Winter2016 Autumn2016 Summer20162015
#CoreHardBy

C++ CoreHard Spring 2019 Сonference

The C++ CoreHard Spring 2019 is a conference dedicated to C++ and related hardcore technologies.

The conference is being organized by the CoreHard.by community that unites not only C++ engineers, but also those who are interested in low-level development in C and Assembler, programming of controllers, Internet of Things, highload server solutions and in any kind of “hardcore” development.

The conference will take 2 days: May 24 - workshop day, May 25 - conference day

Official conference languages: Russian, English

Want to present a talk? Submit a proposal


#CoreHardBy
Tickets
Date Workshop (day 1) Conference (day 2) Workshop + conference (day 1 + day 2)
01.04.2019 - 30.04.2019 350 BYN 220 BYN 520 BYN
01.05.2019 - 24.05.2019 400 BYN 270 BYN 620 BYN

We're following Berlin Code of Conduct

Speakers

Workshops, May 24

  • 9:30 - 10:00

    Registration

  • 10:00 - 19:00

    Quick and modern C++ [Russian]

    Antony Polukhin

    In any large codebase you can always find pieces of code which are not totally understandable. Mostly, such kind of code is implemented when the application needs some performance boost... and, mostly, that code is not useful because it optimizes functionality in wrong place, in incorrect way and in not a good way.
    During our masterclass we will get to know to the allocators features, optimizers and implementations of containers; look at assembler code; learn how to correctly and clearly write fast single-threaded and multi-threaded applications.
    You only need a complier with C++ 11 support (at least VS 2013/Clang-3.3/GCC-4.8) and basic C++ knowledge

  • 9:30 - 10:00

    Registration

  • 10:00 - 19:00

    What is used daily in C++ but still unfamiliar: rvalue references, std::move, copy elision and more [Russian]

    Vadim Vinnik

    - Template parameter and auto type inference.
    - Auto refenerces and passing arguments into a function.
    - Expression categories: (gl|r|l|x|pr)-values.
    - When are constructors get called and when do not.
    - Tail recursion optimisation becomes possible in C++.
    - Actually, std::move does not move anything.
    - Constexpr vs. const.
    - Smart pointers vs. raw pointers.
    - Function objects and lambdas.
    - Case study: asyncronous notifier.
    - Case study: write-only replicable storage.

  • 9:30 - 10:00

    Registration

  • 10:00 - 19:00

    Modern C++ idioms [English]

    Mateusz Pusz

    C++ is no longer C with classes and it never was only an Object Oriented language. C++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation. If used correctly, it provides hard to beat performance. Such usage requires a good knowledge of C++ templates and Modern C++ Idioms which are much different from commonly known design patterns popularized by GoF book and invented to handle common use cases in pure OO languages like Java or C#.

    What you will learn: During the workshop, we will refresh and broaden our knowledge about C++ templates and will learn Modern C++ Idioms. Crafting those skills will allow us to build powerful tools that are useful in the everyday work of every C++ developer.

    Experience required: In order to be able to follow the workshop, you should be current with C++ and have some recent experience with writing simple C++ templates. C++11/14 knowledge is suggested but not mandatory.

    Environment: A laptop with a relatively new C++ compiler. It is recommended to have the latest version of one of the compilers (Visual Studio, gcc or clang).

    Language: English.

    Idioms to be covered (plan):
    - Non-Copyable
    - RAII
    - Copy-and-swap
    - Smart Pointer
    - Type Traits
    - Tag dispatch
    - Policy-based design
    - EBO
    - Type Erasure
    - SOO
    - Copy-on-write
    - CRTP
    - Singleton

  • 9:30 - 10:00

    Registration

  • 10:00 - 19:00

    Continuous integration for C++ developers [Russian]

    Pavel Filonov

    And we will build our own CI with conan and travis
    Introduction
    Developers’ mind has a common opinion, about their work which become completed after they’ve committed the code, and what happens next – not their problem. There is a great quote by Robert Highline for that thesis:
    Each person should know how to change diapers, plan the invasion, harvest a pig, construct buildings, control a ship, write sonnets, make financial reports, build walls, set bones, assist dying, carry out an order, give out orders, cooperate, act alone, solve equations, analyze new problems, fertilize plants, program computers, cook tasty food, fight with dignity, die with dignity.

    Specialization is the destiny of insects.

    And instead of the opinion mentioned above, will put out our own thesis - the fact that code compilates on the developer’s environment and developer’s personal machine is not interesting for anyone! Our goal - Ii to make another step to the continuous integration, automate dependency resolution, assembling and unit testing for all the platforms which are interesting for us.

    Continuous Integration
    Continuous integration is the kind of practice, according to which, developers periodically (you can read it as daily) put out the results of the work into the main code branch. First use of that practice was introduced in the Buch method. Later, at extreme programming methodology, it improved with automatic unit tests run. Next step of current practice development is Continuous Delivery - the process where the distributive is created, after all acceptance tests are successfully completed, the distributive which ready to be published to the customer. And at the very end we can speak about Continuous Deployment during which all the changes that passed the testing phase successfully, automatically deployed to production. If you are already confused, you can imagine the following sequence:
    1. Continuous integration
    2. Continuous delivery
    3. Continuous deployment
    At the course of the current master-class we will speak about CI in the scope of C++ development.

    Preliminary requirements
    What is required from you:
    - experience in using C++ (thanks, Cap!)
    - laptop with any OS installed
    - one of the compilers (Visual Studio >= 2015 / g++ >= 5.4 / clang++ >= 3.9 / Xcode >= 8.0)
    - cmake >= 3.6 (you need to understand the syntax of CMakeLists.txt)
    - git >= 2.10
    - python >= 3.5
    - pip3 >= 9.0
    - github.com account
    - travis-ci.org account (linked to github)
    - appveyor.com account (linked to github)
    - conan.io account
    - digitalocean.com account

    Part One - github
    In the first part, we will assume that you are creating a personal home project, work on Open Source project or can store source files on some external resource, and ready to pay for it. What tasks you will be able to solve:
    - understand how to automate assembling for Linux and Mac OS with Travis-CI
    - understand how to automate assembling for Windows with the help of appveyor
    - understand how to manage dependencies with the help of conan
    - understand how to automate unit tests runs for all the platforms
    - understand how automatically deploy with different configurations different compiler versions
    - understand how to create your own packets for conan (first step towards CD)

    Part Two - self hosted gitlab
    During the second part we’l’ look at the situation when your working project has closed source code, and you don't want to have strong dependency for vendor lock infrastructure. What tasks you will be able to solve:
    - how to deploy gitlab at digitalocean fast(DO)
    - how to configure gitlab CI for your project


    Conclusion

Conference, May 25

  • 9:30 - 10:00

    Registration

  • 10:00 - 10:10

    Opening

  • 10:10 - 11:00

    Implementing Physical Units Library for C++ [English]

    Mateusz Pusz

    This talk will present the current state of my work on designing and implementing Physical Units Library for C++. I will present all the challenges, design tradeoffs, and potential solutions to those problems. During the lecture, we will also see how new C++20 features help to make the library interface easier to use, maintain, and extend. Among others, we will see how we can benefit from class types provided as non-type template parameters, how new class template argument deduction rules simplify the interfaces and the full power of using concepts to constrain template types.

  • 11:10 - 12:00
  • 12:10 - 13:00
  • 13:00 - 14:00

    Lunch

  • 14:10 - 15:00
  • 15:10 - 16:00
  • 16:10 - 17:00

    Object-Oriented Programming in Modern C++ [English]

    Borislav Stanimirov

    Object-oriented programming has been criticized a lot. Every now and then some article or talk appears denouncing it and proclaiming that it's dead. This talk will do the opposite. It defends OOP and presents many modern libraries and concepts to show that it's very much alive and kicking.

  • 17:10 - 18:00

    The Hitchhiker's Guide to Faster Builds [English]

    Viktor Kirilov

    C++ is known for things such as performance, expressiveness, the lack of a standard build system and package management, complexity and long compile times. The inability to iterate quickly is one of the biggest killers of productivity. This talk is aimed at anyone interested in improving the last of these points - it will provide insights into why compilation (and linking) take so long for C++ and will then provide an exhaustive list of techniques and tools to mitigate the problem, such as: - tooling and infrastructure - hardware, build systems, caching, distributed builds, diagnostics of bottlenecks, code hygiene - techniques - unity builds, precompiled headers, linking (static vs shared libraries) - source code modification - the PIMPL idiom, better template use, annotations - modules - what they are, when they are coming to C++ and what becomes obsolete because of them

  • 18:10 - 19:00

    New C++ features for writing DSLs [English]

    Ivan Čukić

    C++ is not the best language for writing domain-specific languages (DSLs), but it does have a few tricks up its sleeves. Expression templates have been the go-to approach for this for years, but writing them has always been a pain. The recent C++ versions have improved this situation significantly. We'll demonstrate several new C++ features which make writing DSLs borderline fun

  • 19:00 - 19:20

    Closing

  • 9:30 - 10:00

    Registration

  • 10:00 - 10:10

    Открытие

  • 10:10 - 11:00

    Implementing Physical Units Library for C++ [English]

    Mateusz Pusz

    This talk will present the current state of my work on designing and implementing Physical Units Library for C++. I will present all the challenges, design tradeoffs, and potential solutions to those problems. During the lecture, we will also see how new C++20 features help to make the library interface easier to use, maintain, and extend. Among others, we will see how we can benefit from class types provided as non-type template parameters, how new class template argument deduction rules simplify the interfaces and the full power of using concepts to constrain template types.

  • 11:10 - 12:00

    In search for poisonous seed

    Vitaly K.

    A lot of software developers blindly trust their favorite tools. This has been exploited by powerful attackers to create unprecedented scale operations compromising digital signatures and running malicious code on hundreds of thousands of users in plain sight for many months. This talk mentions such cases including the most recent one from 2019 and explains technical details of such attacks. It should be carefully noted by all software developers who care about reputation of their business.

  • 12:10 - 13:00

    GPGPU: what it is and why you should care [Russian]

    Alexander Titov

    GPGPU consists in performing General-Purpose computation on Graphics Processing Units (GPU). Leveraging highly-parallel GPU hardware, this approach allows accelerating some applications by over an order of magnitude over a traditional CPU. Taking into account that many modern devices contain a GPU, GPGPU can be a useful tool in a toolbox of any software developer who cares about performance. The talk provides an introduction to GPGPU. It explains the difference between underlying CPU and GPU hardware and how it led to the different program models. The talk shows what types of tasks are good for GPGPU and when a GPU can be slower than a traditional CPU. The talk does not focus on any specific API (OpenCL, CUDA, etc.) and does not required prior knowledge of CPU or GPU hardware.

  • 13:00 - 14:00

    Lunch

  • 14:10 - 15:00

    Update on C++ Core Guidelines Lifetime Analysis [English]

    Gábor Horváth

    This is an update of the Clang-based implementation of Herb Sutter’s Lifetime safety profile for the C++ Core Guidelines, available online at cppx.godbolt.org.

  • 15:10 - 16:00
  • 16:10 - 17:00

    Multithreading in games [Russian]

    Igor Lobanchikov

    Multithreading and games. Don't touch it if it works fine

  • 17:10 - 18:00
  • 18:10 - 19:00

    New C++ features for writing DSLs [English]

    Ivan Čukić

    C++ is not the best language for writing domain-specific languages (DSLs), but it does have a few tricks up its sleeves. Expression templates have been the go-to approach for this for years, but writing them has always been a pain. The recent C++ versions have improved this situation significantly. We'll demonstrate several new C++ features which make writing DSLs borderline fun

  • 19:00 - 19:10

    Closing

Organizers

  • CoreHard

Partners

  • Solarwinds
  • PVS-Studio
  • DPI Solutions

Community partners

  • C++ Russia
  • CppCon Conference
  • Core C++ Conference

Infopartners

  • Wargaming
  • Kaspersky Lab
  • IT-academy
  • Dot Net Summit
  • dev.by
  • Imaguru
  • IBA
  • comaqa.by
  • DPI Metallic
  • Epam
  • itstep.by
  • javaday.by
  • conf.cocoaheads.by
  • ITVDN
  • HotWork
  • avradays.com
  • vse-kursy.by
  • Аргументы и Факты
  • БГУИР
  • afisha.tut.by
  • Relax.by
  • DMK press
  • Luxoft