Saving Ruby from the Apocalypse
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Charnes, Jason
You've just woken from a coma to find out that Ruby has fallen victim to the programming apocalypse. Walkers have taken over the programming world looking to infect any developers they can find. Posing even more of a threat are the other survivor camps such as Java and PHP all fighting to survive by any means necessary. After reuniting with the Ruby Community, it's time to fight for survival. Ruby developers who remained safe in the post-apocalyptic Ruby community need a leader to keep the community together and keep the language thriving. Are you willing to step up to keep Ruby alive?
 So today we're going to 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 and letting me do things like this. So I wanted to give my family a shout out. By the 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 going to pull you. Who thinks that maybe we rent eyeglasses? Maybe camera equipment? We just rent some person named 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 going to be looking at Ruby in the present. But today I need your help because I need your imagination. In order to safely look at the present, we've got to 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've 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 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 going to do this. One, two, three. And you've fallen back on the bed. So discouraged. You say, okay I'm going to 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. You 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. 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 going to 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, 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? And 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 in Epidemic 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, he asks 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 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 shape 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 Miley face is writing code and embracing the expressive beautiful language that you know and love. Hooray. As you exit the car, David wishes you fare well. 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. One 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 still. 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 going to 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 want to 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. Line of bed, tossing, turning, tossing, 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 decide 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. Warn 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. My SQL Connect, it's so easy to deploy. We don't even have object-oriented programming yet. This is our early 2000 PHP zombie. But finally, you safely return to camp. You're re-energized by all that you've learned. You sit down and you begin to intently focus on these problems. Your problems are that you want to keep Ruby alive, but you think deeper in that, well, Matt subscribed 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 taking action or being the change that people want to see, they're just ranting, just 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 decide 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 show 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. You encourage people to start building 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, encourage some of the teams to start building new applications with Ruby. Even if they're not successful, there are some that are. The 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 to 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 and 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 going to stand here. 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? You 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 and 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 systemize 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. This is abounded, and software, though, is usually, it won't be the same. So with that absurdly ridiculous story in place, I do want to talk about the present state of Ruby. And I want to 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 is dead. But I do want to look at something that I'm not ashamed to admit maybe I don't know as much about as I should. Is anybody familiar with the hype cycle? Okay. So if you're not familiar, I'm going to give you a very non-official JSON definition of it. According to this, there are any successful technologies that 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 a 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 going to make it or not. This phase is when the technology has- Fourth is the slope of enlightenment. This is the defining moment- Oh, not again. In my opinion, if a technology will 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. 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. 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 will rule above all. It's shiny, it makes developers happy, all these people are talking about it. Ruby, Ruby, Ruby, Ruby. Disillusionment. Ruby is 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 claim to solve those people's problems. Slow 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 about Justin Searle, who was just up here, about him taking responsibility for RSpec Given after the passing of Jim Wired. So we know where these libraries are. We know when they start to feel stale or haven't been updated in a while. Any time 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 you 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 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. I'd like to add one more. Teach people Ruby. A lot of times I have friends who ask me, how did you get into programming? Well I just stumbled upon it. I'm a college dropout because I'm really bad at math. And Ruby, 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 it's that it literally changed my life. Like I said, 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 at 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 program in the 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 Go Rails, 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.
 So today we're going to 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 and letting me do things like this.  So I wanted to give my family a shout out.  By the 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 going to pull you.  Who thinks that maybe we rent eyeglasses?  Maybe camera equipment?  We just rent some person named 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 going to be looking at Ruby in the present.  But today I need your help because I need your imagination.  In order to safely look at the present, we've got to 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've 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 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 going to do this.  One, two, three.  And you've fallen back on the bed.  So discouraged.  You say, okay I'm going to 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.  You 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.  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 going  to 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, 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?  And 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 in Epidemic 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, he asks 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 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 shape 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 Miley face is writing code and embracing the expressive beautiful language that you  know and love.  Hooray.  As you exit the car, David wishes you fare well.  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.  One 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 still.  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 going to 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 want to 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.  Line of bed, tossing, turning, tossing, 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 decide 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.  Warn 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.  My SQL Connect, it's so easy to deploy.  We don't even have object-oriented programming yet.  This is our early 2000 PHP zombie.  But finally, you safely return to camp.  You're re-energized by all that you've learned.  You sit down and you begin to intently focus on these problems.  Your problems are that you want to keep Ruby alive, but you think deeper in that, well,  Matt subscribed 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 taking action or being the change that people want to see, they're just ranting,  just 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 decide 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 show 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.  You encourage people to start building 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, encourage some of the teams to start building new applications with Ruby.  Even if they're not successful, there are some that are.  The 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 to 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 and 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 going to stand here.  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?  You 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 and 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 systemize 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.  This is abounded, and software, though, is usually, it won't be the same.  So with that absurdly ridiculous story in place, I do want to talk about the present  state of Ruby.  And I want to 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 is dead.  But I do want to look at something that I'm not ashamed to admit maybe I don't know as  much about as I should.  Is anybody familiar with the hype cycle?  Okay.  So if you're not familiar, I'm going to give you a very non-official JSON definition of  it.  According to this, there are any successful technologies that 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 a 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 going  to make it or not.  This phase is when the technology has-  Fourth is the slope of enlightenment.  This is the defining moment-  Oh, not again.  In my opinion, if a technology will 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.  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.  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 will rule above all.  It's shiny, it makes developers happy, all these people are talking about it.  Ruby, Ruby, Ruby, Ruby.  Disillusionment.  Ruby is 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 claim to solve those people's problems.  Slow 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 about Justin Searle,  who was just up here, about him taking responsibility for RSpec Given after the passing of Jim Wired.  So we know where these libraries are.  We know when they start to feel stale or haven't been updated in a while.  Any time 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 you 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 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.  I'd like to add one more.  Teach people Ruby.  A lot of times I have friends who ask me, how did you get into programming?  Well I just stumbled upon it.  I'm a college dropout because I'm really bad at math.  And Ruby, 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 it's that it literally changed my life.  Like I said, 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 at 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 program in the 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 Go Rails, 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.
Saving_Ruby_from_the_Apocalypse_0_47.png Saving_Ruby_from_the_Apocalypse_48_131.png Saving_Ruby_from_the_Apocalypse_132_287.png Saving_Ruby_from_the_Apocalypse_288_791.png Saving_Ruby_from_the_Apocalypse_792_839.png Saving_Ruby_from_the_Apocalypse_840_1055.png Saving_Ruby_from_the_Apocalypse_1056_1643.png Saving_Ruby_from_the_Apocalypse_1644_2099.png Saving_Ruby_from_the_Apocalypse_2100_2435.png Saving_Ruby_from_the_Apocalypse_2436_2807.png Saving_Ruby_from_the_Apocalypse_2808_4859.png Saving_Ruby_from_the_Apocalypse_4860_5963.png Saving_Ruby_from_the_Apocalypse_5964_6011.png Saving_Ruby_from_the_Apocalypse_6012_6059.png Saving_Ruby_from_the_Apocalypse_6060_7259.png Saving_Ruby_from_the_Apocalypse_7260_7403.png Saving_Ruby_from_the_Apocalypse_7404_7499.png Saving_Ruby_from_the_Apocalypse_7500_7883.png Saving_Ruby_from_the_Apocalypse_7884_10067.png Saving_Ruby_from_the_Apocalypse_10068_10655.png Saving_Ruby_from_the_Apocalypse_10656_11255.png Saving_Ruby_from_the_Apocalypse_11256_12623.png Saving_Ruby_from_the_Apocalypse_12624_12851.png Saving_Ruby_from_the_Apocalypse_12852_13223.png Saving_Ruby_from_the_Apocalypse_13224_14231.png Saving_Ruby_from_the_Apocalypse_14232_15215.png Saving_Ruby_from_the_Apocalypse_15216_16811.png Saving_Ruby_from_the_Apocalypse_16812_16931.png Saving_Ruby_from_the_Apocalypse_16932_22595.png Saving_Ruby_from_the_Apocalypse_22596_22943.png Saving_Ruby_from_the_Apocalypse_22944_23963.png Saving_Ruby_from_the_Apocalypse_23964_24311.png Saving_Ruby_from_the_Apocalypse_24312_25787.png Saving_Ruby_from_the_Apocalypse_25788_26255.png Saving_Ruby_from_the_Apocalypse_26256_35267.png Saving_Ruby_from_the_Apocalypse_35268_35627.png Saving_Ruby_from_the_Apocalypse_35628_36071.png Saving_Ruby_from_the_Apocalypse_36072_38783.png Saving_Ruby_from_the_Apocalypse_38784_41399.png Saving_Ruby_from_the_Apocalypse_41400_41483.png Saving_Ruby_from_the_Apocalypse_41484_41651.png Saving_Ruby_from_the_Apocalypse_41652_41675.png