Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elixir for busy Javadevs
Search
David Schmitz
March 23, 2017
Technology
0
23
Elixir for busy Javadevs
David Schmitz
March 23, 2017
Tweet
Share
More Decks by David Schmitz
See All by David Schmitz
Eventsourcing - You are doing it wrong
koenighotze
0
58
Read World Serverless
koenighotze
0
32
Vavr - functional Java the easy way
koenighotze
1
95
10 Tips for failing at microservices
koenighotze
0
84
Resilience Testing with Wiremock
koenighotze
0
180
Javaslang
koenighotze
0
32
Other Decks in Technology
See All in Technology
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
660
Greatest Disaster Hits in Web Performance
guaca
0
260
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
450
今日から始めるAmazon Bedrock AgentCore
har1101
4
410
Webhook best practices for rock solid and resilient deployments
glaforge
1
290
Agile Leadership Summit Keynote 2026
m_seki
1
630
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
400
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
220
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
150
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
78
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
How STYLIGHT went responsive
nonsquared
100
6k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
66
Navigating Team Friction
lara
192
16k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
76
So, you think you're a good person
axbom
PRO
2
1.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Testing 201, or: Great Expectations
jmmastey
46
8k
Odyssey Design
rkendrick25
PRO
1
500
Transcript
#Devoxx #AwesomeElixir @koenighotze Bootstrap |> Elixir EASY FUN FOR BUSY
DEVELOPERS
#Devoxx #AwesomeElixir @koenighotze @koenighotze / David Schmitz Senacor Technologies Programmer!
That’s me, learning Scala
#Devoxx #AwesomeElixir @koenighotze WET YOUR APPETITE FOR ELIXIR SHOW OFF
SOME COOL FEATURES CODE A DISTRIBUTED PIZZA PARLOUR
#Devoxx #AwesomeElixir @koenighotze 学⼀一⻔门语⾔言,就是多⼀一个观察世界的窗户。 To learn a language is to
have one more window from which to look at the world
#Devoxx #AwesomeElixir @koenighotze Two minor caveats
#Devoxx #AwesomeElixir @koenighotze I AM THE JON SNOW OF ELIXIR
AND ERLANG/OTP
#Devoxx #AwesomeElixir @koenighotze THIS IS NOT A README!
#Devoxx #AwesomeElixir @koenighotze YET ANOTHER PROGRAMMING LANGUANGE? Y A P
L
#Devoxx #AwesomeElixir @koenighotze Elixir in a Nutshell + Elixir in
a Nutshell +
#Devoxx #AwesomeElixir @koenighotze
#Devoxx #AwesomeElixir @koenighotze
#Devoxx #AwesomeElixir @koenighotze
#Devoxx #AwesomeElixir @koenighotze WHY NOT JUST USE RUBY, ERLANG OR
CLOJURE?
#Devoxx #AwesomeElixir @koenighotze It didn't take long, but pretty soon
my gut feeling kicked in. This is good $hit. …, they both compile to instructions for the EVM - Joe Armstrong (Creator of Erlang)
#Devoxx #AwesomeElixir @koenighotze Programmer focussed OTP Power + Ruby Love
Functional but pragmatic Standard Toolset Why Elixir is awesome
#Devoxx #AwesomeElixir @koenighotze
#Devoxx #AwesomeElixir @koenighotze Erlang/OTP ERLANG/BEAM TOOLS LIBRARIES PATTERNS
#Devoxx #AwesomeElixir @koenighotze Elixir ERLANG/BEAM TOOLS LIBRARIES PATTERNS
#Devoxx #AwesomeElixir @koenighotze Pizza Parlour - Version 1 “Take my
money! I want a salami pizza!” “I am hungry!!” “3 €, please!”
#Devoxx #AwesomeElixir @koenighotze Pizza Parlour - Version 1 Demo
#Devoxx #AwesomeElixir @koenighotze WHAT ABOUT 99.9999999?
#Devoxx #AwesomeElixir @koenighotze Pillars of Resilience and Reliability Message-passing between
isolated processes Automatic recovery and monitoring Transparent distribution
#Devoxx #AwesomeElixir @koenighotze Elixir Power Tools Messaging with GenServer modules
Supervisor for transparent resilience
#Devoxx #AwesomeElixir @koenighotze Shared resources Shared state Shared stability SHARED
STATE COMPUTATION COMPUTATION COMPUTATION HEAVY WEIGHT PROCESS COMPUTATION COMPUTATION COMPUTATION
#Devoxx #AwesomeElixir @koenighotze Light Weight Processes MAILBOX STATE COMPUTATION Asynchronous
Synchronous GENSERVER
#Devoxx #AwesomeElixir @koenighotze GenericServer in a Nutshell loop(current_state): wait for
message handle message send reply loop(new_state)
#Devoxx #AwesomeElixir @koenighotze GenericServer in a Nutshell loop(current_state): wait for
message handle message send reply loop(new_state)
#Devoxx #AwesomeElixir @koenighotze GenericServer in a Nutshell loop(current_state): wait for
message handle message send reply loop(new_state)
#Devoxx #AwesomeElixir @koenighotze GenericServer in a Nutshell loop(current_state): wait for
message handle message send reply loop(new_state)
#Devoxx #AwesomeElixir @koenighotze Architecture build around tiny Processes PROCESS PROCESS
PROCESS PROCESS PROCESS PROCESS PROCESS PROCESS PROCESS PROCESS PROCESS HEAVY WEIGHT PROCESS
#Devoxx #AwesomeElixir @koenighotze Message driven Pizza - The request {:pizza,
“Salami”} handle_call({:pizza, “Salami”}, from, state)
#Devoxx #AwesomeElixir @koenighotze %{order_number: 123, price: 10.50} Message driven Pizza
- The reply
#Devoxx #AwesomeElixir @koenighotze Pizza Parlour - Version 2 Demo
#Devoxx #AwesomeElixir @koenighotze NOW REALLY, WHAT ABOUT RESILIENCE???
#Devoxx #AwesomeElixir @koenighotze “HAVE YOU TRIED TURNING IT OFF AND
ON AGAIN?”
#Devoxx #AwesomeElixir @koenighotze The WHAT IF scenario {:pizza, “Salami”}
#Devoxx #AwesomeElixir @koenighotze Risk at the Bottom of the Supervision
Tree APPLICATION SUPERVISOR Here be dragons…
#Devoxx #AwesomeElixir @koenighotze APPLICATION SUPERVISOR Supervisors watch their Children
#Devoxx #AwesomeElixir @koenighotze APPLICATION SUPERVISOR Supervisors watch their Children
#Devoxx #AwesomeElixir @koenighotze APPLICATION SUPERVISOR Supervisors watch their Children
#Devoxx #AwesomeElixir @koenighotze Pizza Parlour - Version 3 Demo
#Devoxx #AwesomeElixir @koenighotze There is so much more
#Devoxx #AwesomeElixir @koenighotze Protocols for polymorphism defimpl String.Chars do def
to_string(bitmap), for: [Bitmap] do … end end
#Devoxx #AwesomeElixir @koenighotze Hygienic Macros defmacro unless(clause, do:expression) do quote
do if(!unquote(clause) do unquote(expression)) end end end
#Devoxx #AwesomeElixir @koenighotze Hygienic Macros defmacro unless(clause, do:expression) do quote
do if(!unquote(clause) do unquote(expression)) end end end
#Devoxx #AwesomeElixir @koenighotze Zero downtime Hot code replacement def code_change(ver,
old_state, extra) do new_state = … {:ok, new_state} end
#Devoxx #AwesomeElixir @koenighotze Real-time apps with Ecto and Phoenix defmodule
Video do def alphabetical(query) do from q in query, order_by: q.name end end
#Devoxx #AwesomeElixir @koenighotze Real-time apps with Ecto and Phoenix def
alphabetical(query) do … Video |> Video.alphabetical |> Repo.all
#Devoxx #AwesomeElixir @koenighotze SHOULD WE ALL START BUILDING EVERYTHING WITH
ELIXIR?
#Devoxx #AwesomeElixir @koenighotze
#Devoxx #AwesomeElixir @koenighotze WELL….MAYBE NOT?!
#Devoxx #AwesomeElixir @koenighotze AND OF COURSE…
#Devoxx #AwesomeElixir @koenighotze MICROSERVICE AND CLOUD READY ;)
#Devoxx #AwesomeElixir @koenighotze New insights and ideas Clean patterns as
part of the core Architecture and Tooling for IoT Vibrant and friendly Community Come for OTP, stay for…
#Devoxx #AwesomeElixir @koenighotze Elixir Homepage, http://elixir-lang.org/ Dave Thomas, Programming Elixir
Fred Hebert, Stuff Goes Bad: Erlang in Anger Do you want to know more?
#Devoxx #AwesomeElixir @koenighotze Thank you very much! <
[email protected]
>