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
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
120
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
170
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
380
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
190
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
2.3k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.5k
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
160
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
810
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
2
210
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
The Curse of the Amulet
leimatthew05
1
8.6k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
120
How to train your dragon (web standard)
notwaldorf
97
6.5k
A better future with KSS
kneath
240
18k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Balancing Empowerment & Direction
lara
5
890
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]
>