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
Thinking Outside The Box
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Armin Ronacher
July 01, 2013
Programming
3.5k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Thinking Outside The Box
Keynote for EuroPython 2013.
Armin Ronacher
July 01, 2013
More Decks by Armin Ronacher
See All by Armin Ronacher
Reflections on building cloud and local hybrid machine entities
mitsuhiko
1
240
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
970
Do Dumb Things
mitsuhiko
0
1.1k
No Assumptions
mitsuhiko
0
460
The Complexity Genie
mitsuhiko
0
370
The Catch in Rye: Seeding Change and Lessons Learned
mitsuhiko
0
470
Runtime Objects in Rust
mitsuhiko
0
460
Rust at Sentry
mitsuhiko
0
630
Overcoming Variable Payloads to Optimize for Performance
mitsuhiko
0
330
Other Decks in Programming
See All in Programming
contenteditable と日本語入力に向き合う
colorful12
0
210
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
860
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
180
APNsからLive Activityを開始する話
yumnumm
0
170
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.7k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
360
phperだってパンチカードでコーディングしたい
o0h
PRO
0
370
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
820
ChromeでローカルLLM
ryu1013
0
160
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
140
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
170
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
310
Marketing to machines
jonoalderson
1
5.9k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
610
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
580
A Modern Web Designer's Workflow
chriscoyier
699
190k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
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