18 - 21 June 2019
Poznan, PL

Haskell Summer School

=<< Monadic Party >>=

Four days of Haskell nerding. Lunch included. Bring your laptop

About the event

Monadic Party is a four-days long Haskell summer school. Our vision is to teach in depth with each talk spanning multiple sessions. Because of the additional time at our disposal we can get deeper into each topic to show a larger part of the story behind the subject.

We will have three tracks, one for programmers that aren't experienced in Haskell and would like to learn it from the basic concepts. The other tracks are for people already familiar with the language and will present a selection of talks and workshops on a variety of topics. We will announce the list of topics after our call for speakers closes at the end of February.

For the attendees that arrive on the 17th, and we have a preparty lined up. Check a signup email for more details.

We chose Poznan to host the summer school because of its architecture, culture and nightlife. The venue is a recently restored lovely old building at Mlynska 12 where we have the whole highest floor at our disposal. So the only thing you need is a ticket, laptop and a place to sleep and you're good to go. Catered lunch, tea and coffee is included in the ticket price.

Check out the last year's website.

Getting There

We will hold the summer school at Mlynska 12, Poznan, Poland. The venue is in the Old Town, a walking distance from a town square. We would love to help you with choosing a place to stay. If you have any questions, please email us at [email protected].

In terms of travel, WizzAir, Ryanair, Lufthansa and LOT all have a dense network of daily connections to and from the city. If you want to save some carbon dioxide, there are frequent train connections from Germany and inside Poland. Buses are also a good budget option with PolskiBus which operates a lot of routes in the region.

Inside the city of Poznan there is a good public transporation system with a dense network throughout the city.

About us

We're the organizers of Monadic Warsaw, Ewa Kruzynska and Michal Kawalec. With almost six hundred members it grew up to be one of the biggest Haskell meetups in Europe. We've had speakers and visitors from all over the world and we also host a YouTube channel. It is our way of popularizing functional programming and building a community of interested people. We are sure the summer school will give us as much fun as Monadic Warsaw.

Scholarship Programme

We are deligted to offer a means based scholarship programme. If you are financially unable to attend the summer school, we have a number of fully funded places available. Everything needed for you to attend is covered - travel to the event, accommodation and the ticket itself. The first edition was really successful, so we're really happy that we can continue offering it this year as well.

Scholarship applications are closed

Ryan Moore

Quantum Cyclocomplexitor in Chief at MX

Krzysztof Gogolewski

Works on Linear Types in GHC at Tweag

Alexey Kuleshevich

Software Engineer at FP Complete

Justin Woo

PureScript and memes

Edward Kmett

Tom Sydney Kerckhove

Technical Lead at FP Complete

Christophe Scholliers

Professor in computer science at the University of Gent

Marcin Szamotulski

Networking Lead at IOHK

Laurens Duijvesteijn

Builds infrastructure at Channable

Libby Horacek

Software developer at Position Development in NYC. She maintains several Haskell web applications serving millions of users.

Paul Kinsky

Haskell developer at Formation.

Chris Penner

Acro yogi, chiptune artist, programmer.

Arthur Xavier

Software engineer writing mainly PureScript and Haskell at Lumi.

Zans Mihejevs

A functional programmer who straddles the boundary between industry and academia.

Talk Titles

Christophe Scholliers:

A project based approach to learning Haskell - 6 hours

Beginner

Abstract

This track consists of a crash introduction to Haskell, in two parts of theory and practice. In the theory, we start from scratch and finish with the concepts of functions, type classes and algebraic data types. Armed with this knowledge we switch to the exercise track where we will implement two small games: Snake and Tetris.

About the speaker

Christophe Scholliers is professor in foundations of programming languages at Ghent University. His current research is mainly situated in the field of parallel and distributed programming language abstractions.

Ryan Moore:

Practical Cryptography with Haskell - 6 hours

Beginner

Abstract

Students will spend 6 sessions learning to apply practical Haskell programming techniques to the field of cryptography. Together we will explore the fundamental building blocks of modern cryptographic and functional programming techniques. We will focus on domain driven development leveraging the powerful type system of Haskell. Beginner Haskellers are welcomed, but should have a working knowledge of basics, for example function definition and application, where and let blocks. We will explore the following topics: discrete probability, the one time pad, pseudorandom generators, building attacks on ciphers, as well as exploring real world stream ciphers. This will be a fun, and hands on course that will combine lectures focusing on Haskell and Cryptography fundamentals with hands on exercises, projects, and a capstone. Students will leave feeling confident in leveraging Haskell’s type system, writing their own types, using instances of functors, monoids and applicative and take away experience writing and breaking cryptography algorithms.

About the speaker

Ryan Moore is a lead engineer at MX - company dedicated to democratizing financial data. He has been programming Haskell for 3 years and loves it for its rigor, playfulness & consistency.

Justin Woo:

Real World PureScript - 2 hours

Beginner

Abstract

In these sessions, Justin will go through various techniques used to make "Real World" applications work in PureScript. Topics will include FFI, using PureScript outputs from JavaScript, and various ways Row Type Classes can be used, whether to create a clean PureScript library or to provide more powerful interfaces for weakly-typed JavaScript libraries. Participants will walk away understanding how libraries like Simple-JSON and React-Basic work.

About the speaker

Justin is a Korean-American living in Helsinki. In his previous life, he was a materials science student researcher, using lab equipment to create and characterize superhydrophic surfaces. He now works with PureScript on browsers and AWS Lambda. Justin is best known not for his PureScript ecosystem work or educational blog posts, but for his memes on Twitter.

Tom Sydney Kerckhove:

Testing for beginners - 5 hours

Beginner

Abstract

The talks will form a complete introduction to testing in Haskell. They will cover the different kinds of tests, and how to write them in Haskell, best practices and generators and their best practices. It will be a combination of lectures and hands-on workshops.

About the speaker

Professional Weirdo, more at https://cs-syd.eu

Libby Horacek:

Learn Haskell by making a website - 4 hours

Beginner

Abstract

In this workshop, we'll make a simple website and along the way, learn basic Haskell concepts such as data types, type classes, the Maybe type, and the IO type. We'll use the beginner-friendly Fn web framework to create type-safe routes and write handlers for those routes, with views written in the Blaze templating language. The goal will be to show that writing real-world apps in Haskell can be fun and approachable, and to help attendees over some common initial stumbling blocks.

About the speaker

Libby is a software developer at Position Development in NYC. She maintains several Haskell web applications serving millions of users.

Marcin Szamotulski:

Typed Protocols, Session Type Framework for Applications - 3 hours

Intermediate

Abstract

In Haskell we are used to design systems using types as both a guiding tool and verfication of desired properties. Session types allow to do that when developing protocols. In this course we will dive into this framework and develop an example protocol and prove it correctness (or rather let GHC prove it for us).

About the speaker

Networking Lead at IOHK

Alexey Kuleshevich:

Haskell arrays with Massiv - 6 hours

Intermediate

Abstract

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.

About the speaker

I have a master's degree in computer science from University of New Mexico. Currently work as a Software Engineer at FP Complete and have been for the past three years. Lately I’ve been spending a lot of time in the blockchain domain, but the types of projects I normally tackle at work vary drastically. Enjoy traveling, drinking beer and any free time I do find I tend to spend working on open source Haskell projects.

Laurens Duijvesteijn:

Boring software with Haskell - 6 hours

Intermediate

Abstract

Haskell is fantastic for industry use. The language can give you some nice correctness guarantees. This peace of mind can make software feel boring (in a good way). I want to convince you of this claim.

In this talk/workshop series, I'll show you how to write small but useful applications in Haskell. We'll talk about common patterns you need in a production setting (e.g. JSON, HTTP, and databases).

About the speaker

DevOps Lead at Channable. Builds internal tooling. Likes his types as is his coffee: strong.

Chris Penner:

Comonads By Example - 4 hours

Intermediate

Abstract

This interactive talk series explores the Comonad typeclass while solving real problems. Students are presented with practical examples to ground their understanding and cement their learnings by implementing the things they learn along the way. Git checkpoints are provided so nobody is left behind. The workshop-style series covers everything from "what's a comonad?" to using comonads for solving real problems, including simulating cellular automata and image processing!

About the speaker

Acro yogi, chiptune artist, programmer. I've been writing Haskell for fun for a few years now and enjoy finding practical applications for abstract category theory concepts.

If you're interested in my programming blog or github profile you can find them here.

Arthur Xavier:

Type-safe embedded domain-specific languages - 4 hours

Intermediate

Abstract

Language is everything; it governs our lives: from our thought processes, our communication abilities and our understanding of the world, all the way up to law, politics, logic and programming. All of these domains of human experience are governed by different languages that talk to each other, and so should be your code. Haskell provides all the means necessary—and many more—to easily and safely use embedded small languages that are tailored to specific needs and business domains.

In this series of lectures and workshops, we will explore the whats, whys and hows of embedded domain-specific languages in Haskell, and how language oriented programing can bring type-safety, composability and simplicity to the development of complex applications.

About the speaker

Arthur is a software engineer writing mainly PureScript and Haskell at Lumi. A researcher by heart, passionate learner and languages aficionado—in all their forms—he is currently on a journey into the deep corners of programming languages and type theory.

Edward Kmett:

Guanxi - Logic Programming in Haskell - 4 hours

Advanced

Abstract

I'll be giving a tour of the current state of the 'guanxi' library in Haskell. This is a framework I'm building for logic programming in the style of mini-Kanren.

About the speaker

I write a lot of Haskell.

Krzysztof Gogolewski:

Linear types - 4 hours

Advanced

Abstract

GHC is getting linear types. I'll cover how you can use them, which of the common functions and classes can be made linear, interactions with other features of the language, theoretical underpinnings, future directions.

About the speaker

Software engineer at Tweag, currently working at implementation of linear types in GHC.

Paul Kinsky:

Lazily Diffing Merkle Trees with Recursion Schemes - 4 hours

Advanced

Abstract

Build a merkle tree type meant to represent directory trees (as used by git, mercurial, etc) using recursion schemes, then use this to implement lazy diffing of arbitrary large merkle trees (real world problem for bigco monorepos), see an example implementation. We will dive into how functor composition can be used to build different merkle tree structures starting from various primitives (Maybe, [], Either a, (,) a, etc) - eg, did you know that type List a = Fix (Compose Maybe ((,) a)) and type NonEmptyList a = Fix (Compose ((,) a) Maybe)?

About the speaker

Haskell developer at Formation.

Zans Mihejevs:

Implementing a Dependently Typed Language from Scratch - 6 hours

Advanced

Abstract

In this talk will start with the untyped lambda calculus and gradually build up towards simply typed, system F, system Fω and a dependently typed language. Particular attention will be paid to the parsing and type-checking issues that arise as the language increases in complexity.

About the speaker

A functional programmer who straddles the boundary between industry and academia.

=<< Schedule >>=

Monday

Pre-party
Sky Bar @ Młyńska 12

Tuesday

Π

Opening
Christophe Scholliers
A project based approach to learning Haskell
1/6
Christophe Scholliers
A project based approach to learning Haskell
2/6
Christophe Scholliers
A project based approach to learning Haskell
3/6
Lunch Break
Ryan Moore
Practical Cryptography with Haskell
1/6
Ryan Moore
Practical Cryptography with Haskell
2/6
Ryan Moore
Practical Cryptography with Haskell
3/6

Σ

Opening
Alexey Kuleshevich
Haskell arrays with Massiv
1/6
Alexey Kuleshevich
Haskell arrays with Massiv
2/6
Alexey Kuleshevich
Haskell arrays with Massiv
3/6
Lunch Break
Chris Penner
Comonads By Example
1/4
Chris Penner
Comonads By Example
2/4

Yoneda

Opening
Zans Mihejevs
Implementing a Dependently Typed Language
1/6
Zans Mihejevs
Implementing a Dependently Typed Language
2/6
Zans Mihejevs
Implementing a Dependently Typed Language
3/6
Lunch Break
Edward Kmett
Guanxi - Logic Programming in Haskell
1/4
Edward Kmett
Guanxi - Logic Programming in Haskell
2/4

Wednesday

Π

Christophe Scholliers
A project based approach to learning Haskell
4/6
Christophe Scholliers
A project based approach to learning Haskell
5/6
Christophe Scholliers
A project based approach to learning Haskell
6/6
Lunch Break
Ryan Moore
Practical Cryptography with Haskell
4/6
Ryan Moore
Practical Cryptography with Haskell
5/6
Ryan Moore
Practical Cryptography with Haskell
6/6

Σ

Laurens Duijvesteijn
Boring software with Haskell
1/6
Laurens Duijvesteijn
Boring software with Haskell
2/6
Laurens Duijvesteijn
Boring software with Haskell
3/6
Lunch Break
Chris Penner
Comonads By Example
3/4
Chris Penner
Comonads By Example
4/4

Yoneda

Paul Kinsky
Lazily Diffing Merkle Trees with Recursion Schemes
1/4
Paul Kinsky
Lazily Diffing Merkle Trees with Recursion Schemes
2/4
Marcin Szamotulski
Typed Protocols, Session Type Framework for Applications
1/3
Lunch Break
Zans Mihejevs
Implementing a Dependently Typed Language
4/6
Zans Mihejevs
Implementing a Dependently Typed Language
5/6
Zans Mihejevs
Implementing a Dependently Typed Language
6/6

Thursday

Π

Tom Sydney Kerckhove
Testing for beginners
1/5
Tom Sydney Kerckhove
Testing for beginners
2/5
Tom Sydney Kerckhove
Testing for beginners
3/5
Lunch Break
Libby Horacek
Learn Haskell by making a website
1/4
Libby Horacek
Learn Haskell by making a website
2/4
Justin Woo
Real World PureScript
1/2

Σ

Arthur Xavier
Type-safe embedded domain-specific languages
1/4
Arthur Xavier
Type-safe embedded domain-specific languages
2/4
Alexey Kuleshevich
Haskell arrays with Massiv
4/6
Lunch Break
Alexey Kuleshevich
Haskell arrays with Massiv
5/6
Alexey Kuleshevich
Haskell arrays with Massiv
6/6

Yoneda

Edward Kmett
Guanxi - Logic Programming in Haskell
3/4
Edward Kmett
Guanxi - Logic Programming in Haskell
4/4
Krzysztof Gogolewski
Linear Types
1/4
Lunch Break
Krzysztof Gogolewski
Linear Types
2/4
Krzysztof Gogolewski
Linear Types
3/4

Friday

Π

Libby Horacek
Learn Haskell by making a website
3/4
Libby Horacek
Learn Haskell by making a website
4/4
Justin Woo
Real World PureScript
2/2
Lunch Break
Tom Sydney Kerckhove
Testing for beginners
4/5
Tom Sydney Kerckhove
Testing for beginners
5/5
Closing

Σ

Laurens Duijvesteijn
Boring software with Haskell
4/6
Laurens Duijvesteijn
Boring software with Haskell
5/6
Laurens Duijvesteijn
Boring software with Haskell
6/6
Lunch Break
Arthur Xavier
Type-safe embedded domain-specific languages
3/4
Arthur Xavier
Type-safe embedded domain-specific languages
4/4
Closing

Yoneda

Marcin Szamotulski
Typed Protocols, Session Type Framework for Applications
2/3
Marcin Szamotulski
Typed Protocols, Session Type Framework for Applications
3/3
Krzysztof Gogolewski
Linear Types
4/4
Lunch Break
Paul Kinsky
Lazily Diffing Merkle Trees with Recursion Schemes
3/4
Paul Kinsky
Lazily Diffing Merkle Trees with Recursion Schemes
4/4
Closing

=<< Partners >>=

Code of Conduct

We are following the Berlin Code of Conduct. If you ever feel it has been breached, do not hesitate to contact one of the organizers.