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
Pioneering Real-Time
Search
Andrew Godwin
October 03, 2019
Programming
560
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pioneering Real-Time
My keynote from PyCon Balkan 2019
Andrew Godwin
October 03, 2019
More Decks by Andrew Godwin
See All by Andrew Godwin
Working With Risk: Lessons From Mountain Rescue
andrewgodwin
1
26
Reconciling Everything
andrewgodwin
1
420
Django Through The Years
andrewgodwin
0
350
Writing Maintainable Software At Scale
andrewgodwin
0
560
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
440
Async, Python, and the Future
andrewgodwin
2
770
How To Break Django: With Async
andrewgodwin
1
850
Taking Django's ORM Async
andrewgodwin
0
880
The Long Road To Asynchrony
andrewgodwin
0
790
Other Decks in Programming
See All in Programming
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
3
630
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
310
Groovy as a human and AI friendly programming language
paulk
0
140
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
250
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
130
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.4k
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.7k
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
120
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
650
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
230
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.1k
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.4k
Featured
See All Featured
Done Done
chrislema
187
17k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
660
Code Reviewing Like a Champion
maltzj
529
40k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
950
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
340
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
330
Tell your own story through comics
letsgokoyo
1
1.1k
Code Review Best Practice
trishagee
74
20k
Transcript
PIONEERING REAL-TIME ANDREW GODWIN // @andrewgodwin
Hi, I’m Andrew Godwin
async def view(request): data = await api_call(pk=5) return render(request, "a.html",
…)
"The Real-Time Web"
AJAX 1999 Comet 2006 WebSockets 2011
"Real-Time"
“A system in which input data is processed within milliseconds
so that it is available virtually immediately
None
None
CPU cores run one thing at a time (yes, computers
are basically a giant lie)
Program 2 Program 3 Program 1
Scheduling The art of running multiple things at once
Program 2 Program 3 Program 1 300 cycles 300 cycles
300 cycles
Program 2 Program 3 Program 1 300 cycles Restore Save
Restore Save Restore Save 30 cycles 30 cycles 300 cycles 30 cycles 30 cycles 300 cycles 30 cycles 30 cycles
Context switching is expensive The more you have, the worse
it gets
Python's threading has this problem! The more you have, the
worse it gets
Active Threads Idle Threads Runtime 1 0 1.3 seconds 1
1 2.3 seconds 1 5 5.4 seconds 1 30 39 seconds 1 100 15 minutes
"Boxcar" scheduling has… issues Don't ever write avionics software like
this! Thanks.
None
None
72kb Woven core memory
0.085 Mhz processor
“ Don Eyles ...when the guidance system was first being
conceived, the onboard software was almost an afterthought
None
None
Priority-based Executive Please do write avionics software like this.
Job Priorities Higher numbers beat lower Limited job "RAM" Only
7 running at once Interrupts from hardware Descent radar, keyboard, etc.
Predictable Software They knew exactly what ran and what it
took
...Unpredictable Hardware It's never easy, especially in space.
None
Two differently phased 800Mhz clocks This is really bad, trust
me.
False detections stole computer time The radar system had to
update the guidance computer
Descent Phase: 85% load Capsule orientation and thrust calculations Hardware
Bug: 13% Caused by the descent radar Display Routine: 5% Astronauts trying to see how far to go
103%
None
SERVICER never gets to run But the system keeps trying
to schedule it
Alarm 1202 The computer self-restarts, but keeps crashing
Buzz Aldrin works it out Turns off the display routine
to bring the load under 100%
Apollo 11 was almost a failure ...but good software design
prevented it
Apollo 9 First flight test of Lunar Module Apollo 10
Second test and partial descent of Lunar Module Apollo 11 First Moon landing
“ Eugene A. Cernan, recounting Apollo 10 Don't give those
guys an opportunity to land, 'cause they might!
Building for Failure Software is only as good as its
worst outing
“ Don Eyles During simulations we sometimes pushed the [restart]
button randomly
We often only design for the good cases After all,
that's what we're expecting to happen
Hardware is always unpredictable Disks, networks, even keyboards and mice
Can your software survive a crash? Or does it need
a clean shutdown to work?
How will you handle the unexpected? Weird input. Slow network
connections. Emoji.
“ Don Eyles When Hal Laning designed the Executive and
Waitlist system, he made it up from whole cloth with no examples to guide him. The design [...] still represents the state of the art.
All software has consequences We may not all be designing
spacecraft, but we affect lives.
doneyles.com/LM/Tales.html Tales from the Lunar Module Guidance Computer, 2004
Thanks. Andrew Godwin @andrewgodwin // aeracode.org