Software Development

Summarized using AI

How to Jam in Code

Ron Evans • February 03, 2011 • San Pedro, CA

In the talk titled How to Jam in Code, Ron Evans explores the fascinating connections between music and programming, emphasizing how these two disciplines can inform and enhance each other. Through this engaging presentation, he demonstrates that both coding and music involve a deep understanding of structure, collaboration, and creativity.

Key Points Covered:
- Community Engagement in Programming: Ron highlights the vibrant local tech community in Los Angeles, encouraging participation in events like the Los Angeles Ruby Brigade, which fosters collaboration through informal coding sessions.
- Musical Symbolism in Programming: Ron relates the structure of music to coding, explaining how both involve the combination of notes or code lines to create larger compositions or software applications. He draws parallels between the necessity of practice in music and the importance of writing code during the learning process.
- Jam Sessions as Collaborative Coding: The concept of jamming in music serves as a metaphor for collaborative programming. Just as musicians must communicate and synchronize, programmers benefit from team dynamics and collaborative efforts.
- Historical Context of Music and Programming: The evolution of music from elitist documentation to more accessible forms parallels the progression in programming languages and practices over time. Ron cites historical examples, such as the IBM 370 assembler code and the Grateful Dead's business model, to illustrate these changes.
- Improvisation and Innovation: Just as music includes improvisational solos, software development requires innovative features that add unique value to projects. Successful development often mirrors the creativity seen in musical performances.
- Collective Experience in Coding: Ron discusses the psychological benefits of collective experiences in both music and programming, emphasizing the state of 'flow' that enhances creativity and productivity among participants.
- Interactive Activities: The talk culminates in an interactive session where the audience engages in collective music-making, illustrating concepts through practical exercises.

Conclusions and Takeaways:
Ron Evans urges participants to embrace collaboration, as it leads to deeper connections and more vibrant coding environments. He emphasizes the importance of shared experiences and encourages programmers to seek collaborative opportunities similar to musical jam sessions. By integrating these practices, coders can foster creativity and improve their craft, much like musicians refining their art together.

How to Jam in Code
Ron Evans • February 03, 2011 • San Pedro, CA

"Music is a world within itself, with a language we all understand" said Stevie Wonder. That sounds a lot like programming! The parallels between music and software development are striking, and understanding how they intersect can teach us a lot about how we can improve our code, our craft, and our joy in how we approach our work.

In this talk, which will include some unique musical forms of live audience participation, we will experience some of the patterns that connect two of the most human of activities: creating code, and creating music.

LA RubyConf 2011

00:00:29.800 Hello everyone, I'm Ron Evans, known as 'Dead Program' on Twitter. I'm one of the members of the Hybrid Group here in Los Angeles, where we focus on web consulting and development. Let's take a moment to discuss Los Angeles. It may not receive as much attention as Northern California in the realms of technology and entrepreneurship, but we have an amazing community here. I can see some of our local members—Evan and Michael—are in attendance today, along with several other remarkable individuals who will be speaking later this afternoon. I highly recommend that if you're in the area on Tuesdays, you should attend the Los Angeles Ruby Brigade, organized by Evan Phoenix and Shane. We meet every Tuesday from 7 PM to 10 PM, with no specific agenda; it resembles an anarchist society where we simply hang out, code, and talk. In fact, we worked on 'Kids Ruby' there, so I'd love for you to drop by and also check out kidsruby.com on GitHub—we're eager for your contributions!
00:01:06.720 Now, shifting gears, I want to talk about music. Stevie Wonder once said, 'Music is a world within itself, with a language we all understand.' This idea resonates with me, especially as it relates to programming. Music and programming share many parallels, and understanding these connections can improve our approach to both. Let’s explore how music can be visually represented. It involves either the absence or presence of sound, which we categorize as rests or notes, respectively. We combine these sounds using specific timing to create scales, when played sequentially, or chords, when played simultaneously. These patterns can be organized into higher-order structures, such as measures, which allow us to create an entire song. This visual representation is distinct from the auditory data itself.
00:01:58.520 As an example, even the most complex pieces of music can be entirely represented in a visual format. However, this leads to an important realization: practice is essential to play music. Similarly, to be a programmer, one must engage in writing code; reading books on programming alone isn't sufficient, even if the books are excellent. Just like musicians who practice together in a band, coders benefit from collaborative coding efforts—it's important to have that group dynamic.
00:02:38.480 Next, let's examine how the structure of playing a song can metaphorically align with software development. At the outset, we have a high-order specification—a set list—indicating which songs a band will perform. A fundamental rule of jamming is that at least two band members must know a song before they can start playing it. The key signature must also be synchronized, as playing a song in different keys can sound entirely wrong. The drummer then counts off the tempo, indicating how fast or slow the song should be played. However, while they set the tempo, the bass player establishes the rhythm and foundation for the song, which all other musicians build upon. The singer's lyrics or melody is what ultimately distinguishes one song from another.
00:03:11.440 Once the foundation is established, improvisatory sections—known as solos—can be introduced. These solos represent new features that add unique value to the song, enhancing it significantly. Ending a song also requires interaction, as music isn't only an auditory experience; it encompasses the full spectrum of sensory engagement. Making eye contact is crucial for effective communication among musicians. As the song concludes, it may be necessary to ensure the audience's attention is focused, indicating through cues that the performance is coming to a close. In every band, there is typically a central figure or foundation—the focal point for the music, which could be anyone from the lead singer to the bass player.
00:04:44.280 Now, let’s discuss various musical styles and their evolution. This section is inspired by a talk I heard by John Dahl at a conference in Canada last year. Music documentation started as a specialized art form confined to a very small segment of society—a privileged class. An example from the early 60s is IBM 370 assembler code, which illustrates how complex programming parallels early musical documentation. Simplest tasks required significant specialized knowledge, akin to the professional priesthood of early data centers.
00:05:27.440 As music evolved, it became more accessible to the general public, yet it also required stringent discipline. For instance, Holo World in COBOL showcases this evolution—though the code is simpler, it still adheres more to form than function. As we progress through history, jazz introduced improvisation, requiring a higher level of skill while becoming accessible to more people, much like the mini-computer revolution that opened up technology access to many others.
00:06:40.960 The Grateful Dead significantly impacted the history of information technology. Jerry Garcia, often perceived casually, was actually a marketing visionary. They invented the freemium business model, allowing fans to join concerts and freely record and share music. This contrast with contemporaries such as the Rolling Stones, who were burdened by record label debts, illustrates a creative business model that was cash flow positive from the start, showcasing an entire ecosystem around their concerts.
00:07:32.080 With the advent of the personal computer revolution, we witnessed a shift where function began to outweigh form in programming. Examples like 'Hello World' became recognizable and signified the modern recombinant era—a time of mashups where anything is possible. Of course, we must also consider the emergence of instrumentation during software projects. Most projects involve teamwork, with a few exceptional cases where an individual can create something significant on their own.
00:08:44.920 While successful duos and trios often emerge in tech startups, the ideal team structure often consists of a business person, a technical individual, and a designer working in harmony. The role of specialized individuals fosters collaboration, akin to a hybrid consultancy model. When we envision significant development projects, order and structure may dominate our thoughts, but sometimes, successful projects operate like a controlled chaos, similar to a marching band.
00:09:49.880 It's important to acknowledge that self-organization among team members is key, particularly in open-source projects. However, it's also vital to recognize that many musicians rely on fake books, which serve as pattern directories. While these resources outline how to play songs, they don’t replace the need for practice and rehearsal. This leads to the understanding that collaboration entails knowing when to seek help and recognizing that not all combinations will yield successful results.
00:11:34.080 If something isn't working, it's often best to step back and reassess. When collaborating with others, ensuring everyone has space and avoiding egocentric behaviors is critical. If one person's ego consumes the group's dynamic, the project may struggle to succeed. Now, let’s shift gears toward practice. I'd like you all to put away your laptops, smartphones, and any devices that might be distracting. Please gather closer together; we need to create an experiment in collective music-making.
00:12:38.640 The first step in our exercise involves learning a symbolic musical language. We will begin with a vocal sound—anything from 'A' to 'O'—and all sing together on the count of four. Next, we’ll try clapping as our second musical symbol, ensuring we do so lightly, like a golf clap. Finally, our last musical symbol will be a silent sound, like hissing or shushing. We'll practice these symbols together, and once we're comfortable, we will combine them using props related to each sound, such as flags.
00:14:03.040 This active participation will allow us to engage in shared experiences, symbolizing our collective musical vocabulary. With our vocal sounds established, we'll incorporate these props. The American flag for vowel sounds, a pirate flag for silent sounds, and the California flag for clapping. During the activity, remember to hold your flags high and pass sounds around only to those in your immediate vicinity. This creates a communal atmosphere that fosters collaboration and musical exploration. As we progress, we'll be engaging in various iterations of this exercise, transitioning into a flag-less variation where we'll execute everything without visual aids.
00:18:12.440 Finally, we will simulate Conway's Game of Life through this exercise, where each individual represents a cell. By reacting to the sounds of those around you, we can explore interactions in real-time. This will be a collaborative experience aimed at simulating a creative output collectively. The fun of this practice lies in indulging in shared musical flow, allowing each participant to contribute to the evolving soundscape. As we conduct several iterations of this simulation, you will begin to recognize patterns and collective rhythms that emerge from this interaction.
00:25:14.720 As we conclude the simulation, I want to emphasize the connection between music, collaboration, and creativity. Behaviors associated with collective singing have social and psychological advantages, producing oxytocin, which fosters feelings of belonging within a group. Engaging in collective flow is essential for both music-making and programming, as it leads to deeper connections and higher productivity. The state of flow allows us to overlook time and achieve extraordinary results, beneficial in both musical and programming endeavors. Collective experiences in software projects can yield rich collaborations reminiscent of improvised music.
00:28:58.760 Ultimately, integrating collective practices in our daily lives—like group coding sessions or collaborative learning—can have profound effects. Striving for shared consciousness in our projects can lead to significant achievements, akin to the improvisational nature of music. So, as you continue along your programming journey, I encourage you to embrace collaboration and those shared experiences to cultivate a vibrant coding environment. Thank you!
00:30:26.960 e
00:30:56.919 e
00:31:26.919 e
00:31:56.840 e
00:32:26.840 e
00:32:56.840 e
00:33:26.760 e
00:33:56.720 e
00:34:26.720 e
00:34:56.640 e
00:35:26.640 e
00:35:56.640 e
00:36:26.560 e
00:36:56.520 e
Explore all talks recorded at LA RubyConf 2011
+5