SlideShare a Scribd company logo
Beyond JavaScript Frameworks:

Writing Reliable Web Apps With
Elm
Erik Wendel

Codemotion Amsterdam 2018
Jonathan Ive?
Who is
Erik Wendel

JavaZone 2017
– Peder Korsveien
Elm is like Jonathan Ive would have designed a
programming language – it is minimalistic, user-friendly
and it just works
How many of you…
…write JavaScript at work?
Did you ever…
…ship an app with confidence it
wouldn`t crash in production?

(without loads of QA)
Did you ever…
…feel completely safe after a 

large refactor of the frontend code?
Did you ever…
…become overwhelmed by the
amount of frontend tech in 2018?
Did you ever…
…feel like not all team members are
comfortable with frontend tasks?
Check, check, check…
JavaScript fatigue
Worrysome refactors
Nail-biting deploys
Dedicated frontend devs
✅
✅
✅
✅
I will argue that Elm addresses these issues
while also providing
a dedicated pair-programmer
error messages that actually help
no runtime errors
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
User interface expert, experienced with
javascript and single-page apps
Erik Wendel
Serving Elm in
production to 1M+ users
Web Development Lead at
BEKK Consulting, Oslo 

(450 people)
Worked with large
Norwegian companies like
SpareBank1 and NSB
Founder of

Oslo Elm Meetup (2016)

Oslo Elm Day (2017)
Agenda
1. How Elm works

Compared to the JS of today

2. App Example

Counter app


3. Does Anyone Use Elm?

A few stories and examples

1. How Elm works

Compared to the JS of today

2. App Example

Counter app


3. Does Anyone Use Elm?

A few stories and examples

Agenda
Elm is a language compiling to JavaScript
it is not another library or a framework
How does Elm compare to React?
Elm and JavaScript are totally different
In terms of syntax and semantics
How does Elm compare to React?
Elm uses pure functions and virtual dom
to create a tree of components
How does Elm compare to React?
Elm does not allow component state
all state is stored in top-level store, like Redux
How does Elm compare to React?
Elm uses the Redux architecture
actually, it is the other way around - Redux was inspired by Elm
How does Elm compare to React?
“Elm is basically React-
Redux with type
safety”
This is how it works
<div id="container"></div>
<script src=“main.js"></script>
<script>
var node = document.getElementById('container');
var app = Elm.Main.embed(node);
</script>
A quick overview
1. Correctness, maintainability and 

developer-friendliness comes first



2. A functional language of the ML family

(F#, OCaml, Haskell)



3. No run-time errors (!)



4. Heavily opinionated
Key Language Features
1. All data is immutable, and there is no null



2. Expression-oriented, no statements

Everything evaluates to a value



3. Pure (side-effects handled by runtime)

Like redux-saga



4. Architecture as a built-in feature

Redux is a JavaScript-adaptation of The Elm Architecture



5. Small but expressive feature set

Fits together like Lego

Therefore: it’s pretty easy to learn
Let’s see some code!
increment x =
x + 1
five = increment 4
Functions

Kind of important in functional
programming
increment : Int -> Int
increment x =
x + 1
five : Int
five = increment 4
Type Inference

Elm is smart, but you’d still want
to have explicit types
-- constant
x : Int
x = 42
-- tuple
position : (Int, Int)
position = (3, 2)
-- object (called record)
person : { name : String, age : Int }
person =
{ name = "Erik"
, age = 30
}
Data

Constants, tuples og objects
type alias Coordinates = (Int, Int)
playerPosition : Coordinates
playerPosition = (0,0)
type alias Discount = Int
studentDiscount: Discount
studentDiscount = 10
Type Alias

Allows us to define new
types
type alias Customer =
{ name: String
, age: Int
}
erik : Customer
erik =
{ name = "Erik"
, age = 24
}
Type Alias

Works best with objects
Example

Three types of customers: 

ordinary, students and companies
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
2. Hard to find the possible values of CustomerType
1. Easy to mistype
3. You don’t get any help from the compiler
4. You end up with lots of fields with dummy values
type CustomerType
= Student
| Corporate
| Private
Union Types

Surprisingly useful!
type CustomerType
= Student Int
| Corporate String
| Private
Union Types

Every branch can contain different values
type CustomerType = Student Discount | Corporate CompanyName | Private
getDiscount : CustomerType -> Discount
getDiscount class =
case class of
Student discount ->
discount
Corporate name ->
0
Private ->
0 Union Types

Values are unwrapped with
pattern matching
type Maybe a = Just a | Nothing
Maybe

Eliminating the need for null and
undefined
type Maybe a = Just a | Nothing
type alias Game =
{ highscore: Maybe Int
}
Maybe

Eliminating the need for null and undefined
type Maybe a = Just a | Nothing
type alias Game =
{ highscore: Maybe Int
}
getHighscore : Game -> String
getHighscore game =
case game.highscore of
Just score ->
toString score
Nothing ->
"No highscore"
Maybe

The compiler will force us to
handle all cases (similarily with ajax
and other unsafe operations)
<div class="ninja">
<span>Banzai!</span>
</div>
HTML

Creating it in Elm
main =
div [ class "ninja" ]
[ span []
[ text "Banzai!" ]
]
HTML

Like React without JSX (hyperscript)
main : Html a
main =
div [ class "ninja" ]
[ span []
[ text "Banzai!" ]
]
HTML

What does a mean?
main : Html Msg
main =
div [ class "ninja" ]
[ span [ onClick DoSomethingCool ]
[ text "Banzai!" ]
]
HTML

The Html-type includes the type that
will be created by user interactions 

(like Redux actions)
-- our entire app state (store)
model: Model
-- represent data with html (react)
view: Model -> Html Msg
-- changes to app state (reducers)
update: Msg -> Model -> Model
The Elm
Architecture
Which JavaScript-libraries would you need to get this out of the box?
1. React

Virtual DOM
2. Redux

Our built-in architecture
3. ImmutableJS

For full immutability



4. TypeScript eller Flow

For (a considerably weaker) type safety
5. ESLint

Enforcing code style and code-level sanity
Agenda
1. How Elm works

Compared to the JS of today

2. App Example

Counter app


3. Does Anyone Use Elm?

A few stories and examples

0+ -
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
1. How Elm works

Compared to the JS of today

2. App Example

Counter app


3. Does Anyone Use Elm?

A few stories and examples

Agenda
Elm has been around for quite a few years, attracting
attention and generating conference talks, but is it
really ready for production?





Is anyone using it in their business-critical, user-facing
applications? If so, what’s their stories?

So…
First meetup in May 2016

Huge interest with no marketing

150 members and 42 attendees



January 2018:

398 members



Monthly meetups
Oslo Elm Meetup
One-day, single-track conference in 

Oslo, June 2017

105 attendees

10 speakers from 5 countries

All talks are on YouTube



Next edition: most likely fall 2018
Oslo Elm Day
Does Anyone Use Elm?
… yes!
Here’s two example apps

written in Elm for different reasons
Switcharoo

Conference information system
NSB
(Norwegian Railways, like SJ)

Summer interns doing seat
reservation app
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018
1. Many are experimenting with or using Elm



2. People are happy! (100%“would use again”)



3. Easy onboarding, especially for FPers and 

React-developers



4. World’s biggest adoptor has around 250k LOC
Summary Of Experience Reports
you’re making a prototype
…or something else that’s small
when dev speed trumps code quality
you use a lot of third party code (like map libs)
the team doesn’t know func. prog. and don’t want to learn
Bad-use cases for Elm:
you know the refactors are coming
complex domain logic
you’re re-creating Excel et. al in the browser
Great use-cases for Elm:
team has little or no knowledge of javascript
code correctness is especially important
Challenges, adressed!
JavaScript fatigue
Worrysome refactors
Nail-biting deploys
Dedicated frontend devs
a lang without runtime errors
Elm gives you..
superb refactoring support
frontend for the entire team
with Redux built-in
and React’s virtual DOM
a currently small ecosystem
a lang without a huge backer
some boilerplate
en delightful dev experience
Is it a good deal?
I think so!
What do you think?
1. Check out my free workshop material

github.com/ewendel/elm-workshop

(shameless plug)
Did this make you curious?
2. Join the Elm slack team

The elm community is truly amazing

elmlang.herokuapp.com
3. Check out your local Elm meetup

meetup.com/topics/elm-programming/
Thanks for listening!
@ewndl
twitter.com/osloelmday
slides and workshop available at 

is.gd/forward_elm

More Related Content

PPT
Introduction to jQuery
PDF
JavaScript guide 2020 Learn JavaScript
PDF
Javascript Roadmap - The Basics
PPTX
Introduction to Core Java Programming
PPTX
Javascript
PPTX
Vba Class Level 3
PPTX
.NET and C# introduction
PDF
JavaScript - Chapter 12 - Document Object Model
Introduction to jQuery
JavaScript guide 2020 Learn JavaScript
Javascript Roadmap - The Basics
Introduction to Core Java Programming
Javascript
Vba Class Level 3
.NET and C# introduction
JavaScript - Chapter 12 - Document Object Model

What's hot (17)

PPTX
Typescript in 30mins
PPTX
Clean Code
PPTX
Selenium online training
PPTX
DSL in test automation
PPT
introduction to javascript
PDF
4Developers: Tomasz Ducin- JavaScript + Java = TypeScript
PDF
Client side scripting
PPTX
Java Script An Introduction By HWA
PPTX
Client side scripting using Javascript
PPTX
Typescript ppt
PDF
TypeScript and Angular workshop
PPTX
Introducing type script
PPTX
Clean code coding like a professional
PPTX
Getting started with typescript
PDF
Elm or how I learned to love front-end development
PPTX
TypeScript Overview
Typescript in 30mins
Clean Code
Selenium online training
DSL in test automation
introduction to javascript
4Developers: Tomasz Ducin- JavaScript + Java = TypeScript
Client side scripting
Java Script An Introduction By HWA
Client side scripting using Javascript
Typescript ppt
TypeScript and Angular workshop
Introducing type script
Clean code coding like a professional
Getting started with typescript
Elm or how I learned to love front-end development
TypeScript Overview
Ad

Similar to Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018 (20)

PDF
Erik Wendel - Beyond JavaScript Frameworks: Writing Reliable Web Apps With El...
PPTX
SEMjs - Planting Seeds with Elm
PPTX
Sprouting into the world of Elm
PDF
Rethink Frontend Development With Elm
PPTX
Elm Detroit 9/7/17 - Planting Seeds with Elm
PPTX
Elm - Could this be the Future of Web Dev?
PDF
Elm @ DublinJS
PDF
Elm - functional programming for frontend
PDF
Elm a possible future for web frontend
PDF
Play with Elm!
PDF
Elm dev front-end
PPTX
Your first Elm program
PDF
What is Elm and Why Should I Care?
PDF
Play with elm - Choucri fahed, Finstack - Lambadays
PPTX
Make Yourself a Happy Front-end Web Developer with Elm.
PPTX
Elm: Make Yourself A Happy Front-end Web Developer
PDF
Full-Scale Elm in Production
PDF
Elm architecture
PDF
Introduction to elm
PDF
What About Elm?
Erik Wendel - Beyond JavaScript Frameworks: Writing Reliable Web Apps With El...
SEMjs - Planting Seeds with Elm
Sprouting into the world of Elm
Rethink Frontend Development With Elm
Elm Detroit 9/7/17 - Planting Seeds with Elm
Elm - Could this be the Future of Web Dev?
Elm @ DublinJS
Elm - functional programming for frontend
Elm a possible future for web frontend
Play with Elm!
Elm dev front-end
Your first Elm program
What is Elm and Why Should I Care?
Play with elm - Choucri fahed, Finstack - Lambadays
Make Yourself a Happy Front-end Web Developer with Elm.
Elm: Make Yourself A Happy Front-end Web Developer
Full-Scale Elm in Production
Elm architecture
Introduction to elm
What About Elm?
Ad

More from Codemotion (20)

PDF
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
PDF
Pompili - From hero to_zero: The FatalNoise neverending story
PPTX
Pastore - Commodore 65 - La storia
PPTX
Pennisi - Essere Richard Altwasser
PPTX
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
PPTX
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
PPTX
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
PPTX
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
PDF
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
PDF
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
PDF
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
PDF
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
PDF
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
PDF
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
PPTX
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
PPTX
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
PDF
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
PDF
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
PDF
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
PDF
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Pompili - From hero to_zero: The FatalNoise neverending story
Pastore - Commodore 65 - La storia
Pennisi - Essere Richard Altwasser
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PDF
Electronic commerce courselecture one. Pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Big Data Technologies - Introduction.pptx
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPT
Teaching material agriculture food technology
PPTX
Spectroscopy.pptx food analysis technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Encapsulation theory and applications.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
cuic standard and advanced reporting.pdf
Electronic commerce courselecture one. Pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Encapsulation_ Review paper, used for researhc scholars
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectral efficient network and resource selection model in 5G networks
MIND Revenue Release Quarter 2 2025 Press Release
Big Data Technologies - Introduction.pptx
sap open course for s4hana steps from ECC to s4
Review of recent advances in non-invasive hemoglobin estimation
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Teaching material agriculture food technology
Spectroscopy.pptx food analysis technology
Building Integrated photovoltaic BIPV_UPV.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Network Security Unit 5.pdf for BCA BBA.
Encapsulation theory and applications.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

Beyond JavaScript Frameworks: Writing Reliable Web Apps With Elm - Erik Wendel - Codemotion Amsterdam 2018

  • 1. Beyond JavaScript Frameworks:
 Writing Reliable Web Apps With Elm Erik Wendel
 Codemotion Amsterdam 2018
  • 4. – Peder Korsveien Elm is like Jonathan Ive would have designed a programming language – it is minimalistic, user-friendly and it just works
  • 5. How many of you… …write JavaScript at work?
  • 6. Did you ever… …ship an app with confidence it wouldn`t crash in production?
 (without loads of QA)
  • 7. Did you ever… …feel completely safe after a 
 large refactor of the frontend code?
  • 8. Did you ever… …become overwhelmed by the amount of frontend tech in 2018?
  • 9. Did you ever… …feel like not all team members are comfortable with frontend tasks?
  • 10. Check, check, check… JavaScript fatigue Worrysome refactors Nail-biting deploys Dedicated frontend devs ✅ ✅ ✅ ✅
  • 11. I will argue that Elm addresses these issues
  • 12. while also providing a dedicated pair-programmer error messages that actually help no runtime errors
  • 15. User interface expert, experienced with javascript and single-page apps Erik Wendel Serving Elm in production to 1M+ users Web Development Lead at BEKK Consulting, Oslo 
 (450 people) Worked with large Norwegian companies like SpareBank1 and NSB Founder of
 Oslo Elm Meetup (2016)
 Oslo Elm Day (2017)
  • 16. Agenda 1. How Elm works
 Compared to the JS of today
 2. App Example
 Counter app 
 3. Does Anyone Use Elm?
 A few stories and examples

  • 17. 1. How Elm works
 Compared to the JS of today
 2. App Example
 Counter app 
 3. Does Anyone Use Elm?
 A few stories and examples
 Agenda
  • 18. Elm is a language compiling to JavaScript it is not another library or a framework How does Elm compare to React?
  • 19. Elm and JavaScript are totally different In terms of syntax and semantics How does Elm compare to React?
  • 20. Elm uses pure functions and virtual dom to create a tree of components How does Elm compare to React?
  • 21. Elm does not allow component state all state is stored in top-level store, like Redux How does Elm compare to React?
  • 22. Elm uses the Redux architecture actually, it is the other way around - Redux was inspired by Elm How does Elm compare to React?
  • 23. “Elm is basically React- Redux with type safety”
  • 24. This is how it works <div id="container"></div> <script src=“main.js"></script> <script> var node = document.getElementById('container'); var app = Elm.Main.embed(node); </script>
  • 25. A quick overview 1. Correctness, maintainability and 
 developer-friendliness comes first
 
 2. A functional language of the ML family
 (F#, OCaml, Haskell)
 
 3. No run-time errors (!)
 
 4. Heavily opinionated
  • 26. Key Language Features 1. All data is immutable, and there is no null
 
 2. Expression-oriented, no statements
 Everything evaluates to a value
 
 3. Pure (side-effects handled by runtime)
 Like redux-saga
 
 4. Architecture as a built-in feature
 Redux is a JavaScript-adaptation of The Elm Architecture
 
 5. Small but expressive feature set
 Fits together like Lego
 Therefore: it’s pretty easy to learn
  • 28. increment x = x + 1 five = increment 4 Functions
 Kind of important in functional programming
  • 29. increment : Int -> Int increment x = x + 1 five : Int five = increment 4 Type Inference
 Elm is smart, but you’d still want to have explicit types
  • 30. -- constant x : Int x = 42 -- tuple position : (Int, Int) position = (3, 2) -- object (called record) person : { name : String, age : Int } person = { name = "Erik" , age = 30 } Data
 Constants, tuples og objects
  • 31. type alias Coordinates = (Int, Int) playerPosition : Coordinates playerPosition = (0,0) type alias Discount = Int studentDiscount: Discount studentDiscount = 10 Type Alias
 Allows us to define new types
  • 32. type alias Customer = { name: String , age: Int } erik : Customer erik = { name = "Erik" , age = 24 } Type Alias
 Works best with objects
  • 33. Example
 Three types of customers: 
 ordinary, students and companies
  • 35. 2. Hard to find the possible values of CustomerType 1. Easy to mistype 3. You don’t get any help from the compiler 4. You end up with lots of fields with dummy values
  • 36. type CustomerType = Student | Corporate | Private Union Types
 Surprisingly useful!
  • 37. type CustomerType = Student Int | Corporate String | Private Union Types
 Every branch can contain different values
  • 38. type CustomerType = Student Discount | Corporate CompanyName | Private getDiscount : CustomerType -> Discount getDiscount class = case class of Student discount -> discount Corporate name -> 0 Private -> 0 Union Types
 Values are unwrapped with pattern matching
  • 39. type Maybe a = Just a | Nothing Maybe
 Eliminating the need for null and undefined
  • 40. type Maybe a = Just a | Nothing type alias Game = { highscore: Maybe Int } Maybe
 Eliminating the need for null and undefined
  • 41. type Maybe a = Just a | Nothing type alias Game = { highscore: Maybe Int } getHighscore : Game -> String getHighscore game = case game.highscore of Just score -> toString score Nothing -> "No highscore" Maybe
 The compiler will force us to handle all cases (similarily with ajax and other unsafe operations)
  • 43. main = div [ class "ninja" ] [ span [] [ text "Banzai!" ] ] HTML
 Like React without JSX (hyperscript)
  • 44. main : Html a main = div [ class "ninja" ] [ span [] [ text "Banzai!" ] ] HTML
 What does a mean?
  • 45. main : Html Msg main = div [ class "ninja" ] [ span [ onClick DoSomethingCool ] [ text "Banzai!" ] ] HTML
 The Html-type includes the type that will be created by user interactions 
 (like Redux actions)
  • 46. -- our entire app state (store) model: Model -- represent data with html (react) view: Model -> Html Msg -- changes to app state (reducers) update: Msg -> Model -> Model The Elm Architecture
  • 47. Which JavaScript-libraries would you need to get this out of the box? 1. React
 Virtual DOM 2. Redux
 Our built-in architecture 3. ImmutableJS
 For full immutability
 
 4. TypeScript eller Flow
 For (a considerably weaker) type safety 5. ESLint
 Enforcing code style and code-level sanity
  • 48. Agenda 1. How Elm works
 Compared to the JS of today
 2. App Example
 Counter app 
 3. Does Anyone Use Elm?
 A few stories and examples

  • 49. 0+ -
  • 54. 1. How Elm works
 Compared to the JS of today
 2. App Example
 Counter app 
 3. Does Anyone Use Elm?
 A few stories and examples
 Agenda
  • 55. Elm has been around for quite a few years, attracting attention and generating conference talks, but is it really ready for production?
 
 
 Is anyone using it in their business-critical, user-facing applications? If so, what’s their stories?
 So…
  • 56. First meetup in May 2016
 Huge interest with no marketing
 150 members and 42 attendees
 
 January 2018:
 398 members
 
 Monthly meetups Oslo Elm Meetup
  • 57. One-day, single-track conference in 
 Oslo, June 2017
 105 attendees
 10 speakers from 5 countries
 All talks are on YouTube
 
 Next edition: most likely fall 2018 Oslo Elm Day
  • 58. Does Anyone Use Elm? … yes!
  • 59. Here’s two example apps
 written in Elm for different reasons
  • 61. NSB (Norwegian Railways, like SJ)
 Summer interns doing seat reservation app
  • 64. 1. Many are experimenting with or using Elm
 
 2. People are happy! (100%“would use again”)
 
 3. Easy onboarding, especially for FPers and 
 React-developers
 
 4. World’s biggest adoptor has around 250k LOC Summary Of Experience Reports
  • 65. you’re making a prototype …or something else that’s small when dev speed trumps code quality you use a lot of third party code (like map libs) the team doesn’t know func. prog. and don’t want to learn Bad-use cases for Elm:
  • 66. you know the refactors are coming complex domain logic you’re re-creating Excel et. al in the browser Great use-cases for Elm: team has little or no knowledge of javascript code correctness is especially important
  • 67. Challenges, adressed! JavaScript fatigue Worrysome refactors Nail-biting deploys Dedicated frontend devs
  • 68. a lang without runtime errors Elm gives you.. superb refactoring support frontend for the entire team with Redux built-in and React’s virtual DOM a currently small ecosystem a lang without a huge backer some boilerplate en delightful dev experience
  • 69. Is it a good deal? I think so! What do you think?
  • 70. 1. Check out my free workshop material
 github.com/ewendel/elm-workshop
 (shameless plug) Did this make you curious? 2. Join the Elm slack team
 The elm community is truly amazing
 elmlang.herokuapp.com 3. Check out your local Elm meetup
 meetup.com/topics/elm-programming/
  • 71. Thanks for listening! @ewndl twitter.com/osloelmday slides and workshop available at 
 is.gd/forward_elm