 So today, we're gonna talk about saving Ruby from the apocalypse, and this is the second part of the future of Ruby, the present. So if you're just in her last talk, you saw Justin and Josh take us through kind of the history of the language, and this talk will kind of continue that story. So hello, my name is Jason. You can find me on Twitter. Sometimes I ramble about useless things on my blog. And because I live the dad life now, obligatory family photo, also because they're super supportive in letting me do things like this. So I wanted to give my family a shout out. By day, I'm a senior engineer at a company called Lens Reynolds. I'm just curious who in here is heard of Lens Reynolds. Awesome. For the rest of you, I have a question. You picked up that I probably worked for a rental company, but you're probably confused about what we rent, because that's always the question I get. So I'm gonna pull you. Who thinks that maybe we rent eyeglasses? Maybe camera equipment? We just rent some person's name, Lynn, they're all their shit, we just rent it out. Anybody think that? We're a camera rental company. So if you ever hear me say Lens Reynolds, that's what I'm referring to. Okay, so I just told you we're gonna be looking at Ruby and the present. But today I need your help because I need your imagination. In order to safely look at the present, we've gotta go to the future. And I've been to the future. I've just returned from the year 2020, and things are rough. And specifically, I checked on how you were doing. And honestly, I think it's just better if I tell you your story. So you've just woken up. You're not sure where you are. You think you're in a hospital room, you got an IV attached to you. Your throat's all dry, so you try and call out for a nurse. Nurse, nurse! You cry out, no one makes a sound. Nurse, you scream, but one of the bodies come in the room. So you pull out the remote, and you hit that call button, and you keep hitting it, and you're hitting it. Nobody ever comes. In fact, nothing happens. So you look, and you start to wipe your eyes. And as your sight comes back across the room, you see a couch. And on that couch is your backpack. Right now, it feels like a mile away, your body's weak. But you're excited because, well, that's your backpack. So really one problem is now you've got to get out of bed and get to the couch. So you decide, okay, I'm gonna do this. One, two, three, and you've fallen back on the bed. So discourage, say, okay, I'm gonna do this one more time. So one, two, three, and you're up. So you start the slow walk from the couch, from the bed to the couch. Every step's a little stronger than the last. And you finally make it over there. You grab a seat on the couch and you start going through your bag. Well, you see all the clothes you were wearing last. You see your shirt, see your pants, and then you find your cell phone. Yes, your cell phone. That will have all the answers. So you go to turn it on and it's dead, naturally. Frustrated, you throw it back in the bag and you get dressed. So you make your way out in the hall. You look to the left, you look to the right, and you're in a ghost town pretty much. So you start to make your way down the hall. And as you do that, you hear boom, boom, and the noises get louder and louder. So as you reach into the hall, you see an elevator with the doors open and the booms keep getting louder. The noise is coming from inside the elevator. So you take a peek down in the elevator shaft, scared, but you do it anyway, and you're greeted by zombies. A container of dead-looking creatures slapping their lifeless bodies against the metal walls of this elevator. It's okay until one tries to reach for you. It scares you and you fall over. You get yourself off the ground, take off running to the exit sign. And at this point, you don't know where you are, but, well, it's not where you remember being. So you make your way outside, and in fact, it's just a normal sunny day. Except everything's different. The world seems empty now. So just about a maybe a quarter mile away, you see a road and you say, okay, I'm gonna make my way to that road. As you get closer and closer, you start to hear a car coming. It's loud. You walk out on the street, it sees you, it slams on its brakes. The smoke clears in. It's DHH. And he tells you to hop in, and you say, okay, you get in the car, and you guys take off. So you're riding in the car with DHH, and naturally you're filled with questions like, what are your thoughts on single page web applications? Why should I still use Rails? Do you still think TDD is dead? But instead, you decide to ask the most burning question at the moment. What's going on here? Where am I? He explains that the rest of the world, for the most part, hasn't changed at all. But an epidemic on software developers has broken out. There were too many languages, too many tools, too many libraries, and decision fatigue, if you will, became so bad that developers were unable to cope with being able to select the right tool for the job. They began to slowly lose their brains and turn into zombies. Once this happened, there was no choice but to isolate all the developers. We had to protect society. Afraid and rightfully confused, you ask where he's taking you. And he says, I'm taking you to the only thing you have left. So as you get closer to your destination, David explains that, well, developers decided to form camps all throughout. The camps ended up kind of as silos, PHP camp, Java camps, and well, obviously there's a Ruby camp, and that's where David's taking you. He explains that actually, very few Ruby developers turned into zombies during the outbreak. So in the distance, you see a shiny diamond-shaped object, and it begins to beautifully reflect the sun. And as you get closer, you realize it's the Ruby camp, or a base camp, if you will. You see some smiling faces writing code embracing the expressive, beautiful language that you know and love. Hooray. As you exit the car, David wishes you farewell. You close the door, stand up, take a good stretch, turn around and you're greeted by another familiar face. It's Matt. He shows you around, you get to connect with old friends, meet new ones, and learn to embrace this post-apocalyptic world that you're now a part of. Everyone is so friendly, and it turns out Matt's Be Nice motto applies in the post-apocalyptic world too. It's also possible that that didn't say be nice before the keynote this morning. So you think at this point, well, Hacker News finally got it right. Ruby's dead. But just with every time in the past you've heard this statement, you're confused because, well, you look around and there's tons of people using Ruby Stone. Either way, you're confused, but you're happy to be safe. You grab a bunk, you get a good night's sleep. The next morning over breakfast, you start to ask around. You start hearing these frightening stories of how we know we've made software so complex and we've isolated so much and it's just there's no hope anymore. Every time we think we have a problem solved a new language comes out and it's shinier and it solves our problem. There's just too many choices, all promising something better. So that leaves you with one burning question, is who's gonna fix this? Weeks start to go by, you start to become despondent, maybe a little sad, you miss life as it was before, and you wanna know, well, how can life return to normal? So you put on your thinking face and you say, what can Ruby do to prevent more developers returning into zombies? Well, Ruby itself is already pretty powerful language, what seems to be the problem? You're not really sure, maybe it's time to talk to some others in the group. So over dinner that night, you begin to discuss your plan with a few of your close friends. You ask, can we reverse this? They say, well, we've tried. No one can hear or see us through all the noise that all the other programming languages are making. Everyone is promising the best and well, we just can't do it, we've tried. Disappointed, you let the conversation go on to something else. Eventually you call it a night and decide you'll try again tomorrow. The next morning you ask Matt to go on a walk and he agrees, so you start strolling around the camp. He explains that ever since the outbreak, he's been trying to keep Ruby alive. He actually emphasizes that, well, he doesn't believe Ruby's dead, but he tells you that he can't keep it alive alone, not him or the core team. It requires more and you ask, how can I help? But before you can finish your question, he's called away. How frustrating. You love Ruby and all you want to do is fight for its survival. Others have tried, some are still trying, but it just feels like a wasted effort. So you try and go to sleep that night, lying in bed, tossing and turning, tossing and turning and you say to hell with it. You get up, you go to the campfire and you're just dreaming of a simpler, happier time in Ruby, much like the one you saw in the previous talk. And it hits you, you've got to step up, you've got to be the one to save Ruby. So excited to save Ruby, you decided to take some time to problem solve. I mean, after all, you're a software developer, so you start thinking about the problems at hand. Well, Ruby isn't necessarily the shiniest language anymore. Other programming languages are coming out and they're so popular and they solve all the world's problems. People are kind of being jerks about Ruby on the internet now. And developers are moving on and just abandoning these libraries that we rely on. So you think, okay, before I try to figure out more problems, dig into solution, I want to reach out to other people. I want to go to these other camps and learn what other programming languages have done because surely they've all been in this situation. They're in it right now. So without changing Ruby the language, are there any ideas that I can bring back to the code? Anything that might be introduced, anything I can learn from other languages? So you spend weeks traveling around, trying to find these developers, anyone who will talk to you. You go to the Python camp. You go talk to PHP developers, Java developers. You even talk to .NET developers, Elixir developers, and JavaScript developers. You take some time at each camp to understand the problems that they're trying to solve. And the different approaches they take to solve them. And the thing that you learn is that, well, they're all trying to do good. However skewed some of the approaches may be to you, they're taking what they think is the best approach. Warned out from your time at camp, you try and make your way back home. You've had some amazing conversations and you feel good, but on your way back, you hit the JavaScript zombie and he's trying to turn you with all his frameworks and tools. You get past him safely and you're greeted by the PHP zombie of the past, MySQL Connect. It's so easy to deploy. We don't even have object-oriented programming yet. This is our early 2000s PHP zombie. But finally, you safely return to camp. You're re-energized by all that you've learned and you sit down and you begin to intently focus on these problems. Your problems are that you wanna keep Ruby alive, but you think deeper in that, well, Matt's described to you that Ruby isn't dead. So maybe the issue isn't that we need to keep Ruby alive, but rather you need to keep Ruby relevant. Okay, that seems more like it. So you identify five problems specifically. First, people talking shit about Ruby. Rather than celebrating pros, people are shouting cons. So if taking action or being the change that people wanna see, they're just ranting, throwing it online and bailing. You see that familiarity breeds contempt. Several people using Ruby before the apocalypse started to find it boring. No longer excited to use it, they just gave up on it. In this future, you also see that libraries are going unmaintain. A scroll through GitHub finds many of these once thriving libraries now abandoned, racking up GitHub issues and making all of our applications forced to become legacy applications. And that, new libraries aren't appearing either. No new ideas are coming in, and people decided it was just best to change, chase these new languages. And finally, this leads to the less products are being built with Ruby. Less people are building products with Ruby, the less Ruby jobs exist. The less relevant Ruby is. So now that you've identified the problems, it's time to talk to the camp. You say, okay, let's look at some ideas on how we can keep Ruby relevant. You said we can talk about Ruby more. Years ago, the internet was filled with articles discussing problems that people solved with Ruby. Now a lot of those articles collect dust. People are talking about leaving Ruby for X, and those discussions, whether fair, they don't help, and that's how we ended up in a mess like this. You challenge everyone to start share what they're learning, any new tricks they learn. Even if you think they're silly, you still share them, because you're excited about them. You challenge people to learn new ideas. You challenge them to look at other programming languages, learn them, learn what they're useful for, and see if there's not any concepts that you can bring back for your own code. You share that there's a lot we can learn from each other, even outside of our own community. Continuing through your solutions to the camp, you bring up once popular libraries now abandoned, and you encourage people to start digging into them. You encourage people to build new libraries. Things change, we have new ideas, new ways to do things, and you encourage everyone to do this. If they don't like the way something is done, write it how they think it should be. Continue to evolve Ruby code by writing Ruby code. And finally, you encourage some of the teams to start building new applications with Ruby. Even if they're not successful, there are some that are, this is successful ones create jobs for Ruby. So armed and ready for battle, your team gets to work. They start writing blog posts, everything they've learned, everything. Oh my God, it's really happening. Okay, so people are blogging about things they learned with Ruby, new tricks they've learned, and the problems they're solving with it. Teams are forming, going out to other camps and learning about how they can solve problems. Eager to learn from others, they've made their way out into unfamiliar terrain in search of growth and new ideas. Libraries, once abandoned, are finding new life from everyday developers like you. Issues are being closed, pull requests are being merged, and people are upgrading their applications, but instead of painful tears, they have tears of joy. People tired of complaining have started to build new libraries with Ruby. They're solving problems with code, improving the ecosystem of Ruby as a whole. The more entrepreneurial types are building products and systems to solve problems. Yeah, this is super uncomfortable. Well, I guess I'm just gonna stand here, and that's a good point. Man, this is uncomfortable. False alarm, all right. Let's back up a little bit then, because I have lost my train of thought. Is that cool? Are y'all good with that? All right. So our libraries, once abandoned, are finding new life from everyday developers like you. Issues are being closed, pull requests being merged, and people are upgrading their applications. People tired of complaining are now building these new tools in libraries. They're solving problems with code, and alongside that, they're improving the Ruby ecosystem as a whole. People are building products and systems. More products require more work, and more work means more Ruby jobs. And people are finally enjoying Ruby again. Others who preach systemized are seeing a renaissance of a language, though never dead appeared stale. Other communities have taken notice, now recognizing Ruby is a relevant language. The world begins to find balance. As developers start to stop turning into zombies, but rather just normal people solving problems with the language they loved. Our silos and camps begin to disbar, and it's safe for Ruby developers at least to enter the world again. Pieces abounded, and software, though, as usual, it won't be the same. So with that absurdly ridiculous story in place, I do wanna talk about the present state of Ruby. And I wanna pose this question, is Ruby dead? I'm always the first to admit that when I see articles like this, I start to believe them because I'm like, oh, it's right, I need to abandon, I need to start looking for a new job, it's time to learn Elixir, it's over. But I started reading those years ago, and I still have a Ruby job, and I still get to come to a conference with many other Ruby developers. So I don't think Ruby's dead. But I do wanna look at something that I'm not ashamed to admit, maybe I don't know as much about as I should. Was anybody familiar with the hype cycle? Okay, so if you're not familiar, I'm gonna give you a very non-official JSON definition of it. According to this, there are any successful technologies goes through these five phases commonly. The first is the technology trigger. This is when a technological idea, maybe a proof of concept, enters into the world. The second is the peak of inflated expectations, and that's the point where people start to believe whether they're right or wrong, that this will solve all the problems. This is hot shit. Third is the trough. Probably said that wrong, but that's what YouTube told me how to pronounce it. The trough of disillusionment. This happens when all those expectations aren't met. People are like, oh, this didn't solve my problem. Fourth is the slope of enlightenment. This is kind of the defining moment in my naive opinion of if a technology is gonna make it or not. This phase is, when the technology has, fourth is the slope of enlightenment. Fourth is the slope of enlightenment. This is the defining moment, oh, not again. In my opinion of a technology, I'll make it or not. This is when people start to actually weigh the pros and cons and make a more justified decision on using a technology. And then there's the plateau of productivity, and this is when things start to bounce out, and the people that know they need to use this technology are using it. They know it's the right tool for the job. So now that we have that wild definition, let's look at that in terms of Ruby, the technology trigger. I should also clarify that I didn't get into Ruby 2012, so I may not understand this at all. But I like to think of this as when Matt's release, sometime in between when Matt's release Ruby in 93 and when Rails came out in the mid-2000s. Somewhere in there I like to think of that as really the technology trigger for Ruby. The peak of inflated expectations. Ruby is the object-oriented language that would rule above all. It's shiny, it makes developers happy. All these people are talking about it. Ruby, Ruby, Ruby, Ruby. Disillusionment. Oh, Ruby's too slow, it's just a toy language. Well, the language didn't solve those people's problems, but I don't know that they maybe ever claimed to solve those people's problems. Slope of enlightenment. We know what we can get from Ruby, we know its weaknesses, and businesses are building all kinds of apps with Ruby. It's been adopted. And then finally, Ruby's mature. And that's why I think we are today. I think we're on this plateau. And many of us, well, probably all of us, use Ruby every day. It's one of my main tools. And to me, there's not much to talk about Ruby per se anymore, but I still love to share about it. We have everything we need and we're getting work done using Ruby. So with that said, is Ruby dead? No. I feel so strongly about it, I made a website for it. Isrubydead.com. Next time you're not sure, I'll keep it updated. So just because Ruby isn't dead doesn't mean that we don't have to fight for relevancy. So what are some ways we can keep Ruby relevant? Well, you already know how to do that because you saved the world earlier. Talk about Ruby more. Learn some new ideas. Help maintain abandoned libraries. There are two specific examples I can give you of this right now. The first one is this talk is online. It's Richard Schneemann at RailsConf 2016 talking about how he became the maintainer of Sprockets. When you were sitting in that talk, like I was, it was a wild first three minutes and you did not know what was going on, but it's really good. The next is an article that was actually just in Wired Magazine that about Justin Searles who was just up here, about him taking responsibility for RSpec Given after the passing of Jim Wiredrick. So we know where these libraries are. We know when they start to feel stale or haven't been updated in a while. Anytime we introduce one at work, I always look first when it's the last commit. Build new libraries. When you learn new ideas, do you think you have a better way to solve a problem? Just make it a gym, share it with the world. Even if it doesn't become the next big thing, it might help someone else and that helps keep Ruby relevant. Build the next Rails if you feel like you need to. Build new products with Ruby. You might be thinking, oh, I'm not really one that wants to build a product and sell it, but if you are, if you build a successful product, which is really hard, but if you build a successful product, you create more jobs with Ruby and more Ruby jobs mean that this influx of junior developers we have can start getting jobs. Ruby can stay relevant, Ruby can continue to grow. And I'd like to add one more. Teach people Ruby. There's a lot of times I have friends who ask me, how did you get into programming? Well, I just stumbled upon it. I am a college dropout because I'm really bad at math. And Ruby, it like, it means a lot to me and so I want to share that with my friends who want to learn it. So you ask Jason, why do you care so much? Spend time with me and you'll learn that I really love this language. There's a lot of reasons, but mostly is that it literally changed my life. Like I said, it wasn't, I was a college dropout. It wasn't until I was in college in computer science that I knew I wanted to be a programmer and Ruby helped me bridge that gap from being a college dropout to full-time employed senior software developer. It made these complex things more approachable for me. And the thing is, I know I'm not alone. I've talked to many people in this community and they have similar experiences like mine. Is Ruby perfect? No. But I'd be lying if I didn't say it still doesn't bring me joy to use every day. It makes solving certain kind of boring problems fun for me. It's a point now where it's mature, battle-tested, stable, and it may not be the shiny hip tool, but it doesn't mean that it's irrelevant. At the end of the day, a programming language is more than just the language itself. It's the entire ecosystem around it. So when I say ecosystem, I mean, it's the community. It's the tools we build, it's the libraries. It's the type of problems we're trying to solve. Just because we don't have commit access to Ruby, or at least I don't, doesn't mean that we can't make a difference. So next time you think Ruby is dying, see if there's a way maybe you can do your part. Like I said, you can find me on the internet here. I have stickers for GoRails. My buddy Chris Oliver sent me with. And stickers for Prompt. If you don't know what either of those two things are, come see me. I'm super shy, so if you come talk to me, then I will not stop talking to you. And thank you. And also, thank you for clapping, so I didn't have to use this slide.