х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.03.2019 - 31.03.2019 300 BYN 170 BYN 420 BYN
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

    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.

  • 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
  • 11:10 - 12:00

    From iterating collections through accumulation to hylomorphisms in C++ [English]

    Vadim Vinnik

    Collection processing is one of the most widely used classes of algorithms. One of its important subclasses is one-pass element-wise traversal. This can be done in a number of different ways: for example, using an integer index a for-loop, with an iterator, recursively etc. A concept of folding, well-known in mathematics and successfully adopted by functional programming paradigm, suits perfectly well. C++ standard library has an std::accumulate function for this purpose. All other element-wise container-traversing algorithms are actually special cases of fold aka accumulate. However, role of folding is often underestimated in the C++ world, and its support in STL seems incomplete. First, fold in C++ needs a special form (not needed in functional language because of their lazy nature) with an early termination condition. Second, there is a natural inverse of fold: an unfold operation that converts a value to a container. Third, a composition of fold and unfold (known as a hylomorphism) is also widely used in functional programming. It can be easily implemented in C++ and deserves some attention. Generalising, all this together makes a step towards further convergence between C++ language and functional paradigm.

  • 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:00 - 18: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
  • Epam
  • itstep.by
  • javaday.by
  • conf.cocoaheads.by
  • ITVDN
  • HotWork
  • avradays.com
  • vse-kursy.by
  • Аргументы и Факты
  • БГУИР
  • afisha.tut.by
  • Relax.by
  • DMK press