 My name is Joe, and I am speaking at Goruco. This is a dream come true, but I don't have a lot of time, so I gotta get right to it. First, I run this company. We're sponsoring the conference, Goruco. If you are great at what you do, then we're hiring. I'm writing this book, it's called The Well-Grounded Rubyist, the third edition, with my good friend and mentor, David Black. And I started writing Ruby a long time ago. I started writing Ruby back in 2007, when we were all still arguing about whether or not Tony died at the end of Sopranos. And programming was different back in 2007. I was being paid to write Ruby, which was amazing, and not many people were. And version 186 was hot off the presses. We loved it, which was a good thing, because we almost didn't get any more after that. Everybody I knew, including myself, had our hopes riding on this company called Twitter, because it was being written in Ruby. We didn't totally know what it was, but we all felt like our own career trajectory had a lot to do with the success or failure of Twitter. And I think we were probably right. This is what Twitter looked like when I signed up. Nobody had come and tried to redefine the word cloud. Goruco wouldn't be out till 2009, so we all just wrote our own deployment. But that was not the worst of it. Every Rubyist wrote their own authentication. That is a pause for a dramatic effect. Every Rubyist, there was no such thing as Warden. There was no such thing as Devise. Melissa Wanish gave a great talk about encryption that could not have been spoken in 2007. We just did it ourselves, till finally, Chad Fowler brought some sanity to the world by writing Rails recipes, which every Rubyist bought, because there was a chapter about how to authenticate your users. Right underneath that, helpfully, authorizing your users. Ruby's future was uncertain, and this was really exciting. We all had this big release, this big Ruby 2 in the sky that was coming someday, probably, but we had a whole bunch more people. It was not just the Japanese language. It was not just an American language. It was never just an American language. There were people from all over the world contributing, and we couldn't quite decide where we were gonna go and how we were gonna get there. We couldn't agree on anything from UTF-8 to concurrency. So Ruby 186 was out. On Christmas Day of 2007, 190 came out, and it was like a lump of coal in everybody's stockings. It wasn't production ready. We knew it wasn't production ready. What we didn't know was that it would be 14 months before a new point release of 19 would come out. In the meantime, we had 187. I talked to Mike D'Alessio about this, and he said 187 felt like a warm hug. That's a nice way to put it, and certainly it shipped with Macs, and so this was big news. This was cool. Unfortunately, it did not work with Rails 2 or Rails 2.1, which were the only ones that were available, and so if you were using Rails, you couldn't use 187. Until Ruby Enterprise Edition came along, which was awesome. It had green threads. It was highly optimized. It ran way faster than 186. It had an unfortunate name. Anybody coming from the Java world with the experience of J2EE did not want to see the words Enterprise Edition after Ruby, but it was a great step in the right direction. Finally, in 2009, we got version 191, things started to get on the right track. 192, 193, finally 20. This was a long time. This took six years. This took from the end of the Sopranos to the start of Rick and Morty for us to go from 186 to Ruby 2, but we didn't care because we made it. Twitter and LinkedIn and GitHub were the darlings of the tech community, and they were written in Ruby. Airbnb, SoundCloud, Groupon, and a dozen other companies you could name were hot on their tail, and they were all written in Ruby. We felt like we made it. And we had speed features community. We had metaprogramming techniques as a first-class citizen. We had better garbage collection. We had a totally rewritten VM by Koichi Sasada. We had rubyquiz.com. Do you understand how cool rubyquiz.com was? Our heroes of the Ruby community would get together, solve little rubyquizes, and post their answers online for all of us to look at how they write code. It was the coolest thing you could think of. Ryan Bates was giving us Railscasts every week, and you could talk to the people who are implementing Ruby every day on Ruby Talk. Yet somehow we went from that unbridled excitement to sheer boredom. I don't know when it happened, but it happened. I think part of it had to do with the fact that we all looked at Ruby as this shooting star that was gonna come out and was gonna topple the big boys. No more Java, no more Python. And I think we had our pride wrapped up in that. You know, it was like, well, if Ruby's so much better than Java and Python, then why are all these people still writing Java and Python? But the fact is Ruby made it. Ruby has its place in the world. It's not going anywhere. The real question is where do you stand with Ruby? And when I ask that question, I get a lot of answers back. The most popular is this one, which I don't like. Well, you know, I really don't like Rails. Well, then stop writing Rails. Stop, just stop doing it today. Ruby is not Rails. You are not at a Rails conference. David H. Hansen will shed zero tears if you leave the Rails community today. The next thing that comes up, and this is frequent is, well, I think that object-oriented programming could be a little bit dangerous. It's over-sharing. There's mutated state. And I think functional programming is the way to go. And oh my God, is that a boring argument. Look, object-oriented programming has been around since the 1960s, and it's not going anywhere. Functional programming has been around even longer, and it's going to bury everybody in this room. Seriously, does anybody here think they're gonna outlive Lisp? I don't even think I'm gonna outlive Haskell. But by all means, you should go learn some functional languages. Dave Thomas told us to go learn a new language every single year. The point is that you should go and learn some languages and then bring them back to your home language. Bring what you've learned back. Go learn every single language on this list, except the ones I made up. And start writing Ruby like it's 2018, which starts with realizing that some of this stuff has been around since at least 2013. Higher order functions, referential transparency, continuations. Look, this has been around for at least five years. You should be doing it. People are doing it. And now if you look at everything that's been coming along since Ruby 2.5 released in Christmas of last year, we've got itself, we've got yield self, which is gonna be renamed to then. We've got currying of procs and methods, and we've got myriad improvements to threads and concurrency. And I'm gonna get to why in a second, but that's writing Ruby like it's 2018. That's taking advantage of what's actually happening in the Ruby community today. And there are people doing it. Here's a whole bunch of projects that are doing just that. They're writing cutting edge Ruby code. These are founded by people who came into the Ruby community, saw Ruby and liked what they saw, saw how most people were using Ruby and said, I think we can do better. And they did. They're doing it right now. You need to check these projects out. How are they doing it? They're employing better practices. They are writing code against boundaries. They are isolating. Hanami is isolating views from templates and it's got class-based controller actions for easier testing. The Celluloid project is, I'm sorry, the ROM project is separating application logic from persistence details. DryRB project has dependency injection. Turns out that was a good idea and we just didn't do it for 10 years. Well, we can start now. Celluloid has fault-tolerant concurrency. Almost all of these projects are making things better and easier to test, which is really important. And strict data types and static typing are here. So why are all of these things happening? Why am I begging you to write Ruby like it's 2018? Well, because, again, we've got this big, great Ruby release in the sky coming. It's called Ruby 3 and it's gonna come soon, we think. It was announced two years ago where halfway to when we think it might be released, it's starting to feel a whole lot like 2007 again. And there are some big promises coming with it. Static typing is one of them. But guess what? That's already here. DRB has dry types. You can check it out right now. On June 1st, Stripe released a beta version of Sorbet. You can go to sorbet.run as soon as I'm done with this talk and check it out for yourself. It's awesome. So that's here. Another thing that's here. Ruby running three times faster has a lot to do with frozen string literals. And everybody that I've talked to thinks that frozen string literals are boring. But it's only boring because frozen string literals, oh, well, they work fine in my app. Well, nobody cares about your 20,000 line crappy little app. What they care about is the fact that every gem, ever written since the beginning of time that's still being used by any project is gonna break. We're gonna make frozen string literals default and we're gonna blow up the entire world of Ruby. Nobody has an answer for how to roll this out. Nobody. Not Yehuda cats, not Matz. But you can, you can suggest, you can get involved. The really big thing, the really big news is Ruby Guilds. Koichi Sasada, who we owe our Ruby Lives to in many ways, is writing Ruby Guilds. He's going to conquer the global interpreter lock. Those are my words. But he's going to conquer this, he's going to abstract it away or conquer it so that we can not just write concurrent Ruby, we can actually run parallel Ruby, multicore processing. We can, we have mutation safe concurrency. These are things that we did not even imagine could be done in 186 and are now being promised today. And that's why when you see things like method currying and all of these advances in functional programming paradigms, this is why. It's because of what's coming. And if you're going to be ready for what's coming, then you need to start using these techniques today. And you don't need to go to another language to do them. You can do them right here in Ruby. To me it feels like we're back in 2007 with our iPod shuffles. We have this great big release in the sky. We are underdogs again. There's a lot of doubt over whether or not we'll get to those great big features that I just mentioned. And here we are chugging along. The fact is that it's exciting. Without the threat of utter failure, none of this would be exciting. So we don't know if we're going to get there. We don't know if there'll be a Ruby 3. And when we get there, we don't know if anybody's going to use it. Just like we were back here. I suggest getting excited about that. I suggest getting yourself involved, getting yourself involved in the conversation, relearning, learning new languages and bringing them back. And strap in, this is a great time to be a Rubyist. Thank you all.