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
27
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixir for busy Javadevs
David Schmitz
March 23, 2017
More Decks by David Schmitz
See All by David Schmitz
Eventsourcing - You are doing it wrong
koenighotze
0
66
Read World Serverless
koenighotze
0
39
Vavr - functional Java the easy way
koenighotze
1
110
10 Tips for failing at microservices
koenighotze
0
96
Resilience Testing with Wiremock
koenighotze
0
200
Javaslang
koenighotze
0
37
Other Decks in Technology
See All in Technology
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
550
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.6k
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
210
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
3
610
4人目のSREはAgent
tanimuyk
0
270
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
120
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
180
コミットの「なぜ」を読む
ota1022
0
120
2026 AI Memory Architecture
nagatsu
0
550
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
440
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
170
水を運ぶ人としてのリーダーシップ
izumii19
4
1.1k
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Making Projects Easy
brettharned
120
6.7k
Chasing Engaging Ingredients in Design
codingconduct
0
230
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Typedesign – Prime Four
hannesfritz
42
3.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
BBQ
matthewcrist
89
10k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
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]
>