Transcript #403: A machine learning algorithm walks into a bar…
Return to episode page view on github00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
00:04 This is episode 403, recorded September 30th, last day in September.
00:10 And this is Brian Okken.
00:11 And I'm Michael Kennedy.
00:12 And if you'd like to connect with us to suggest something or whatever, you can send us a link, a contact form at pythonbytes.fm.
00:23 You can watch the show live, pythonbytes.fm.com for more information about that.
00:28 You can always, usually Mondays at 10, but you can check those out on YouTube later also.
00:35 And this episode is sponsored by us.
00:38 So check out our offerings, courses on Talk Python training and also at pythontest.com.
00:44 Also a shout out, thanks to the Patreon supporters that we still have.
00:48 And if you'd like to connect with us, you can find the links in the show notes for our Fostadon links.
00:55 So we're on Mastodon.
00:57 Also, Michael still hangs out on X sometimes.
01:00 So you can get in there.
01:01 Sometimes.
01:03 When people talk to me over there, I'll go talk to him for sure.
01:05 All right.
01:06 Well, let's kick this off with a discussion very much from Mastodon.
01:11 This is a blog post from Simon Willison.
01:15 And the title, opening sentence, I don't know.
01:18 Whatever.
01:19 It's UV is under discussion on Mastodon.
01:23 And Jacob Kaplan Moss kicked off a fascinating conversation about UV on Mastodon.
01:29 And it's worth reading the whole thing.
01:31 I think it's pretty interesting.
01:32 You know, we've got this really powerful and transformative tool that's kind of improving Python packaging.
01:40 That's been a little bit rough on various edges.
01:43 And yet it's definitely not the first one of these to come along, right?
01:48 We've got many of them that have been successful.
01:50 We have Hatch, Poetry, PDM, even PIP, ENV, and all these different things that have tried to do this.
01:57 And I don't feel like there was much controversy about them.
02:01 And it's this interesting mix of why are people worried if someone else goes and makes another attempt to work, you know?
02:09 On the other hand, I think part of the reason people are really invested in this and debating,
02:15 should you use UV?
02:16 Should you not?
02:17 Is it good for Python?
02:19 Is it's so effective and it's taking over so much that people are like, wait, this is the new way?
02:25 This is the way things are going?
02:27 And I just think it's really fascinating that people are, I don't know, considering this.
02:32 So there's a bunch of different comments that people made.
02:35 And, you know, I don't, I'll just kind of give a flavor of it and you can go check this out.
02:40 But I think it's just interesting.
02:41 Before I jump in, I, for one, am a fan of the UV.
02:45 I think they're making really meaningful change.
02:48 And so in that sense, I'm kind of in the Hennick camp of this conversation.
02:53 So Russell Keith McGee says, as enthusiastic as I am about the direction UV is going,
02:58 I haven't adopted them yet because I want to very much understand Astral's business model.
03:04 More on that in a minute.
03:05 So that's very interesting.
03:06 Hennick says, as much as I hate VC, FOSS projects, you know, there's a worry that because it's VC funded,
03:12 it'll flame out.
03:13 FOSS projects flame out all the time too.
03:15 If Frost lost interest in PDM, there's no PDM anymore.
03:19 Same for OFEC and Hatch and so on.
03:21 So like, look, we could, this could fix packaging and we'd have open source code to run with afterwards.
03:28 One of the concerns I think that Glyph also is the one to bring up here is that because it's written in Rust,
03:35 it's more difficult for Python people to maintain.
03:38 And while I think that's fair, I think that's also, there's a lot of Python that's written in C.
03:43 I mean, it's CPython.
03:45 And so to say that it's not Python is not necessarily fair, you know, because there's a lot of things that we do in Python that are C based.
03:52 I think the difference might be there's more people currently working in Python who also know C versus people currently working in Python who also know Rust.
03:59 You know, I think that's kind of the mix there.
04:02 But to say, oh, it's in a different language, like, well, Python itself is a different language.
04:05 So there's that.
04:07 Maybe, maybe two more things and then I'll wrap it up here.
04:11 Henning also says about Rust, I don't, I don't think you all quite grok what UV makes so special due to your seniority.
04:17 The speed is really cool.
04:18 But the reason Rust is elemental is that it's a single compiled blob that you can put onto your machine as a binary.
04:26 And it will bootstrap Python, it will bootstrap Python packages, Python projects, and just the deployment thing.
04:32 And I really agree with that.
04:33 I think that's been a missing piece and an ongoing challenge of Pythons to just be like, here, have this thing you run.
04:39 Like, well, let's have a conversation about a few things before you can run that code, right?
04:44 Just working on that this morning with another project like this doesn't run as smooth as it should.
04:48 Christopher Neugebauer says, just dropping here to say that corporate capture of the Python ecosystem is the number one thing that keeps me up at night subject in my community work.
04:59 So I watch Astral with interest, even though I'm not worried.
05:02 Speaking of, let's go and see an authoritative response from Charlie Marsh, founder of Astral.
05:09 Y'all are worried about the business model.
05:11 So here's the deal.
05:12 I don't want to charge people money to use our tools.
05:15 I don't want to create an incentive structure whereby our open source offerings are competing with any commercial offerings,
05:21 which is what you see with a lot of hosted open source SaaS business models.
05:26 And that's true.
05:26 What I want to do is to build software that vertically integrates with our open source tools and that sell that software to companies that are already using rough UV and et cetera,
05:36 alternative to things that companies pay for today.
05:39 And that's some examples and so on.
05:40 So you can all go read this.
05:42 But this is quite interesting to keep your thumb on the zeitgeist of UV and packaging and all these things.
05:50 I'm going to, I guess, put my spin on it on both sides.
05:55 I like to arm and Roniker's comment of what UV is what UV is doing, even in the worst possible future outcome.
06:04 It's very forkable and maintainable thing.
06:06 So even if like something happened with Astral and Astral suddenly became evil, that there's an escape hatch.
06:14 The other side of that is also, I actually, I like Charlie.
06:19 I don't think Charlie Marsh has any nefarious ideas, but there's nothing stopping him from selling the company and the new owners taking it into a different direction.
06:29 And so that's the side that like, you know, Charlie might have the greatest intent, but the next owner might not.
06:38 And that's where an escape hatch is okay.
06:40 But also I'm totally a UV fanboy and I'm not worried right now.
06:45 So yeah, I think it's fair about the selling.
06:49 And I also think Charlie is a good guy.
06:51 I think it's fair about the selling, but that could also be, I'm not doing this open source project anymore.
06:56 I'm giving it to someone else, you know, although the incentives are much stronger when there's money involved for sure.
07:00 And I think from Armin's perspective, his article, which I think I covered a while ago called Rye and UV August is Harvest Season for Python and Packaging is an excellent take and much, much more thorough than just a mastodon thread.
07:16 All right.
07:17 Anyway, I thought that would be, you know, I'm glad Simon wrote that up and I thought it was worth highlighting.
07:21 So.
07:22 All right.
07:23 Well, let's hop over to something a little smaller.
07:26 Maybe not smaller, but anyway.
07:30 Ordantic.
07:31 I just wanted to, I can't remember where I saw this, but anyway, it's a fairly new thing.
07:37 Looks like it's been out, oh, a few years, but it's active development right now.
07:42 What is it?
07:43 Ordantic is entity relationship diagrams that are based on Pydantic models.
07:50 So it's a simple tool for drawing entity relationship diagrams for data model classes.
07:59 And they can, it supports modeling frameworks such as Pydantic adders and data classes.
08:04 And this, so this is one of those things of maybe sort of inside baseball.
08:09 But basically if you're dealing with data structures, especially if they're mapping, mapping around your system and mapping around like your databases and whatnot.
08:18 And database tools often have these diagram things that you can look at.
08:22 But the stuff going into your application, the data sets that are being used in your application, you might not have these tools around.
08:33 So this is kind of neat.
08:34 And it allows you to basically draw these relationship diagrams for your data and your system.
08:39 It's pretty straightforward.
08:42 I like these, you know, one thing that's really cool about these pictures, Brian, when you're working on a project, you know, it's one you've created.
08:48 You've been working on a long time.
08:49 You have probably a really strong mental model of what are the conceptual pieces and how they fit together and what the data looks like.
08:55 Yeah.
08:56 But if somebody is new to a team or new to an open source project or they get dropped in as a consultant, you're like, what?
09:02 What do we got going on here?
09:04 You know, what is all of this?
09:06 Tools like Odantik let you just go, bam, show me a visual representation of this.
09:11 And I think that's a huge jumpstart if you need to help there.
09:14 Yeah.
09:14 So you can do it after the fact.
09:16 Like if you're jumping into a system, you can use it to draw the diagrams.
09:20 Or if these are part of your documentation or even internal documentation to help somebody come up to speed.
09:27 But you also might like for yourself throw these in the docs so that like, you know, six months from now you come back and you're like, oh, how is this?
09:35 Also, or even documentation and just read the doc style, right?
09:39 Yeah.
09:40 And also to make sure things don't go haywire.
09:42 So often you have a mental model that your system makes sense.
09:48 But then when you draw it out, you find all sorts of like a crazy tree in a forest.
09:54 You're like, oh, man, I didn't think it was that complicated.
09:57 I need to simplify things.
09:58 So visual tools are great for that.
10:01 The one, I guess one beef with it is that it's based on GraphViz, which is very widely available.
10:09 But it is probably easiest on Linux and Mac.
10:13 But you can do it on Windows, too.
10:15 But it might be a little bit more difficult to get GraphViz going on Windows.
10:19 Maybe not.
10:20 But I've had issues in the past trying to get running.
10:22 So but anyway, that's it.
10:24 Just a little little graphing tool.
10:26 I love it.
10:27 Well, let's switch back to what I got to cover because I have a bunch of things and I'm making this an extra, extra, extra main section, because otherwise this will be an hour and a half long show.
10:37 We don't want that.
10:38 It's not bytes.
10:39 It would be more than a byte.
10:40 So I want to talk about a couple of things.
10:43 First of all, this is news to you.
10:45 You're learning about this unless you've been spying on the website, which I find unlikely because you're familiar with it already.
10:50 But if you just Friday, I was messing around with some custom search engine in my browser.
10:57 And I think I just searched for something on Python Bytes.
11:00 Like, wouldn't it be cool if we could just integrate Python Bytes search right into your browser and our search URL you were able to it was a get style search.
11:10 You could do a get style search on it so you could actually plug it in as a custom extension.
11:14 But I went farther so that if you're over on Python Bytes.fm and you pull up the source, there is now an open search description specification in this bad boy here that don't really want that.
11:29 But that actually describes how search works.
11:32 And so if you go over here and you type pb space, see how it says search Python Bytes.
11:37 Oh, wow.
11:38 But watch this.
11:39 UV space D-O-C-E, Docker UVX, all these things.
11:45 Isn't that cool?
11:46 It has autocomplete and everything off of our actual transcripts and our show notes and all of that.
11:52 So then you just go over here, hit Docker UV, boom.
11:54 And then, you know, there's the shows that we talked about, those various things.
11:58 So anyway, if you go to Python Bytes and you click the little search icon, it says right below, add our search engine directly to your browser.
12:05 Learn how here.
12:06 And so you click it, it actually shows you the couple of steps.
12:09 It's super easy.
12:10 I did a similar thing for Talk Python as well.
12:13 Because once you do one, you're like, oh, I see how I do it for the other.
12:15 They weren't identical, but they were similar.
12:17 What do you think?
12:18 I think I'm going to be using this all the time.
12:20 We've covered a lot of topics and occasionally I'm like, when did we talk about that thing?
12:25 Mm-hmm.
12:26 Mm-hmm.
12:27 I like it.
12:27 Yeah, yeah.
12:28 Me too as well.
12:28 So I think that's, that is pretty excellent.
12:31 So yeah, I'm really excited about it.
12:33 All right.
12:33 Next of the extra, extra, extras is I wrote, remember we talked about passkeys, I think a little while ago.
12:39 So I actually wrote up a little article on passkeys, password managers, whether you should use them.
12:46 And then there was some debate with people.
12:48 I said, hey, I put out a post about this and someone replied and said, people do not use password managers to store passkeys.
12:56 I'm like, do they or do they not?
12:57 I have no idea.
12:58 Who are using it?
12:59 So I put out some Twitter and Mastodon polls on, which one is this?
13:03 This is Twitter.
13:04 44% of the people are using password managers for their passkeys.
13:08 And 20% are just letting their OS go, do you want to save a passkey?
13:11 So yes.
13:12 And 30%, 35% not.
13:13 That's really high adoption actually.
13:15 And on Mastodon, I think four or five times as many people are using password managers and half of them are not.
13:22 So pretty interesting, right?
13:23 Yeah.
13:24 Anyway, people can check out this article.
13:26 A little bit of follow up there.
13:27 What's next?
13:28 I think you should have added one extra survey thing of what's a passkey?
13:33 That's true.
13:34 People did say, hey, I'm storing them in hardware, things like YubiKeys.
13:38 Yeah, I didn't quite have that there.
13:40 I think that fell under the password manager thing.
13:43 Related to that, because remember, I was worried about lock-in, right?
13:48 You're like, passkeys are cool, except for this is the way for Apple and Microsoft and Google to say, just stay more in our platform.
13:55 Please don't leave us.
13:56 We want to make it nicer for you by helping you stay here.
14:00 So Pablo sent over this recommendation of Vault Warden, which is an unofficial Bitwarden compatible server written in Rust, formerly known as Bitwarden RS, that you can basically self-host your own Bitwarden sync and servers.
14:16 And so when you run Bitwarden, you can tell it, here's my server, not the commercial one.
14:19 Neat.
14:20 The SaaS one.
14:20 All right.
14:21 You notice anything weird about my display?
14:23 I mean, people don't really need to see the display here or anything, but look at this, Brian.
14:28 See the bottom where my tabs are?
14:30 It's at the top.
14:31 I'm trying to live the tabs on bottom lifestyle.
14:34 I've been watching a lot of people use Arc and then there's Zen browser, which is a Firefox type thing.
14:40 But I still think Vivaldi, especially after the search stuff that we were doing, I still think Vivaldi is the best browser.
14:46 Hands down.
14:47 For example, Firefox, you can't do this cool search thing I told you about.
14:50 They give you a list of six search engines.
14:52 I hope you like one of them.
14:53 Good with that.
14:54 You don't get to pick anymore.
14:55 You don't get to add anymore.
14:56 Same with Zen browser.
14:58 Chrome will let you add it, but it won't do the autocomplete.
15:01 It will just do the search.
15:03 Safari auto discovers it through the open search thing, but I don't know how to actually search it.
15:08 I don't know that it uses, it may or may not use the search things.
15:12 I can't make it work.
15:13 But Vivaldi has it like, here's the auto suggest.
15:15 Here's the, here's the search.
15:17 Here's all the things, right?
15:18 Anyway, a lot of those newer, shinier browsers are all about like, put your tabs
15:23 in kind of this hidden mode or whatever.
15:24 So I'm trying to go for like a little less distraction.
15:26 It is surprisingly hard to put the tabs on the bottom from a mental model perspective,
15:30 but give it a week and you'll be good with it.
15:33 Probably.
15:33 We'll see how long I last.
15:35 It's never bothered me that they were at the top, but yeah.
15:38 Well, so here's the thing.
15:39 It doesn't bother me either.
15:41 It didn't bother me either.
15:42 But if you look at it the way it is, when the tabs are not at the top, you're just focused
15:46 on the thing that is up.
15:48 You don't mentally realize, oh, there's all these other things up there.
15:51 It takes actual conscious thought to go, oh, look at the bottom and see what else is open.
15:56 Almost to the point of it being a flaw, but it's kind of just like, this is the thing
16:01 you should be focusing on now.
16:02 Don't worry about the other stuff.
16:03 Anyway, that's the thinking for me anyway.
16:05 All right.
16:06 And PyCon 2025.
16:08 I don't know if we've covered this.
16:09 I know that we talked about where the new upcoming PyCons are going to be, right?
16:14 The 2026 one is I think Long Beach, right?
16:17 This one is back in Pittsburgh.
16:18 However, the dates are listed on python.org.
16:23 Have we mentioned this before?
16:24 I don't think so, right?
16:25 I don't remember.
16:26 We should search for it.
16:27 Well, we should totally search for it.
16:28 Yes.
16:29 If we only could.
16:30 So May 14th to May 22, 2025 is PyCon 2025.
16:36 So the US PyCon.
16:38 That's pretty awesome.
16:38 People can check that out, right?
16:40 Yeah.
16:40 Because my brother's like, hey, I want to come visit you.
16:44 I'm thinking of coming in May or maybe April.
16:46 Is that all right?
16:47 I'm like, I don't know.
16:49 There's not many things that I got to do that are going to make me not be able to be around, but PyCon might be one of them.
16:56 It would be nice to know when it is.
16:57 Well, here's when it is.
16:58 It's in May.
16:59 I may go.
17:00 Don't know.
17:00 Yep.
17:01 All right.
17:01 Well, that's all the extras that I got.
17:03 Okay.
17:04 Well, I've got a bunch of, I liked all your extras.
17:08 I'm going to do a whole bunch of extras also, but Django related.
17:11 So this is a Django themed extras.
17:13 So we've got from the PyCharm blog, Django project ideas.
17:18 And I actually kind of love this because I'm working on some Django projects myself.
17:22 And sometimes you just want to play around with Django or any other way,
17:27 web framework to figure out, like, I want to try to learn, like, do a project.
17:31 But there's to-do list and then there's, like, what else could you do?
17:35 And that's where I love this jump off.
17:38 So there's some tutorials that are well known.
17:43 The Django, normal Django tutorial for beginners.
17:47 It's useful.
17:47 PyCharm has a air temperature or JetBrains and PyCharm has an air temperature app tutorial
17:54 with a step-by-step tutorial you can walk through.
17:57 But after you've gone through the tutorials, what do you, like, you know, what should you do?
18:02 So there's some great ideas.
18:05 And I like how it's listed.
18:06 So, like, for instance, you could do a blog.
18:08 And what would you learn there?
18:09 Well, you'd learn about the Django admin, Django templates, and then doing an editor.
18:16 Because if it's a blog, you're probably going to do an in-application editor.
18:20 So maybe you could try that.
18:22 So this is all set up with what tech stack you would run into or the different pieces of Django or extra plugins that you would learn.
18:30 And then a little blurb about it.
18:33 They also, about the blog, they recommended the Django tutorials, Django girls tutorial,
18:39 because it talks about a blog, which is great.
18:41 There's the to-do app that you would learn single-page applications and Django templates.
18:46 A recipe organizer.
18:48 I love this idea.
18:49 I don't know why I didn't think of that.
18:51 But you'd learn about databases and the ORM and templates and JavaScript is optional for additional security.
18:57 I don't know how that works out.
18:59 But just a whole bunch of cool ideas around maybe a URL shortener, expense tracker.
19:04 That's kind of a neat idea.
19:06 A social network.
19:07 And then a personal portfolio.
19:10 That's pretty neat.
19:11 And then a lot of these, one of the things that I like about these is these are things that would be useful to you,
19:17 even if nobody else uses it.
19:19 So it's just, even if you just put this up for your own use, it'd help you learn Django and you'd get some useful tool.
19:25 And then there's some advanced projects, which I like.
19:28 The idea, multi-user sites, classified site or something, maybe for your neighborhood or for even work.
19:34 A classified site for your own job, like where you work, it'd be kind of neat.
19:37 People could sell their stuff to friends and colleagues.
19:40 Anyway, I love this idea.
19:42 But I've got a lot of examples there.
19:44 Yeah.
19:45 It's a pretty fun list.
19:48 So that's my first extra on Django.
19:51 These Django project ideas from JetBrains.
19:53 Really good list.
19:54 Looks like fun.
19:55 This came from Jeff Triplett.
19:58 He just put this together recently, I think, or at least posted it recently.
20:02 DjangoTV.com.
20:03 It is a list of talks and tutorials from Django conferences around the world.
20:09 It's kind of a neat resource.
20:11 I love that idea.
20:13 That's super cool.
20:14 Yeah.
20:14 It's kind of new, but I'm sure it'll grow.
20:17 So a bunch of great stuff will show up.
20:20 Django Commons, also a new thing.
20:22 I learned about this from Lacey Hinchel.
20:26 And Django Commons is an organization dedicated to supporting the community's efforts to maintain packages that are Django-related packages.
20:36 So there's some great information about how to join this group, how to transfer a project into the group, how to transfer a project out of the group, and some code of conduct and FAQ.
20:47 Again, this is just sort of getting started, but it's a cool idea, Django Commons.
20:52 A couple more things around Django.
20:54 I did see, so in Django 5, we did get some simplified templates for form field rendering.
21:01 But if that's not enough for you, you might want to try IOMI Forms.
21:06 So IOMI Forms are a different take on Django Forms.
21:10 And they wrote a post, why we wrote a new form library for Django.
21:14 So just a little different take if you've struggled with Django Forms.
21:19 Maybe try Django 5, but also maybe try this.
21:22 You know, me forms might be a good thing.
21:25 And the last Django Extra I have got, this comes from Adam Johnson.
21:30 He introduced a template formatter called Jade, D-J-A-D-E.
21:37 But we'll have a link to this article in the show notes, of course.
21:40 So what this is, is you've got all these, we're used to using black as formatters, or probably UV now, or rough.
21:52 What about like for forms, template forms?
21:56 So that's where this comes in.
21:59 Jade is something like black, but for forms.
22:04 So there's some examples of, like for instance, the old form Django 2 of load static files.
22:11 You're supposed to just say load static now.
22:13 So having it automatically just change that for you, it's good.
22:16 Yeah, not just format it, but fix it.
22:19 Yeah, things like making, like if you have weird spacing things just to make it easier to read.
22:25 I like it.
22:26 Yeah, that's awesome.
22:27 I love it.
22:28 Those are my cheat monsters.
22:29 I like that idea a lot.
22:29 Let's get some for the other formatters as well.
22:32 Or the other templates as well, rather.
22:34 That's a good idea.
22:35 Right, Jinja, or whatever.
22:36 Maybe it exists.
22:37 People should let us know if it exists.
22:39 Yeah.
22:39 All right.
22:40 All right.
22:40 How about some jokes?
22:41 Jokes would be great.
22:43 Oh, wait.
22:45 I have one more extra if we're already to jokes.
22:47 Yeah, yeah, yeah.
22:49 The one extra I got, this came in from, who sent this in?
22:54 So we've got, I want to give credit where credit is due.
22:57 So this came from Raphael Weingartner.
23:02 And he suggested we take a look at this.
23:04 And I thought it was a serious thing at first.
23:06 The Open Source Project Maintainer's Guide.
23:09 Have you looked at this yet?
23:10 No, I've not.
23:12 Is it kind of like your blog?
23:14 Monetization?
23:15 It's just, it's like how to have an open source project and have people not help you maintain.
23:23 Got it.
23:26 So first off, use a source control mechanism other than get.
23:29 So maybe try Subversion or Mercurial or Bizarre.
23:34 Or even just like SQLite.
23:37 Or what is SQLite doing?
23:39 Where are they busting on them?
23:41 I don't know.
23:41 Anyway, so use something other than get.
23:45 Only accept patches on a mailing list.
23:48 Isn't Linux core like that?
23:51 Or like Usenet or something.
23:52 Yeah.
23:52 Require a contributor license agreement.
23:56 Like, that's funny.
23:57 You have to sign something.
23:58 Don't have community forums or leadership.
24:03 So no discourse to Zulip and definitely not Slack or Discord.
24:07 ignore detailed reports.
24:08 Ignore detailed reports.
24:09 Systematically close reports.
24:11 Prioritize features over bugs.
24:13 There's a lot of projects like that, I think.
24:15 Wait for the big rewrite.
24:17 Merge half-paked patch sets.
24:19 Bike shed all user visible changes.
24:21 This is my favorite.
24:22 Only use outdated language standards.
24:25 So, like, for instance, current language standard for C++ is C++ 23.
24:29 17 is widely supported.
24:31 So why not use O3?
24:34 I would say, like, why not just stick with C++ 98?
24:38 It was fine in my day.
24:39 It's fine now.
24:41 Anyway.
24:41 It's good enough for your grandparents.
24:43 It's good enough for you.
24:44 Yeah.
24:44 Anyway, these are some amusing lists of things to do for an open source project if you don't
24:51 want people to help.
24:52 Yeah, that's pretty funny.
24:53 Okay.
24:54 If you do want people to help, though, you might have a joke like this.
24:57 A machine learning algorithm walks into a bar.
24:59 The bartender asks, what do you have?
25:01 The algorithm says, what's everyone else having?
25:04 It's because it's trained on everyone's data.
25:05 It's all it knows.
25:06 Oh, that's funny.
25:07 Yeah.
25:08 It took me a while.
25:10 Yeah.
25:11 It's not lose your mind funny, but it's amusing.
25:14 Yeah.
25:15 So, thank you, Chet Haas.
25:17 I like it.
25:17 Indeed.
25:18 Well, another episode of Python Bytes in the Bag.
25:22 Thanks for joining.
25:23 Thanks, Brian.
25:24 Thank you.
25:25 Bye.