Metaprogramming

Summarized using AI

There's Nothing . new under the sun

Justin Searls and Josh Greenwood • November 28, 2017 • New Orleans, LA

The video titled "There's Nothing New Under the Sun" presented by Justin Searls and Josh Greenwood at RubyConf 2017 explores the future of the Ruby programming language by revisiting its past. The talk emphasizes the need for Ruby developers to reflect on the reasons for choosing Ruby and how those reasons have evolved over time. Key points discussed include:

  • Ruby's Evolution: The presenters discuss how Ruby's popularity has changed over the years, influenced by frameworks like Rails and emerging languages such as Elixir and Rust.
  • Personal Journeys: Both speakers share their stories of how they came to Ruby, highlighting the community's values and enthusiasm surrounding the language.
  • Community Reflections: Searls and Greenwood emphasize the importance of rediscovering the foundational aspects of Ruby that drew developers to the language originally.
  • Historical Insights: The talk references significant moments from past Ruby conferences and important speakers, underscoring timeless lessons and practices that continue to resonate within the community.
  • Call to Action: The talk concludes with a plea for the Ruby community to remain engaged and open to collaboration, ensuring that the spirit of Ruby's creativity and programmer happiness continues to thrive.

By analyzing the community's historical context, Searls and Greenwood hope to inspire present and future Ruby developers as they navigate modern programming challenges and opportunities. The takeaway reinforces the idea that revisiting Ruby's history is crucial for shaping its future, encouraging developers to actively participate in upholding its values and practices.

There's Nothing . new under the sun
Justin Searls and Josh Greenwood • November 28, 2017 • New Orleans, LA

There's Nothing.new under the sun by Justin Searls and Josh Greenwood

Quick: say something about Ruby that hasn't already been said.

Not easy, right? This community is prolific. In thousands of talks, Ruby's story has been told and retold. We heralded programmer happiness, path of least surprise, and confident code. We unleashed metaprogramming (until we tamed our DSLs). We built apps, tested them to death, and then legacy-rescued them.

What's left to say? We could tell the same stories again, but that wouldn't be very DRY. What we need to hear was often said years ago, so this talk will help us rediscover timeless lessons from our community's greatest hits.

RubyConf 2017

00:00:10.559 All right, settling down. This presentation is titled "There's Nothing New Under the Sun." It is the first in a three-part series that you're experiencing called "The Future of Ruby."
00:00:18.310 So, let's hear a little bit about Ruby's future. In the future, Ruby will become more popular with more implementations, more programmers using it, and more machines with it installed by default. There will be more people writing blogs about it, and there will also be more people reading blogs about it.
00:00:30.759 I know this sounds crazy, but you have to trust me because I'm keynoting. Back in 2008, Chris Matt from GitHub told us a little bit about what the future of Ruby would be like.
00:00:41.859 This presentation is about Ruby's future, part one: the past. At the heart of all of my talks presented to Ruby conferences, I constantly ask the question, "Why do we choose Ruby?" I believe we need to continuously reevaluate this and come up with good answers. To be honest, that answer has evolved over time.
00:01:08.320 For example, if you picked up Ruby before 1998, you probably knew Japanese. If you started learning Ruby in 1998, you were literally Dave Thomas—not that Dave Thomas, mind you, but the one who wrote "The Pragmatic Programmer" with Andy Hunt.
00:01:22.150 If you came to Ruby before 2005, you were likely really into extreme programming and test-driven development. In 2005, it was all about Rails, and that remained the case in 2008 and 2012. If you're learning Ruby today for the first time, it's likely because your manager was a big fan of Rails back in their day, but that simplifies things a little bit.
00:01:46.240 Allow me to share my perspective. I first came to Ruby in 2005 while working through Kent Beck's "Extreme Programming" book, learning test-driven development and loving it. I was primarily writing Java, which meant a lot of XML and curly braces, and I wasn't getting much done. I also wrote a lot of PHP, creating thousands of lines of code that I had no hope of maintaining.
00:02:03.370 During that time, I studied in Japan, where my Japanese friends were genuinely excited about Ruby's gaining worldwide notoriety. Now, if I were to ask someone in 2017 why they choose Ruby, I'd hear they have perfectly suitable web frameworks for PHP and Java. Microsoft with .NET has embraced open-source, and most people learning programming now are handed Node and React by default instead of Rails.
00:02:33.140 Elixir and Elm have also gained a lot of momentum. For functional programming, there are options like Closure. PLT nerds love Rust, and others have turned to Go. Therefore, this talk is really a retrospective. I want to discuss the things that originally drew people to Ruby because rediscovering that will help guide our future.
00:03:04.130 However, digging into this topic sounded like a lot of work. There are over two thousand Ruby talks on Concretes alone, and soon this will also join them. In fact, I needed some help.
00:03:22.970 So, as an employer, I pulled a "Mystery Science Theater 3000" move and locked one of my colleagues in a room for three months to do nothing but watch Ruby talks. His name is Josh Greenwood, and he entered the Ruby community a bit later, around 2012.
00:03:37.310 At that time, Rails was the default web framework choice in the industry. In many ways, we had reached a point of maturity with books like Sandy Metz's on object-oriented design gaining a lot of steam and attention. It was also right after Rails shipped the asset pipeline, which finally solved the JavaScript packaging problem.
00:04:01.190 Additionally, it coincided with the peak of the 'Great Coupon Wars', where everyone I knew in Ruby worked at either Groupon or LivingSocial if they weren't already working at GitHub.
00:04:13.540 So, I'd like to welcome Josh to the stage.
00:04:21.699 Thank you so much for having me! I'd like to share a little bit about my naive plan. I thought I'd go back and watch the RubyConf videos from the first couple of years. What Justin failed to tell me is that they didn't actually start recording those until 2007.
00:04:33.490 That was a bummer, so I thought I'd check out some early versions of Ruby and see if I could get those to compile, which did not go well for me.
00:04:40.690 Finally, I got frustrated and thought, where does the Internet store all its most valuable knowledge? Well, Twitter, of course! So, I tried to see what DHH was saying when he first announced Rails. Alas, you might think, 'Twitter was not around back then,' and you'd be right, so I was clearly missing some context that might also be relevant to others.
00:05:11.080 Today, my goal is to share some blog posts, talks, exercises, and conversations we had within the Ruby community. We are trying to unearth what drew people to Ruby in the first place because our aim is to reflect on various aspects that made all of us fall in love with Ruby and its community.
00:05:21.820 We want to continue making it the awesome language ecosystem that it is so that we can thoughtfully discuss where we want to take it from here. As a result, this talk is not an entree; we will not be presenting grand rhetoric to convince you of something. Instead, these are mere appetizers showing some of our favorite talks, blog posts, and ideas from the past.
00:05:51.400 So please don't worry over individual URLs or anything. I’ll be posting a blog shortly after this talk that will include sources for everything we reference.
00:06:11.199 Without any further ado, let's sit back and let Josh show us what he’s got. Let’s start at RubyConf Orlando in 2008, when Matz was speaking.
00:06:18.180 "Why do we choose Ruby?" Now, everyone has their own independent reasons for choosing Ruby, but for me, it's simple: it is my beloved masterpiece.
00:06:38.940 Just because we raise our hands in this conference, does that mean we are not interested in Ruby itself? Yes, this is Ruby conference, and love is a great power behind Ruby. It is the very reason people choose Ruby.
00:06:54.389 I think I believe I love people using Ruby, and I love people who love Ruby. I love you all!
00:07:10.620 Matz said that this acronym embarrasses him, but Matz is nice, and so it’s important for the Ruby community.
00:07:28.919 He set the tone as the language designer, and you don’t see many language designers giving keynotes like that right? That kind and welcoming spirit is one of my favorite things about Ruby.
00:07:41.759 Now let's jump to Scotland RubyConf in 2011 when our friend Chad Fowler spoke.
00:07:55.750 "Who here is in the service industry?" Actually, you’re all in the service industry. Everyone who didn’t raise their hand is wrong. Give those next to you a funny look! Our jobs are to be like adventure tour guides for our customers to take them into scary places.
00:08:19.070 Our goal is to let them feel the thrill of whatever it is we are doing, not to treat them like idiots or put them in an isolated space where they can't mess anything up. We should allow them to get as close as they can to the edge and make it safe for them.
00:08:40.128 Everyone else at this conference is referring to Cory Haines. Here’s a recent tweet from him contemplating what practices would constitute essential practices for modern software development. You're probably thinking unit testing, source control, etc. Somewhere along the line, he shared the experience he had with a Lexus dealership, where they did ten minutes of work to save you one minute of your time.
00:09:16.780 From this, I learned the most important goal I have in my new job is to eliminate cynicism and asceticism wherever I can. Instead, I want to focus on fixing things rather than languishing in cynicism.
00:09:40.500 One of the tips from Dave and Andy in "The Pragmatic Programmer" says to always answer every email that you receive. This might sound trivial. Still, it has resonanced deeply with me. When you’re someone like Dave, you're inclined to respond to these emails, and that's one of the reasons I emailed him initially.
00:10:03.780 When we emailed him to ask about the early Ruby community in the West, he told us that while there was a mailing list that was primarily in Japanese, English speakers were encouraged to post, and discussions often happened purely in code. Someone would post a broken test, and one of the maintainers would either correct the test or Ruby itself.
00:10:43.640 This connection eventually led to me asking Matz for permission to write a book, which he was enthusiastic about. He helped tremendously by answering numerous questions and even changing languages or libraries when I found edge cases.
00:11:06.410 That book, by the way, is the pickaxe book, a reference and guide for anyone using Ruby throughout the mid-2000s. It was published at the end of 1999 and led to the first international Ruby conference the following year in Florida, where about 30 to 40 people, including folks from Japan and Europe, attended.
00:11:29.650 So, the moral of the story is, if you ever need help, just email Dave Thomas, and he’ll reply.
00:11:54.840 Let's jump to 2007 when Ryan Bates began producing RailsCasts. This is a great resource for anyone who got through their first job. This is when Rails 2.0 comes in very handy, introducing a new rake task called DB migrate, which creates the database for your current environment.
00:12:19.840 There were many new additions to migrations in Rails 2 that saved us lots of time. Also, T.timestamps adds created_at and updated_at columns to our tables, which Rails assumes you want by default. I often find myself wishing Rails would add timestamps by default, so I wouldn't have to remember it each time during the first month.
00:12:49.180 Often, people in the community have voiced concerns that Rails is too magical, but if you were genuinely engaged in the Ruby and Rails communities, you would notice that the resourcefulness available in RailsCasts explains most things. It's valid to say that Ruby's dynamism and rapid change left much tribal knowledge unencoded, resulting in the need for local meetups and regional conferences.
00:13:32.820 Ruby has more local meetups and regional conferences than any other programming language, as the way the language and libraries are structured demands communication and collaboration, something I believe is special.
00:13:49.640 In 2004, a blog post titled "Torta Babbles" was written by Steve Yeager, discussing how Ruby took the best elements of string processing and UNIX integration from Perl, while also incorporating the best of list processing from Lisp, object-oriented design from Smalltalk, and iterators from CLU, ultimately blending everything so well that you hardly notice what it includes.
00:14:48.030 I learned Ruby faster than any language out of the 30 or 40 I had encountered. It took about three days before I felt more comfortable using Ruby than I was with Perl after eight years.
00:15:09.110 One standout feature of Ruby is that it offers many capabilities without imposing strict rules on developers regarding their application. While this makes it potentially dangerous, it also instills trust in developers, allowing them the freedom to express themselves.
00:15:47.250 Next up is Melton West Ruby in 2008 with Giles Boquete speaking. A hallmark of Ruby is its meta programming. However, what we often do isn't really meta programming; it's more about meta object-oriented programming. When you add a method to an object and give it parameters, it seems like magic.
00:16:21.120 Let's say I have a method named foo; if I change its definition, I'd have to change it everywhere it's referenced. That showcases the importance of maintaining clarity in programming.
00:16:47.540 It’s impressive how easily Ruby supports dynamic programming. I’ve written code that generates other programming languages, and it’s fascinating that before Rails, code generation was one of the core use cases.
00:17:06.560 In 2012, Gary Burnett presented "Code Mash," talking about how Ruby lacks bare words without defining a specific method to transform inputs into outputs. This, however, reflects how powerful Ruby truly is.
00:17:34.310 Reflecting back, Ruby stands out as a powerful language offering incredible flexibility despite its sharp edges. In that email from Dave Thomas, he shared what it was like getting started with Ruby back in 1998, involving lengthy file transfers and configurations that make modern directory management tools a marvel.
00:18:06.210 During the early days, learning Ruby required a lot of effort, but once you fell in love with it, it felt like a revelation after working extensively with C, Java, and Perl, Ruby seemed leaps ahead.
00:18:42.110 Chad Fowler recalls the distinct differences between the Ruby world and the Rails world. When Rails emerged, developers gravitated towards Ruby, treating it as a powerful tool for web development.
00:19:00.780 DHH's keynotes at conferences demonstrated enthusiasm, showcasing innovations that Ruby brought to web development and the sense of community surrounding it.
00:19:36.750 As Ruby development became more mainstream, the focus shifted towards solving urgent needs in web applications, leading to a surge in development methodologies like Agile.
00:20:00.610 Ruby on Rails became a crucial educational component for many developers, where agile practices transformed how software was written and structured.
00:20:32.110 In 2014, Sandy Metz emphasized making small components through good design principles, showing how simple changes could lead to greater clarity in code.
00:21:09.320 Throughout the years, we’ve seen Ruby adopt various programming paradigms, from object-oriented to functional. Jessica Kerr exhibited how functional programming allows us to think more abstractly, especially in larger applications.
00:21:44.050 The Ruby community has contributed significantly to the evolution of unit testing, showing dedication to improving code quality. As developers embraced Ruby, they inadvertently began adopting better software practices seen in the community.
00:22:18.290 Creating a deeper understanding of testing revealed that the Ruby community encourages developers to pursue clarity in their code, enhancing productivity and satisfaction.
00:22:52.150 Jumping back to the Ruby conf in 2007, the introduction of Heroku revolutionized the deployment process for Rails applications and set new expectations for ease of use. It demonstrated how the development process could be significantly simplified.
00:23:27.350 Looking at the trajectory of Ruby, we see how the community and language shaped experiences for developers, facilitating conversations that have tackled the complexities of modern software development over the years.
00:24:02.190 Through various conferences, we've seen thought leaders emerge, sharing insights on design principles that align with the Ruby philosophy, emphasizing beauty, clarity, and intentional design.
00:24:35.820 Whether celebrating metaprogramming or appreciating the language for its elegant syntax, the Ruby community has continuously fostered a welcoming space for developers to collaborate and innovate.
00:25:10.840 As we look ahead to the future of Ruby, it’s essential to keep the spirit of creativity alive in our community, building upon the timeless lessons we've learned while also innovating as we move forward.
00:25:50.910 The vast landscape of Ruby continues to evolve, inviting new voices to join the conversation and encouraging exploration into what makes programming joyful.
00:26:50.160 We appreciate your participation in this journey, and we encourage everyone in this room to actively engage with the materials discussed and reflect on your journey with Ruby.
00:27:23.540 Thank you for being a part of this incredible community, and we look forward to what the future holds for Ruby together.
Explore all talks recorded at RubyConf 2017
+83