 Okay, so we're gonna get started here So I have the the the format of this if you've been to previous Ruby comms Usually it's just Matt sort of standing up there all by himself in a big open room We're just the barrage of questions What we're gonna do here is I have sort of six or seven questions that we'll get into and we'll kind of riff off of them And we have another mic so I maybe what I'll do is Get a volunteer who could help me hold that mic and then whoever if you have questions in the audience You want to ask while we're doing this you can come up and just stand up and then we'll sort of have open questions Because hopefully our discussion will kind of get things turning and you want to ask stuff that I didn't get into So I've got the bike here. We'll we'll do that sort of a little towards the end the softball question How was Denver? Did you like Denver? The last time which was in the conference was in server. Yeah, by the airport But this time Little little one walkable than last time I think yeah, and then unfortunately I have no no time to see route around the town yet. Oh, but I have tomorrow Actually, I think today so so what you're saying is if someone wants to show you around the town They should just make make reservations with you some local here who wants to who wants to be Matt's tour guide basically So there's an opening there if anybody hint hint wink wink you're gonna have Matt's on your on your hip the whole day So maybe talk to him afterwards So Okay, so real questions now. Yes now that we're all warmed up So This one is very specific, but we'll kind of make it more general Which was have you looked at closures reducers? Can we get immutable collections so that Ruby can copy closure strategy, which that's a very specific question I think the larger question here would be Have you thought about what kind of say immutable data structures or those kinds of things that you think would be interesting to have Either native into Ruby or as a gem or have you thought about those kind of things in the context of Ruby much? well the Actually that we cannot remove those mutable collection from Ruby that it's not Ruby anymore so so so But I admit that the benefit of the immutable data structure like the immutable set so Maybe we can see if it goes well and in Ruby or not by having gems of that that data structures I don't know about the future, but if everyone is that if Everyone use that kind of data structure in the in Ruby program So it might be a possible to get it these data structure into that standard Ruby, but I'm not sure Here's a related question. Are you confused by the closure and just other Languages and things use of the word Persistent to mean immutable that throws me off all the time. Have you seen that they're always talking about we have persistent hashes And I think what do you saving them the disk or something? I don't know what anyway, that's just that's just me I guess yeah, it happens sometimes for me as well, you know, they're not from the Structures functional programming background. So yeah, the word persisted it means a little bit different Yeah, it means it means discs and stuff to me. It means gonna be there next time, right? So this is sort of a you know Ruby is gonna be 20 soon. Mm-hmm. So looking back over sort of the 20 years. Is there a feature? This is we get this question every year. So maybe it's changed But is there a feature of Ruby that you wish you done differently or? Looking back. Is there something that you wish you done sooner or maybe not done Well, the the biggest thing is as always answered. Yeah, so the biggest things I Should have removed with the some kind of the weird magic blower variables like the last slash or something like that at the beginning of the design the Ruby I brought many things from parole just because you know, I Wanted to I wanted to do the tasks to that Per can do so so I brought the I brought the Functions the string operation functions as a string method and then I bought a regular expression I brought several things out of parole, but you know these kind of magic variables are too much You know, so thinking back those early days was there, you know, like Larry Larry wall is always fond of saying or it's fond of telling the story about like, you know He wrote pearl because he had this crazy weird data set that he had to work on at the time Was there something that you were working on at the time that you wanted to write Ruby for or is it just you were just like This would be cool to build Yeah, the leather I'm not really the person who want to solve that Something by making tool, but you know, I really really love to create tool. Sure So I don't care about the how to use the tool So I just wanted to make it. No, absolutely You know, I'm a tool master Do you think We're the first, you know, five years or so of working on Ruby hard, you know before you know Because I think it's what one thing that's interesting is at least I personally don't know a lot about you know I've heard kind of anecdotes about the history of Ruby before say 2000 so we'll call that pre brave Dave Thomas if you will pretty Dave Thomas, right? So but it wasn't hard in those early days because you were kind of you know If if you were working on it by yourself and you're working on it because just because you wanted to build a tool Did you get discouraged? Did you get like maybe this is the not thing I should waste my time on or something like that? Yeah the first say five years there was I don't know may be less than Few hundred people using Ruby right in Japan all only and then you know, but It was a hobby back then my hobby So when when you do fishing so you you don't say though. This is where so But most people don't people don't like to fish Yeah, so They they could just a fish or not It's not wasting time right it's it's safe for me. So it was it I Consumed a lot of time programming Ruby may create a Ruby, but it was fun It was fun. It was great fun for me. So the after the five six years of effort effort Yeah, so I didn't I didn't regret anything. Yeah those first those early years I mean, I know that I've seen the Original IRC transcript where Ruby gets there's like the discussion. What should I name this thing? I've seen those what in those early days was it, you know I know that I'm pretty sure Dave tells the story about like finding Ruby on some FTP server under the Langfold or that kind of thing Be like what is this thing? I think I'll play with it back. Was that how people found it? Just sort of those first few years or was it just people that you you know other Japanese developers that you would know You tell hey, you should try out my thing here. So back then we have the something named the net news net. Yes We I posted the the Ruby source code in the net news the source code group in 95 December 95 in in Japanese domestic group. So there's few few hundred Japanese hackers found yeah on the Ruby language and Few few days later. So we formed that the mailing list So we had started discussing about the language and bugs and the the very first the mail the mailing list is the From my friend. So congratulations about the releasing your yourself. Yeah, you are program language The second one is I found a bag The third one was okay, I fixed it That's great. Uh-huh. They then first one is I found another bag That goes on the garden So for last Last 15-7 years. Yeah, so how many are those are many of those people still in the Ruby still in the Ruby community? Yeah, some of them. Okay. Yes. Okay Interesting out of out of first 200. Yeah, yeah, exactly Well, you know some of them, you know, they go off and find other things or they get busy or whatever Absolutely. That's interesting. So Back to the questions here. So, um, I guess it's been brought up in a bunch of talks and it had it got asked a bunch of different ways in the The questions here with people kind of wanted to hear your thoughts about what you think is going to happen with say threading in in Ruby in C Ruby And we could riff off that to talk about like what your feelings are about actors and fibers and stuff like that Just kind of your your general feelings about them. Okay Okay It's a bug in 90 early 90s So I thought the treasure was a good idea. So the bug then we have a single CPU for a single machine. So we don't have to care about using multi-core. I didn't expect that so I this the having threads May make Some pattern that some struck problem structure make easy. So I Integrated I somehow implemented the green threads. That was good enough for back then. Oh, yeah It was good enough for a long time. Yeah, but you know, the the situation has changed the last five six years So then then the problem it So I used to be a fan of the threading that I Actually changed my mind last 10 years. Okay. So doctor and other a model is much better Okay, so would you would you would you want to see, you know, there's all kinds of actor libraries and stuff like that? Would you would you want to? Anoints would you want to make one the standard one or would you are you happy to just have you know? because I think that You know actors, you know different implementations of actors can do different things can be implemented different ways And so, you know, I think you're probably you probably are saying like what we've got threads We're sort of stuck with having threads at some level But would you ever want to have actors sort of built in so that maybe it matched what you were thinking a little closer now? Yeah the You know the bit the very reason the Ruby is loved by so many people is Ruby is designed by me myself Which is knows about language with use who use the language, but I I don't consider myself as a name of the threading guys and I'm polar concurrent guys So I I'm not I don't think I can make a Right decision about the actor library or the threading. Oh, okay, so the I'd rather ask you guys to propose and discuss about the concurrency model for future will be but but thread then then propose Some kind of the future standard Concurrency model, okay, and that's a good sort of Yeah, and the situation will be different from the information to information like we see Ruby has the weak threading model like due to the Global lock, but we just don't have any problem since we did you don't have any legal legacy We have right exactly. Yeah, I think that so another thing there is sort of mruby So mruby doesn't have threads and you don't intend it to ever have threads either, right? Yeah, since mruby is targeted the the smallest target of them will be is the tiny computer So we cannot have any operating system Support for any concurrency, right? Okay, and and sort of related to that So people I've kind of seen people doing the little interesting experiments with mruby and I guess like one sort of use case that people have for using mruby on like a Multi-core amazing machine would be like having multiple mruby instances sort of pernative thread Is that sort of that's kind of one common thing that you see happening or yeah since mruby is very small by footprint like it requires less than 500 kilo kilobytes and in Intermachines and less than 100 kilo on your own CPU so it since it requires so so small footprint so you can easily create Many version machines in the process. Oh, okay, cool Another house sort of housekeeping question And this has kind of been brought up before By me sometimes by other people some other times What is your feeling about the like the standard library and if if it should be cleaned up? But I know that we're sort of in in in the midst of kind of making it into gems And what is your feeling on that should we continue to pull things out like do we still need a brief dot rb that kind of thing? Yeah, you know At the beginning of the one eighth Error which is 78 years ago. Yeah, you know the Since we we didn't have the useable Jerry yet, and I know we really see it so We had a we took the strategy of battery included Yeah, so you have you downloaded Ruby you have everything in it. Oh, yeah, I mean that Which is the same thing Python did that Oh, I lost the power it's back now so So Well, there was a time differential field there for a moment. There's a little glitch in the matrix but in you But you know time goes on we had Ruby gems It is quite easy to implement the the third party Leverly for by clicking one one clicking but so you know Then the the butter in credit strategy Appears to be Wrong in some some aspect like a like a maintainer goes off went went off So sure we had a maintenance rival in the standard level standard core So that the reason we are proposed the the gemifying the standard rivalry So we are under the on the way, but so we to go We'll have some mostly library out Out for James. Okay, so this is sort of related to that. Do you feel like? Ruby 2 can can can it break any incompatibility and I'll be specific So like right now in 193 we have two YAML libraries in the standard live So what would we for 2o would we like there to be just one or is it? Are we is 2o really focused on that making sure it's exactly compatible just like it was with Priority is the having compatibility. Okay, so the Having trouble with the compatibility So we we rather have the two two Okay, just because you know remember the one age one is seven which has the small compatibility problem with rails and then the You know that many people claim that we cannot use one as seven that for a long time Right, maybe ears. Oh, I remember I hate that kind of situation. Yeah, so I don't want that kind of situation So in your in your eyes where I mean, how long would you you know? One nine has been around for a very long time One nine three has now and you know a huge number of people have moved to one nine three now Where do you how long would you want say one eight seven to be around for I mean, maybe it's today Maybe the now no more delete it off the FTP server kind of thing This that's the Scorched shirts policy to release management Well, I'm not the release manager so that we cannot say for sure about the one The destiny of one eight, right, but we declared the maintenance team declared the one eight seven will be shut down by June next year. Okay, so you have to Start moving on to one nine things like security bugs and stuff We'll no longer fix the security problem for one eight after next year so Yeah, move on to one nine right now then so the since we try to Accomplish the hundred percent compatibility we try at yeah So so it it should be quite easy to move from one nine to two all so So I I hope that I believe one eight and one nine three will be disappear very soon I mean, I think having two sort of two versions that you're maintaining one nine three and two. Oh, it's probably a lot You know and then even just for since I know that you know Well, the Heroku isn't helping out and isn't in the picture now But before it was all volunteers, you know other than maybe you and a couple of people that maintaining it even so yeah Once we had maintained the five versions of Ruby. Yes nightmare. Yeah So This is exactly related to that which is so where when do you think? The next so 2.0 is a big compatibility releases get to a Ruby 2.0 out there Well, all by the way, I'm sure you're gonna feel amazing when Ruby 2.0 gets out there You're gonna be we did it finally if I didn't find yeah So when do you think the big the the big you know There's got to be features that it will be incompatible that we want to go for with do you see that as like Ruby 3 so we could call it Ruby 3,000 So but is that what you're thinking maybe you know like maybe a Ruby 3 maybe we're looking at you know And I this is maybe you haven't thought a match about yeah We we've just started about talking about 3.0 that work We call it post 2.0. Yeah now and then I'm not sure yet though. We just start discussion So we encourage you to that To join the discussion on really cool and it's somewhere and it maybe no more global Rejects very I mean like I'm curious to see like how far would you want to push the envelope for incompatibility? well, so like it because if I if I submit a patch that took the the Regity global or the pseudo global Rejects things out would that be is that too far? No, maybe Ruby 3.0 will remove that Okay, it's interesting to know kind of where you're thinking about in terms of what features are Oh, we have to have that some people are like well, let's finally get rid of this thing. So yeah, and then the Few things we are considering is the removing some kind of the obsolete probably stuff and Other language wise, but we want to keep the language compatibility as much as possible. Yeah, and then we maybe we Go remove Fixing our legacy C API, so you the Ruby 3.0. Maybe before for Ruby 3.0 that every C extension might be We Return yeah, so I think that in this is just now This is just me using the fact that I have the mic and you guys don't but I think it's interesting to look at like You know so Ruby like 1 1 8 to 3.0 1 8 to 1 9 especially since 1 9 1 9. I mean like I'm sure you think of 1 9 oh And 1 9 3 is being completely different. They're very different in my mind at least But you know so if you look at let's say that if you look at like a Python 2 versus a Python 3 You almost think they changed enough things for that. It was a headache They might as well just change a lot just make it an even better language Just go all the way to fix all those things I wonder if you're thinking that same thing for maybe for a Ruby 3 that we could just be like Let's just make it this great language that we want to be using and knowing that people are gonna have to you know rewrite extensions or whatever it would be well, so I after After 20 years we I think we Define vaguely what the Ruby is I think so too. Yeah, so so I don't think we have we We have to make any big change on the language. Okay, so the the Even if I we have to make a big change in to the Implementation but no, I don't I don't expect that big that kind of big change for the language. Okay. Okay, but maybe for the Okay, maybe we had we could make a big addition to the to the standard Yeah, yeah Yeah, yeah, okay So let's see I have sort of two more questions So I hope that you out there in the audience have been thinking about questions Have you could I have a show of hands of people who are thinking about Asking a question or any anyone. No, we're just you're enthralled by hearing us talk. Okay. We've got a couple of people Okay, so I'm gonna ask a couple more questions and then I'm just gonna have the people who want to Additionally have us chit chat kind of just come up here in the middle aisle and I'll give you a mic So we'll do that in a sec. So be thinking about your question So this is sort of related to like Big weird things that Ruby might have so someone asked like what are your thoughts on like say prototype based inheritance and what what if Ruby Had those kinds of weird or not weird. It's not that weird anymore, right interest other ways of constructing Clat like someone I think the this question actually had something like someone inheriting from the singleton class of another object That kind of thing. Yeah, I'm not the truth. Leave over the prototype based object or like You know the It is useful for some times. So that's the reason I we provide singleton methods for prototype based Object system, but at the same time, you know, that we are so familiar with the class based System so even even on the language like JavaScript that everyone we invented a class based system on on top of JavaScript Yeah, so that that indicates we bear so Class based object system is so useful on the object aren't system. So that I'm Yeah, I'm I Admit that this is some use case for the prototype based Object system. So the singleton Syncton methods good enough for them. Yeah, well, I mean and you can do it sort of Lucy you can do it sort of by using, you know, clone instead of do yes You know, so you can move singleton methods around and that kind of thing But I don't think you see people I think I think that if you if someone did that in code that you had to there At least that I had to maintain I would probably be very mad with angry with them because it would be very odd So yeah, and interestingly inside of that few most implementation of the JavaScript It creates the hidden class. Oh, yeah, absolutely. Yeah, if you look at the implementations They all do that like I'm gonna make a thing that looks like this shape. I'm like, aren't you just making classes at this point? Yeah, so so interestingly they emulate the class on top of what I best class that is implemented by the class based system Weird very very weird That's a good that's a good segue into another question Are there what other languages have you been using playing with lately in your in your spare time? Now that now because now you know now that you're do Ruby full-time you have to have yet a different hobby, right? So well Is it fishing? Have you taken a fishing as a hobby yet? Okay. Well, so I I love to look look and we look for and lead a material about programming language recently I we checked about the Some JVM best program language like Scala and closure and and then and some we I mean we I checked about the some Java script this programming language like coffee coffee script as you as you use and then The the language name is JSX from Japanese company And it is the compiler with any Java script and it's static type and it's compiled into Java script It's just so it's JavaScript all the way down. It's like turtles all the way And interestingly it runs faster than the JavaScript. Wow interesting just because you know it It uses the very drastic optimization like inlining right well I guess if you've static types you can do a lot, you know, you can do all the normal static type trickery. Yep, so so the day now translated that 2d library written in JavaScript box 2d into that that language their language it runs several percent Maybe two times faster than the original script Yeah So they're Google for JSX Maybe yeah, it's not Adobe product So, you know, I mean we've and I don't know if you said it or someone else said it that you know like Ruby well, we I know that you said that originally Ruby started as your own list Matt's list So do you do any lists anymore any closure or any of those kind of things? Are you still using emacs? I Still programming emacs this but yet. Yeah, but no other list for a long time. We're not small talk. He's more talk other than ruby Yeah, I have no chance to use small small talk lately. Yeah, yeah So Just okay, so someone wanted to ask they they actually phrase it as RVM or RBM and I'll just make it more generic Which is do you use anything to manage your many different versions ruby on your laptop? Or you just sort of install them in different places We I show them different places. Okay, right old school will be one night old school style Yeah, we'll be one night. We'll be one day. Yeah, it will be yeah So the the question I'll end with here, which is you know, so we're looking to to preview one is now available What can we do to help? Push to Oh preview forward. How can we help make sure that as many things get done in it that it's gonna hit the timelines I mean, how can we've got you've got your 700 loyal devoted people here? How can we help out? Just just try out the Ruby 2. Oh, so the Ruby 2. Oh, we try to make it Compatible, but but we still have we know we still have some hiccups In the compatibility and the bags. So so I We don't want to find them after we've released the final one, right? So so please try try out your around you a web application on Ruby trunk Ruby to our preview and then how you have you might see the problem So just just report us on that. Yeah, I would mind. Okay, great. That would help Okay, so let's let's do questions from the audience now. So who's got questions. I know I know that you guys do I'm gonna put my laptop down now. It's a second. Okay Get your lazy ass up So so Matt, so which is your favorite RubyConf Which is favorite RubyConf. Yeah, are they all like your children you can't you can't judge? I Love You know the the different conference has different tastes like a RubyConf is the RubyConf Right, and we have the RubyKaigi conference in back in Japan and which is comfortable since I have I can't speak in Japanese and then we have the Uroco and you might know that Uroco is held in different city each year, so at the end of the conference the Audience decide to next city just like Olympic Olympics. Wow. That's that's crazy But that is crazy. Yeah, that's crazy. Those Europeans. Yeah, Europeans They are great They are pretty great. Yeah, and we have this several other conference like RubyConf China We in two weeks later. I was going to attend that and then we got yeah everywhere So how much how much are you traveling these these those last year or two years actually nine times this year? And this is too big. Maybe usually a five times a year. Yeah Is this working? Hey, so I was wondering what the developers of Ruby are using Ripper for and if you plan on keeping it around in the future You mean the core developer? Yeah, I don't know anybody using using Ripper among the core developer so So we who wrote it originally who wrote it originally Minelow Aoki Who is the author of the rack? Oh, right? Yeah, okay And yeah, we are not going to remove it from the Ruby tool or any So it'll be there, but no one no one internally has been working on. Yeah, but It doesn't mean we we are not maybe that's an opening for some contribution. Yeah It doesn't mean it's all phone was an abandoned one Anything, you know, no core developer use rare Nobody worked on Colt CC for a long time either. So, you know, and it didn't go anywhere for a long time. So I love It's on it's just quiet. I love that The new hash syntax is very JSON oriented. Is there a plan to make it fully JSON? Sort of compatible where you can do strings and set of symbols How would that look what would that look like like quote food quote colon? Yeah, like you can do it in in JavaScript with JSON Yeah, in JavaScript the the fundamental key is strings But in Ruby the the basic key is symbols. They're different. So so making it the more JavaScript like so that we Have to remove symbols or the make symbols compatible with strings or something like that and that we once tried I remember I remember this compatible to the strings, but that there was tragedy We removed that it was very it was very odd for those of you who didn't who didn't see it. It was very strange so unfortunately I have to say no but the strings the quotes after They're followed by colon We this but there might be a place for that for symbols. Yes, okay So we had a really interesting discussion at a de camp recently about what would you be doing if you had enough money where you didn't have to worry and out of that came an interesting question that I think is It just makes you think a little so What do you think the most important problem is that programmers could be working on and if you don't have an answer That's cool. Maybe what do you think the the most? The project that you've seen that most helps humanity maybe is Is some lofty topics my friend? I don't know. We're all the way at the end here I don't know if we've got the brain power for this one. I Believe that the most important problem you have to solve is your problem Yeah, yeah, your problem. Yeah and In general for the for human being, I don't know maybe the scalability Like a scalability for the multi core or super computer That's all anybody talks about now is the the the looming scalability problem I'm not sure but the technical detail But in general that the human being must face to solve the scalability problem, I guess a bit of a follow-up on that I know you answered it last year, but I know a lot of people are talking about it on Twitter Can you comment a little bit on the future of the GIL? We show on the wet global interpreter luck But we sort of touched on that a little bit Or early on but if you want to you want to mention it again, okay? The Koichi the young guy once tried to remove the global global log Grow of a lock he once removed and then he put the fine-grained lock everywhere And it makes a ruby is so slow significantly slow. So you don't want that It is maybe for maybe for ruby 3000. Yeah, maybe 3,000. Yeah, I got it. I got it. We have We have two major reason for that so that the one the first one is that we have the legacy API which which prevents effective The thread safe model I can I can attest that that is a big problem The first the second one is that to to implement the threat safe Virtual machine we have the the threat safe data structure everywhere, which is quite difficult to implement so so we if we Invested enough and we had good time so We can't it is not sure it's going impossible. So so so let's so let's There maybe maybe we have the gill But maybe instead what we do is so I know that the do that to oh is gonna have bitmap marking So that we're gonna have better cop Mem, you know memory usage across children process that kind of thing maybe don't is there is there a place Maybe in the scope of things where we have some sort of communication mechanism built in so that you can easily communicate with another I really really love like early, you know, you can send those easy these seven messages back and forth I really love the the the architecture of the unicorn. So that having got Multi-process then in going back and forth and communicate. So that that kind of the the concurrency is the Best way for she will be in the new future, okay Okay, or the maybe the Node.js style. So having a So Ruby Ruby 3.0 all callbacks Maybe with fibers with fibers there we go Hey Matt, so we had a talk Two days ago or yesterday about J Ruby and Comparison J Ruby with MRI and the performance differences and they show there was like a very big performance difference Between running J Ruby and JVM and running MRI. I just wanted to ask you I thought you were at the talk and so I just want to ask you what you think about it Performance between JVM. Yes. What do you think about J Ruby and the performance improvements that J Ruby's been getting? See Ruby. Well, they're sitting on the that the short of giant JVM So I in some aspect we I envy them So that you know that there are millions of smart people behind JVM. So that JVM development is so Heavily invested so but at the same time we we implemented our own virtual machines We we can do anything we want. That is that is that is found So that's it. Well, our primary is also a curse though curse though, you know that you know the The joy and curse comes sometimes pretty often like like me like I'm a language lover So I enjoy myself for a long time, but it's it's sometimes as a curse. Oh, yeah, yeah, I Understand that I had much of him. I do understand. Yeah by the way, so J JVM so the Since this April the Koichi is fully working on Improving your full time. So they he's making the significant effort the last few months So we are going the one night and two all will be better. So better faster The progress is gonna pick up because we are going to Koichi doesn't have to worry about students anymore. For instance Koichi's been a professor before He was so busy. Yeah So You commented on how you started Ruby as a hobby and now that you're at Heroku and it's your job Do you worry about that changing your philosophy or outlook at all now that you have to do it? 40 hours a week and you get paid and there's more pressure. I'm assuming no nothing Just because you know I was I was hired by Heroku as a My title is the chief architect Ruby So that means that I'm the chief architect of the Ruby programming language, not the Heroku So so they didn't ask me anything about their business Except for attending a few conferences But what about now that you've you know now that you now that it's a full-time job, you know And I guess but NACL you it was you were working on it for the most part full-time So maybe when you when you switch from being just a hobby and now someone and I've gone through this myself as well When it switch from being a hobby to now someone wants to pay you to work on it Did that change your your feelings about it? Did it change your mentality like now people depend on me to actually get stuff going hmm? I I don't think I have changed. It's been a while. I know but yeah, I work for for work for Ruby full-time for last 10 more than 10 years and then I don't think I haven't changed yet a bit Okay, so I I love to working on programming language. I read through working on Ruby. So I just They continue the work. I love Great Right me and my colleagues often consider ourselves very lucky to be Programming in Ruby and we really appreciate that it's developed or maximized for developer happiness And then we start thinking but you who develop Ruby you're working in C Do you ever feel sorry for not doing enough Ruby and too much C? Well My I've heard you say before that you consider yourself a C developer. Mm-hmm. So I my the Best programming language, I believe is Ruby of course, but the C is the second best I believe Good, do you end up writing? I mean like, you know, I know that you as you're writing in Ruby And you're doing all these other things. Do you end up writing a lot of Ruby day-to-day much? Yeah, the the most standard library in M Ruby is written in Ruby itself So then they convert it into that they are the bytecode. So the I often use Ruby for writing tools and you know, whatever, you know, just like, yeah Yeah, I didn't say that but but my I have the two hats like I'm a designer of the Ruby language and I working on Ruby 2.0 to be a Better and best programming language ever and at the same time as an engineer as a programmer I working on the alternative implementation by myself named M Ruby and which is the Ruby implementation for the for small footprint and I Yeah, as a programmer. Yeah, I working on M Ruby and I'm pretty happy about that Hi Benjamin Fleischer, I was wondering what you think about the Ruby spec project and if you use it at all for your own description of the C Ruby and if not if you Have any other way that you test your own implementation of the language meets what you expect it to Yeah, yeah, I was I was going to talk discuss this this topic about that Brian himself But I didn't have time I'm sure for now. He'll make time for you. I think so Brian I'll go for him and then all I can say for now is that we we can improve the communication between the C Ruby core developers and respect people Do you have you been using we can we want to do that again? Have you been using so does M Ruby I assume has tests Have you been rewriting your own tests? Have you been thought about using Ruby spec to help? Whatever parts that are the same in M Ruby that are in normal Ruby. Have you thought about that much doll? Yeah, the problem is we have we have to several Not problem the concern sure about that the Ruby segment second test and then we have several The test specific to our implementation. So we don't want in both them to sure Ruby spec Sure, so but we we need to test them So we have the alternative test anyway Yeah, and then so in that sense the Ruby spec and our test is kind of deep duplicate Yeah, so we have to we need to have some kind of motivation on So on Ruby spec. Yeah, I think one thing that is that When what when Brian and I have been working on Ruby spec for however long now that we've always we've had this constant Conversation back and forth which is when we would we would go into spec of behavior And I think we've talked about this over the years We'd go in to say like okay Well when you pass in this set of arguments it does this weird thing and we start to think it's this was this designed Or was this just an accident those kind of things. I mean, you know your take on those There's probably a lot of those there's probably a lot of weird cases really like yeah Well, this does well that should be unspecified or it doesn't need to be spec'd or whatever because no one should depend on it Whatever it be does that seem accurate? Yeah, so the the point is so the Ruby spec the step further toward the Behavior that we considered unspecified sure right because it's hard to know if was this unspecified or not, right? That's the reason I said that we have to improve our communication. Okay, we're doing pretty good right here Last question I think and then we're gonna go to the documentary. Actually, what time is it? We're doing on time. No one wants to help me here. Okay I Was having a conversation with the people at work about the null object pattern Which Abdi Grimm's written all about and and haven't used it much personally But one of the discussion point came up of that they thought was really useful But the fact that it couldn't evaluate to false a null object couldn't be falsely in Ruby was they thought a real barrier to using I'm wondering a whether you what you think of the logic pattern be how hard it would be And if there'd be any interest in extending core we somehow to Either create a null object prototype that would be false So you could hurt from or some way to make null objects that were falsely so this is can I rephrase your question? What do you think that having like to fool on an object makes sense so that in every condition you would say like hey object Could you couldn't turn yourself into a true or false now so that people want to do like? Nill object patterns that can automatically be defined to nil I mean, I know how I feel about this, but I'll hear how you do you want to hear how I feel about it It's quite interesting to design decision and I don't regret that so having false and you know as a false virus that little bit weird when you first read but In a daily case it is pretty useful for many cases. So I don't regret that No, so so the question would be that so right now there's no I'll be specific. There's no coercion protocol in a condition. So if I said if obj The only way that that condition will be true is if yeah, yeah, I understand So so the obj that we don't like say like oh does obj have a to bool method. Oh, let me call that and then look Yeah, yeah, I understand that I'm sorry. Yeah, so yeah, I I Thought about that several times before that but it it slows down the interpret execution significantly So I I don't think we don't want that My thoughts since I've got the mic ha ha is I think it but so, you know We've talked to you've talked a lot about the the principle of least surprise Which is actually good because we're gonna watch the wide documentary and that's in there And I think that that kind of violates that because I think when you say if obj the idea that this object could say like no Actually, I'm false ha ha screw you it'd be very confusing Would be very confusing to the reader of that code to know you know Because if you're trying to figure out how code works, you'd have to go and say like every condition Oh, let me go out and see. Oh, this is a thing. Let me go. Oh, I gotta go now So find a to bool and you know, it sounds maddening. Yeah, but I understand that's rusty You know, but if we say so we have a lot of similar place in Ruby So the performance is the biggest reason. Yeah I think that the place that people want that the most especially when they first come to Ruby is that zero is not false And so people was like, but it's zero, but it's you know, and I think that I think I think personally I think I Years now of using Ruby and using plenty of other languages. I personally think that nil and false is the The right solution. I mean like see obviously there's nothing else other than zero anyway, but when you look at like I Don't know there's a bunch like isn't isn't there like 18 things that are that are false in like JavaScript and PHP like an empty array and zero and a hash with only three key I mean it just goes on and on and on Very confusing anyway Yeah, like a pearl amp you spring this falls anyway, so we've gotten very pedantic now So if there's no more questions, which it looks like there's not let's give Matt's a hand