Learning a niche language like Elm involves a lot of head scratching over sparse documentation, posting to forums and hoping to get at least one response, looking at other people’s undocumented code on GitHub to solve your problems, and generally a lot of stabs in the dark. Right? Well, I’m happy to say that at least for Elm, it’s no longer true.

The official introduction to Elm is a useful overview of the language, but what’s available beyond that? In 2018, the answer is “quite a lot”, as it turns out. There are books, video courses, talks and guides. Whether you prefer learning by reading or watching, you’ll find something here. I’m happy to say that we’re getting to a point where there is a substantial amount of resources above beginner level.

Books

Elm in Action by Richard Feldman

This is a beginner to intermediate level book. It is in early access at the time of writing this post, so it doesn’t include chapters 7-10 (Tools, Single-Page Applications, Scaling Elm Code, and Performance Optimisation). It starts from the basics and requires no prior knowedge of Elm. After introducing some of the syntax, Richard begins walking us through building an application for browsing photos, introducing many topics such as server requests, JSON decoding and testing along the way. $40.

Programming Elm by Jeremy Fairbank

Jeremy’s book also starts from the basics of Elm syntax, but we launch into building a photo sharing application right from the first chapter. The scope of the book is similar to Elm in Action. In the course of the book, you will learn a lot of useful things about communicating with servers, using WebSockets, JS interop, building single-page applications, as well as debugging, testing and performance optimisation. The book is still in beta at the time of writing this post, but all the content appears to be in place. $22.

Practical Elm for a Busy Developer by me (Alex Korban)

My book is for people who already have some familiarity with Elm. As such, it skips the basics like Elm syntax and the Elm architecture and proceeds at a faster pace than other books. It provides answers to practical questions: how to deal with styling, how to decode complex JSON, how to get maximum leverage out of the type system, and so on. Currently in early access. $34.

An Outsider’s Guide to Statically Typed Functional Programming by Brian Marick

Brian’s book is also a work in progress. It isn’t strictly about Elm, however the first 400-odd pages are dedicated to Elm. The later chapters are about another language called PureScript. This is a good book if you’re interested in learning more about functional programming techniques and concepts like phantom types, lenses and monoids in the context of Elm. However, Brian also introduces a sample application midway through the book, and uses it to showcase the elm-style-animation package as well as discussing error handling and working with JSON. $13 minimum, $22 recommended.

Beginning Elm by Pawan Poudel

Technically not a book but written like one. It walks you through the basics at an easy pace with plenty of examples, but also follows up with coverage of commands, subscriptions, server requests, JSON decoding and JavaScript interop. Free.

The JSON Survival Kit by Brian Hicks

If writing JSON decoders is a stumbling block for you, then you’ll benefit from Brian’s short book which digs into this topic in particular. $29.

Video courses

Richard Feldman’s Frontend Masters Elm course

This course is a 9 hour recording of a live Elm workshop spanning beginner to intermediate topics. I have only seen parts of it, but it seems extremely thorough and includes topics like scaling the code and optimisation. $39/month.

Elm for beginners by James Moore

This course is about the basics of Elm programming. Free.

Elm beyond the basics by James Moore

Covers topics like SPA navigation, ports, WebSockets, and JSON decoding in the context of developing a sample application. $45.

Building Web Apps with Elm by Pragmatic Studio

This course revolves around building a buzzword bingo application. It starts from the basics like currying and the Elm type system, and then moves on to the Elm architecture, introducing commands, making server requests and working with JSON, as well as event handling and some consideration of code organisation. $65

Integrating Elm by Pragmatic Studio

This 40-minute course deals specifically with replacing a small part of an existing JavaScript application with an Elm application. Free.

Elm lessons on Egghead.io

There are a number of videos by several authors covering various aspects of Elm. Videos appear to be free, extra features $40/month.

Elm courses on Pluralsight

One of these is my course which is based on a subset of the material in my book Practical Elm. Richard Feldman’s Frontend Masters Elm course is also available here, as well as a beginner Elm course by Michael van Sickle. $29/month.

DailyDrip Elm videos No longer operating

A number of short screencasts about writing Elm, some free, others $9/month.

Elmseeds series of screencasts by Erik Person

55 mostly standalone screencasts on various Elm topics. Free.

Beginner’s Guide to Elm Programming

Describes Elm using examples of simple games and a chat. $14.

Talks

These Elm talks in particular changed my thinking with regards to writing Elm in some way:

A couple of non-Elm functional programming talks which I found fascinating:

You can find more Elm talks here:

Beginner guides

Articles and guides

I thought this would be the longest section but in the end I could only think of a few links to include here. I’m sure there are things I’m not aware of, but most of the content I’ve seen is either beginner level or focused very narrowly on solving a specific problem. The material below is more substantial and has broader appeal, I hope.

Forums and chat

Official Elm forum

Good place to seek advice on specific issues, find out about interesting packages and learn new techniques.

Elm Reddit

There is a weekly thread for beginner questions here, and people regularly ask about specific issues in other posts as well. You will hear about people’s projects and posts as well.

Elm Slack

For more interactive help, you can join the Elm Slack. The community is very friendly, and there are many channels dedicated to specific aspects of working with Elm.

Did I miss any good material? Let me know on Twitter - I’m @alexkorban.