John Epperson
Appearances
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
To prepare for this episode, I also bought a collection of Raspberry Pi related devices.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
So I too could code along with Valentino's Ruby guide. And as he says, the Python is infested, absolutely infested the Raspberry Pi ecosystem. There's Python everywhere. And trying to root it out, trying to root it out of your hardware, getting a kind of Ruby pitchfork and digging all of the Python out of the examples is really fantastic work. So thank you very much for doing that.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
So that's really nice interface because it just does it for you after you turn it on. Yep. So you type measure and then anything you run from your IRB or whatever after that gets measured.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
So this is from the Hidden Gems Ruby article. The Ripper, it says, is a lexical analyzer. And you run the Ripper command on a Hello World and you get loads of stuff out. How did you get into using that? And what are you using that for? Because that, to me, looks incredibly technical and obscure. Yeah.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
Got it. So maybe if you're calling in some external library that's memory is going missing, that kind of situation?
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
Nice. All right, Luke, what are your picks? Well, I've got to pick my magic, haven't I? My max magic gem is definitely my pick. What a marvelous gem it is. But only version 3.5 or lower. You know how we were talking about JavaScript features kind of coming into Ruby 3? Well, now we've got kind of NPM features coming into the gem ecosystem, the Ruby gem system.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
We're really, really taking our lead from JavaScript at the moment. So I've linked to an issue on GitHub where some developers are saying that because this license changes to GPL, then everyone has to release all their source code. This really isn't true. This idea of a viral license was introduced by Microsoft in the early 2000s. And, you know, you can go on Wikipedia and look it up.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
And it's kind of a smear used against the free software movement that there is this kind of nasty license that if you include it in your code, then you suddenly have to release all your source queries and your business is over. There is a license called the AGPL. which has some restrictions on software as a service systems.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
But there is no strange magic license that you introduce that suddenly makes you do things. And people miss the point with free software a lot. They seem to kind of confuse it. The whole point of free software is that you have freedom. And if someone's making you release your source code when you don't want to, that's not really freedom. So people need to calm down on the GPL side of things.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
GPL is a great thing. It's built the... the computing infrastructure we have today, the MIT license is not so great. And I'm not such a big fan. But if you don't believe me, look into it for yourself. So there we go. My Pick of the Week, my magic. Thank you for keeping Ruby interesting.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
So I know this is the sound of Chuck's weekend disappearing.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
So this kind of environment automation and warning is kind of really important for you because you're dealing with medical data and things. So it's kind of really important you don't get it wrong.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
Yeah, this is the kind of double-edged problem of your sphere is because not only does it have to be really high security, but it also has to be high availability because the code is literally saving people's lives.
Ruby Rogues
The Hidden Gems of Ruby - RUBY 651
I didn't know that. I did not know that. I didn't either.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
Okay, so you guys went through all this work and effort to get Sorbet working at Shopify. So what did you get from that? What was your value? What was you guys' value proposition as best you understand it?
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
Wow. So there've been a couple of talks that you've given at RubyConf that I know about. I don't know if you've given more than that, but... Yeah.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
Yeah, I was just going to say, it sounds like you were able to test more or less your premise, right? Which is that you were going to be able to eliminate all of these name errors.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
Yep. Sorry about the confusion. One was on Sorbet and one was on the network. I know that I particularly, for one, am interested in hearing about your adoption at Sorbet. I think that's super interesting to me. Anything that you particularly want to note about either of those things that you're super interested in yourself?
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
Sweet. Then let's roll on into PIX then. Dave, would you start us off with PIX this week?
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
That's pretty cool. Nice. I'll be pointing some people that I know are super interested in that to you, actually.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
It's a great read. Awesome. So I have a couple of picks for this week. One is actually something that's been out for quite some time now, but I really wasn't introduced to it until very recently. It's called ASDF.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
If you're familiar with RBM or RVM or any other version manager or any language, ASDF is more or less a similar thing, except that it's really just cross-language, cross-tool kind of thing. They have plugins for things like Postgres and MySQL.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
I don't really see a lot of value with Postgres personally, but I did see, I was trying this out on a project that had MySQL and switching between versions is legit.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
Basically, the thing about this tool is it's really for making it so that you can set up your development machine to switch between versions of Python and Ruby and Node and your database that you have and a whole bunch of different tools. I mostly use Docker these days. So this really isn't like a thing that I'm going to use all the time.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
But I do have a couple like outlying projects that are just fun. And so I explicitly, I was introduced to this. I was like, all right, I'm gonna try this out. It's legit. So I don't know that I'm ready to completely give up RVM for this yet. Mostly because I do almost all Ruby work. But it's definitely taking some mindshare up in my brain at this point. So it's pretty cool.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
welcome to ruby rogues today on our panel this week we have dave kimura hi everyone and we have luke stutters hi and i'm john epperson and for a guest this week we have caseid leo lu yes hi welcome would you tell us what you're famous for what you do just a little bit about you so we can get kind of going here sure i'm currently working at shopify on the ruby and rails infrastructure team
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
Yeah, I definitely remember more than one talk at RailsConf throughout the years on how you guys' infrastructure changed. And I remember sitting at the table with some Shopify people one year who were talking me through how they were moving from Vagrant to Docker. So yeah, I do remember the story changing.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
I'm not expert enough to talk about it by any means, but that's been crazy to watch from the outside. Yes. So, all right. To get us down into Sorbet, maybe from a high level, talk about what you guys did to make Sorbet happen at Shopify.
Ruby Rogues
Sorbet with Ufuk Kayserilioglu - RUBY 664
So just a quick follow-up there. So you guys have this problem in Shopify because you have a bunch of gems. Did the people that created this gem... Stripe, yeah. Stripe, yes. I don't know why I couldn't think of it for a second. Did Stripe not have any gems dependencies then?