Transcript #399: C will watch you in silence
Return to episode page view on github00:00 Hello, everybody. Hello, Michael.
00:01 Hey there.
00:02 We really should have kicked off the shift to Monday next week instead of this week,
00:10 because this week's a holiday. We're on Tuesday.
00:12 It was a leap Monday.
00:15 Yeah.
00:15 Or the reverse of that or something. Yes.
00:17 Okay. So next week we'll be on Monday.
00:19 But it's good to be here. Should we kick it off?
00:23 Let's kick it off.
00:24 All right.
00:26 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to earbuds.
00:31 This is episode 399, recorded September 3rd, 2024.
00:36 And I am Brian Okken.
00:38 And I'm Michael Kennedy.
00:39 I always have to check the date because I write down in the notes what the date is.
00:45 But sometimes I start the notes a day early and I get the date wrong.
00:48 But yeah, it is September 3rd.
00:50 Anyway, thanks everybody for joining.
00:54 Thank you, everybody that has supported our work.
00:56 This episode is sponsored by us.
00:59 So please check out our courses.
01:01 And also thank you to Patreon supporters for helping out.
01:04 If you'd like to connect with us, you can always connect on Mastodon.
01:09 The links are in the show notes.
01:13 And we also, you can join us live.
01:16 If you check out pythonbytes.fm/live, you can see when we are next.
01:21 It's usually upcoming, going to be on Mondays at 10 a.m.
01:27 And finally, if you'd like to join the friends of the show list or what that is, is the email list so that you get mostly.
01:36 You'll get the show notes with all the links to everything we talk about in your inbox, which is a good thing.
01:42 So send that.
01:44 But let's get on with the show.
01:46 Michael, what would you like to start with?
01:49 I would like to talk about virtual environments.
01:52 Cool.
01:53 How about that?
01:54 Yeah.
01:54 Actually, this is a really fun topic.
01:56 This comes from Hynek.
01:58 He wrote yesterday an article.
02:01 I feel like this is one of the things you write where it's like, all right, I'll write it down.
02:05 You keep asking me.
02:07 I'll write it down so we can just have it there to point at.
02:11 And that article is entitled, Why I Still Use Python Virtual Environments in Docker.
02:16 I was checking out this thing that Hynek wrote about using UV and its project management features inside of Docker containers.
02:25 And there's a bunch of funkiness.
02:27 If you look at his article, he links over to a GitHub post, GitHub issue, I guess.
02:34 And there it's, you know, we've got Hynek jumping in.
02:40 You've got Sebastian from FastAPI jumping in.
02:43 You know, there's like a bunch of pretty significant folks going, almost a little more help for us Docker people.
02:50 So as I've talked about before, Python bytes and all the talk Python things and other infrastructures running in Docker these days, it's glorious.
03:01 We've got one big server with eight CPUs and 17 different multi-tier apps running on.
03:09 It's fantastic.
03:10 And I happened to use this as well.
03:13 And I just thought it was really interesting to hear Hynek's recommendations and mostly on, on the whys.
03:19 Okay.
03:21 Because with Docker, the Python in the Docker container is really only going to be used for the particular app that's being shipped.
03:31 Like usually put just one thing into a Docker container, one app.
03:36 And if you need two apps, you often run two Docker containers.
03:39 So why, why not just blast on the, the built-in Python or something along those lines, right?
03:45 Yeah.
03:46 You're not trying to isolate from anything.
03:47 So yeah, exactly.
03:49 Well, I can just hear Hynek now going, yes, but let me write this down.
03:56 So I, let's flip over to omnivore app because that's what you should be using.
04:03 If you do long form reading and note-taking omnivores app.
04:07 And this is great for notes.
04:09 This is why I still use this, right?
04:10 Like what's going on here?
04:11 Says as an overarching theme, my goal, Hynek's, is not mindlessly follow some best practices that add complexity for questionable payoffs.
04:22 Because a big tech developer advocates, so at a conference, but to spend a lot of time thinking about what secondary effects things that you do.
04:31 And it's not so much about how many keys you got to press, but how hard is it to reason about what's going to happen as a consequence of a particular setup, you know?
04:41 Okay.
04:42 Yeah.
04:42 So that's, that's fair.
04:43 And basically, this is, look, people understand virtual environments really, really well.
04:50 It's the whole goal of virtual environments is to hold a single application.
04:53 If I tell you in documentation or a meeting or a walk or a course or whatever, Hey, what we're deploying is a virtual environment.
05:02 You're like, ah, I know what that is.
05:03 That's pretty straightforward.
05:05 And this is Hynek's words.
05:08 It's the closest thing that we have to an enclosed standardized and well-understood application build artifact in Python.
05:16 The stretch, he says, but he thinks of virtual environments as the result of linking a dynamic binary in compiled languages, which is pretty interesting.
05:24 Hmm.
05:24 Kind of.
05:25 Yeah, I can see the analogy.
05:26 Yeah, exactly.
05:27 I do too.
05:28 Totally.
05:28 So you've got your Python source code.
05:29 You've got your list of dependencies.
05:31 That's kind of like your statically linked libraries in your, in your compiler.
05:35 And then what you get out is the actual libraries, not a list of names and your code, potentially QIC files, pre-compiled, et cetera, and so on.
05:46 So I think that makes a ton of sense.
05:49 It certainly seems that way to me.
05:52 And it's good to use the same tools and primitives that you have in development and in production.
05:58 So they're not vastly different.
05:59 And in development, you typically use virtual environments.
06:02 So why not in production?
06:04 Right.
06:05 Yeah.
06:06 Moreover, import complexity debugging says, did you know this?
06:11 You maybe know this.
06:12 I didn't know this actually.
06:13 If you pass dash capital I to Python, then it limits where the imports come from and will only import from either the standard library or the virtual environment and nothing else.
06:29 As opposed to say falling back to, well, it's not in the virtual environment, so it's in the Python path or so it's in the --user version or whatever.
06:40 Right.
06:41 That's kind of nice.
06:43 And then finally, as a bonus says, I'll have no fury like how I feel about pip install --user.
06:52 So, you know, anyway, it's, it's an interesting thing.
06:57 You can check this out and I follow the same philosophy, but I didn't in my mind have it as crystallized as what Hennig did.
07:09 So I really like this, this take on it.
07:12 And people who get this podcast, visit the website or even just get the MP3.
07:17 All that is happening through a virtual environment running Python 312 in a Docker container.
07:22 How about that?
07:22 That's pretty cool.
07:24 It is pretty cool.
07:25 It is.
07:26 It is.
07:27 But I'm not trying to convince you to do anything.
07:30 Kind of is.
07:33 But, but don't tell me that I'm wrong.
07:35 Yeah, sure.
07:38 Okay.
07:38 I think it's the vibes there.
07:40 Anyway.
07:40 Well, then people can check that out.
07:43 Nice.
07:45 I want to talk about the developer survey.
07:48 This is done by the PSF and JetBrains.
07:51 And this is still not on the screen.
07:55 There we go.
07:56 There you go.
07:58 The developer survey with, it's funny.
08:03 Developer S is on the next line.
08:06 That's funny.
08:07 Anyway.
08:07 Anyway.
08:07 2023.
08:08 It's 2024.
08:10 What's going on?
08:10 Well, they do this kind of at the end.
08:14 It's from November of 2023 to February of 2024 is when they're collecting it.
08:18 So, and then they analyze it and come up with this cool thing.
08:22 And so that's why we get it a few months later, which now we're ready.
08:26 So, anyway, let's look at some of the cool results.
08:29 So, this is pretty neat.
08:31 They've got the contents broken out into all sorts of stuff.
08:33 Python versions, data science.
08:34 There's a lot of data science stuff in here now.
08:37 But there's a bunch of stuff I thought was interesting.
08:40 We've got 85% of the survey respondents use Python as their main language versus secondary.
08:47 Hey, Brian, before we go on, I have not seen this at all.
08:51 I didn't even know they were out.
08:53 Oh, really?
08:54 Whatever I say is first reactions.
08:55 I'm loving it.
08:56 I'm getting new experience at this time.
08:57 Cool.
08:58 And, well, did you submit the survey?
09:02 Yeah, I filled it out a long time ago.
09:05 I believe those numbers, the 85% main, 15% secondary, is identical to last year.
09:10 I can't remember for sure, but it's very, very close.
09:12 It's interesting.
09:13 I can't.
09:14 A lot of the results, they show what the last year's results were, but some of them, they don't.
09:19 They're just highlighted.
09:20 So, maybe you can probably get the data or something.
09:23 Anyway.
09:24 The Python usage with other languages, I thought it was interesting that the JavaScript and HTML is down a little bit, just a little bit.
09:35 It was 37%.
09:39 JavaScript's 37% in 2022, and this time it's 35.
09:43 HTML was 36, now 32.
09:47 So, it's gone down a little bit.
09:48 Russ.
09:49 Super interesting.
09:49 You wonder if, is that an actual decrease in use of HTML and JavaScript?
09:55 Are there more people coming into Python, like on the data science side, that don't care about HTML and CSS and JavaScript?
10:05 Maybe they just, maybe it's being diluted, but not lessened, or maybe it is less.
10:09 I don't know.
10:10 Yeah, I don't think it's lessened.
10:12 I think it's just more people are using Python.
10:13 And Paul Everett notes that the drop in HTML and JavaScript might be, might show that data science is increasing its share of Python.
10:22 And I think that's true.
10:23 The machine learning and data science is taking, there's more people coming into that than other, than web development, I guess.
10:33 So, I think that's there.
10:35 The Rust was interesting, because we talk about Python and Rust a lot.
10:40 And still, it's increased, but it's still 7% of the respondents are using Rust also.
10:49 But those 7% are doing some cool stuff.
10:52 So, go Rust.
10:55 Anyway, usage with other languages, primary versus secondary.
11:00 Yeah, it's no surprises.
11:03 JavaScript, HTML, SQL, Bash, C++, down at the bottom.
11:07 Let's see.
11:10 Skip down a little bit.
11:13 How long, this is interesting, especially when, for people like you and me that train other people and teach other people stuff,
11:20 is to remember that a lot of people have only been using Python for a little while.
11:26 There's 25% less than a year.
11:29 But if you combine the less than a year and one to two years, it's like 40% have been using it less than two years.
11:39 So, you really can't assume that people know a lot of the Python history and stuff like that.
11:45 So, the other thing that was interesting is absolutely new to coding.
11:50 Even if it's not Python, that's similar.
11:53 It's like 50% of the population is under two years.
11:56 Or at least of the survey respondents.
12:02 But I would have expected the survey respondents to be more edged towards experienced folks, myself.
12:07 Exactly.
12:08 Yeah.
12:08 Yeah.
12:08 37% Python developers reported contributing to open source.
12:15 That's awesome.
12:16 In the last year, that's actually higher than I would have expected.
12:20 But that might be, again, the population of survey respondents.
12:25 But, yeah.
12:26 Interesting.
12:29 Most contributions are in code.
12:31 77%.
12:33 38% documentation.
12:34 Only 33 tests.
12:36 That's a bummer.
12:38 We got to bring the tests up a bit.
12:40 I don't know what this is.
12:43 34% of Python developers report practicing collaborative development.
12:48 That, like, pair programming and stuff like that.
12:50 Maybe.
12:51 I don't know.
12:52 Let's see.
12:54 Oh, look at this.
12:55 Favorite Python-related resources.
12:58 I think this is new this year.
12:59 I've got YouTube channels, podcasts, blogs.
13:03 Of the podcasts, we've got Talk Python To Me.
13:06 Congrats.
13:06 It's not ordered.
13:08 It's just the top, I guess.
13:10 But I think it might be ordered.
13:11 Talk Python To Me.
13:13 Lex Friedman.
13:13 It's a good one.
13:14 Real Python people.
13:16 Django Chat.
13:17 I love those guys.
13:18 Core.py.
13:19 Python Bytes.
13:20 And then Python Test.
13:22 I was not expecting to have that show up.
13:25 That's awesome.
13:26 It is awesome.
13:26 We've got three podcasts in that list.
13:28 That's incredible.
13:29 But I probably, I changed, just this last weekend, I changed Python Test back to testing code.
13:36 Just right-click on the page, Brian, and say edit, just inspect, and then edit HTML,
13:43 and it'll be fine.
13:45 Yeah.
13:47 I don't know how to save it after that, but it'll look fine for a little while.
13:51 Well, yeah.
13:52 So if you click on it, it goes to Python Test, and you can click on testing code at that point.
13:58 So let's just, I guess I'll leave it at that.
14:01 I'm not changing it again.
14:04 It's sticking to testing code for a while.
14:05 Anyway, okay.
14:08 Do you use it for work or fun?
14:10 51%.
14:11 Use it for both work and personal.
14:13 So that's fun.
14:15 Only 21% for just for work, which is cool, because Python is so fun, you should do it at home also, I guess.
14:26 The use of programming, you see these problems at home, you're like, that has to be fixed.
14:30 There will be some code written that will fix this problem, whatever it is.
14:34 Yeah.
14:34 They added, no, what you use Python for, they've added some categories.
14:41 So it's hard to compare the numbers year over year, because there's new categories.
14:45 Like, for instance, data analysis is still at the top at 44%, but it was 51 last year.
14:51 But there's also data engineering and academic research and ML Ops added, and they're probably all-
14:59 And data visualization, yeah.
15:00 Yeah.
15:00 So, and, oh yeah, design data visualization.
15:04 Those are all, it's like tons of, that's what people are using Python.
15:10 So we could rename the podcast, the language that uses, that people use data analysis for,
15:21 podcast or something, I don't know.
15:22 Anyway.
15:23 Where's testing?
15:26 I think testing's in.
15:29 Oh, testing has gone down to 23%.
15:32 It's probably all.
15:34 We have so many users now, we don't need to test as much, they can do it.
15:37 I think it's the data analysis people.
15:39 I don't think they test it.
15:40 Yeah, yeah.
15:40 Well, when you're exploring data, you don't need to write tests.
15:43 It's not, you're not going to keep it.
15:46 Throw it away anyway.
15:48 Yeah.
15:48 Your data doesn't have to actually be right.
15:51 It could, it could be wrong.
15:52 You're just like making decisions for the country based on it, but you know, whatever.
15:59 Okay.
15:59 Okay.
15:59 Anyway, a whole bunch of fun stuff through here.
16:01 Oh, there's a whole bunch of stuff around doc data analysis stuff that I didn't
16:09 really dig into, but I did think that the Python version was interesting.
16:14 there's still Python two people around.
16:17 There's 6% of the people using Python two, which is, I don't know why, but anyway,
16:23 two will not die.
16:24 The, and I think that's pretty much, it's got, we went down 1% over last year.
16:31 So that, I guess we're making progress.
16:32 That long tail will take a while.
16:35 of the other versions of the Python three looks like three 10, three 11,
16:39 three 12 are the tops, which is what you'd expect, I guess.
16:44 So it's good.
16:46 75, almost 75% use the last, last three versions.
16:50 So this is great.
16:52 And Python.org.
16:54 So most, most, most used way to install.
16:57 So next year, we'll see about UV Python install.
17:02 That's another one.
17:04 that's because they had.
17:05 Oh, that's true.
17:06 And some others, right?
17:07 Yeah.
17:08 I might have the up to add that.
17:10 I think that we'll probably see that with, there was like virtual environment stuff somewhere.
17:15 Lost.
17:16 Can we look at web frameworks real quick?
17:18 I know you just scroll by them.
17:19 Web frameworks, Flask, Django requests, FastAPI.
17:23 Still don't know how these fit together.
17:25 It's like, what language do you use?
17:27 C++ or CSS?
17:28 Like, yeah, I don't know.
17:31 I don't know the question.
17:31 So I'm going to say that because we have Flask and Django.
17:34 We also have HTTPX, which is a client.
17:37 It's like, yeah, Firefox or Flask.
17:40 It's like, huh?
17:41 Interesting.
17:42 Anyway, well, it's like requests, requests as well.
17:45 Yeah.
17:45 Yeah.
17:45 I think it's wet in a web category, but if they feel, convoluted, but nonetheless,
17:50 Flask, Django and FastAPI.
17:52 I think it is super interesting.
17:54 I think Flask is gaining a lot of momentum for a second wind or fifth wind or however many winds it's had plus one.
18:01 It seems like it's getting a lot of momentum these days because I feel like it had fallen a little bit,
18:08 certainly realized if the FastAPI.
18:10 So that's interesting.
18:11 Well, David Lord's been doing a bunch of cool work on it and other people of,
18:15 cleaning it up and, getting rid of some of the old stuff.
18:19 So I had him on talk Python to talk about, the state of Flask and palettes in 2024.
18:25 Maybe that's where I got my information from.
18:27 I just listened to that.
18:28 Like last week.
18:29 Did you?
18:29 Oh, nice.
18:30 Good episode.
18:30 test frameworks, pytest at the top, 52%.
18:35 Yay.
18:35 built in default still carries a lot of weight there though.
18:40 Unit test.
18:41 Yeah.
18:41 25%.
18:42 2% for nose.
18:44 That must be well, those Python two people using nose still.
18:47 Maybe.
18:48 I don't know.
18:49 Same, same with this, like hypothesis.
18:51 That's, and mock.
18:53 Those can be used with any of these things.
18:55 but yeah.
18:56 yeah, exactly.
18:58 And I, I would like to see the numbers from last year.
19:01 I can't remember.
19:02 I'll look those up.
19:03 I'm hoping that okay is in the list.
19:06 We haven't talked about that, but we'll try to get okay at 2% by in a couple of years.
19:10 yeah.
19:13 More, more fun stuff for data analysis, whatever date, lots of data science,
19:18 half of its data science, but anyway, a fun survey.
19:22 It's good to check out.
19:23 And, especially look at, look around November.
19:26 Then, we'll, we'll bug you in a couple months to go take the survey for next time.
19:31 So, yep.
19:32 I always really look forward to this.
19:35 It's, it's insightful.
19:37 Yeah.
19:38 All right.
19:40 All right.
19:42 Well, previously, Brian, remember you talked, you had an article that you covered that was like,
19:49 I done for Excel was not what I wanted it to be or something like that.
19:54 right?
19:54 Like, yeah, I wanted a replacement for VBA.
19:57 And what I got was advanced functions and cells, or I don't know, one of them times of things.
20:03 And one of the limitations, several of the limitations were somewhat annoying.
20:07 One limitation was, well, well, you can pip install or you can import third party things from this shorthand list of a couple of them that are common,
20:19 like NumPy and pandas.
20:21 That might make sense.
20:23 And if it's not there, then say lovey.
20:26 So it goes.
20:28 The other one was that in order to run your code, you do your Excel things.
20:36 Your Excel had to go and upload and actually execute your data and code in Microsoft Azure somewhere in a container somehow.
20:45 There may be privacy concerns, but even just from a, I'm on an airplane or I'm in a place that has crappy internet,
20:51 or I'm at a coffee shop and don't have good internet, but I still would like to do some work.
20:56 I just, any disconnected scenario whatsoever was not ideal.
21:02 So the Anaconda folks who were providing some of the foundation for that through Anaconda,
21:08 the distributable Python environment for that, they came out with this thing called the Anaconda code add-in for Excel,
21:19 which solves some of these problems.
21:21 It's pretty cool.
21:23 So what's, I guess for some people, the main takeaway might be that you can run it locally,
21:30 which is pretty awesome.
21:31 but I think what's more interesting is that this is based on PyScript.
21:38 Remember PyScript, the WASM version of Python on the front end?
21:43 Yeah.
21:44 Yeah.
21:45 And I imagine it must be based on the Pyodide, not the micro Python version,
21:52 which would make it pretty robust in terms of what it can do.
21:55 But what's really cool about that is you can run it locally without any setup,
22:01 or install.
22:01 So you don't even have to have Python locally because it just grabs a WASM thing off the internet
22:07 or ships with it, probably ships with it.
22:10 And that's pretty cool.
22:12 And that's pretty cool.
22:12 It also says it will run cells independently.
22:17 So in addition to running Python cells in row major order, which is kind of tricky,
22:24 meaning any cells with Python code will rerun anytime any Python cells change.
22:29 It can also run them independently.
22:30 So cells containing Python are only rerun if the cells, cells modify.
22:35 That's kind of interesting.
22:36 but this is the most interesting, a customizable environment.
22:41 It allows you to basically pick any package from PyPI that can execute on WASM.
22:49 So there's, you know, certain limitations there, right?
22:53 Like if it's based on binaries that are not available or something that can't work,
22:59 but that's a much bigger thing than the four or five packages that came with Microsoft,
23:03 Python for Excel, or whatever the official name of that is.
23:07 Right?
23:07 So this is really, really cool.
23:09 On top of that, there's a init.py that fires up whenever you opened up the Microsoft Excel,
23:19 Python variant with this one.
23:22 And that, that thing's static.
23:23 It's just whatever it is, it is.
23:24 But with this one, you can edit it.
23:26 So for example, if you have functions that you often call and you want to be able just to quick,
23:32 have them and not retype them into every, Excel sheet or whatever, you can write little utility functions and other helper things and import libraries,
23:42 you know, import, you know, whatever library as alias.
23:47 And then you just have those automatically available.
23:49 So it kind of sets up your spreadsheet for easy use.
23:52 So you can do really advanced things.
23:54 That's pretty cool.
23:55 Yeah.
23:56 Yeah.
23:56 So that's really cool.
23:57 You can write your own little packages too.
23:59 Exactly.
24:00 Like your little, like you could create little helper functions and other types of things and not have to do
24:04 them in the little editor window of Excel.
24:07 Also supports better data types for working with NumPy.
24:11 And yeah, I think that's, that's about it.
24:16 But if you were thinking this was pretty close, but it's not quite, you know,
24:22 this might actually push it a little bit farther, runs locally based on PyScript,
24:26 install your own libraries long as they run on PyScript.
24:30 And honestly, this might even push PyScript to be better, right?
24:36 Getting some people to adapt libraries where they're like, why would I do that before?
24:39 Like, Oh, now it works in Excel.
24:40 Okay.
24:41 I'll do that.
24:42 Now that seems like a big enough reason to work on compatibility with Wasm.
24:46 Yeah.
24:47 With both of these solutions though, I'm the, the things that I know that you probably don't have the answer,
24:52 but when sharing a spreadsheet with somebody else, do you have to have like a save or share requirements file or something like that?
24:59 Sort of.
25:01 So it does say this here.
25:04 It does say once an environment is created, this list of IPI Wasm libraries,
25:12 like a requirements file, it will be pinned.
25:15 So when users share notebooks, the spreadsheet will retain the exact environment for all of the users.
25:21 Oh, okay.
25:21 So I'm imagining if you've got the X, the add-in installed and it sees the,
25:26 the workbook or whatever it's called, it's probably got a list of some sort of startup code,
25:32 like based on this version of PyScript and Python.
25:35 And then here's the list of dependencies.
25:37 And it probably just grabs it from the internet, like a browser would and then goes.
25:41 Yeah.
25:41 But I also don't know what happens if you share one of these with two people.
25:46 Yeah.
25:49 Yeah.
25:49 Yeah.
25:50 Yeah.
25:51 Cool.
25:51 Awesome.
25:54 We were talking about David Lord and Flask already, but now I want to talk about a blog post he has.
25:59 So David Lord depends.
26:00 He, he keeps up a lot of stuff and he released a article called disabling scheduled
26:07 dependency updates.
26:09 And I, yes, please.
26:11 I kind of see that with, with, with Python bites.
26:14 Cause you, you have a, like what depend upon turned on and stuff.
26:18 I thought I turned it off.
26:19 I thought I turned it off, but it won't go off.
26:20 It's driving me nuts.
26:21 So, the, what, and David's even had, so he's looked into, he's got, like 20 active projects that he is,
26:32 even though they're low activity projects, there's 20 projects that he's,
26:36 keeping an eye on.
26:38 And, and there's within those, a lot of them are like libraries.
26:44 So you're not, you're not really, you think you, you don't have to update the dependencies for applications with our requirements.
26:50 That text file.
26:51 You totally do.
26:52 You have to keep those up, but for projects, for like libraries, we usually keep those open.
26:57 We don't pin dependencies, but we do pin development environment and, CI environment and all that stuff.
27:05 And that's a lot of what he's talking about.
27:06 So the, the environments, or what he calls ecosystems are like the requirements file for develop development environment.
27:15 He keeps those up with pip compile.
27:16 And then you've got pre-commit hooks because you're testing a lot of stuff and those hooks might update.
27:22 So you have different hook versions.
27:24 And then you also have GitHub actions with, within CI workflows.
27:29 So there's, there's things like checkout and, and the other, there's lots of,
27:33 lots of things you can do with GitHub actions.
27:35 Those may have been updated.
27:37 How do you keep track of those?
27:38 So he potentially has three commits, time, any bot times 20 applications,
27:46 going on because of these, these, dependent bots and things.
27:51 And that's, and that's, and that's, it, it could be more if you didn't pop,
27:57 pull this down, but he set everything up to only notify him once a month for these things.
28:02 But still, even only once a month, that's like 60 emails at once a month and,
28:06 having to deal with that.
28:09 So, for a lot of these projects, what he's done is he's went down to doing it locally.
28:14 The idea is then, you've got, you use talks or something.
28:19 Yeah.
28:19 He's using talks with, with some labels to do some stuff.
28:22 So locally he will run pip compile, to, to, to, to do a new development environment.
28:31 And then, also GitHub actions.
28:34 And there wasn't a local version available.
28:36 So he wrote GHA update, which, which is a new, little act GitHub action updater,
28:43 that you can go out and look to see if there's any, any updates to your GitHub actions.
28:49 So very cool.
28:49 Thanks for that.
28:50 and then also pre-compute, doing an auto update for everything.
28:55 So yes, this is a, like you might be a risk to like, just update everything on a project,
29:01 but the, when should you do this?
29:03 This is for development environment.
29:05 So instead of having, and this is the idea around it also, if you've got a project that isn't doing a lot of development,
29:12 it'll look like there's a lot of development going on with the GitHub history.
29:16 And it's just these dependency updates.
29:18 Instead of, or you look at the PRs and I'll say 500, 500 closed PRs, but there's only one real PR.
29:24 Yeah.
29:25 But then there's also like, it's mind shift to the, the shifting, you're shifting how things work and remembering,
29:33 you know, what your test situation is and everything for these projects is jumping around.
29:39 So instead it's when, like on a day when he's looking at something, he'll go,
29:43 Oh, these haven't been updated for a while.
29:45 I'll go, I'll go update while I'm working on it.
29:49 I'll update all of these things.
29:51 And then he can do that as one of the, one of the commits on a day that he's working on it anyway.
29:57 So the, so the activity looks is closer to when he's actually working on something.
30:01 And I, you know, of course, like we're talking about, this is more important.
30:06 If you're, it's less important for development environment fixes because that users don't,
30:12 aren't affected by it for libraries.
30:14 If you have runtime dependencies, you really should be checking that more than once a month.
30:19 but for, for, for development environment stuff, I think this is cool.
30:24 So I'm going to take a look at this as well.
30:26 I love it.
30:27 I'm going to make another effort to disable more depend about stuff.
30:31 Cause it's so, so wordy.
30:34 There's a issue somewhere on GitHub.
30:37 I can't remember on where are you going?
30:39 Complain about Nevada offer feedback and learnings.
30:45 I believe there was one about, could we please, have a digest instead of a separate email and a separate PR.
30:55 They're like, no, why would you want that?
30:58 Because I like, I'm not quite as bad off as David.
31:02 Cause a lot of my projects and repos, I'm like, no, I'm not turning depend about on at all,
31:07 but it's the important ones I did.
31:08 And I woke up this morning to probably 40, 40 PRs.
31:12 You know what?
31:14 Just tell me I could get some updates for this thing.
31:18 I'm not going to do them one at a time.
31:20 I'm not going to say, Oh, you know what?
31:22 Let me reschedule this week.
31:24 And we're going to go through one at a time and we're going to see how they work.
31:28 Right.
31:28 It's, it's not, you know, missions or not, not flight control software for a spaceship.
31:35 It's like, it's a website.
31:36 If it doesn't work, I'll roll it back.
31:38 And I know what I'm using this stuff for.
31:40 Like if, if, if some of these things update, if I got six updates, I'll update them all.
31:47 If all the tests pass, I'll look at it.
31:50 it's fine.
31:52 if, if all, if I've got good coverage and I'm really testing the heck out of something,
31:57 it should be fine.
31:58 If it breaks, then I might, you know, take, go roll, look at that more closely,
32:02 but it's only usually going to be one dependency that's mucking me up.
32:06 It's not going to be.
32:08 Yeah.
32:08 Breaking for several reasons.
32:09 Exceedingly rare that a change in a dependency will cause, cause a break.
32:15 Cause you're only using a little bit of the app.
32:17 You're like, the last time that I got one was Mongo engine updated and it wasn't dealing with
32:24 multi threading correctly.
32:27 And even their testing didn't catch it because it only appeared when you're
32:32 doing like production web servers, like grain, you know, micro is here or something.
32:38 And then processing multi multiple requests in a Reddit scenario.
32:42 So even doing like web test stuff on it, it didn't surface those errors,
32:48 you know?
32:48 So it's just like, well, you know what?
32:50 We're going to roll that one back and wait till they fix it.
32:53 Then I'll roll it back, you know, two, two, one step back, two steps forward and we'll be fine.
32:57 And the way I were, I really usually get hit with, with deprecations.
33:04 So I'll run, I'll run the test with, with all warrant, like deprecation warnings turned all,
33:09 all the way up.
33:11 so that, so I can see those.
33:13 And then you can have the decision of, should I, should I deal with that deprecation right now?
33:19 Or should I, I can schedule it then, turn that off and schedule the deprecation notice.
33:24 It's not that it's broken.
33:25 It's just, it's not going to run like this forever.
33:29 I might want to use the new interface or something like that.
33:31 Yeah.
33:32 Well, David, I feel your pain and thanks for writing the article.
33:36 Yeah.
33:36 All right.
33:38 Now we're done with our main topics.
33:39 Yes.
33:40 Now, indeed we are.
33:41 and I don't have any extra other than the note that I have decided to switch.
33:46 So, okay.
33:48 I'll just go ahead and do this right now.
33:50 since I already got my screen up testing code, I already have it.
33:53 testing code.com.
33:58 I had it up.
33:59 There we go.
34:00 Okay.
34:01 Episode 221 was in June and it was a two parter.
34:06 It's part one of a two part, two part episode, two episode series.
34:10 I don't know why.
34:11 I just dropped the ball and didn't do part two.
34:13 So, this week I'm planning on releasing part two so that people can, if they want to catch up,
34:19 but it's now a testing code.
34:20 Anyway, that's my answer.
34:21 Close that loop.
34:22 Excellent.
34:23 Nice.
34:25 All right.
34:25 Well, I got a couple, some highs and lows, if you will, Brian, and all in between.
34:29 Okay.
34:30 Check.
34:30 This is exciting.
34:32 Check this, this, this merged PR for Unidep.
34:37 So Unidep manages dependencies across conda.
34:41 and pip managed environments.
34:42 It's super cool.
34:43 We talked about it in episode 366.
34:45 Okay.
34:45 We also talked about, just path, which added a badge.
34:51 See that?
34:52 Python bytes, three, seven, seven.
34:54 Oh, cool.
34:55 Pretty cool.
34:56 Right.
34:56 Remember we talked about that.
34:57 Yeah.
34:58 Well, this PR adds the badge.
35:00 So if you go over to Unidep, you can see it's got IPI version, pytest passing,
35:07 code coverage number stars, and Python bytes, 366.
35:10 So we have a, another badge signing.
35:13 I would point this out mostly to just say, Hey people, if we talk about your stuff and you want to link back to the episode,
35:18 this badge is a cool way to do it.
35:20 Okay.
35:21 And where, where again, do people get the code for the badge?
35:23 They can just, well actually you can look at that PR and it'll show you if you go to files
35:29 changed, it's just this link, this image shields, badge, Python bytes, the number,
35:35 the color, and then put in the link to where it goes to.
35:39 Cool.
35:39 Even, even links to the time when their topic was discussed.
35:44 So that's pretty cool.
35:45 Neat.
35:46 So I would, I would say based it on the Unidep and PR and just grab it from there or just
35:50 grab the code.
35:50 from the read me.
35:52 Cool.
35:53 Cool.
35:54 All right.
35:55 we'll do this one next.
35:57 Started using a C called raindrop.io.
36:00 I talked about omnivore.
36:02 Have we talked about before, but it's like reminded people like you should be using omnivore.
36:05 It's awesome.
36:05 I don't use it, but yeah, you should, you should be using it, Brian.
36:09 You should.
36:09 But if you, if you had something like delicious, you remember delicious.
36:13 Yeah.
36:14 Or those things, things where you would save links.
36:15 And I don't, I mean, I don't hardly ever use my bookmarks in my browser.
36:20 because they're so, they're so poorly poor to get to and stuff.
36:24 the only reason I make a bookmark is maybe so auto complete for my browser.
36:30 Address bar might pull something from there, you know, but I started using this thing called raindrop,
36:36 which gives you a whole bunch more options.
36:38 and it's kind of like a more modern delicious.
36:41 And from what I can tell, it's got pretty strong privacy.
36:45 For example, I think when you install it as a browser plugin, which you don't have to even,
36:49 but if you did, it doesn't ask, ask for access to the page content, unless you enable certain features,
36:55 like it will completely download the page and save a history for you.
36:59 in case the page changes or goes away, the website goes away, your bookmark will still have the content and stuff like that.
37:05 Anyway, people can check that out.
37:06 It's pretty cool.
37:07 I'll have to check it out.
37:08 What I really want is a bookmark manager that like automatically deletes junk.
37:13 I haven't visited in like a year.
37:15 Yeah, exactly.
37:16 You don't seem interested in this anymore.
37:18 You know, I, I, before I imported all my bookmarks into it, I had to do,
37:23 I deleted like half of my bookmarks because they were, they were bad.
37:27 They were old and duplicates and weird.
37:29 All right.
37:31 How about a little bit of drama?
37:32 I don't want to talk too much about this, but I think it's worth putting out there.
37:35 You can look into it and make from what it, what, what for me will there was an incident where,
37:42 one of the core developers was suspended given a three month, suspension or something like that.
37:51 And I'm sure a lot of people have heard about this, but then there was a followup or Gita Van Rossum posted something referring to
38:01 that person, not even by name.
38:03 And their post was removed for violating the guidelines.
38:06 We're mentioning that.
38:08 And I, I don't know.
38:08 This is, I feel like this should be something people are aware of, that this kind of stuff is going on.
38:15 but I don't know enough about it to take a side or have a strong opinion,
38:20 but it seems important.
38:22 Hmm.
38:23 So, well, okay.
38:25 just to, to make sure that we were aware that the, the post that they're talking about here did get put back.
38:33 Okay.
38:34 So it got put on, the post got put on timeout.
38:37 Interesting.
38:38 Okay.
38:40 All right.
38:41 Anyway, people can check it out.
38:43 It's linked there.
38:43 nearly final call for the coding in a castle in Italy.
38:50 We put up a $500 last minute special.
38:54 So, so got, some seats left and I'd love to see you there and talk Python for six days and
39:00 enjoy Italy together.
39:02 So, hopefully people can make that.
39:04 I'll put that in a length as well.
39:05 And that's all I got, Brian.
39:06 Okay.
39:08 Well, I want to show you that.
39:09 So the, the, this is the, it was a rake choice voting thing.
39:15 And, and Guido said something, and he referred to the band person.
39:21 And for some reason that got hidden for a while.
39:23 And people were like, why would you hide that?
39:25 But it's not hidden anymore.
39:27 So.
39:27 Yeah.
39:28 I'll just read the whole post.
39:29 I don't know much about voting systems, but I know someone who does.
39:32 Unfortunately, he's currently banned.
39:33 Maybe we can wait until his three month ban expires and ask him for advice.
39:37 It doesn't seem that controversial to me.
39:40 No, but anyway, yeah.
39:42 Anyway, you know, it's not funny though, is it?
39:45 It's not very funny.
39:47 It's not.
39:47 Well, we need something funny.
39:49 Exactly.
39:50 Exactly.
39:50 Well, do you know, I know you do some C programming.
39:55 C is pretty funny, right?
39:56 Yeah.
39:58 So this, I believe this is a, was a sidebar from a rust, a rust book.
40:06 And, yeah, and the title is C will watch in silence.
40:11 C is a watching you.
40:12 And I can't unsee this image.
40:15 So on side note, other programming languages, hold on.
40:19 You might say other programming languages don't require me to think about lifetimes.
40:22 Why does rust make it so complicated?
40:25 the C programming language will happily let you access memory has been freed leading to undefined behavior.
40:31 It'll watch in silence as you walk off the edge of a cliff.
40:34 It will watch you.
40:37 Do you feel, when has C watched you?
40:39 Have you, has it watched you?
40:41 C is watched.
40:43 You do a lot of C.
40:43 Yeah.
40:44 Yeah, I write, I write a lot of C.
40:46 Well, do you feel like it watches you?
40:47 No.
40:48 I don't know.
40:51 That's the joke I got.
40:53 Yeah, it's an entire tool belt and you can shoot yourself in the foot with it if you want.
40:57 But yeah, no, I mean, it's a fair point the book is making, but it's, yeah,
41:01 we'll watch you in silence as you walk off the edge.
41:04 Okay.
41:05 I got another funny thing that, that sort of a comment from Marco says, if,
41:13 if I recall correctly in 2022, none was the most second, most popular testing framework.
41:19 Cry emoji.
41:21 Well, I expanded the list and none is still 36%.
41:27 It is still the, the second most popular.
41:30 I love that they hit it.
41:32 It was like, we're just going to put under the show more tab.
41:35 Yeah.
41:36 36% of the answer.
41:38 None.
41:40 Yikes.
41:41 In fact, it's nearly beating all other true test frameworks.
41:47 I think it is maybe all of the true test frameworks other than pytest combined.
41:53 Yeah.
41:54 Well, it's because mocking and doc tests or hypothesis and stuff.
41:58 Don't.
41:59 Yeah.
41:59 Don't combine in that way, I guess.
42:01 Yeah.
42:04 None.
42:04 36%.
42:05 Maybe that's the joke.
42:06 Maybe that's the joke.
42:07 The joke is the software you write without tests.
42:12 Exactly.
42:12 Exactly.
42:12 It will watch you walk off the edge of a cliff silently.
42:15 Yeah.
42:15 So anyway, fun day today talking with you about Python.
42:23 And as always, as a reminder, next week, it will be Monday for everybody.
42:27 We hope, hopefully that's normal.
42:31 Hopefully.
42:31 Hopefully.
42:33 We'll see what the holidays do to us.
42:34 See you later.