What helped you learn Elm?

Hey Elm friends, :wave:

I’ve been thinking about how we can make Elm more accessible to frontend developers, and that led me to the question:

What helped you learn Elm?

Specifically, I’d like to learn more about:

  • Your background before Elm
  • How you heard about Elm
  • Moment you were convinced

For example, here’s how I would answer this question:

Background:
Frontend programmer, primarily using Vue.js to build websites.

How you heard about Elm:
I read a series of articles on Medium (by Charles Scalfani), which led me to Evan’s 2015 talk “Let’s be Mainstream!”

Moment you were convinced:
I visited the Elm Guide and attempted to add the “Reset” feature to the “Counter example”.

Even though the syntax was intimidating, I was able to add the new feature.


If you are interested in sharing your story, I’d love to hear it! Also, please share this with other folks you know who have their own Elm journey.

Thanks,

Ryan

11 Likes

Background :
Mathematic Student, Learned Lisp and Prolog at uni. Did some hobby projects in Vue.js.

How you heard about Elm:
By searching “functional programming languages that compile to JS” in Google and stumbling over the website. Downloaded the Compiler and started learning with the help of error messages. In my defence, I already knew how basic functional programming works, so mostly the TEA stuff and organizing my code were the key problems I had.

Moment you were convinced:
My first project was a reimplementing a game I created from Vue.js to Elm. My originally implementation gave me a lot of headaches and was what I would consider the most complicated program I had created till then. My new implementation was bugless, clean and very easy to grasp. After comparing the two implementation, I was convinced.

5 Likes

Background
My background was React + Redux.

How you heard about Elm
It was the Redux community who introduced me to Elm.
I loved how Redux simplified state management, so I immediately wanted to try when I heard that Elm was like Redux but better. Of course, now I know it is much more than that, but at that time, that was the message that picked my interest.

Moment you were convinced
After playing with the “Counter example” a little bit, I was convinced it was worth digging further.
In those initial moments, I was delighted by the tiny amount of code necessary to use the Elm architecture, how robust it was, and immediately fell in love with custom types and the concept of messages. As promised, everything felt familiar but better.

5 Likes

Background
I was building webapps since 2010 so I followed a bunch of different trends from Angular, to React+Redux (which lead me to functional programming)

How you heard about Elm
I believe I heard about Elm as the inspiration for Redux and I started to look it up and tried it out a few different times (over a few years) until I finally started to use it “for real”.

Moment you were convinced
I was actually convinced first by the community. I got addicted to watching talks from the Elm crowd and podcasts (elmtown at the time) – and I just got convinced that whatever brought all those people I started to admire together must have been good. That got me to try it multiple times until I figured out an excuse to use it on a real project

7 Likes

Background :
Researcher in computer vision. I needed to build some websites for user studies on the subject of interactive image segmentation. My only prior experience at functional programming was a school project in ocaml.

How you heard about Elm:
A friend told me about elm.

Moment you were convinced:
Initially, I started with the guide when elm was at version 0.16. All the “signal” stuff was a bit too much for me. So I started to build my app with JS. But I’m not a web developer and my time spent debugging the web app eventually made me quit JS. By luck, it was just at the time when elm 0.17 was coming out, so I gave it another try and loved it. No more bugs. Today, it’s the combination of elm with elm-ui which is the best experience I’ve had building user interfaces, by far.

4 Likes

Background
Wrote my first web site in 2000 in when I was a kid. Been building large web apps since 2010 with a sprinkling of VR, game development, and other odd stuff in between.

How you heard about Elm
Had a coworker who loves Haskell and would share little tidbits of Haskell and Elm knowledge with me every week. Back around 2014 or so.

Moment you were convinced
Right before 0.19 came out I dove in again and was amazed at how easy it was compared to the many other frameworks I’d used. How much time I spent on features and not debugging the framework. Never turned back.

4 Likes

Background before Elm :

Full-stack developer, shifting to the front-end. No knowledge of functional programming

How you heard about Elm:

This post in CSS-tricks, a website that I was using regularly trying to get something out of CSS (I don’t use it anymore because elm-ui): Introduction to The Elm Architecture and How to Build our First Application - CSS-Tricks

Moment you were convinced:

Almost immediately. I was trying to apply self-discipline and write pure functions in JS. As soon as I realized that Elm would force me to do so, I was sold

3 Likes

What helped you learn Elm?

A set of 6 challenges provided by a kind community member (original post). The progressive difficulty of those challenges helped me get the self-efficacy needed to see myself as an elm developer.

Background:
I was in a sabbatical, after a severe burnout. I had some Java and Python programming experience (supplementing the Basic, Pascal and C/C++ I got in high-school and college).

How you heard about Elm:
I got very interested in dataflow programming and somebody mentioned FRP. After researching a little bit about FRP I found Elm.

Moment you were convinced:
After seeing the Mario demo. The minimal amount of code needed to implement the functionality, combined with the Bret Victor inspired Time Traveling Debugger blew my mind. I played with the constants in that program making Mario jump higher, run faster, etc. I just loved the fact that one could implement something that complex with that little code.

3 Likes

Background :
Frontend developer, have used several JS frameworks in the past, I was working with React around 2016

How you heard about Elm:
I heard about Elm in a podcast I think (with Richard and Evan). Can’t recall which one.

Moment you were convinced:
We were using Flow at that moment, but the experience with static typing was quite underwhelming, it was plenty of work to mantain the types and the compiler misses stuff all the time. We still had plently of runtime errors.

Saw a video on how Elm handles errors via Maybe/Result and started playing with it. Totally convinced after seeing how tight the type system was, it didn’t miss anything.

4 Likes

Background :
Software Engineering student

How you heard about Elm:
Got offered an internship in a company where they used Elm+Electron for all of their front-ends. 3+ years later, still working there.

Moment you were convinced:
Since I used it in a workplace I didn’t have much choice. But by creating a few semi-larger vanilla JS projects in college, I could feel the pain of refactoring. Or even a simple renaming. Of course, I ran into React/Angular/Vue later throughout my career, but, for me, they don’t even come close in terms of type checking, even in combination with TypeScript. Wife used Angular in one of the projects and seeing JavaScript code in a string made me burst out laughing. I get that every language/framework has a learning curve and questionable concepts, but I would still pick Elm any day, just for the compiler and refactoring power.

What helped you learn Elm?
I was using it for a few months without actually grasping the whole pure-functional concept (so that’s possible, too). It was more of a “write code that works”. Only after researching PureScript deeply for my bachelor thesis did it all start to come together, and because Elm is way easier than PureScript I got into faster workflow and more patterns.

4 Likes

Background
Software engineer since 2009. I’ve been using MooTools first :wink: Then AngularJS.

How you heard about Elm
I’ve heard about Elm from a podcast.

Moment you were convicted
I was convinced right away because functional programming aligned with my thought process. I have some background in math. To learn Elm I actually learned Haskell first :slight_smile: I actually considered quitting my job to program in Elm, but instead convinced everyone to use Elm at work.

6 Likes

Background
Full stack developer, using Vanilla JS and Dojo 1 client side.

How you heard about Elm
After reading some textbooks about FP and Haskell, I found Elm when searching for something in the JS world.

Moment you were convicted
Used to implement a package manager interface at work and it was a very satisfying and fun experience.
Unfortunately I don’t have many possibilities to use it in my current occupation.

3 Likes

Disclaimer: not a professional developer. Learning Elm/FP and longing to be one. I hope it’s still relevant. For the sake of brevity I left out many details and more backstory that would have made more sense but would have made this post way too verbose. It kinda is already, apologies.

Background :

Self-taught webops/devops with 15y career. No higher education. Always thought programming required CS degree and lots of theory I didn’t have. Hence I chose systems 20y-ish ago. Because I could do fine with logic, documentation, and lots of hacking thanks to open source. No time, No money, No requirements to go through high school → uni. "Hell I just stick with systems".

Attempted to learn programming with many languages and always hit a wall at OOP and quit every time. I can do a couple of languages just fine, in a procedural way with loads of functions. I do understand the OOP concepts, but I can’t code OOP. My brain isn’t wired that way. Always felt stupid for that and kinda made peace with the fact that I would never be a developer (besides personal projects).

How you heard about Elm:

A couple of years ago I was introduced to Haskell and FP in general (of which I never heard of, but I wish I did 20y-ish ago) by Cardano (a story for another time). While delving deeper and watching a lot of videos about FP and Haskell, I stumbled upon From Rails to Elm and Haskell. “Whaaaaaaaat!?!?” - I was hooked.

Moment you were convinced:

In all of the above I learned HTML/CSS and some JavaScript. I’ve always liked to make stuff and my websites needed some love. So I learned the technolgies to make them. I loved it and I was set on the path of becoming a web developer. Once again, I had to "Hell I just stick with systems", after learning about the insane amount of collateral technology attached to Js, and after realizing that nobody would hire a junior developer in his 40s.

What convinced me (a non-professional) of Elm is a mix of things:

  • functional, delightful, and thoughtful
  • one consistent framework and one consistent language to learn for life
  • its assurances and solid choices.

I’m sure that as I go on with my learning of Elm and FP, some thing in my idealized “fp-world dream” will shatter along the way and that I will struggle with theory. So far so good, though. I’m still in love, and very much determined to go past the struggles. I still hope that learning Elm and FP will give me an edge (as opposed to chasing 20y lost time in OOP and Js ecosystem) in finally becoming a developer. Wish me luck!

7 Likes

Hey @RyanNHG, happy to share.

Background:
Full-stack dev using Rails and a big believer in BDD (because of the safety net that it provides for dynamic languages like Ruby).

How you heard about Elm:
I started learning React + Redux and heard it was inspired by Elm. But then, I discovered FP by learning Elixir, and that convinced me to give Elm a try (because it seemed to be a “true” FP language; so that got me curious).

Moment you were convinced:
The transition was brutal. But there was one big refactoring at some point that convinced me the features of the language are worth it.

Now, I think one of the BIG problems with adoption has to do with the closed culture and fuzzy future of Elm. I know because I :heart: Elm and I’ve been trying to convince others to use it with no real success.

I hope that helps.

2 Likes

Background:
Started my corporate development career in the mid 80’s with COBOL on the mainframe. I participated in the evolution of computing: batch/terminal applications, mini-computers, workstations, client-server, n-tier, Object-Oriented, then the Internet. I was a mediocre developer at best, and I took a non-technical career path into business analysis and project management. I still liked to maintain my hand in coding, just for fun.

How you heard about Elm:
About three years ago, when I semi-retired, I wanted to build a platform for my new career as an author. I started evaluating web technology (I had a basic understanding of web-servers, HTML, CSS, etc). I evaluated the trade-offs between application platforms and frameworks and determined that, for my goals, I needed more control of the end-product.

That led me to evaluate the JS frameworks (Vue, React, etc). After an extensive bit of research, I started an evaluation project using React. Somewhere along the way, a Google search turned up Elm.

Moment you were convinced:
My corporate spidey-senses told me that if Elm could do what it promised, it was the way to go (as a higher-level application implementation, it avoided all the foot guns buried in JS).

As a corporate developer, I was used to good documentation; give me the syntax of a language and what the constraints are and I can figure it out. Elm’s documentation is nowhere near corporate standard (the “formal” documentation still doesn’t even have a specific list of keywords for the language, nor does it even link one of the many cheat-sheets others have developed).

So in that environment, the only way to learn is to google to find tutorials and working code. My first breakthrough was finding “Beginning Elm” which helped me understand the syntax and basic functional programming. Along the way, Richard’s implementation of the RealWorld SPA was the piece of code that convinced me useful applications could be built. Once I found the elm package library (elm-ui, elm-spa, elm-graphql), that was when I committed to Elm and to really learning the functional paradigm.

Commentary
To your specific question Ryan, I didn’t come from the front-end world, where one would presumably already know HTML, CSS, and JS. The packages allowed me to develop a database connected application without really knowing those technologies.

I think corporate developers, that are tasked with delivering web applications, would pick Elm over the other JS frameworks if they could evaluate it more easily. There are so many compelling engineering reasons to choose Elm over the other options. Currently it is a lot of work for someone to enter the Elm ecosystem cold turkey - they need to work very hard to learn and understand it (and learning in a way that is different for corporate developers).

Another big hurdle is the Functional Programming paradigm shift. I still struggle - there is nothing one can do to help anyone - it’s just working on it until the eureka moment.

The big risk, from a corporate perspective, is the roadmap for Elm’s evolution. The current stewardship will give pause to a company that is looking for a technology that will meet their long-term development goals. There is too much uncertainty - kudos to the community members that are addressing that issue.

5 Likes

Background :
Physics student, moved to CS thanks to a Lisp course that blew my mind. Then forced to write OOP atrocities by my professional career.

How you heard about Elm:
The truth about Svelte post by Richard Harris, where Elm is mentionned as one of the many languages for describing reactive user interfaces.

Moment you were convinced:
I was writing a typing library for CoffeeScript, to have at least a runtime type system on a FP-flavoured version of JS. As Elm gives both a sound type system and a pure FP experience, I moved from Svelte to Elm with no regrets.

4 Likes

Background :
Embedded Linux/IoT consultant. Not a front-end expert, and don’t want to be.

How you heard about Elm:
Changelog interview with Evan.

Moment you were convinced:
Once I started using elm-ui and elm-spa.

4 Likes

Background :
I haven’t learned Elm yet. I worked with programming professionally 1985-1988 (C, Pascal, Lisp, Prolog, assembler, machine code, micro code) although as a system engineer and researcher and not in a role as a programmer or software developer. Since then I have mostly followed the technological development, while working with business development, and done some programming on my spare time, however I did not really programmed anything useful. I have cheated with C++, C#, Java, Python, PHP, and some declarative languages. I am a management, product and business guy, but I dream about making my own applications some day. I am very good at application development, except for the programming part. Now I have got a technical job again, using the SQL (daily) and Groovy languages.

How you heard about Elm:
A friend, the developer of Lamdera, introduced me to Elm.

Moment you were convinced:
As soon as my friend described Elm I got completely convinced Elm is for me. My kind of thinking. However, the eco-system seems overwhelming, I don’t know where to start (I don’t want just to play, I want to start making a product right away), and it’s hard for me to follow posts, as there are too few or too bad explanations about the purpose and goal with new the developments or additions. It is too little information about the context, situation and conditions for usings things. Am I the only one missing the purpose, goal, context, situation, conditions, concept models, information models, process models, and more (models)?

4 Likes

Background :
Molecular biologist/bioinformatician, I was writing web applications to make some of the computational tools I was developing more accessible to non-experts.

How you heard about Elm:
In 2016, I was learning Haskell in my spare time and I stumbled across Elm, on the Haskell Reddit I think. I played around with the examples in the playground. It was fun and I really liked how concise the language was, so it stuck in my head.

Moment you were convinced:
My wife was pregnant with our son and she was taking aqua natal classes at a hotel, where she would bob about with other pregnant ladies in a swimming pool. I would drive her to the classes and it was slightly too far away to justify me returning home while she was in the class, so I decided to wait in the hotel bar and do something fun for work. I been wanting to overhaul a web tool that I had made a few years earlier and remembered Elm, so I thought I’d mess about with that while I was waiting. My wife only had 6 of those classes and they were just over an hour long, but I managed to write 80% of the application during the time in the hotel. I’d never had so much fun or felt so productive doing front-end work before and the compiler emboldened me to add more complex features or restructure things on a whim. Since then, all the front-end work that I (and members of my research group) do, is in Elm. I’m very happy with Elm and I think it is a great fit for scientific applications for a whole bunch of reasons that I won’t get into now.

7 Likes

@gunnar:I feel your pain. The artifacts you are looking for are standard in a corporate environment, but sadly, not in the Elm ecosystem.

However, it shouldn’t interfere with learning and utilizing Elm. After spending three years learning, I can share an approach to get yourself educated and productive. If you have an understanding of the functional programming paradigm, you have a great start. If not, if you work through the stuff below, you will hit the “eureka” moment at some point.

My approach was to get running code and understand how it works. My recommended approach is:

  1. Learn the basics (syntax, tools, compiling, running, etc)
  • “Beginning Elm” - (https://elmprogramming.com/) - online tutorial that is fairly well written.

  • “Elm In Action” - (Elm in Action) - I wish I had this book when I started, it would have saved me a lot of headaches. Great book that walks you through setting up the environment, compiling, coding, techniques and approaches.

  1. Learn key Elm packages (https://package.elm-lang.org/)
  • elm-ui - don’t need to learn CSS (for the most part)

  • elm-spa - helps build single page apps

  • elm-pages - helps build a static site

  • elm-graphql - helps build interface to a graphql data store

  1. Once you have built some applications with the packages above, then you could evaluate other Elm packages that solve a particular problem you have. A good catalog of package is: https://korban.net/elm/catalog/

  2. Other learning references:

  1. Monitor these Elm contributors
  • Richard Feldman

  • Mathew Griffith (mdgriffith)

  • Ryan Haskell-Glatz (ryannhg)

  • Aaron VonderHaar (avh4)

  • Dillon Kearns dillonkearns

  • Jeroen Engels (jfmengels)

  • Luca Mugnaini (lucamug)

  1. Support - on Slack; subscribe to the channels:
  • #beginners, #general - good support for your initial questions

  • #elm-ui, #elm-spa-users, #elm-pages, #graphql - when you start using those packages

  • the community is very helpful and supportive to newcomers

As you navigate through Google, ignore anything that isn’t Version 19 of Elm (that version changed the TEA paradigm).

5 Likes