• first expectation was that the user wanted
to change the HTTP response
0
Slide 28
Slide 28 text
• teardown_request would not have worked
anyways
O
Slide 29
Slide 29 text
I don't want my user to wait while I do
some processing on his data
v
“
”
better:
Slide 30
Slide 30 text
t
j
the box was Flask
Slide 31
Slide 31 text
how to ask the right
questions2
-
5
B
Slide 32
Slide 32 text
• assume you already started out wrong
• describe the •actual• problem
=
Slide 33
Slide 33 text
How do I use Websockets
with Flask?
z
“
”
Slide 34
Slide 34 text
How do I notify my user about
changes with low latency.
6
better:
“
”
Slide 35
Slide 35 text
5
question
leaves room
for the answer
Slide 36
Slide 36 text
(a) Server-sent events via WSGI
(b) application <-> redis <-> persistent
connection server
Ô
bit.ly/pypush
Slide 37
Slide 37 text
f
Jump on IRC
help out other people
< >
Slide 38
Slide 38 text
questioning the right things
3
z
m
Slide 39
Slide 39 text
the worst parts in my libraries are the ones
where I took the design from elsewhere
O
Slide 40
Slide 40 text
it's not because
I know better ...
∆
Ò
Slide 41
Slide 41 text
• 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
not with the intention of proving existing
design wrong;
with the intention of understanding it.
9
Slide 44
Slide 44 text
9
paradigm shifts
4
F
Slide 45
Slide 45 text
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
Slide 46
Slide 46 text
That's also what makes it hard to find
examples now ...
9
Slide 47
Slide 47 text
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
Slide 48
Slide 48 text
9
interesting examples
5
F
Slide 49
Slide 49 text
• 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
=
Slide 50
Slide 50 text
• 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
• Sending around signed data
• Cookies
• Access/Refresh Tokens
• Activation Links
• Offers
ˆ
Slide 53
Slide 53 text
• The Rust Programming Language
• Memory ownership tracking
1
(and otherwise just steal from C++, C, Python, Ruby, Haskell and Scheme)
Slide 54
Slide 54 text
• 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
Slide 55
Slide 55 text
That's it;
Now ask questions
?
@mitsuhiko
lucumr.pocoo.org/talks
gittip.com/mitsuhiko
y y
y
d