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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
David Schmitz
March 23, 2017
Technology
25
0
Share
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
63
Read World Serverless
koenighotze
0
33
Vavr - functional Java the easy way
koenighotze
1
99
10 Tips for failing at microservices
koenighotze
0
92
Resilience Testing with Wiremock
koenighotze
0
190
Javaslang
koenighotze
0
33
Other Decks in Technology
See All in Technology
AgentCore Managed Harness を使ってみよう
yakumo
2
280
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
39k
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
4
1.6k
AI時代の品質はテストプロセスの作り直し #scrumniigata
kyonmm
PRO
2
340
アクセシビリティはすべての人のもの
tomokusaba
0
190
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
3.1k
小説執筆のハーネスエンジニアリング
yoshitetsu
0
890
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
690
Anthropic「Long-running a gents」をGeminiで再現してみた
tkikuchi
0
750
Agents CLI と Gemini Enterprise Agent Platform で マルチエージェント開発が楽しくなる!
kaz1437
0
200
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
190
Building Production-Ready Agents Microsoft Agent Framework
_mertmetin
0
130
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
290
Git: the NoSQL Database
bkeepers
PRO
432
67k
How STYLIGHT went responsive
nonsquared
100
6.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
240
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
180
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
280
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
Site-Speed That Sticks
csswizardry
13
1.2k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
200
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
490
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]
>