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


Transcript #399: C will watch you in silence

Return to episode page view on github
Recorded on Tuesday, Sep 3, 2024.

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

Back to show page