John Epperson
👤 PersonPodcast Appearances
To prepare for this episode, I also bought a collection of Raspberry Pi related devices.
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.
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.
Code by code, we'll make it through.
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.
Got it. So maybe if you're calling in some external library that's memory is going missing, that kind of situation?
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.
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.
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.
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.
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.
So I know this is the sound of Chuck's weekend disappearing.
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.
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.
Are you hijacking this IRB talk with Pride?
I didn't know that. I did not know that. I didn't either.
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?
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.
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.
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?
Sweet. Then let's roll on into PIX then. Dave, would you start us off with PIX this week?
That's pretty cool. Nice. I'll be pointing some people that I know are super interested in that to you, actually.
Luke, what do you have for us this week?
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.
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.
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.
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.
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.
Definitely recommend checking that out.
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
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.
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.
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?
Gotcha. Okay. What else did you encounter?
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?
Hello, everybody.
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?
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.
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.
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.
So just to clarify what you're saying, you kept Akka. You just pushed it across the finish line despite all your problems.
So that's how you resolve it. Okay.
You just suddenly notice that you're at the bottom. So yeah, just saying.
So this goes along for me with... No, no, no, no, no, no, no, no, no, no.
You can still have a dollar sign.
I do like stimulus. I do feel like we can let React go now.
So for all of you who, along with Luke, are mourning jQuery, I'm telling you, stimulus, go check it out.
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.
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.
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.
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?
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.
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?
And whenever we don't have self-discipline or whenever we, you know, just break it because we're human beings, bad stuff happens.
Yes, I'm familiar with it. Luke, I highly recommend it. What's it called?
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?
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.
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?
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
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?
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,
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.
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
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.
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.
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.
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.
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.
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.
Though, actually, I remember they had an article about they did some homework or something recently. Whatever.
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.
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,
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.
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...
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.
Never seen anything like it. I just wanted to confirm something here really quick, Luke. Is this a legal version of Windows 10?
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.
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
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
Yeah. Thank you for coming.
Take care, everybody.
Can you talk for just a minute about what was the problem that you were trying to solve? What did you need Akka for?
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.
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?