Software Development

What If Shakespeare Wrote Ruby

What If Shakespeare Wrote Ruby

by Adam Cuppy

In the talk titled "What If Shakespeare Wrote Ruby" presented by Adam Cuppy at the LA RubyConf 2015, the speaker explores the intersections between literature, specifically Shakespeare's work, and software development. Cuppy emphasizes the importance of language in both domains, explaining how Shakespeare crafted complex narratives with minimal directorial input. The session showcases how metaphor and abstraction, akin to the art of poetry, can enrich programming practices and enhance communication among developers.

Key points discussed include:

  • Engagement and Interactivity: The speaker encourages audience participation, eliminating laptops to foster connection.
  • Cuppy's Background: He shares his journey from acting to software development, highlighting the value of creativity and interactivity in tech.
  • Language and Poetry: Cuppy likens software developers to poets, arguing that programming requires artistic expression to convey meaning through code.
  • Shakespeare's Influence: Cuppy details how Shakespeare, without explicit stage directions, created complex interactions in his plays, mirroring how software should express intent through its structure.
  • Domain Specific Language (DSL): The concept of DSL is introduced as a method to unify communication among teams, emphasizing the importance of establishing clear conventions.
  • Expressive Conventions: Cuppy posits that Ruby's expressiveness allows for a more meaningful and creative coding experience, akin to a poet’s use of metaphor.
  • Theater as a Model: The discussion shifts to the theatrical performance, where actors deal with minimal scripts, paralleling the coding practices where engineers interpret and build upon precursors.
  • Conventions in Code: Finally, Cuppy explains how established coding conventions, such as relationships in Active Record, streamline collaboration and foster innovation while respecting written code.

In conclusion, Cuppy invites developers to embrace their roles as 'software writers,' harnessing the power of language and metaphor to advance their field. By implementing expressive conventions in programming, much like Shakespeare’s poetic approach, developers can improve their communication, creativity, and ultimately, their productivity in software engineering.

00:00:23.550 Well, yeah, so if this slide doesn't tell you enough, it should tell you a lot about the nature of this talk.
00:00:30.340 Before we get too far, we have an action round. And here's the deal: you're not going to need your laptops. All the slides are going to be available, so put them away.
00:00:35.980 That email can wait probably 30 minutes. Trust me on this one. The next thing is, let's get tightened close. Come on, I want you to find your neighbor.
00:00:46.929 Get close, get close. When you're done, come on, move in people in the back, unless you're highly uncomfortable and you're really against it, move in. It's okay. Nobody's going to steal your stuff, you can probably leave it there. Okay, good.
00:00:58.780 Be friendly with your neighbor—I mean, not too friendly! Alright, so yeah, so we did a great job giving you a sense of who I am. My name is Adam Cuppy. I represent a consultancy in Ruby and JavaScript for web and mobile app development called Zeal.
00:01:16.630 A bit of background: I was an actor. For a few of you, this was a show that I did called Mrs. Mannerly. I played 15 of the 16 characters, ranging from a seven-year-old girl to a 65-year-old man. It was a lot of fun and it gives you a sense of some of the things that drive what I do.
00:01:36.630 I also did a really great show called Singing in the Rain where I played the character Don Lockwood. I had to learn how to tap dance—not something I had done before. So for any aspiring actors out there, it might be worth putting on your résumé that you can tap dance, but fair warning if you can't!
00:01:54.280 Here's the cool part: the magic of theater! The whole production was outdoors and on my last night while singing in the rain, it started raining. The audience began to laugh and clap, which made the experience even better. Interactivity is something I value, which is why I encourage you to engage and get away from your laptops for just a few minutes. I promise it will be worth it.
00:02:36.680 Continuing with my acting experience: at the same theater, I played the Lion in The Wizard of Oz. It was an intense head-to-toe polyester suit that I wore during summer, with temperatures averaging 95 degrees and humidity around 30%. I literally sweated through the suit every night! But seeing the joy on the kids' faces when they saw the Lion was immeasurable.
00:03:01.860 On the tech side, you can find me on the internet. I’m on GitHub as cuppie and on Twitter as Adam Cuppy. Feel free to tweet at me—complain, love me, whatever! I genuinely want to interact. If you have any questions, I am an open book in pretty much anything.
00:03:22.230 I actually have a co-presenter today, which is exciting. This individual is really cool, and I was introduced to him not too long ago; his name is Cern Ugh. He is doing an amazing job! You can find him on Twitter, and he will be live-tweeting during this presentation, so keep an eye out for him using the LA Ruby hashtag.
00:03:59.640 Now, the objective today is quite simple. Above everything else, my intention is to bring a little joy to your life in the next half hour or 45 minutes. Engage with me, scientifically speaking, as there’s proof that smiling and interacting actually engages a different center of your brain and brings you joy.
00:04:27.370 I realize that many of us spend a lot of time behind screens, which can disconnect us from others—especially in our line of work. The motivation here is to leave this event feeling motivated to do something positive. Whenever that might be—finding new patterns, discovering something exciting, or even just deciding to look into a video presented here today—whatever it is, do not leave thinking, 'Well, that was what it was.' Find that little motivation.
00:05:06.610 In software engineering, as Mike mentioned earlier, there is an immense opportunity for us to craft great things. This brings me to the topic of the poet. So what is a poet? A poet utilizes metaphor to express the realities of the world around them. They use metaphor as a form of abstraction to explain and express the reality of their observations.
00:05:45.770 This level of abstraction is beneficial in two ways. First, it becomes a declarative methodology, assigning meaning to things. Second, it leaves the imperative details open for interpretation. In this talk, we will explore how this relates to our field and the lost opportunity that exists inside the software development world.
00:06:26.620 Language is powerful—think about turmoil and strife in the world that is often triggered not by actions, but by the language used. Language can be both good and bad. As poets, we have the opportunity to think differently about how we perceive our work and how we express ourselves.
00:07:00.460 At a conference a couple of years ago, DHH made a statement asserting that we are software writers. Back then, many disagreed, believing that we are more than that—we are engineers and so on. But it’s essential to recognize that language is exceedingly powerful. It influences how we think about our work and how we perceive ourselves.
00:07:41.130 I too had reservations about identifying as a 'software writer' until I looked closely into the definition of a writer. It refers to someone who has written a particular text. Take user stories, for example: 'In order to log in as a user, I want to be able to log in.' This does not convey much on its own.
00:08:09.070 However, looking deeper, I found a synonym for 'writer' that resonated with me: poet. A poet possesses special powers of imagination or expression. This idea of 'special powers' makes me feel like a poet, and it is incredibly empowering.
00:08:57.810 To give you context on this, let’s talk about one of my idols: William Shakespeare. Over 300 years ago, Shakespeare wrote a series of texts, including sonnets and plays that are essential to literature. His works tackle human emotions and societal issues, and they remain relevant even today.
00:09:38.355 Shakespeare's use of language is staggering. He has used over 800,000 words in texts, including 1,700 words that had never been used before. As a poet and artist, he created his own forms of expression when the language available to him didn't suffice.
00:10:16.509 It's amazing to note that while Shakespeare wrote some of the most complex situations and fight sequences, he included almost no stage directions. All this complexity—the interactions and battles—was embedded in the text! This style opens a discussion on how we can bring similar creativity to our software.
00:10:51.100 What we get into the domain of is Domain Specific Language (DSL). A DSL comprises defined patterns, a shared vocabulary, and consistent expectations. This framework can significantly enhance communication within development teams, ultimately improving productivity.
00:11:27.180 Some of you may not be the biggest fans of DSLs, and I’m alright with that! However, what we should recognize is the goal: to enhance communication. I prefer to call this 'expressive conventions.' These conventions, in turn, contribute to our productivity.
00:12:17.700 Expressive conventions imply meaningfulness, demonstration, suggestion, and revealing shit. They convey thought or feeling effectively. When these conventions are shared among teams, they streamline communication among engineers.
00:12:51.220 One reason why the term 'expressive convention' is criticized is due to Ruby itself being highly expressive. Many people in the Ruby community, including myself, believe Ruby is an excellent tool for fostering expressiveness in programming.
00:13:23.190 Now, I'm going to transition into an action round! I need four volunteers. We’re going to do something engaging and fun. Let's have a round of applause!
00:14:02.430 Welcome to the LA Ruby Players Club! Today, we will be doing a scene together. Like any play, we need costumes. Let's kick things off! We have some props, including a beautiful hat and a jacket for one of our players!
00:14:55.170 Thank you for being here and participating. For those of you who are not familiar with Shakespeare, women were not allowed on stage back then; every role was performed by men. Theater at that time faced many cultural challenges, but it persevered.
00:15:27.400 Actors received a 'foul paper,' which contained only their lines—nothing else. A common phrase in acting is 'acting is reacting.' My goal is to not just deliver lines but to react to others’ lines and the overall state of affairs.
00:16:05.359 With our players, we've given them their lines today, so they'll have guidance as they perform. I will also portray a character, Tybalt. Remember that actors project their voices as they are presenting to a large audience without microphones.
00:16:53.884 Now the scene begins! The players will express various emotions and actions, so please enjoy as they take the stage!
00:17:38.760 Now let's address the metaphorical conventions used in Shakespeare's work. This is crucial as they showcase abstraction in poetry, allowing us to understand deeper implications. For instance, 'my naked weapon' refers to a sword but also carries suggestive meaning about rivalry.
00:18:22.260 Another example would be Hamlet's famous phrase: 'To be or not to be.' The use of metaphor provides multiple interpretations. Similarly, lines like 'let this world no longer be a stage' showcase the depths of Shakespeare's abstraction.
00:19:19.000 Metaphor is declarative by nature, allowing us to grasp reality and context within the domain of our software. This expressiveness facilitates easier communication between objects and improves interaction. If we couple things too tightly, it can complicate our understanding.
00:20:05.830 Shakespeare leaves clues in his text. For example, if a line breaks meter, it often indicates discomfort or danger, indicating something significant is occurring. Therefore, it’s essential to recognize these nuances while writing code.
00:21:13.600 An example can be found in his use of iambic pentameter, which consists of ten syllables per line with a specific rhythmic pattern. This rhythm cues the audience and actors about significant words and their roles in the stories.
00:22:26.900 The manipulation of meter forms a language with deep underlying meanings. Violating the expected rhythm often signals heightened stakes or conflict, much like how a change in variables affects function in a programming context.
00:23:20.470 Now, we transition to understanding conventions in our professional context. Once we establish conventions and reinforce them, we can adapt those conventions as we iterate and evolve our applications.
00:24:01.510 For example, in Ruby applications, we have established conventions like 'belongs_to' and 'has_many' in Active Record, defining relationships within our database schema. These conventions streamline collaboration.
00:24:50.510 As engineers, it is essential to implement changes while maintaining effective communication about new conventions we may introduce. This iterative cycle allows for innovation while respecting established patterns.
00:25:36.600 In summary, if Shakespeare wrote Ruby, it would imply establishing, reinforcing, and layering conventions in our codebases. It’s crucial not only to know the tools at our disposal but to think about how we can communicate effectively.
00:26:20.710 Language is powerful. The way we define and discuss our software is equally impactful in the long run. Remember these key principles; they guide us in our work, making us capable of significant contributions to our field.
00:27:15.300 I presented this talk earlier at RailsConf, where the focus was much different, but I will ensure these slides get posted. Feel free to reach out if you have any questions; I’m always open to having conversations. Thank you for your time!