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.
00:11 I'm Michael Kennedy.
00:12 And I'm Brian Okken.
00:13 This episode is brought to you by us.
00:15 Check out our things, Brian's assorted pytest courses, his book, the almost 300 hours of courses over at docpython.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?
00:50 What do you got for us?
00:52 Well, I've got some open source myths, but I wanted to like touch on the day early bit of thing.
00:57 Oh, yes, that's right.
00:58 Because we are recording on Monday.
01:01 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.
01:09 I mean, huh, that's weird.
01:10 I feel like it's I thought it was Sunday.
01:12 It even caught me off guard.
01:13 Yeah, my work schedule changed a little bit.
01:17 And I got to go into work on Tuesdays and Wednesdays now.
01:20 So we've moved the recording to Monday.
01:23 That's just that's the long and short of it.
01:25 Luckily, Michael has a fairly flexible schedule.
01:29 So indeed, that's the plan going forward, right?
01:32 So until your meetings change again for whatever reason, or you got to do trips,
01:39 we're going to plan on doing every Monday at 10am Pacific time.
01:42 Yeah, yeah.
01:42 And we'll get to that a little later.
01:44 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.
01:49 Very cool.
01:50 Okay, so my first item, though, I just wanted to talk about how awesome open source is.
01:55 I'm working on open source software.
01:58 And I was there's a 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.
02:13 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
02:28 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 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
02:51 were interesting.
02:52 So a few I want to call out.
02:55 Most projects have funding driving the development.
02:58 And now I does anybody think that?
03:00 Anyway, if the source code is available, it's open source.
03:04 No, it's not.
03:05 And that's something that surprised me to just because it's on GitHub, even doesn't
03:10 mean that it's open source, you can you can publish your, your proprietary code online,
03:16 if you feel like it.
03:17 People are people are probably going to copy it anyway, if you publish it, but it doesn't
03:21 have to be open source.
03:22 That's Yeah, it has to do with the license, right?
03:25 Yep.
03:26 Yeah.
03:26 So most of the time I have, I've been one of those people that just defaults to MIT
03:31 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 you it's open source, but you
03:40 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 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, it's like that we have this huge castle of everything supported by one person, single
04:07 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
04:16 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 zero dollars.
04:40 Well, you can use it without paying, but it doesn't cost zero to make it.
04:46 Everything is being rewritten and rust.
04:49 It does seem like that lately, but now there's a lot of stuff that's not.
04:54 We'll talk more about that one later.
04:55 Yeah, I guess that's a decent segue.
05:00 No, there's this 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, a fun list.
05:15 So thanks, Josh, for putting this together.
05:16 Yeah, that's a really excellent one.
05:18 Actually.
05:18 I love it.
05:19 Okay.
05:19 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.
05:28 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
05:39 or aka serverless.
05:40 I am, I'll go on the record and say I am somewhat skeptical about the usefulness of serverless,
05:48 but I know for some people and 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.
05:59 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:10 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,
06:24 one of my functions.
06:26 Okay.
06:26 Interesting.
06:27 Maybe I should just have a Docker container.
06:29 Running instead of like a bunch of start, stop, start, stop, start, stop.
06:33 And sort of a funky pricing you're not totally 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
06:43 client.
06:43 As far as I know, there's not necessarily even a per usage fee there because it's running
06:49 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 Hermion.
06:56 This is Python 3.11 plus.
06:58 And if you scroll over, hiding on the side, there's a link.
07:01 There's this thing called Spin.
07:03 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
07:12 Fermion Cloud in a few simple steps.
07:15 And it talks about how all this stuff works.
07:18 It's based on a plugin called PyToWasm.
07:20 And by the way, this may run in their cloud.
07:22 I can't remember this because you can run PyToWasm.
07:25 You can run Wasm code locally, or you can run it in the browser.
07:28 Right.
07:28 So it could go either way.
07:31 But basically, this gives you a WebAssembly, super lightweight foundation to run Python
07:36 code for your app, 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:45 But some of them that it points out here are based on Wasm, which is pretty interesting.
07:50 The flyer IO one is based on MicroVM.
07:52 It talks about which frameworks you can use to directly program it, like FastAPI for Cloudflare
07:58 or Spin for Fermion, 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
08:14 functions and things like that.
08:15 So yeah.
08:16 Yeah.
08:17 Was it last time or the time before where I said I highlighted something where someone
08:21 had gotten like a $96,000 bare cell bill for doing some of their processing?
08:27 Yeah, 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 40 cents per 1 million requests plus 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
08:42 2, 5 cents per gigabyte per second.
08:44 Is that where it?
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, 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:01 Yeah.
09:01 Well, it usually lives like right above fiber optic cables and it goes only away from data
09:07 centers.
09:07 That's his migration pattern is away from data centers.
09:09 So 12 cents per egret.
09:11 Yeah.
09:12 They carry a lot of data on them birds though.
09:14 It's okay.
09:15 Yeah.
09:15 So that's why I like to have most of my data go under the underwater.
09:19 There's no birds.
09:20 Yeah.
09:22 So people could check the stuff they want.
09:24 It's just a GitHub repo.
09:26 You can obviously make contributions and add stuff and so on.
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, I, we have talked about this, this, this top PI P I packages before.
09:39 I'm pretty sure from Hugo VK.
09:43 It's just a list that's, that's updated.
09:48 I'm going to, I don't want to call out Hugo too much, but it's it's supposed to be updated
09:52 monthly and it was last updated in July.
09:55 Yeah.
09:55 Maybe we get some August updates.
09:56 Anyway.
09:57 Well, maybe he's traveling near a relative holistic speeds, in which case that would
10:02 explain it.
10:02 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:07 So there's a list of it shows the top hundred, hundred right away, but you can you can show
10:15 the top 8,000.
10:16 So what, what are the things I've used this before is to try to find the top PI test 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
10:25 PI test.
10:26 I test it because most plugins are PI test.
10:30 So the top one's going to be PI test.
10:31 And then the next ones are like, you know, the plugins, because they often, you have
10:35 PI test in the name 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 this weekend.
10:42 I decided to, to give it a shot.
10:44 I wrote a top PI test plugins and I just grabbed the top 8,000 because it's, he just it's
10:52 available on GitHub.
10:53 He just publishes the top 8,000 all the time.
10:56 Once a month, I mean, grab those as a JSON file and parse it.
11:01 So grab that.
11:03 And then, and I'm listing, I just grabbed all the PI test things with PI test in the
11:08 name other than the top, other than PI test.
11:12 And I grabbed, there's 142, it's basically all 8,000 and however many, so 142 plugins
11:18 show up in the top 8,000.
11:20 I would, I thought it was cool that PI test 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 we've got tons of
11:44 projects using them.
11:45 Even though PI test runner, come on people, PI test runner should not be the number second
11:49 one because it is deprecated.
11:51 It uses, it's so that you can write, you use run PI test 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:04 - Ah, 30 million people did that.
12:06 - Yeah, apparently.
12:08 So anyway, I thought it was fun.
12:11 The downloads, 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 and he said, "Hey, why don't you use the API
12:30 from-
12:31 - The PyPI?
12:33 - Yeah, 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 and that's how the summaries come in.
12:40 I wrote up a blog post about it.
12:42 So that's linked about how this is done.
12:45 And then what, published the code also so you can check it out.
12:48 And then I was like, it's dumb code.
12:50 Why, I'll publish it anyway, why not?
12:53 And Jeff Triplett says, "Yeah, it needs cleaned up a bit." So he threw it into Cloud 3.5 and came up with what Cloud says is the better code.
13:06 So anyway, he also added Rich.
13:08 So I have to incorporate this.
13:10 - Rich and Typer.
13:11 - Yeah, he added Rich and Typer, which really didn't add much code.
13:14 So, ooh, green.
13:15 He did the download count in green and the packages in magenta and the, what?
13:22 Oh, the download counts are in green 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, 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 like popularity?
13:39 So you could sort of see what does the tail look like in terms for, so you can see it tail off pretty quick, but as a picture,
13:46 how would those numbers look, you know?
13:47 - Oh, yeah.
13:48 Graph of, okay, so a graph of popularity, that'd be fun.
13:51 I wanted to see, there's a couple other things I wanted to see, like the, which Python version that it supports.
13:59 'Cause, 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:15 Sort of things.
14:15 - 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, somebody requested this on Mastodon,
14:29 some trending for like keeping track of this over time and seeing some deltas,
14:35 like which ones are going like upward trends or downward trends or something.
14:40 - Oh, yeah, 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, it just takes, it also takes the package name as a input.
14:55 So you can, if you wanted to look for things with Django in the name or things with,
14:59 you know, something else like Jason in the name or something, you can search for those as well that way with his.
15:05 So often correct.
15:06 - Excellent.
15:07 Yeah, yeah, 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 - So you can put it on your GitHub readme, it's like number 26 most popular Pintest plugin, something like that.
15:21 I'm reading into this, but that's what I think.
15:23 - Yeah.
15:24 Star count, skip star count.
15:26 Does it matter to you?
15:27 - Yeah, perhaps.
15:28 - All right.
15:29 - Derivative of a star count.
15:30 Is it going up like how fast?
15:32 Anyway, let's carry on.
15:33 - You're going to have a whole master's thesis.
15:38 - Mike shed this for a long time, but we good.
15:40 - Yeah.
15:41 - Okay.
15:42 Let's hit the big news of the week, which I swooped in.
15:46 I know you're going to cover it as well.
15:47 I learned you were going to cover it after I wrapped it as a topic.
15:50 So this comes from the Astral folks and Charlie Marsh, 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:02 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, but let's spend a few minutes on it.
16:10 Here's the announcement.
16:11 The official announcement is UV.
16:13 We've talked about UV before.
16:15 It started out as kind of a pip replacement, but it's growing to do more and more things now.
16:22 And the announcement is UV, a unified Python packaging.
16:27 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 like 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:53 And probably the most well-known one is pyenv, which gives you your Python or maybe Knox
17:02 talks for testing and it'll manage the Python and the environments.
17:05 And so they're coming, Charlie and Asharul are coming at this from that outer,
17:11 outside perspective more.
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:29 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.
17:41 So you can add dependencies, you can run tools against your program like pytest or whatever.
17:49 It can create lock files.
17:52 It can update those lock files.
17:54 It can install Python.
17:55 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 run, now run scripts, which is pretty interesting.
18:08 So if I gave you a single Python file and like Jeff Triplett's example, it depended upon HTTPX.
18:16 And I gave that to you and said, "Hey, Brian, run this." What would you do?
18:19 You'd be like, "Try to run it." No, it doesn't run.
18:21 I guess I need a virtual environment or I'll just into my system, install HTTPX,
18:27 and then it's going to need another and so on.
18:29 That's a hassle, right?
18:30 So with this script execution thing, what you do is you put into somewhere,
18:37 into the top of your file as a multi-comment.
18:40 It's a hash and then it has four slashes.
18:43 I don't know, meta comment within a comment.
18:46 You put a comment here that says what this library depends upon.
18:50 And then theoretically, you 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,
18:57 "Oh, I'm going to 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
19:09 company or utility tools where at least you've agreed upon UV as a basis.
19:15 It's pretty cool because it even creates, I think this one even creates a little virtual environment to install stuff and run.
19:21 It, yeah, all this stuff has a lot to do with virtual environments.
19:25 And I don't know if it's a persistent virtual environment, but yeah, it does isolate these things.
19:30 And so there's two ways.
19:32 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.
19:46 And it'll go and create one of these based on say the pyproject.toml or something.
19:52 But you can also run commands.
19:54 There's ways to just run like the tooling stuff that they're doing.
19:59 And when you look at that, it will use, I don't think it creates a virtual environment,
20:04 but it uses the cached versions and just runs in kind of an isolated.
20:08 So if you say UV tool run, which is alias to UVX, kind of like npmx, it uses an isolated environment, but yeah, exactly.
20:17 The environment doesn't last.
20:19 Whereas if you say UV tool install versus UV tool run, there's like variations about this.
20:27 But the gist of it, like as a user, it's not throwing stuff into my global Python,
20:34 which I don't want that.
20:35 So it's doing the right thing.
20:37 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 I was checking out an example and after you've run it once, after it's basically cached 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:01 Yeah, I've been changing my workflow over to all this, especially since so that we did kind of cover it last week,
21:07 but all the neat things that I saw in UV were all like experimental.
21:15 They're not experimental anymore.
21:16 They're all locked in.
21:18 So yeah, 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 and packing that up into something
21:29 that acts like a single binary executable.
21:31 Yeah, it kind of does give you the sense of long as you're connected to the internet,
21:35 here's the thing that's always ready to run all versions of Python, all dependency, you know, regardless of the dependencies
21:42 or regardless of the version that it says, assuming that it's in the UV Python listing,
21:49 you can just run it, 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, you bring up something interesting that I haven't tried is like if you run all these tool chains for a while
22:00 and you disconnect from the internet, what happens?
22:03 Do you 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 That's what I believe.
22:10 Yeah, because there's the speed at which it runs.
22:12 I doubt that it's every time checking unless you ask 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, or it talks about how to use,
22:38 how to build it using Docker or like here you go, for example, here's how you would get it to run,
22:45 get it to install and run something using a Docker command and so on.
22:49 So there's a lot of things going on, GitHub actions, pre-commits.
22:53 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 of managed by one thing here,
23:12 but you can say, I have a dependency.
23:15 This part of my code has a dependency in another part of my code.
23:19 Please install it as you're running with it or just run it in an 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 Python episode from Charlie soon.
23:36 However, also want to say thank you to a couple of folks who sent in this Skylar, Casco and John Hagan both said,
23:43 hey, you guys should check out these things around this announcement.
23:47 One is Simon Wilson, speaking of living in Kansas, no longer lives in Kansas, but part of the Django team.
23:53 He wrote a blog post called UV Unified Python Packaging, huge release from the Astral team.
24:00 And basically says, this has been out for a couple of hours.
24:04 Let me just give you my real quick impressions.
24:08 It's kind of 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 Roenicker said of original creator of Flask,
24:22 most recent creator of Rye, R-Y-E, which has been something kind of trying to do this a little bit,
24:29 but not as ambitious.
24:30 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, but a few highlights here in Omnivore.
24:46 So for example, when creating Rye, he says, one of the things I mentioned there is that the goal of a packaging tool
24:55 has to be that will dominate the space.
24:57 That is, it's awesome that without-
24:59 You're not first, you're last.
25:00 Not in like a, if you're 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,
25:09 it has to be the way, right?
25:10 If there's 20 ways, then yeah, it more of like the Mandalorian thing.
25:18 This is the way, that's right.
25:20 So if it's going to simplify the Python experience, it can't be that there's 20 ways,
25:25 different and unrelated ways to simplify.
25:27 There has to be a way we kind of agree on, right?
25:30 And then you just have to say-
25:30 I don't agree, but that's okay.
25:32 Yeah, no, I hear you.
25:34 I really want everyone who gets to learn and experience Python, not to remember it as an old language, bad tooling,
25:40 but it is an amazing language with stellar developer experience.
25:44 Unfortunately, that's not the case today because there are so much choice,
25:48 so many tools that 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." Now the momentum, now's the moment to step up as a community
25:59 and start to start to rally around it, yeah?
26:03 Need to take the next step, say some of these tools are no longer recommended.
26:07 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?" I don't think that they will, but what if they did?
26:26 And he talks about that as well.
26:28 So yeah, we can always work it.
26:30 Yeah, let's see what Henry has to say as well out there.
26:33 Says, "This is basically mostly faster PIPX replacements, the ScriptRunner, ToolManagement, ToolRunning
26:38 without installing first." 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 this,
26:46 although I think there's more to it as well.
26:48 Yeah, one of the things I'm interested in is there's been, I've never really,
26:53 there's something about that, nothing really against PDM, but my experience with it was just not what I like to do.
27:03 And the UV tools have taken a lot of the ideas from PDM as well, which is interesting that they're looking at all,
27:10 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 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 type UVX run or UV add instead of PIP, just pip install, right?
27:37 Where the UV add will put it into the lock file and the requirement and so on.
27:42 Yeah, and the lock file is even like UV.lock or something.
27:45 Yes.
27:46 So I am quite excited about it.
27:48 However, a lot of the stuff has, 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,
27:56 once you maybe get your Python installed, if it didn't exist or whatever,
28:01 then you can go on and do a lot of things the Python way without worrying about it.
28:05 But it's going to be interesting what the adoption is.
28:08 I'm going to talk to Charlie soon about it.
28:09 And it'll be fun.
28:10 Good. I'll listen to that one.
28:12 Yeah, I'm super excited about UV in general.
28:14 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 tab count, I'm guessing that you're feeling pretty extra.
28:26 Yeah, this will go quick though.
28:27 I wanted to point out that the Jeff Triplett rewrite of the top Python packages is already scriptified,
28:36 UV scriptified.
28:37 He included the script at the top to pull in the dependencies.
28:41 And once you look at it for something you're familiar with, you're like, oh, that's easy.
28:46 You're just adding like HTTPX, rich and typer to the dependencies and telling which Python version.
28:51 That's really all.
28:52 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.
28:59 So I wonder if the editors auto-collapse that.
29:02 It'd be awesome if you just never see that unless you want to.
29:05 You know, like it collapses, it folds the code for those sections on open.
29:08 Yeah.
29:09 Because 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:18 Yeah.
29:20 Okay. So this is, I guess, ode to Hugo because or Hugo VK, because he also let us know
29:28 that when we change the date from Tuesday to Monday, people could use are we meeting yet.com
29:35 to keep track of when the meeting is, because it converts to your time, whatever we push this in at.
29:42 So I'm seeing that the next meeting is August 26th.
29:48 That's today.
29:49 So, but if you go here, when we're not here, it'll tell you that there's like a meeting coming up
29:56 and it'll show 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 the live stream.
30:09 So then that's the real way, because this is, if you do a are we meeting yet.com,
30:14 it doesn't update if we ever have to change things.
30:16 But yeah, the time is embedded in the URL.
30:18 It just adapts to 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 a couple of these.
30:42 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:48 Like, yeah, it's great.
30:51 I love these.
30:51 That's pretty.
30:52 PyCon Zimbabwe.
30:53 That's awesome.
30:54 And then also PyPI downloads.
30:59 It's some tools for Python tools with the download counts for versions over time,
31:06 which is sort of fascinating how slow some stuff gradually gets down.
31:11 So what is, what are we looking at here?
31:13 We've got 3.12.
31:17 So we've got this blue is 3.10, 3.10.11.12.
31:21 This blue is up in this top right corner.
31:24 And then the old ones like 9.8, 7.6, 5.3, 4.
31:28 are just gradually going down over time.
31:30 And I kind of would have expected a sharper drop, but yeah, it's interesting.
31:36 And that sort of trend goes, like, here's URL of three.
31:40 Yeah, 2.6 on there for a while.
31:42 Yeah.
31:43 Well, and yeah, 2.6 did like take a long time to completely disappear.
31:49 2.7 is down into the like single digit percents, but it's not gone away.
31:54 So yeah, anyway, interesting.
31:58 The other thing he's got, Python, there's a bunch of stuff.
32:01 Python core devs I thought was interesting of different core devs and their,
32:05 when they started and stopped.
32:06 So 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 pythontest.com, we've got the courses, of course,
32:23 and they're going really well.
32:25 And I'm excited about that.
32:26 The other thing we've added is when I had it on the other platform, I used to be on Teachable.
32:31 Now we're on Podia, but Podia has a community thing.
32:35 So we've added community options so that if you, like, for instance, this is great about the community options
32:41 because if you bought the book, physical book, but you have a question, how do you get that answered?
32:46 Well, you can hop on 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:14 So if you're interested in being in that, and you're like, "Oh, maybe that would be interesting."
33:18 Well, the time is now to sign up because we're gonna call, it'll be done.
33:24 And soon, the applications will be closed.
33:27 Also, follow up from last week.
33:29 Remember I talked about PyAwaitable.
33:31 I'd been waiting for it.
33:32 So Zero Intensity, the author of PyAwaitable commented, says, "Hey, author of PyAwaitable here.
33:39 "Thanks for showcasing you were right.
33:41 "The PEP didn't get published with a number.
33:43 "I was working with Peter Victorin on it "and we only got as far as a discussion thread.
33:49 "But unfortunately, something that only uses the public API "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,
34:01 "which hopefully should not be that much." Spoken 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.
34:15 People use Chrome for some reason still these days.
34:18 I don't understand it, but it still is.
34:21 Like, let me run Spyware and type into it.
34:24 Okay.
34:24 There's Safari, there's Edge.
34:27 There's a bunch of options, right?
34:28 Brave, so on.
34:29 But there's this new project that I came across called Ladybird, which is pretty interesting here.
34:35 "Welcome to Ladybird, a truly independent web browser.
34:38 "We're building a brand new browser from scratch "backed by a non-profit.
34:42 "That's kind of interesting, isn't it?" Kind of.
34:44 Scroll to the top again.
34:46 Isn't that the Meta logo?
34:49 No, it's not Meta.
34:51 It does look a little bit like it, but it's not.
34:55 I think it's supposed to look like a bird with, I don't know, it's similar, but it's not.
34:59 It's not Meta, okay.
35:00 It's not Meta.
35:01 So it's an open source project that has six full-time developers working on it,
35:07 and they expect to ship in 2026, which is a lot of work.
35:11 But web browsers are basically operating systems these days.
35:15 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:19 They have sponsors getting a decent amount of money.
35:23 But yeah, what does it mean?
35:25 Where does it come from?
35:26 And so on.
35:27 So anyway, I ran across that and thought that was interesting.
35:30 Yeah.
35:30 Jay out there in the audience says, "Hey, you're gonna buy me a ticket for this code in the castle?"
35:36 We'll see, we'll see.
35:37 Wait, you're not buying me a ticket.
35:41 Well, get yourself to Germany or Austria, and it's a short little trip on down.
35:46 Just cross the Alps there.
35:47 Okay, next one.
35:49 Someone asked us about...
35:51 So sorry, I forgot to write down the name when I wrote down this note.
35:55 It says, "Hey, I'm interested in your video." We talked about...
35:58 I can't remember what we talked about, but maybe the new microphone or something.
36:02 It said, "Hey, I'm also interested in your video recording setup." And would that be cool as an extra?
36:08 Okay, so sure.
36:09 I'll give people a rundown on this.
36:11 And Brian, you can chime in on yours.
36:12 I record all of the Talk Python courses these days with OBS.
36:17 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 in picture,
36:25 with the background cutouts.
36:27 You're just a little floating human in the bottom of some piece of software.
36:31 This is free.
36:32 You can download it.
36:32 It runs on all the things.
36:33 I encourage people to contribute, donate to it.
36:37 Like, if you really use this a lot, 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,
36:52 change what's shown, stop, start, pause, etc.
36:55 Also have, for some reason, the product page for the Elgato Key Light says that their store is undergoing maintenance,
37:02 but the rest of the website is up.
37:04 So they point over here, so I can show you, at least on Amazon, I've got some cool Elgato Key Lights that you can control with the Stream Deck,
37:11 and multi-color and stuff.
37:14 That's really fun.
37:14 And then finally, edit all of this with DaVinci Resolve.
37:18 DaVinci Resolve is super fun software.
37:22 They use it for a lot of the Marvel movies, I believe.
37:26 They use it for Spider-Man.
37:28 So it's kind of intense.
37:30 If you open it up, you're like, "What am I supposed to do with this?" But if you just stay in the little edit section with the timeline,
37:37 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:43 I'm doing a lot of that.
37:47 I want to switch to...
37:48 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, I use Camtasia.
37:58 And Camtasia is oddly...
38:00 It works better on Windows than it does on Mac, because you can export multiple...
38:07 It's actually something I'm looking for on a Mac, is I want to be able to record everything in one project
38:11 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, I just don't know how.
38:24 But anyway.
38:25 - Yeah, 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:35 And the key lights, they're great.
38:37 The one thing that you didn't mention was what camera you're using.
38:40 - Oh yeah, I'm using...
38:42 I've used a whole bunch, so this is not a strong recommendation.
38:46 But I'm using the Elgato...
38:48 You can't click that thing.
38:49 (laughing)
38:50 The Elgato...
38:52 What is it called?
38:54 Facecam Pro, that's what it's called.
38:56 Which is like a 4K camera.
38:58 - It's pretty good.
38:59 - It's pretty good.
39:00 Yeah, it's pretty good.
39:01 The color's a little bit off.
39:03 It's hard to get just real natural colors.
39:05 - I'm using the Logitech Logi, a little tiny camera.
39:09 Just decent.
39:09 - I think I used that before, and it's also real nice, yeah.
39:12 - Yeah, but it'd be fun if I tried this other one, 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, but anyway.
39:22 - Yeah, yeah, for sure.
39:24 Let's see.
39:25 Also, just to round this out, for the live streams, we use StreamYard.
39:29 - Oh yeah, we've been happy with that.
39:31 - Yeah, StreamYard's really good, really good.
39:34 And Jay Miller out there says, "If you're doing both recording and streaming,
39:38 "I recommend Ecamm, massive fan.
39:40 "I 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, but that's what we're doing, folks,
39:48 for those of you who are interested.
39:49 - Yeah, anything else?
39:51 Are we up to the joke?
39:52 - I am ready to tell a joke.
39:53 And now, this joke has no graphic.
39:55 No graphic.
39:58 But I thought we'd put, just for the live stream here, I would put a picture of a really nice data center
40:03 so people can appreciate their code running in an awesome place here, okay?
40:07 - (laughs) Yeah, it's terrible.
40:10 - Okay.
40:10 It's there.
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:21 - 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 Blaise wrote and sent in.
40:32 So, this is the DevOps Support Group.
40:34 Are you ready, Brian?
40:35 - Yeah.
40:35 - "Hi, my name is Bob." Group, "Hi, Bob." "It's been 42 days since I last SSHed into production."
40:43 Applause from the group.
40:44 "But only four days since I actually took down the website." Someone in the back, "Oh, Bob."
40:48 - Oh, Bob.
40:49 - (laughs)
40:53 - Oh, that's funny.
40:55 Yeah.
40:56 - It's a good one.
40:56 - Yeah.
40:58 You don't want to be the one who took down the website.
40:59 - But how, 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 Use the, like, I knew, the last time I took down the website inadvertently,
41:10 I was completely out of the blue.
41:11 I'm like, "What in the world is happening?" 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, a utility thing, but the script was collected in a subsection
41:26 where the web framework scanned for routes for the framework.
41:31 And as it tried to parse the Walrus code to see if it could add it to the website,
41:35 it took down the website instead.
41:37 It couldn't start.
41:37 - Oh, no.
41:38 - Yeah.
41:40 Yeah.
41:41 Anyway, 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:49 - Unless your name is Bob, then you be Bob.
41:52 - We'd have stick--
41:53 - Don't be that Bob.
41:54 - 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.
42:02 See you later.
42:02 - Thanks a lot.