MuniHac 2024

MuniHac 2024

October 11–13, 2024 • on-site in Munich

About MuniHac

MuniHac is an annual three-day hackathon and conference in Munich that brings together Haskell developers and enthusiasts from across the globe. This event offers a unique opportunity to improve your Haskell skills, network with experts in the community, and participate in a range of workshops, talks, and projects for both beginners and experienced developers.

The MuniHac is organized by TNG Technology Consulting GmbH and will be hosted at the TNG offices in Munich (Beta-Straße 13, 85774 Unterföhring).

TNG Technology Consulting GmbH
Beta-Straße 13
85774 Unterföhring

Schedule

Please note that all times are CEST.

Friday, Oct. 11th 2024
Time Hackathon Talks & Workshops
8:30 Doors open & Registration
9:00 Opening
9:15 Project Marketplace
09:30 Hack on Beginners Workshop
11:30 Keynote: Hannes Siebenhandl: Exploring Haskell Language Server via the Cabal Plugin
12:30 Lunch
13:30 Hack on Beginners Workshop (continued)
17:30 Official end

Saturday, Oct. 12th 2024
Time Hackathon Talks & Workshops
9:00 Doors open
9:30 Hack on (Talk) Vanessa McHale: Jacinda: Compiling a Functional AWK Replacement Efficiently
10:30 Hack on (Talk) Andrew Lelechenko: CLC activities report
11:30 Keynote: Hécate: Effect Systems in Practice
12:30 Lunch
13:30 Hack on (Workshop) Dominik Schrempf: Statistical inference with Markov chain Monte Carlo algorithms
15:30 Hack on (Workshop) Martin Valdez de Leon: Generative Music with Haskell
17:30 Official end

Sunday, Oct. 13th 2024
Time Hackathon Talks & Workshops
9:00 Doors open
09:30 Hack on (Workshop) Ioannis Katsaros: You don't need to be smart to use Haskell
10:00 Bavarian Breakfast
11:30 Bavarian Breakfast
12:00 Keynote: Niki Vazou: Verification with Refinement Types
13:00 Hack on
14:30 Project presentations
17:00 Doors close

Programme

Keynote

Liquid Haskell: Verification with Refinement Types

Niki Vazou

Refinement types decorate the types of a programming language with logical predicates to allow more expressive type specifications. Originally, refinement type based specifications were restricted to SMT decidable theories and allowed automatic “light” verification, for example properties like non-division by zero or in-bound indexing. Verification of such light properties though requires “deeper” specifications, for example “is append associative?” In this talk, we will interactively see how to use the refinement type checker of Liquid Haskell to verify Haskell programs.

Keynote

Exploring Haskell Language Server via the Cabal Plugin

Hannes Siebenhandl

The .cabal file defines what encompasses a package in the Haskell ecosystem. It is strictly required if you want to upload your package to Hackage. As such, almost anyone has to write or modify .cabal files at some point in their Haskell career, but due to its unique syntax, this often proves harder than necessary. Recently, Haskell Language Server started to close the gap between support for Haskell and cabal source files, by introducing the cabal-plugin.

In this talk, we are going to take a closer look at the integration of the cabal-plugin into the architecture of the Haskell Language Server and explore its key concepts for providing a snappy, interactive developer experience. We are going to discuss the Language Server Protocol, and the plugin architecture, which allows us to extend HLS with a minimal amount of effort. These features will be explained by doing a deep-dive into the "cabal-plugin", which allows HLS to check .cabal files for syntax errors, provide completions, and even more features that help to read, write and modify .cabal files

Keynote

Effect Systems in Practice

Hécate

With Hécate, we will approach the topic of Effect Systems to write Haskell applications, understand why it is important do have semantic effect tracking in your software, and see how it all fits into the design and maintenance of software systems. We will use Effectful, developed for industrial needs of performance and ease-of-use.

Talk

CLC activities report

Andrew Lelechenko

In December I'll be wrapping up my 3-year tenure of the CLC chair and I'd like to present a CLC activities report for this period. Brief introduction to CLC structure, roles and responsibilities; case studies for past CLC proposals; crash course "how to get your proposal approved"; preparations for PVP 1.1; review of core libraries. I hope to demistify the work of the committee and inspire people to apply for vacant positions early next year.

Talk

Jacinda: Compiling a Functional AWK Replacement Efficiently

Vanessa McHale

Jacinda is a laconic functional language for stream processing on the command-line. The functional style for stream processing is appealing — maps and folds express stream processing more directly than variable updates — but it requires some cleverness on the backend to make this efficient. I'll show off the Jacinda language, and how to translates this into something for efficient evaluation. Along the way, I'll show off Haskell features for implementing languages that make, and some of the tricks for writing a modern language that didn't make it into the textbook.

Workshop

Generative Music with Haskell

Martin Valdes de Leon

Have you ever wondered how synthesizers work? How about building your own, using Haskell?

In this workshop we'll introduce some basic notions of sound synthesis, and will take a look at how to apply these concepts to build different kinds of simple musical instruments, and ultimately make some functional music.

This workshop is aimed at Haskell beginners, and requires no prior musical knowledge. Participants are expected to have their own development environments already configured.

Workshop

You don't need to be smart to use Haskell

Ioannis Katsaros

"Sure, Haskell is powerful and safe, but there's no way an idiot like me can build anything useful with it, right?"

That was me three years ago and maybe you're in the same place now; but this is an illusion.

To deliver us from this kind of negative self-talk, we'll build a small http server using the servant API and through example, realize there's no need to be a wizard to write useful Haskell applications.

This workshop is aimed at Haskell beginners, basic knowledge of HTTP APIs is welcome but not necessary.

Participants are expected to have their own development environments configured, but a gitspace is being worked on for the project and may be available for those who don't have either the knowledge or the time to set up their environment.

Workshop

Statistical inference with Markov chain Monte Carlo algorithms

Dominik Schrempf

Haskell excels in finding programming errors during compile time. We also know Haskell for being lazy and for treating values as immutable. Lazyness and immutability are likely reasons why numerical and statistical analysis of data have never been a particular strength of Haskell.

I have used Haskell extensively during my career as a researcher and have tried to combine the benefits of the strong type system of Haskell with blazing-fast statistical estimators.

In this workshop, we will have a look at a specific class of algorithms used for statistical inference: Markov chain Monte Carlo algorithms. We will get a basic understanding of such algorithms, and, discuss how Haskell can aid us in avoiding common user errors. In particular, we will use the Haskell library mcmc to perform some exemplary analyses

Projects

If you want to host another project, you'll have the opportunity to pitch it in the Project Marketplace on Friday morning, and we'll add it to the list!

Contact

Want to keep in touch and receive updates about MuniHac? We have an account, a mailing list, and a Slack workspace.

You can reach us via email: munihac@tngtech.com.

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.