ZuriHac is the biggest Haskell Hackathon in the world: a completely free, three-day grassroots coding festival organized by Zürich Friends of Haskell. It features fantastic keynotes, hands-on tracks, and of course lots of hacking and socializing!
ZuriHac takes place Friday 18 June — Sunday 20 June 2021.
Due to the still ongoing pandemic, ZuriHac 2021 will be a virtual event. We hope to return as a real-life event in 2022.
ZuriHac 2021 is an online event, but we still require registration. After registering, you will receive an invite to our Discord server, where we will host the Hackathon.Register here for ZuriHac 2021
|2021-06-18T18:00:00+02:00||2021-06-18T19:30:00+02:00||talk||#speaker-john-hughes||Opening & Talk by John Hughes: Testing smart contracts with QuickCheck|
|2021-06-18T19:45:00+02:00||2021-06-18T20:45:00+02:00||partner||Digital Asset: Haskell in the industry, DAML, Q&A|
|2021-06-19T10:00:00+02:00||2021-06-19T11:15:00+02:00||talk||#speaker-ollie-charles||Talk by Ollie Charles: Rel8: A new database access library for Haskell|
|2021-06-19T11:30:00+02:00||2021-06-19T12:30:00+02:00||partner||Fretlink: Fun haskell for regular stuff, Q&A|
|2021-06-19T12:30:00+02:00||2021-06-19T13:30:00+02:00||partner||Tweag: building Haskell with Bazel|
|2021-06-19T14:00:00+02:00||2021-06-19T15:00:00+02:00||beginner||Haskell install party|
|2021-06-19T14:00:00+02:00||2021-06-19T17:00:00+02:00||advanced||#advanced-track||Advanced Track: Optics in the abstract|
|2021-06-19T17:00:00+02:00||2021-06-19T18:00:00+02:00||talk||GHC Panel Discussion with Simon Peyton Jones|
|2021-06-19T18:00:00+02:00||2021-06-19T19:15:00+02:00||talk||#speaker-emily-pillmore||Talk by Emily Pillmore: Haskell Foundation Progress Update|
|2021-06-20T10:00:00+02:00||2021-06-20T11:15:00+02:00||talk||#speaker-veronika-romashkina||Talk by Veronika Romashkina: Lift Unliftable (and unlift liftable)|
|2021-06-20T11:15:00+02:00||2021-06-20T12:00:00+02:00||advanced||#serokell-track||GHC: Dependency Analysis of Haskell Declarations|
|2021-06-20T12:00:00+02:00||2021-06-20T13:00:00+02:00||advanced||#serokell-track||How to make the most out of servant|
|2021-06-20T14:00:00+02:00||2021-06-20T17:00:00+02:00||advanced||#advanced-track||Advanced Track: Understanding memory usage with eventlog2html and ghc-debug|
|2021-06-20T18:00:00+02:00||2021-06-20T19:15:00+02:00||talk||#speaker-sandy-maguire||Talk by Sandy Maguire: A New Kind of Programming: Tactic Metaprogramming in Haskell|
Emily is a long-time functional programmer, Haskell developer and CTO of the Haskell Foundation. Her research interests include Homotopy Theory, Category Theory and Topology, and she recently co-authored a paper about Profunctor optics.
John Hughes holds a professor position at the Chalmers University of Technology. In the Haskell community, he is mostly known for his work around QuickCheck, that changed the way how functional programmers test programs. He also leads QuviQ, a software testing consultancy.
Veronika is an enthusiastic functional programmer and uses Haskell for open source work as well as in production. She co-founded Kowainik, who've provided us host of a useful tools and tutorials. On top of that, she is also one of the authors of the wonderful Bind the Gap magazine.
Lift Unliftable (and unlift liftable)
I love pure total functions because they usually do one concrete thing, don't throw exceptions and are easily testable. But when entering the real engineering world, you need to deal with a lot of nasty things aka side effects. The most efficient way to decrease accidental complexity is to decompose the side effect into smaller, more controllable and modular parts. Monad Transformers (MT) offer such a decompositional approach to solving these problems, and it is popular and widely used in production nowadays. However, using Monad Transformers is not a bed of roses. MT architecture could be considered harmful sometimes.
In my talk, I'm going to examine how Monad Transformers took such a big role in applications, what problems they solve (and which don't), share common issues you can experience while working with an MT stack, and how you can overcome challenges introduced by them.
Sandy is best described somewhere between independent researcher and voluntarily-unemployed bum. He wrote two books about Haskell, Thinking with Types and Algebra-Driven Design, as well as the library polysemy.
We have a number of tracks for all you knowledge-hungry people.
These cover any level between beginner and expert, and we've taken special care to have content for intermediate Haskell programmers. There has never been a better time to learn and apply some real-world Haskell skills!
Julie Moronuki and Chris Martin of Typeclasses will teach a class for beginner Haskell programmers.
No prior Haskell experience is necessary, and you will learn fundamentals as well as some applied skills over the course of the two sessions.
For this track, you have to have a working Haskell installation. We'll hold an install party before the beginner track to help you with that. We recommend ghcup to install the compiler and cabal, together with VSCode and the Language Server extension. Installing Haskell in 2021 is super easy!
The IHP web framework is a really cool Haskell web framework combines the productivity of Ruby-on-Rails with the performance and robustness of Haskell. The community around it is growing really fast, in part because it comes with highly polished tools and doesn't need deep technical knowledge to build useful websites very quickly.
The creators of IHP, digitally induced, will hold tutorials that teach you how to get productive with the framework. We recommend that even total beginners check it out, as some people have learned Haskell simply through using IHP for a practical application.
Similar to last year, we have the privilege to get advanced Haskell training from our friends at Well-Typed. This will take the form of two independent sessions, distributed over the course of two days.
Saturday: Optics in the abstract by Adam Gundry
Haskell programming often involves manipulating data structures. Optics are a compositional abstraction representing "notions of substructure" as first-class values. For example, lenses capture the notion of one data structure containing another, and there are more general optics for read-only, write-only, optional or repeated substructures. Judicious use of optics can lead to succinct, expressive code, yet optics also have a reputation of being impenetrable.
In this workshop, we will explore optics-the-concept in general and the optics library in particular. This library provides interfaces for defining, combining and using various kinds of optics. Crucially, these interfaces are abstract, so they can be understood without reference to the underlying implementation.
We will also discuss how optics can help in addressing the limitations of Haskell's record system, in conjunction with language extensions such as DuplicateRecordFields, OverloadedLabels and the forthcoming RecordDotSyntax and NoFieldSelectors.
Finally, we will use optics as a case study to reflect on library design in Haskell. How can we build libraries that capture powerful concepts and yet remain easy to use by Haskellers with a wide range of skill levels?
This workshop will be suitable for Haskell programmers with a knowledge of basic Haskell concepts (polymorphic functions, data types, type classes). It does not require familiarity with advanced type system features such as higher-rank types or type families.
Sunday: Understanding memory usage with eventlog2html and ghc-debug by Matthew Pickering and Ben Gamari
Profiling memory usage of applications has historically been a difficult task, thankfully in recent years the profiling tools have become more sophisticated and now it is quite easy to work out memory usage issues, if you know how to ask the right question.
In this workshop, we will look at two profiling tools which can give you both high and low level insight into the memory usage of your application. Firstly, by using eventlog2html we will understand how to get a high-level overview of your program's memory usage. Then using these insights we will then learn how to use ghc-debug in order to answer some more precise questions about memory usage.
The presentation will not require any advanced knowledge but we will be delving into the internals so you should be comfortable with that. The majority of the workshop will be given over to allowing participants to experiment with the tools themselves on our toy examples or their own projects.
Unison is an exciting new programming language that shares Haskell's syntax (in addition to being implemented in it). The big ideas in Unison are content-addressable code and a focus on creating a language in which it is natural to express distributed systems.
Rúnar Bjarnason of Unison Computing will give you an intro to the language, and hold a hands-on tutorial.
If you can't wait, check out the 2019 Strangeloop introduction to the language.
This year year we're delighted to have Serokell present two topics:
- Dependency Analysis of Haskell Declarations in GHC.
- How to make the most out of servant.
The servant talk is geared towards industrial practicioners, so please don't hesitate to join if you're excited about practical applications but don't consider yourself an expert.
Mob Programming : Angry Lambdas
Collectively implement a small Angry Birds clone in Haskell using the Gloss library for graphics and user interaction, and the Chiphunk library for physics simulation!
This workshop is targeted at beginners with a basic understanding of Haskell. You only need to know algebraic datatypes, pattern-matching, and a bit of IO.
Note: This is a mob programming event: participants will take turn at the (virtual) keyboard, while listening to suggestions and comments from the rest of the crowd.
Of course, it wouldn't be a Hackathon without projects to hack on! You can find the list of projects here and even add your own!
If you have any questions before the event, please reach out to Jasper Van der Jeugt, Juri Chomé or Farhad Mehta. We also monitor our official Twitter account.
The primary medium to communicate with other participants is our
Discord server. You will receive an
invite to that after you register.
We use the hashtag
#zurihac on Twitter.
The main organizers for ZuriHac 2021 are Jasper Van der Jeugt, Juri Chomé, Farhad Mehta and Bieke Hoefkens.
Additional volunteers include Andreas Herrmann, Artem Chirkin, Arvin Moezzi, Charles Till, Gleb Peregud, Ingrid Vettiger, Ivan Kristo, Mathias Koerner, Niklas Hambüchen, Silvio Böhler, Simon Meier and Tomas Carnecky.
Each participant will retain ownership of any and all intellectual and industrial property rights to his or her work created or used during the Hackathon.
ZuriHac uses the Berlin Code of Conduct.