00:00:00.080
This is our last speaker. I’m going to be really quick; he is Bozhidar. I think all of you should know who he is, so I'm not going to say anything else. Based on what you’ve seen, it's going to be pretty interesting, and he will expect your participation. So let's welcome him!
00:00:27.920
Okie dokie, let’s get this party started! Do you still have energy for another talk? That’s good! So, I've done this talk zero times, and I've practiced it zero times. I have absolutely no idea how much time I will need. I’m pretty sure I’ll do faster than JLo, but no promises! I do promise you that it will be worse than any other talk today, but it will be more fun, so I'll try to reconcile those things because it’s not always easy. While I'm getting into the right state of mind just before the talk, I realize that I’m running very low on energy. Fortunately for us, this is Bulgaria, and we carry liquid energy with us everywhere! I'm going to ask all of you who feel either tired, bored, or are just entertained to come up to the stage and participate in the most Bulgarian thing you can do in the whole world. Now we are starting for real! Oh, I told you cheers—cheer with us! Go, go, go! Don't be shy! Ruby is all about friendship!
00:02:20.280
It’s really interesting when you’re the last speaker—throughout the day, you’re thinking, ‘Everyone worked so hard on their presentations, and I didn’t.’ This makes me feel a little and at the same time gives me the opportunity to improve and plug items from everything I learned during the day into my own presentation. In an attempt to be competitive, I regenerated my entire presentation using ChatGPT just 15 minutes ago, and I think you’ll love the results! Because I'm expected to say something about RuboCop in every presentation, it actually had its birthday this past Monday, April 21st. This is when I released RuboCop 0.0.0 because it was a complete zero back then. Now, 13 years later marks a critical age for every software project and it's still kind of strong.
00:03:37.640
On Tuesday, RuboCop broke into the top 60 most downloaded gems in the entire history of Ruby, with half a billion downloads. However, I’m afraid I don’t have only good news today. So, um, are there Italians here? Do you know what this is? Yes? And do you know where I was supposed to be today? In my advanced age, I had started to forget things and I booked a vacation with my wife—a hiking trip for a week in the Dolomites. Then, I realized it coincided with Balkan Ruby. I risked my life to be here because my wife is a very dangerous person. But, it seems she’s having fun; she sent me this picture about an hour ago.
00:04:10.040
Let’s see who of us is going to have a better time today! I’ll be experimenting with a lot of new things today. For instance, this is going to be my first presentation in over ten years that uses a different keynote template. I asked ChatGPT about the best one, and supposedly this is it. I decided that I'm not going to use a single slide from a former presentation, and trust me, I had plenty of those. A few people asked me whether I was worried about speaking today, but this year marks the 28th anniversary since my first talk, so I guess I'm not as worried as I was 20 years ago.
00:05:02.720
Okay, no slider use and I’m plugging into other people's talks. I expected from Stefan’s talk a lot more pain and tears because I don’t know—I cried a lot working with GraphQL! I asked ChatGPT to fix his presentation. My prompt was, 'Give me Stefan crying after a long day at the office working with GraphQL,' and this is what I got. I told ChatGPT, 'Mate, Stefan is one sexy beast.' It’s not right! Make him sexy and move the Ruby to a more appropriate place. This is what I got! I was super entertained by Julia’s talk. I love her talks, especially the part about some of the names they have in her company.
00:06:19.920
First of all, naming is hard. But secondly, great minds think alike! In our company, believe it or not, we also have a Delta Force team. When I came up with the name, I thought it was so original that nobody else would do it. But we weren't always so original. In the early days of the company, we were naming the teams A, B, C, D, E, F. Around G, we realized this was very hard to remember, so we decided to be fun and inspired. We renamed the A team to Armani, because they were working on public pages that were supposed to be really sleek, fashionable, and trendy. We merged our DG team, and they wanted to be even trendier than Armani! At one point, our CTO told me that I could create a new department in the company and name it however I wanted. Of course, I named the department TechX because back then I liked Elon Musk—today, a little less—but I started getting wild with the names.
00:08:01.040
In the team, I first started with the obvious things, DevX (Development Experience), and FX. Any ideas? I must have been doing something special because this was the highlight of my naming career. This was the team that was supposed to fix our slow tests, but they never achieved it after three years working on this. Then, there were the Blacksmiths who were given the worst tasks in the company, and they had to toil at them. There were the Goats—everything they touched was pure gold! Lucky bastards; I hated them! And then there was the CIA, which stood for Continuous Integration Awesomeness. We might have named it 'Make the CI Great Again,' but our CI was never great, so we had to start somewhere. This made me the Director of the CIA for the first time in my life! Then, there was this super special team, Rogue One, which was literally a team of one rogue developer that didn’t like any project in the company.
00:08:54.880
He told me that if we gave him the projects he liked, he would be so productive that he would outperform everybody else. He single-handedly migrated us from Rails 3 to Rails 5, which I think meant he meant business! But I have an actual talk to deliver today, as I mentioned. Let's see what I can share with you about lessons in innovation, or in other words, the things that Ruby got right. If you have followed my talks for the past five to ten years, you’ll know that I often criticize Ruby and say that we can do many things better. But this doesn’t mean that I don’t appreciate what we've achieved. Recently, I realized that probably many people have forgotten some of the greatest moments of the Ruby community, and I'd like to remind you of them so we can finish the conference on a very positive note.
00:10:57.840
Yes, Ruby is still not dead! Ruby, in many ways, is like Cobra Kai—Cobra Kai never dies! Even if it had only six seasons, Ruby has had 30 seasons, and God knows how many more to come. I’m certain that we have at least the ability to pull off 30 more! I was also amused by Pavl’s presentation—first of all, amazing presentation— and secondly, he kind of stole my idea for tonight, because recently, I also turned 40. I dare say I looked pretty good when I hit that milestone. One important thing after drinking Bulgarian energy drinks is to stay hydrated!
00:11:56.760
You know, I had this big milestone in life, and like any average developer, I experienced a midlife crisis, programmer edition. First, I was thinking—should I buy Ferraris and Yachts and do it properly? I checked my bank account and realized maybe at 50! So, in the absence of money, I needed to have a more meaningful midlife crisis. I turned to Chinese philosophy first to analyze my life. I hope you've all seen this quote: if you are depressed, you are living in the past; if you are anxious, you are living in the future. I guess I'm a weird individual because I’m constantly depressed and anxious, so it was hard to decide how to fix my life. I could have embraced the AI hype, become a VIP coder, and become more competitive, but I'm old school. I actually waited two years to see if AI is trendy before I embraced it.
00:13:36.760
In the meantime, I decided to rework my developer toolbox. What do I mean by 'developer toolbox'? Those are the things that I use every day: my text editor, my terminal emulator, my shell. Boring stuff, but they make me happy! Like JLo, I like to do some things just for the sake of doing them; there might not be any benefit for me or the company, but they make me a little bit happier. So, I explored a lot of technologies every day. This time, I decided to go big—I decided to relearn Vim, which is an epic endeavor in its own right because typically, people dedicate their entire lives to this. I only had about 20 days, so I had to push myself. I also decided to check what’s happening with Visual Studio Code and Z Shell.
00:15:06.080
I heard about a super-hyped terminal emulator called Ghostium. I had an item in my to-do list from 15 years ago to check out a mysterious shell called fish. I like Batman, and I heard that someone created a better cut called fish. I was excited! And because Vim doesn’t have a proper Git implementation and I never learned to use Git from the terminal, I needed alternatives—like LazyGit, which is good stuff. I had some revelations, and there is going to be Ruby here, so don't be afraid! First, I realized that no modern Vim user actually knows what’s happening in their Vim config. I asked ChatGPT, ‘How do I become a master of Vim?’ and it told me to install Lazy Vim, and I’d be the prince of the universe or princess, depending on how you feel.
00:16:18.080
So, I installed this, which was supposed to be a very simple starter pack for Vim. It installed like 200 plugins, and I had to read a book on how to use Lazy Vim and what are the plugins that it installed. It didn’t used to be the case 20 years ago, so I'm not sure if the job of software engineers is becoming simpler. Then I read that Helix was Vim for ordinary humans and that you could learn it within a week. This is true; Helix is probably the most interesting editor I've tried in a very long time. It's basically a rewrite of Vim in Rust with a little bit of change in the interaction model, but it's quite similar to Vim. It has a couple of small problems: first, it doesn’t have any extensions. You either love it or hate it, and I guess most people will hate it right now.
00:17:41.520
The good thing is that they are just a pull request away from merging an extension system for Helix, which is a Lisp dialect written in Rust—super fast. It's called Steel. I think this can be the next big thing, so bookmark Helix! I think all of you will be moving from VS Code to it within two years, and we’ll have a check-in then. I switched to fish; it’s amazing! I should have done it earlier. I deleted all of my configurations that I had accumulated for Z Shell in 17 years and replaced it with 10 lines of code, and it actually works better. I must have been really distracted by something less important in life if I didn’t do it earlier. This feature alone is worth switching to fish! It has a concept of abbreviations that can be anywhere in the command, which absolutely blew my mind!
00:19:01.519
And Ghostium? What’s my verdict on it? It has very beautiful artwork and a nice name, but it’s just a terminal emulator. You can try it; it takes six lines of configuration and replaces everything I was setting up for 20 years. So I think it’s a decent tool. I did realize I don’t like an AI assistant in my terminal, and it felt very wrong for me to have to sign up for a service just to type commands. Warp Defe, I’m looking at you! Any Warp Defe users here? Admit it! That’s a safe environment, right? Okay.
00:20:04.960
Since this morning, I’ve been experimenting a lot with AI agents. I asked ChatGPT, ‘How do I look?’ and now I’m a hipster vibe coder. It’s a pity I shaved yesterday; otherwise, the resemblance was stunning! I did notice that ChatGPT struggles a little bit with Cyrillic. The Bulgarians in the audience might be amused by how Narod Sabbrania and Naroden Theater are written, and I say this after trying to correct it ten times in a row. So, there is going to be a need for Bulgarians. You know, if you’re a Spanish speaker or an English speaker, you’re going to be replaced by AI very soon, but Bulgarians? We are special.
00:21:36.680
I started to work on a new Emacs plug-in—boring stuff—but if you felt that Copilot in VS Code was the real deal, Emacs is still the one true editor. This is what I realized. Batman told me that there is going to be a sequel to 'Batman Forever.' And here we get to the actual talk this time, for real! One of the things I like more than tweaking my Emacs is experimenting with different programming languages. I think this helps us as engineers become more competitive, which is one of the themes of the conference. This is also one of the reasons why I’ve been so vocal in my criticism of Ruby and some of the directions the language has taken in recent years.
00:22:48.680
I was observing what was happening in many other communities and thought there were important lessons that we could have learned from them, which made me a little disappointed. During my midlife crisis, I decided to focus on the following languages for various reasons. I haven’t touched JavaScript in a very long time; the last time I tried it, it still wasn't a real programming language since people were using vars because there wasn't anything else. But I’ve heard that it has improved a lot after ES6, so I wanted to check for myself. Then there is TypeScript, which has been taking the world by storm—so many things nowadays are written in TypeScript.
00:23:54.320
In general, I’ve been more interested in statically typed programming languages as I’ve noticed that they offer significant advantages when working on a more complicated codebase. OCaml has been the programming language that I’ve spent the most time on recently, and I’ll say a little more about that later. I know it's an ancient programming language and that most people are afraid of it, but there are still a lot of things you can learn from it, and it has a place in modern development. For instance, the original Rust compiler was written in OCaml, which very few people know. F# is something like OCaml for .NET. It’s a very interesting programming language.
00:24:51.320
Since I want to become an AI vibe coder, I heard that Python is the place to be, so throw some Python, yes! Let’s start with my observations on what other communities might have done better and what we have done better in Ruby. Starting with JavaScript, I immediately have this question in my mind: why do they have so many package managers? There is npm, there is Yarn, there is pnpm. This doesn’t seem very natural to me. Some of you know that npm originally didn’t have the ability to specify the versions of the packages you wanted to install, so some Ruby developer created Yarn, which basically added something like the Gemfile.lock to npm. The JavaScript community was wow, that’s so good! Now I can run npm update and not break my application every time.
00:25:53.920
So, it became fun to update packages! Then npm copied this back, and now nobody is certain why Yarn exists. You also know that every time you run npm install, there is a risk that you could run out of space because the node_modules folder can become 120 GB even for small projects! So somebody created pnpm, which has the ability to share the same packages across different projects. Interesting concept! I think something was fundamentally off in the very beginning—and maybe this is an area where we did slightly better.
00:27:39.520
Then when I started to play with Python, it was even funnier. There is the very traditional easy_install, which is anything but easy! There is pip, which supposedly is the canonical way to do things, but nobody wants to use it! There is poetry, which was the way to go until three months ago, when somebody decided to start rewriting the core Python tooling in Rust, because let’s Rust all the things except TypeScript! Now we have pipx, which okay, we should be migrating to, I guess. I started to relearn Python at a convenient time so I can just start with pipx and hope that everything else dies. But there are risks!
00:29:07.440
I thought, I really miss having just Ruby gems and Bundler, and I really think that this type of foundational tooling is where less is more. I don’t want to think about which build system to use or which package manager to use; I want to be happily writing applications and just go with the flow. So, one point for Ruby! We got this right! Then, I want to share some observations on language expressiveness and consistency. Here is a little Python snippet! I promise that there’s going to be no complicated code like the GraphQL queries that Stefan was doing—they’re very hard to follow at 6 p.m.! This is how I would write it in Python, and you’ll observe a couple of interesting aspects.
00:30:53.679
First of all, you need a special format string to do interpolation in Python, because they added it to the language relatively late. You always have to use the return keyword if you want to return something. Python also uses significant whitespace with colons as delimiters for new indentation levels. It’s not complicated, but I always preferred the look of the Ruby version. In Ruby, we don't have those redundant returns. I really hate having return everywhere! Our strings actually support interpolation and they have always done this! So, I think in this regard, it's a tiny thing, but we were a little bit more forward-thinking.
00:32:11.559
It gets even better! How do you repeat an operation in Python a few times? Obviously, there are many ways, but here’s one popular way. For me, this was one of the defining snippets of Ruby code. When I saw this almost 20 years ago, I thought, ‘This is so beautiful! This clearly expresses my intention,’ and this was one of the reasons why I fell in love with Ruby! Now I’ll show you why I didn’t like Python, especially when it comes to consistency. The number one area in Python that I always disliked was why some methods are special and actually global functions. For instance, there’s absolutely no reason for something like len to be a function, other than somebody deciding to make it so in the early versions of the language.
00:33:37.760
So, in Ruby, we have our ways, and it’s better! Something we often do is read files. This is how it looks in Ruby. You know, you can read a file in different ways, memory efficient or less memory efficient. And here's the equivalent code in OCaml. This was taken from the official documentation of OCaml, and it turned out they weren’t very good at updating it because recently they added a more compact way to do things. But still, I kind of like the Ruby version a little bit more, and in every language I've played with, the expressiveness level was never at the same level as Ruby. So I think this is one area where we can congratulate ourselves a little bit and say we did it right!
00:34:32.960
It gets better with the standard library—a core aspect of every language. I was super amused by what was happening in JavaScript. There are literally thousands of libraries with one or two functions. The dependency graphs of every non-trivial application are epic! On the other hand, OCaml has a very minimal standard library; it’s like a desert. The third-party ecosystem barely exists, so you have to get creative. When you're coming from Ruby, it’s really hard to find a better execution of the standard library for many reasons. Are most of you aware that there are efforts to ‘gemify’ the standard library? Yes, no? Maybe? In those gemification efforts, there are two levels of gems: the default gems that are always around and you cannot remove them, and the bundle gems which are installed with Ruby and you can remove them if needed.
00:36:04.200
The beautiful thing is that everything is still a gem and can be updated independently of Ruby, in stark contrast to other languages where they introduce changes to the standard library and you have to upgrade the entire language runtime to get those updates. I’m always shocked when I see somebody trying to create a bigger monolith at the standard library level instead of being more modular. Ruby is doing a fantastic job here! If you're not familiar with this project, check it out at the std gems website—it's very detailed. Believe me when I say we did it right! And here it starts to become more fun: libraries and frameworks. Beyond the standard library, when I started to play with OCaml, I was like, ‘What is the OCaml Rails?’ I couldn't find anything. What is the OCaml Sinatra? I got nothing! It’s a bit dangerous and even kind of depressing. But sometimes I would ask people, ‘What do you do for this?’ and they would reply, ‘Well, we invent a library!’ How do you work with regular expressions? Nobody knows how to do this in OCaml! How do you work with Unicode strings? Oh, strings can be Unicode? Oh, that’s interesting!
00:37:37.560
So, I thought maybe JavaScript would be a tiny bit better. I opened the npm registry—5 million libraries. And then I started seeing some disturbing things; I alluded to them a little earlier. I saw one guy claiming to maintain over 1,000 npm packages! I was like, ‘This guy maintains 1,000 packages? I’ve been doing open source for almost 20 years and think I’ve developed less than 50 libraries!’ Either he’s very good, or all of us are very bad, and something is wrong! Not only there, but there’s even more wrong when there are so many libraries with 11 lines of code. Do you remember in 2016, when one guy out of spite killed an incredibly useful library called left-pad? It literally adds one function, and he broke the internet! It doesn’t sound normal to me, but it seems this is the norm in the world of JavaScript.
00:39:27.480
I've also noticed that there’s an epic churn. Every few weeks, I check what are the hottest libraries in the world of JavaScript, and those answers are different every time. I really liked when they had a library called BatmanJS—I hoped that one was going to win, but you know, it's React that took over instead. There are an infinite number of frameworks for everything, and it seems that they’re growing exponentially! I have been trying to decide what I should learn—at the beginning, was it Express, Next, Nest, Koa, Happy, Adonis? Those were the ones trending right now, and there are others. Many times I’ve said that one problem with the Ruby community is that everybody is writing Rails applications. But in this particular moment, I felt like this: give me my Rails! I don’t want to think! I want to write code and occasionally give me Sinatra when I feel like going the microservice route and inflicting more pain on myself than with GraphQL!
00:42:00.000
So, I think that in Ruby we have a good library for pretty much everything. Moreover, I’ve noticed from my explorations of other languages that in every community, everybody is so inspired by something from the Ruby community. When I say inspired, they copied it and changed the name. Ruby on Rails? Sinatra? Like ExpressJS, it literally has 'Sinatra' in its name. ‘Look, we copied Sinatra and rewrote it in JavaScript!’ And then there’s Rack—every project out there that uses middleware in some shape or form was inspired by Rack. RSpec was a revolution in writing more descriptive tests, and some version of RSpec exists for every language that someone actually uses. RBenv and NVM, and RVM and RBenv—I haven’t used them in a while. I keep using rbenv, but both were copied very widely, so they must be good!
00:43:36.480
Ju is something that has kind of been forgotten. Do you know what Ju is? Yeah? So today, there are about a thousand static site generators, but 20 years ago, there was just one—and this is where it all started! Here and there, I see that people are inspired by some other library, but I think it is very safe to say that compared to other communities, we are really ahead of the curve! A lot of groundbreaking innovation has happened in the Ruby community. People have started to forget all of this, and they shouldn’t, because this is precious! They've also forgotten what it is to have bad documentation because Ruby has probably one of the best documentations in all of programming.
00:45:07.520
When you compare what’s available for Ruby to what’s available for Haskell, OCaml, F# and Lua, and 90% of the other programming languages, you feel very lucky to be in the realm of Ruby. Because you know, LLMs do not operate off of nothing—no, the more data they have to train themselves on, the more useful results they provide. And we feed LLMs with a lot of good data. So I think Ruby is very well positioned in the era of VIP coding and other aspects of AI-powered coding. We got this right! But I think the most important aspect of any programming language is the community. How many of you have been programming for more than 15 years? Hands up? Okay, rosho, what were you doing 15 years ago?
00:46:50.640
I didn't expect this! Somebody discreetly raised their hand. If you were programming in Java, PHP—how did you feel about the energy of the PHP community? I kind of didn’t know it existed back then, but I would call it the dark times. They’re still in the dark times. JLo, how do you feel about the energy of the Java community 15 years ago? Very old and enterprise! Oh, I was a young enterprise Java developer 15 years ago! This is actually from my resume. Back then, I didn’t know that the concept of community existed because everything in the Java world was so business-like and transactional. Nobody cared about contributing to projects. Nobody wanted to go to conferences because the conferences were so boring!
00:48:43.360
When you compare this with what we have in the Ruby community—the energy of the people, the positivity—I asked ChatGPT to create a sequence of my fondest Ruby memories, and I’ll go through them with as few words as I can. This is Ruby Kaï 2018? No? Okay. This is one of the first Ruby conferences that I attended. This is Ruby Florida, and you can see that I actually owned the pink glasses that were my avatar for a very long time. This is me with Stefan when he was as young as the picture he uses for presentations. This is Rails Girls—a long time ago! I believe this is a boat trip in Sevilla in Spain with some really fun Rubists!
00:50:59.600
I think we drank too much because I don’t remember this trip very well. This is Ruby Conf in Kenya—the afterparty! I can highly recommend the conferences there; the giraffes are extremely friendly! This is Rubik Israel. I think this is Frozen Rails or Nordic Ruby, or something like this. See again young Stefan and young me! This was Rubik in Minsk from a long time ago. This is my graduation! I think ChatGPT made a mistake, but in case you cannot recognize me… well, I’m this guy! In the Ruby community, we keep making new memories every day, mostly every night.
00:52:12.080
A few memories from yesterday after the pub! I don’t know how it is for you, but Ruby inspired me to get involved in open source. Ruby inspired me to speak at conferences! Before my experience in the Ruby community, I think I had done hardly any open source work, and I had spoken at a few events. But I was mostly doing courses for beginners and stuff like that. My interactions with amazing people like you really inspired me. They changed the way I perceived the work; I stopped perceiving it as work, which was probably the most important thing! And you know, Ruby didn’t just inspire me; it inspired so many other communities.
00:53:40.960
Martin had an amazing talk yesterday about the journey of Crystal, but many people forget that Ruby started the trend for languages that were transpiling to JavaScript. CoffeeScript—today it’s mostly forgotten, but it was groundbreaking! CoffeeScript aimed to make JavaScript as approachable as Ruby, which was a novel goal we never quite achieved! Closure has had a lot of influence from Ruby too, and Closure was probably the language that changed the most how I approach programming in recent years.
00:54:26.960
If there is one other language I want to recommend beyond Ruby, I will never tire of recommending Closure! It is next level! As I told Stefan, when you use Closure, working with GraphQL is actually a lot easier. Elixir is created by one of our very own, so the connection there is obvious; the inspiration that was drawn from Ruby is clear. Rust has attracted a lot of notable rubists, and you can see the Ruby DNA stamped everywhere in the Rust community, especially when it comes to amazing tooling and documentation!
00:55:36.960
There’s so much more that we as a community have given to the world. GitHub was created by a couple of people who just loved Ruby and Rails; YAML wasn’t a thing before Rails made it a thing, TROML wasn’t a thing before TOM made it a thing. Markdown—absolutely nobody used Markdown before GitHub made it a thing! If you remember the two original parsers, Red Carpet and CrumbDown—both put on Ruby Gems. I think we are quite an innovative community! We might have forgotten it, but we were, and we have done a lot of things right! I know that today people will say, ‘Oh, but all of this is in the past! We are not innovating anymore; a lot of great people have left the community…'
00:57:20.680
And in Bulgaria, we have the recipe for this as well! It’s called liquid innovation! Every time I’m wondering what to do next, I pour around 50 grams. If you pour less, you’re not going to get good ideas. If you pour more, you probably won’t be able to execute the ideas you get. So, you pour a little!
00:58:27.760
You can say 10 out of 10! We resort to the wisdom of the people in Bulgaria: we say—or roughly translate it into English—where water has flown, water will flow again! This was very hard to translate, but it means that if a community attracted innovative people, if a community attracted passionate people, this is probably going to repeat at some point. I think Ruby has always been a lot more than Rails!
00:58:58.640
Even though the people who started the community might be at the end of their energy and ability to drive the next wave of change—whether it's AI or just learning to use Vim properly—there will always be the next people who will pick up the baton and get us where we need to be! Also, I remind you that our innovation stretches even further than Rails. Water and Capybara are still regarded as two of the best tools for quality assurance and automated testing. In the days of Docker, people might have forgotten that Puppet was a Ruby tool. Chef—still a Ruby tool. Vagrant? Again, we set off on the journey that led us to the tools we use today. And, everybody who is using macOS is probably using Homebrew!
01:00:55.600
I know that many people don’t know, but Homebrew is written in Ruby! I think it is an amazing project that makes it possible to survive the horrible dread that macOS usually is, if you're a Linux user. Normally, Fastlane is something that I think very few people here will know, but this is the most widely used tool for deploying iOS and Android applications. It is extremely popular in the mobile development community, and it happens to be written in Ruby! I think we haven’t conquered the AI frontier yet, but when you think about it, Python and Ruby have always been very close relatives.
01:02:56.800
So, I think that there are no reasons we couldn't replicate the amazing libraries that propelled Python into the prime time. I believe that the future for us is very bright. We got at least 100 things right! Oh, I didn’t get something right today and triggered TubaCop. You got to use single quotes! Yes! I think the future for our community is going to be exceptionally bright. If not today, then when we drink enough liquid inspiration!
01:05:07.680
With all that said, I know you are all tired, so I’m wrapping it up. In 50 minutes, I should have practiced! Sorry! But I got inspired by some other people here. That’s almost all folks! There is just one more thing remaining before we wrap up this conference. I’d like to invite JLo, the seven-time winner of X Factor España, to deliver some closing words of inspiration!
01:05:53.360
Okay! It’s not words—it's like… ru along! I can show you the world shining, shimmering, splendid! Tell me, princess, now when did you last let your heart decide? I can open your eyes, take you wonder by wonder, over, sideways, and under on a magic carpet ride!
01:06:58.720
I'm a little bit sick—sorry! A new fantastic point of view. No one to tell us no, or where to go, or say we're only dreaming. A whole new world! A dazzling place I never knew. But when I’m way up here, it’s crystal clear. That now I’m in a whole new world with you! Unbelievable sight, indescribable feeling, soaring, tumbling, freewheeling through an endless diamond sky. A whole new world! You dare close your eyes! A hundred things get better!