Strange Loop 2014:Keynote: Our Shared Joy of Programming

 Peabody Opera House

 September 19, 2014:  4:50 PM – 5:30 PM


Strange_loop_2014_our_shared_joy_of_programming_gfesser_erikonsoftware


From the promotional materials:

Our Shared Joy of Programming

Have you ever had flying dreams? Or dreams that all of a sudden you finally understood it “all”? These feelings are echoed in the joy we experience in learning, discovering, and creating as software developers. This talk will explore and celebrate this precious and fragile joy. We will look at ways to enhance it and avoid things that threaten to squash it. In particular, we see how it binds us all together as a community and how we can nurture it in each other.

Carin Meier (Outpace): Carin started off as a professional ballet dancer, studied Physics in college, and has been developing software for both the enterprise and entrepreneur ever since. She has a thing for Clojure and can be usually found with a cup of tea in her hand, hacking on her Roomba and AR Parrot Drone.

Sam Aaron (University of Cambridge): Sam is a live coder and strongly believes in the importance of emphasising and exploring and celebrating creativity within all aspects of programming. He is the lead developer of Overtone a live coding music environment in Clojure, Quil a Clojure front-end to Processing and Sonic Pi a beginners music live coding environment used to teach programming within schools. Sam is also one half of the live coding duo Meta-eX.


My personal notes:

Many of you reading this post have probably either read the classic text written by Frederick P Brooks Jr called "The Mythical Man-Month: Essays on Software Engineering", or come across it at some point in your careers. As I mentioned in my review of the book, a professor recommended the book to students of a course I took a number of years ago.

While I am not sure how often this book is still recommended in undergraduate or graduate computer science coursework, the book has stuck with me because of its timeless advice, and although many now enter the field without formal educations, classics such as this are really invaluable to the field, and I recommend adding it to your reading list.

One particular passage called "The Joys of the Craft" that has especially stuck with me was mentioned in my review several years ago of a book by Donald E. Knuth entitled "Things a Computer Scientist Rarely Talks About", and it was this passage that immediately came to mind at the start of the talk:

Why is programming fun?  What delights may its practitioner expect as his reward?

First is the sheer joy of making things.  As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design.  I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.

Second is the pleasure of making things that are useful to other people.  Deep within, we want others to use our work and to find it helpful.  In this respect the programming system is not essentially different from the child's first clay pencil holder "for Daddy's office."

Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning.  The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.

Fourth is the joy of always learning, which springs from the nonrepeating nature of the task.  In one way or another the problem is ever new, and its solver learns something:  sometimes practical, sometimes theoretical, and sometimes both.

Finally, there is the delight of working in such a tractable medium.  The programmer, like the poet, works only slightly removed from pure thought-stuff.  He builds his castles in the air, from air, creating by exertion of the imagination.  Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.  (As we shall see later, this very tractability has its own problems.)

Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself.  It prints results, draws pictures, produces sounds, moves arms.  The magic of myth and legend has come true in our time.  One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.

Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.

Note that a passaged entitled "The Woes of the Craft" immediately follows, but I will leave it to you to discover on your own.

Readers of this blog might recall my original Strange Loop 2014 post on session planning for the event, which listed this session last. Of the scheduled keynotes, this was by far the most entertaining, and it was a great way to end the conference.

Work colleagues and I have periodically discussed the vacuum which exists in the media with regard to accurate representations of software development, and it would be of benefit to the industry if this session reached a broader audience.

  • "Do you like it?" and "Isn't that boring?" are some questions that are often raised to Meier when meeting someone new and she is asked what she does for a living
  • when she replies by saying that she loves software development, the typical response is "Why?" Personally, this reminded me of the movie "Run Fatboy Run", in which the protagonist is repeatedly asked the same question when he says that he runs
  • she often responds with a question: "Have you ever had flying dreams?"
  • it is what the speaker feels like when she is in the zone coding
  • "Have you ever had one of those dreams where you finally understood it all, even if you forget it when you wake up?"
  • this is the way she feels when she finally understands a programming problem
  • and if the individual with whom Meier is speaking still experiences confusion, or they have not dropped the discussion yet at this point, she shares a story from childhood
  • there was a grove of trees to which she rode her bicycle, which seemed magical to her
  • she was utterly conviced that at any moment she would see a unicorn
  • this is the same awe and wonder that she feels when exporing a new technology
  • the personal joy of programming is fragile, you need to take care of it, because it can be diminished to the point that it feels like it will disappear
  • fortunately, there are some safeguards to maintain your joy
  • take care of yourself, especially after a conference such as this
  • get enough sleep, eat good food, exercise
  • keep interested, keep learning, keep that flame alive
  • for Meier, her passion is Clojure
  • one night while she was first started playing with Clojure by programming a quad copter, which took off for the first time, she screamed "OMG it worked!" and felt like she was flying with the drone

Strange_loop_2014_our_shared_joy_of_programming_clojure_quad_copter_carin_meier_sam_aaron_gfesser_erikonsoftware


  • at this point, Meier mentioned that what she had discussed thus far are factors which are under one's control
  • unfortunately, life happens, sickness happens
  • Meier lost a good friend and colleague this past Spring, and she was devastated
  • joy left, and her passion for Clojure was just no longer there anymore
  • while she knew this was a normal part of the grieving process, it was still very hard
  • one night, she was trying out a Clojure library called Overtone, which creates music with code
  • Meier cannot read music and has never played a musical instrument
  • but somehow with overtone, she was able to make sounds, and even music, and the joy returned to her – the shared joy of the community
  • Overtone is open source software created by Jeff Rose and Sam Aaron
  • the song that Meier finally managed to play is by Daft Punk, and getting to that point made her laugh and cry at the same time
  • the fact that that she was experiencing the joy of the community was especially fitting because she had been grieving for Jim Weirich, creator of Rake, who loved music and spoke at Strange Loop 2012
  • Meier commented that Weirich was always filled with joy, full of wonder and excitement for new things
  • Weirich shared his joy through open source software, teaching, speaking all over the world, and inspiring others
  • he was a true caretaker of this shared joy of the community, always treating others with kindess and respect, and there were never any stupid questions with him regardless of whether you were a programmer
  • our shared joy increases our personal joy, binds us as a community, lifts us up, and makes us more than ourselves

Strange_loop_2014_our_shared_joy_of_programming_shared_joy_carin_meier_sam_aaron_gfesser_erikonsoftware


  • at this point, Sam Aaron took the stage
  • a lot of his joy of programming comes from other people using the software that he wrote – it inspires him to carry on
  • one of the main things that Aaron communicates is the creativity that is part of the programming process
  • coding is so much more than apps and websites, which provides much of our employment as professionals
  • what could it be? it could be a new way to interact with music
  • Aaron is part of the live coding duo Meta-eX
  • what Meta-eX tries to communicate is the exciting things that can be done through programming – not just to programmers, but everybody else, since most people do not understand, or think programming is boring
  • this is a way to share the joy of programming by inspiring other people with what can be done
  • but it is not something that they can do now, so the path to get there needs to be easier
  • the Raspberry Pi folks asked if Aaron could do something for their platform
  • after porting Overtone to the Raspberry Pi, Aaron was faced with the fact that it took 7 minutes to boot up
  • so he did a lot of rewriting, all the while thinking about its usage in the classroom
  • in other words, making it easy to use while also being able to get buy-in from teachers
  • there are also a lot of politics involved with regard to appropriate programming languages for teaching
  • the Raspberry Pi is great, but it is low-powered and limited, so Aaron built Sonic Pi
  • he also put together a school curriculum for the UK which has just been adopted
  • this has caused a problem for IT educators, because they are skilled in teaching office skills
  • office skills are useful, but it is not understanding programming and how computers work
  • students and teachers liked the first iterations of the product, but the music that was generated consisted of beeps that did not resemble true music that would be used in a performance
  • so Aaron got some funding from the UK arts council and got professional musicians involved
  • along the way, the source code was forked to pursue several different possible directions
  • the musicians, who had never coded before, came up with some interesting approaches as to how the Sonic Pi could be used
  • so this led to the idea of using Sonic Pi for not just teaching computer science, but for teaching music

Strange_loop_2014_our_shared_joy_of_programming_orchestra_carin_meier_sam_aaron_photo_gfesser_erikonsoftware

Strange_loop_2014_our_shared_joy_of_programming_group_carin_meier_sam_aaron_photo_gfesser_erikonsoftware

Strange_loop_2014_our_shared_joy_of_programming_boys_carin_meier_sam_aaron_photo_gfesser_erikonsoftware

Strange_loop_2014_our_shared_joy_of_programming_girls_carin_meier_sam_aaron_photo_gfesser_erikonsoftware


  • the remaining time of this session consisted of a Sonic Pi demonstration which was very well put together
  • one of the missions of the developer should be to change the perspective of others as to what programming is all about
  • the remaining 15 minutes of the session consisted of a Meta-eX performance (music generated via Clojure code using the same REPL process) along with semi-choreographed robots
  • the robots used for the performance were a Roomba, a Sphero, a hexapod, and a drone
  • if you want to skip to this part of the session, skip to 28:04 in the video below, which starts with a brief introduction to the performance
  • video of the presentation can be found at this link.

Subscribe to Erik on Software

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe