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. Juggling Patterns and Programs
    Steve Miner
    @miner

    View Slide

  2. View Slide

  3. Anthony Gatto
    Cirque du Soleil

    View Slide

  4. Simple Made Easy
    Rich Hickey
    Strange Loop 2011

    View Slide

  5. Metaphor Alert
    RH ~ incidental complexity
    Me ~ essential complexity
    https://schani.wordpress.com/tag/juggling/

    View Slide

  6. Scientific Aspects of Juggling
    Claude Shannon (1916 - 2001)
    written in1980s

    View Slide

  7. Egyptian Wall Painting
    circa 2040 B.C.

    View Slide

  8. View Slide

  9. Uniform Juggle
    • one throw at a time
    • alternating hands
    • constant rhythm

    View Slide

  10. 3 Ball Cascade
    • Odd numbers: cascade
    • Even numbers: fountain

    View Slide

  11. 4 Ball Fountain
    • Odd numbers: cascade
    • Even numbers: fountain

    View Slide

  12. Shannon’s Juggling Theorem
    • Flight time
    • Dwell time
    • Vacant time
    • number of Balls
    • number of Hands

    View Slide

  13. Complex Made Hard
    • B ≈ F
    • F ≈ (sqrt height)
    • small errors compound

    View Slide

  14. Flying Karamazov Brothers
    scaling H

    View Slide

  15. Shannon’s Juggling Theorem
    • Flight time
    • Dwell time
    • Vacant time
    • number of Balls
    • number of Hands

    View Slide

  16. Lessons from Shannon
    • historical analysis
    • domain understanding
    • choosing right abstraction
    • exploring trade-offs

    View Slide

  17. 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/

    View Slide

  18. 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

    View Slide

  19. 531

    View Slide

  20. Inventors
    • Paul Klimek - UC Santa Cruz 1981
    • Bruce Tiemann and Bengt Magnusson - Caltech
    1985
    • Michael Day, Colin Wright and Adam Chalcraft -
    Cambridge 1985

    View Slide

  21. 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

    View Slide

  22. Validate Pattern
    (defn siteswap? [pattern]
    (let [cnt (count pattern)]
    (or (zero? cnt)
    (apply distinct?
    (map #(mod % cnt)
    (map-indexed + pattern))))))

    View Slide

  23. Spec
    (s/def ::siteswap
    (s/and (s/coll-of (s/int-in 0 10) :kind vector?)
    siteswap?))

    View Slide

  24. Orbits
    • Decompose pattern into orbits (sub-patterns)
    • 531 = 501 & 030
    • 4413 = 4000 & 0400 & 0013
    • 97531 = 90001 & 07030 & 00500
    • Practice separately

    View Slide

  25. Quil
    • Clojure library for graphics and animations
    • quil.info
    • Rastelli - Clojure juggling library

    View Slide

  26. 453
    3 balls in 450
    1 ball in 003

    View Slide

  27. 97531
    2 balls in 90001
    2 balls in 07030
    1 ball in 00500

    View Slide

  28. Isomorphic Patterns
    • repeat: 3 㱺 333
    • rotate: 531 㱺 315 㱺 135

    View Slide

  29. 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

    View Slide

  30. 531

    View Slide

  31. State Diagram
    https://plus.maths.org/content/juggling-maths-and-beautiful-mind

    View Slide

  32. Siteswap Features
    • simple data representation
    • flexible interpretation
    • sharing
    • composition
    • verification
    • generation

    View Slide

  33. Additional Resources
    • juggling.org
    • thewjf.com
    • wikipedia.com
    • siteswap.net/JsJuggle.html
    • jugglinglab.sourceforge.net

    View Slide

  34. 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

    View Slide

  35. – 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.

    View Slide

  36. Allen Knutson
    • Math professor at Cornell
    • Siteswap FAQ on rec.juggling
    • YouTube video on
    mathematics of juggling

    View Slide

  37. 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

    View Slide

  38. View Slide

  39. View Slide

  40. Jennifer Slaw: Juggling Life
    • TEDxPrincetonlibrary talk
    • motivational speaker, teaches
    juggling
    • improves memory,
    concentration, flexibility,
    patience, balance
    • youtube.com/watch?v=S-
    Rohq5649A

    View Slide

  41. – Michael Moschen
    What you learn is how to feel with your eyes
    and see with your hands.

    View Slide

  42. Recap
    • Juggling inspires mathematicians
    • Siteswap notation is a juggling DSL
    • Rastelli juggles with Clojure

    View Slide

  43. ClassicProgrammerPaintings.com

    View Slide

  44. photo by Lisa J. Miner

    View Slide

  45. View Slide

  46. The End

    View Slide