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.
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.
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.
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.
There are a number of videos by several authors covering various aspects of Elm. Videos appear to be free, extra features $40/month.
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.
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:
“Point-Free or Die: Tacit Programming in Haskell and Beyond” by Amar Shah
“Y Not - Adventures in Functional Programming” by Jim Weirich
You can find more Elm talks here:
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.
“Advanced Types in Elm” - a series of 4 posts by Charlie Koster
“The ‘taco’ technique for managing common information in an SPA” by Ossi Hanhinen and Matias Klemola
“Expressing a Relationship between Multiple Types in Elm” by Ryan Rempel
“Integrating Javascript into Elm: Alternatives to Ports” by Ryan Rempel
Good place to seek advice on specific issues, find out about interesting packages and learn new techniques.
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.
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.