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
Agent Skils
dip_tech
PRO
0
110
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
100
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
210
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
250
プロポーザルに込める段取り八分
shoheimitani
1
280
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.4k
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
100
Become a Pro
speakerdeck
PRO
31
5.8k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
370
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
250
Mobile First: as difficult as doing things right
swwweet
225
10k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
HDC tutorial
michielstock
1
380
Bash Introduction
62gerente
615
210k
Agile that works and the tools we love
rasmusluckow
331
21k
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]
>