Material presented at various events
Table of Contents
- Talks
- 2021 - Haskell eXchange - Multi-dimensional Arrays that Do Not Exist
- 2021 - HaskellerZ - New random interface
- 2020 - HaskellerZ - Color in Haskell
- 2019 - Monadic Party - Haskell arrays with Massiv
- 2019 - FP Complete webinar - RIO, a standard library for Haskell
- 2018 - Monadic Warsaw #14 - Haskell arrays that are easy and fast
- Talk page is on skillsmatter.com
- Related materials are in this repo: 2021-HaskellExchange
- Recording of the talk is on youtube.com
The goal of this talk is to explain delayed arrays, that are available in massiv library, as well as their roles in fusion and parallelization of operations applied to multi-dimensional arrays.
Immutable arrays in Haskell come with great safety properties and provide opportunities for a variety of optimizations. However, without fusion most operations on arrays do not compose efficiently due to intermediate allocations. Delayed arrays provide us with a reliable fusion framework, which is fully controlled by the user and guided by the type checker.
Many operations on arrays are massively parallel, however the common Haskell
technique of evaluating with par
and pseq
and relying on GHC's spark pool is not
applicable to unboxed arrays because it relies on laziness. Combination of a
custom scheduler and delayed arrays can help us with a solution, so we can
benefit from multi-core parallelization.
- Talk page is on meetup.com
- Related materials are in this repo: 2021-HaskellerZ
- Recording of the talk is on youtube.com
This talk is about the recent addition to the interface of
random
package, the defacto package for generating
random values in Haskell. Those recent changes include performance an usability
improvements, which are of course briefly mentioned in the talk. However, majority of the
time in the talk is dedicated to the stateful interface that unifies together
pseudo-random generators that use pure state pasing and the ones that rely on a large
mutable state.
- Talk page is on meetup.com
- Related materials are in this repo: 2020-HaskellerZ
- Recording of the talk is on youtube.com
This talk targets any beginner to advanced level developer who would like to understand ways to represent and manipulate colors programmatically in Haskell with the Color library
The goal is to convey the meaning of what a color space is and shatter the common confusion with the color model. Discusses concepts involved in defining various color spaces and conversion between them. There will be a tutorial on how to write correct and efficient code that performs these conversions without the need to understand the math behind it. Lastly we'll see how to apply the knowledge learnt to convert some images.
-
Talk page is on 2019.monadic.party
-
Presented materials are:
- in this repo: 2019-Monadic-Party
- and in a separate RockAnts repository.
-
Recordings of this workshop is on youtube.com:
If you are not used to the pure functional paradigm, then dealing with arrays in Haskell can be very unintuitive, the code you write can become inefficient, especially if you choose the wrong library or an incorrect data structure for the job.
Throughout the series of talks and workshops I will cover some concepts about native
arrays that every Haskell programmer should understand as well as provide concrete
examples on how to deal with multidimensional arrays using the massiv
library. First
lectures will start with basic topics, such as memory representations and how to properly
handle mutation. Then we will transition into more advanced notions of fusion, stencils
and other ways of avoiding unnecessary computation, while taking advantage of automatic
parallelization. Besides looking at many simple examples we will have hands on experience
developing a more complex application that will reinforce the understanding of concepts
introduced earlier.
-
Talk page is on fpcomplete.com
-
Slides are in this repo: 2018-FPCo-Webinar
-
Recording of the talk is on youtube.com
-
Material presented:
- rio library
- haskell-webshell - shell as a webapp
In this month's webinar, Alexey Kuleshevich demonstrated just how easy it is to get started with RIO, the standard library for Haskell. As a recap, RIO is not only a library but is a collection of solutions to some of the most common problems in the Haskell ecosystem as well as a description of the best practices and design patterns. It also introduces the RIO monad, which promotes a drastic simplification over the common approach of an endless stack of transformers.
- Talk page is on meetup.com
- Slides are in this repo: 2018-Monadic-Warsaw
- Recording of the talk is on youtube.com
This talk will be about manipulation of multidimensional arrays in Haskell using freshly baked library called massiv. No prior exposure to arrays in Haskell will be required, understanding of what an array is and familiarity with basic functional programming should be sufficient.
First part of the talk will be an overview of the library and some of the core concepts: in memory data representation, array indexing and manual fusion.
Further will follow some examples of array processing mechanisms such as folding, extracting, slicing etc. after which we'll dive into some more advanced features, in particular stencil computation, parallelization and overview of the scheduler.
Performance and ease of use are the two main goals of the library, therefore expect plenty of usage examples, benchmark results and some comparison to existing libraries such as Vector, Repa and Accelerate.
Time permitting, we might look into massiv application in Image Processing.