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