Wednesday, October 05, 2016

RubyConf 2015 - Keynote and Q&A: Matz

also like to do a couple of things one is in the previous years we've actually
done kind of like sit down fireside chat tonight for a Q&A because he messes
during his keynote at the end this year gonna do the more traditional Q&A so
we'll have some handheld mics and we'll do some lineups in the side for people
who want to ask questions I've got some questions already seated in the old
noggin if no one gets up to ask questions but I really would love for
you all to stand up and actually ask questions so towards the end as masses
finishing up some volunteers out with the mics in the aisles as usual and the
other thing that I would like to do is give Matt a little present so
so long time come rubios who's actually not here this time just coincidentally
as Bruce Williams he actually did all of the design for a long time four for
comfort and I he recently started a very strange hobby recently he started gem
cutting for fun which is like you know he would really want to just hunched
over a diamond bid for 14 hours that I'm staring at a tiny little rock basically
but he loves it and he wanted to make maths a ruby and so he did in center
with us and he wanted he would buy you asked me if I presented to matts on the
half as a present from the review community so
the plan originally was to have a nice display box we actually didn't have time
to get the display box or still working on that and we'll get that to matts I am
I gonna be in Japan in about three weeks so I might bring it to him that it isn't
it isn't it is an actual Ruby
you know people later on don't lose it through said that he was he was hunched
over his machine for 14 hours at a time cutting it was very very hard rock stone
to cut so that when a wonderful having you here because it feels like we're
doing is forever forever down and we love we gonna keep doing that without
further ado
for the first time
Reserve and the conference right now we have many the first time I could help ya
first met my face a real you know so somebody some good to be here I'm
Yukihiro matsumoto
Japanese of course you don't read this and the Navy made Chinese characters
that this is my name in Chinese characters but these names pretty
difficult to remember so I'm a father of four children and dog
so some
yes treat me like a demigod or something like that and the creator of the seniors
maybe this is a real d like the Magic's so in reality we really but I have nice
at least I am trying to be nice but of course I sometimes get map so I feel
trying I'm trying to be nice but i feel sometimes anger so that the nice and
anger
conflicts in my mind sometimes their anger is a very problematic troublesome
in motion so people who is friend of mine and the creative the pro language
like this this guy once they get three virtues of a programmer
the first three versus the three verges the laziness impatience and humorous
laziness means the quality that makes you got a great effort to read reduce
overall energy expenditure it makes you labor-saving programs that other people
will find useful and the documents that I want you roll so you don't have to
answer so many questions about it this is laziness in patients the anger the
anger you feel when you when the computer is being lazy this makes you
write programs that don't just we after your knees but actually anticipate them
or at least and humorous the quality that makes you write and maintain
programs that other people want want to say bad things about it so the laziness
impatiens and humorous or alleged anger so Dec virtues makes you a good
programmer so the anger itself is now really bad things sometimes so
controlled anger
is a good things sometimes so it could be a source of motivation so you can eat
safely
anger if it's kept inside of me so anger
publicized anger is infectious
so if you feel your neighbors can still feel anger too so that is kind of the
source of conflict war were travels and good news is niceness also infectious so
nice being nice israel's great virtue so we offer used the term meanest one so
that stansel matter is nice and so we are nice and then they may think you'll
like this
yeah I often use these kind of the enemies though so I'm not an inventor of
me in a song the concept them unison was embedded by this guy he's a multipolar
who is the famous for the inventor of the way flattering and Michael services
and many other concepts and he also invented the concept of the means so on
so I like this time not only because it is kind of interesting term at the same
time the pronunciations sounds like peanuts in Japanese which stands for
everybody so be nice
everybody denies together each other is the greatest virtue of the Ruby
community I believe
actually i rly the conference conference just because everybody was so nice not
only because I'm not greed of the language you know it's kind of feels
same nationality
realness no ready-made their friend I'm sitting in the country of Japan and a
baby you guys are from United States Europe some other countries or even from
the space may be better in spirit we belong to the same community and the
same nationality the geek community weakness no nation so I agree though
that would be under lead designer will be the recently I lesson I work less and
less 40 be but I still gotta make decision of the language the behavior
and specs so I also the lead up everybody which we have several sessions
conferences like Ruby for embedded devices and applications so my recent
news is last week we have released every be 2.3 review one and we will be two
points P
on coming Christmas yeah as a Christmas this Christmas
yeah we are not yet P community something bad happens that we have done
many things at the last meeting is over 2.2 so highlights will be there are
several metals including gold diamond grip D which stands for the equipment be
so it done on UNIX people will confused about that by Dee option worth the
behavior of grant so using the Revd so finds that element that is not much to a
party right so we also added that houses the best values though they are you can
extract values from the many multiple values from us so it's kind of a strict
version of how we also added the numeric positive and which behavior is very
obvious so we are comparisons less than equal less less less equal or greater
and greater operators but not specific operators just because they are not
competent comparable in a sense of America we also have the house to prague
method which is like this so that means that has can be treated as a map map
marking the block block parameters I was already did you mean jim has a default
so the gym
sometimes you make a tribal or nay mera so Ruby interpreter yes your intention
then you you made just right or something like that so just like Google
that it's a it's a small step toward troubled programming between man and the
scene and I we have added the frozen chili which is common to say all the
strings or the string literals in this file will be frozen so in this example
ABC that the string ABC will be frozen so you cannot modify it so you don't
have to make a copy each time it evaluates so that modifying the string
will be error so this is kind of a possible but only if you can
this magic comment at the top of the file so it's runs slightly better but
the biggest benefit of this magic comment is we can safely say rails
operator which is similar to question . in swift and group eg programming
language we instead of question that we added a person that we in the first time
I we have added that question but Christian just because you know we
cannot be used a christian because question is at the end of the matter is
the value method named Ruby unlike other programming language so that we cannot
use the question at the first hand so we made it refers to that question but
after writing some some programs with this new operator like this one uses
operation aimed at Christian first something that certain I 50 it was there
is cycles very confusing
you know the question . underdog Christian is too similar to distinguish
and two members to memorize so I just give up and just very new operator and
dot and which we called longley operator just because look at this figure and you
can see the someone sitting on the floor looking at a dot on the floor by himself
now get
cleaner and easier I believe this thing so we have introduced a house that big
method in areas and has which is for example suppose we have the data
structure like death so from pages in person so we can re-try we want to
appear to the data symbol uses a number 09 name so that's what we want but in
reality so any of them can be no no
so we have to the user's absent absent instead of using that kind of lonely
open so we introduced that that does big matter so for our in-house you can dig
into that change our in-house so it's it's kind of shorter and easier
so in fact a serious Ruby 2 2009 mean 2013 so I we released version each year
1.2 2.1 in 2003 2.2 in 2004 213 221 points 3 2010 this year and each year
each version we improved the pipe to 10% faster so this time we improved up a
little bit not a person not two times faster but five to ten percent faster so
it's it's quite nice so this has been done by core developers including Koichi
and Eric one who whose has no other person who is pleased
and many others so the ruby is no longer my language so in 1993 where I had
started the project doesn't does my language I would I'm the only one
working on the language interpreter but now we have many many people many many
programmers developers working on the language many people proposed menu
features and come up with a new idea which I think so
ruby is no longer my language and it's a community effort now so that I really
appreciate the community and the developers the right now we have more
than 90 metres ninety people who have the previous to access to the central
repository of Ruby Syrian so then in addition today I received in revised 1.2
I fixed we fix the pic but her bags and we improved the build process and it's
more stable than the previous versions but no big change anything to them and
also I recently work for the language in the stream which is kinda experiment oh
so you can take out guitar.com stream to see how how my toy is and I i say i say
it's not usable is this is a proof of concept but it exists so
this is my introduction I give a keynote presentation in this conference so tired
of the feeling the shock which means we have to keep moving forward as open
source community otherwise so we have to keep moving forward to attract the
community so to encourage community to work together otherwise we will
eventually die just because it's the nature of the open source software
community so we need change we need change to survive but yeah yes we can we
must make changes to keep going to survive we have to make sense is a lot
of them to keep moving forward but at the same time that's changing itself is
a cost and if so where
how much do you pay the suffer when you operate raised for the Reds 5 yeah we
know I don't like pain
yeah i know somebody like 10 though I don't like pain
the contradiction so we have to make changes even though it has cost it it's
cause pain but we don't like pens users don't like things so we like senses we
don't like pain they hear the challenge I'm a designer the designers heart just
because we have to address those kind of contradiction and conflict conflicting
demands and the biggest challenge of designing something
is we don't know what we should make this is a pastor in the white community
office and wearing a like a dismal defame visit the office he so it says it
also says make something people want but he strikes out one and right now they
need so we shouldn't make what they want the famous one said if I had asked
people what they wanted they would have said faster horses instead of car you
know the users don't understand what they need so what they need horse didn't
pass the whole because their mindset is mixed with the host and cabins but in
reality the Henry Ford publicized but he he produced a lot of cars in that caused
so that you know the horses were swept away from the world to make what changed
the lives to create something that has never existed so design hard because the
futures and no we don't know about the future we can predicted we expected but
in reality pitches and no because the situation change so when I really
surprised me in 1985
some said we don't we don't need of securities peaches and scripting so
something was too good to be expecting like what does it mean I'm not
too good to miss picture anyway but they were on so now that almost every
languages including scripting language or toiling with object oriented
programming language except for some though anyway it's this is the evidence
that is quite
forecasting or you know the telling the future is so typical of most of the
people I don't ask them what they want
ok do you want scripting languages I remember that this is not the way I
started Ruby I created why I wanted to see in the future so I wanted this I
want this in the future so something so this is quite nice long is it seems but
no we don't need is so for the first ten years of the the Ruby's life very few
people will be very useful to many people find will be interesting but they
they had never said useful for the first time in years but I didn't care I keep
working for ten years so then we had rails the taxes they did the edge webb
says has come so the river became new normal and my prediction was like we
create we have created new normal is now we re I created the new normal but we as
a whole community will be community the piping community community hold open
source language communities created new normal so the app kind with dunno
we can't we could prepared that kind of new normal so this is a secret of his
success but I suppose you have created the great software but it's not the end
of the the development because the future is unknown
again because the situation changes system gets older so now they created a
system we go bigger more complex at the time goes by other will become sick of
many old cold you have to adapt ending situation anyway it is good excuse to so
cold so we have to make changes otherwise the system eventually dies so
but tensions paying changes costs but uses his game
contradiction comes again often cause problems like antenna systems or slow
adaptation of a new system so we have that kind of sentence like attention to
everything I read everything from Scott's they have solution that we could
create cleaner systems if I try again if you try again or illusion that we could
create system that performs better but that illusion caused you the enthusiasm
to pursue the bus going away all system and strong and shoes and so but if I try
this time again so we I could I should have create better system design firms
are harder beyond expectation
major delays beyond destination development costs beyond gaza angry
clients for the failure of its this happened everything so with a different
severity and a lot of language pretty much longer suffer more often just got
the largest live longer
the world's first programming language is named Portland but it's still life
alive the second goal and that's to Live's the third quarter of this
programming language is that still live so they are more than the other almost
60 all wall but they are still alive so the longest lives far more than far
longer than your job application so that is a face that kind of program are
problems far more often than usual petitions case mom asks project started
2000 2000 because they felt sometimes stock so that the changes the evolution
slowed down for long long years at the time of the year 2000 so as I said
before the open source community
eventually does when we when they stopped moving forward so that is the
reason behind a solid person X so we have to do something new they had to do
something new and a person had approached philosophy
scrubs scrubs that the key they had ambitious goals then add a totally
innocent tax owed a new version seen and fifteen years has passing this new year
2015 we don't have a six year but finally it's Christmas hopefully yeah I
met last August in Tokyo conference and now where I was a guest speaker there
till he declared six the first but in the past
public was another person least in this Chris coming Christmas something very
bad happens again probably after releasing process I guess it would need
years to become the used but don't get me wrong I respect your community how
people very smart what I want to say is that even they suffer as hard case to
buy something vs
the enterprise Bank
community they long had some from the dream of the something in the Pro 3000
new whole new pricing the better bison with any legacy pitches or something so
that i three thousand design policy is a reduced feature the application by
removing all ways of doing things so the whole time in Python language evolved in
the history of the long history of its as a language and that the US history
they introduced that need new need features the overriding the old ones but
for the sake of the compatibility so they have to keep 00 beaches all design
class behavior is so they decor designers at least do not like those
kind of legacy behavior is so they they wanted the chance to remove all the
applications so they wished they could release it before it is three thousand
that's why they named a thousand days for years and they finally started the
project in 2006 and the name of the person
project 4,000 3,000 2003 and it was released in 2008 they didn't surveilled
call they improved and that they removed or cold so in that sense so they are the
smarta in the indices but they introduced a huge compatibility problems
in 2015 penalties a widely used
the pilot 33.0% 2008 and we have now we are now in 15 2003 version is used some
even claim to give up I sincerely altogether but recently by widely like
two years ago something finally but don't get me wrong I was saved by
committee people very small but even this offer designers her peace
committees get the picture 6
that was going to ask for price
yeah they're very very smart
things happen all the time but I think it was the systems for the everything
including a programming language really is no exception
we had the issue where we had will be 1.8 and 1.9 so the back then we had the
problem in performers will be 18 has very very naive Ste 1200 interpreter
which I wrote that's why Russell and back then the multilingual ization so
handles that many in the character encodings is issue so the idea of the
new version of the Ruby Python into two thousand and that the product itself has
started in 2004 to address those kind of issues so we see the new virtual machine
which is which we named the you have yet another virtue Ruby virtual machine that
means that around the year 2004 something we have a lot of attempt to
create a reverse missing 22 games performers of the Ruby language but the
writing simple version is fairly easy it's it's a kind of practice for us via
students on the gloves cs2 in implementing real world is another story
out of 5 or 6 attempt to create the ruby ridge machined only 15 which is why it
is I contacted him and I work on him and it gradually reformed into the Ruby 19
and they will be one that was in 2007 and I we have slightly
like
but even that we we've done slightly better but at least once suggested to
give up to our be 19 years because of a compatibility problem but how how we
have never thrown away everything we have time to implement up position
reflects a person with the object representation of the garbage collector
we keep compact as possible so I thought if they say it so that that take the
test ways to satisfy that the old code so that when we have to make sure we
prepare the migration path so never tried to drastic changes and it changes
so he we did too smooth very smooth migration we did several tracks the
first checks the Virginia visions which means Python to profiling process but we
had 1.8 1.9
that makes this is nothing really though the second trick we might resume moving
2219 had huge benefit of performers so they're replacing it depressing you ruby
in 219 outperform the old cold by a factor of two sometimes maybe the
biggest case the fifty times maximum well great performers so even though the
migration change is paying but if you can get the benefit so you know it's ok
to pay the pizza place so that kind of benefit 'cause democratization to move
on so the other rules to create a new system
personal anguish don't know everything don't push too hard
provides a benefit don't break compatibility for no reason now your own
satisfaction with the cleaner syntax the smaller syntax or final call
simple structure your program the users don't care so if you break compatibility
gives you use it
the huge pain so if you don't provide any benefit don't change at least from
the outside but we have to keep moving forward so
will be 20 had almost perfect compatibility along with there will be
13 but as time goes by the situation changed again and we have the multicore
time I start to Ruby 9300 the computer only one CPU and at the time the product
gel had started in 2002 the so almost all the computer at least for the
personal computers has one CPU device but these days we have your call what
call after call or something something ordinary course this is a huge problem
so you know when we have only single core no one cares about kamikaze just
because you know congress's only for the program structure but now there is the
concurrency is the key to gain performance so if you spread your asking
22 then work assigned to taxes for East
its corals so it would want two times faster so the moscow is very crucial to
gain performers these days but will be self and is not designed the second
parties 'cause scalability
the old days the people
cold case the object oriented programming features don't doesn't need
for scripting language just because now these days the program in scripting
language is only 10 lines and lines or maybe thousands of cold weather these
days
raised application including frame art and libraries we have tens of thousands
called or maybe the million lines of code
that doesn't quite use so that can cause cavity we have to address what their
scalability we have seeking a problem for a long time and I we have a lot of
lot of access to our web servers so we want to address those challenges so we
wanted created new but I we don't forget that that which is don't worry
everything don't push too hard to provide you the benefit of LT for no
reason so we have some working every 30 we have no idea but we are experimenting
ideas from some of them are very crazy ideas and we don't promise anything but
we do remember those rules again don't worry everything was to have the benefit
don't break above it so we all the problems we want to address as having
multi call in the computers the Coast Guard Lt
in the day the scale with the thought that to address that we do want to work
on concurrency and members improvisation and performers to utilize my articles we
need concurrency
that should be abstract symbol on Aug two years so we provide we already
prepared read but a threat to its quite difficult an easy-to-make arrows and I
it often to the nondeterministic so that is the fixing that kind of is kinda
nightmare so for concurrency so we have several candidates
but we want to make concurrent programming more productive so the this
we have these ideas after more details on this streaming model after model
stands is it's it's down by the longest cycle lol Alexis one goal is quite easy
by resin mailbox but still nothing is kind of hard for longest like will be so
we have to address something like that there is a model they use on a city bus
to use directly my memory we see so all the threat on object so every of these
belong to some some threat so when where you have a safe of the object to you can
look inside you can modify the object but you don't have the owners you cannot
access inside of the objects are back so when you pass your object to another
threat through Q U Pass owners as well so that you the targets read what I get
active something can modify the object but you cannot modify you get a seed
object until you die the object get back to you with technology difference by the
thread that owns it
pass an object to other threat along with his honesty ist AM I don't believe
the solution for will be 30 but I
anyway still stands for the South a transaction and transactional memory
which is embodied by the language name the closer we can share and change state
by the Wendys conflict if that great but to death so you we have to implement
every object system and everything which can be rolled back so that's quite yeah
it's only difficulty so I i cannot be read The Closer people that did that
yeah the system also had a drawback which is slow right internship programs
that streaming model which is a kind of the building pipelines and poured into
pipelines for example we operate like I pipeline this program create the
pipeline from standard the interest and a lot this this code only place I prime
then after program ends so the program automatically into the even though even
detect the input from the standard in to pass the data into standard out so this
is the simple echoes create a TCP socket server socket then the creator Matt so
that you can process each socket from the US then connector socket socket to
socket to to make us a call this class are connected from the standard that the
out of the standout and into this
so that we in this case we introduce new operator this one yet that trace
pipeline they enter into labor so that no matter what we call that creates
pipeline then threats have even driven so I call it a Rube Goldberg programming
pipelines day in the ball goes like this either that or maybe
assets 87 loop we have the second virtual machine runs which is which
every article as a beautiful so that you don't have to worry about that later so
we don't have to worry about in the second person everything immutable
but at least we need proof of concept so I play with experimental angers
so the powerful for us we made a five to ten percent faster a year and we have
improved the government we have seen we having for the object representation and
no one complains faster would be right so we need to go to be reached so that
we come up with a goal which I named it by three by three which stars three
times three so that stands for 33 time for me to
but I have no concrete plan but it's a goal we do everything we can see
description I was just in time compiler what may be ahead of time not because
they're easy but they go there
33 times faster than we do in the year of the terrific you make a decision that
will be too but I have some tricks and conscience we were compared with will be
20 just because we have improved a lot in the last few years so we we want to
count them and we were pick some benchmarks small but not to show it may
consume more memory to get it its inception City comparable to be 20 we
need power we go as a symbol so that some companies willing to sponsor and
thank you
come up with that term is free and it was it impressed me a lot so I took my
own idea you know I fully is willing to sponsor us about three and of course the
three and the recently IBM working on the technology named a nine which is
which can be integrated into them and they say it can run drills in with it
with Serie B that's terrific and I contact them so that they are going to
give a presentation in ruby color Guinness months so I have to wait until
December 22 hole detail but I'm pretty way for so maybe we could have our
responses will come to help us so a lot of people contributed to Rudy the
community so many people wrote since so many people contributed the cold cast
and as I said before ruby is no longer my language is a community of Ford but I
we still have a lot of things that making been providing knowledge and
ideas to improve the Ruby three times faster than will be too so i really
appreciate the sessions like a ribbon thats so we I knew I know many people
willing to help us so there are so many things you can do to improve
jury will be itself faster better so so we are welcome and we do see his
residency so that so that you can you do not have to work on C so either so I
invite some of you who are willing to work in C in to fight with performance
data structures are insistence and very tough test in C and B to C is very real
hard working on this is so so that we can protect many people from suffering
into this
so if you have any idea
opinion though willing yes so you can contact me or power to make would be
better faster so we we will do make will be better faster more powerful but we
have less power so we need your power thank you
so we have about 10 minutes for questions I hope we have questions don't
please don't get up and go out yet we still are not done here so I'm here at
Marty's there who who has questions from matts
combine operate here Nathan you can go first so matts 3333 needed two goals and
performance that means that you can do lots of things that users don't like as
well rain so do you have plans to break some compatibility or things that you
want to remove from the language in Review 3 they will break some guilty but
I don't think it would be big this year
I'm Benjamin I try to be nice to see my question is is that a lot of elements
that I do is get her but I think most people here are familiar with the
developments were working on large applications such as rails and that
there is a ruby repo but in order to truly get involved with and even
reporting issues and rebuke or I believe that it's a different workflow involves
both using the Redmine application and also understanding Japanese versions I
was wondering if you could give like a very brief description for everyone here
just how we can even open an issue for the Ruby language itself have to speak
Japanese symbol
the most of the discussion is held in red by red mind I will be called for the
historical reason we we have the wrong people get have happened so it's it's ok
to create some so requests and the issues in get of us well we encourage
you to use of it by outside the mostly because of we know we have some kind of
an attic so what cling to them so you get half is now really get is often get
have is not so some refuses to create a counter that the proprietary service for
that reason so we can move into the get up but we will move into the gate at
least and used it as a primary
in the near future so we have to set up some kind of death to around we get
closer we have some criteria
either anything happen in the community in the last few years that you want to
bring into a make them part of the core language
gems that you thought we should really make this part you said do you mean was
was or was not an external pieces of the things that you would you want to bring
into the core language like that there are some persistent data structure gems
for instance is maybe one day we can create single binary everything together
in binary so that kind of thing happens but at the same time I know we have a
lot of things to do that so we
so that I did actually had a little bit of software transactional memory
behavior for Ruby if anybody wants to explore how we might do it in Ruby
itself and that's transactions for which modification 19 was made them work
better because it used cloned everything to in order to have levels to act so
that can give people a starting point to explore as team in Review yeah he'll
statue transaction simple dish why did you make parentheses optional in Ruby
so I know a lot of people just getting started programming don't necessarily
have the same hardware like computers I think I did not have only seen the movie
Max but people getting started to have a lot of different systems and you so you
had an invitation for like a we need more people to see that I also know that
it's there are very few people who receive programmers who also focus on
Windows platform compatibility do you do you have any ideas how maybe we could
increase that increase what diversity could be just the experience on other
boards ya at least we have the support we have a Windows guy and aqua sky and I
we have even if many people willing to help us so happy so for example our site
pretty busy in IBM they're willing to help and it possesses died in that is a
problem we are we are very welcome to work together
I was at the M Ruby birds of a feather and roadmap for improved he came up and
you mentioned that you keep it in your head is there anything that you could
sum up about where that project is headed in and what the big goals are
yeah everybody itself is down what we wanted
provide basically so that we only improve a little bit for example that
adopting the baby to Fitch's or something so that this kind of the issue
is the application so many people will be for many purposes like I'm betting
games vending machine or internet world wide web servers that your application
or maybe some some say editor extension language so that kind of use is very
crucial I want to help somebody has coming up with the ideas so that if they
need help with a we are willing to help to to help them so if they feel some
kinda obstacle problems issues to fix them we are even Microsoft is there any
plan to bring the correspondence between the the Serie B syntax and the increase
in taxes we have some way of having code that corresponds in some cases currently
in ruby is 1.9 by the ball thought it's all so that gradually adopting will be
to see ya next year
want to work on getting the key was in
argument hi I was wondering in Ruby three other three by three what syntax
are you going to use for the macro system
ok
I tell them say promises about that myself where that's because you teasin
the situation changes but I promise we're gonna have we not going to hop
magazine alright this is going to be out our last but we I it's okay for me to
provide a St from Rubicon has as much
we're interested in making relief after and we're currently looking to foresee
programmers who are people who are into IBM's were worked on JB ends were be
eight and if you're interested in making her there so get in touch with me and
we'll see what we can do
yeah the higher places staff at get better