Python Bytes - #372 uv - an impressive pip alternative

Episode Date: February 20, 2024

Topics covered in this episode: uv: Python packaging in Rust jpterm Everything You Can Do with Python's textwrap Module HTML First Extras Joke See the full show notes for this episode on the web...site at pythonbytes.fm/372

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 372, recorded February 20th, 2024. And I'm Michael Kennedy. And I'm Brian Akin. This episode is brought to you by Scout APM. Super psyched to have them supporting the show. So we'll tell you more about them later, but please check them out. The link is in the podcast player show notes or on the website. If you are one of the lucky ones, Brian, who is attending this live, they got here by going to pythonbysetup.com slash live,
Starting point is 00:00:32 crushing the bell, saying get notified. They got notified when this comes on, when it's scheduled, and here they are. For those of you who are just listening, we super appreciate that anyway. How are we listening? Thank you, thank you. Connect with us over on Mastodon. We're all on Fostodon, at Brian Ocken, at M. Kennedy, and at Python Bytes. Brian, before we jump into the news and before I forget, I just want to make a quick announcement. I will be at PyCon Philippines starting.
Starting point is 00:01:00 I leave tomorrow at, I fly from Portland to San Francisco at 8 p.m. And then I leave San Francisco at midnight. So who knows what state I'm going to be in, but I'm pretty sure with the time zone change and the travels and all this, there's not going to be a Python Bites next week. So we're going to be probably skipping next week, which is a good chance for people to catch up if they fell behind. Yeah. And also I'm jealous and I hope you have a great time.
Starting point is 00:01:24 Thank you very much. I'm hope you have a great time. Thank you very much. I'm going to have a great time. I'm worked as was writing the keynote speech yesterday and it's going to be good. It's coming together nicely. So it's always nerve wracking. I don't know how, what is your, what is your way of working on box and stuff? Like I, I want to be prepared and I'm the kind of person that would get prepared a month or two months early. But then if I write the stuff and then put it away and then come back to it, I've kind of lost the inspiration and the nuances and the details. So I don't want to write it too soon, but I also don't want to wait till the last minute. So there's this weird, weird trade-off. I feel I mostly, I try, I usually try to cover too much stuff and talk. So I try to hear it down
Starting point is 00:02:01 and then, yeah, I practice the heck out of it uh the ones where some some talks i like i'm fiddling with the slides too much until like five minutes beforehand and that goes terribly so i i yeah i like to do it early in practice so all right well over to you i know you have a big announcement yeah you're coming in first yeah you are. Okay. is the python end so uh like replacing um this is actually incredible it's a it's replacing uh pip pip tools and virtual lamp all in one new uh rust driven tool um it their announcement said maybe um uv represents a milestone in our pursuit of cargo for python a comprehensive python project and package manager that's fast, reliable, and easy to use.
Starting point is 00:03:07 They're also kind of, it's interesting, kind of combined in this announcement is that they're taking, Astral is taking stewardship of Armin Roeneker's Rai tool. That's an experimental tool. So I'm not sure what that has to do with this, but I don't know. It's interesting. But have you given this a try yet? Oh, yes. I am so psyched about this. Charlie and team, congratulations, because this is setting the world on fire in a lot of interesting ways. So I, you know, Charlie aimed this right at
Starting point is 00:03:39 like my style of programming and working with Python dependencies and projects. So on one hand we have just the pip pip free side, right? And then on the other, you've got the poetry and other, um, pip and where you've got like some other API that kind of manages everything. And I want some of the benefits of that, but I want it to be just a simple requirement that TXT or something like that in the end, right? Yeah. And so I use pip tools and pip tools will go and say, okay, what do you say? I want it to be just a simple requirement.txt or something like that in the end, right? Yeah. And so I use pip tools and pip tools will go and say, okay, what do you say you actually need?
Starting point is 00:04:10 And then let's build out what would be into the virtual environment after that. And it's great, but the command pip compile, like for mine, I don't know how long it takes, probably 15 seconds to pip compile, update the list of things for TalkPython training. I think there's 250 dependencies in the dev version. It's out of control. It just takes a real, real long time. With this, instant. Yeah.
Starting point is 00:04:34 And it's just so good. They have some benchmarks up there. And it's like PIP sync versus UV PIP sync is like 60 milliseconds versus almost five seconds, right? Those are different types. It's, it just happens versus UAE. Okay, hold on. It's working. You know what I mean? Yeah. And what's really pretty interesting is that it looks like it's gotten a lot of, it's, it's not necessarily that it's just because it's written in rough, rough rust, reading rough as I'm saying that, not just that it's written in rough, rough, rust, reading rough as I'm saying that, not just that it's written in rust,
Starting point is 00:05:07 which it happens to be because that's the vibe of Astral, right? Starting with the rough stuff, but that they've maybe unlocked some different algorithms or techniques or something like that, where even if it were in Python, it would be faster,
Starting point is 00:05:21 which is pretty interesting. Yeah, there's some caching that they've done and like site-wide caching and keeping also keeping pip um actually makes sense to have some of this stuff virtual m and pip outside of the python tool chain system so that um because you're going to want it in each virtual environment so having it installed outside is kind of interesting so um yeah i'm pretty uh it's super fast um the the hope is to be uh api compatible or at least uh interface compatible it's um in the they're they just don't have all of the features yet so um but like i don't mean to say that it's not worth trying already it is production ready right now and that's what they're they've tested the heck out of it it's just that um you have to like work with
Starting point is 00:06:09 your workflow to make sure that you work with it so um i was amusingly trying it out yesterday and ran into like three things right away that are two things that didn't work so i did uh tried to use the dash dash prompt to have virtual I am just create my virtual environment with the same name. And prompt isn't supported yet. But it is I went to file a defect and it was already fixed. It just hasn't been released yet. So you know, by the time you listen to this, it's probably been released and it'll work. They're doing a lot of releases, aren't they? Yeah, there's been seven releases in four days it's incredible and a really responsive team a lot of people are trying it out though so um yeah i'm glad they're
Starting point is 00:06:50 responsive because there's a bunch of issues people are working on um it's really fun to watch the other thing uh was um oh um oh so virtual environments work work really fast it's like so fast um and the resolver actually is something we don't really talk about too much. But the resolver, like you said, when you're pip installing something, if you have like a requirements file, you got a bunch of projects in it, or a bunch of things you're pulling in dependencies, they might have conflicting dependencies or not really conflicting, but they're the rules are such that you have to pick the right dependency so that it matches both tools um that's all done and it's super fast i'm really impressed with how this thing is um and and apparently everybody else is too um because yeah like it almost almost
Starting point is 00:07:37 immediately after the announcement so look at all these contributors you got 32 contributors already. These are not just people at Astral. I know that Brett is not there. So Talks has already announced that there is a Talks-UV plug-in so that you can have Talks act faster too and use UV for virtual and for PIP also. That makes it faster. I think that's... And I'm sure there's more tools to come that will support UV out of the box.
Starting point is 00:08:09 Yeah, awesome. I'm super excited, but I have a bunch of aliases for my shell that I almost never type pip, you know, python-mv, like unless I'm doing like some presentation where I'm not sure that people would know what the heck's going on. So I'll just type V in V and that will do the magic or want to activate environments, AE, or, you know, I want to install the requirements. I'll say PR, right. And I rewrote all of those to move from using pip to using UV.
Starting point is 00:08:37 And it's basically like the same workflow for me, just better. Well, the, one of the things that I do a lot is to just see what's in my virtual environment is do a pip list. And that's not supported yet either. But freeze is and list is coming. I, you know, but so just use free. I didn't actually just for some reason, I think there's like a 5050 split of people that use generally pip freeze over list what are you a freeze person or a list person i'm a list person these days uh but but that's because yeah because i don't use pip freeze to generate like the requirements.txt i use pip compile right right but pip freeze will just like list out which what things you have installed and what versions yeah yeah and that's what i want list for so i don't know why i used list but anyway yeah that's true pretty fun yeah okay a couple of pieces of real-time follow-up first of all ophek lev from hatch says the next minor release of hatch will have an option to use uv under the
Starting point is 00:09:37 hood instead of pip and virtual env hooray yeah i love hatch i've been doing like doing a lot of stuff with hatch lately and it's really, really nice. So, in fact, you're killing it. Keep it up. Very nice. And you mentioned talks. Henry Schreiner, who I see some comments from him out there as well, says with the NOX back in, using UV in the NOX back in,
Starting point is 00:09:59 it drops the time taken to build the docs from 22 seconds to 4 seconds. So, you know, it's not like 22 seconds is going to build the docs from 22 seconds to four seconds so you know that's you know it's not like 22 seconds is gonna change the world like oh if they just didn't take 22 seconds to build the docs but the faster these things get the more willing you're just like to do them more iteratively and you know get tighten that feedback loop and stuff like that so like for example with rough you know and pycharm now you can just check the box like run run um rough onto the end of this project when i hit save you know if it took five seconds to do that you would never check that that would not even be a box you could check right yeah but
Starting point is 00:10:35 because it's so fast so uh hopefully i'm not missing anything else from folks out there but this stuff is this stuff really neat and i am super excited i would love if some of the the things they learned from this could be brought back into standard pip just to make standard pip faster too that would still be cool yeah and this i guess that brings up a side question is um is really how uh how much energy there's going to be around supporting the other tools that are getting replaced by things that astral is building but there's a yeah anyway we'll have that conversation later maybe yeah opec agrees with you that much of the speed up comes the way they're they're doing caching very very nice so you know people check this out it's been
Starting point is 00:11:17 a few days and it's things are going fast in this space so yeah very exciting. Let's go on to the next topic. All right. Brian, Jupyter notebooks have definitely taken over as a really interesting way for creating, writing Python code, visualizing Python code, sharing it, communicating with it. And obviously Will McGugan's work with Rich and then on from there, Textual is doing amazing stuff too, right? Yeah. What if those came together? Like peanut butter and jelly or whatever it is that you put together that goes together well.
Starting point is 00:11:51 Peanut butter and chocolate, man. Yes, okay. Sorry, Reese's Pieces. I got it. Okay. David Brochart says, I just published my first blog post, which is, if we go over here, JP Term. Jupiter in the Terminal built on Textual and Rich.
Starting point is 00:12:08 How cool is that? That's great. There's a bunch of Terminal fun stuff that's based on Textual and other things that we could cover. But this is what I'm covering today. I'll save the other for next time. So Jupiter in the Terminal. And it says, well, you know, basically David says, look, the terminal is the new browser in the sense that we all have a terminal.
Starting point is 00:12:29 And if we write to this, it's kind of a simple, cool UI that everybody already has. You can just plug stuff into it largely because of all the work that they've done over at Textualize with Textual and Rich and so on. All right. So he said, look, look at all these widgets we already have. So like there's a select widget and there's a whole bunch of others. But if we view this, I'll open a new tab.
Starting point is 00:12:53 Maybe open image in a new tab. Oh, it's downloading. Hold on. Because of course it is. Open this up. It's JupyterLab side-by-side with jp jp term and check it out it's like you've got your cells you've got your in your little bracket and quite similar huh what do you think about this that's incredible that's pretty cool yeah so it's got uh let me go back to the article
Starting point is 00:13:16 here you go down it's got graphing it's got like charts for it and he says basically one of the real similar things to compare it to might be jupiter light because jupiter light is a web assembly based all front end jupiter and this is like client doesn't even need a server right because it just runs although he does point out with textual web realize is a way to put this on the internet and share it as well but like here look here's a bunch of cool graphs over time in the terminal. Yeah. So this is a super early, almost a proof of concept,
Starting point is 00:13:50 even has images, which is interesting. So I think people should- Don't do that. They're bad, yeah. Like you want, if you long for like Commodore 64 days, so you got something in store for you. But you can see it's quite new. It's been created like four months ago and just announced, I think, pretty recently.
Starting point is 00:14:11 So people go check this out. David is, I think, a Jupiter Core Dev or at least a contributor over there. So yeah, interesting to see where this goes. Yeah, that's neat. Cool. You know what else is cool? Our sponsor? Yes. Yeah. That's neat. Cool. You know what else is cool? Our sponsor. Yes.
Starting point is 00:14:27 Indeed. Indeed they are. So let me tell you real quick about Doubt APM. They're big supporters of Python Bytes, so we appreciate that very much. So if you are tired of spending hours trying to find the root cause of issues impacting your performance, then you owe it to yourself to check out Scout APM. They're a leading Python application performance monitoring tool, APM, that helps you identify and solve
Starting point is 00:14:51 performance abnormalities faster and easier. Scout APM ties bottlenecks such as memory leaks, slow database queries, background jobs, and the dreaded N plus one queries that you can end up if you do lazy loading in your Thorium and then you say, oh no, why is it so slow? Why are you doing 200 database queries for what should be one? So you can find out things like that.
Starting point is 00:15:11 And it links it back directly to source code. So you can spend less time in the debugger and. Healing logs and just finding the problems and moving on and you'll love it because it's built for developers by developers. It makes it easy to get set up. Seriously. You can do it in less than four minutes. So that's awesome.
Starting point is 00:15:26 And the best part is the pricing is straight forward. You only pay for the data that used with no hidden overage fees or per seat pricing. And I just learned this, Brian, they also have, they provide the pro version for free to all open source projects. So if you're an open source maintainer and you want to have Scout APM for that project, just shoot them a message. There's something on their pricing page about that. So you can start your free trial
Starting point is 00:15:52 and get instant insights today. Visit pythonbytes.fm slash Scout. The link is in your podcast player show notes as well. And please use that link. Don't just search for them because otherwise they don't think you came from us. And then they'd stop supporting the show. So please use our link pythonbyte.fm scout check them out it really supports the show awesome yeah all right over to you um what's next i've got a little little topic
Starting point is 00:16:16 um martin heinz wrote a blog post called everything everything you can do with the python's text wrap module and i love the text wrap module and i think that more people i think a lot of people just forget about it but it's very brian do you have that feeling where like you spent half a day implementing some algorithm then you're like oh that was a function i could have just called yeah exactly text wrap is that yeah um there's and you know every time i come back to it i'm like like, Oh, I'm still using stuff that I shouldn't. So it's a pretty short article, go through a few of the features of text wrap. First off, it's shortened. So if you've got if you want to make a piece of text shorter,
Starting point is 00:16:57 you can use shorten. And it's cool, because it also does a placeholder thing. So it'll put like, like, dot dot dots and, and brackets or something or whatever placeholder thing so it'll put like um like uh dot dot dots and and brackets or something or whatever placeholder you want to say there's more text there it's just we've cut it off um and uh looks really nice uh easy to easy to use you just call it uh it's just a function but then there's um there's wrap uh which seems obvious but um can do word wrapping. So you can split a long chunk of text into multiple lines. But you can also do it. One of the things I like here is this is said, well, yes, of course, you can use it for splitting long lines into different multiple lines. But also, even if you're not going to print it like that um it's very useful if you're going to batch that batch work on text
Starting point is 00:17:45 you can uh split a big chunk of text into small or you know even sized batches to work on those um that's a pretty cool use case for that i like it uh there is there's even um you can specify drop white white space keyword for that that's pretty cool i didn't know about that neat um the there is a there's a class also so all a lot of the stuff you can do with uh text wrap you can do within a um an object so there's a text wrapper class that you can create a text wrapper object and do a whole bunch of work with that multiple times um and only specify it once in the constructor very cool and then at the bottom last but but not least, is my favorite
Starting point is 00:18:25 use of text wrap is to dent. So to dent will take like if you've got a multi line string, and it's in your code, so it's all like off, you know, it's indented with the rest of your code, that multi line will have a whole bunch of extra, like extra white space on the left. And you don't really want that when you're're actually using it and d dent will take take out those extra uh extra left white space and that i love that and this seems like it's a weird thing to have built in uh but i use it a whole bunch of times all often in writing tests because i've got um a multiline string that i want to compare to some output um and i don't want it at the global level i want it you know um in my in my test function so uh i can just do that and use dedent to get it back to right because it would look weird
Starting point is 00:19:15 left aligned inside of an indented function right yeah um so i mean can, it just looks ugly. So yeah, you just, you lose the flow of where, where it belongs. Yeah. Yeah. So, uh, text wrap, um, it's there. It's fun. Use it. You already have it. It's in Python.
Starting point is 00:19:33 Yeah. Yeah. Very nice. All right. Let's let's talk about some design principles for the web here. This is not exactly Python, but it certainly links back to some cool things in Python. And it says place I ran across called html-first.com, right? And the idea is there seems to be some fatigue.
Starting point is 00:19:53 Like, you know how JavaScript, it used to be so easy. You would include a script, or if you were doing something super small, you maybe would just say script tag, and you would write a bit of JavaScript right in the page. And then you carry on. You're like, oh, that was that was easy look that just worked and then it said oh well now we're gonna put it over on this other place no we want to like minify it also we're gonna shake it down to only include the parts that we use and we'll do the same for the css and then you need this build step and then we're going to compile it from typescript to javascript and then shake it down to
Starting point is 00:20:22 not include this like what and then you're going're going to include it with import, export it with Node. Why is this so hard? Why are there so many steps to this thing that used to be so easy, right? And so this is kind of like, we just not have that as the default way of working already. So HTML, we'll get to HTML. HTML first is a set of guidelines for making it easier, faster, and more maintainable to build web software by leveraging the default capabilities
Starting point is 00:20:52 of modern browsers. I learned something I didn't know from here that I used to do with JavaScript that I will never do again if I don't have to. So awesome. And then the extreme simplicity of HTML's attribute syntax and keeping your view source alive, right? You used to be able to go to a website, like, how did they do that? That's cool, view source. Now it's just like one tiny line of a bunch of stuff that triggers JavaScript stuff. You're like, oh, well, all right. Or how did they do that?
Starting point is 00:21:15 Oh, it's a bunch of divs. Yes, exactly. And so the goal is try to widen the pool of people who enjoy web development. Also, you can make it less expensive for your company because it's just less complex. So it's not just, you know, dev yells at the cloud because people are making it hard, right? Screams it into the sky, but some practices, right? So there's some examples, prefer vanilla approaches. And so for example, did you know, you could say details summary and then stuff below it and if you click the summary it'll expand the thing below it no
Starting point is 00:21:52 javascript i didn't either no javascript yeah how about that and then uh so they have a encouraged versus discouraged here's like import react user from React, create a details component, which is an arrow function, which returns a const of things and toggling the content. And then you on click, you like link, then you export the detail. This is the import export I was railing against, right? So that's one. Prefer just, if you can do a basic HTML
Starting point is 00:22:20 or even basic JavaScript, like don't go over the top. And where possible, practice top and where possible practice to where possible define default to defining styles and behaviors with inline attributes with things like tailwind or tachyons. And you can use libraries like hyperscript and Alpine. And it says you're yes, it does mean your HTML gets a little bit busier, but you don't have to go to three places to figure out what's happening. So for example, it says encouraged button on click this dot class list dot add background green discouraged. You have a results pane that says click me.
Starting point is 00:22:53 And then you have a CSS section that actually what happens when you do that changes the color of green. Then you have some JavaScript that gets it. And then when it's done, you set the class, which then goes back to CSS. And these are usually mushed all over the place and you're like what is happening right yeah it says you'll notice the separation of concerns is kind of not so much uh awesome here however you should maybe consider the locality of behavior more than you should worry about separation concerns and htmx carson gross has a
Starting point is 00:23:22 nice essay on this like yes you might repeat yourself sometimes but right there you see everything that's happening instead of having it so spread out right yeah all right next go ahead i just wanted to comment one of the things that i like about this sort of model is um is that i'm i'm learning i'm frequently you're learning like new web frameworks like i'm working on uh learning django and uh and you know fast api and others and a lot of times it's templating that i'm working on and to to understand how it's going to get output keeping the templates simple and like mostly html helps helps with discoverability and learning something new so if, even if it isn't like a production thing later, but it might be, starting out simple really helps with the learning process.
Starting point is 00:24:11 Yeah. Oh, absolutely. And you also have to learn fewer things, right? Yeah. You have to learn three other frameworks and build tools and so on. All right. Another one is about try to use libraries. If you got to use libraries, try to use ones that leverage HTML attributes over JavaScript and custom attributes. Like HTMX is a real nice example of that. To disfavor build steps. So encourage the builder to say stylesheet slash styles dot CSS.
Starting point is 00:24:40 Discourage, distribute, output, NPX, CSS, compile with a watch. And then don't forget to run that. And then why is this not updating? You know, all these different things. And then finally, this one, I think the HTMX is really relevant to Python folks. But also this one. Their example is Ruby, but it just as well could be any, the WTF forms. Is that what it is?
Starting point is 00:25:00 I think it is. The form builder type stuff. You see a lot of that actually in Django. It says, prefer naked HTML to obfuscation layers that compile down to HTML. So you got a form. Just write the form. Put the values in it. Instead of form with and then form like label for this.
Starting point is 00:25:18 Form text field for that part of the model and so on. So anyway. And finally, preserve some view source for us all because it'll help everyone. But anyway, I like this and I, you know, it's interesting to think of as a philosophy. Yeah. The build steps, they also reference
Starting point is 00:25:34 like a whole bunch of people, how it used to be completely like, oh, you're such a noob if you want to skip having like a bunch of build tools along the way. But references for different articles and places where people are writing about like, you know what, we're done with this build stuff. We're just writing CSS.
Starting point is 00:25:49 We're just writing JavaScript. We're going to go with that. So anyway, pretty well backed up some of these ideas. Nice. And that's all of our main items. You can see there are tabs left for me. So that means I must have extras. But what about you?
Starting point is 00:26:01 I do have extras. Do you want to go through yours since they're up? Or do you want to? Sure, let's do it. All right. So first of all, Vincent Warmerdom says, hey, a new Pi Data location, Pittsburgh. So there's a call for proposals at Pi Data Pittsburgh.
Starting point is 00:26:17 Let's see, when is it? Hopefully it's not over. So yeah, so if you want to speak, if you're in the general Pittsburgh area or you want to be, then check out PyData Pittsburgh and go submit some talks there. Let's see when this is going to be. Surely. April. Okay.
Starting point is 00:26:32 April 11th, I guess. Anyway, check it out and you can submit a talk there. That's pretty cool. I just want to bring out one more example. You know, Brian, I rip on the ad space and I say, look, we should run ad blockers. We should, we should not support these people. And I know some folks are out there like, well, but then you're not supporting creators. You're not supporting the small folks who have Google ads on their site or whatever. And I don't know. I just, I think
Starting point is 00:27:02 the trade-off is not really worth it. So I just want to point out one more example of like terrible stuff that's happening. So our own Oregon Senator Ron Wyden is starting an investigation because a data broker who gets data from, you know, all these, these different sources like ad retargeting stuff used abortion clinic visitor location data because their endpoints were not blocked by some sort of dns block or something well to help send targeted misinformation to vulnerable women how terrible right yeah awful so i think we all should just stand up to stand up to the like uh the retargeting remark like we don't have. That has nothing to do with trying to make money for content creators. Yeah, I know. Except for that, the,
Starting point is 00:27:50 the data flows into these shady places, right. And then they, then, you know, they already have it. So instead of trying to sell them shoes, like let's, let's do something terrible like that. So, yeah. All right. Anyway, next DNS.io folks. Okay. Call for proposals is also open for a very close nearby SciPy 2024, which is awesome. This will be in Tacoma, but I am already tied up hanging around the house. My wife is traveling for work at that time and somebody has to stay with the dog and the kid. So I'm not going to this. I have a feeling that's the same time frame as Oregon Country Fair, so I probably can't either. Yeah. But anyway, there's a lot of people out there who can
Starting point is 00:28:41 and a call for proposals are out, but you must act. You must act soon. You have exactly seven days to get this ish, depending on when you listen. But as I speak, you have about seven days to get your talk proposal in. So please go do that. So over to you. February 27th is the end time. Okay.
Starting point is 00:28:59 A handful of topics. PyTest 8.01, 8.0.1 is out. And why is this important? One, it's the first bug fix since 8.0 came out. And it has the bug that bugged me. So there was a regression where if you parameterization would go backwards for some reason. Yeah, we talked about that before. So that's fixed. So I've got it updated to 8.01. would go backwards for some reason. Yeah, we talked about that before.
Starting point is 00:29:25 That's cool. So that's fixed. So I've got it updated to 8.01. Everywhere I'm using PyTest. Okay, next, if you'd like to understand dependency injection, Hinnick has a new video out, Loose Coupling and Dependency Injection, the easy way.
Starting point is 00:29:44 And I really like the the dude and i like what he's doing up on youtube so that's fun plus dependency injection is not as complicated as it sounds and uh and he'll show you but um but i freaked out the first time that people were like oh fixtures they're kind of like dependency injection i'm like i don't know what you're talking they are kind of like dependency injection indeed yeah yeah um i had a uh a guest nicole on uh python test recently this hasn't been aired yet but when we were we were talking about something completely different and i mentioned uh all of the rust that's coming into python community and and i said but i mean i want to try to learn rust. And, but I don't have
Starting point is 00:30:26 a lot of time. And she said, Oh, we had the same problem at work. So I wrote a tutorial. So there's yar.fyi. Yar is yet another rust resource. But the pirate friendly. Yeah, pirate. It's a it's a rust tutorial. um intended for people that already know how to program they just don't know rust and um so i'm kind of excited to jump into that um okay what else oh um yeah i'm looking for trying to ramp up interviews for python people so if there's uh if there's just some interesting stuff around the python community that you'd like me to talk to, or if you'd like me to talk to you, reach out. And the first episode was Michael Kennedy. It was a good episode.
Starting point is 00:31:12 There's only been 12 episodes so far, but I want to get more out. And the last thing I wanted to know, there's an interesting thing, phenomenon out there. Did you know that there's people still using X? Yes, I've seen them. There are many of them over there, actually. I have, I am officially following zero people just to like, as a protest. I don't really, I show up there about once a month
Starting point is 00:31:41 to check my direct messages. So if you want to contact me, I will probably reply to you eventually, but just warning. I'm not there very often. Indeed. Indeed. Awesome. Well, a bunch of great items. How about we talk about some unfortunate architectural or vendor-based decisions as part of our joke here. You ready? Have you seen this joke? Did you look ahead? I have not looked ahead. I don't know what you're talking about. Beautiful. All right.
Starting point is 00:32:06 You ready? Yeah. Do the joke. So here we are. I got this over on Reddit. And of course, I zoomed it in. So why are we using SAP again when there's this open source thing
Starting point is 00:32:19 that is so much simpler? Or why are we using Oracle again for this? Because whatever. So there's a angry team lead or something why did we end up with a solution a couple people like uh cool savings uh time savings maybe and then someone like a hipster looking dude in the back's like uh the vendor sent me a yeti tumbler so they grab him and throw him out the window yeah why are we stuck with this crappy system that is like whatever well it's conference swag basically
Starting point is 00:32:46 yeah i think the real answer is usually um the best options were all free um and we needed to have to pay somebody um yeah that's true that's true well none of them had an sla but it's like but do you have a yeti tumbler i i have one of these like soft yeti uh coolers that we'll take we go out camping or boating or something but i don't have a tumbler no i don't believe so you i had to look it up i didn't even know what this was but oh yeah yeah this is like the role yeti is like the rolls royce of like hillbilly land i guess i don't know they're like they're like super super um nice coolers if you want a thermos for your coffee but you don't want to spend ten dollars you want to spend forty dollars get a yeti yeah yeah i'm like we have a lot of yeti stuff actually
Starting point is 00:33:38 it's really nice i'm just joking bougie what if stuff got warm brian what if stuff got warm, Brian? What if it got warm? What if your beer got a little bit warm and your mountains and your cores, they weren't blue anymore. They turned whatever color they're not when they're not blue, whatever color they are. And they're not blue. You know what I'm talking about? Like the core of the cores of beer cans has a can that when it's like a certain temperature, the mountains on the, on the can turn blue. And if it's like too warm, they like turn white or something. I don't know what other color okay so this is a very serious options we could have made better beer or a better can we chose a better can what do you see when you're shopping come on now awesome yeah okay yeah fun as always thank you for being here and thank you everyone
Starting point is 00:34:21 for listening see y'all

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.