It’s extremely fun to program in Elm*

*For an admittedly narrow definition of fun.

I recently gave a short presentation at the local Ruby meetup about a tweet:

Or more specifically, I gave a presentation about the program that the tweet referenced, as it compared to a program written in a different language that implemented the same “specification.”

Along the way, I ended up installing and playing with Elm way more than I thought and have continued to poke at it, warts and all:

Very nice errors.

Programming in Elm is fun enough that I think more people should do it and experience the fun. Yes, I’m saying fun more than I should be. Here’s why I think it’s fun:

  • Fast feedback loops — elm-livemakes the process of writing code, seeing the type errors, fixing them, and seeing the page reload as painless as possible. And it’s fast.
  • Great errors — much ink has been spilled on Elm’s errors. Beyond looking cool and being good marketing, they’re actually extremely helpful. They make programming more fun.
  • New way to think about web apps — I’m pretty new to the Re-dux/act/ache whatever universe but this whole thing is extremely interesting. The Elm architecture is compelling, seems to stand up to scale, and reinforces the way web pages actually work by reifying those concepts as programming constructs. Thinking about “old” things in a “new” way is about as good as it gets for me.
  • Constrained problem space — because Elm is designed for the browser, what you can do with it is delightfully constrained. By good luck on our part, the Elm team is actually extremely thoughtful about how they handle the problems within their constrained domain, so it ends up being that much more pleasurable.
  • Types are fun — programming with fancy types is pleasurable to me. Looking at documentation, seeing a type signature, and understanding how to use it, in context, is a singular experience in programming. Elm does a great job at making consuming libraries as easy as possible through types-as-documentation. This does come at a cost, and there is a ramp up to being able to read things this way, and it has taken me a long time, but finally, its clicking and its great.
  • Top-notch community stewardship — Elm is fun. The creators tell good stories. They care about users. It shows in their development process, the stories they tell in public, and in the language itself. It’s warm and fuzzy.

Try it!

I have no idea if Elm can solve your problems, or make your business work better, or actually prevent all runtime errors, or finally get me to understand why people like The Beatles so much, but I know one thing: programming in Elm is fun, and you should try it.