Summarized using AI

Panel: Ruby Core Team

Akira Matsuda and Aaron Patterson • October 13, 2017 • Selangor, Malaysia • Panel

The video features a panel discussion with Ruby core team members Akira Matsuda and Aaron Patterson at RubyConf MY 2017, focusing on the current state and future of the Ruby programming language. Throughout the discussion, they address various questions posed by the audience and collect insights from a Facebook survey.

Key Points Discussed:

- Audience Engagement: Both panelists express appreciation for the vibrant conference crowd and the questions they raise.

- Perceptions of Ruby: They tackle a common notion that Ruby is too simplistic for serious applications, asserting that the ease of Ruby does not undermine its power.

- Hiring Practices: Hiring criteria for Ruby developers often depend on the specific role. For junior developers, basic programming experience is preferred, while senior roles may require more specialized knowledge of Ruby and related languages.

- Ruby vs. Other Languages: There is a discussion on Ruby's position in data processing compared to languages like Python and PHP, highlighting the need for better advocacy and visibility of Ruby's capabilities within the data science realm.

- Core Team Processes: They explain how contributions and feature ideas are handled within Ruby’s core team, emphasizing a relatively open and anarchistic approach initiated by the language’s creator, Matz.

- Ruby’s Development Pace: Comparing the language’s evolution to larger corporate-backed languages like JavaScript, the panelists share optimism regarding improvements, especially with ongoing work like just-in-time compilation efforts.

- Ruby Community: The importance of the Ruby community is reaffirmed, with efforts to foster connections and learning among developers through events and meetups.

- Type Systems: A thoughtful debate arises on the addition of types to Ruby, with opinions differing on the necessity and implementation of static typing within the language.

Concluding Takeaways: The panelists reinforce their commitment to promoting Ruby and improving its ecosystem while recognizing the language's unique community-driven spirit. Their enthusiasm for Ruby's future and their eagerness to adapt and grow with the programming landscape stand out as key themes of the panel discussion.

Panel: Ruby Core Team
Akira Matsuda and Aaron Patterson • October 13, 2017 • Selangor, Malaysia • Panel

Panelists:

- Akira Matsuda (@amatsuda)
- Aaron Patterson (@tenderlove)

Website: http://rubyconf.my

Produced by Engineers.SG

RubyConf MY 2017

00:00:06.520 all right how are you guys doing how do
00:00:13.100 you find the conference so far great yeah yeah yeah this is our second out
00:00:18.500 your first time here both of you mm-hmm how do you feel about the crowd
00:00:24.369 do we like the crowd yeah I like an important first question this this could
00:00:29.480 go really wrong for you yeah I don't
00:00:35.449 know the crowds just okay alex is okay
00:00:41.900 though like loads of oh yeah paying attention yes yeah thank you so much both questions do you have any questions
00:00:48.290 yet yes them in his bag Oh Shh all right
00:00:55.960 so like
00:01:06.620 all right so we're gonna start by getting some questions from the floor okay so we also rent like a few like a
00:01:13.920 surveys on Facebook we've got some questions from people that we know that we want to ask but we're gonna start
00:01:18.930 from a few questions on the floor and then please just state your name and who the question is pointed to it could be
00:01:25.530 for both and what is your question go ahead anybody if not we'll start with
00:01:31.530 the Facebook questions your only transfer is has a question at
00:01:37.030 the end
00:01:56.070 bye
00:02:02.370 you know that
00:02:16.760 this is a strictly Asian question have too much fun that says no I like easy
00:02:34.230 stuff I don't know I mean I watch for
00:02:46.050 the hardest question today I think this is this is probably the face I would
00:02:53.070 make if I met someone that said to me I like hard hard thing I mean I like easy
00:02:58.740 I like easy programming languages I think it's I think it's I don't know I
00:03:04.680 meet some programmers who are like oh I like it I want maybe I think maybe what
00:03:11.130 you might be getting at is that some programmers won't take Ruby seriously because I think it's too easy right they'll say like oh well this is this is
00:03:18.690 just an easy easy scripting language and I can't do any serious like serious
00:03:23.850 business with it and I totally disagree with that I think it's basically if
00:03:31.770 you're if you're just thinking about the programming language that way it's it's just that you haven't scratched the
00:03:37.170 surface yet you're just looking at it and saying like oh that's simple it must not be very powerful when in fact it's
00:03:42.780 just it's very easy it is easy and you can do powerful things with it so it's it's both of those things so I don't
00:03:54.030 understand why people would have that opinion the question I think so I think
00:04:00.810 it does thank you all right so this one comes off from our Facebook survey and
00:04:07.290 it's about hiring so what would be the things that you look for in a ruby program when you're hiring specific
00:04:13.470 skill sets skip a specific knowledge of the language or the framework rails
00:04:18.880 either one of you
00:04:26.740 I'll go first yep I hadn't thought about an answer yet I don't know it depends so
00:04:37.460 it depends on the position that we're hiring for yes so I mean yeah it really
00:04:44.780 depends on the position if we're hiring for a junior developer or just I don't
00:04:50.720 know basic programming experience doesn't have to be with Ruby or anything just any type of any type of programming
00:04:57.260 language as long as they know like basic oo skills and of course like having any
00:05:05.420 experience with Rails is helpful especially it so at github most of our code is in Ruby and it's a
00:05:12.970 really big Rails application so experience with Rails is helpful in our case but we have a lot of teams that
00:05:19.850 just do Ruby stuff not related to Rails as well so as you go into senior
00:05:25.460 engineering then maybe more experience with Ruby and hopefully other languages as well maybe like I don't know we have
00:05:33.470 a lot of different languages C++ C rust different things like that
00:05:39.680 but it just depends on the level well I would take a person who who can
00:05:48.009 enjoy the change who enjoy learning new things because Ruby and Mills is always
00:05:53.380 changing and always getting better so I'll take a person who who wants to
00:05:59.979 learn new things over rather than someone who memorizes all variables API
00:06:07.840 because real TPA will change on the next day or next week alright so we have
00:06:18.130 another question from the crowd please Roger half IP
00:06:29.759 hello guys so I think we know that Ruby is very good with the web community so I
00:06:37.960 mean purveyors go probably we can say PHP is the leading now we are the leaders they are copying us but in terms
00:06:45.129 of like data processing like Python is that way beyond us like all is it I mean
00:06:51.490 like for some reason I think it's very similar language but python is way ahead of us
00:06:57.869 what need to change that in our community or in Ruby itself so that we
00:07:03.009 can be competitive in in data processing or big data and so like that can you guys tell us as we just learned today
00:07:11.199 it's not a very similar language at all as far as I know there are some people
00:07:18.219 working on some libraries for that on Ruby but it's not yet matured you know
00:07:27.849 ruby was designed for general purpose languages first but DHH made it a really
00:07:35.409 a web language so I think there's no other no real job other than web right
00:07:44.830 now so to name some there's a library
00:07:51.370 called pi call which is developed by murat isang m RK and and you should
00:07:59.169 check it it should work and there's a
00:08:04.919 was that hi Ruby project I don't know it's maybe not production
00:08:13.740 ready yet but some people are hardly working on it I think I think that's a
00:08:20.550 lot of libraries so we have a lot of libraries similar to stuff that's available in Python so we have we have
00:08:28.379 some data scientists at work and they use Python and I asked them why don't
00:08:35.039 you use Ruby and they just said well we don't know Ruby and so I think I
00:08:43.409 personally think part of the problem is advertisement like we need to somehow
00:08:50.579 advertise the data scientists like hey Ruby is you can use it we have we have
00:08:56.519 tools for doing this stuff you can do it in Ruby as well I think I think the
00:09:02.120 scientific utilities in Python have already been made popular so everybody
00:09:07.620 knows about them and there's books about them stuff like that so I think what we need is more more advertisement we need
00:09:14.760 a we need or rails of the scientific world something like that
00:09:29.370 Ruby's been around a long time now how has the court and a cure yesterday you said it's no longer Matt's doing the
00:09:35.790 work and but we still know it is Matt's as a language how how is the work effort
00:09:41.730 coordinated around the core team and how has it changed and also how do you feel
00:09:46.860 it compares to some of these newer languages like Russ that have a really clear public process for new features
00:09:53.970 like the IFC process
00:10:00.760 Oh always I'll go first
00:10:09.540 you think about this so so so Matt's is the language designer and I think I
00:10:17.750 think Ruby so Ruby started out as a group of I think hmm the Ruby group is
00:10:27.300 more Anarchy I would say so it started
00:10:32.790 out with just a bunch of hackers sending in patches and Matt's is basically like ya know whatever right he's the he's the
00:10:41.040 BD FL of the project and that's essentially how we how we run it these days it's like anybody can send in
00:10:48.329 anybody can send in patches and propose features and things like that but Matz's
00:10:54.870 the ultimate yes or no on it and I think he wants to keep that keep basically
00:11:01.440 keep that process like he likes that he likes that process of essentially just an anarchist ik group essentially but if
00:11:09.899 you have an idea so I'll give you the pro tips like if you have an idea that you want to get into Ruby I'll give you
00:11:18.089 some extremely good pro tips for actually accomplishing that one is to write a patch that implements it and I
00:11:25.920 would say that 99% of the time even if I like even if I wrote the patch Matt's
00:11:31.769 will ignore it he will have no idea about it what you have to do is pay attention to
00:11:39.480 the mailing list and you'll see every once in a while I think maybe I don't know every month or two there is a
00:11:45.480 developer's meeting in Tokyo and basically Matz is on the on skype or
00:11:53.370 whatever sometimes in person with a bunch of other core team members and they just go through everything in that agenda and force Matz to answer yes sir
00:12:02.870 so what you do is you propose your feature it'll probably get ignored then
00:12:08.040 you put it into the Hat into the developer meeting notes anybody can anybody can add stuff to that agenda so
00:12:13.649 you add to that agenda and then you'll get an answer so that is the pro tip for you
00:12:23.110 yeah Aaron incident very well yeah
00:12:28.270 that's the answer I think so yes we we
00:12:33.400 we introduced that system since last year or like two years ago we do have
00:12:39.950 the developer meeting monthly in Tokyo and we go through the issues on redmine
00:12:49.040 so I would like to say I would advise
00:12:55.270 don't give up if your proposal was ignored because the Matz answer will
00:13:02.330 change according to him his I don't know something like moves or something so
00:13:11.020 even if we your proposals once rejected just copy and paste and create another
00:13:18.590 new issue then it will eventually accept it someday thank you very much for that
00:13:28.720 this is a question from the way we had on our Facebook group for wondering
00:13:36.610 how's your typical day like dealing with Ruby issues
00:13:44.060 oh yeah like are you looking at them
00:13:51.200 everyday like what would you do what's your process like and what do you ignore
00:13:56.570 what do you try and look at so for Japanese Orford those who can read
00:14:02.720 Japanese there's a blog written by Ruby
00:14:10.610 called Naga chica and he writes the blog
00:14:16.370 every day and he wrote and writes about every single Ruby comment
00:14:22.270 he describes all commits so I read that daily
00:14:31.589 and I I build Ruby almost every day
00:14:36.930 really Frank and I are you I used the
00:14:42.190 Ruby to five trunk for my daily use so that I can find bugs quickly
00:14:52.000 is there any specific things that you were looking at recently
00:15:00.370 not really nothing at the moment it's just here in there bugs in there or issues here either I try using Ruby
00:15:08.320 drunk on Rails to find bugs that's what
00:15:13.990 I do we so I do the same thing except reading Naga chicas blog I didn't know I
00:15:21.490 didn't know that he wrote that every single commit even SVN attributes no
00:15:31.450 okay so I use I use Ruby 2.5 I build it
00:15:38.680 pretty much every day and we've we've also deployed it to production at github
00:15:43.740 we I think we rolled it we rolled it back because we only had we only had one
00:15:49.180 server running it and all the other servers were Ruby too for something and we just didn't want to have an
00:15:56.170 inconsistent inconsistent production servers so we were running that in production to test it lately I've been
00:16:04.270 looking at we had a patch a Mon submitted a patch quite a while ago and
00:16:10.570 it was ignored and then rejected and I am copying and pasting that one in and
00:16:16.630 because we needed a feature and it's what it is is we want to introduce some
00:16:22.470 hooks around fork so like before fork or after fork have that in the line as a
00:16:29.620 first-class thing in in language itself because we need that for Oh unicorn and
00:16:35.560 stuff different forking different forking things but as far as bugs are
00:16:42.100 concerned usually usually I only look at when I'm reading through read mine I
00:16:49.150 only look at ones that are around things that we do at work or around libraries
00:16:57.940 that I maintain so stuff like ya know parsing or whatever sometimes I look at
00:17:04.600 open SSL ones but those are the ones the only ones I look at or just stuff that I'm stuff that I'm familiar with or
00:17:12.100 if we run into bugs at work then I usually dig into those ones all right
00:17:18.700 that's cool one all right this is the most asked question what are your plans
00:17:24.610 to keep Ruby competitive with other languages
00:17:32.820 it doesn't have to be personal plans and attend every conference in the world
00:17:38.490 you're almost there hmm well so my
00:17:48.750 particular plans are to continue advertising for Ruby because I love Ruby Ruby programming language and I want
00:17:54.690 people to use it and I'm so happy that I have a job using Ruby so I want to
00:18:00.389 advertise it to everyone and tell people how great it is but also I want to help I want I'm trying to help develop Ruby
00:18:07.559 itself so working on working on the language itself I'm going to be presenting about GC stuff so trying to
00:18:13.470 improve trying to improve those particular things so we can keep pushing the language forward I'm hoping that
00:18:19.580 Vlad's work will be fruitful what if you
00:18:26.159 don't know about him he's a Russian super hacker that wrote a JIT for a JIT
00:18:34.710 for Ruby and it's really impressive so I'm I'm hoping that that'll go forward
00:18:39.899 unfortunately I don't think I'm smart enough to work I hope I hope that he
00:18:46.350 finishes it so I guess my plans are to
00:18:51.779 be Ruby's biggest cheerleader we also
00:19:01.379 have other Vlad's work who is going to be fruitful but fun for that akira what
00:19:07.649 about you so besides writing code as i talked yesterday running a conference
00:19:15.779 and user group in tokyo and what i do there is basically connecting people so
00:19:29.179 my biggest concern is connecting Ruby and rails for example and
00:19:40.960 actually I we have weekly Ruby Tuesday
00:19:46.009 meetup in Tokyo and we have so many guests from overseas like like Aaron
00:19:53.840 Samsung several times it visited us and
00:20:07.370 Ruby Court members in or meetup so you can meet some more really court members
00:20:15.490 when you visit Japan and visit our meetups so please come to Tokyo and say
00:20:22.190 hi to me I wanted I wanted to say I
00:20:27.769 think I think one of Ruby's strengths compared to other programming languages isn't necessarily the language but it's
00:20:34.789 the community surrounding the language as Kara was talking about in his keynote
00:20:39.919 yesterday and I think that so it's important to me to strengthen that like
00:20:46.090 try to help educate people and bring more it's important to me to bring more people into the community so that's why
00:20:54.350 I want to be Ruby's biggest cheerleader you guys don't know about the history
00:21:02.480 actually for the care we meet up is that like a few years ago I went and the few
00:21:09.320 people here as well went to read thought and we heard about this awesome
00:21:15.320 Meeta month weekly Ruby Tuesday meetup in Japan
00:21:20.629 asakusa RV and it inspired us to start up the KL chapter of the movie Meetup
00:21:27.470 and four five years later here we are so thank you very much Acuras on phone for
00:21:34.009 inspiring all
00:21:39.820 and to be honest shock therapy was started because we copied Seattle
00:21:45.830 rv-style suck sorry was started in 2008
00:21:51.920 and sale Robbie was started in back in 2001 I think so we're this with the meta
00:21:59.510 meta meta one more question from the crowd
00:22:05.020 Nick please
00:22:15.399 but how do you avoid governance structure
00:22:32.560 like disaster
00:22:44.120 so one practice is that to avoid Perl 6
00:22:54.590 we decided to release Ruby every year since 2.0 so we're gonna release to 5
00:23:02.400 this year to 6 next year to 7 next next year and maybe we're gonna release 3.0
00:23:13.980 after 2 7 so it's gonna come within 3 or 4 years
00:23:23.770 the the other thing is that Matz is very well I think the whole core team is very
00:23:32.410 sensitive to backwards and compatibility so we make sure we try to make sure that
00:23:37.990 every every release of Ruby is very backwards compatible with previous code
00:23:43.390 or if it's not backwards compatible that the cost benefit is there so like if you
00:23:53.860 have to change your code then there has to be a really really good reason to change change your code like
00:24:01.789 you can keep it yes if you like your source code yes if you like your source code you can keep it but it's like you
00:24:08.720 have to have if it's gonna be incompatible there has to be like some really really good benefit or some
00:24:14.450 reason for you to upgrade like for example going from 1/8 to 1/9 we got it
00:24:19.850 and we had in coatings and of course that broke everybody's code but on the other hand we also got an amazingly fast
00:24:25.580 virtual machine so you're like well oh I don't want to upgrade but on the other
00:24:30.769 hand my program will be way faster so I'll just do it an upgrade there has to be some
00:24:41.240 yeah yeah so so it's important that it's backwards compatible and if it's not
00:24:47.490 backwards compatible there has to be a good good reason why so that's how we avoid Python 3 or strum care as they
00:24:59.220 call it all right we have one more question we have a few more question
00:25:04.320 what is the craziest thing you've seen at a Ruby Mira yeah like a mirror for a
00:25:10.230 conference what an odd question guys a lot of you voted for it I'd like to
00:25:17.970 introduce mommy's words can actually yes
00:25:24.150 we can Google something github.com /
00:25:32.160 mommy
00:25:43.330 yes this guy so this person became a full-time Ruby come here since last
00:25:48.399 month I think he's hired by Cook bad and he's now working full-time on record he made
00:25:56.279 some amazing products one is that opt karat that's a nest
00:26:07.389 emulator really can't get it scroll down a little bit the project is aims to provide an
00:26:14.019 enjoyable benchmark for Ruby implementation say nest emulator written
00:26:22.989 in full pure Ruby and yes it's a ruby
00:26:28.869 benchmark actually it's like this
00:26:37.290 okay let me go quick so another product is you know go back and Quine relay and
00:26:45.780 one this is a ruby script that outputs
00:26:52.950 Scala script that prints these 100
00:26:59.400 languages and goes back to Ruby finally the script looks like can you see the
00:27:08.130 code these are basically how how to
00:27:13.740 install 100 languages
00:27:23.520 so can you scroll up and this a can you
00:27:30.390 see the Lib Lib directory now actually simple or something a vendor maybe QR
00:27:39.090 dot RB no not any vendor sorry it sounded Tom
00:27:45.950 no there at the top top level sorry
00:27:52.640 QR done so this is how the program looks like
00:28:07.100 yes it's a ruby code it's executable and this prints out a scholar script exactly
00:28:15.269 look looks like this languages and
00:28:24.120 finally goes back to Ruby exactly the same code how much time does he have
00:28:33.139 this is the craziest thing I've ever seen in Ruby this is the craziest thing
00:28:38.309 for sure but it I think this is too wholesome for the question I think people were looking for like a scandalous answer trying to think I
00:28:55.700 can't think of anything I mean this is I'm a huge fan of mama and his code this
00:29:03.690 is the craziest thing I've ever seen all right we'll take it we have actually demoed a couple of East code from oh
00:29:12.950 what's that trick yeah so we have actually actually demo trick 2015 and
00:29:21.389 2016 and both office and she is also like super mind-blowing my other my
00:29:29.279 other favorite thing is something that I wrote though I don't wanna go to
00:29:38.179 youtube.com slash tenderlove /ph Ubu i
00:29:43.289 yes pH pH hu b UI
00:29:49.730 Ruby okay Ruby so this this embeds PHP
00:29:57.720 inside of Ruby's so you can execute scroll down a little bit I think I have an example yeah so you can you can
00:30:03.659 execute you can execute PHP inside of
00:30:08.850 your Ruby and you can actually access the access the code whatever you ran
00:30:14.159 from PHP so you can get that out and then and then I it might not say it and in here but I
00:30:21.160 made it so that you could write your views and rails in PHP so you could write your controller in Ruby and then
00:30:29.980 your view in PHP and then you could you could use that in my Ryan Reynolds me
00:30:36.460 but why why yeah why not I mean why why
00:30:44.110 why do 100 language all right now the
00:30:53.740 question for the car please
00:31:03.030 senior question Oscar I have a question when you start the like learning Ruby
00:31:11.770 you hear stuff like Ruby's object brand its language then you see a lot of
00:31:16.929 functional stuff in Ruby like closures like placing closures around like meta
00:31:22.330 programming and other things then you read father and you say and you read that Ruby is not a static language and
00:31:29.590 not a static type language and now with considering adding types to the Ruby language why we shift in birding or use
00:31:37.840 a plan at the beginning and why we doing that wait so the question is why are we
00:31:45.159 adding types yeah why we hadn't dives why we're saying that it's object-oriented but we still have like
00:31:50.679 functional stuff in it
00:31:58.760 I don't understand so why why is it why is it object-oriented and we have
00:32:04.670 functional stuff I don't know I guess I
00:32:11.300 was just Matz was influenced by Lisp and other functional languages as well as Oh
00:32:18.850 what was the other one help me out here small talk eeeh thank
00:32:24.440 you so very oo with FP stuff I think that's why we have both of them as far
00:32:32.480 as types are concerned I don't think we're adding types I mean Matt's talked about type
00:32:43.010 inference but I don't think he likes putting types like putting types into
00:32:49.550 the code itself and I agree with that I like the idea of doing type inference
00:32:55.100 the kind of thing he was talking about is saying like okay well we can let's analyze the code and so for example you
00:33:02.150 have some function the function takes a parameter and you call a bunch of different methods on that parameter
00:33:07.190 right so we should be able to infer that whatever that thing is that you pass
00:33:12.200 into that function it needs to its type is that it needs to respond to those particular methods so we can calculate
00:33:18.290 the types based on that but I don't know that we're ever gonna have something that's like put a typing into like you
00:33:26.210 know types this has to be a string I think the reason the reason is because
00:33:31.880 that might ruin duck typing so for example like Oh string io string io
00:33:40.640 doesn't actually inherit from IO so if you say but you can use a string I'll rather than an IO so if you said this
00:33:48.290 parameter has to be an io well now you can't use a string io there anymore so
00:33:53.710 rather than saying it has to be an IO we need to be we need some way to say oh it
00:33:59.210 needs to respond to write or close or puts or whatever so I hope that is that
00:34:07.010 kind of yeah yes I personally kind of
00:34:14.980 like working on I mean writing optionally type language like like Swift
00:34:25.070 swirling maybe Scala but Matt's hates it so that
00:34:31.409 will never come to repeat I think and we're still discussing about the types
00:34:38.629 so there's no no concrete answer here at the moment but this mama is work started
00:34:46.980 working on types in Ruby three full-time so we'll see his implementation may be
00:34:58.050 next year when we saw it at github we
00:35:04.980 have a private Fork of Ruby that adds types to it so you can actually put a
00:35:12.180 type you can say like oh this parameter is string and you actually type string into that and then we do some type
00:35:18.000 checking some type checking based off of that some static code analysis based off those particular types I think we're
00:35:24.750 gonna the plan is that we'll open source that I'm not sure when I'm not sure when
00:35:30.750 we'll open source it I think they want to have like marketing or something
00:35:36.270 around it but to be honest I'm not actually a fan of that and it's
00:35:42.930 basically because of because of the duck typing duck typing stuff it ruins our our particular fork actually puts the
00:35:50.490 types in so it has to be like string blah and it does ruin the duck typing so
00:35:57.350 I'm not a huge fan but other people at work are so we're doing it
00:36:18.600 hello I know there are many learning resources in English for Ruby but am i
00:36:25.840 right to say that to contribute to Ruby you have to speak Japanese and I know
00:36:35.440 that's not true it's I think pretty much it's true that a large percentage of the
00:36:41.619 core team were Japanese but you don't need to speak you don't need to speak Japanese to contribute at all we have a
00:36:51.160 lot I think so there's two mailing lists there's an English English language
00:36:56.980 mailing list and a Japanese language mailing list and I'm on both of them I speak Japanese so I read both but what
00:37:03.970 happens is basically the conversation if the conversation ever starts on the Japanese light list and it's about a new
00:37:10.540 feature or anything like that it'll just get transferred over to the English language list so any any decisions about
00:37:17.290 the language itself are made on the English English mailing list the only
00:37:23.800 time I've ever seen stuff not go from the Japanese mailing list to the English list is when it's something like a bug
00:37:29.680 like someone just reports a bug and like ok we'll fix it and it just gets fixed so I would say the I don't know 99% of
00:37:41.890 the communication is done in English thank you
00:37:47.380 oh okay hi guys my name is Anton and I want to ask you a really simple question
00:37:53.259 so as I think most of us program to build some products commercial ones open
00:38:00.430 source ones educational ones right but only few of us actually works on
00:38:05.970 language design and the implementation so could you as a guys who really do
00:38:13.390 that thing advise some entry point for anyone who wants to switch from building
00:38:19.900 products to design language and implement that design Thanks
00:38:25.140 it's a it's a question to both of you of course I think just before that like can
00:38:31.869 you clarify like how much other work that you do in programming how much other commercial work that you do in
00:38:38.440 your free time or in just your time in general I don't know right now I'm
00:38:47.380 mostly doing commercial work though I hope to rectify that situation shortly
00:38:59.549 your question is I think your question is interesting though because I would say even among the core team not many
00:39:07.480 not many of the people on the core team are actually doing language work in particular like maybe only Koichi yen
00:39:19.690 and Nobu Koichi and Nobu are the main ones working on the working on the virtual machine like I think most of the
00:39:26.529 other most of the other core team developers can understand it understand it but aren't necessarily working on it
00:39:33.220 on a day to day basis modem yeah I would rephrase my question then so to understand the concept what is the you
00:39:41.289 know most you know what is the best fit as a first step I mean it could be a
00:39:46.299 book it could be a you know some source code base of some language interpreter
00:39:51.400 or compiler or or any resource on the Internet so just
00:39:57.370 top one top two top rear you name it what what works best for you what worked
00:40:03.880 best for you I can't think of anything I can't think of any books off the top of my head but I would say that the rubies
00:40:10.690 rubies virtual machine is highly based around Java's virtual machine so anything that
00:40:16.840 you can learn about Javas vm or GC anything any of those resources should
00:40:22.060 also apply to Ruby itself so if you
00:40:27.640 don't need to think of if you're trying to learn that stuff don't confine yourself to only Ruby because it's
00:40:34.600 generally applicable ideas it's a conceptual thing yes yeah I can't think
00:40:39.700 of anything off the top of my head Google how do I'll give you I'll give
00:40:50.470 you some keywords I will tell you that Ruby's virtual machine is a stack based virtual machine so if you want to go if
00:40:55.630 you want to search for however VMs work search for a stack based virtual machine where is actually the virtual machine
00:41:01.570 that Vlad part of the stuff that he's proposing is what is it RTL an RTL based
00:41:08.770 machine so if you want to learn about there's two different types of VM stack
00:41:14.080 based and and RTL based so Ruby's is stacked Beit current Ruby's a stack
00:41:19.600 based possibly will go to an RTL one but if you want to search for resources google those terms okay okay thanks a
00:41:27.400 lot there's a relatively new
00:41:32.520 implementation of Ruby called M Ruby which is smaller and easier and newer so
00:41:42.760 I think that's the good
00:41:48.500 good resource to read you can read everything I think okay thank you
00:41:56.150 cool do have one more question yep office venue
00:42:04.430 sorry I have actually two questions the first is how would you compare the
00:42:10.350 speed of how ruby is developing in comparison to something like javascript also do you think it makes sense for
00:42:18.720 somebody who's got a rails application going to switch to something like elixir or continue in rails JavaScript and
00:42:27.960 elixir in the same question thanks for thank you first off javascript is a
00:42:35.250 terrible language are you I mean you can
00:42:44.670 run anything you want to on a server anything why would you choose JavaScript so terrible okay so the speed of
00:42:54.870 development I think that's an interesting question and one that I mean
00:43:02.210 interesting and kind of unfortunate question because javascript has a lot of large corporate backers that we we just
00:43:10.260 don't have and I don't know I mean that
00:43:15.690 that definitely impacts it like Apple has a lot of money Apple and Microsoft
00:43:20.730 have a lot of money to throw at the problem and we don't so that's one thing
00:43:29.580 that's not great though we do have I mean we do have full time full time Ruby core team members but still Microsoft
00:43:38.220 right I don't know if there's much more I can say about it than that I do think I do think that Vlad's work
00:43:46.110 will be very helpful for us and his his I don't know I don't want to get too far
00:43:52.440 into the weeds with that but his proposal is essentially a very very simple JIT compiler and the reason he
00:43:59.519 designed it that way is not necessarily to be the fastest but to be the easiest to maintain and the reason behind that
00:44:05.670 is because we don't have the money that say JavaScript does so I think that I
00:44:14.250 think that our project is maybe faster than other languages but not our speed
00:44:20.670 of development is faster than other languages but not necessarily as fast at JavaScript and for switching I hate that
00:44:29.069 you asked this elixir question because I love Ruby but Jose is also a friend of
00:44:37.529 mine so I'm really conflicted to answer
00:44:42.660 answer this question I would say I would say stick with a ruby oh I love I love
00:44:53.880 the situation that the rails commander came up with an idea and put in his new
00:45:01.289 language we're not enemies you know we're friends and I'd love to
00:45:07.680 see that situation more actually Ruby's
00:45:14.509 not elixir but legs is not ready so we're different and we're aiming a
00:45:20.400 little bit different goals I think and we're learning from the elixir and
00:45:27.289 actually there are some good features and like say that Ruby does not have and
00:45:33.049 we're thinking of importing backporting kind of something from it like so it's a
00:45:38.460 ruby one is pattern matching which is proposed several times the Ruby and I
00:45:45.450 guess we're gonna have parent matching in Ruby in the near future
00:45:51.690 I guess I suppose so like that it's good
00:46:00.990 it's basically a good thing to have competitors guess we can make each other
00:46:06.180 better all right this next question is
00:46:11.789 for Aaron specifically top one why tender love and how many times have
00:46:19.650 you been asked honestly not like not that many times maybe a few times well
00:46:27.119 okay I'll I'll tell I'll tell two story I want to tell two stories about this first I'll tell why it's an embarrassing
00:46:38.730 story it's basically it's basically I was trolling my friend is how it started out so I I at one point in my life I had
00:46:48.150 many I mostly only had women friends and
00:46:53.430 we would hang out all the time and I remember one night we're watching movies
00:46:58.680 and and we had started to have a discussion one of my friends said what
00:47:05.069 is the what is the grossest thing a guy can say to you and they were just going
00:47:11.549 around and one of my friends says the grossest thing is I and I sent a link to
00:47:26.700 my friend of course it was just you know pictures of us hanging out and she's like I'm not clicking that link so
00:47:34.529 basically that was that was how it started was a troll on a troll and my friend and just an inside joke between
00:47:41.400 between our us and then of course IRC
00:47:47.210 you have to shorten down the name so I shortened down my name to that that's just how my friends knew me basically so
00:47:55.170 it's not basically it's stuck with that and I so it's an inside joke among my
00:48:01.920 friends that is unfortunately stuck I I can't say that I really like the name but so I the other story I want to
00:48:11.060 tell about this is I've never told my parents this name and so my friends know
00:48:18.650 me by this name but my parents have no idea and my parents are both engineers and I tell them like I tell them what I
00:48:23.900 do they I talked to my parents every week and they know they're both engineers so
00:48:30.440 it's not weird that I type at a computer to make my living you know I tell them all about the stuff I do like I tell him
00:48:35.990 about you know programming speaking at conferences etc and I thought to myself well well this I'm from Salt Lake City
00:48:44.390 and my parents still live there and there was a conference happening there a ruby conference and the organizers were
00:48:51.140 invited me and said hey would you would you come give a talk and I said well yes but only if you give me two tickets for
00:48:58.070 my parents because I thought I would like them to come see what I do you know so I said I the organizer was like
00:49:05.210 absolutely we'll give you tickets for your parents I'm like okay great so I get into town and the we all go to the
00:49:11.900 conference and I meet the organizer I introduce them to my parents and the organizer says okay I've reserved three
00:49:18.590 seats for you down at the front and it's an auditorium like this and we come down to the front there's three seats in the
00:49:23.660 front and there's three signs on the seats and the first sign says tenderlove the second sign says tender mom the
00:49:30.260 third dad
00:49:35.319 and like I've told them everything about what I do but I did I have not this is
00:49:40.579 one thing that I've emitted and I like
00:49:49.780 so I didn't tell I didn't explain to them why just said look people know me
00:49:55.280 by this name don't worry about it we're gonna ask you don't just don't worry
00:50:00.920 about it it's fine it's fine so that's how they found out and we have we've not talked about it since then so
00:50:10.069 it is an unfortunate name that is stuck with me that is it well thank you so much for both being
00:50:15.380 tender panelists today so much alright guys thank you so much alright so we are
00:50:24.920 going to break for lunch and we will be back here at 2 p.m.
Explore all talks recorded at RubyConf MY 2017
+16