$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Thinking Outside The Box
Search
Armin Ronacher
July 01, 2013
Programming
14
3.4k
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
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
410
Do Dumb Things
mitsuhiko
0
800
No Assumptions
mitsuhiko
0
300
The Complexity Genie
mitsuhiko
0
270
The Catch in Rye: Seeding Change and Lessons Learned
mitsuhiko
0
380
Runtime Objects in Rust
mitsuhiko
0
370
Rust at Sentry
mitsuhiko
0
530
Overcoming Variable Payloads to Optimize for Performance
mitsuhiko
0
250
Rust API Design Learnings
mitsuhiko
0
610
Other Decks in Programming
See All in Programming
connect-python: convenient protobuf RPC for Python
anuraaga
0
400
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
220
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
20k
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
300
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
5.5k
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
7k
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
320
React Native New Architecture 移行実践報告
taminif
1
150
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
380
JETLS.jl ─ A New Language Server for Julia
abap34
1
340
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
How STYLIGHT went responsive
nonsquared
100
6k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Documentation Writing (for coders)
carmenintech
76
5.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
GitHub's CSS Performance
jonrohan
1032
470k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Embracing the Ebb and Flow
colly
88
4.9k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
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