Thinking Outside The Box

Thinking Outside The Box

Keynote for EuroPython 2013.

181de1fb11dffe39774f3e2e23cda3b6?s=128

Armin Ronacher

July 01, 2013
Tweet

Transcript

  1. ThinkinG - = outside The box

  2. Hello, I'm Armin! I do Computers - with Python. Currently

    at Fireteam / Splash Damage. We do Internet for Pointy Shooty Games. c w
  3. q t t j j d

  4. the box is comfortable X

  5. the comfort is dangerous l

  6. the 9 dots puzzle 0 j 5 (and things of

    similar nature)
  7. h - W < å ≥ h ≥ U using

    exactly 4 straight lines, without retracing or removing one's pen from the paper connect the dots j
  8. h - W < å ≥ h ≥ U using

    exactly 4 straight lines, without retracing or removing one's pen from the paper connect the dots j
  9. g i know it's cliché Ç

  10. J the six thinking hats

  11. J the six thinking hats This

  12. the majority is always wrong: congratulations; you're now a cynical

    asshole 7 z “ ”
  13. a change of environment 1 z m

  14. c computer games

  15. ˚ 4 * this graph is not very scientific h

    ≥ Online
  16. ˚ 4 * this graph is not very scientific python!!!11

    h ≥ Online
  17. community influences your thinking . a - ∫ Î

  18. C++ good; Scripting Languages Bad u

  19. ... if it takes you 30 minutes to do a

    one line change then you obviously would not want to have runtime type checks ... E
  20. it's too easy to dismiss something on fringe or outdated

    experience alone
  21. • never underestimate how much your environment/community influences you 1

  22. • never underestimate how much your environment/community influences you 1

    (unfortunately that also includes things like “the GIL is not a problem")
  23. asking the right questions 2 j 5

  24. the wrong questions are easy to spot on others a

    - ˚ 4
  25. <redacted> how do I do something after return render_template(...) if

    I don't want to register teardown_request for all requests. J
  26. • he was looking for celery / message queue ©

  27. • first expectation was that the user wanted to change

    the HTTP response 0
  28. • teardown_request would not have worked anyways O

  29. I don't want my user to wait while I do

    some processing on his data v “ ” better:
  30. t j the box was Flask

  31. how to ask the right questions2 - 5 B

  32. • assume you already started out wrong • describe the

    •actual• problem =
  33. How do I use Websockets with Flask? z “ ”

  34. How do I notify my user about changes with low

    latency. 6 better: “ ”
  35. 5 question leaves room for the answer

  36. (a) Server-sent events via WSGI (b) application <-> redis <->

    persistent connection server Ô bit.ly/pypush
  37. f Jump on IRC help out other people < >

  38. questioning the right things 3 z m

  39. the worst parts in my libraries are the ones where

    I took the design from elsewhere O
  40. it's not because I know better ... ∆ Ò

  41. • 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
  42. • starting something new? • question everything! ˝

  43. not with the intention of proving existing design wrong; with

    the intention of understanding it. 9
  44. 9 paradigm shifts 4 F

  45. 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
  46. That's also what makes it hard to find examples now

    ... 9
  47. 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
  48. 9 interesting examples 5 F

  49. • 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 =
  50. • 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
  51. =a High-level Queues for Request Handling Stateful Frontend Servers Stateless

    Workers
  52. • Sending around signed data • Cookies • Access/Refresh Tokens

    • Activation Links • Offers ˆ
  53. • The Rust Programming Language • Memory ownership tracking 1

    (and otherwise just steal from C++, C, Python, Ruby, Haskell and Scheme)
  54. • 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
  55. That's it; Now ask questions ? @mitsuhiko lucumr.pocoo.org/talks gittip.com/mitsuhiko y

    y y d
  56. calibration slide -- 2 2 2 2 2 2 c