Menu
Sign In Pricing Add Podcast

John Epperson

Appearances

Ruby Rogues

The Hidden Gems of Ruby - RUBY 651

102.377

To prepare for this episode, I also bought a collection of Raspberry Pi related devices.

Ruby Rogues

The Hidden Gems of Ruby - RUBY 651

109.879

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

1210.447

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

138.526

Code by code, we'll make it through.

Ruby Rogues

The Hidden Gems of Ruby - RUBY 651

1817.845

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

1877.137

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

2365.225

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

2396.725

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

2424.872

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

2445.757

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

2470.659

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

3163.484

So I know this is the sound of Chuck's weekend disappearing.

Ruby Rogues

The Hidden Gems of Ruby - RUBY 651

713.791

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

805.558

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

841.113

Are you hijacking this IRB talk with Pride?

Ruby Rogues

The Hidden Gems of Ruby - RUBY 651

973.021

I didn't know that. I did not know that. I didn't either.

Ruby Rogues

Sorbet with Ufuk Kayserilioglu - RUBY 664

1201.257

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

154.099

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

1686.999

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

174.387

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

3059.525

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

3167.515

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

3184.931

Luke, what do you have for us this week?

Ruby Rogues

Sorbet with Ufuk Kayserilioglu - RUBY 664

3231.891

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

3244.093

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

3264.12

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

3275.026

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

3299.01

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

3320.922

Definitely recommend checking that out.

Ruby Rogues

Sorbet with Ufuk Kayserilioglu - RUBY 664

44.531

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

494.446

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

510.59

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

923.874

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

Sorbet with Ufuk Kayserilioglu - RUBY 664

991.69

Gotcha. Okay. What else did you encounter?

Ruby Rogues

Exploring Tech Choices and Team Dynamics with Jesse Spivak - RUBY 669

1063.067

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

1542.275

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

1568.002

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

1583.385

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

163.18

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

1699.818

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

188.803

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

1928.237

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

1983.176

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

2042.036

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

2052.915

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

2076.904

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

2157.089

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

2178.032

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

2202.357

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

221.224

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

2225.851

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

2265.894

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

2277.622

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

2416.732

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

242.359

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

2510.595

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

2535.018

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

2556.119

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

256.027

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

2574.096

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

2615.307

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

2638.672

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

3108.078

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

3134.785

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

3156.297

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

3170.686

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

3192.107

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

3199.971

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

3393.376

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

3410.436

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

3472.625

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

3489.528

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

3598.144

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

3666.166

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

3683.806

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

3699.345

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

603.177

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

806.782

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

909.715

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?