Summarized using AI

Intimate Chat with Matz

Yukihrio "Matz" Matsumoto and Evan Phoenix • November 01, 2012 • Denver, Colorado • Talk

The video titled "Intimate Chat with Matz" features Yukihrio "Matz" Matsumoto, the creator of Ruby, and Evan Phoenix discussing the evolution of Ruby programming language during RubyConf 2012. The format departs from traditional Q&A sessions, integrating audience participation throughout the discussion.

Key Points Discussed:
- Programming Community Engagement: Matz expresses gratitude for the Ruby community, emphasizing his joy in engaging with developers during events and sharing insights about Ruby's development.
- Mutability and Immutable Collections: A significant portion of the discussion revolves around the idea of incorporating immutable collections into Ruby, inspired by other programming paradigms. Matz mentions considering the introduction of immutable data structures as gems and reflecting on the potential benefits without fully committing to changing Ruby's mutable nature.
- Historical Context of Ruby: Matz reminisces about the early days of Ruby, sharing anecdotes about its modest beginnings, including only a few hundred users initially. He recalls that Ruby's creation was largely a hobby, driven by the desire to create useful tools rather than commercial interests.
- Future of Ruby's Concurrency and Performance: The conversation highlights the evolution of threading and concurrency within Ruby, discussing Matz's changing views on threading over the years. He reflects on the limitations of the global interpreter lock (GIL) and considers future solutions to enhance concurrency in Ruby, emphasizing community input and collaboration.
- Version Management and Compatibility: The conversation touches on maintenance challenges with multiple Ruby versions. Matz reflects on the need for maintaining backward compatibility while introducing new features, particularly in upcoming Ruby 20.
- Audience Interaction: At the close of the formal discussion, audience members ask questions covering various topics like Ruby's Ripper library, JSON compatibility, and the philosophical aspects of programming.

The session concludes with a call to action for developers to engage with Ruby 2.0 and help identify issues ahead of the final release. Matz reinforces his passion for Ruby and the philosophy of creating tools that enhance developer happiness, reaffirming his commitment to the language's evolution and community-driven improvements.

Intimate Chat with Matz
Yukihrio "Matz" Matsumoto and Evan Phoenix • Denver, Colorado • Talk

Date: November 01, 2012
Published: March 19, 2013
Announced: unknown

We're doing the Matz Q and A differently this year. Submit your questions throughout the conferences and come see Evan and Matz discuss them!

RubyConf 2012

00:00:17.609 I have the the format of this if you've been to previous your recounts usually it's just math sort of standing up there
00:00:24.180 all by himself in a big open room with just the barrage of questions what we're going to do here is I have sort of six
00:00:30.539 or seven questions that will get into kind of riff off of them and we have another mic so I maybe what I'll do is
00:00:36.329 get a volunteer who could help me hold that Mike and then whoever if you have
00:00:42.090 questions in the audience that 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
00:00:49.020 hopefully our discussion kind of get things turning and you want to ask stuff that I didn't get into so I've got the
00:00:55.440 bike here whilst will do that sort of a little towards the end the softball question softball how was denver did you
00:01:01.410 like denver denver the last time it was in the conference was in suburb yeah but
00:01:07.560 about the airport yeah but this time is the downtown so much little little more
00:01:12.720 walkable than last time I say yeah and unfortunately I have no no time to
00:01:18.030 secret on the town yet no but I'll tomorrow extra added extra days so so
00:01:24.420 what you're saying is if someone wants to show you around the town they should just make make reservations with you
00:01:30.030 some local here who wants to who wants to be Matt's tour guide basically please
00:01:35.040 so there's an opening there if anybody hint hint wink wink gonna have mats on your on your hip the whole day so maybe
00:01:41.909 talk to him afterwards so okay so real questions yes now that
00:01:48.780 we're all warmed up so this one is very specific but will kind
00:01:55.140 of make it more general which was have you looked at closures reducers can we get immutable collections so that Ruby
00:02:01.409 can copy closures strategy which I that's a very specific question like the larger question here would be have you
00:02:07.860 thought about what kind of say immutable data structures those kinds of things that you think
00:02:13.390 would be interesting to have either native into Ruby or as a gem or have you thought about those kind of things in
00:02:19.510 the context of Ruby much well the actually that we cannot remove those
00:02:25.840 mutable collection from Ruby it's not really anymore so so so the
00:02:33.480 but I admit that the benefit of the immutable data structure like the
00:02:39.730 immutable us could set so maybe we can
00:02:45.400 see if it goes well and in Ruby or not by having gems of that that data
00:02:52.180 structures of it I don't know about the future but if everyone is that if
00:02:58.920 everyone is that can data structure in a new program so it might be a possible to
00:03:04.989 get it this data structure into that standard would be but I'm not sure here's a related question are you
00:03:10.659 confused by the closure and just other languages and things use of the word
00:03:19.200 persistent to meet immutable that throws me off all the time have you seen that I was talking about we have persistent
00:03:25.540 hashes and I think of you saving of the disk or something I don't know what anyway that's just that's just me I
00:03:31.720 guess yeah it happens sometimes well yeah as well you know they're not from da na structures functional programming
00:03:38.470 backgrounds yeah they're the word persistence is mean a little bit different yeah yeah it means disks and
00:03:45.310 stuff to me it means gonna be there next time right so this is sort of a you know ruby is
00:03:52.060 going to be 20 soon so looking back over sort of the 20 years is there a feature this is we get this question every year
00:03:58.870 so maybe it's changed but is there a feature of Ruby that you wish you done differently or looking back is there
00:04:04.840 something that you wish you'd done sooner or maybe not done well the the biggest thing is always it
00:04:12.459 answered yeah so the biggest things I should have removed what the dust some
00:04:18.489 kind of the weird magical over variables like Dallas class or something like that at the beginning of the design the Ruby
00:04:26.009 I borrowed many things from Paul just because you know I wanted to I wanted to
00:04:31.830 do the tasks to that sure can do so so I
00:04:37.650 borrowed the I boarded the functions the
00:04:42.900 string operation functions as a string method and a board regular expression I
00:04:48.870 brought several things out of Peru but you know these kind of much purpose too
00:04:54.779 much you know so thinking back those early days was there you know like Larry Larry
00:05:02.189 wall was always fond of saying or fond of telling the story about like you know he wrote pearl because he had this crazy
00:05:07.889 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
00:05:15.060 you were just like this would be cool to build it the letter I'm Emily the person
00:05:21.539 who want to solve the something by making tool but you know I very very
00:05:27.870 love to create tool sure so I don't care about how to use the tool so I just
00:05:34.680 wanted to make it no absolutely um you know I'm a to master the character do
00:05:41.189 you think we're the first you know five years or so of working on Ruby hard you
00:05:46.860 know before you know because I think it's what one thing that's interesting is at least I personally don't know a
00:05:52.710 lot about you know I've heard kind of anecdotes about the history of Ruby before say 2000 so boom will call that
00:05:59.550 pre brave Dave Thomas if you will pretty Dave Thomas right so but it was it hard in those early days because you were
00:06:05.639 kind of you know if if you were working on it by yourself and you're working on because just because you wanted to build a tool did you get discouraged did you
00:06:12.029 get like maybe this is an odd thing I should waste my time on or something like that yeah the first say five years there was I
00:06:20.370 don't know name maybe less than a few hundred people using Ruby right in Japan
00:06:26.610 hall only and then you know but it was a hobby back then my hobby so
00:06:34.379 when when you do so you don't say this is my sometimes I feel like that people
00:06:40.949 do yeah some people do but most people don't yeah people who like to fish yeah yeah so they they could catch the fish
00:06:49.710 or not but it's not wasting time right is it same for me so earth it I consumed
00:06:57.569 a lot of time for gaming Ruby Mae creating Ruby but it'll respond it was
00:07:02.729 fun this is great fun for me so the after the five six years of effort
00:07:08.550 effort yeah so I didn't I don't regret anything yeah those first those early
00:07:15.090 years I mean I know that I've seen the the original IRC transcript where Ruby
00:07:20.310 gets there's like the discussion which it might name this thing I've seen those what in those early days was it you know
00:07:26.699 i know that i'm pretty sure dave tells the story about like finding ruby on some ftp server under the lang folder
00:07:33.479 that kind of thing be like what is this thing i think i'll play with it that was that how people found it just sort of
00:07:39.569 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 so back
00:07:47.129 then we have the something named annette news yes and we posted the Ruby source
00:07:55.139 code in the net use the source code group in 95 December 95 in Japanese domestic
00:08:03.270 grouped so there are few few hundred Japanese hackers found ya found the Ruby
00:08:10.409 language and a few few days later so we formed at the mailing list so we had
00:08:17.190 started discussing about the language and bugs and the the very first the mail the mailing list is the from my friend
00:08:24.240 so congratulation about the releasing us off yeah your program language the second one I found the bag
00:08:31.219 the third one was euke okay I fixed it well it's great uh-huh they then first
00:08:38.010 one is I have another bag that goes on the Gotham so for last last 15 17 years
00:08:45.810 so how many are those are many of those people still in the Ruby keep still in
00:08:51.329 the Ruby community ah yes I'm with them okay yes okay interesting out of out of
00:08:57.959 first 200 yeah exactly well you know some of them you know they go off and find other things or they get busy or
00:09:03.870 whatever yeah absolutely that's interesting so um back to the questions here so I guess
00:09:12.930 it's been brought up in a bunch of talks and it hit it got asked a bunch of different ways in the the questions here
00:09:20.759 with people kind of wanted to hear your thoughts about what you think is going to happen with a threading in in ruby in
00:09:27.540 see Ruby and we could riff off that to talk about like what your feelings are about actors and fibers and stuff like
00:09:34.740 that just kind of your general feelings about them okay okay it's a buck in
00:09:42.380 99 keys so i thought the trading was a good idea to the back then we have a
00:09:48.779 single conceive you were single machine so we don't have to care but using multi
00:09:54.149 core I didn't expect that so I this the
00:09:59.339 popping stress may make some pattern the Sun struck up
00:10:06.029 program structure make easy so I integrated I i somehow implemented the
00:10:12.449 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
00:10:19.680 situation has changed the last five six years so then then the problem it comes
00:10:25.880 so so I used to be a fan of the wedding
00:10:31.680 but I actually changed my mind last ten years okay so doctor and data model is
00:10:39.269 much better okay so would you would you would you want to see you know there's all kinds of actor libraries and stuff
00:10:45.360 like that would you would you want to anoint would you want to make one the standard one or what you are you happy
00:10:52.500 to just have you know because I think that you know actors you know different
00:10:58.170 implementations of actors can do different things can be implemented different ways and so you know i think you're probably
00:11:03.720 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 wouldn't have actors sort of
00:11:09.600 built in so that maybe it batched what you were thinking a little closer now yeah duh
00:11:15.259 you know the bit the very reason the Ruby is loved by so many people is ruby
00:11:20.910 is designed by me myself which is knows about language would use if we crew use
00:11:25.980 the language but I item I don't consider myself as that they know the threading
00:11:31.709 guys and a polo concurrent guy so that I am not i don't think i can make the
00:11:38.209 right decision about that dr. library or that's ready ok so the I'd love I'd
00:11:45.569 rather ask you guys to propose any discuss about the concurrency model for
00:11:51.839 future will be but but read then then propose ah some kind of that future
00:11:58.860 standard concurrency model for Kirby language and that's a good sort of yeah
00:12:04.100 the situation will be different from information to information like a we see
00:12:09.990 Ruby has the week threading model like a due to that I interpreted global lock
00:12:16.199 but the we just don't have any problem since we did you don't have yet you need legal legacy we happy right exactly yeah
00:12:22.589 I think that that's another thing they're sort of em Ruby so M Ruby doesn't have threads and you don't
00:12:27.870 intend to ever and have threads either right yeah since M Ruby is is targeted the the smallest target of their movie
00:12:34.559 is that the teeny computers so we cannot have any operating system support for
00:12:41.370 the income currency right okay and and sort of relate to that
00:12:47.329 so if people I've kind of seen people doing the little interesting experiments with em Ruby and I guess like one sort
00:12:53.939 of use case that people have for using am Ruby on like a multi-core amazing machine would be like
00:13:01.829 having multiple em Ruby instances sort of her native thread is that sort of that's kind of one common thing that you
00:13:07.620 see happening or yes yes emily is very small by footprint I come it requires
00:13:15.329 less than 500 lawl kilobytes and in our inter machines and less than hundred
00:13:21.709 kilo on your own I'm CPU so it says it work was so so small footprint so you
00:13:29.059 can easily create many virtual machines process okay cool
00:13:37.660 another house sort of housekeeping question and this is kind of been brought up
00:13:43.220 before by me sometimes by other people some other times what is your feeling about the like the standard library and
00:13:50.209 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
00:13:56.689 your feeling on that should we continue to pull things out like doing still need a breve Darby that kind of thing yeah
00:14:03.229 you know the at the beginning of the 18 we da era
00:14:09.049 which is 78 years ago so you know the since we didn't have the usable Jerry
00:14:18.139 yet and I know ruinous yet so we had a
00:14:23.479 we took the strategy of battery included yo you have you download the Ruby you
00:14:29.359 have everything in it oh yeah I yeah I mean that yes yes I which is the same thing yeah she did that Python did that
00:14:35.929 oh I lost them oh it's back now so
00:14:41.889 where there was a time differential feel their African was allegedly any tricks Virginia
00:14:47.979 but you know time goes on we had rubygems it it is quite easy to
00:14:54.139 implement though the third party library for by clicking 1 1 clicking but so you
00:15:03.859 know then the the battery in quit strategy
00:15:09.009 appears to be wrong in some some aspect like a like a
00:15:15.139 maintainer goes our went weird off so sure we had a maintenance i will
00:15:21.589 understand deliver a standard called so that the reason I we proposed the zenifi
00:15:29.580 Stan revelry so we are under the other way that so we 20
00:15:36.410 will have some earthly library out out
00:15:41.750 for gems okay so it's sort of related to that do you feel like
00:15:47.990 Ruby to can can it break any in credibility and I'll be specific so like
00:15:53.250 right now in 193 we have to yell libraries in the standard lip is it what
00:15:58.770 would 420 would we like there to be just one or is it are we is 20 really focused
00:16:05.730 on that making sure it's exactly compatible just like it was with the priority is the having compatibility so
00:16:12.870 the what other having trouble with the compatibility so we will either have the
00:16:20.000 202 JSON library okay inside just because you know remember the 18 1 is 7
00:16:26.460 which has the small compatibility problem with variables and the there you know that many people
00:16:35.700 claimed we cannot use one in seventh that for a long time maybe years no I
00:16:41.460 remember I hate that penetration yeah I wanted that kind of situation so in your
00:16:47.850 in your eyes where I mean how long would you you know 19 has been around for a
00:16:54.870 very long time 193 is now and you know a huge number of people have moved to 193 now where do you how long would you want
00:17:03.060 say 187 to be around for I mean maybe it's today maybe like now no more
00:17:08.480 deleted off the FTP server kind of thing yeah that's the scorched church policy to
00:17:14.370 release management well I I'm not the release manager so that we cannot say
00:17:19.890 for sure about the one doctored this TV wolf one long a right but we declared
00:17:27.690 the maintenance team declared the 187 will be shut down by
00:17:33.170 june next year okay so you have to start
00:17:38.340 moving on to round nine things like security bugs and stuff yeah
00:17:43.350 not really no longer fix the security problem for 18 after next year so
00:17:51.260 so yeah move on to 19 right now then so the since we try to
00:17:59.179 accomplish one hundred percent compatibility we try yeah so so it is it
00:18:05.490 it should be quite easy to move on from 19 to 20 so so i
00:18:12.470 hope that i believe 18 and 13 will be disappear very soon i mean i think
00:18:18.090 having to sort of two versions that you're maintaining 193 and 20 is probably a lot you know and then even
00:18:24.809 just for since i know that you know well the Roku's in helping out and is in the
00:18:30.659 picture now but before was all volunteers you know other than maybe you and a couple of people that maintaining
00:18:36.299 it even so yeah once we had maintained a five versions of Ruby yellows nightmare yeah
00:18:42.679 so this is a exactly related to that which is so winner when do you think
00:18:48.230 the next so 20 is a big compatibility releases get to a ruby 20 out there well
00:18:54.059 off by the way I'm sure you're going to feel amazing when Ruby 20 gets out there you're gonna be a we did it finally it
00:19:00.240 rated final yeah so when do you think the big the big you know there's got to
00:19:05.789 be features that it will be incompatible that we want to go forward with do you see that as like ruby three shall we
00:19:11.309 could call it ruby three thousand days okay yeah so but is that what
00:19:18.030 you're thinking maybe you know like maybe a ruby three maybe we're looking at you know and I this is maybe you
00:19:23.130 haven't thought of match about that we we've just started about talking about three through all that what we call it
00:19:28.140 post too old now and I'm I'm not sure yet though and we just thought
00:19:33.299 discussion so we encourage you to that to join the discussion on Ruby go in it
00:19:40.260 somewhere and it may be no more global right regex very well I mean like I'm curious to see like how far would you
00:19:46.620 want to push the envelope for incompatibility well so like it because
00:19:51.960 if I if I submit a patch that took the the reg the global or the pseudo global
00:19:58.280 regex things out would that be is that too far no maybe it would be 30 will
00:20:04.680 remove that kinda okay it's interesting to know kind of where you're thinking about in terms of what features are oh
00:20:12.320 we have to have that and what some people are like well let's finally get rid of this thing so yeah and the
00:20:20.660 few things we are considering is the removing some kinda obsolete poly staff
00:20:26.309 and the other language wise but we want to keep the language compatibility as
00:20:31.650 much as poss oh yeah and then we may be we go remove fixing our legacy capi so you
00:20:41.580 the Ruby 30 maybe before for woody 30 that every see extension might be
00:20:49.220 we've written yeah so I think that in this is just now this is just me using
00:20:55.710 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 11
00:21:02.520 8 23 0 18 23 0 18 to 19 especially since 1i whatnot I mean
00:21:10.260 like I'm sure you think of 190 and 193 is being completely different there's
00:21:15.690 very different in my mind at least but you know so if you look at let's say
00:21:21.480 that if you look like a Python 2 where's the Python 3 you almost think they changed enough things for that it was a
00:21:27.600 headache the matters will just changed 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
00:21:34.110 same thing for maybe for a ruby three that we could just be like let's just make it this great language that we want
00:21:39.330 to be using and knowing that people are gonna have to you know recap i'll rewrite extensions or whatever it would
00:21:45.120 be well so i opted to have done after 20 years we I think we define vaguely what
00:21:54.240 the Ruby is I think so too so so the I don't think we have we we have to make
00:22:01.470 any big change on the language ok so the the if
00:22:07.610 even if I have to make a big change in to the implementation but
00:22:15.710 no i don't i don't expect that big that kind of big change for the language okay okay but maybe for the loblolly is ok
00:22:23.539 maybe we had we could make a big addition to the to the final level okay
00:22:30.530 yeah no but actors this event did the structure yeah yeah I know that's interesting okay oh
00:22:37.299 so let's see um I have sort of two more questions so I hope that you out there
00:22:43.789 in the audience have been thinking about questions have you could I have a show of hands of people who are thinking
00:22:50.150 about asking a question or any anyone know we're just your enthralled by
00:22:55.760 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 going
00:23:01.970 to have the people who want to additionally have us chitchat kind of just cover up here in the middle aisle
00:23:07.220 and I'll give you a mic so we'll do that in a sec so be thinking about your question
00:23:12.400 so this is sort of related to like big weird things that Ruby might have so if
00:23:17.809 someone asked like what are your thoughts on likes a prototype based inheritance and what what if ruby had
00:23:22.820 those kinds of weird or not weird it's not that weird anymore right interest other ways of constructing clat like
00:23:30.470 someone i think the this question actually had something like someone inheriting from the singleton class of
00:23:35.570 another object that kind of thing yeah i'm not the true level with a prototype based objectors programming like you
00:23:43.640 know the it is useful for sometimes so that the
00:23:48.830 reason I we provide the singles own methods for Allah prototype based object
00:23:56.150 system but at the same time you know the we are so familiar with the class-based
00:24:02.510 objects esteem so even even on the language like Java Script that everyone
00:24:08.270 we invented class based system on on top of JavaScript yeah so that that indicates we were so close less object
00:24:17.780 systems is so useful on an object aren't system so I'm yeah I'm
00:24:24.020 I admit that this is some use case over the prototype test object system so the
00:24:31.490 Singam Singam methods are good enough for them yeah well I mean and you can do it sort of Lucy you can do it sort of by
00:24:39.320 using you know cloned instead of Duke yes so you can move single two methods around and that kind of thing but I
00:24:45.260 don't think you see people i think i think that if you if someone did that encode that you had to at least that i
00:24:50.780 had to maintain i would probably be very mad with angry with them because it'd be very odd so yes and interestingly in
00:24:58.160 inside of the view most implementation of the javascript it creates that it hit
00:25:03.470 a class oh yeah absolutely yeah if you look at the implementations they all do that like I'm gonna make a thing that
00:25:09.320 looks like this shape like aren't you just making classes at this point yes it's so interestingly they emulate the
00:25:15.980 class on top the prototype is class that is implemented by the class fare system
00:25:21.910 weird very very weird that's a good that's a good segue into
00:25:27.770 another question Arthur what what other languages have you been using playing
00:25:33.320 with lately in your in your spare time now that not because now you know now you do Ruby full time you have to have
00:25:40.220 yet a different hobby right so well is it fishing have you freakin taken up
00:25:46.070 fishing as a hobby yet okay well so I I
00:25:51.260 love to look brokenly look for and later material about about Berryman language
00:25:57.800 recently i rechecked about some JVM best program language like
00:26:03.470 Scala and closure and and then and some we Aghani we ichat about some odd java
00:26:11.990 script this programming language like a coffee coffee script as you as you use
00:26:17.600 and the language image ASX from japanese
00:26:23.000 company and it is the compiler with you need javascript and it's static type and
00:26:28.490 it's compiled into JavaScript it's just so this JavaScript all the way down it's
00:26:34.940 like turtles all the way and interestingly it runs faster than a JavaScript Wow interesting just because
00:26:43.309 you know it it it uses the very drastic optimization like you lining right well
00:26:50.929 I guess if you've static types you can do all you know you can deal the normal static type trickery yep so so the day I
00:27:00.190 translated that the 2d library written in JavaScript box2d into that that blank
00:27:07.490 their language it runs several percent are maybe two times faster than original
00:27:13.520 script you know so yeah google for jsx Missy yeah it's not the adobe product
00:27:20.600 though so you know I mean we've and I don't know if you said or someone else
00:27:26.300 said it that you know like Ruby well we I know that you said that originally Ruby starred as your own list masses
00:27:32.960 list muffin it so do you do any list anymore any closure or any of those kind of things no
00:27:39.100 you're you still using Emacs I say anything so I I i still forgive me max
00:27:44.540 disco dead yeah but no other Liz for a long time we're at small talk he's more talk I've not other than Ruby yeah I
00:27:52.370 have no gesture you small small talk lately yeah yeah
00:27:58.150 so just okay so someone wanted to ask they
00:28:03.380 they actually phrased it as our vm or rbm and i'll just make it more generic
00:28:08.600 which is do you use anything to manage your many different versions ruby on your laptop or you just sort of install
00:28:14.000 them in different places we show them different places ok i will be 190
00:28:20.179 old-school style yellow style that would be 19 will be 18 it will be yep
00:28:25.570 so the the question i'll end with here which is you know so we're looking to 20
00:28:31.280 preview one is now available what can we do to help push 20 preview forward how can we help
00:28:39.500 make sure that as many things get done in it that it's going to hit the timelines i mean how can we've got
00:28:44.570 you've got your 700 royal devoted people here how can we help out uh just just
00:28:52.520 try out Ruby to all so the movie 20 we try to make it compatible but but we
00:29:00.410 still have we know which they have some hiccups in a compact all day and bags so
00:29:05.480 so I we don't want to find them after we released the final ones right so so
00:29:12.980 please try try out your ear on you a rails application or group retrying Ruby
00:29:18.860 to a preview and you have you might see the problem so just just report the
00:29:25.400 house on that yeah I read mine ok great that would help ok so let's let's do
00:29:31.310 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
00:29:37.310 just sec okay now take me
00:29:42.370 Eric get your lazy ass up
00:29:49.870 hey girlie yeah so Matt's oh well I think nope this
00:29:57.410 mics not working out so so Matt so which is your favorite
00:30:03.260 rubyconf wages favorite would be calm yeah or they are like your children you can't you can't judge I
00:30:10.360 love all of it cause I attended you know the the different conference has
00:30:17.240 different tastes like a ruby cough is the lubricant really we have the Ruby cocky conference in back in Japan and
00:30:23.000 which is comfortable since I have I can't speak in Japanese and we have you Rocco and I you might know
00:30:31.520 that euro co is healthy in different city each year so at the end of the conference the audience decide to next
00:30:40.370 city just like all Olympic Olympics wow that's that's crazy but that is crazy yeah that's crazy those europeans and
00:30:47.600 Europeans they're great they are pretty great yeah and we have this several
00:30:53.210 other conference like who becomes china we in two weeks later are we going to attend that and then we've got ya
00:30:58.820 everywhere so how much how much are you traveling these these the last a year or two years actually
00:31:05.390 nine times this year and this too big maybe you are we have five times a year yeah
00:31:11.650 hey oh right is this working yes it's just yeah hey so I was wondering what
00:31:18.679 the developers are Ruby are using Ripper for and if you plan on keeping it around in the future uh
00:31:25.090 you mean the quality of a pro yeah yeah I don't know anybody using am I using
00:31:31.580 reproach I'm not the quality / / so so we agree but who originally who wrote it
00:31:37.970 original meanie LOL oki who is the author of that rack or not all right
00:31:44.480 okay and yeah we are not going to remove it from the Ruby 200 any innocent future
00:31:52.190 so it'll be there but you know when no one internally has been working on ya ali but it does it it doesn't mean we
00:31:58.970 are not maybe that's an opening for some contribution yeah it doesn't mean it's
00:32:04.700 all fun and it abandoned wanted anything you know duh no quote ever peruse rails
00:32:10.600 nobody will talk all CC for a long time either so you know and it didn't go anywhere for a long time so
00:32:17.500 I look it's on it's just quiet I love that uh the new hash syntax is very JSON
00:32:25.940 oriented is there a plan to make it fully jaesung sort of compatible where you can do strings instead of symbols
00:32:33.730 how would that look what that look like like quote foo quote colon yeah like you
00:32:38.900 can do it in in JavaScript with JSON yeah in JavaScript the the fundamental
00:32:44.750 key is strings but in Ruby the the basic key is symbols they are different so so
00:32:53.299 making it the more JavaScript like so we have to remove symbols or the make
00:33:00.440 symbols compatible the strings or something like that and that we once tried the this I remember I remember
00:33:06.710 this compatible to the other strings but that that was tragedy we removed that it
00:33:12.020 was very it was very odd for you as those of you who didn't who didn't see it was very strange I have to say no
00:33:18.970 but the strings that the quote after after a damn followed by Colin it we
00:33:28.250 this but there might be a place for that for symbols yes okay
00:33:35.350 so we had a really interesting discussion at decamp recently about what
00:33:40.550 would you be doing if you had enough money where he didn't have to worry and out of that came an interesting question
00:33:46.310 that I think is it just makes you think a little so what
00:33:52.760 do you think the most important problem is that programmers could be working on and if you don't have an answer that's
00:33:59.570 cool maybe what do you think the the most
00:34:04.960 the project that you've seen that most helps humanity maybe is some lofty
00:34:10.730 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
00:34:17.170 believe that the most important problem you have to solve is your problem yeah
00:34:23.120 yeah your problem yeah
00:34:29.080 and in general input it will push for human being I don't know maybe the
00:34:36.260 scalability like a scale of the default the multi-core or supercomputer that's
00:34:41.510 all anybody talks about now is the the the looming scalability problem i'm i'm
00:34:48.410 not sure but the the technical detail but in general the human being must face
00:34:53.630 to solve the scalability problem I
00:35:00.190 guess bit of a follow up on that I know you answered it last year but I know a
00:35:05.930 lot of people are talking about it on Twitter can you comment a little bit on the future of the G IL we killed on the
00:35:12.440 wet the global interpreter lock but we sort of touched on that a little
00:35:18.479 bit early on but if you wanna you wanna mention it again okay the coachee they
00:35:23.549 have guy once try to remove the global interpret its global lot ah torture
00:35:30.799 Grove a lock he wants removed and then he put the fine-grained lock everywhere
00:35:36.690 and it makes a ruby soul slowed significantly slow so you don't want that
00:35:42.410 and if maybe for maybe for Ruby 3000 yeah maybe three so yeah I got it I got
00:35:48.839 it we have we have two major reason for that so
00:35:54.359 that the one the first one is that we have the legacy capi which which prevent
00:36:01.220 effective the thread tape model I can I can attest that is a big problem the
00:36:08.160 second one is the two to implement the thread self virtual machine we have the
00:36:13.769 thread safe data structure everywhere which is quite difficult to implement so
00:36:19.619 so we if we are invested in now and we
00:36:25.289 had good time with time so we can it is not serial to get impossible so so so
00:36:32.849 let in the future so let's it there maybe maybe we have the gill but maybe instead what we do is who I know that
00:36:39.239 the do that 20 is going to have bitmap marking so that we're going to have better cop in you know memory usage
00:36:44.969 across children process that kind of thing maybe don't is there is there a place maybe in the scope of things where
00:36:51.690 we have some sort of communication mechanism built in so that you can easily communicate with another Ruby process anyway so I
00:36:58.759 really love to like early am you know you could channel he's only seven messages back and forth I really love
00:37:05.099 the architecture of the unique home so the having got about multi-process the
00:37:12.749 name going back and forth and communicate know that that kinda are the
00:37:18.989 concurrency is the best way for see Ruby in a new future
00:37:24.839 okay or there may be no J style so having a
00:37:30.500 asynchronous so Ruby Ruby three-point oh all callbacks
00:37:36.640 maybe with fibers with fibers there we go hey Matt so we have a talk two days ago
00:37:45.380 or yesterday about jruby and comparison JRuby with MRI and the performance
00:37:50.810 differences and they show there was like a very big performance difference between running jruby and JPM and
00:37:57.830 running MRI I just wanted to ask you I thought you were at that talk and so I just want to ask you ask you what you
00:38:04.070 think about it performance between yes what do you think about JRuby and the
00:38:09.170 performance improvements that Jay Ruby's been yeah yeah yeah yeah see Ruby well they are sitting on it that the showed
00:38:15.560 of giant lady am told I in some aspect we I am with them so that you know there
00:38:24.890 are millions of smart people behind JVM so the JVM development is so heavily
00:38:31.940 invested so but at the same time we we implemented our own virtual machines we
00:38:38.180 can do anything we want that's it that is that is found so that's what our
00:38:43.400 prime so at first though curse though you know the the the
00:38:49.000 joy and curse comes sometimes pretty often like a black me like I'm a
00:38:54.680 language lover so I enjoy myself for a long time but it's it's sometimes as a
00:38:59.810 curse oh yeah yeah I understand the iodide what you mean I I do understand
00:39:04.910 yeah by the way it's oj JVM so the
00:39:11.110 since this April the Koichi is fully working on improving your full time so
00:39:18.290 they he's making the Civic seven even a for the last few months so we're going
00:39:24.110 the 19 and 20 will be better so better
00:39:29.210 faster bit about the progress is graphic up because she doesn't have to worry about students anymore for all
00:39:36.070 which is be a professor affordability idea that ecology so he was so busy yeah
00:39:41.870 so oh you commented on how you started Ruby as a hobby and then I tried Heroku and
00:39:48.200 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
00:39:53.720 a week and you get paid and there's more pressure i'm assuming no nothing because you know i was i was hired by
00:40:01.940 Heroku as a dub my title is the chief architect Ruby
00:40:07.450 so that means that i'm the chief active of the ruby programming language not the Heroku so so they didn't ask me anything
00:40:15.079 about their business except for attending few conferences okay but what about now that you've you know now that
00:40:21.020 you now that's a full-time job you know and I guess but at nacl you it was
00:40:26.030 you're working on it for the most part full time so maybe when you when you switch from being just a hobby and now
00:40:32.089 someone and I've gone through this myself as well when it's fish from being a hobby said now someone wants to pay
00:40:37.339 you to work on it did that change your your feelings about it to change your mentality like now people depend on me
00:40:42.890 to actually get stuff going hmm I I don't think i have change it's been a while i know but yeah i work foot for
00:40:51.170 work for Ruby full-time for last ten more than 10 years and I don't think I
00:40:56.180 haven't changed yet a bit okay so I love to working on programming language I
00:41:01.280 were working on Rudy so I just continues the work I love great right me
00:41:10.490 and my colleagues often consider ourselves very lucky to be programming in Ruby and we really appreciate that
00:41:16.339 it's developed or maximize for developer happiness and then we start thinking but
00:41:21.470 who develop Ruby you're working in c do you ever feel sorry for not doing enough
00:41:27.380 ruby and too much see well uh
00:41:33.060 my I've heard you say before that you consider yourself a c developer hmm so I
00:41:40.620 my the best programming language i believe is a ruby of course but the
00:41:46.450 scenes the second best idea good do you end up writing I mean like
00:41:52.180 you know I know that you as you're writing a movie and you're doing all these other things do you end up writing a lot of Ruby day to day yeah the the
00:42:00.430 most unreliable emm ruby is written in Ruby itself so then converted into that
00:42:06.280 they are the bytecode so often you use Ruby food writing tools
00:42:12.820 and you know whatever you know what it's like yeah yeah yeah I didn't say that
00:42:17.980 but but my I have the two hats like I am a design of the Ruby language and I
00:42:24.460 working on Ruby 202 to be a better and
00:42:29.590 best programming language Evers and the at the same time as an engineer as a programmer I working on the alternative
00:42:36.160 implementation by myself named am Ruby and which is the
00:42:42.030 Ruby fermentation for the full small footprint and then I here as a programmer yeah I working on
00:42:50.770 em will be and I'm pretty happy about that good all right Benjamin Fletcher I always
00:42:58.000 wondering what you think about the Ruby spec project and if you use it at all
00:43:04.330 for your own description of the see Ruby and if not
00:43:09.340 if you have any other way that you test your own implementation of the language meets what you expected to yeah yeah I
00:43:16.720 was I was going to talk discuss this this topic about the Brian himself but I
00:43:22.540 didn't have time I'm sure Pennell help him it he'll make time for you I think so Brian
00:43:30.240 I'll go for him and that all i can say for now is that we we can improve the
00:43:38.350 communication between the sheer will be quote ever present and respectable
00:43:44.320 do you have you been using we can we want to do that again
00:43:53.220 have you been using so just em Ruby I assume has tests hmm hasn't even
00:44:00.820 rewriting your own tests have you thought about using Ruby's back to help whatever parts of that are the same in
00:44:06.400 EM Ruby that are in normal Ruby have you thought about that much the problem is
00:44:11.980 we have been to several are no problem the concern sure about that that really
00:44:19.420 significant task and that we have several the test specific to our implementation
00:44:26.500 so we don't want import them to sure it would expect sure so but we we need to
00:44:32.410 test them so we have the alternative test anyway yeah and then so in that
00:44:38.470 sense the Ruby spec and our test is some kind of duplicate yeah effort so we have
00:44:44.110 to we need to have some kind of motivation on so on Ruby's back yeah I
00:44:49.630 think one thing that is that when when Brian and I have been working on Ruby
00:44:54.640 spec for however long now we've always we've had this constant conversation back and forth which is when we would we
00:45:00.460 would go into spec a behavior and I think we've talked about this over the years we go into say like okay well when you pass in this set of arguments it
00:45:07.120 does this weird thing and we start to think it's this was this designed or was this just an accident those kinds of
00:45:12.940 things I mean yeah I'm just you know your take on those there's probably a lot of those there's probably a lot of
00:45:18.220 weird cases really like oh well this does well that should be unspecified or it doesn't need to be SPECT or whatever
00:45:25.030 because no one should depend on it whatever be does that seem accurate yeah so the the point is so the Ruby spec
00:45:34.390 diff does step bothered it toward the
00:45:39.810 behavior that we consider the unspecified sure right it's hard to know
00:45:45.490 if was this unspecified Yeah right hello that the reason I said that we have to improve our search okay we're doing
00:45:52.780 pretty good right here last question I think and then we're going to go to the documentary what time is it
00:45:58.450 we're doing on time no one wants to help me here okay
00:46:05.859 all right yeah I was having a conversation with people who work about the null object pattern which Abdi
00:46:12.619 creams written about and haven't used it much personally but one of the discussion pointing up of that they
00:46:17.720 thought was really useful but the fact that it couldn't evaluate to false an OLE object couldn't be false ian ruby
00:46:23.180 was they thought a real barrier to using i'm wondering a way to you what you think of the new object pattern be how
00:46:29.329 hard would be and if it be any interest in extending core we somehow to either
00:46:35.079 create a tunnel object prototype that would befall so you can hurt from or some way to make no objects that were
00:46:42.049 falsely here so this is how can i rephrase your question what do you think that having like to
00:46:49.730 pool on an object makes sense so that in every condition you would say like hey object could you can turn yourself into
00:46:55.730 a true or false now so that people want to do like nil object patterns that could automatically be defined to nil I
00:47:03.349 mean I know how I feel about this but I'll hear how you feel you might hear I feel about it yeah
00:47:10.329 yeah it's quite interesting design decision decision and I I don't regret
00:47:16.040 that so having falls on you as a false barriers a little bit weird when you
00:47:23.270 first read that the in a deli case it is they're pretty useful for many cases so
00:47:29.540 I don't read it that no so the question would be that so right now there is no
00:47:35.020 how be specific there's no coercion protocol in a condition so if I said if
00:47:40.400 abs the only way that that condition will be true is it oh yeah I understand so so
00:47:47.180 the ob's that we don't like say like oh just observe a tu bhool method oh let me call that and then local yeah yeah I
00:47:53.839 understand that I'm sorry yeah so yeah I I thought about that several times before
00:48:01.190 that but it it slows down the interpret executions significantly so I don't
00:48:07.670 think we don't want that my thoughts since I've got the mic haha
00:48:12.799 is I think in fact so you know we've talked to you've talked a lot about the the principle of least surprise which is
00:48:19.160 actually good because we're gonna watch the Y documentary and that's in there and I think that that kind of violates that because I think when you say if aab
00:48:25.549 the idea that this object could say like no actually I'm false haha screw you would be very confusing to
00:48:32.230 would be very confusing to the reader of that code to know you know because if you're trying to figure out how code
00:48:37.609 works you'd have to go and say like every condition I'll let me go out and CEO this is a thing let me go I gotta go
00:48:43.339 now is to find a to pool and you know it sounds maddening yeah I understand that
00:48:48.799 strategy but you know that is but if with me say so we have a lot of similar
00:48:54.589 place in Ruby so the the performance is a bit biggest reason yeah i think that the place that people want that the most
00:49:00.890 especially when they first come to ruby is that zero is not false not worth and so people was like but it's zero but
00:49:07.640 it's you know and i think that i think i think personally i think at hat you got years now of using ruby and using plenty
00:49:14.059 of other languages i personally think that nil and false is the the right so which I mean like see obviously there's
00:49:19.760 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
00:49:26.750 like 18 things that are that are false in like javascript and PHP like an empty
00:49:31.849 array and 0 and a hash was only three key I mean it just goes on and on and on and on
00:49:37.900 very confusing anyway yeah like a pearl energy spring spells
00:49:43.010 anyway so we've gotten very pedantic now so if there's no more questions which it
Explore all talks recorded at RubyConf 2012
+46