Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #398: Open source makes you rich? (and other myths)

Return to episode page view on github
Recorded on Monday, Aug 26, 2024.

00: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.

Back to show page