00:00:13.040
hello everyone yeah I'm
00:00:18.359
nervous yeah if you could understand Japanese the M it my feeling is much
00:00:24.240
easier but I can help it so I try let's start it uh that the theme that last the
00:00:32.399
closing keynote is better Ruby uh this is EUR 2024 uh we have two more including this
00:00:41.320
one two more sessions go to go we are almost finished the conference how do you feel
00:00:56.359
that did you end the conference yeah thank you
00:01:02.399
uh so this is kind of new Ro call so that we have three days conference
00:01:08.280
instead of two and we have three trucks in the conference you know traditionally
00:01:14.280
Euro has single uh drug conference for a long long time but uh I we I just little
00:01:21.320
bit worried about the three drug conferences like a you know we spread to the the rooms and you know the less
00:01:29.159
chance to communicate or something but yeah that is my you know just just
00:01:37.000
just anxiety we have seven Keynotes including
00:01:42.479
this one and uh five workshops and three trucks and then 47 speakers and MC if I
00:01:49.719
if I count right and then we have all around 700
00:01:56.039
audiences and and gos
00:02:12.040
yeah so I'm going to ask you about the why are we
00:02:18.120
here uh we are here for Dave thas probably yes or
00:02:25.680
Joseph or we are here for Ruby of course this is Ruby
00:02:31.280
conference uh Ruby is a great Ruby is a great language it is
00:02:37.480
productive and fun uh it is great uh
00:02:54.640
because the Creator is genius no I don't think so oh thank
00:03:01.480
you uh because I had a clear
00:03:08.200
Target the the target at the beginning when I designed the programming language
00:03:14.720
so that the target is f loves programming and F loves
00:03:20.720
Freedom which is me and in addition the the primary target of Ruby
00:03:28.640
user is a programmer who is lazy and who is
00:03:34.159
impatient and who is
00:03:39.439
arrogant uh this is according to the L wall who is the inventor of the PO
00:03:46.080
language the the laziness impatient and huous is the three virtue of
00:03:52.879
programmers uh laziness means the the quality that makes you go to the great
00:03:58.040
effort to reduce overall energy blah blah blah okay the the most important
00:04:04.120
things is the programmers must be
00:04:09.280
lazy the impatient means the anger you feel when you the computer is being lazy
00:04:16.600
okay we are okay to be lazy but the computers are not supposed to be lazy
00:04:22.600
this makes you write programs that don't just react to your your needs but
00:04:28.000
actually anticipate them or at least pretend to the
00:04:33.840
huous the quality that makes you write and maintain programs that other people
00:04:40.639
want want want to say bad things about it so who is the target it's me uh Ruby
00:04:51.199
is great because we love the language thus we use the language thus
00:04:59.320
we form the community so because we love the language we we
00:05:06.639
organize conferences like this then because we love the language then we
00:05:13.759
create gens and because we love the language we create rubby GS uh because we love the
00:05:22.440
language we improve the language the amount of Love is unique in the Rubik
00:05:30.199
Community uh think about that the I I basically see programma so the Ruby
00:05:36.800
itself is written C and I write C but I I have never met with the creator
00:05:45.800
of C programming language Dennis Richie or you know I don't participate
00:05:52.319
in the new features of the C programming language you know the distance
00:05:59.840
uh between us users and the creators or developers of the language are very
00:06:06.639
distant but in Ruby okay you see the creator of the language a developer of
00:06:14.080
the Lang uh language like like kichi and then we can talk with them we can
00:06:21.240
communicate with them we can in the users can Inspire the designer
00:06:29.720
or the implementor of the language so that this kind of love and distance the
00:06:39.000
made nice and friendly community in Ruby and then in that sense I am very proud
00:06:46.360
of you because you know you form the
00:06:53.599
community and you Embrace love uh Ruby is great because it keeps
00:07:04.520
improving uh Ruby is open source software uh you can use use it free and no one forced to use Ruby no uh you know
00:07:13.720
uh maybe maybe you are hired in the Ruby company you you are forced to use Ruby
00:07:19.319
but you you choose the company at the first time and that we are driven by the
00:07:25.800
love and passion so that if we are bored we may Lo leave okay you
00:07:34.080
are not forc okay I don't pay you to use Ruby I don't I don't pay you yeah but
00:07:40.879
you don't pay me though but you know the our relationship
00:07:47.440
is uh established on top of the you know
00:07:52.520
curiosity interest and joy and love so the motivation is the key so
00:08:00.680
that as I said before the distance between users and developers is the very
00:08:07.960
important things so the creators developers uh we need to feed the
00:08:16.680
community there something attractive something interesting something
00:08:23.879
beneficial uh so new features uh for us
00:08:29.639
for profit and F so the last 30
00:08:34.719
something years so we improved the language and we provide uh the new
00:08:40.959
features uh mostly to attract you
00:08:47.399
guys for example uh Y which is uh from kichi is
00:08:55.080
uh released with the Ruby One n which is which which released in the
00:09:01.200
2007 and then multi encoding and unicode support is provided in
00:09:08.000
2013 the refinement is 2013 the generational garbage collector who uh
00:09:15.440
which is also from kichi in 2014 and incremental garbage collector from uh is
00:09:24.000
2015 uh MJ is come to the language in
00:09:29.079
the 2018 P matching is 2019 object
00:09:34.279
compassion in 2019 RoR Is 2020 the
00:09:39.399
single line death is 2020 keep going uh YJ comes into the language in 2020 22 uh
00:09:48.880
the Ruby wasm who is from uh Utah is uh
00:09:54.680
2023 the data class is 20 uh 2023 and prism which is the new POS is uh
00:10:03.640
introduced in the 2023 so the we have lot of things
00:10:10.160
introduced in the language uh despite the we keep the you know what ruby
00:10:19.560
is so the Y is the yet another Ruby vertual machine then it is stock based
00:10:25.920
ver B code machine and by kichi and It Made ruby uh Ruby runs much much faster
00:10:35.200
say uh up to three to 50 times faster than the previous uh interpreter written
00:10:42.639
by myself the multi- encoding and uni code
00:10:47.880
uh the Ruby was uh created before uni code so the uh it it it supposed a
00:10:56.440
legacy encoding like a like a the iso things and that yeah the shift J which
00:11:02.639
is Japanese uh domestic encoding but uh
00:11:08.120
by by introducing the Ruby to O the we
00:11:13.880
introduced the multilingualization
00:11:19.519
and so most of the language use uni code as a internal encoding so that uh when
00:11:26.120
we read the Legacy encoding they try to to uh convert encoding into uni code
00:11:33.160
utf8 or UT UTF 16 then process the text
00:11:38.720
then convert back to the the original Legacy encoding that is natural for say
00:11:45.600
Java JavaScript or many other things but uh that that things has a the drawback
00:11:53.120
because of the uh we need more information to make a perfect conversion
00:12:00.959
because of the some uh in some cases The Single Character may have uh multiple
00:12:08.720
meaning for example like a uh in Japanese Legacy
00:12:14.560
encoding uh bakas represent the nine which is the J which represent the
00:12:20.959
Japanese uh currency but uh sometimes we use the Box
00:12:27.000
slash as a box slash and then uh some sometimes we use the bo slash as
00:12:33.120
a the currency sign which is which is no no no information in the text can be
00:12:40.279
used to distinguish those usages so that we need more in we cannot the perfect
00:12:48.680
conversion without knowledge of human so uh instead of the UCS Universal uh
00:12:57.680
character set appr approach which is taken by the other programming language we uh take the CSI uh character set
00:13:06.959
independent approaches so that uh if we set encoding so that we can handle the
00:13:14.199
Legacy encoding uh directory without any conversion uh
00:13:22.240
actually 10 years later so the okay uni
00:13:27.440
code uh takes the world almost takes takes world so that we have less needs
00:13:34.639
for support that Legacy encoding so the but you know the Ruby still able to
00:13:43.800
handle the Legacy en coding uh very efficiently uh okay this is univers said
00:13:49.920
things refinements uh refinement is kind of structured monkey ping but uh the I
00:13:58.560
probably made some mistake in the design so that it's not used
00:14:03.639
much almost failed but a generational garbage collector uh the when we have
00:14:11.600
lot of objects so that the garbage collection that traces every object
00:14:17.600
takes more time so that uh we want to narrow down the object tracing so that
00:14:24.720
separate the younger generation and the older generations and then uh the
00:14:31.000
the reduce the time of the tracing so that for beta
00:14:37.240
throughput but next year we also imp implement the incremental garage color
00:14:43.279
uh so the int leaves the G collector and the applications to the incremental Mark
00:14:48.920
and incremental sweep so so that we achieve the better latency because of
00:14:56.480
the you know uh generation garbage collector reduce the time to to trace
00:15:02.079
but sometimes in the major Trace we Trace you know ev Everything okay uh
00:15:11.040
every object in a major collection but uh in that sense the sometimes we have
00:15:19.920
the the longer you know latency in some
00:15:25.000
cases but uh in incrementing go to reduce that kind of the
00:15:31.240
latency MJ uh I want to make Ruby fast so there
00:15:38.319
uh in 20 say 14 in the the keynote of
00:15:43.759
the ruik conf in and then I I made up some kind of
00:15:50.959
slogan with the key phrase which is a ruby 3x3 that means that Ruby 3 the
00:15:57.600
future Ruby 3 will be three times faster than Ruby 2 and to accomplish that you
00:16:05.440
know hard goal so that we need to implement the the jet compiler among
00:16:11.160
other improvement improvement so the uh the mjet was the first jit compiler for
00:16:18.240
Ruby so that it generate the C code from the Ruby source code then compile it
00:16:25.680
using the you know the normal garbage colle I mean GCC or clown then a dynamic
00:16:34.639
dynamic Clow to the the the version machine which is in which seems which
00:16:42.040
sounds insanely slow but uh we made many many tricks to improve the uh the
00:16:50.560
latency so uh by using MZ uh we
00:16:55.839
accomplished the the Ruby three was three times faster than Ruby
00:17:02.040
2 uh but Ruby 20 I mean then but in some
00:17:07.760
benchmarks but the problem is the most of us use Ruby in Ruby on Rails and MJ makes rail
00:17:18.000
application runs
00:17:23.240
slower so that's a big issue but anyway we accomplished the uh we made three
00:17:31.039
times faster in some benchmarks uh the pattern matching okay
00:17:36.240
I I see the explanation in the last last session and uh it it was big syntax
00:17:41.840
enhancement for years and uh P mat accomplished the branching assignment
00:17:47.400
and a decomposition All In All in One syntax that is kind of kind
00:17:54.440
Nifty uh the RoR uh the concurrency and power concurrency in
00:18:02.200
parallel the the Ruby has the global virtual machine lock which is the only
00:18:09.360
one thread runs at a time
00:18:14.799
to to make the virtu machine the thre safe but you know nowaday people try try
00:18:24.039
to use threads to improve the performance but remember that 30 years
00:18:29.360
ago when I uh created created a ruby the most computers has only one core per a
00:18:38.200
computer so that there's no need to to improve the performance using threads so
00:18:45.360
that the gvl is the best design at the
00:18:51.480
time but the time went by and we have
00:18:56.640
many calls on the computer so that we have if you want to utilize the multi
00:19:03.880
cords so that we have to use threads or
00:19:09.480
your processes M to but uh the gvl hinders that kind of
00:19:18.200
improvement so the rors are independent by they run by the independent threats
00:19:26.679
so that uh each r RoR runs uh
00:19:32.120
asynchronously without any intervention so the rapor is designed to improve the
00:19:38.280
performance for CPU intensive tasks at the same time uh we also
00:19:44.760
introduce a fiber scheduler uh which is the uh non preemptive concurrency so the
00:19:51.960
uh the RoR in contrast to the RoR the fivr do
00:19:57.559
not use the multi uh CPUs but remember that for example the
00:20:04.600
other async stuff in other language like the JavaScript Hing or uh the python
00:20:11.559
aing or something the those are those uh
00:20:17.120
also does not utilize multi uh because those most of the tasks
00:20:26.640
are I intensive so the iio multipication
00:20:31.960
is uh important to improve the performance using the concurrency so the
00:20:37.400
fiber scheduler is also designed to to
00:20:43.080
Io mle Io multiplexity so for improve the
00:20:48.400
performance of the iio Intensive
00:20:53.440
tasks uh single single line def is a def Square equal
00:20:59.120
X squar things and uh it was uh at the
00:21:04.200
at the first at first it was a April first day April full joke but uh yeah I
00:21:11.600
I like that joke so that I integrated in the the main
00:21:20.000
line uh the wet uh MJ was the
00:21:29.080
iMed improved the performance in some benchmarks which is the very CPU intensive task but uh why is more
00:21:37.799
realistic uh jet compiler uh the sponsored by the
00:21:43.080
Shopify and then the wet was first implemented in C because the whole other
00:21:50.120
part of the Ruby is implemented in C but the the W team was the get sick of the
00:21:58.880
the handling the very complex data structure in in C the ancient C
00:22:05.120
programming language so that they wanted to move to the r language and I said yes
00:22:12.200
so the from version 33 uh the wet is
00:22:17.520
implemented in Rust then uh W the performances wet is improved every year
00:22:26.000
the uh the 3 3.3 Y is faster than 3.2 Y
00:22:34.200
and then I I bet the 3.4 wet is even faster to to run
00:22:43.080
Ruby uh Ruby wasm uh Ruby wasm is the Ruby is compiled into the wasm using the
00:22:49.840
W interface and then you can run Ruby in browsers or even every uh wasn't run
00:22:58.799
time the that opens the New Horizon if you see the UTA CTO uh sessions you see
00:23:07.200
the masteron which is rail application run in the browser that is insane the
00:23:15.080
rails application runs in new browser locally that insane well some people uh
00:23:22.960
implemented the the graphical games uh in Ruby
00:23:29.080
in running in your browser no server required or something like that that is
00:23:36.360
that open up the very uh New Horizon that maybe someday we have the some kind
00:23:43.240
of the isomorphic web application very graphical uh the back end the front end
00:23:51.200
both written in Ruby or something like that pretty much interesting or even further maybe the
00:23:58.960
even the back end running in your browser a data class data class is a
00:24:07.559
immutable struct and it's kind of like a value object that the data class is
00:24:12.720
originally designed by the Victor uh who is who is one of the our keynote speaker
00:24:18.679
and then yeah that's wonderful uh prism prism is a recurent hand RM poser
00:24:27.360
and it try to make yeah Universal and a tolerance process uh let me explain
00:24:34.520
about the the require demand for the the universal and eror to server okay uh
00:24:41.559
Ruby compiler has the poser originally written in bison the compiler
00:24:49.559
generator but but uh there are many tools that try to pass Ruby for example
00:24:57.080
rubber cop pass Ruby and you find the you know the drawbacks or the the the
00:25:03.679
defeat in your program or Ruby LSP the language server protocol uh prog uh paes
00:25:13.559
Ruby yeah then you know send you about the the completion candidates or maybe
00:25:21.120
the the documents for the method or something like that so that that also
00:25:26.159
dep passes the Ruby file well there are many programs like a form then the you
00:25:33.520
know lter or many things there are many uh Pro Tools that tries to uh
00:25:42.279
pause analyze the Ruby programs but those tools uses the you know third
00:25:49.080
party Ruby poser which is in uh developed by independently from our
00:25:54.960
compiler compiler browser but if if we can liap off the the poser in
00:26:04.880
the in our computer then use it as a Gems or Plugin
00:26:10.760
so that those those tools can pass Ruby
00:26:16.000
program exactly same way as the compiler does so that we can reduce the total
00:26:24.360
amount of effort and then better passing uh pre
00:26:31.840
Precision better passing Precision but uh that that that is the universal means
00:26:41.120
but at the same time the we have the very different uh requirement from tools
00:26:49.039
and compilers because the if compilers is the syntax
00:26:54.919
error we we can just say that okay we found syntax Tex error but uh but uh if
00:27:02.799
you you are trying to say uh editing in the VSS code and then if
00:27:11.240
V uh syntax ER happens way before you
00:27:16.279
where you editing that uh you want to you want help from the plugins or the
00:27:25.039
poses but uh because you have syntax ER way before the place you are editing
00:27:31.960
that if the poser or the plugin stops helping you that is that is unfortunate
00:27:39.360
so the erator server recovers from uh
00:27:44.880
from the the syntax error then try to restore the pausing after the syntax
00:27:50.679
eror that is that is hard things so the prison try to accomplish those two
00:27:59.200
to uh to housers can be used by the compiler and the
00:28:06.080
tools so uh we want to make Ruby even
00:28:11.679
better the future yeah just tell me about the
00:28:16.799
future but but uh before that I want to uh tell you about the the past
00:28:24.159
episode uh in the the keynote Keynote presentation in uh rubikon
00:28:32.640
2003 which is 20 years ago I presented
00:28:38.200
the the concept of the Ruby 2 it's not Ruby to to
00:28:46.200
all uh I once try to restart
00:28:51.559
Ruby uh just like Pro 6 and python 3000 uh around nearly 20 years ago
00:28:58.919
it it was kind of the trend of the restarting the the language design with
00:29:05.480
without the historical uh world or something then so the it was P par
00:29:13.840
Community tries to create the the new programing new version the whole whole
00:29:21.320
Rewritten version of the pro language which is pro six and then the python people also
00:29:28.960
restart their project then then code named the python
00:29:34.159
3000 so that according that to that Trend I
00:29:39.320
tried to restart the Ruby language without any historical word so the we
00:29:46.399
collected Ruby change request RCL and then about the then we discussed
00:29:54.000
about the Ruby 2 ideas so that uh if if we restart the language what features
00:30:02.960
should we add to that new language so we have a lot of things and then selector
00:30:08.840
name spaces keyword arguments method combination uni code support pattern matching packages is just
00:30:16.559
comps but uh several months later I was too lzy to B
00:30:24.360
bookkeep so that I got tired of Mone them and give up the rb2 project so that
00:30:30.840
I just instead of restarting the language I gradually improve the
00:30:37.720
existing implementation yeah that was lucky for us uh the PO
00:30:44.480
Community uh I started the pro six and the pro six was made and
00:30:51.080
released but uh very few people use that they most of the community stick to the
00:30:56.639
older older language power five and they still use par
00:31:02.240
five and par six we recently renamed to the Raku which sounds like Japanese and
00:31:09.480
then but still very few people use Raku language the Python 3 a python
00:31:17.840
3000 uh gradually became Python 3 but the very few people at at the beginning
00:31:26.399
started Pro uh p Python 3 so that uh most of the community members stick to
00:31:32.960
the older version of the Python then the very Advanced people and the developers
00:31:39.720
uh use use and develop about Python 3 Python 3 is better but the
00:31:46.399
community uh many members of the the python Community didn't care and then
00:31:52.360
they they were barely slow to adapt to the newer version of the the Python
00:31:58.440
language uh even for 15 years 15 years
00:32:05.639
long so remember that python uh Ruby 2 ideas are these things and then we
00:32:12.120
implemented the refinement is kind of part of the selector name space and uh
00:32:17.559
we implement the real keyword arguments the method combination is done by the
00:32:23.679
module prepend unial support comes One n the pattern comes in 27 jit compiler
00:32:30.960
comes in 26 so that most of the the rubby 2 idea is implemented uh
00:32:38.799
implemented continuously in the the existing implementation of R
00:32:45.840
language the the remaining the Ruby 2 features are selector name space and
00:32:52.559
packages so the to accomplish that the the the part of the cor cor members uh
00:33:01.159
try to implement the namespace things a nam space is is the kind of like a uh
00:33:07.799
refinement and plus packages the that is some kind of the
00:33:13.519
isolated scope of names so that the important things is that we can load the
00:33:21.880
multiple version of a gem in the single application because they isolated so the
00:33:30.039
if a part of your application use the Json gy version
00:33:35.440
one then the other part of the library use the Json 2 of Jon 2 gem but
00:33:45.279
currently we have the you know the verion conflict so that we just got
00:33:50.399
error because of the you know dependency dependency conflict but uh now we by
00:33:58.519
using namespace we can isolate them in the Nam space so that the part of the
00:34:05.000
application is run based on the Json one older version of the Json gem the or the
00:34:11.000
the other part is based on the newer version of the Json that we can make it
00:34:17.000
possible by using the name space and but Ruby 34 which is comes in
00:34:23.119
the late this year will come with some kind of experimental name spacing
00:34:29.040
implementation uh hopefully yeah we have we left several
00:34:36.879
very very big issues but I'm not sure we can fix it before the release anyway uh
00:34:42.960
the final API is under discussion so that it is you can um experiment play
00:34:49.560
with the the namespace things but uh it probably the current interface will be
00:34:56.240
removed so that don't use it in production uh the other things is uh we
00:35:03.839
I'm going to add to the new uh new language is annotation uh the I I want to add some
00:35:11.480
kind of the meta information to the code like uh the Python's decorator or the C's
00:35:17.839
attribute so the with once we implemented and provided
00:35:24.640
the the usable uh the pH ible implementation of the name space and
00:35:31.400
annotation I may consider making it Ruby
00:35:45.000
4 so that means you will see Ruby for in not this year not next year but uh three
00:35:52.680
four in three four years okay we have lot of other
00:35:58.839
improvements the performance uh yeah as I said in 2024 we
00:36:06.079
made up the the project R 3x3 and uh that means the r 3.0 will be three times
00:36:13.160
faster than Ruby to and then with with some benchmarks uh that leads to MZ then
00:36:22.160
Y and then Ru is getting faster actually each year we rce each year once in each
00:36:30.240
year that 5 to 10% faster each year that is does is great
00:36:38.720
things and the new version us less memory but some thanks to the the
00:36:46.359
variable withs allocation things which is the reduce the memory consumption so that that means that we
00:36:54.240
reduce the cost of the server side so that uh those Improvement many of
00:37:01.920
those Improvement are from Shopify because Shopify run the huge monolith of
00:37:07.800
the Rails application and it gets faster so that you can red uh they can reduce
00:37:15.839
the hust in the the cloud and then that
00:37:21.119
that reduction will you know cost the reduce their the Ser side cost
00:37:30.240
with probably uh by million dollars or something that's wonderful that that's
00:37:37.119
why big companies sponsors the Improvement of performance uh Ruby will be faster Ruby
00:37:44.720
will be cheaper uh Ruby will be more
00:37:49.880
productive and then we also Pro now providing tools and the prison is the
00:37:56.720
one attemp to help out the new tools especially syntax analyzing
00:38:03.960
tools then in in addition we are providing the type inferencing tool type
00:38:11.000
checking static type checking tools like type bro step soet that by using uh
00:38:17.160
those tools you can uh uh check the the types of the
00:38:23.400
arguments and the return values of the and the local variables in certain level without any type declaration uh you know
00:38:31.880
that I hate type declaration so
00:38:41.480
that unlik unlike python I'm not going to as type hinting or type type
00:38:47.839
decoration to the language uh in we have the rubber cop
00:38:54.480
with prism Ruby SB Ruby form mod and probably in the future we may have the
00:39:00.960
the AI based development tools the more tools more productive
00:39:06.760
remember that some years ago we used the plane Editor to develop but uh nowadays
00:39:15.560
we have the the syntax coloring and the old indentation uh the completion the smart
00:39:22.319
completion and the lot lot of other things so that we our productivity rais
00:39:30.280
by tools and we Al I also try to uh help
00:39:37.359
people help companies to uh Implement develop tools that would improve your
00:39:46.079
productivity and then by using those tools uh your productivity and uh your
00:39:54.040
joy will be will be improved and in enced and
00:39:59.839
increased uh so we help them uh to implement the gems even more
00:40:07.000
gems yeah uh we have right now I I don't know the
00:40:12.880
number of the gems in registered in the uh Ruby j.org probably uh tens of thousands or
00:40:20.240
something but uh probably we need more gems so that if your company has some
00:40:28.920
some tools libraries and uh that can be used by many people and uh
00:40:36.400
it's uh it's it does not help your core
00:40:41.800
competence of the the business that uh disclose your library to as a g rubby GS
00:40:50.440
that would help people and and that would help us all of course your core
00:40:58.640
competence should be disclosed and developed by yourself but uh the other
00:41:04.800
things like uh you know authentication or the security or data
00:41:10.440
structure or many things can be uh extracted and the the share among the
00:41:17.760
community remember that when dhh uh who is the the creator of the
00:41:24.319
Rubi on Rails uh implemented the the task manager tool managing tool named
00:41:31.119
the base camp he started from he implemented everything and then he uh
00:41:40.200
extracted the lower half of the application and made it framework named the rubian rails and
00:41:47.800
then the most of us get benefit from his
00:41:53.680
generosity so that similar thing similar things can
00:41:59.119
happen for your company your organization that I ask you and I advise
00:42:06.560
you to share your knowledge skills and tools and
00:42:11.640
gems uh Luis getting better we keep improving because of
00:42:18.559
us for user sake rubies improved to help
00:42:25.480
you and therefore the developer sake uh because you know uh if Ruby used many
00:42:33.240
people it re open source software so you don't have to pay to use Ruby but uh uh
00:42:40.559
by spreading Ruby so that somehow uh some companies try to help me become
00:42:49.079
sponsors of of us so that uh the better Ruby helps developers as
00:42:56.000
well and and for Community sake so that you
00:43:01.280
know this conferences you you attended this conferen and then you learned many
00:43:08.440
things probably and then some knowledge can be used in your day job but in
00:43:16.319
addition you enjoy the conference right you made a friend
00:43:22.839
right you made a friends that is the community that is the value of the
00:43:30.359
community so the and those kind of the Improvement leads
00:43:37.440
to Better World so enjoy programming Ruby is great
00:43:42.880
to program Ruby is for you and your enhance your freedom enhance your joy
00:43:49.200
Ruby is here to help you and I'd like to help you and then please help each other
00:43:55.760
as a community uh thank you uh this talk is sponsored by the NSA company which is
00:44:01.520
in Japan domestic company that hires me and the OSS vision is the my my this is
00:44:07.839
my uh my company and then the other companies who sponsors me and I get I
00:44:14.200
get many GitHub sponsors and I can I can live with this this this
00:44:19.880
sponsoring uh recently Shopify started sponsoring me thank you and Jet PR also
00:44:27.520
uh help me uh sponsors me so that if you buy the jet brain tools the money goes
00:44:34.200
to the jet brain then part of the part of the money comes to me thank
00:44:46.200
you uh last but not least the Ruby Community everywhere Japan Europe United
00:44:53.599
States Latin America Africa so that we have so many Ruby communities all over
00:45:01.040
the world they enjoy Ruby they helped Ruby and they made uh good relationship
00:45:09.920
between the community and which is I appreciate those community and that I
00:45:17.480
appreciate those Community to help me okay I appreciate you all you all the
00:45:22.760
community all people your Ruby all people who programs and enjoy
00:45:28.119
programming happy hacking thank you
00:45:59.599
thank you thank
00:46:12.119
you actually I'm sometimes feels uh feels
00:46:17.359
like some kind the impostor syndrome so the you know I'm not good at the the
00:46:23.079
communication I'm not good at the English uh relatively and but uh this standing o puff me up
00:46:32.319
and heals my imposter H syndrome thank
00:46:46.040
you gosh it's almost like the standing ovations were a good idea thank you so much mattz you're
00:46:53.720
welcome thank you one more time everybody matz