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?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Okay. So it sounds like you had an advocate and that's kind of how you landed on it. Where did you go after you decided that Akka was the poor choice? Like, what did you end up with?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah. So I think you're hitting it like one thing that's like really important, right? So one of the things I think that really kind of makes you a strong engineer of sorts, right? It's not necessarily like to avoid mistakes because shoot, for whatever reason, they keep happening to me, right? It's, are you good at cleaning up, right? Are you good at figuring out that something's not right?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Something smells funny, whatever it is. Can you go back and, you know, sweep up your mess, you know, either push it across the finish line because you're close enough or Or say, actually, this is the wrong path. We should actually back up, go to the last intersection and go down the other way.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So, I mean, it's definitely, yeah, I mean, I can speak to experiences too, where I was just like, man, I really like missed all the flags. And then I kept missing more flags and just kept going. And why are we surprised that we were in a bad place? Because I ignored everything. So I hear you, man. And kudos for recognizing it at some point and doing something about it.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Luke is the perfect developer, let's be fair. No, I was actually going to jump in and say that, like, I don't feel like I'm alone, but usually when you make a mistake, it cascades into more. For whatever reason, I generally feel like you either are rolling along and you feel pretty good about stuff, Or you're just like in a bottomless pit. And there's very little in-between time.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So just to clarify what you're saying, you kept Akka. You just pushed it across the finish line despite all your problems.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So that's how you resolve it. Okay.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
You just suddenly notice that you're at the bottom. So yeah, just saying.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So this goes along for me with... No, no, no, no, no, no, no, no, no, no.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
You can still have a dollar sign.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
I do like stimulus. I do feel like we can let React go now.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So for all of you who, along with Luke, are mourning jQuery, I'm telling you, stimulus, go check it out.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
I don't have an answer. That's fair. I thought I found it pretty easy. I thought it gave me everything that I felt like I was getting from jQuery before, which is a thing happened on the page. And because that thing... I mean, Jesse... Talk about event-based architecture here. Come on, this is exactly what JavaScript is, right? And jQuery especially, right? Stimulus is exactly that.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Event happens, do something else because this thing happened, right? Just saying, if you love that event-based architecture style, stimulus is that. It's just way prettier. And I found it a lot easier to use. And because I don't like dollar signs, I was happy about it.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So now that we've decided that Jake Ray is dying and hopefully our mourning period is almost over. It is dead. I know it's dead. I'm just finding it hard to cope. Okay, fair. So Dave, you earlier had me a little bit on this train and I kind of wanted to go back to it or whatever, talking about like changing multiple things.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Because there's so many places where we can find ourselves tricked or just like seduced into it, right? Where it just seems like the right thing to do. So the thing that I like to tell people, because it made total sense to me when I first heard it, was Kent Beck's, first you make the change easy, then you go and make the easy change, right?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
And the important thing about that is there are steps here, right? Yeah, dude, engineering is all about taking those tiny steps and, like you said, testing, right? And we all know what happens when we change a bunch of things at once. And then we all do it. And, and then we, yeah, this is how we go down the road of mistakes. Engineering is this, it requires self-discipline.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
I think that. OK, so so speaking of that, I think there's a give and take there, too. So I think this is one of the this will get into a thing that I care a lot about this particular subject, because for most of my shoot, I still feel it today or whatever. It doesn't really matter. I still always feel this pressure. to not let people know about the mistakes that I made, right?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
And whenever we don't have self-discipline or whenever we, you know, just break it because we're human beings, bad stuff happens.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yes, I'm familiar with it. Luke, I highly recommend it. What's it called?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah, exactly. You know exactly. I will check it out. I've seen that art too. He looks like he's really angry. Exactly. He's got no hair, right?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
I always call those my naive implementations. And it's totally cool to write really terrible code during naive implementation. That's not the point of it. The point is to get from having nothing to having a working thing. The important thing is that after your naive implementation, you decide whether it's worth refactoring, when you're going to refactor, all that kind of stuff.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Because letting people know about the mistakes that I made makes me more vulnerable to them not wanting me to work for them, right? Like fire me, whatever the bad thing is that it's a boogeyman. It's not real. It's just a pressure, right?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
I think, in my opinion, if I had an answer for that, I would be... I would be a super wealthy person because in my experience, usually what happens is when you get to the point that you're calling something a naive solution, right? It's usually because you recognize that there's a problem with it, right? And one of the things that's going on, I feel like
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
is that you're kind of burning yourself out on the problem at that point. When you sort of have this realization, you're also at the point that you're kind of burning yourself out on this problem. So if you as an organization don't have the resources to sort of like swap out people, you know, bring somebody in that's fresh, things like that, right?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Or kind of go back to a huddle and, you know, somehow become re-energized. Like all the things that we can do are almost all like social interactions, not engineering interactions, right? And so if you have a culture where you can kind of deal with that,
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
And so I guess what I'm trying to get at is like, I kind of feel like one of the things that I always care a lot about with mistakes is telling people about your mistakes. I actually... have discovered in reality actually makes people respect you more, But it doesn't change the fact that it's like really hard. And I still feel that pressure to this day.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
I feel like people can kind of turn around and refactor and make reasonable choices or whatever but if you don't like I feel like it's really hard it's really hard for you as somebody who just burned yourself out pushing something across the finish line that was really hard to then turn back around and be like I'm throwing you out and I'm gonna redo this really hard problem again right like that's just a really hard thing to do I think it's interesting that you say that because at the point that we made that decision the problem didn't seem hard anymore
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
You also said a really important word there, which is we, right? So one of the things that you did as a company to recover from this problem is you went back to this huddle and you said, hey, I made some mistakes, right? And and then your team said, that's OK, Jesse, we as a team are taking ownership for this. Right. Like and we as a team are going to fix this. Right.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Like that's what a lot of that communicates right here. And when you do that, like that's one of those reenergizing moments or, you know, things. And then those decisions become a lot easier in my experience.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Awesome. I'm definitely curious, as you guys implement this, when you kind of come back and say, well, this works and this didn't work, or this is how we sort of had to come up with a way to Because this is a subjective thing, this is how we came up with a way to make this more objective than it originally was. And that helped us. Definitely interested in seeing this.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
All of the pain points that you're talking about, all this homework that we have, all these coding challenges that we do. I feel like as a community, we talk about how aware we are that they don't work. But we don't have alternatives yet. And so people continue to use them regardless because they're like, well, I don't know what to do.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
And people who are lost, you know, just run back to where they came from a lot of times, right? It's like the squirrel. It's like in the middle of the street and a car is coming. It's like, shoot, I got to go all the way back. So I kind of feel like we do a lot of that still. Yeah, there have been various things like talked about.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
I remember, I think I've heard various people from ThoughtBot on various podcasts, like talk about the fact that like, They have you come and spend like, I don't remember if it was like a day or whatever, a half day, but like a lot of time with them pairing, right? I know that Bootcamp does that as well. Or Basecamp, sorry. Wow, whatever. Basecamp does that as well or something similar.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Though, actually, I remember they had an article about they did some homework or something recently. Whatever.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah, that's okay. Yeah, I mean, there's people that are like exploring around these edges, but we don't really have like a good way forward, I feel like yet still. So I'm super interested to see how this turns out.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah, I mean, you always have to check to make sure that whatever test you're giving, right? Like, you have to decide what you're testing for. And you have to say, is the question that I'm asking actually testing for the thing that I'm testing for? And too often, we jump to this conclusion that,
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
that oh yeah this sort of this sort of is related therefore it'll let me know when really you're just you're making a subjective judgment call again and calling it objective so yep it is it is a thing that's very painful and maybe maybe we should we should focus a little bit on this in the future and have a more in-depth chat about this. I feel like that would be an interesting subject.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah, I have gone for the past, like, I don't know, four or five Rails comps. I've gone to basically every single talk that was sort of like related to the subject. I do, I care about it quite a bit. And I just kind of hope that we get to a better place. It's...
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah, like I said earlier, my feelings on this, I think, are basically what I said earlier, that I think that a lot of people are thinking about this. And I just don't think there's a clear answer yet. But I'm super interested in everything that people are trying. Experimentation. That's how I think we're going to get a little better.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Never seen anything like it. I just wanted to confirm something here really quick, Luke. Is this a legal version of Windows 10?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah, so I have a different pick this week, too. By the time this comes out, I have no idea if people are even going to still be playing this game. But I have been playing and streaming and absolutely having a blast playing, I guess that's redundant, Among Us.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So if you're not familiar with it, if you're familiar with like Werewolf or Mafia or kind of games in that nature where you, there's another game that people have like compared this to or whatever, where you like sort of have like
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
like townsfolk and then you have like people that are pretending to be townsfolk that are like trying to kill everybody off and your goal is the townsfolk are to try and find the uh well in this game the imposters among you so this is like set in space or whatever but yeah it's an absolute blast i i really am not sure what to say about it other than it's like kind of like a great social game
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah. Thank you for coming.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Take care, everybody.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Can you talk for just a minute about what was the problem that you were trying to solve? What did you need Akka for?
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
So, all right. So this seems a slightly, I mean, it's a twist, right? On your classical inventory problem, right? Is what it kind of sounds like. So the way that ACCA came into this is, is what you were taking, like what all these requests from users and trying to decide whether or not you were going to, I guess, give them the coupon or not or something.
Ruby Rogues
Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669
Yeah, so did you consider alternatives? Did you reject them for various reasons? And I guess, so obviously, Akka didn't work out for you. So you must have picked something else that you like better. And how did you arrive at that new thing? And what was that, if that makes some sense?