Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
So Easy You Can Even Do It In JavaScript: Event...
Search
PyCon 2013
March 16, 2013
Programming
3.5k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
So Easy You Can Even Do It In JavaScript: Event-Driven Architecture For Regular Programmers by Glyph
PyCon 2013
March 16, 2013
More Decks by PyCon 2013
See All by PyCon 2013
Bayesian statistics made simple by Allen Downey
pyconslides
32
6.7k
Python for Humans
pyconslides
40
6.9k
Contribute with me! Getting started with the tools of free software development by Jessica McKellar
pyconslides
11
2.1k
ApplePy: An Apple ][ emulator in Python by James Tauber
pyconslides
3
1.8k
Use curses, don't swear by Sean Zicari
pyconslides
2
1.6k
Namespaces in Python by Eric Snow
pyconslides
9
2k
Internationalization and Localization Done Right by Ruchi Varshney
pyconslides
9
1.3k
"Good Enough" is good enough! by Alex Martelli
pyconslides
13
2.6k
Plover: Thought to Text at 240 WPM by Mirabai Knight
pyconslides
1
1.4k
Other Decks in Programming
See All in Programming
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
670
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
0
140
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.6k
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
sbt 2.0: takeoff
eed3si9n
0
160
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
529
40k
Leo the Paperboy
mayatellez
10
2.4k
エンジニアに許された特別な時間の終わり
watany
109
250k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The browser strikes back
jonoalderson
0
1.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Darren the Foodie - Storyboard
khoart
PRO
4
4k
So, you think you're a good person
axbom
PRO
2
2.2k
Transcript
EVENT DRIVEN ARCHITECTURE It Is The Hardest Thing You Will
Never Figure it Out I Mean What Does “Asynchronous” Even Mean Is That Even A Real Word Saturday, March 16, 13
EVENT DRIVEN ARCHITECTURE For Regular Programmers Saturday, March 16, 13
EVENT DRIVEN ARCHITECTURE So Easy You Can Even Do It
In JavaScript Saturday, March 16, 13
W ARNING Saturday, March 16, 13
THINGS THAT ARE HARD IN JAVASCRIPT Saturday, March 16, 13
• Comparing Arrays THINGS THAT ARE HARD IN JAVASCRIPT Saturday,
March 16, 13
• Comparing Arrays • Adding Numbers THINGS THAT ARE HARD
IN JAVASCRIPT Saturday, March 16, 13
• Comparing Arrays • Adding Numbers • Defining Types THINGS
THAT ARE HARD IN JAVASCRIPT Saturday, March 16, 13
• Comparing Arrays • Adding Numbers • Defining Types •
Loading Modules THINGS THAT ARE HARD IN JAVASCRIPT Saturday, March 16, 13
THINGS THAT ARE EASY IN JAVASCRIPT Saturday, March 16, 13
• Calling Functions THINGS THAT ARE EASY IN JAVASCRIPT Saturday,
March 16, 13
• Calling Functions • Handling Events THINGS THAT ARE EASY
IN JAVASCRIPT Saturday, March 16, 13
THE ONLY THING THAT IS EASY IN JAVASCRIPT CALLING FUNCTIONS
Saturday, March 16, 13
A TALE OF TWO EVENTS • ASYNCHRONOUS I/O • CLICKY
BUTTONS Saturday, March 16, 13
A TALE OF TWO EVENTS • CLICKY BUTTONS • ASYNCHRONOUS
I/O Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
? ? ? Saturday, March 16, 13
When X ↓ Do Y Saturday, March 16, 13
When a REST API service endpoint result for the requested
data is available ↓ Do manipulate a model object of the appropriate type based on that data Saturday, March 16, 13
When I Click ↓ Do Say “Hi” Saturday, March 16,
13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
PyJS http://pyjs.org/ Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
NUMBER GUESSER binary search as implemented by human user Saturday,
March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
JAN KEN PON the ultimate distillation of human conflict Saturday,
March 16, 13
Saturday, March 16, 13
TWISTED http://twistedmatrix.com Saturday, March 16, 13
KLEIN https://github.com/twisted/klein Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
Saturday, March 16, 13
WHAT IS EVENT DRIVEN an event is just a function
call that you asked for Saturday, March 16, 13
THINK OF A FUNCTION what do you want to happen?
Saturday, March 16, 13
WHEN THE USER CLICKS THIS BUTTON please call this function
Saturday, March 16, 13
WHEN THE USER ANSWERS THIS QUESTION please call this function
Saturday, March 16, 13
WHEN THE NETWORK ANSWERS THIS QUESTION please call this function
Saturday, March 16, 13
WHEN THE NETWORK SENDS ME SOME DATA please call this
function Saturday, March 16, 13
THE NETWORK IS JUST A USER on the other side
of the planet or on the other side of the screen Saturday, March 16, 13
THANK YOU Saturday, March 16, 13
Saturday, March 16, 13