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

Juggling Patterns and Programs

miner
December 05, 2016

Juggling Patterns and Programs

The art of juggling has fascinated people since the days of ancient Egypt. In this talk, we posit that juggling theory can inform software development. We start with the mathematical insights of Claude Shannon, renowned as the father of Information Theory. After introducing “siteswap” notation, we use Clojure to visualize juggling patterns. Finally, we review some interesing results in neuroscience regarding juggling.

Presented at Clojure/conj 2016.
video: https://www.youtube.com/watch?v=TqG176T69VM

miner

December 05, 2016
Tweet

More Decks by miner

Other Decks in Programming

Transcript

  1. Metaphor Alert RH ~ incidental complexity Me ~ essential complexity

    https://schani.wordpress.com/tag/juggling/
  2. Shannon’s Juggling Theorem • Flight time • Dwell time •

    Vacant time • number of Balls • number of Hands
  3. Complex Made Hard • B ≈ F • F ≈

    (sqrt height) • small errors compound
  4. Shannon’s Juggling Theorem • Flight time • Dwell time •

    Vacant time • number of Balls • number of Hands
  5. Lessons from Shannon • historical analysis • domain understanding •

    choosing right abstraction • exploring trade-offs
  6. Science of Juggling • Peter J. Beek and Arthur Lewbel

    • Scientific American, November, 1995, Volume 273, Number 5, pages 92-97 • www.juggling.org/papers/science-1/
  7. Siteswap Notation • sequence of integers • e.g. 531 =

    [5, 3, 1] …, 5, 3, 1, 5, 3, 1, … • 3 = standard three-ball cascade • odd for cascade, even for fountain • empty 0, switch1, hold 2
  8. 531

  9. Inventors • Paul Klimek - UC Santa Cruz 1981 •

    Bruce Tiemann and Bengt Magnusson - Caltech 1985 • Michael Day, Colin Wright and Adam Chalcraft - Cambridge 1985
  10. Number of Balls • average of throws, must be an

    integer • 531 (/ (+ 5 3 1) 3) 㱺 3 • 71 (/ (+ 7 1) 2) 㱺 4 • 97531 (/ (+ 9 7 5 3 1) 5) 㱺 5
  11. Validate Pattern (defn siteswap? [pattern] (let [cnt (count pattern)] (or

    (zero? cnt) (apply distinct? (map #(mod % cnt) (map-indexed + pattern))))))
  12. Orbits • Decompose pattern into orbits (sub-patterns) • 531 =

    501 & 030 • 4413 = 4000 & 0400 & 0013 • 97531 = 90001 & 07030 & 00500 • Practice separately
  13. New Patterns • add period to element: 33 㱺 53

    • swap sites i & j • add distance earlier, subtract distance later • guarantees same landing schedule • 333 㱺 531 531 㱺 441
  14. 531

  15. Siteswap Features • simple data representation • flexible interpretation •

    sharing • composition • verification • generation
  16. The Mathematics of Juggling • Book by Burkard Polster, Monash

    University • Survey article based on his book • www.qedcat.com/articles/juggling_survey.pdf • YouTube videos on juggling
  17. – Burkard Polster The way that I feel when I

    look at a nice equation is the same way I feel when I look at a nice juggling pattern.
  18. Allen Knutson • Math professor at Cornell • Siteswap FAQ

    on rec.juggling • YouTube video on mathematics of juggling
  19. Neuroscience • Plasticity In The Adult Brain: Why We Care

    About Taxi Drivers & Jugglers • Marc W. Haut, PhD • youtube.com/watch?v=JVsZVW2HRYQ • nature.com/nature/journal/v427/n6972/full/ 427311a.html
  20. Jennifer Slaw: Juggling Life • TEDxPrincetonlibrary talk • motivational speaker,

    teaches juggling • improves memory, concentration, flexibility, patience, balance • youtube.com/watch?v=S- Rohq5649A
  21. – Michael Moschen What you learn is how to feel

    with your eyes and see with your hands.
  22. Recap • Juggling inspires mathematicians • Siteswap notation is a

    juggling DSL • Rastelli juggles with Clojure