Upgrade to Pro — share decks privately, control downloads, hide ads and more …

So Easy You Can Even Do It In JavaScript: Event-Driven Architecture For Regular Programmers by Glyph

So Easy You Can Even Do It In JavaScript: Event-Driven Architecture For Regular Programmers by Glyph

PyCon 2013

March 16, 2013
Tweet

More Decks by PyCon 2013

Other Decks in Programming

Transcript

  1. EVENT DRIVEN
    ARCHITECTURE
    It Is The Hardest Thing
    You Will Never Figure it Out
    I Mean What Does “Asynchronous” Even Mean
    Is That Even A Real Word
    Saturday, March 16, 13

    View Slide

  2. EVENT DRIVEN
    ARCHITECTURE
    For Regular Programmers
    Saturday, March 16, 13

    View Slide

  3. EVENT DRIVEN
    ARCHITECTURE
    So Easy You Can Even Do It In JavaScript
    Saturday, March 16, 13

    View Slide

  4. W
    ARNING
    Saturday, March 16, 13

    View Slide

  5. THINGS THAT ARE
    HARD IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  6. • Comparing Arrays
    THINGS THAT ARE
    HARD IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  7. • Comparing Arrays
    • Adding Numbers
    THINGS THAT ARE
    HARD IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  8. • Comparing Arrays
    • Adding Numbers
    • Defining Types
    THINGS THAT ARE
    HARD IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  9. • Comparing Arrays
    • Adding Numbers
    • Defining Types
    • Loading Modules
    THINGS THAT ARE
    HARD IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  10. THINGS THAT ARE
    EASY IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  11. • Calling Functions
    THINGS THAT ARE
    EASY IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  12. • Calling Functions
    • Handling Events
    THINGS THAT ARE
    EASY IN JAVASCRIPT
    Saturday, March 16, 13

    View Slide

  13. THE ONLY THING
    THAT IS EASY IN JAVASCRIPT
    CALLING FUNCTIONS
    Saturday, March 16, 13

    View Slide

  14. A TALE OF TWO EVENTS
    • ASYNCHRONOUS I/O
    • CLICKY BUTTONS
    Saturday, March 16, 13

    View Slide

  15. A TALE OF TWO EVENTS
    • CLICKY BUTTONS
    • ASYNCHRONOUS I/O
    Saturday, March 16, 13

    View Slide

  16. Saturday, March 16, 13

    View Slide

  17. Saturday, March 16, 13

    View Slide

  18. Saturday, March 16, 13

    View Slide

  19. Saturday, March 16, 13

    View Slide

  20. Saturday, March 16, 13

    View Slide

  21. ? ?
    ?
    Saturday, March 16, 13

    View Slide

  22. When X

    Do Y
    Saturday, March 16, 13

    View Slide

  23. When
    a REST API service endpoint
    result for the requested data
    is available

    Do
    manipulate a model object
    of the appropriate type
    based on that data
    Saturday, March 16, 13

    View Slide

  24. When
    I Click

    Do
    Say “Hi”
    Saturday, March 16, 13

    View Slide

  25. Saturday, March 16, 13

    View Slide

  26. Saturday, March 16, 13

    View Slide

  27. Saturday, March 16, 13

    View Slide

  28. Saturday, March 16, 13

    View Slide

  29. Saturday, March 16, 13

    View Slide

  30. Saturday, March 16, 13

    View Slide

  31. Saturday, March 16, 13

    View Slide

  32. Saturday, March 16, 13

    View Slide

  33. Saturday, March 16, 13

    View Slide

  34. Saturday, March 16, 13

    View Slide

  35. Saturday, March 16, 13

    View Slide

  36. Saturday, March 16, 13

    View Slide

  37. Saturday, March 16, 13

    View Slide

  38. PyJS
    http://pyjs.org/
    Saturday, March 16, 13

    View Slide

  39. Saturday, March 16, 13

    View Slide

  40. Saturday, March 16, 13

    View Slide

  41. Saturday, March 16, 13

    View Slide

  42. Saturday, March 16, 13

    View Slide

  43. Saturday, March 16, 13

    View Slide

  44. Saturday, March 16, 13

    View Slide

  45. Saturday, March 16, 13

    View Slide

  46. Saturday, March 16, 13

    View Slide

  47. Saturday, March 16, 13

    View Slide

  48. Saturday, March 16, 13

    View Slide

  49. Saturday, March 16, 13

    View Slide

  50. Saturday, March 16, 13

    View Slide

  51. Saturday, March 16, 13

    View Slide

  52. Saturday, March 16, 13

    View Slide

  53. Saturday, March 16, 13

    View Slide

  54. Saturday, March 16, 13

    View Slide

  55. Saturday, March 16, 13

    View Slide

  56. Saturday, March 16, 13

    View Slide

  57. Saturday, March 16, 13

    View Slide

  58. Saturday, March 16, 13

    View Slide

  59. Saturday, March 16, 13

    View Slide

  60. Saturday, March 16, 13

    View Slide

  61. Saturday, March 16, 13

    View Slide

  62. Saturday, March 16, 13

    View Slide

  63. Saturday, March 16, 13

    View Slide

  64. Saturday, March 16, 13

    View Slide

  65. Saturday, March 16, 13

    View Slide

  66. Saturday, March 16, 13

    View Slide

  67. Saturday, March 16, 13

    View Slide

  68. Saturday, March 16, 13

    View Slide

  69. NUMBER GUESSER
    binary search as implemented by human user
    Saturday, March 16, 13

    View Slide

  70. Saturday, March 16, 13

    View Slide

  71. Saturday, March 16, 13

    View Slide

  72. Saturday, March 16, 13

    View Slide

  73. Saturday, March 16, 13

    View Slide

  74. Saturday, March 16, 13

    View Slide

  75. Saturday, March 16, 13

    View Slide

  76. Saturday, March 16, 13

    View Slide

  77. Saturday, March 16, 13

    View Slide

  78. Saturday, March 16, 13

    View Slide

  79. Saturday, March 16, 13

    View Slide

  80. Saturday, March 16, 13

    View Slide

  81. Saturday, March 16, 13

    View Slide

  82. Saturday, March 16, 13

    View Slide

  83. Saturday, March 16, 13

    View Slide

  84. Saturday, March 16, 13

    View Slide

  85. Saturday, March 16, 13

    View Slide

  86. Saturday, March 16, 13

    View Slide

  87. Saturday, March 16, 13

    View Slide

  88. Saturday, March 16, 13

    View Slide

  89. Saturday, March 16, 13

    View Slide

  90. Saturday, March 16, 13

    View Slide

  91. Saturday, March 16, 13

    View Slide

  92. Saturday, March 16, 13

    View Slide

  93. Saturday, March 16, 13

    View Slide

  94. JAN KEN PON
    the ultimate distillation of human conflict
    Saturday, March 16, 13

    View Slide

  95. Saturday, March 16, 13

    View Slide

  96. TWISTED
    http://twistedmatrix.com
    Saturday, March 16, 13

    View Slide

  97. KLEIN
    https://github.com/twisted/klein
    Saturday, March 16, 13

    View Slide

  98. Saturday, March 16, 13

    View Slide

  99. Saturday, March 16, 13

    View Slide

  100. Saturday, March 16, 13

    View Slide

  101. Saturday, March 16, 13

    View Slide

  102. Saturday, March 16, 13

    View Slide

  103. Saturday, March 16, 13

    View Slide

  104. Saturday, March 16, 13

    View Slide

  105. Saturday, March 16, 13

    View Slide

  106. Saturday, March 16, 13

    View Slide

  107. Saturday, March 16, 13

    View Slide

  108. Saturday, March 16, 13

    View Slide

  109. Saturday, March 16, 13

    View Slide

  110. Saturday, March 16, 13

    View Slide

  111. WHAT IS
    EVENT DRIVEN
    an event is just a function call that you asked for
    Saturday, March 16, 13

    View Slide

  112. THINK OF A FUNCTION
    what do you want to happen?
    Saturday, March 16, 13

    View Slide

  113. WHEN THE USER
    CLICKS THIS BUTTON
    please call this function
    Saturday, March 16, 13

    View Slide

  114. WHEN THE USER
    ANSWERS THIS QUESTION
    please call this function
    Saturday, March 16, 13

    View Slide

  115. WHEN THE NETWORK
    ANSWERS THIS QUESTION
    please call this function
    Saturday, March 16, 13

    View Slide

  116. WHEN THE NETWORK
    SENDS ME SOME DATA
    please call this function
    Saturday, March 16, 13

    View Slide

  117. THE NETWORK IS
    JUST A USER
    on the other side of the planet
    or on the other side of the screen
    Saturday, March 16, 13

    View Slide

  118. THANK YOU
    Saturday, March 16, 13

    View Slide

  119. Saturday, March 16, 13

    View Slide