elm
play

elm IN PRODUCTION FULL-SCALE @rtfeldman 2013 2014 2015 2016 - PowerPoint PPT Presentation

elm IN PRODUCTION FULL-SCALE @rtfeldman 2013 2014 2015 2016 IN PRODUCTION 2 billion questions answered 100,000 lines of elm code 0 runtime exceptions Ellie VIEW FUNCTION ARGUMENTS VIRTUAL DOM the elm architecture update Model view


  1. elm IN PRODUCTION FULL-SCALE @rtfeldman

  2. 2013 2014 2015 2016

  3. IN PRODUCTION 2 billion questions answered 100,000 lines of elm code 0 runtime exceptions

  4. Ellie

  5. VIEW FUNCTION ARGUMENTS → VIRTUAL DOM

  6. the elm architecture update Model view Msg VDOM Elm Runtime

  7. APPLICATION STATE DOM + globals JavaScript components + stores React 1 immutable value Elm

  8. Object-Oriented vs Functional Elm has no components different paradigm to learn

  9. Dynamic Types vs Type-Checked “if it compiles, it usually just works ” cheaper refactoring → less technical debt more time in the console, less in the browser

  10. IMPACT ON VELOCITY JS: Quicker to get something on the screen Elm: Higher overall velocity

  11. Interoprerating with JavaScript Elm code talks to JavaScript the way it talks to servers JAVASCRIPT AS A SERVICE

  12. MAINTAIN GUARANTEES while accessing the huge JAVASCRIPT ECOSYSTEM

  13. npm much bigger than elm-package ecosystem publish JavaScript, binaries, etc. may also install keyloggers

  14. elm-package installing packages can’t install keyloggers supports Elm code, not arbitrary JavaScript semantic versioning automatically enforced

  15. elm-package less available off-the-shelf, more DIY write a wrapper around moment.js write a Date library in pure Elm long-term ecosystem quality

  16. Full-Scale Elm begins with Small-Scale Elm

  17. SHIP SOMETHING SMALL

  18. GET IT INTO PRODUCTION

  19. how will we... INTEGRATE it into our code? TEACH it to our teammates? BUILD and deploy it?

  20. MINIMAL RISK MAJOR REWARD

  21. how will we BUILD it? Sprockets (Rails) Webpack loader elm-make

  22. ADVANCED BUILDS?

  23. What about... Code Splitting Server-Side Elm Server-Side Rendering

  24. “Why not use ______ instead?”

  25. delight

  26. “That should be an inspiration for every error message.” —John Carmack “That should be an inspiration for every error message.” —John Carmack

  27. reliability

  28. (optional types) (optional types) (optional types)

  29. any “just don’t use it” “also don’t use libraries that use it”

  30. any is considered part of best practices

  31. LESS CRASHING THAN PLAIN JS ZERO RUNTIME EXCEPTIONS Elm

  32. “Why not use a different FP language?” Haskell (or GHCjs) OCaml + BuckleScript Scala ClojureScript Clojure

  33. optional typing ClojureScript

  34. anything can be null ClojureScript

  35. anything can run arbitrary JS code ClojureScript + BuckleScript

  36. how will we HIRE anyone?

  37. 11 developers hired in 2016 9 cited Elm as a reason for applying hiring was much harder before we used Elm!

  38. WHICH JOB POSTS STAND OUT? Hiring for React, Redux, Immutable.js, Babel Hiring for Angular 2, TypeScript, Ramda Want to come write Elm full-time?

  39. how will we TEACH it? more new hires already know React than Elm similar time to becoming prod contributor compiler aids beginner learning a LOT

  40. RESOURCES guide.elm-lang.org How to Use Elm at Work elm-lang.org/blog

  41. TRAINING Luke Westby humblespark.com created Ellie Brian Hicks aster.is created elm-benchmark Kris Jenkins jenkster.com created elm-remote-data

  42. Elm Town Podcast elmtown.github.io

  43. beginner-friendly community REDDIT (weekly beginner questions thread) reddit.com/r/elm SLACK (5,000+ members, #beginners channel) elmlang.herokuapp.com

  44. Zürich Paris London St. Louis Seattle Helsinki Denver DC Utrecht Chicago Hamburg Copenhagen San Francisco

  45. HOW CAN OUR TEAM DO THIS?

  46. Full-Scale Elm begins with Small-Scale Elm

  47. SHIP SOMETHING SMALL

  48. GET IT INTO PRODUCTION

  49. @rtfeldman

Recommend


More recommend