Allow everyone. I'm Sotero. I'm one of the the big core committeers and
in Tokyo it's I'm nine am in Japan, so it's pretty somewhat our owning,
but I'm fine. Thank you for inviting me to the this podcast,
and I'm very excited to talk here. So yeah, absolutely, Yeah,
a lot of exciting stuff coming from the Ruby cour team. We got Ruby
three point three in December, which is exciting and yeah, lots of cool
stuff. Do you want to tell everybody what you do on the Ruby courteam?
Yeah? Uh yes, so uh, I'm my project is RBS in
the d BI core. It's a Lubi jam that is ban joge uh.
I think that it was started from the dubichavenlessly there forget exactly, but yeah,
it's included in the B distribution and you can use that without the another
step two in store that jem uh. It's how let's say that for the
type checkers or type chickens. So okay. The Yeah, r B S
is a language. It's also a language, uh. It is to describe
the structure of the U r B programs. So your programs has some classes,
some modules, some methods, and mainly lates the each other. So
the RBS is a lranguage to how they said to describe the structure of the
classes modules, and it is also a jem to find the files and road
to the euro B program and doing something to yeah, interpreting the language.
Well, well, I'm gonna ask the big question for this summit, and
that is what is the future of Ruby? And it doesn't necessarily have to
be type checking your type signatures. Uh, any part of Ruby that you're
excited to talk about, or anything you're excited to see, come out happy
to hear about any and all of it. Eventually we will talk about type
signatures, but we can start wherever you want. Yeah, yeah, yeah,
uh so, yeah, I think that I guess that's choking about the
future of the RBS or some types in the community. Uh yeah. So
I started bucking Poesy ATBSM about five years ago. So and then walk developed
some gemons and yeah. I also developed a static type checker for dub.
It's called and yeah this uh my my projects I'm working for ready to to
be Yeah. I hope the inter future, the more LUBI programs or more
lobbists uses that gems or right types. Uh, right, types, I
don't know, but yeah, this is the difference between me and much about
the what the types can do for the programs. But yeah, so he
has writing types. But yeah, I mean, I mean yeah, two,
I mean that, uh, I don't think that forcing writing types to
your programs, of course, but that Yeah, the the point is that
to get the uh the maximum auto the types or the auto the analysis,
so you have to it's it's better to describe your being. And yes,
solids at types in some programs. So yeah, but that, yeah,
I mean that getting more popular making my type systems, gems, i'd BS
and Steve more popular in dubs well of step peaches. I'm thinking about bube.
Okay, Yeah, I I haven't done a lot with the types options
in Ruby. I know that there's RBS, like you said, I think
we've talked to somebody about sorbet in Ruby. I also do a JavaScript podcast
and this reminds me a little bit of typescript that sits on top of JavaScript.
And yeah, I mean, I'm just trying to think through some of
the things that I've heard. I've heard a few people basically talk about how
it catches bugs or issues that they wouldn't otherwise run into before they release the
production. So that's that's one thing. And then a lot of times the
conversation also goes to tooling. Are are there any other benefits to having a
type system in Ruby? Do you think people would drive people to adopt it?
Yeah? Yeah, yeah. The finding some kind of the bugs is
the absolutely the one of the most important outcomes from the tickets. But that
uh yeah, the recent type tickets also provides some of the integration into the
edituts. So it will help you reading. You a bit called writing,
we are really call it. So it will show you some of the possible
massot names as a completion and you can pick someone, or it will show
you the uh how would you say that a documentation? What this messod is
doing? So what the parameter should be? Or yeah, right side.
So this is to help the writing you are to be caught in idea.
Another one is that, uh you it will help you leading your programs,
leading your programs, so you will hope some of the nodes in the programs
and then it will show help the the editor will help will show you some
of the documentations of that method, or you can jump to the method implementation
to confound what it is doing exactly where you may find something to some of
the differences some of the UH to be caused signifets in your pro project that
is calling that method. So these features uh will be Yeah, it will
really help you reading, writing your top programs. So yeah, I think
that it's probably more important than simply finding the ballots. So we can find
bulks by writing tests or depraying into the production and seeing that some bugler post
work. But yeah, so the type system just works through annotations basically when
you use parameters or declaring method or things like that. Right, Yes,
Yeah, it's a bit complicated. I mean that I do you see in
typescript JEBA, c CHEP or in any modern type CHECKT brangages that you usually
expect the writing the type signatures in USS code just above the method definition.
What's that? But that RBS is a bit different from that, so it's
hard that separate fires. It's a different rung edge from Ruby. And then
we need to how they say that writes something. There some of the obstruction
of the big program and there, so there's some crass crafts something or they
have something to find the mess out and then yeah, then the typetic away
combined to to be called an RBS file and type jack set. Okay,
yeah it sounds good. So yeah. Well, one thing that's interesting is
and I haven't seen it as much in Ruby, but definitely a JavaScript there's
been a wide amount of adoption for the types and it basically boils down to
the tooling and some of the things that you're talking about. So do you
think this is going to get a wide adoption in Ruby or are we do
we just do things differently then say the JavaScript community. Yeah, yeah,
yeah, it's a good question. Uh yeah, I still don't have any
concrete conclusion, any conclusion for that. I don't know that how much the
adoption will be or how it will be. So there are some cases that
are I'm pretty sure that if you develop some application, the type checkers will
help you so, but that it also needs some of the type definitions of
the libraries. So the so if some some gem auss wright types of the
gem and includes the definition in the gym, it works. So it's it's
very great. Yeah, everyone will be happy, but that yeah, I
don't think that every gym alsots want to do that. So yeah, yeah,
yeah, some gems will without type definition. Yeah, so for that
case, we have how they say, the community managed type definition the poetry,
so it's under the GitHub to be organization and called gem rbs correction.
So we have uh yeah uh some gems inside the poetry and the type of
definition of that gems so it's something like that the plinantary type for that type
system typescript divascript. So they also have a big community managed the poetry is
for the packages that without the type definition. So we're doing the same.
I hope it will help you, but that yeah, the coverage of the
Jim Obvious correction is very small and yeah, we are waiting for you contributor
again. Yeah right, that makes sense. So yeah, I have to
say I'm not convinced that this is something that I want. I'm also not
convinced though, that it's not something that wouldn't be good for me. So
I'm a little curious. What is the disagreement between you and Matt on un
Ruby type signatures and stuff like that. Yeah, yeah, yeah, uh,
it's about it what Yeah yeah, yeah, he says that he wants
something like the type influence so we don't have to write types in the to
be prone or you know, the type of signatures, but that it would
be automatically generated from the B programs. M hmm. Okay, yeah,
this is that what MATS is MAT's harps and yeah, I don't think it's
it's very helpful mm hmm. Yeah, because that the BI program is literally
flexible, so that generated generated types will be too. I would say that
too strict or it's too parmisip. So it means okay, yeah, we
can pass at something and then we can get something. So it's it may
be a type, but it's not helpful. So we can say that it's
an integer to indiger, So I mean that it may be correct, but
that we may want to pass something like the throat and then it may work.
So yeah, so it's it's a It's very important to find a good
balance between the two specific one or two general one the best wait and the
Yeah, the program is that uh, it's not the it's not the something
we can find a technically or automatic carry. But with the the programmer has
the answer to it. It's a program as opinion, it's a program as
intentions. What is the best type is the program as intentions? And we
cannot generate the yeah, the very good one. What much career, Yeah,
I can. I can see why that would be a hard problem.
Yeah, yeah, so it's yeah, uh then we need some types.
So it's it's it's it's not the some clinical constraints, but that it's an
opinion of the oasis. Mm hmmm. So yeah makes sense. So so,
yes, you said that this was shipped with Ruby two seven or Ruby
three zero. So if I want to use a feature like this, how
do I turn it on? Do I just do I even need to like
require it or gem install it or uh? Yeah, RBS is a gem.
It is a bundoy to to be so yeah, it's I mean that
when you install some Ruby distribution using rb M, r b M, I
don't know. But so then that gem is already installed on your computer,
right, so you don't need to GEM install RBS well something, yeah,
but yeah, of course require RBS. Yeah, just require RBS. But
yeah, I also recommend using the ratest badge nobody. So yeah, yeah,
I mean I mean that I recommend the Yeah, putting the RBS in
your jump fire rocks that that yeah, right, that makes sense. So
if you put it into your gym file or so gem INSTALLID then you'll have
the latest version. Yeah, it would be the one. Yeah. It
they recomended way very cool. Yeah, I kind of want to go play
with it and just see if I like it. Yeah, yeah, yeah,
I hope there will be a very some interesting experience that so that uh,
you can write that types of to be programs in GYM in RBS.
So there's some class something something something. So but that also I yeah,
my recommendation is that using some static type checkers, I mean it's deep,
it's my static type checkers. Then it will variegate the how this is the
consistency between the your reprogram and your RBS type definition, and then it will
find some type errors or yeah, it will provide some editor integration and yeah,
but that if you, yeah, if you are not interested in using
the static type checkers works deep, you can use the RBS gem yourself.
So you will write the RBS fires and then you will write some tests for
the type definitions using the RBS. So it's somewhat the very uh it's strange,
but that we we have the how they say the type definition of the
program, and we also have a test against tests for that type definition and
then yeah, it works. So this is something that's out there that people
can already use. So what what is your type checker? You said it
was steep steep, Yeah, and is that also bundled in with rob or
do I have to go install it? It's not man joyd ind be.
It should be in store. So yeah, because of the how they say
said disagreement with muth but yeah, yeah that you may not. Also about
the type prop, it isn't another project by the It is built on the
top of the id s and it doing more closer to what the mat HAPs.
So it's scans. You got to be caught and generates the rbs pires
and so yeah, you don't have to write down every us pires, but
that type propriate with you by scanning the yout to be called. So this
is uh yeah, type prop is bandoid to to be so you don't have
to insult type prop them. Yeah, type properly is bando it, but
steep it's not band it. Okay, yep, very cool. So yeah,
it'll be interesting to see if people adopt this. I've heard various people
talk about different aspects of type checking and Ruby and whether or not they like
it. I know some people really really like it and some people really don't
even want to think about it. So yeah, it'd be interesting for sure.
Yeah, yeah, yeah, I think that, Uh. One feature
I want to see is that a lot of more projects built on the top
of RBS. I mean that currently the yeah type off is aesthetic type checker
that is is on RBS, and Steve is also a static type checker.
And we have our program of I r B that helps the uh doing doing
the completion for the your how this interactive to be programming in our I r
B. So based on the types and yes, that's it. So,
but I think that we want more projects some for example, the one thing
I have in my opinion is that in my mind is that the cup or
something like that, the Lobo cops sometimes uh yeah, some of the cops
in the cup is doing detecting some probably it's a dangerous messod course, like
the open kind of open Yeah, I forget it, but that yeah,
so, but that it's not very clear that if it is exactly called that
open method, but that using the type chickens, using the desert type chicken,
the the method detection will be improved. Cool. Yeah, so it
will give you the more precise of they're saying that detection which method is called?
And I mean that, Uh, we can develop more cops, the
more cops to find some programmatic to be called the right. Yeah, I
mean that if we yeah, if it is a really common method name or
out of the misdeediction of the method, we cannot see that cops because there
will be so many false positives. But that if we can make it more
precise, then we can do more analysis. Right, yeah, makes sense.
So when you're not working on type systems for Ruby, what what do
you do? Oh about the programming? You mean? Yeah? No,
inpacted, almost everything I do for to be programming is that type tick ass
that makes sense? Something realy the PATHI chickens, Yeah, yeah, I
use some Yeah, I do some of the past passing, right. Yeah,
I'm working for the pasaive generator but that yeah, it's GEM But yeah,
makes sense. So do you get paid to work on RBS then?
Uh? Yes, I think the Yeah, Patry not that for time,
but that yeah. Part of my WCKJAM is I can usuppose the RBS and
yeah, it's really it's really very great cool. Are there other things you
see coming down the pipe, either with Ruby or in the Ruby community or
ecosystem, that you're excited to see. I'm very excited to see the why
did it's the performance in Broman of course, and some of the presom pass
also very great one. Uh yeah, I also planned to use the prism
to steep and maybe in RBS, but yeah, not not yet studied,
but yeah, it would be very great experience, great improvement. Would also
love the how I say that, oh, to be a respe is very
very great, awesome, It's awesome. So I'm using that in my everyday
developments. And the last one I want to mention is that I would say
that webys and Brie support. Yeah, web some support and the b Yeah,
they had heard rumors about that. I don't know where it's at.
Oh webat and by right yeah, okay, okay. So it's a kind
of the running to be interpret or in your browser. Right. So it's
something like that we land the JavaScript in your browser, but that we can
run to be programmed in the browser. Right. So by yeah. So
one of the I said, one of the three use cases of the web
assembly is that I want you to provide some playgrounds of this deep in on
on the browser. So then you can try type chicking your to be caught
on the browser by accessing some websites and it will download some steep to be
caught and some of them to be in the preacher that is web assembly,
and then the brands on your browser. So it would be great, right,
Yeah. I just looked up an article and it says that it came
in the three point two release. Yes, that's three point two. That
is very cool. I didn't know that they had gotten that in there.
So yeah, yeah, oh what. Yeah, I'm still waiting for some
of the concurrences support improvements in the Yeah, this is how they say that
somewhat be our program to me. So, because that's deep uses a lot
of worker processes response up to the Yeah, it depends on the number of
the processes on your computer. But that exponds twenty to be processes to do
the type chicking. But that we can, Yeah, but if we do
some parallelism and inside they do bi processed will be very great. So because
that we can stop respawning the twenty to be processed, but we can use
twenty threats in the Yeah, twenty gives I guess that in the in one
to be processed, right, makes sense? So what what do I have
to do to compile Ruby the web assembly? Oh yeah, I did not
exactly. Okay, do you know who's working on it? Because I I'd
love to pull him in and ask him a bunch of questions about this.
Yeah, yeah, yeah, I didn't know. I didn't know. I
would see Yeah, webus MB right now I should track yeah, all right,
I'll I'll have to track down who's uh, who's running that? Yeah?
Cool? Is there anything else you're looking forward to coming out or mm
hmm no no, yeah, all right. Well then I just have one
more question than that is, if people have questions about RBS or anything else
that is coming down the pipe that you're working on, how do they connect
with you? I'm sorry that what? Yeah? How do people find you
online? Oh? Yeah, yeah, yeah, I'm on the discol channel
the Yeah, I'm on the master don or Discorde's English social. Yeah,
it'll be that social. And what is the Discord channel there to be discord?
I don't know what is? So yeah, I'll be there so you
can talk to me. What Yeah, you can joke to be on the
open the prodcast or Fire an issue, and the Guitar Project on the RBS
project. All right, sounds good. Well I'll go ahead and wrap it
up. Thanks for jumping on and talking to me. Yeah, thank you,
Thank you to say it was Leui. Yeah, great, chalk with you