Transcript #398: Open source makes you rich? (and other myths)
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:05 This is episode 398, recorded August 26th, 2024. I'm Michael Kennedy.
00:12 And I'm Brian Okken.
00:13 This episode is brought to you by us. Check out our things.
00:17 Brian's assorted pytest courses, his book, the almost 300 hours of courses over at talkpython.fm.
00:25 So many things that you can do to support us and get awesome stuff back in return.
00:30 If you want to connect with us on the socials, check us out over on Mastodon.
00:35 And we're also on X under very, very similar usernames.
00:39 You can find us in all of the places.
00:42 And of course, comment on the show on the YouTube stream, which is linked from the episode page all the time.
00:48 And with that, Brian, how shall we start today? What do you got for us?
00:51 Well, I've got some open source myths, but I wanted to touch on the day early bit, I think.
00:58 Oh, yes, that's right. Because we are recording on Monday. This is not Tuesday.
01:02 In fact, I looked at my watch, which has a little calendar, what's coming up next on Sunday.
01:08 And it said Python Bytes. I'm like, huh, that's weird. I feel like it's, I thought it was Sunday.
01:12 It even caught me off guard.
01:13 But no, here we are.
01:15 Yeah, my work schedule changed a little bit. And I got to go into work on Tuesdays and Wednesdays now.
01:20 So we've moved the recording to Monday. That's just, that's the long short of it. Luckily, Michael has a fairly flexible schedule.
01:29 Indeed.
01:30 And that's the plan going forward, right?
01:33 So until your meetings change again, for whatever reason, or you got to do trips, we're going to plan on doing it every Monday, 10 a.m. Pacific time.
01:42 Yeah. And we'll get to that a little later. We've got a little cheat sheet for people to be able to look up when it's going to be recorded.
01:48 Oh, indeed. Very cool.
01:50 Okay. So our first item, though, I just wanted to talk about how awesome open source is. I'm working on open source software.
01:58 And I was, there's somebody named Josh Bressers on Mastodon, posted a list of open source myths.
02:08 So myths about working in open source or using open source.
02:11 And he started the list. And then on Mastodon, like, let's see, most projects have more than one maintainer.
02:19 Yeah. Usually it's just one, which is, yeah, surprising to me also.
02:23 So let's see. I like these two together. Open source is more secure than closed source and open source is less secure than closed source.
02:31 So both, both at the same time, they can exist.
02:35 And so, and then he said, got any others and a whole bunch of people sent him back myths.
02:41 So he has a, let's see, a list on, he put it up on Google Docs.
02:47 And I made a copy because I wanted to highlight a few of them because I thought it was, they were interesting.
02:52 So a few I want to call out. Most projects have funding driving the development.
02:58 Yeah, no. Does anybody think that? Anyway.
03:02 If the source code is available, it's open source. No, it's not.
03:06 And that's something that surprised me too.
03:08 Just because it's on GitHub even doesn't mean that it's open source.
03:12 You can publish your proprietary code online if you feel like it.
03:17 People are probably going to copy it anyway if you publish it, but it doesn't have to be open source.
03:22 Yeah.
03:23 It has to do with the license, right?
03:25 Yep.
03:26 Yeah. So most of the time I have, I've been one of those people that just defaults to MIT because, because I read it once and it went, oh yeah, it sounds good.
03:36 Basically MIT is what it's kind of like open source, but it's open source, but you can also, you can also use it in commercial software if you want to.
03:44 And some of them, some of the licenses don't allow that.
03:47 So my favorites coming up, all open source developers live in Nebraska.
03:52 I thought it was just one.
03:54 I thought there literally was one open source person in Nebraska, according to XKCD.
03:58 Nebraska.
04:00 Oh yeah.
04:00 Is that the XKCD thing?
04:02 Yeah.
04:03 It's like we have this huge castle of everything supported by one person, single open source developer who lives in Nebraska.
04:09 I believe that's right.
04:10 So, so Marco says, hey, I don't know if he's upset about not being in Nebraska or being the one developer in Nebraska.
04:17 Not sure.
04:17 So I thought it was Kansas because aren't all the Django people in Kansas?
04:23 Yeah, Lawrence.
04:25 And then let's see, all open source is run by hippies?
04:29 Sure.
04:30 Wait, but it's in Nebraska and hippies aren't in Nebraska.
04:34 So, or maybe they are.
04:35 Are there hippies in Nebraska?
04:36 I don't know.
04:37 Never been there.
04:38 Open source means it costs $0.
04:40 Well, you can use it without paying, but it doesn't cost zero to make it.
04:46 Everything is being rewritten in Rust.
04:49 It does seem like that lately, but no, there's a lot of stuff that's not good.
04:54 Well, we'll talk more about that one later.
04:55 Yeah, I guess that's a decent segue.
05:00 But no, this is a cool, a fun list of some of them are useful items.
05:06 Open source makes you rich.
05:08 No, it doesn't.
05:09 Well, maybe it makes some people rich.
05:11 It hasn't worked for me yet.
05:12 Yeah.
05:13 Anyway, fun list.
05:15 So thanks, Josh, for putting this together.
05:16 Yeah, that's a really excellent one, actually.
05:18 I love it.
05:19 Okay.
05:20 On to my first item.
05:21 Got a bunch of things that I'm going to cover, and I know you do as well, Brian, this week.
05:26 So some of them will go fast, some we'll dive into.
05:29 Mostly we'll go fast through them.
05:30 So this one is a feature capability framework matrix for people who do functions as a service, or aka serverless.
05:41 Right?
05:41 I am, I'll go on the record and say I am somewhat skeptical about the usefulness of serverless, but I know for some people, for some of their setups, they absolutely love it.
05:51 And certainly for you, there are tons of interesting use cases around serverless.
05:55 All right.
05:56 Certainly the most common one is Lambda, AWS Lambda, I would say.
06:01 And we also have Azure Functions, which is the serverless thing that lives in Azure.
06:06 We previously talked about Cloudflare workers.
06:09 And what's cool about the Cloudflare workers is that they run on WASM or WebAssembly.
06:16 Now the WASM ones start to get really interesting to me.
06:19 So if I've got a Docker container in AWS and it spins up every time there's a call, one of my functions.
06:26 Okay.
06:26 Interesting.
06:27 Maybe I should just have a Docker container running instead of like a bunch of start, stop, start, stop, start, stop.
06:32 And sort of a funky pricing you're not really sure about.
06:36 There's a pricing chart you can get into.
06:38 But the reason I really thought this was interesting is there's a couple of them that run on the client.
06:43 As far as I know, there's not necessarily even a per usage fee there because it's running not on their infrastructure.
06:50 It's just shipping some bytes.
06:52 So one of them, we talked about Cloudflare.
06:54 Another one I want to talk about is from Permian.
06:56 This is Python 3.11 Plus.
06:58 And if you scroll over, hiding in the side, there's a link.
07:01 There's this thing called Spin.
07:03 I don't know if you've heard of it, Brian.
07:04 I've never heard of it.
07:05 No.
07:05 Spin Python SDK.
07:07 So it says, we'll look at how to build a serverless app using Python and deploy it to Fermion Cloud in a few simple steps.
07:15 And it talks about how all this stuff works.
07:17 It's based on a plugin called Py2Wasm.
07:20 And by the way, this may run in their cloud.
07:22 I can't remember this because you can run Py2Wasm.
07:24 You can run Wasm code locally or you can run it in the browser.
07:28 Right.
07:29 So it could go either way.
07:31 But basically, this gives you a WebAssembly super lightweight foundation to run Python code.
07:37 For your app.
07:38 Which I think is pretty awesome.
07:39 So here's this grid.
07:41 The news item is this matrix of these comparisons.
07:46 But some of them that it points out here are based on Wasm, which is pretty interesting.
07:50 The Fly.io one is based on MicroVM.
07:52 It talks about which frameworks you can use.
07:55 Do you directly program it?
07:56 Like FastAPI for Cloudflare or Spin for Fermion.
08:00 Lask for Google.
08:02 A lot of interesting stuff here and how to process it.
08:04 And then also the pricing.
08:06 Yeah.
08:07 This is actually timely because I have a project that I was thinking about doing some Lambda functions and things like that.
08:16 Yeah.
08:16 Was it last time or the time before where I highlighted something where someone had gotten like a $96,000 fair sale bill?
08:25 We're doing some of their processing.
08:27 Yeah.
08:28 That'll catch you off guard.
08:29 So you want to know what you're in for.
08:31 And this is a nice comparison.
08:32 I think it's pretty neat.
08:33 It's really, you know, I don't know why it has to be so complicated.
08:36 Like the Google one is $0.40 per 1 million requests plus $0.0000025 per gigabyte per second.
08:45 Is that where?
08:46 Yeah.
08:46 And then some more for CPU and then some more for egress.
08:49 You know, like, wait a minute.
08:50 Like others are based on memory.
08:51 It's just like it's really hard to understand.
08:54 I don't know.
08:55 But that's how it goes.
08:56 Wait, what's egress?
08:57 Data out as opposed to data in.
08:59 I thought they were type of bird.
09:00 Yeah.
09:01 Well, it usually lives like right above fiber optic cables.
09:05 And it goes only away from data centers.
09:07 That's its migration pattern is away from data centers.
09:10 So $0.12 per egress.
09:11 Yeah.
09:12 They carry a lot of data on them birds, though.
09:15 It's okay.
09:15 Yeah.
09:16 So that's why I like to have most of my data go underwater.
09:19 There's no birds.
09:20 Yeah.
09:22 So people could check this out.
09:23 They would.
09:24 It's just a GitHub repo.
09:25 You can obviously make contributions and add stuff and so on.
09:29 Huh.
09:29 That's pretty cool.
09:30 Nice.
09:31 Yeah.
09:31 All right.
09:32 Back to you.
09:34 Okay.
09:34 Well, we have talked about this top PyPI packages before.
09:40 I'm pretty sure.
09:40 From HugoVK.
09:42 It's just a list that's updated.
09:46 I don't want to call out Hugo too much, but it's supposed to be updated monthly.
09:53 And it was last updated in July.
09:55 Yeah.
09:55 Maybe we get some August updates.
09:57 Anyway.
09:57 Well, maybe he's traveling near relative ballistic speeds.
10:01 In which case, that would explain it.
10:03 Oh, yeah.
10:03 Maybe.
10:03 Okay.
10:04 Anyway, that's close enough.
10:05 So, you know, it's a month old, but that's all right.
10:07 Anyway.
10:08 So there's a list of it shows the top 100 right away.
10:13 But you can show the top 8,000.
10:16 So what are the things I've used this before is to try to find the top pytest plugins.
10:20 So I'll grab this data or I'll like, you know, show the 8,000 and then I'll like search for pytest.
10:26 Just pytest.
10:28 Because most plugins are pytest.
10:30 So the top one's going to be pytest.
10:31 And then the next ones are like, you know, the plugins.
10:33 Because they often have pytest in the name.
10:36 It's handy.
10:36 So I thought it'd be cool if I just did something about this and made my own list.
10:40 So I did.
10:41 This weekend, I decided to give it a shot.
10:44 I wrote top pytest plugins.
10:47 And I just grabbed the top 8,000 because it's available on GitHub.
10:53 He just publishes the top 8,000 all the time.
10:56 Once a month.
10:58 You can grab those as a JSON file and parse it.
11:01 So grab that.
11:03 And then I'm listing.
11:06 I just grabbed all the pytest things with pytest in the name other than the top other than pytest.
11:11 And I grabbed.
11:13 There's 142.
11:14 It's basically all 8,000 and however many.
11:16 So 142 plugins show up in the top 8,000.
11:20 I thought it was cool that pytest check shows up.
11:24 That's my little plugin.
11:25 Made the top 25.
11:28 Yeah, it's at 25.
11:30 So that's cool.
11:31 Yeah.
11:32 And a bunch of that I love in here.
11:34 There's actually some pretty cool stuff that I want to explore more by looking at this.
11:38 A lot of the top, like the top 10 or so, they don't change much because you've got tons of projects using them.
11:45 Even though pytest runner, come on, people.
11:47 pytest runner should not be the number second one because it is deprecated.
11:51 It's so that you can run pytest tests from Python setup.py test.
12:01 And like, who does that anymore?
12:03 I don't know.
12:04 I thought everybody was.
12:05 30 million people did that.
12:06 Yeah, apparently.
12:07 So anyway, I thought it was fun.
12:11 The downloads.
12:13 So top PyPI packages just gives me the name and the download count.
12:18 So I wanted to know like how to get the summary on there.
12:22 So I asked on Mastodon and Jeff Triplett delivered.
12:26 And he said, hey, why don't you use the API from the warehouse?
12:32 Yeah.
12:33 PyPI is built on warehouse and warehouse has an API.
12:36 So you can use it to get some interesting information.
12:38 So I did that.
12:39 And that's how the summaries come in.
12:41 I wrote up a blog post about it.
12:42 So that's linked about how this is done.
12:45 And then what?
12:47 Publish the code also.
12:48 So you can check it out.
12:49 And then I was like, it's dumb code.
12:51 Why?
12:51 I'll publish it anyway.
12:52 Why not?
12:54 And Jeff Triplett says, yeah, it needs cleaned up a bit.
12:57 So he threw it into Claude 3.5, 3.5.
13:00 And came up with what Claude says is the better code.
13:06 So anyway.
13:07 He also added Rich.
13:08 So I have to incorporate this.
13:10 Rich and Typer.
13:11 Yeah.
13:11 He added Rich and Typer, which really didn't add much code.
13:15 So ooh, green.
13:16 He did the download count in green and the packages in magenta.
13:20 And the what?
13:23 Oh, the download counts are in green.
13:24 And the number is in cayenne, cyan.
13:27 I don't know.
13:27 So thanks, Jeff.
13:29 So anyway.
13:30 Yeah.
13:31 Very cool.
13:32 I love it.
13:33 Now, just one more request for your blog post there.
13:36 Would it be cool to see a graph of popularity?
13:39 So you can sort of see what does the tail look like in terms for...
13:43 So you can see it tail off pretty quick.
13:45 But as a picture, how would those numbers look?
13:47 Oh, yeah.
13:48 Okay.
13:49 So a graph of popularity.
13:51 That'd be fun.
13:52 I wanted to see...
13:54 There's a couple other things I wanted to see, like the which Python version that it supports.
14:00 And I also kind of want to dig in a little bit to see which ones it's tested against.
14:05 So if there's some way to look into the code to see it supports 3.8 and above often.
14:11 But is it tested on 3.12 yet?
14:14 Sort of things.
14:16 Yeah.
14:16 Interesting.
14:17 Does it support free threading?
14:19 Yeah.
14:20 I don't know.
14:22 The other thing that I thought would be cool was...
14:25 Somebody requested this on Mastodon.
14:29 Some trending for keeping track of this over time and seeing some deltas.
14:35 Like, which ones are going?
14:37 Like, upward trends or downward trends or something?
14:41 Oh, yeah.
14:41 Yeah.
14:41 That would be cool to see where the momentum is for them.
14:45 Yeah.
14:46 Oh, one of the things I did want to shout out for Jeff, his version of this does...
14:51 It also takes the package name as an input.
14:55 So you can, if you wanted to look for things with Django in the name or things with, you know,
15:00 something else like Jason in the name or something, you can search for those as well that way with his.
15:05 So often...
15:06 Excellent.
15:07 Yeah, yeah.
15:07 That's super cool.
15:08 And Henry out there says, a badge given the rank would be fun.
15:12 Given the rank.
15:13 Like that...
15:14 So you can put it on your GitHub readme.
15:15 It's just like number 26 most popular pie test.
15:19 Oh, yeah.
15:20 Plugin.
15:21 Something like that.
15:22 I'm reading into this, but that's what I think.
15:24 Yeah.
15:24 Star count.
15:25 Skip.
15:26 Star count.
15:26 Does that matter too much?
15:27 Yeah, perhaps.
15:28 All right.
15:29 Derivative of star count.
15:30 Is it going up?
15:31 Like, how fast?
15:32 Anyway, let's carry on.
15:33 You're going to have a whole master's thesis.
15:38 We could definitely bike shed this for a long time.
15:40 We could.
15:41 Yeah.
15:41 We could.
15:42 Okay.
15:42 Let's hit the big news of the week.
15:44 Big news.
15:46 Yeah.
15:46 I swooped in.
15:46 I know you're going to cover it as well.
15:48 I learned you were going to cover it after I grabbed it as a topic.
15:50 So this comes from the astral folks and Charlie Marsh.
15:53 And maybe I'm going to have Charlie on Talk Python and me to cover this tomorrow or in a week.
15:59 I'm not sure.
16:00 He's traveling, I think, or something like that.
16:03 So we'll see if we can make it happen tomorrow.
16:05 But very soon, Charlie's going to come on Talk Python.
16:07 I'm going to dive in deeper into this.
16:09 But let's spend a few minutes on it.
16:10 Here's the announcement.
16:12 The official announcement is UV.
16:13 We've talked about UV before.
16:15 It's started out as kind of a pip replacement, but it's growing to do more and more things
16:22 now.
16:22 And the announcement is UV, a unified Python packaging.
16:26 So there's been a lot of trends in Python packaging about tools that disintermediate PIP
16:33 and some of the other things we do with lock files.
16:36 And there's sort of been two takes.
16:38 One take is we build stuff inside Python.
16:41 Then once we have Python and we have this tool, then we manage our projects.
16:45 You know, I'm thinking of things like Hatch or poetry.
16:48 On the other hand, there's been things that try to manage Python from the outside.
16:52 And probably the most well-known one is Pyenv.
16:57 Pyenv, not Pyenv, Pyenv, which gives you your Python or maybe Knox talks for testing and it'll manage
17:04 the Python and the environments.
17:06 And so they're coming, Charlie and Astral are coming at this from that outer, outside perspective
17:12 more, right?
17:12 Here's a tool that doesn't depend on Python.
17:14 And until recently, it's been a fast way to do pip things and pip compile and so on.
17:20 But now this is a big, big announcement for here is the thing that can kind of be Cargo.
17:28 Cargo is the Rust version of this.
17:30 I think there's a lot of inspiration for a lot of people around that.
17:32 I don't use Rust, so it doesn't inspire or disinspire me.
17:35 It just, whatever.
17:36 But here's the thing.
17:38 It has end-to-end project management, so you can add dependencies, you can run tools
17:45 against your program like pytest or whatever.
17:49 It can create lock files, it can update those lock files, it can install Python.
17:56 We talked about that last time, right, Brian?
17:57 Yeah.
17:58 So UV Python install or UV Python list and all those options.
18:03 It can now run scripts, which is pretty interesting.
18:07 So if I gave you a single Python file and like Jeff Triplett's example, it depended upon
18:15 HTTPX and I gave that to you and said, hey, Brian, run this.
18:18 What would you do?
18:19 You'd be like, try to run it.
18:20 No, it doesn't run.
18:21 I guess I need a virtual environment or I'll just into my system, install HTTPX and then
18:27 it's going to need another and so on.
18:29 That's a hassle, right?
18:30 So with the script execution thing, what you do is you put into somewhere, into the top
18:37 of your file as a multi-comment.
18:41 It's a hash and then it has four slashes.
18:43 I don't know.
18:44 Meta comment within a comment.
18:46 You put a comment here that says what this library depends upon and then theoretically you
18:52 should be able to run this.
18:53 So if you say UV run and you give it the script, it'll look at that and say, oh, I'm going to
18:58 need to quick install or find the cached version of what's listed at the top of this.
19:03 So as long as you had UV, I could just give you any file.
19:05 You could run it and that could be a cool distribution mechanism throughout like your company or utility
19:11 tools where at least you've agreed upon UV as a basis.
19:15 It's pretty cool because it even create, I think this one even creates a little virtual
19:19 environment to install stuff and run.
19:21 It, yeah, all this stuff has a lot to do with virtual environments and I don't know if it's
19:26 a persistent virtual environment, but yeah, it does isolate these things.
19:30 And so there's two ways, the reason I'm not certain is there's two ways to do this.
19:34 Like you can create a project and start it, initialize it or sync it and get it going.
19:41 You can also create virtual environments here with UV and it'll go and create one of these
19:49 based on say the pyproject.toml or something, but you can also run commands.
19:54 There's ways to just run like the tooling stuff that they're doing.
20:00 And when you look at that, it will use it.
20:02 I don't think it creates a virtual environment, but it uses the cached versions and just runs
20:08 in kind of an isolate.
20:09 So it's, if you say UV tool run, which is alias to UVX kind of like NPMX, it uses an isolated
20:16 environment, but yeah, exactly.
20:18 The environment doesn't last.
20:20 Right.
20:20 Whereas if you say UV tool install versus UV tool run, there's like variations about this.
20:26 Right.
20:26 But, but the gist of it that like as a user, it's not, it's not, it's not throwing stuff
20:33 into my global Python, which I want.
20:34 I don't want that.
20:35 So it's doing the right thing.
20:37 You might, I might not know what it is, but it's not like polluting the global Python.
20:42 Yes, absolutely.
20:43 Yeah, exactly.
20:44 It does the right thing for you.
20:46 And it does it super, super fast.
20:48 Like I was checking out an example and after you've run it once, after it's basically cached
20:53 the dependencies, it's instant.
20:55 It's as if those things were just there, right?
20:58 As if you were in an activated virtual environment and good to go.
21:00 Yeah.
21:01 I'm really, I've, I've been changing my workflow over to all of this, especially since, so that
21:06 we did kind of cover it last week, but all the, all the, the neat things that I saw in
21:11 UV were all like, like experimental.
21:14 They're not experimental anymore.
21:16 They're all, they're all locked in.
21:18 So.
21:18 Yeah.
21:19 Yeah, absolutely.
21:20 This is the big, big release we have in the audience.
21:23 Makeshift says super into UV primarily for Python management, interested in script execution
21:28 and packing that up into something that acts like a single binary executable.
21:31 Yeah.
21:31 It kind of does give you the sense of long as you're connected to the internet, here's the
21:36 thing that's always ready to run all versions of Python, all dependency, you know, regardless
21:41 of the dependencies or regardless of the version that it says, assuming that it's in the
21:46 UV Python list listing, you can just run it.
21:50 Right.
21:50 And if it's not there, it'll download it.
21:51 But if it is there, it'll use the cache version and off it goes, which is pretty awesome.
21:55 Yeah.
21:55 You bring up something interesting that I haven't tried is like, if you run, run all these
21:59 tool chains for a while and you disconnect from the internet, what happens to you?
22:03 I think if it's cached, it's okay.
22:05 But if it's not cached, it's probably not okay.
22:07 Okay.
22:07 Makes sense.
22:08 That's what I believe.
22:10 Yeah.
22:10 Because the speed at which it runs, I doubt that it's every time checking unless you ask
22:16 it to do an update.
22:17 There's like sync and lock commands versus run and so on.
22:21 There's other interesting things we're diving into here.
22:23 For example, like the Docker integration.
22:26 If you don't even want this thing on your computer, you can actually get a Docker version, run it,
22:32 and then just alias commands to your Docker container or things like that.
22:37 Or it talks about how to use, how to build it using Docker or like, here you go, for example,
22:42 here's how you would get, get it to run, get it to install and run something using a Docker
22:49 command and so on.
22:50 So there's, there's a lot of things going on, GitHub actions, pre-commits.
22:54 This is a super deep project.
22:55 If you look at a release, if you look at workspaces, this is a lot of stuff around mono repos.
23:03 So if you've got a bunch of different packages and you want them all to be treated as kind
23:10 of managed by one, one thing here.
23:12 But you can say I have a dependency.
23:15 This part of my code has a dependency and another part of my code, please install it as, as you're
23:21 running with it or just run it in editable form out of this directory.
23:24 A lot of stuff going on here.
23:25 I've been checking it out this morning.
23:27 So I'm going to let people dive in more for themselves here and maybe listen to the Talk
23:33 Python episode from, with Charlie soon.
23:35 However, also I want to say thank you to a couple of folks who sent in this.
23:41 Skylar, Casco, and John Hagen both said and said, Hey, you guys should check out these
23:44 things around this announcement.
23:47 One is Simon Wilson, speaking of living in Kansas, no longer lives in Kansas, but part
23:53 of the Django team.
23:53 He wrote a blog post called UV Unified Python Packaging, huge release from the Astral team
24:01 and basically says, this has been out for a couple of hours.
24:04 Let me, let me just see what, give you my real quick impressions.
24:07 It's kind of a, like a walkthrough almost like here's what I think is important from it.
24:12 I think more interesting perhaps is to bump over to Omnivore here and look at what Armin
24:19 Roeneker said of creator, original creator of Flask, most recent creator of Rye, R-Y-E,
24:25 which has been something kind of trying to do this a little bit, but not as ambitious.
24:31 And he handed over ownership of Rye to the Astral folks as well.
24:36 So it's kind of, some of this stuff is kind of a blending of these things.
24:40 So his article is super interesting.
24:42 There's a lot of opinion and takes on it.
24:45 Put a few highlights here in Omnivore.
24:46 So for example, one of, when creating Rye, he says, one of the things I mentioned there
24:53 is that the goal of a packaging tool has to be that will dominate the space.
24:57 That is, it's awesome.
24:59 If you're not first, you're last.
25:00 Not in like a, if you're a second, you're the first loser.
25:05 Not in that sense, but in the sense for it like really to make a big impact, it has to be the way,
25:10 right?
25:11 If there's 20 ways.
25:12 This is the way.
25:14 Yeah, it's more, more of like the Mandalorian thing.
25:18 This is the way.
25:19 That's right.
25:20 So if it's going to simplify the Python experience, it can't be that there's 20 ways, different
25:26 and unrelated ways to simplify.
25:27 There has to be a way we kind of agree on, right?
25:29 And then it goes on to say-
25:31 I don't agree, but that's okay.
25:32 Yeah, no, I hear you.
25:33 I really want everyone who gets to learn and experience Python, not to remember it as an old
25:39 language, bad tooling, but it is an amazing language with stellar, stellar developer,
25:43 experience.
25:44 Unfortunately, that's not the case today because there are so much choice, so many tools that
25:49 are not quite compatible and by the inconsistency everywhere.
25:52 That's what he's getting at.
25:53 He said, well, I think UV is poised to be this tool.
25:55 Now the momentum, now's the moment to step up as a community and start to start to rally
26:02 around it.
26:02 Yeah.
26:03 He needs to take the next step.
26:04 Say some of these tools are no longer recommended.
26:08 For example, we stopped recommending Easy Install and took them out of our guides.
26:13 So I recommend that you consider making UV an option in your documentation.
26:18 Also has a little bit of interesting commentary about, well, this is VC funded.
26:23 What if they turn evil?
26:24 I don't think that they will, but what if they did?
26:26 And he talks about that as well.
26:28 So-
26:29 Yeah.
26:29 Yeah.
26:29 We can always work it.
26:30 Yeah.
26:31 Let's see what Henry has to say as well out there.
26:34 Says, this is basically mostly faster PIPX replacements.
26:36 The script runner, tool management, tool running without installing first.
26:39 I agree.
26:40 There's, I didn't point it out, but you're right that there's a lot of overlap of PIPX and
26:46 this.
26:46 Although I think there's more to it as well.
26:48 Yeah.
26:49 One of the things I'm, I'm interested in is there's, there's been, I've never really,
26:53 there's something about the, there's nothing, nothing really against PDM, but my, my experience
26:59 with it was just not what, not what I like to do.
27:02 And, and UV, the UV tools have taken a lot of the ideas from PDM as well, which is interesting
27:08 that they're, they're looking at all, they're taking the inspiration from all over the place.
27:12 So they are.
27:13 One of the things I don't necessarily like is a lot of it, a lot of it turns the Python package
27:20 and sort of environment and project management into UV project and package management.
27:28 So for example, you know, you type UVX run or UV, UV add instead of PIP, just pip install,
27:37 right?
27:37 Where the UV add will put it into the, the lock file and the requirement and so on.
27:42 And the lock files even like UV dot lock or something.
27:45 Yes.
27:46 So I am quite excited about it.
27:48 However, a lot of the stuff has, you know, it's kind of founded on virtual environments,
27:53 which if you just want to activate the virtual environment and go do your thing, once you,
27:57 you maybe get your Python installed if it didn't exist or whatever, then you can go on and do
28:03 a lot of things, the, the Python way without worrying about it.
28:06 But it's going to be interesting what the adoption is.
28:08 I'm going to talk to Charlie soon about it and it'll be fun.
28:10 Good.
28:10 I'll listen to that one.
28:12 Yeah.
28:12 I'm super excited about UV in general, so we'll see where it goes.
28:16 Yeah.
28:16 All right.
28:17 I believe that is it for our main items.
28:20 Well, based on your, your tab count, I'm guessing that you're feeling pretty extra.
28:26 Yeah.
28:26 This will go quick though.
28:27 I wanted to point out that the, the Jeff triplet rewrite of the top Python packages is, is already
28:36 scriptified UV scriptified.
28:37 He included the script at the top to pull in the dependencies.
28:41 And, you know, once you look at it for something you're, you're, you're familiar with, you're like,
28:45 Oh, that's easy.
28:46 You're just adding like HTTPX rich and type or to the dependencies and telling which Python version.
28:52 That's really all.
28:52 That's, I mean, there might be other stuff that you can do, but this is great to be able to just do UV run with this.
29:00 I wonder if the editors auto collapse that.
29:02 It'd be awesome if you just never see that unless you want to, you know, like it collapses, it folds the code for those sections on open.
29:09 Yeah.
29:10 Cause if you had like some weird, some weird, corporate thing that you had to stick at the top of your code.
29:15 Also, you'd have to scroll down three pages before you get actual.
29:19 Yeah.
29:20 okay.
29:21 So, this is a, like us, owed to Hugo because, or Hugo VK, because, he also, let us know that when we changed the date from Tuesday to Monday, people could use, are we meeting yet.com to keep track of, of when the meeting is because it, it converts to your time, whatever we push this in at.
29:42 So I'm seeing that, the next meeting is, is August 26th.
29:49 That's today.
29:49 so, but if you go here when we're not here, it'll tell you that there's, there's like a meeting coming up and it'll show how many, how many, how much time left.
29:59 And there's even a calendar entry that you can add, there.
30:02 So that's fun.
30:03 And then a link to the, I added the link to the live stream.
30:06 So if you click on the live stream link, you can see live stream.
30:09 So then that's the real way.
30:10 Cause this is, if you do a, are we, are we meeting yet.com?
30:14 It doesn't update if we ever have to change things, but yeah, the time is embedded in the URL.
30:18 It just adapts to the, that time and the title for your location.
30:21 Yeah.
30:22 So if you really, want to make sure check out the live stream link.
30:26 Okay.
30:26 So, and while I was looking at the top, the top PyPI packages, I was looking through, at Hugo VK's, other projects.
30:36 And I'm like, oh, there's some cool stuff here that he's published.
30:39 So I wanted to shout out to, to a couple of these Python logos from around the world from different Pycons.
30:45 So these are fun.
30:46 he just has a selection of different ones.
30:49 Like, yeah, it's great.
30:51 I love these.
30:51 That's pretty Pycon Zimbabwe.
30:53 That's awesome.
30:55 and then also, PyPI downloads.
30:59 it's some, some, tools for Python tools with the download counts for versions over time, which is sort of fascinating how slow some stuff like gradually gets down.
31:11 So what is, what are we looking at here?
31:13 We've got, three, three, 12.
31:17 So we've got this, this blue is three, 10, three, 10, 11, 12 is blue is, is up in this top right corner.
31:24 And then the old ones like nine, eight, seven, six, five, three, four, are just gradually going down over time.
31:31 and it, I kind of would have expected a sharper drop, but, yeah, it's interesting.
31:36 And that, that, that sort of trend goes like, here's your URL of three.
31:40 Yeah.
31:41 Two, six on there for a while.
31:42 Yeah.
31:43 Well, and two, yeah, two, six did like take a long time to completely disappear.
31:49 Two, seven is down into the like single digit percents, but it's not gone away.
31:54 so yeah.
31:56 Anyway, interesting.
31:57 the other thing, he's got, Python, there's a bunch of stuff, Python core devs.
32:02 I thought was interesting of different core devs and there when they started and stopped.
32:06 So I, I didn't know that people stopped.
32:08 I thought we were like core dev for life or something, but, you don't have to be, I guess.
32:13 So interesting, graphic.
32:15 The other thing I wanted to, the last thing I wanted to extra is that, at, Python
32:21 test.com, we've got the courses of course, and they're going, they're going really well.
32:25 And I'm excited about that.
32:26 The, the other thing we've added is, when I had an, on the other platform, I used to be
32:31 on teachable.
32:31 Now we're on, Podia.
32:33 but Podia has a community thing.
32:35 So we've added community options so that if, if you like, for instance, this is great about
32:40 the community options, because if you bought the book physical book, but you have a question,
32:45 how do you get that answered?
32:46 Well, you can hop on and, and join the community here.
32:49 So then you can answer, ask questions.
32:51 Do you have any extras for us?
32:53 Oh, I have many, but I'll make them quick as well.
32:57 The Python course for coding in a castle in October 5th to 12th is happening.
33:05 And the time is coming up short for if you want to be part of it.
33:08 So I would love to spend a week with you in Italy, half programming and half drinking wine
33:13 and traveling around.
33:15 So if you could, you're interested about in being in that and you're like, Oh, maybe that
33:17 would be interesting.
33:18 Well, time, the time is now to sign up because, we're going to call it'll be done.
33:24 And soon, you know, the, the applications will be closed.
33:28 So follow up from last week.
33:29 Remember I talked about PI awaitable.
33:31 I'd been waiting for it.
33:32 So, zero intensity, the author of PI awaitable commented says, Hey, author of PI awaitable here.
33:39 Thanks for showcasing.
33:40 You were right.
33:41 The PEP didn't get published with a number.
33:43 I was working with Peter Victorin on it.
33:47 And we only got as far as a discussion thread, but unfortunately something that only uses the public API.
33:52 Doesn't make a strong proposal.
33:54 So the draft got scrapped and turned into documentation.
33:57 The plan is to integrate it into CPython sometime in the future, depending on how much maintenance needs, which hopefully should not be that much.
34:03 Quoken as a true maintainer right there.
34:05 Brian, let's talk web browsers real quick.
34:09 So we've got Vivaldi, which is what I'm using.
34:12 Obviously Firefox is, well known people use Chrome for some reason still these days.
34:18 I don't understand it, but that it still is like, let me run spyware and type into it.
34:24 Okay.
34:24 there's Safari, there's edge or the bunch of options, right?
34:28 Brave.
34:29 So on.
34:29 But there's this new project that I came across called ladybird, which is pretty interesting.
34:34 Interesting here.
34:35 welcome to ladybird.
34:37 A truly independent web browser.
34:39 We're building a brand new browser from scratch backed by a nonprofit.
34:42 That's kind of interesting, isn't it?
34:44 Kind of look go scroll to the top again.
34:46 Isn't that the, isn't that the meta logo or?
34:50 No, it's not meta.
34:51 It does look, it does look a little bit like it, but it's, it's not, I think it's supposed to look like a bird with, I don't know.
34:58 It's, it's similar, but it's not meta.
35:00 Okay.
35:00 It's not meta.
35:01 So it's an open source and open source project that has six full-time developers working on it and they expect to ship in
35:08 2026, which is a lot of work, but you know, web browsers are basically operating systems these days, but it's pretty interesting actually.
35:17 So there's a newsletter you can sign up for.
35:18 There's an FAQ.
35:20 They have sponsors getting, you know, a decent amount of money.
35:23 But yeah.
35:25 What does it mean?
35:25 Where's it come from?
35:26 And so on.
35:27 So I didn't know.
35:28 I just, I ran across that and thought that was interesting.
35:30 Yeah.
35:32 Jay out there in the audience says, Hey, you're going to buy me a ticket for this, code in the castle.
35:36 Yeah.
35:37 We'll see.
35:37 We'll see.
35:38 Wait, you're not buying me a ticket.
35:41 Well, get yourself to Germany and then it's, or Austria and it's a short little trip on down.
35:46 Okay.
35:46 Just across the Alps there.
35:47 Okay.
35:48 Next one.
35:49 Someone asked us about, like, so sorry, I forgot to write down the name when I, I wrote down this note.
35:55 It says, Hey, I'm interested in your video.
35:57 We talked about, I can't remember what we talked about, but some, maybe the new microphone or something.
36:03 I said, Hey, I'm also interested in your video recording setup.
36:06 And would that be cool as an extra?
36:08 Okay.
36:08 So sure.
36:09 I'll, I'll give people a rundown on this and Brian, you can chime in on yours.
36:12 I record all of the talk Python courses these days with OBS, OBS studio, which is awesome.
36:19 It lets you basically record your screen, record your face, set up multiple scenes, do green screens, picture and picture with the background cut out.
36:27 So you're just a little bloating human in the bottom of some piece of software.
36:31 This is free.
36:32 You can download it, runs on all the things.
36:34 I encourage people to contribute and donate to it.
36:37 Like if you really use this a lot, they have, they have a Patreon thing, so I support them on Patreon.
36:42 But this is really nice for recording, setting things up and then controlling it with my steam deck, stream deck rather.
36:49 This is a really cool little bit of software that lets you change the lighting, change what's shown, stop, start, pause, et cetera.
36:55 Also have, for some reason, the product page for the Elgato key light says that their store is undergoing maintenance, but the rest of the website is up.
37:04 So they point over here, so I can show you at least on Amazon.
37:07 I've got some cool Elgato key lights that can control with a stream deck and multicolor and stuff.
37:14 That's really fun.
37:15 And then finally, edit all of this with DaVinci Resolve.
37:18 DaVinci Resolve is super fun software.
37:21 They use it for a lot of the Marvel movies, I believe.
37:26 They use it for Spider-Man.
37:27 So it's kind of intense.
37:30 If you open it up, you're like, what am I supposed to do with this?
37:33 But if you just stay in the little edit section with the timeline, then it's pretty manageable and pretty nice to use.
37:40 So that's also free.
37:41 So that's what I'm doing these days.
37:43 Cool.
37:44 Yeah.
37:44 I'm doing a lot of that.
37:47 I want to switch to, I want to try the open.
37:49 OBS.
37:51 OBS.
37:52 I'm currently using Camtasia for recording stuff.
37:55 Not for this show, but for courses and stuff.
37:58 I use Camtasia.
37:58 And Camtasia is oddly, it works better on Windows than it does on Mac.
38:02 Because you can export multiple.
38:04 It's actually something I'm looking for on a Mac.
38:09 I want to be able to record everything in one project and then export multiple videos from one project.
38:14 And you can't do that with Camtasia.
38:16 I don't think you can do that with that other.
38:20 DaVinci.
38:21 DaVinci.
38:22 But maybe you can.
38:24 I just don't know how.
38:25 Yeah.
38:26 I have maybe 100 videos for some courses and they're all in one project in DaVinci.
38:31 It's pretty nice.
38:32 Also, I'm using Stream Deck.
38:34 I love Stream Deck.
38:34 And the key lights.
38:36 They're great.
38:37 The one thing that you didn't mention was what camera you're using.
38:40 Oh, yeah.
38:41 I'm using.
38:42 I've used a whole bunch.
38:43 So this is not a strong recommendation.
38:45 But I'm using the Elgato.
38:47 She can't look like that thing.
38:49 The Elgato.
38:53 What is it called?
38:54 Facecam Pro.
38:55 That's what it's called.
38:56 Okay.
38:56 Which is like a 4K camera.
38:58 That's pretty good.
38:59 Yeah.
39:00 It's pretty good.
39:00 Yeah.
39:00 It's pretty good.
39:01 The color is a little bit off.
39:03 Like, it's hard to get just real natural colors.
39:06 I'm using the Logitech Logi.
39:07 A little tiny camera.
39:09 Which is decent.
39:10 I think I used that before.
39:11 And it's also real nice.
39:12 Yeah.
39:12 Yeah.
39:12 But it'd be fun if I tried this other one.
39:15 And also so that we looked a little more similar.
39:18 I'm usually showing up lighter than you.
39:20 Might be a lighting thing.
39:21 But anyway.
39:22 Yeah.
39:23 Yeah.
39:23 For sure.
39:24 Let's see.
39:25 Also, just to round this out.
39:27 For the live streams, we use StreamYard.
39:29 Oh, yeah.
39:30 We've been happy with that.
39:32 Yeah.
39:32 StreamYard is really good.
39:33 Really good.
39:33 And Jay Miller out there says, If you're doing both recording and streaming,
39:38 I recommend Ecamm.
39:39 Massive fan.
39:40 They built Zoom stream support, which is, yeah.
39:43 Jay does some cool live streaming as well.
39:44 So, all right.
39:45 That was actually kind of a long-winded answer.
39:47 But that's what we're doing, folks.
39:48 For those of you who aren't interested.
39:49 Yeah.
39:50 Anything else?
39:51 Are we up to the joke?
39:52 I am ready to tell the joke.
39:53 And now, this joke has no graphic.
39:55 No graphic.
39:58 But I thought I would put, just for the live stream here, I would put a picture of a really nice data center
40:04 so people can appreciate their code running in like an awesome place here.
40:07 Okay?
40:07 Yeah.
40:09 It's terrible.
40:10 Okay.
40:10 It's that.
40:11 It's a really bad, a really bad looking place there.
40:15 So, here's the joke.
40:17 This is like an Alcoholics Anonymous meeting type of thing.
40:21 Okay.
40:22 Which, alcoholism is not funny, but making fun of DevOps is.
40:25 So, let's do it in that style, right?
40:28 This joke is adapted from a joke Blaze wrote and sent in.
40:32 So, this is the DevOps support group.
40:34 Are you ready, Brian?
40:35 Yeah.
40:36 Hi.
40:36 Hi.
40:36 My name is Bob.
40:37 Group.
40:38 Hi, Bob.
40:39 It's been 42 days since I last SSH'd into production.
40:43 Applause for the group.
40:44 But only four days since I actually took down the website.
40:47 Someone in the back.
40:48 Oh, Bob.
40:49 Oh, Bob.
40:49 That's funny.
40:55 Yeah.
40:56 It's a good one.
40:57 Yeah.
40:57 You don't want to be the one who took down the website.
40:59 How?
41:00 If he didn't SSH into production.
41:02 Well, he must have shipped a bad Ansible script or something.
41:05 I don't know.
41:05 Yeah.
41:06 Like, I knew the last time I took down the website inadvertent, I was completely out of
41:11 the blue.
41:11 I'm like, what in the world is happening?
41:13 Was I was using the Walrus operator.
41:15 And Python, it was a while ago, Python 3.7 was running on the server.
41:19 I didn't use the Walrus operator on the website code.
41:21 I used it on a, like, utility thing.
41:23 But the script was collected in a subsection where the web framework scanned for routes for
41:30 the framework.
41:31 And as it tried to parse the Walrus code to see if it could add it to the website, it
41:36 took down the website instead.
41:37 It couldn't start.
41:38 Oh, no.
41:38 Yeah.
41:40 Yeah.
41:41 Anyway.
41:41 Oh, Bob.
41:42 Oh, Bob.
41:43 Don't be Bob.
41:45 Stay on top of stuff with Python bytes.
41:47 Get all the latest things.
41:48 Don't be Bob.
41:50 Unless your name is Bob.
41:52 Then you be Bob.
41:53 Don't be that Bob.
41:55 Don't be that Bob.
41:56 Exactly.
41:57 All right.
41:57 Well, thank you, everyone, for being here and sending in all the stuff.
42:01 a lot of fun Brian see you later thanks a lot bye