Pro Yearly is on sale from $80 to $50! »

Give Elm a Chance!

2fe1b2866cfd498a513295d60d5cad0f?s=47 Joel Clermont
February 14, 2017
32

Give Elm a Chance!

2fe1b2866cfd498a513295d60d5cad0f?s=128

Joel Clermont

February 14, 2017
Tweet

Transcript

  1. 
 Give Elm a Chance! Joel Clermont
 @jclermont

  2. Hello audience

  3. Goals • Elm language tour

  4. What to expect Elm language tour

  5. What to expect What is Elm?

  6. What to expect Why Elm at a PHP group?

  7. What to expect What makes Elm useful and interesting? •

    Code that doesn’t crash • A powerful type system • Ecosystem: quality over quantity • Care-free refactoring • Amazing QA / debug experience
  8. What is Elm?

  9. What is Elm? Elm is a language that compiles to

    JS
  10. What is Elm? Elm (currently) targets the browser

  11. What is Elm? Elm does not replace PHP, C#, Elixir,

    etc
  12. What is Elm? Elm does not (yet) replace JavaScript

  13. Questions?

  14. Why Elm at a PHP group?

  15. Why Elm at a PHP group? Front-end vs. back-end

  16. Why Elm at a PHP group? User interfaces get complex

    quickly
  17. None
  18. None
  19. None
  20. None
  21. Questions?

  22. The Elm Architecture

  23. Language + Framework

  24. Model

  25. Update

  26. View

  27. None
  28. No side effects

  29. Questions?

  30. No runtime exceptions

  31. No runtime exceptions • Hooray, no bugs! Not quite.

  32. No runtime exceptions • Hooray, no bugs! Not quite. •

    Runtime exceptions are a common class of bugs
  33. No runtime exceptions • Hooray, no bugs! Not quite. •

    Runtime exceptions are a common class of bugs • “undefined is not a function”
  34. No Red Ink’s testimonial Since we began using Elm in

    2015, our production Elm code has yet to cause a single runtime exception. Our error logs show plenty of crashes from our legacy JavaScript code, but none from our Elm code. We've also found our Elm-powered front-end substantially easier to scale than our previous React code base.
  35. Spot the error

  36. Pattern matching

  37. Error handling in types

  38. Questions?

  39. The power of the type system

  40. The power of the type system • PHP’s type system

    is getting better, but still basic
  41. The power of the type system • PHP’s type system

    is getting better, but still basic • C# and Java? Better yet, but not very expressive
  42. The power of the type system • PHP’s type system

    is getting better, but still basic • C# and Java? Better yet, but not very expressive • ML type system
  43. Algebraic data types

  44. Data modeling!! https://youtu.be/IcgmSRJHu_8

  45. Questions?

  46. Ecosystem

  47. Elm ecosystem • Package manager enforces semantic versioning • API

    design is extremely thoughtful • Awesome tooling!
  48. Elm ecosystem • Package manager enforces semantic versioning

  49. Elm ecosystem • Package manager enforces semantic versioning • API

    design is extremely thoughtful
  50. Elm ecosystem • Package manager enforces semantic versioning • API

    design is extremely thoughtful • Awesome tooling!
  51. Compiler

  52. Editors

  53. Editors

  54. Editors

  55. Editors

  56. Editors

  57. Debugger http://elm-lang.org/assets/blog/0.18/todomvc.html

  58. Ellie https://ellie-app.com/kLKCgY6sK9/0

  59. Questions?

  60. My final sales pitch • Welcoming community • Lots of

    effort to making concepts accessible • Easy to use it gradually • Will make you a better JavaScript developer
  61. Next steps • http://elm-lang.org (live demos, debugger, REPL) • https://pragmaticstudio.com/elm

    • https://guide.elm-lang.org/ • https://frontendmasters.com/courses/elm/ • https://www.dailydrip.com/topics/elm • @elmlang @czaplic @rtfeldman @jclermont
  62. Questions? @jclermont

  63. Thank you! @jclermont