Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Thinking Outside The Box
Armin Ronacher
July 01, 2013
Programming
14
3.1k
Thinking Outside The Box
Keynote for EuroPython 2013.
Armin Ronacher
July 01, 2013
Tweet
Share
More Decks by Armin Ronacher
See All by Armin Ronacher
The Snowball Effect of Open Source
mitsuhiko
0
15
Mobile Games are Living Organisms, Too
mitsuhiko
0
12
We gave a Mouse an NDK
mitsuhiko
0
450
Debug is the new Release
mitsuhiko
1
410
A Future Python
mitsuhiko
0
2.2k
Failing in Rust
mitsuhiko
5
760
A Python for Future Generations
mitsuhiko
19
8.5k
Rust at Sentry
mitsuhiko
4
890
My Python is Rusting
mitsuhiko
2
1.4k
Other Decks in Programming
See All in Programming
Chart実装が楽になりました。
keisukeyamagishi
0
120
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
190
Jetpack Compose, 어디까지 알고 있을까?
jisungbin
0
130
Lancersをコンテナへ本番移行する取り組み
rvirus0817
1
420
短納期でローンチした新サービスをJavaで開発した話/launched new service using Java
eichisanden
6
2k
設計の学び方:自分流のススメ
masuda220
PRO
10
7.5k
Node-RED 3.0 新機能紹介
utaani
0
150
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
400
Client-Side Field-Level Encryption for Apache Kafka Connect @ VoxxedDays Luxembourg 2022
hpgrahsl
0
120
ES2022の新機能
smt7174
0
280
LINE Messaging APIの概要 - LINE API総復習シリーズ
uezo
1
190
JSのウェブフレームワークで高速なルーターを実装する方法
usualoma
1
1.9k
Featured
See All Featured
Three Pipe Problems
jasonvnalue
89
8.7k
Happy Clients
brianwarren
89
5.6k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
5.9k
Practical Orchestrator
shlominoach
178
8.6k
Stop Working from a Prison Cell
hatefulcrawdad
261
17k
Infographics Made Easy
chrislema
233
17k
Making Projects Easy
brettharned
98
4.3k
Bash Introduction
62gerente
597
210k
Building Adaptive Systems
keathley
25
1.1k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Teambox: Starting and Learning
jrom
123
7.7k
Clear Off the Table
cherdarchuk
79
280k
Transcript
ThinkinG - = outside The box
Hello, I'm Armin! I do Computers - with Python. Currently
at Fireteam / Splash Damage. We do Internet for Pointy Shooty Games. c w
q t t j j d
the box is comfortable X
the comfort is dangerous l
the 9 dots puzzle 0 j 5 (and things of
similar nature)
h - W < å ≥ h ≥ U using
exactly 4 straight lines, without retracing or removing one's pen from the paper connect the dots j
h - W < å ≥ h ≥ U using
exactly 4 straight lines, without retracing or removing one's pen from the paper connect the dots j
g i know it's cliché Ç
J the six thinking hats
J the six thinking hats This
the majority is always wrong: congratulations; you're now a cynical
asshole 7 z “ ”
a change of environment 1 z m
c computer games
˚ 4 * this graph is not very scientific h
≥ Online
˚ 4 * this graph is not very scientific python!!!11
h ≥ Online
community influences your thinking . a - ∫ Î
C++ good; Scripting Languages Bad u
... if it takes you 30 minutes to do a
one line change then you obviously would not want to have runtime type checks ... E
it's too easy to dismiss something on fringe or outdated
experience alone
• never underestimate how much your environment/community influences you 1
• never underestimate how much your environment/community influences you 1
(unfortunately that also includes things like “the GIL is not a problem")
asking the right questions 2 j 5
the wrong questions are easy to spot on others a
- ˚ 4
<redacted> how do I do something after return render_template(...) if
I don't want to register teardown_request for all requests. J
• he was looking for celery / message queue ©
• first expectation was that the user wanted to change
the HTTP response 0
• teardown_request would not have worked anyways O
I don't want my user to wait while I do
some processing on his data v “ ” better:
t j the box was Flask
how to ask the right questions2 - 5 B
• assume you already started out wrong • describe the
•actual• problem =
How do I use Websockets with Flask? z “ ”
How do I notify my user about changes with low
latency. 6 better: “ ”
5 question leaves room for the answer
(a) Server-sent events via WSGI (b) application <-> redis <->
persistent connection server Ô bit.ly/pypush
f Jump on IRC help out other people < >
questioning the right things 3 z m
the worst parts in my libraries are the ones where
I took the design from elsewhere O
it's not because I know better ... ∆ Ò
• most things have some design behind • as people
copy it, the original design gets obscured and forgotten • the original design might no longer apply 1
• starting something new? • question everything! ˝
not with the intention of proving existing design wrong; with
the intention of understanding it. 9
9 paradigm shifts 4 F
Many times we don't even realize that things were an
example of thinking outside the box. (a) "echo" -> Request/Response objects (b) Interactive Interpreters 9
That's also what makes it hard to find examples now
... 9
every idea is a rehash don't get too excited when
you feel all "obviously ..." sometimes all that's necessary is transposing a concept from one industry to the other. 9
9 interesting examples 5 F
• Mill Processor: • Basic Block: One entry, one exit.
• Break instruction bundles in half • Two decoders, one moves left from EBB entry point, one moves to the right =
• Mill Processor: • Basic Block: One entry, one exit.
• Break instruction bundles in half • Two decoders, one moves left from EBB entry point, one moves to the right = two independent units, two separate caches
=a High-level Queues for Request Handling Stateful Frontend Servers Stateless
Workers
• Sending around signed data • Cookies • Access/Refresh Tokens
• Activation Links • Offers ˆ
• The Rust Programming Language • Memory ownership tracking 1
(and otherwise just steal from C++, C, Python, Ruby, Haskell and Scheme)
• Spotify's Native/Web Bridge • spawns HTTP server on localhost:XXXXX
• provides OAuth bridge • JavaScript authenticates with local server, sends commands and retrieves updates. c
That's it; Now ask questions ? @mitsuhiko lucumr.pocoo.org/talks gittip.com/mitsuhiko y
y y d
calibration slide -- 2 2 2 2 2 2 c