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
Solid Ground
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Saša Jurić
March 06, 2017
Programming
920
3
Share
Solid Ground
ElixirDaze 2017
Video available at
https://www.youtube.com/watch?v=5SbWapbXhKo
Saša Jurić
March 06, 2017
More Decks by Saša Jurić
See All by Saša Jurić
Such Great Heights, Code BEAM Lite, Amsterdam 2018
sasajuric
0
200
Simplifying systems with Elixir - Belgrade
sasajuric
3
480
Simplifying systems with Elixir
sasajuric
2
590
Metagrokking Elixir
sasajuric
4
310
Solid Ground
sasajuric
15
1.3k
Elixir - valentine edition
sasajuric
0
140
What's the fuss about Phoenix?
sasajuric
2
1.1k
Phoenix
sasajuric
1
250
Phoenix
sasajuric
0
140
Other Decks in Programming
See All in Programming
Vibe NLP for Applied NLP
inesmontani
PRO
0
450
Liberating Ruby's Parser from Lexer Hacks
ydah
2
1.9k
iOS機能開発のAI環境と起きた変化
ryunakayama
0
190
ドメインイベントでビジネスロジックを解きほぐす #phpcon_odawara
kajitack
3
790
tRPCの概要と少しだけパフォーマンス
misoton665
2
220
NakouPAY説明用
annouim0
0
250
Don't Prompt Harder, Structure Better
kitasuke
0
780
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
340
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
740
Agentic Elixir
whatyouhide
0
390
🦞OpenClaw works with AWS
licux
1
200
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
290
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
360
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
270
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
160
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
480
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
200
Building the Perfect Custom Keyboard
takai
2
730
Speed Design
sergeychernyshev
33
1.6k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
150
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
510
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
130
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
Solid ground @sasajuric aircloak.com
None
long-running system many tasks soft real-time finite time program all-or-nothing
hard real-time
NIFs
scheduler scheduler scheduler scheduler BEAM CPU CPU CPU CPU
frequent context switches
t1 t2 t3 t4 t5 10 s 1 ms 1
ms 1 ms 1 ms
t1 t2 t3 t4 t5 t1 BEAM scheduler
t2 t3 t4 t5 t1 cooperative scheduler
thread 1 thread n … long running task long running
task blocked cooperative scheduler
thread 1 thread n … long running task long running
task not blocked :-) BEAM scheduler
activities as runtime citizens
send(pid, :please_stop)
mref = Process.monitor(pid) send(pid, :please_stop) receive do {:DOWN, ^mref, :process,
^pid, _reason} -> :ok end
mref = Process.monitor(pid) send(pid, :please_stop) receive do {:DOWN, ^mref, :process,
^pid, _reason} -> :ok after :timer.seconds(5) -> Process.exit(pid, :kill) receive do {:DOWN, ^mref, :process, ^pid, _reason} -> :ok end end
task = Task.async(fn -> ... end) case Task.yield(task, :timer.seconds(5)) do
{:ok, result} -> do_something(result) nil -> Task.shutdown(task, :brutal_kill) end
shared-nothing concurrency
Process heap resources
process-owned “stuff” is released
supervision tree
system backend frontend chat history repo cache endpoint
system backend chat history repo
supervisor foundations frequent context switching activities as runtime citizens observable
process termination stoppable processes shared-nothing concurrency
runtime guarantees syntax developer friendliness ecosystem
Image credit Scales of Justice