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

elm
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

IN PRODUCTION

elm

FULL-SCALE

@rtfeldman

slide-2
SLIDE 2

2014 2016 2015 2013

slide-3
SLIDE 3
slide-4
SLIDE 4

2 billion questions answered 100,000 lines of elm code 0 runtime exceptions

IN PRODUCTION

slide-5
SLIDE 5

Ellie

slide-6
SLIDE 6

VIEW FUNCTION ARGUMENTS → VIRTUAL DOM

slide-7
SLIDE 7

the elm architecture

view update Model Msg VDOM

Elm Runtime

slide-8
SLIDE 8

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

slide-9
SLIDE 9

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

slide-10
SLIDE 10

Dynamic Types vs Type-Checked

cheaper refactoring → less technical debt “if it compiles, it usually just works” more time in the console, less in the browser

slide-11
SLIDE 11

IMPACT ON VELOCITY

JS: Quicker to get something on the screen Elm: Higher overall velocity

slide-12
SLIDE 12

Interoprerating with JavaScript

Elm code talks to JavaScript the way it talks to servers

JAVASCRIPT AS A SERVICE

slide-13
SLIDE 13

MAINTAIN GUARANTEES JAVASCRIPT ECOSYSTEM while accessing the huge

slide-14
SLIDE 14

npm

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

slide-15
SLIDE 15

elm-package

installing packages can’t install keyloggers supports Elm code, not arbitrary JavaScript semantic versioning automatically enforced

slide-16
SLIDE 16

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

slide-17
SLIDE 17

Full-Scale Elm

Small-Scale Elm

begins with

slide-18
SLIDE 18

SHIP SOMETHING SMALL

slide-19
SLIDE 19

GET IT INTO

PRODUCTION

slide-20
SLIDE 20

how will we...

INTEGRATE it into our code? TEACH it to our teammates? BUILD and deploy it?

slide-21
SLIDE 21

MINIMAL RISK MAJOR REWARD

slide-22
SLIDE 22

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

slide-23
SLIDE 23

ADVANCED BUILDS?

slide-24
SLIDE 24

Server-Side Elm Server-Side Rendering Code Splitting

What about...

slide-25
SLIDE 25

“Why not use ______ instead?”

slide-26
SLIDE 26

delight

slide-27
SLIDE 27

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

slide-28
SLIDE 28

reliability

slide-29
SLIDE 29

(optional types) (optional types) (optional types)

slide-30
SLIDE 30
slide-31
SLIDE 31

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

slide-32
SLIDE 32

any is considered part of best practices

slide-33
SLIDE 33

LESS CRASHING THAN PLAIN JS ZERO RUNTIME EXCEPTIONS

Elm

slide-34
SLIDE 34

OCaml

+ BuckleScript

Haskell

(or GHCjs)

Scala Clojure ClojureScript “Why not use a different FP language?”

slide-35
SLIDE 35
  • ptional typing

ClojureScript

slide-36
SLIDE 36

anything can be null

ClojureScript

slide-37
SLIDE 37

anything can run arbitrary JS code

ClojureScript

+ BuckleScript

slide-38
SLIDE 38

how will we HIRE anyone?

slide-39
SLIDE 39

11 developers hired in 2016

9 cited Elm as a reason for applying

hiring was much harder before we used Elm!

slide-40
SLIDE 40

Hiring for React, Redux, Immutable.js, Babel Hiring for Angular 2, TypeScript, Ramda Want to come write Elm full-time?

WHICH JOB POSTS STAND OUT?

slide-41
SLIDE 41

how will we TEACH it?

more new hires already know React than Elm compiler aids beginner learning a LOT similar time to becoming prod contributor

slide-42
SLIDE 42

guide.elm-lang.org

RESOURCES

How to Use Elm at Work

elm-lang.org/blog

slide-43
SLIDE 43
slide-44
SLIDE 44

Kris Jenkins

jenkster.com created elm-remote-data

Luke Westby

humblespark.com created Ellie

TRAINING

Brian Hicks

aster.is created elm-benchmark

slide-45
SLIDE 45

elmtown.github.io

Elm Town Podcast

slide-46
SLIDE 46

beginner-friendly community

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

slide-47
SLIDE 47
  • St. Louis

Zürich Chicago Seattle Utrecht Denver Copenhagen Hamburg DC Helsinki London Paris San Francisco

slide-48
SLIDE 48
slide-49
SLIDE 49
slide-50
SLIDE 50

HOW CAN OUR TEAM DO THIS?

slide-51
SLIDE 51

Full-Scale Elm

Small-Scale Elm

begins with

slide-52
SLIDE 52

SHIP SOMETHING SMALL

slide-53
SLIDE 53

GET IT INTO

PRODUCTION

slide-54
SLIDE 54

@rtfeldman