Summarized using AI

Closing Keynote: Better Ruby

Yukihiro "Matz" Matsumoto • September 13, 2024 • Sarajevo, Bosnia and Herzegovina • Keynote

Closing Keynote: Better Ruby

In this closing keynote for EuRuKo 2024, Yukihiro "Matz" Matsumoto, the creator of Ruby, discussed the theme of making Ruby better, reflecting on the language's strengths and future developments.

Key Points Discussed:

  • Theme and Structure of Conference:

    • Matz expressed his nervousness and satisfaction with the three-day conference format, which included more sessions, keynotes, and speakers than in previous years.
  • Purpose of the Conference:

    • The gathering was centered around Ruby, emphasizing its productivity, fun, and engaging community. Matz humorously described Ruby programmers as lazy, impatient, and arrogant—traits that foster creativity and improvement in programming.
  • Ruby’s Unique Community:

    • The deep connection between users and developers in the Ruby community, in contrast to other programming languages, allows for direct communication, inspiration, and contributions to the language.
  • Ruby's Continuous Improvement:

    • Matz highlighted Ruby’s open-source nature, encouraging users to continue making improvements and producing libraries (gems) for various applications. He mentioned various Ruby updates from YJ to object composition and more recent advancements in 2023, including data classes and the Prism parser.
  • Performance Enhancements:

    • He discussed the importance of making Ruby faster, referencing the Ruby 3x3 initiative aiming for Ruby 3 to be three times faster than Ruby 2. Notable improvements include the introduction of generational garbage collection and the MZ compiler leading to significant performance gains.
  • Future Developments:

    • Future updates will focus on maintaining Ruby's user-friendliness while implementing features like namespaces and annotations. Matz assured the audience of ongoing performance optimizations and the role of community feedback in shaping Ruby’s evolution.
  • Community Engagement:

    • Matz encouraged all attendees to share their knowledge and tools, asserting that the Ruby community’s strength lies in collaboration and mutual support.

Conclusion

Matz concluded with a heartfelt appreciation for the Ruby community around the world, expressing excitement for Ruby’s future. His message emphasized the importance of joy in programming with Ruby, the necessity for constant improvement, and the impact of a supportive community that nurtures creativity and innovation.

Closing Keynote: Better Ruby
Yukihiro "Matz" Matsumoto • Sarajevo, Bosnia and Herzegovina • Keynote

Date: September 13, 2024
Published: January 13, 2025
Announced: unknown

EuRuKo 2024

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
Explore all talks recorded at EuRuKo 2024
+39