The Changelog: Software Development, Open Source - 23 years of Ruby (Interview)

Episode Date: May 7, 2016

Big show! Matz, creator of the Ruby programming language, joined the show to discuss where he began as a programmer, the origins of Ruby, its history and future, Ruby 3.0, concurrency and parallelism..., Streem, Erlang, Elixir, and more.

Transcript
Discussion (0)
Starting point is 00:00:00 I'm Yukihiro Matsumoto, and you're listening to The Change Log. Welcome back, everyone. This is The Change Log, and I'm your host, Adams Dekovic. This is episode 202. It's a big show. Yes, years in the making. Jared and I spoke with Matt, the creator of Ruby. We talked all about Ruby. We corrected the title. We were going to call this 20 Years of Ruby, and we had it wrong. It's actually 23 Years of Ruby. We talked to Matt about its origins,
Starting point is 00:00:34 where he came from, naming Ruby, where it's going, where it's been. Everything you think you want to know from Matt about Ruby is in this show. We've got three awesome sponsors, TopTal, FullStackFest, and our friends at Rollbar. Our first sponsor of the show is our friends at TopTal, an exclusive network of top freelance software developers and designers all across
Starting point is 00:00:59 the world. Top companies rely upon top, top freelancers every single day for their most mission critical projects. And if you're listening to this show and you're a Ruby on Rails developer looking for greater flexibility in the projects you're working on, or you're looking for a community to belong to, or you'd just like some help thinking through a problem as you work, I highly encourage you to check out TopTow. You'll have a constant stream of top Ruby on Rails jobs to choose from. You'll have the flexibility to choose the projects you work on, and you'll have a constant stream of top Ruby on Rails jobs to choose from. You'll have the flexibility to choose the project you work on, and you'll have the freedom to set your
Starting point is 00:01:28 own schedule. You'll get featured on the TopTal engineering blog, which we often link to in ChangeLaw Weekly. You'll get support for speaking at conferences and attending events. Head to toptal.com slash RailsJobs. That's T-O-P-T-A-L.com slash RailsJobs, all one word. But if you'd like a more personal introduction, email me, adam at changelog.com. I'd love to help you take your first step with TopTile. And now, on to the show. All right, we're joined today by Yukihiro Matsumoto, also known as Mats. Now, if you don't know Mats, you must be under a rock.
Starting point is 00:02:16 But let me tell you, Mats is a Japanese programmer, best known for his work as the chief designer of the Ruby programming language. And he's also known for its reference implementation, Mats Ruby Interpre interpreter, MRI. And Jared, this show for us is literally years in the making, quite literally 20 years. Our roots are in Ruby. Our audience knows our roots are in Ruby. But to have Matt finally on this show,
Starting point is 00:02:39 what do you think about that, bro? Well, I'm pretty excited. Matt, before the show, said he was nervous. And I think we're the ones that should be nervous. Yeah. Quite an honor to be joined by you, Matt. And thank you so much for the Ruby programming language, which is something I use daily and a language design that I compare other languages to to see if they measure up. So thank you for joining us and thank you for Ruby.
Starting point is 00:03:07 Yeah. Well, without further ado, Mats, welcome to the show. Yeah, thank you for having me. So Mats, I guess the best place that would make sense to start for you
Starting point is 00:03:17 and something that, you know, Jared, again, I got my mind blown before the show and I got to let the listeners know because Mats is a listener of the changelog. I couldn't believe it. Yeah.
Starting point is 00:03:28 Isn't that awesome? So cool. Now, Matt's as a listener of the show, you must know that we love to dig into the history, the past of someone. So someone like you who comes on the show, we have to know where you come, where you came from. So take us back into your story where did things begin for you to become a software developer become a programmer where did things begin for you uh that's a very old story so when i was in high school, maybe in junior high school. My father bought me, actually bought himself a pocket computer,
Starting point is 00:04:15 like the desktop calculator with a keyboard. That was basic. So I was 15, and then I took his computer and started programming. I was pretty interested in programming. That is my beginning of programming career. So that was about 1980 for you. Is that right? Yes.
Starting point is 00:04:38 Give or take. So what was it about this device, this opportunity that made you think, I could do this. I could make something on this. I could make my living doing this. This excites me. No, I didn't think anything about the job or working at that time, the programming interested me very much just because I can order computer or I can train computer do things I want to do. If I was interested in programming, I can program or train them to work for me. Right. Yeah.
Starting point is 00:05:25 You were in control. You could make it do what you wanted to do. Yeah, I can control computers. You know, it's make me feel like I train computers like a dog. Like, you know? Yeah. You heard it here first, everybody. Matt trains computers like he can train a dog.
Starting point is 00:05:45 That's awesome. I've tried training a dog and failed miserably. So I think computers might even be easier than dogs. Yes. My dog does not listen. I tell him to be quiet and he just keeps asking for the door and wants a bone. He's relentless. Computers, they don't talk back and get angry.
Starting point is 00:06:02 I guess they kind of do whenever there's an interpretation or know interpreter or something like that yeah computers are much easier mind dogs are bad too so what was your first steps then was was uh was your first steps tinkering was your first steps picking up a book you know what was your entrance into feeling like you can actually do it not so much getting excited about it but but learning yourself to teach. And as you said, control a computer. Yeah. The pocket computer was awful just because,
Starting point is 00:06:35 you know, it was only 400 steps of the capacity so that we can only type in the maximum 400 lines of code, basic code in that computer. Besides that, they have a variable, no local variables, just global variables, and the length of the variable name is only one, so we could have only 26 variables. Then I type in some sample programs out of the reference to the
Starting point is 00:07:10 computer and I modified it like a small game of the, you know, the hit and blow or some kind of the number calculation something. The environment was very, very, very limited. So I started to feel some kind of frustration soon after I programmed in that particular computer. So it was really the frustration, the lack of usability that got you excited. Because like anybody, you want things to be easy to use. You want them to be enjoyable. And computers for you was lacking that. And you felt like you can fill that void. Yeah.
Starting point is 00:07:47 But at that time, I didn't know about anything about the other computers. So I just kind of felt frustrated, but I didn't know what is the source of my frustration. So then I came across the book named Introduction to Pascal Language. So I bought that book and then I studied about the Pascal programming language.
Starting point is 00:08:15 It was some kind of enlightenment for me just because, you know, this language, Pascal, kind of freed my mind. You know, my recognition, my cognition of the programming is very limited to the basic before that. But I thought Pascal had everything, like local variables, recursive calls, and the user-defined data structures, and, you know, yeah, everything. So that was the first time I started having interest in programming language in general.
Starting point is 00:08:49 What came after Pascal? So I started to read books and magazines about programming and the programming language. So then I came across Lisp, Smalltalk, and some other programming languages like Logo. So then these programming languages are pretty amazing for me. But back then, I didn't have the computer
Starting point is 00:09:13 that runs that kind of the great programming languages. So I just read the book and studied about them. But I really wanted to programming in it it in them but uh i couldn't that is kind of a frustration so you're just you're just reading books about lisp books about small talk but you don't even get to try to use these languages no the computers are very expensive back then i always find it interesting jared whenever we have someone on the show that that has such a history with i i guess going through the hard days is all i can think of to describe it because it's the days whenever uh who was our most recent guest he made
Starting point is 00:09:58 the keyboard because that's what he had to do to get to the next step. Yeah, Richard Hipp from Sequel Light. Yeah, which is a show that isn't quite out yet. But if you're listening to this, then it's out. So go listen to it. Episode 201. But this is a case, too, where Matz is loving and desiring to program but can't. Because access isn't quite there. And so I guess, Mat guess mats what did you do to
Starting point is 00:10:26 to get access what's the next step for you there uh through reading the books about the computer programming languages so the i found out that every programming language was designed by a human being you know that right that Right. That means, you know, we don't know who designed English nor Japanese. But we have, for example, John McCursey for Lisp or, you know, Alan Kay for Smalltalk.
Starting point is 00:10:58 So the programming language was designed by a specific person or group of people. And they had intention or ideas for their programming languages. So when I was in high school I was pretty much interested in programming language and even though I didn't have any chance to programming in those programming languages in reality. But I'm really, really interested in programming language, the concept of the programming language.
Starting point is 00:11:30 So I just wanted to create my own programming language when I was 17. It's pretty profound that you have that perspective because I didn't think, well, I don't know who, and Wikipedia won't tell me me who invented the English language. So I never really got curious to the point where I'm like, well, if someone designed it, then I could do it. So I never, I don't, I don't know if I've had that perspective that you, that you have. It's interesting that you come to that conclusion on your own. Yeah. So you're 17 years old. It's about 1982
Starting point is 00:12:07 if my math is correct. Yeah, around that time. At this point, you've used BASIC and you've used Pascal. I didn't use Pascal. But I knew Pascal. Oh, okay. So you didn't even
Starting point is 00:12:24 use Pascal. You just learned it. So only basic so far. Only basic. Only basic back then. And you have this kind of a wanderlust or a desire to not just try these languages, but to learn about them, even though you can't use them.
Starting point is 00:12:39 And you want to write your own language at age 17. Yeah. Did you attempt a language at that time? You know, it's prior to the internet age. So I didn't know anything. So I didn't have any experience on programming. I didn't have any knowledge for the, you know, compiler writing or anything.
Starting point is 00:13:01 So I took my notebook and write down programming in my own programming language. Awesome. On papers. Do you still have that notebook? That was my question. I was like, do you still have that? Unfortunately, I lost that notebook.
Starting point is 00:13:18 Oh, man. You could compare it to Ruby and see how closely you ended up creating. Yeah. Something like that 17-year-old wanted. I vaguely remember that was kind of like a Pascal. But I saw some kind of the influence from Lisp. I think it was kind of the combination of the Pascal and Lisp. So we're not quite to designing Ruby yet. And obviously
Starting point is 00:13:46 this show is about painting the history of this 20 year rich history of the Ruby programming language. So of Basic, of Lisp, of Pascal, what was it about those languages that got you excited? Like what specific
Starting point is 00:14:02 features, what specific things even if you couldn't write them you can read them and think about them in your mind so the from pascal i learned a lot from the the language programming language features can help programmers like a you know the old basic i used was a very limited it didn't try to help programmers. Like the limitation in the number of the lines of code, limitation of the number of variables. They couldn't have any user-defined function.
Starting point is 00:14:37 They didn't have anything but a few lines of BASIC code. So compared to that the Pascal language tried to help programmers to be effective. So that kind of attitude influenced me a lot. So the programming language should help programmers. Then Lisp. So when I read about Lisp, I was very surprised by the consistency of the language. So the Lisp language was made up of the very few concepts, like a list and some atoms. Then everything was combined out of those small number of concepts. So that kind of the consistency or extendability surprised me a lot.
Starting point is 00:15:34 And obviously Smalltalk had a huge influence on Ruby. Yeah, but back then, it was early 80s, so the material about, information about the small talk language was very limited back then. So I studied about small talk mostly in my university ages. Is that when you gained access to actually start using some of these languages at university? Yes. So did you study computer science, or what did you go to school for specifically? So in 1984, I went to the university called Tsukuba University in Japan. So I majored in computer science. So finally I got access to the real computers and I started programming and also the university has a huge library so that they can access to the books and the materials and the papers about the computer science.
Starting point is 00:16:36 So you know finally I got access to the information of computer science. That must have been like heaven for you. Yeah. It's in your, in your, really, it was a heaven. What I find interesting is that,
Starting point is 00:16:54 uh, there's roughly, uh, based on some notes, Jared pace it to me is roughly 13 years difference between the day or roughly the year from what wikipedia tells us is in the mid 90s so assuming 1995 1996 uh ruby being created so there's roughly um you know 13 years between your original age or roughly 15 to 17 when you know when you're kind of painting this picture that you just share with us so there's 13 years between that time.
Starting point is 00:17:27 You went to school and you learned a bunch of interesting things and all of that stuff. And so we're obviously here to talk deeply about this history of Ruby. So I want to tee that up real quick before we take our first break because when we come back, we're going to dive into some more details around those 13 years and then specifically get into the origination, the date, the timeframe of Ruby and what the original problem was and those types of things. So we'll take our first break and we'll be right back. Rollbar puts errors in their place, full stack error tracking for all applications in any language.
Starting point is 00:18:07 And I talked to Brian Rude, the CEO and co-founder of Rollbar, deeply about what Rollbar is, what problem it solves, and why you should use it. Take a listen. How do you build software faster? Like, how do you build better software faster? And there are tons and tons of aspects to that. And Ruby is like, you have a better language, you can have better frameworks that help you be more expressive and more productive. So the flip side of that is like,
Starting point is 00:18:28 after you've built something that works, or at least mostly works, how do you go about getting it from working to in production and actually working? How do you cover the edge cases? How do you find things you missed? How do you iterate on it quickly? And that's kind of where what we're trying to do comes in.
Starting point is 00:18:42 So we're trying to say, after you've shipped your software, you're software you're not done you know you saw there's still work to do and we want to help make that process of maintaining and polishing and keeping things running smoothly be really really really easy so developers spend roughly half their time debugging right so anything we can do to make that process better is going to have a huge impact all right that was brian ruse ceo and co-founder of rollbar, sharing with you exactly why it fits, why it works for you. Head to rollbar.com slash changelog. You get the bootstrap plan for free for 90 days. That's basically 300,000 errors tracked totally for free.
Starting point is 00:19:17 Give Rollbar a try today. Again, head over to rollbar.com slash changelog. All right, we're back from the break. And obviously, if you're listening to this show, 20 years of Ruby with Matt is like link bait, right? You're going to listen to that show. Even if you've never programmed Ruby before, you want to listen to the show
Starting point is 00:19:39 because Matt is such an influential person in software development. Already, Jared and I have been enjoying Matt's story, how he got into programming and his journey through BASIC, Pascal, and Lisp. But ultimately, he got to a point where he was just maybe frustrated even further with usability and decided he can create his own language because you can do that. And so, Matt, Jared and I have been trying to dig
Starting point is 00:20:06 and figure out when Ruby was created. And Wikipedia says mid-90s. Can you help us with a citation? Like, when was Ruby in your eyes? When was Ruby officially born? So what can we call Ruby's birthday? The birthday of the software is not well-defined, just because
Starting point is 00:20:27 unlike human beings, the software is not very form. But software, including programming languages, do not have any physical entities.
Starting point is 00:20:44 So the logic or concept are very crucial for the existence of software so in that sense the name is pretty important for software right so the yeah in programming so if you name some concept in a very good name or right name, your design is guaranteed to succeed. So I value names date I name Ruby, Ruby. Okay. As a birthday of the Ruby programming language, which is February 24th, 1993. So we're actually 23 years. 23 years of Ruby.
Starting point is 00:21:38 Yeah. So we got our title wrong. You know, hearing that, thank you for sharing the official date with us. So February, was it 23rd or 24th? 24th. 24th. February 24th, 1993. You named it Ruby. Has anybody ever asked you what the significance of the name Ruby?
Starting point is 00:21:57 Like, where did Ruby come from, the name Ruby? Why is that? Since names are so significant to you, why that name? Oh, it's kind of like a coincidence. Like when I decided to create my own programming language, that I will tell that story later probably. Yes. But when I decided to name my programming language,
Starting point is 00:22:22 I wanted to name it after the name of the jewel, just because we had pearl. Back then, I talked with my friend about the concept and the plan. So, several names come up with the name of the programming language, my programming
Starting point is 00:22:39 language. These were like diamonds and spires. But those names are so long and quite difficult to type. So after examining a few programming, a few journal names, we picked two candidates. The first one is Ruby. The second one is Cora. But I talked with my friend and the Ruby is shorter and the Ruby
Starting point is 00:23:11 Jewel is more beautiful. So I picked the name Ruby. So it's based on beauty. And it's based on in theory, easiness because it's shorter. Not so much its length, but it's easy. It's much its length, but it's easy.
Starting point is 00:23:27 It's easy. And after that, we found out the Pro is a birthstone of June, and the Ruby is a birthstone of July. So it is a good name for the programming language, which succeeded, which came after. But it was just coincidence. Just coincidence. So your next language will be the birthstone of August.
Starting point is 00:23:52 Aquamarine? Now I'm googling for birthstone of August. Para... Ooh, not easy. Parado. Paradot. Not as good as Ruby. No.
Starting point is 00:24:07 So you had a name. It was 1993. You had some influences, including Lisp. Smalltalk. Lisp. Smalltalk. Perl, of course. You talk a lot about how every programming language is created by a person.
Starting point is 00:24:27 And you also talk about how when you design a language, you design for specific things. And the big idea around Ruby, and correct me if I'm wrong, but it's this idea of designing for the programmer or programmer happiness around this idea of joy. Where and which was avant garde for sure at the time was quite almost revolutionary, you might say, with how popular Ruby eventually became. So where did that notion come from? Where did that influence where you said, let's optimize for programmer happiness? How'd you think about, how'd you think of that? Actually, I confess that I didn't think that at the beginning.
Starting point is 00:25:16 Oh, okay. So some programming languages are designed with specific purpose, like a basic and a Pascal as a programming education or C for system programming, like writing Unix operating system. Or a small talk, like it was a prototype of the future programming environment or something like that. But unlike other programming language, I didn't have anything specific in my mind. You know, I told you that I just wanted to create my own programming language. Right. But as a programmer, I wanted to use my programming language.
Starting point is 00:26:00 So as a programmer, my daily job is writing some kind of C language for main project, and then like some pro script or shell script as a side task. So writing some kind of scripting language could help me use my programming language for my tasks, like a kind of dogfooding. So I picked scripting language for that purpose. I didn't think of solving my specific problem or anything like that. I just wanted to create my own programming language.
Starting point is 00:26:36 I love that. Like it was a very pure desire. It's like, I just want to create a language. Yeah. At the same time, I wanted to have fun with designing and implementing or using my programming language. So at that time, I didn't focus on the effectiveness or productivity of programmers in general. I focused mainly on my joy in programming and designing of my own programming language. So that gradually leads into the programming joy of the programmer in general
Starting point is 00:27:18 all over the world. I was just going to say that it makes a lot of sense that you ended up creating a language around enjoyment and joy and programmer happiness because you weren't designing for specific use cases like you mentioned with C or another language or Perl with like Perl's whole purpose was text extraction and reporting. Right. And so it had that very practical goal. But your goal was to just enjoy making a language that you would love. And so what fell out of that was a language that is enjoyable to use. Just makes sense. See, I would say the opposite. I would say that that's like a kind of a happy accident. Yes. You know, because he said he was he wanted to dog
Starting point is 00:28:07 food it but it wasn't uh you know top of mind and in the fact that like this is the main thing you want to do but he wanted to be happy creating it and so just yeah it seems like it's a happy accident to to get there although it does make complete sense that's what should come out of it right so you mentioned lisp and how you liked how small lisp was and its concepts and how consistent it was um you mentioned small talk and pearl and when you were originally designing ruby were you actively thinking about your use of these other languages or the things that you like and just you know, quote unquote stealing those into Ruby?
Starting point is 00:28:53 Was it how do I say it? Were you actively taking features from Perl that you like and saying I want those in Ruby or was it more of an indirect influence on the language? So when I decided to create my own programming language,
Starting point is 00:29:12 so I had been a big fan of object-oriented programming for years back then. So I wanted to apply the concept of object-oriented programming to my programming language. So, and back then I was a C programmer, so I wanted to feel comfortable as a C programmer when I using my own programming language. And I wrote many shell scripts and some Perl scripts.
Starting point is 00:29:41 So I want my programming language to replace those languages, like Shell and Perl. So in combination with these, the idea of the object-oriented scripting language was gradually formed. So I took some kind of the Lisp interpreter and then put some class libraries out of Smalltalk and then picked the features out of Perl and chopped into the methods and then reorganized into the class libraries.
Starting point is 00:30:22 In that way, I gradually designed my programming language named Ruby. So you named it in 93. By 1995, you had a public release. Yes. I'm trying to figure out here if this was your 1.0. Yes, it was. Ruby 1.0.
Starting point is 00:30:43 Oh, I'm sorry. Ruby 1.0 was 1996, it was. Ruby 1.0. Oh, I'm sorry. Ruby 1.0 was 1996, if Wikipedia is correct. 96, yes. So let's talk about that. You've fully formed this idea, right? You've given birth, so to speak,
Starting point is 00:30:58 of a concept and working code for a 1.0 release. What happened next? Were people using it? Did you announce it somewhere? Did you keep it for yourself or did you put it out into the world?
Starting point is 00:31:14 And what did people think? Yeah, soon after I started project in 93, virtually no one knows Ruby, just because it was my personal project. And only my few, a few close friends knew about the language and they helped me to try my baby programming language. But the implementing a programming language kind of took time. It took six months
Starting point is 00:31:46 to do simple Hello World for me. I started in February. The simple Hello World worked on August. Writing Hello World program in Ruby is, you know, kind of one line of code and then it took us maybe 10 seconds or something but implementing language to do hello world is kind of huge task i needed to implement string object so i need a string class and to implement string class we need the object class to inherit and the whole object system and the whole messaging system. And then to call print, we need the access to the standard IO.
Starting point is 00:32:37 And then we need to object, we need to, I needed the object by the standard IO or something like that. But that took me six months to do simple Hello World. Reminds me of that Carl Sagan quote about making an apple pie from scratch. You must first, what is it, create the universe? Yes.
Starting point is 00:32:58 Sounds like you had to create the Ruby universe in order to have a Hello World from scratch. Indeed. So how long before other people started to use it? Until December 94, virtually no one used Ruby, but two other friends. But in 94, I passed some small message to the Usenet, which NetNews, which we had to communicate to others
Starting point is 00:33:27 on the internet back then. I don't know. I don't remember the exact number, but 10, 20 people were interested and formed a mailing list. And they advised me in the very early stage of Ruby to these kind of the communication and discussion. So Ruby design of Ruby,
Starting point is 00:33:52 design and implementation of Ruby got better. Then I passed the whole Ruby source code into the internet, December 21st, 1995. So I guess once we're getting to more and more users, what do you feel like is roughly the time you feel like Ruby was really adopted by the programming world? When was it that, and what was it like at the time for people to really start using it? Not just, and I don't mean it in a negative way,
Starting point is 00:34:30 20 or 30 people, but a lot of people. What was, when did that begin? Yeah. Soon after I passed it at the South Coast of the Ruby, so I formed the mailing list. Right. And then two weeks later, we had 200 members of the mailing list. Right. And then two weeks later, we had 200 members of the mailing list.
Starting point is 00:34:48 So that is kind of number. Yeah. So I was surprised. So, you know, after seeing, you know, unknown programming language from nobody, so nobody knows me back then. So, but I'm interested and joined the mailing list in two weeks.
Starting point is 00:35:10 That is kind of, you know, surprising for me. What do you think was it that, what was the secret recipe? What do you think was happening the right way to attract people? What was the, what was it about Ruby
Starting point is 00:35:23 that was really getting them? And what languages were they coming from to try people? What was it about Ruby that was really getting them and what languages were they coming from to try Ruby? I'm sorry, but I don't know about secret recipe. But I was so surprised. Only one thing I can think of is the, you know, the Ruby is designed after my preference or taste. Surprisingly, so many other people felt similar way toward the programming and the programming languages.
Starting point is 00:35:55 So that kind of preference invited them to involve in the Ruby community. So in the beginning, Ruby was designed for me, myself, only one person. Right. But surprisingly, so many people, not only in Japan, but all over the world felt similar way and they're interested in Ruby
Starting point is 00:36:24 and they felt joy in programming Ruby. It is so out of my expectation, so far beyond my expectation. It might be a good place to talk about the cultural divide. We have a note here, mainly just around how, obviously, Ruby was written by someone who's Japanese, speaks Japanese as their primary language.
Starting point is 00:36:48 That's you, obviously. But Ruby has played this part in bringing people together from all over the world, you know, the United States, Japan and all over. And you've also got people who speak english primarily learning japanese to break down the cultural divides and be able to speak uh you know your native language and and whatnot can you speak to you know what it's like to have such a an influence i guess on those people like how ruby has bridged that gap between you know, cultural divide, language barriers, things like that. Hmm. Language barrier. Yeah, at least if I were born in
Starting point is 00:37:32 English-speaking country, so my life would be much easier. But at least, so we programmers kind of have similar souls inside of us. Despite the difference of the primary language we speak or the culture we brought up, most of us feel similar way. So we are primarily programmers. So even though I was born in Japan, so you were born in the States or maybe others from other countries, from other cultures, somehow we feel similar way. So Ruby language stimulate common soul of programmers. Right, the common desire for usability,
Starting point is 00:38:33 simplicity, joy, happiness. Yeah, that kind of things. Those are language universal. There's no language. It's to see me have joy is to see me smile, and to see you have joy is the same. You would be smiling. There would be some sort of appearance on you that is language agnostic.
Starting point is 00:38:53 That makes sense. Well, what about things that you like a lot about Ruby? What are your favorite parts of Ruby? You've written so much over these years. What is it about Ruby that really, I guess the easiest way to ask is just, What are your favorite parts of Ruby? You've written so much over these years. What is it about Ruby that really, I guess the easiest way to ask it is just, what's your favorite part about Ruby?
Starting point is 00:39:11 What is it that attracts people to Ruby? As a language, so I like Ruby's extensibility. We have Ruby language, but we can add many things, like class libraries and gems, so to extend the power of the language. So the Ruby language allows us to make Ruby even stronger by adding the classes, like adding objects. So that kind of extensibility I like the most.
Starting point is 00:39:47 The second thing is a part of that, is the block. The block is a, you know, the block is a somehow form of the higher order function, but Ruby provides that things in very nifty way. So that forms that you can extend the method with adding blocks. So I like that kind of things in Ruby. But in fact, the most important things in Ruby language is the community. Since we emphasize the happiness of programmers,
Starting point is 00:40:34 so we cannot live without the programmers. We are not just a language. We are not just a technology. We, the community, is most important for the language. Well said, and I agree with you on the extendability to this day. And I know active support in Rails catches a lot of flack. But the fact that Ruby allows you to write out when you're thinking about a time and you think, well, it was three days ago and you can type in your code three dot days dot ago. Yeah. That's, that's a joy for me.
Starting point is 00:41:15 It's so expresses exactly what I'm thinking and I don't have to conform my sentence into a structure that the language requires of me. I can express it the way that it makes sense. And obviously active support is adding that to number three in that case is absolutely a joy when it comes time to use it. So thank you for that. You know, all these decisions, they have big consequences and sometimes they make all of us smile. Sometimes it makes some of us smile and others of us frown. But they're all trade-offs and no doubt, Matt, you've had some decisions in the language design and maybe even in the implementation that you look back and think,
Starting point is 00:42:03 if I could take that back, I would. So we're not going to ask you now. We're going to ask you on the other side of the break. You've talked about your favorite parts of Ruby, which is extendability, as well as the community, which is so important. But we're going to ask you about any design decisions that, you know, if you had a second chance,
Starting point is 00:42:21 if you're designing that new language next year, you wouldn't put it in. So stay tuned, and we'll talk about that on the other side of the break. Full Stack Fest is sponsoring this show. It's a week-long full-stack development conference, September 5th through 9th in Barcelona. If you haven't seen this conference, check it out. You're going to love it. FullStackFest.com. They have a total of 16 speaker slots open and yes, call for papers are open right
Starting point is 00:42:51 now. They're open until May 14th. So don't wait. Talks are 40 minutes long each, including Q&A, DevOps, infrastructure, UX, browser technology, mobile, backend, distributed systems, machine learning, AI, IoT, wearable technology, robotics, you name it, you can talk about it at Fullstackfest. It's a Fullstack conference, end-to-end, September 5th through 9th, 2016 in Barcelona. Head to Fullstackfest.com. Once again, September 5th through 9th, 2016 in Barcelona, Fullstackfest.com. Until then, Adam from the Changelog sent you. Alright, we're back with Matt. And Matt, we could probably camp out
Starting point is 00:43:33 all day on design decisions. Yes. We don't have all day. We have 20 years to cover, so we'll be moving along, but you mentioned some of your favorite things about Ruby. Extendability, the community. The block.
Starting point is 00:43:49 Is there anything that you regret in terms, yeah, the block, absolutely. In terms of design decisions, whether they were initial or even over the years, that you say, eh, probably not my finest moment. Can you share that with us? The biggest regret was I took too many from Perl. Oh, like some of the global variables,
Starting point is 00:44:18 like the dollar sign, colon, stuff like that. Yeah, magic variable things or something like that. So at the very early stage of designing Ruby, I wanted to create a scripting language that could replace Perl. So I took many things from Perl.
Starting point is 00:44:34 So my primary goal was that everything Perl can do, Perl could do, should be done by Ruby as well. So I took many things out of Perl, but I should have thought that Matt,
Starting point is 00:44:55 thought more about the features I took, just because at that time, my scope is too narrow down to scripting language. Ruby itself is not really a script language anymore. So it's a general purpose programming language, right? Now, so in that way, the features, some features are too specific to scripting. Like, you know, those
Starting point is 00:45:28 special global variable is very handy for the small programs like, you know, the 10 lines of code or something like that. But, you know, once you write bigger code, that kind of magic features
Starting point is 00:45:44 makes implementation more complex or behavior more complex to understand. So I regret the many of them. So those features are gradually becoming obsolete
Starting point is 00:46:00 these days. No one uses the magic variable any longer, but we implemented implementators still support those things. That makes our implementation even more complex
Starting point is 00:46:16 or error-prone. So I regret those kind of features. They're good for golfing, but not much else. Golfing and scripting. Golfing. Indeed.
Starting point is 00:46:31 So you mentioned that Ruby started off as a scripting language in your mind and as it became generally used and generally useful, it's now a general purpose programming language. One thing that also happened in the early 2000s was the advent of Rails, which exploded in popularity, as you well know, and alongside it, Ruby exploded in popularity, moving beyond the bounds of the community that you had built over maybe the first nine or 10 years of Ruby's existence now to a much larger community. So much so that many people look at Ruby as a web programming language and not a general purpose programming language and not a general purpose programming language.
Starting point is 00:47:25 Your thoughts on that perception of Ruby being web-focused as a language? I have kind of mixed feelings. I'm happy with the title of the web programming language. Ruby is very good at web programming thanks to Rails. And then, you know, writing web application using Rails means
Starting point is 00:47:52 the programmers have to write their programs in Ruby. So that's okay for me. In contrast, some programmers hesitate to think about the use Ruby out of web. Like Ruby can write anything. Like, you know, the infrastructure managing like a chef or puppet or maybe some other features.
Starting point is 00:48:21 Like writing desktop application. You can write desktop application in Ruby. You can write script application in Ruby. You can write scripting in Ruby. You can write the infrastructure managing in Ruby. Or you can write even the mobile app or even you can program embedding system in Ruby. So even though I'm happy with the title of web programming language,
Starting point is 00:48:43 but I also wanted to know them, the Ruby can be usable beyond web. Yeah, I think that's fair. And I think many people who learned Ruby because of Rails or came to Ruby because of Rails, any of those came for Rails but stuck around for Ruby. And it won them over even more so than the web framework and they then take it into all the different areas of their programming
Starting point is 00:49:13 needs and like you said, you find it in many places, not just the web. A good example of that though, Jared, is your own personal take on it. Before the show started, I'm not sure if it made it into the audio for the listeners or not, but you had said that Ruby to you is the thing by which you judge all languages. So I'm not sure how Matt feels about that. We'll ask him, of course, but just that Ruby, I'm not sure how you got to Ruby, but maybe that's an interesting story as a side note. But I can imagine it's probably similar.
Starting point is 00:49:47 You came for the Rails, but you got to Ruby and you loved it. And then now it's your barometer. It's the thing you judge all things on to see if it's the language that fits for you. Yeah. Yeah, so I mean, absolutely it is. And as I look around the field and all these interesting new languages are popping up. Matt's as a language person, I'm sure you're keen on many of these. And so I look at each one and I say, hmm, can I write three dot days dot ago in this?
Starting point is 00:50:22 And I use that as a test or can I extend it to even get that kind of a feature? Right. Or that kind of a statement. But, Mats, how does it feel? Because you were influenced by so many different languages. We mentioned a handful of them. Perl, Python, Smalltalk, Lisp. Yeah.
Starting point is 00:50:39 Now you're being an influence. Your language that you designed has influenced Clojure. It's influenced crystal very very much uh elixir groovy um rust swift what does that feel like to have you know created this language that you pulled in ideas from all these other places and now your language is being used as a barometer for quality or as an influence for new languages to be created Yeah, so I have considered myself as a some kind of language Geek or like a wannabe in a programming language, you know as time goes by
Starting point is 00:51:19 surprisingly my masterpiece Ruby becomes so popular mostly thanks to Rails and it started influence other programming language or other programming language designers so that is so honor for me you know I feel like I
Starting point is 00:51:39 now become a member of the broader community of language designer. You're now elite. Yeah. Part of the elite. Yeah, not really elite, but, you know, me a member of the programming language designer community.
Starting point is 00:51:58 So I'm pretty happy about that. Maybe there's an extension to that. So not so much just your happiness with your influence, but while we're here on this topic, maybe a bit of advice. Let's say there's a language designer or a budding language designer or a future language designer listening to the show right now or years from now, and they've got you, someone who's been down a long road 23 years with ruby so far uh studied many languages now part of the elite club what advice would you give back
Starting point is 00:52:35 and could you give back to influence future language designers in a positive way what what advice you may have said some of the things so far, like positivity, happiness, and things like that, but what's one core thing you think you could share with a language designer out there? Few years ago, the Dave Thomas, our Dave Thomas, we have a lot of Dave Thomas's out there. So our Dave Thomas, one of the programmers, told in the conference keynote that the programming is a process of designing a domain-specific language for the application.
Starting point is 00:53:18 So in that sense, every programming is a design of the DSL or API for that particular application. So every programmer is or should be language designers. So take my advice as an old language designer. Mind design and mind psychology. We programmers often focus on technologies. We are human. We are people. So we have minds and feelings. Those feelings influence our productivity or effectiveness.
Starting point is 00:53:54 So when you design anything like an API or language or anything, think about how you or how users feel about those designs. That kind of thing is the key of good design of API and language and the programming in general. So that is the reason I said mind design and mind psychology. I was going to say, we're kind of curious, maybe your thoughts on a few particular languages. You mentioned, I think it was before we started the show, that you had listened to our show on Elixir. And you also mentioned that you're interested in listening to our show on Haskell. Some of our listeners are interested in your thoughts on Elixir as a language and on Go
Starting point is 00:54:52 as a language and any other languages that you find interesting that are up and coming. Could you share your thoughts on those with us? So when I designed Ruby in the early 90s, the computers had only one CPU. So we didn't have to care about the parallelism. We did have concurrency, but we didn't care about the parallelism. So we didn't have multi-call. But these days, everything is multi-call, everything is parallel. So we have tons of computers in cloud. So we have many calls in a laptop.
Starting point is 00:55:40 So now we have to care about the concurrency and parallelism. If I knew about this future, I care more about the concurrency in the design of my language. So in that sense, I'm very interested in the design of Elixir. Elixir is based on Erlang, which is the very concurrent programming language. The key of the multi-core and the better concurrent model. So we are trying to address that kind of concurrency in Ruby 3, but Arlon has long history of concurrency, and they have done very good things in providing parallel programming.
Starting point is 00:56:28 We look up that kind of history and we have to learn a lot from design of Erlang and design of Elixir. For the future of Ruby, I guess, when you know, what you like about Elixir, what you like about Erlang and what you like about Go and their focus now that there is a future, obviously, and there is this now an awareness of, you know, 128 cores and concurrency and things like that, you know, back in nineties when you were designing Ruby, you didn't have that concern. And now there is. What can you say about the path to give Ruby concurrency? What can you say about the future that Ruby has when it comes to concurrency? Mm-hmm. So we have several ideas for future Ruby concurrency. So the first one is some kind of the streaming process, like adding some kind of the pipelines to the language.
Starting point is 00:57:33 And then those pipelines process that data, probably. Those pipelines process data in parallel. And then the other idea is providing some kind of the, you know, the more isolated things than threads. The most bad things about threads is the data
Starting point is 00:57:53 sharing. So the thread can look into the other thread access. Those kinds of shared states is the source of all review. So we could provide some kind of isolated capsule
Starting point is 00:58:10 of the parallel execution. So those capsules can be communicated via like some kind of a channel like the routine has. In that way, so we can avoid data sharing. So we can provide the share nothing model
Starting point is 00:58:30 like a language like Elixir provides. We are experimenting on those ideas right now. So maybe a year or two, so we will decide which idea to pick, and that will, the idea will gradually come into the Ruby 3. So Ruby 3, what's,
Starting point is 00:58:53 I guess anybody listening to that's got to be excited who is a huge fan of Ruby, you know, having a path of concurrency and having in quotes what we've had talked about on the show before that you mentioned Joseph Lim, uh,
Starting point is 00:59:07 having proper support for concurrency was something he had actually had said about his departure from Ruby and his, uh, his desire to create Elixir. Um, there is a path, uh, how,
Starting point is 00:59:20 how far out? I know that it's difficult to project things like that, but is this a year or two? Is it half a year? What's roughly the timeframe people can get excited about for the future movie? So we are open source, so we don't provide any specific roadmap,
Starting point is 00:59:40 but in my mind, I hope it will be released before 2020. Okay. Well, let's... We're getting near the end. We've got roughly 15 minutes left in our scheduled show timing, so let's
Starting point is 00:59:58 go ahead and take a break. When we come back, we have a Slack room for those who support the show, uh, change law members or change logger, as we call them. Uh,
Starting point is 01:00:09 if you're a fan of the show and you want to support us as well, you can go to change law.com slash membership to learn more about that. But you get access to this private Slack channel. And in there, we dropped the message that, Hey, we're having mats on the show today. This is really awesome.
Starting point is 01:00:24 Anybody have any questions and a lot of questions came up around am ruby so we'll go into this break when we come back we'll talk a bit about am ruby and what we can expect from it and kind of some things you can see for the for the future of it and maybe even how you get the the government of japan to sponsor it so that's kind of interesting so we'll take this break we'll talk about that on the other side and also of course We'll be right back. There's no algorithms involved. It's me, it's Jared, and the rest of the ChangeLog team hand-curating this email, keeping up to date with the latest headlines, links, videos, projects, and repos.
Starting point is 01:01:10 And to get this awesome email in your inbox every single week, head to changelog.com slash weekly and subscribe. All right, we're back from our break with Matt's. This is the tail end of the show, Matt, but we've got so much more to cover, so much rich history of this awesome language called Ruby that you created 23 years ago. And, you know, Jared and I, we've been, you know, hosting this show, The Change Log, for a while, and we've had the likes of Go on here.
Starting point is 01:01:44 We've had the likes of Jose Valim come on here and talk about Elixir and air but now will be on air is is maybe any envy that he might have or those who are involved in you know steering Ruby in the right way any envy they might have around concurrency and dealing with you know you know just compatibility and things like that and so Matt, Mats, take it away. I mean, that was a good answer you said in the off air, but say as much as you like here on air about that. You know, I am pretty happy about working with Ruby. You know, it is good language.
Starting point is 01:02:40 Sure, I say that. You know, it's quite challenging. You know, we have to solve many technical challenges and that is quite amusing for us as programmers. So we are pretty happy about working with Ruby, but sometimes we feel frustrated to keep compatibility. So we have millions of Ruby programs out there. So if we make any incompatible change, so that would break so many Ruby programs.
Starting point is 01:03:17 So due to, I don't like that word though, so social responsibility. So we are very conservative to make incompatible change. For recent years, the keeping compatibility is our primary goal of the design and enhancement
Starting point is 01:03:38 of the Ruby programs. So that compatibility things sometimes hinder us to make progress. So in that way, I sometimes envy the other programming language, namely minor programming language, so that they can make big change very easier.
Starting point is 01:04:04 You have a lot of, as you said, millions of Ruby applications out there. And as you said, you have the social responsibility. And so that's holding you back from progress. Sometimes, yes. Which is expected, right? I mean, it's a known fact, right? Once you have baggage, so to speak, and not in's known fact right once you have baggage so to speak and not
Starting point is 01:04:26 in a negative way once you have baggage you must carry that baggage yeah and uh that can sometimes stop you from chasing those new shiny objects but you'd mentioned also that that m ruby is one way you get to to sort of tease that uh that part of you that gets to chase the shiny objects, gets to do something interesting. So I'd mentioned that we have a Slack room with members in it that chime in when we ask them to about, you know, we have a guest coming on and they had some questions around the future of mRuby and things like that. What's interesting, and I guess with mRuby, as it relates back to this tickling of the Envy thing
Starting point is 01:05:08 for you with other languages? So yeah, working on the other things than Ruby, like mRuby is a subset of the Ruby language that targeted to some kind of embedding system, like embedding in applications or embedding in systems and devices. Like, working on that kind of things is quite refreshing. In addition, I have been working on the other toy programming
Starting point is 01:05:36 language named Stream, which is, you know, the Stream language is very early stage, so no one uses it. So it's quite easy to the drastic change. So these kinds of experiences are very refreshing for me. Let's focus on MRuby first. And we do want to have a few questions on stream. But on MRuby specifically, it looks like you started it in 2012. As you said, it's for for embedding whether inside other programs or
Starting point is 01:06:06 on devices what's the status of it is it is it production ready are people putting it on devices and then like does it have a future roadmap or does it just kind of follow Ruby's advancements and keep parity
Starting point is 01:06:21 the status of MRuby is quite close to production-ready. So some companies already use MRuby in their products. For example, a company in Brazil created some kind of payment devices embedded in MRuby. So if that device understands the credit card, debit card, and Bitcoin, then those kind of the systems can be configured using Ruby, so with embedded MRuby.
Starting point is 01:06:54 The other companies in Japan, SIPs, Internet Router, embedded to MRuby, They use MRuby to provide the routing configuration in Ruby or maybe the character user interface using MRuby. Some other companies are experimenting with MRuby to be embedded in DR systems. The examples are, for example, the microsatellites, like satellites with five inches squared, piggyback with the rockets, then go around over the Earth for a year or two. Then those systems is configured by MRB. So when you say rocket, you mean like a rocket ship? Yeah, rocket. Nice.
Starting point is 01:07:50 Okay. I have Adam's attention. Yeah. You say rocket ship, my ears go up. One thing about this in your readme for MRuby, it says this is sponsored by the Regional Innovation Creation R&D Programs of the Ministry of Economy, Trade, and Industry of Japan. Anything to share with us on that, how that got set up, and I don't know, the details of that relationship and why they're supporting it so much? Yeah, I have been working on the local government of the prefectures in Japan.
Starting point is 01:08:26 So Fukuoka Prefecture is one of them. So during the work with the Fukuoka government, they applied the government funded project. So they got granted. The grant was originally designed for some kind of the hardware stuff. So it was quite difficult to explain to them. So they asked us, where did you install those facilities or something like that? Yeah, it is software.
Starting point is 01:08:54 No, no facility. It's not a real thing here, okay. No physical things. Or that kind of things. But somehow we got granted. So with that granted, we organized some kind of things. But somehow we got grounded. So with that grounded, we organized some kind of joint venture. So in those processes,
Starting point is 01:09:12 so we implemented MRV. You know, the most important thing is a deadline. You know, we open source, we usually have no deadline. We do when we do. We do when we can or something like that. So it might take years to implement. So I had the vague idea of implementing
Starting point is 01:09:38 the smaller implementation of Ruby language. But implementing a language processor from scratch is kind of a huge task. So it is quite difficult to start. You know, the
Starting point is 01:09:57 first step is the most biggest step. So that grant forced me to make a big first step. They helped us to make, made me, they forced us and helped us to make a first step. Then after two years in 2012, so we finally made it open source.
Starting point is 01:10:23 So I guess going back to maybe something Jared asked, I'm not sure if we got full clarity, at least it's a little unclear to me, but his question was around the advancement of mRuby and if it's closely tied to, because it's Ruby 1.9 compatible. Is mRuby your outlet for progress as we talked about when it came to the envy,
Starting point is 01:10:48 or is it something different? Is it, is it tied to Ruby's Ruby's progress? Yeah. Yeah. And held back by maybe even it doesn't have that same, that same handicap. So M Ruby itself is the base, you know,
Starting point is 01:11:07 the ISO Ruby standard, so that we cannot make, you know, arbitrary change to the language. In that sense, I sometimes feel similar frustration. But, you know, MRV implementation is subset, so we can drop mobs. So it is held back now, but if you wanted to, you could break away. Is that what you're saying?
Starting point is 01:11:32 Okay. The implementation is a subset of Ruby, so you can avoid a lot of the traps or the things that you don't necessarily think are required to support. Right. But in terms of the language semantics, it conforms to the ISO standard. And so in that way, it is tied to the language.
Starting point is 01:11:52 Correct. Which makes sense because it is Ruby for embedded. So you want it to be the same languages as much as possible. We're running out of time. Let's talk about Stream a little bit. You mentioned influences from Ruby, which makes sense. Erlang, other functional programming languages. It looks like very much the Unix philosophy. Can you tell us, you gave us a brief overview, but give us a little bit more. When you started it, you say it's still just a toy or something
Starting point is 01:12:24 that you're playing with. Do you see this becoming your next big thing, or is it just that outlet to play around? Yeah, just the outlet to play around. So, as a side job, I write articles for the Japanese programming magazines, mag magazine, so about the programming and the programming language. So as a, as an example of that article, so I designed the small toy programming languages based on the idea of the streaming programming. So I named it Stream, double E, S-T-R-E-E-M. So then I put it as a backup.
Starting point is 01:13:15 I put my repository into GitHub. So last year, no, the end of that, December 2014, so almost a year ago. So then someone found my anniversary. Back then, yeah, yeah. Someone put that things into the, you know, the hacker news and it was buzzed so much. You know, it was amazing.
Starting point is 01:13:51 Back then, I had only 200 lines of, you know, the syntax description. So virtually nothing. But it was buzzed. We had a lot of the issues in GitHub. It was not supposed to be open, supposed to be public. But it was just a backup. But then someone found my repository.
Starting point is 01:14:21 You're a victim of your own success in that way. Yeah. And finally, so I got the pull request from the other programmer. So, okay, you describe your language in the article. So I implemented your language. Wow. I only described my language in the article. And I only put the 200 lines of the syntax description,
Starting point is 01:14:47 and the other one implemented my programming language. Yeah. Since then, I modified a lot, but it is still based on the interpreter, the AST interpreter, which is written by the other one the other guy right i guess as jared had said we are kind of run out of time as much as we would love to keep you here matt and keep talking to you about this rich history because it's fun for us hopefully it's
Starting point is 01:15:17 fun for you as well to yeah it was fun you know take the time to to go back and think about man where did i where did this come from? How did I get here? Why am I here? And it's interesting to take that same thing and share that with the listening audience. And as a listener of the show, Matt, which I'm still blown away by, Jared, I can't believe that Matt listens to the show, which is cool. I love that. But Matt, we often ask those who come on the show who their heroes are. And there's, you know, several, several times that, uh,
Starting point is 01:15:53 that you're somebody else's hero. And so generally the question is who's your programming hero, but in this case, who's somebody who's influenced you to be the match you are today to be the you know the the mats that uh that has led mini swana through the ruby and has this you know has this match is nice and so we are nice kind of community that's come and followed him who has influenced you who's your hero that made you made you who you are today? My primary framing hero is Larry Wall, who is a design pro. Not really as a language designer, but as a leader of the community. So he has a sense of humor in his keynotes and he has sense of his sense in the design of program software his works like a patch our end and then Paul all of them are
Starting point is 01:16:57 very helpful to programmers so that kind of attitudes and that kind of sense of humor is my role model. So my primary programming hero is Larry Wall, definitely. You have any secondaries? Alan Kay, who designed the future of programming by providing the object-oriented programming. And then John McCarthy, who provides the idea of Lisp and the idea of the very nifty programming language. Very good heroes there.
Starting point is 01:17:32 Well, Matt, this is a chance for you to share whatever you think you might want to share. Is there anything else that Jared and I may have left out? Any important detail in this 23-year history of Ruby that we might have missed? Anything you want to share that you've got on your mind at all before we close out? Yeah, we are still working on Ruby 3.
Starting point is 01:17:54 We have tons of ideas, but we are still open to new ideas. Like, you know, we worked on Ruby for last 23 years. So we sometimes become narrow-minded. So we need fresh ideas out of the community. So submit any ideas to our issue tracker, bugs.rubylang.org. We may not be able to accept all of them,
Starting point is 01:18:27 but at least the reading new ideas are very refreshing for us. We'll link your Ruby issue tracking system up in our show notes. And that's an interesting thing you said there too, because one other question we tend to end with, which I'll just ask because why not? It's something you kind of teed up in a way,
Starting point is 01:18:49 but feel free to extend it if you like. We ask, how can the community support you, support Ruby? So I guess one way to share ideas through your bug tracker, what other ways, what other things out there are in Ruby that you can point people to? How can people step in and help Ruby see progress? So people
Starting point is 01:19:13 consider Ruby as my programming language. So it's designed by me. So it's designed by a person. But in reality, Ruby has long been a language designed by the community. Of course, I lead them and I make final decisions. But still, so many ideas and so many implementations are from community.
Starting point is 01:19:46 So the Ruby is our programming language. The idea and the use case and the pro request from the community to form the language. So if I haven't had a community, I couldn't make up Ruby. So Ruby wouldn't be Ruby without community. Well, there you hear it. So if you're out there and you're writing Ruby code
Starting point is 01:20:12 and you have some influence or you would like to share some influence back to Ruby, there's Matt's invitation to say that Ruby wouldn't be Ruby without you. So if you're listening to this and you're excited about these 23 years of history of this language and the future of this language, then you can be a future Matt. Either step in and help M.Ruby,
Starting point is 01:20:34 step in and help Ruby, or however, step in and share what you have back to Ruby and back to the community. Matt, I want to thank you so much for, you know, I know English isn't your first language, and I know that it's tiring to speak English as not your primary language, but I really appreciate you stepping out like this and sharing your story in your non-Native language
Starting point is 01:21:00 because there's so many people out there who really care about you and care about your language and care about the future of programming and really appreciate the influence you've had on it. And so to come on this show today and sit here with Jared and I and share what you have, it's just an honor to talk to you like this and to get a chance to help you share this beautiful story of Ruby and this awesome history you have yourself. With that, we're going to close out the show.
Starting point is 01:21:28 So listeners, thank you so much for listening to the show. If this is your first time listening to the show, sad face, go to changelog.com slash podcast and subscribe in iTunes or your podcast app. We also have two emails we ship out. One's called changelogweekly, so go to changelog.com slash weekly. The other one is called changelognightly, and obviously that one's nightly, so go to changelog.com slash nightly. Those are two awesome emails we ship out
Starting point is 01:21:55 that keep everyone up to date on what's fresh, new, and open source. One's editorialized, one is nightly, and sort of the catch-all of everything that's interesting that's happening on github so if you want to catch up and stay up then then uh go ahead subscribe to those but that is it for this show today so fellas let's uh say goodbye goodbye thanks matt bye bye thank you thank you for having me. you

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.