‘Iacta alea est’

My Journey to Elm

Poots’ Passage Painted

It didn’t take long for Elm to grab my attention. While keeping abreast of developments in the React.js world I was listening to the JavaScript Jabber podcast, episode 179 with Dan Abramov, off the back of his React Europe talk ‘Live React: Hot Reloading with Time Travel’. He was talking about the Redux architecture applied to React and the many benefits that came out of structuring applications in that way. He also mentioned being called out by Evan Czaplicki for not crediting or referencing Elm in that talk as much as he might have done due to the similarity of Redux to Elm and the Elm Architecture. Dan went on to say:

Elm is a lot more powerful. These concepts are a lot more clean in Elm and are more expressive.

More powerful? Cleaner? More expressive? I stopped listening right there. It turns out JavaScript Jabber had Evan Czaplicki and Richard Feldman on the podcast less than a month earlier. Listening to that episode made it clear that Elm promised a safer and more structured approach to front-end programming. Richard was effusive and I was taken with the precision of Evan’s explanations (a welcome contrast in a world of hand-waving).

At this point I knew I had to try it out so I went to the official website to download Elm and start reading the getting started material. I liked what I saw! It was clear a lot of thought had been put into the guide and everything was easy enough for me to get my teeth stuck into, despite never having seen Elm code before, or used anything like it (functional, ML). The emphasis was on doing—writing code—and making it straightforward for the beginner. The syntax was a little unfamiliar but not very difficult to pick up once I got over a few (initially) confusing peculiarities. Elm has a strong sense of style so it is very clear how to format your code with the added bonus of making others’ code readable. Thanks to the online code editor and compiler it was very easy to play around, and the experience post-installation was just as good, if not better. The REPL allowed me to get my hands dirty without breaking anything and I happened to make the acquaintance of a refreshingly amicable compiler.

I went through the guide once, and confess to not understanding everything first time around. The footnotes referred to the Pragmatic Studio video course on Elm which I thought would help me tie some of the loose ends together in my head, and ground the concepts in a step-by-step tutorial. The course is excellent and I recommend it to anyone who wants to get their head into Elm. It cemented my reading in the context of a (simple) working application.

Shortly afterwards I noticed an Elm tutorial at the CodeMesh conference in London and I thought there could be nothing better to accelerate my understanding than tuition from the author of Elm itself. I jumped at the chance despite it being over the channel (or under, as it turned out). I was not in the least bit disappointed with my investment as Evan led us into some of the more advanced aspects (Ports, Signals, Effects, Tasks) in a jam-packed session, and I got the chance to ask a few questions towards the end.

There’s still a lot more to learn, but the motivation and excitement is there; Elm is fun and immensely practical. Try it.

Saturday 7th November 2015.