Ivan Čukić

Ivan Čukić

KDE developer and Free/Libre software enthusiast

For inquiries about KDE projects (requesting features, submitting bugs, asking general questions etc.), you can use:

KDE Community Forum
Bug reporting site
#plasma IRC channel

You need to contact me directly?

KDE related:
name.surname [at] kde.org

Non KDE related things:
name [at] this domain

IRC Network: freenode.net
Nick: ivan|home
Channel: #plasma

Functional Programming in C++

Inspirational quote

Make your code readable. Pretend the next person who looks at your code is a psychopath and they know where you live.

-- Philip Wadler

Some of the presentations held in the past years, skipping those not focused on C++ and Qt.

Functional Reactive Programming

Meeting C++, Berlin 2016.

[…] We are going to cover an emerging programming paradigm called Functional Reactive Programming (or FRP for short) which achieves concurrency using events-based programming. But, unlike the event-callback-based systems, it does so in a much cleaner way. […]

Slides, Video not yet available

For a brighter QFuture

QtCon, Berlin 2016.

[…] In the first part of this talk, we will cover the potential improvements to the QFuture class that would bring it on par with the similar classes for C++ like boost::future and Folly Future, and with similar classes in other programming languages. […]

Slides, Video

Awaiting for the ranges: C++17

Meeting C++, Berlin 2015.

[…] There are two features planned for C++17 that are poised to reinvent the language like the lambdas and auto did for C++11. Those are the ranges (N4128) and the await (N4134). […]

Slides, Video

Reactive programming and Qt

Qt World Summit, Berlin 2015.

[…] The talk will consist of two parts. In the first part, ranges will be explained (through the boost.range library, and Eric Niebler’s range library proposal for C++17). We will show that ranges, and range transformations are a natural extension to the library in STL, which allows writing more concise and safe code that deals with collection structures like lists, vectors or maps. […]

Slides, Video

Reactive functional and imperative C++

Ericsson, Budapest 2015.

[…] The talk presents an overview of the functional and imperative approaches for writing asynchronous software through event streams and monad composition. […]

Slides, Video not available

Functional reactive programming for C++

CEFP, Budapest 2015.

[…] Reactive programming creates abstractions on top of various low-level approaches for asynchronous execution such as threads, actors, callbacks and such. Those abstractions extend the commonly used higher-order functional programming concepts to be applicable to concurrent systems. […]

Slides, Video not available

Task scheduling with the continuation monad

C++ Russia, Moscow 2015.

[…] We will create an abstraction of the different types of asynchronous and synchronous methods and structures that will allow us to write our programs in a purely imperative manner, while leaving all the complexities of IoC to the C++ compiler. The abstraction we will use is a relaxed variant of the continuation monad. […]

Slides, Video

Monads in chains

Meeting C++, Berlin 2014.

[…] In the recent years, the abuse of multi-threading has become apparent and more and more systems started being developed in the reactive, or event-processing style. It allows lowering the number of threads to match the system cores instead of items that are being processed by using non-blocking asynchronous APIs. […]

Slides, Video

War of Idioms

Akademy, Brno 2014.

[…] We will cover some of the useful concepts ranging from the simple ones like RAII (for warm-up), to static polymorphism, and some more advanced meta-programming techniques. […]

Slides, Video

Natural task scheduling using futures and continuations

Qt Developer Days, Berlin 2013.

[…] With the continuators and continuations, we are able to mimic all control structures provided by the language like serial execution, different loop types, branching and similar, along with some that are not available such as the parallel execution that can wait for all subtasks to end (all_of), for only one (any_of), or just detach the tasks and ignore whether they have finished or not; transactional execution […]

Slides, Video