WEBVTT

00:00:00.040 --> 00:00:04.800
<v Brian Okken>Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.260 --> 00:00:07.080
<v Brian Okken>This is episode 481,

00:00:07.240 --> 00:00:09.180
<v Brian Okken>recorded May 25th.

00:00:09.780 --> 00:00:11.620
<v Brian Okken>May 25th, 2026,

00:00:11.980 --> 00:00:13.180
<v Brian Okken>not 1926.

00:00:13.700 --> 00:00:14.720
<v Brian Okken>And I am Brian Okken.

00:00:14.980 --> 00:00:15.620
<v Brian Okken>I'm Michael Kennedy.

00:00:15.980 --> 00:00:18.880
<v Brian Okken>And this show is sponsored by us.

00:00:20.060 --> 00:00:23.320
<v Brian Okken>Check out all the Talk Python training courses,

00:00:23.660 --> 00:00:24.760
<v Brian Okken>the pytest course,

00:00:26.219 --> 00:00:28.080
<v Brian Okken>and thanks to Patreon supporters

00:00:28.400 --> 00:00:30.080
<v Brian Okken>and also we've both written books

00:00:30.300 --> 00:00:31.380
<v Brian Okken>so check out books also

00:00:32.180 --> 00:00:34.180
<v Brian Okken>and I'll have a little bit of news on the Lean TDD

00:00:34.500 --> 00:00:34.600
<v Brian Okken>later.

00:00:34.820 --> 00:00:36.160
<v Michael Kennedy>We both have something

00:00:36.480 --> 00:00:38.080
<v Michael Kennedy>fresh for people that if they want to support us

00:00:38.120 --> 00:00:39.820
<v Brian Okken>they can check it out. Something fresh, yeah.

00:00:40.920 --> 00:00:41.300
<v Brian Okken>You can,

00:00:41.540 --> 00:00:42.000
<v Brian Okken>if you've got

00:00:42.380 --> 00:00:43.460
<v Brian Okken>suggestions or

00:00:44.500 --> 00:00:44.720
<v Brian Okken>yeah,

00:00:44.900 --> 00:00:45.720
<v Brian Okken>if you've got complaints,

00:00:45.940 --> 00:00:46.040
<v Brian Okken>send

00:00:46.120 --> 00:00:46.360
<v Brian Okken>to Michael,

00:00:46.540 --> 00:00:47.380
<v Brian Okken>but if you have suggestions,

00:00:47.640 --> 00:00:48.120
<v Brian Okken>send to either

00:00:48.260 --> 00:00:49.840
<v Brian Okken>of us and the

00:00:50.879 --> 00:00:52.160
<v Brian Okken>info is on the show

00:00:52.260 --> 00:00:52.400
<v Brian Okken>notes,

00:00:52.680 --> 00:00:54.380
<v Brian Okken>but we're on Mastodon

00:00:54.540 --> 00:00:55.020
<v Brian Okken>and

00:00:55.040 --> 00:01:02.740
<v Brian Okken>um and blue sky and all the all the places so um also if you're listening to this and would like to

00:01:03.020 --> 00:01:08.620
<v Brian Okken>like see what we look like or watch the watch the stuff or show even show up live you can go to

00:01:08.980 --> 00:01:15.060
<v Brian Okken>pythonbytes.fm live where there's a link to join the audience and during the during the recording

00:01:15.440 --> 00:01:20.700
<v Brian Okken>a lot of people sometimes people drop in questions and we'll answer them on the show that's fun and

00:01:20.720 --> 00:01:21.180
<v Brian Okken>And lastly,

00:01:21.860 --> 00:01:24.300
<v Brian Okken>you don't have to take notes because all of these,

00:01:24.880 --> 00:01:26.200
<v Brian Okken>all of the links are,

00:01:26.620 --> 00:01:26.980
<v Brian Okken>the links

00:01:27.040 --> 00:01:31.060
<v Brian Okken>are in the show notes, but the links and extra information are sent out in the email newsletter.

00:01:31.500 --> 00:01:37.280
<v Brian Okken>So you can subscribe at pythonbytes.fm and we will send you a whole bunch of information.

00:01:37.740 --> 00:01:39.740
<v Brian Okken>If you don't quite understand what we're talking about,

00:01:39.920 --> 00:01:41.200
<v Brian Okken>there's some background information

00:01:41.280 --> 00:01:42.920
<v Brian Okken>there too that will fill you in.

00:01:43.240 --> 00:01:43.580
<v Brian Okken>With that,

00:01:43.900 --> 00:01:44.720
<v Brian Okken>let's talk about something dumb.

00:01:45.020 --> 00:01:45.960
<v Michael Kennedy>Dumb ways to die.

00:01:46.460 --> 00:01:48.080
<v Michael Kennedy>Dumb ways for open source projects to die.

00:01:48.380 --> 00:01:48.540
<v Michael Kennedy>Oh,

00:01:48.700 --> 00:01:49.880
<v Michael Kennedy>and let me count the ways.

00:01:50.100 --> 00:01:51.660
<v Michael Kennedy>This one is by Andrew Nesbitt.

00:01:51.790 --> 00:01:52.420
<v Michael Kennedy>It's an article.

00:01:52.820 --> 00:01:55.500
<v Michael Kennedy>It's a taxonomy, I suppose, is the way you would put it.

00:01:55.700 --> 00:01:56.300
<v Michael Kennedy>Pretty interesting.

00:01:56.740 --> 00:02:01.980
<v Michael Kennedy>I think it creates some interesting ways to talk about and think about just open source

00:02:02.420 --> 00:02:04.140
<v Michael Kennedy>projects and supply chain,

00:02:04.460 --> 00:02:07.020
<v Michael Kennedy>mostly not security, although a little bit security,

00:02:07.250 --> 00:02:08.660
<v Michael Kennedy>but also just

00:02:09.399 --> 00:02:09.679
<v Michael Kennedy>stability,

00:02:10.110 --> 00:02:10.259
<v Michael Kennedy>right?

00:02:10.580 --> 00:02:15.120
<v Michael Kennedy>So this taxonomy is broken into a two-level tree.

00:02:15.250 --> 00:02:19.280
<v Michael Kennedy>So there's things like the maintainer left and the maintainer is still there.

00:02:19.740 --> 00:02:20.680
<v Michael Kennedy>sabotage and capture,

00:02:20.910 --> 00:02:22.280
<v Michael Kennedy>the release pipeline broke and so on.

00:02:22.450 --> 00:02:23.960
<v Michael Kennedy>And for each one of those, there's a

00:02:24.080 --> 00:02:26.060
<v Michael Kennedy>bunch of sub items that are really good.

00:02:26.210 --> 00:02:28.380
<v Michael Kennedy>So for the maintainer left,

00:02:28.820 --> 00:02:29.900
<v Michael Kennedy>I'll give you a couple of

00:02:29.900 --> 00:02:30.920
<v Michael Kennedy>them. They're all pretty interesting.

00:02:31.280 --> 00:02:32.620
<v Michael Kennedy>So I won't read the whole article,

00:02:32.800 --> 00:02:33.540
<v Michael Kennedy>but I'll read off a few

00:02:33.550 --> 00:02:35.980
<v Michael Kennedy>of them so you'll get the sense and you can come back and use this as a resource.

00:02:36.280 --> 00:02:37.020
<v Michael Kennedy>So under the

00:02:37.300 --> 00:02:39.320
<v Michael Kennedy>maintainer left, we have the ghost maintainer,

00:02:39.560 --> 00:02:41.340
<v Michael Kennedy>the simple and most common case.

00:02:41.650 --> 00:02:42.740
<v Michael Kennedy>The last human commit

00:02:42.840 --> 00:02:43.640
<v Michael Kennedy>is some years ago.

00:02:43.980 --> 00:02:47.480
<v Michael Kennedy>Issues are accumulated unanswered. The repo is not archived,

00:02:47.750 --> 00:02:48.760
<v Michael Kennedy>so it doesn't show up in

00:02:48.720 --> 00:02:49.920
<v Michael Kennedy>any filter that would flag it.

00:02:50.220 --> 00:02:52.940
<v Michael Kennedy>Usually the maintainer just moved on and it wasn't important

00:02:53.030 --> 00:02:55.200
<v Michael Kennedy>enough to formally hand it over or shut it down.

00:02:55.390 --> 00:02:56.220
<v Michael Kennedy>And it goes on a bit.

00:02:56.500 --> 00:02:57.240
<v Michael Kennedy>And by the way,

00:02:58.650 --> 00:03:00.900
<v Michael Kennedy>Andrew references this weekend that Bernie research,

00:03:01.350 --> 00:03:01.620
<v Michael Kennedy>he did,

00:03:02.040 --> 00:03:03.900
<v Michael Kennedy>and basically went through

00:03:04.050 --> 00:03:09.220
<v Michael Kennedy>different packaging platforms or services or whatever, like PyPI or npm and so on,

00:03:09.430 --> 00:03:09.740
<v Michael Kennedy>and said

00:03:09.790 --> 00:03:14.360
<v Michael Kennedy>like, well, which one of these are in an active state, a dormant state, a dead state, unknown,

00:03:14.800 --> 00:03:16.060
<v Michael Kennedy>and has a percent dead.

00:03:16.110 --> 00:03:18.740
<v Michael Kennedy>And PyPI actually has a very low percent dead.

00:03:19.160 --> 00:03:20.000
<v Michael Kennedy>Conda is better.

00:03:20.520 --> 00:03:21.000
<v Michael Kennedy>Maven is better.

00:03:21.130 --> 00:03:23.240
<v Michael Kennedy>But everything else is worse, like quite a few others.

00:03:23.290 --> 00:03:24.280
<v Michael Kennedy>So that's pretty interesting.

00:03:24.580 --> 00:03:26.800
<v Michael Kennedy>Yeah, it goes up there at like 20%.

00:03:27.020 --> 00:03:28.100
<v Michael Kennedy>I know, that's crazy,

00:03:28.280 --> 00:03:28.360
<v Michael Kennedy>right?

00:03:28.620 --> 00:03:31.540
<v Michael Kennedy>So it's kind of like, let's take those and then categorize.

00:03:31.620 --> 00:03:34.020
<v Michael Kennedy>So we went through and did a bunch of research on these and said,

00:03:34.090 --> 00:03:34.180
<v Michael Kennedy>okay,

00:03:34.380 --> 00:03:35.760
<v Michael Kennedy>well, why is it dead?

00:03:36.360 --> 00:03:37.480
<v Michael Kennedy>What ways can it be dead?

00:03:37.740 --> 00:03:38.680
<v Michael Kennedy>So there's the, just,

00:03:38.830 --> 00:03:39.560
<v Michael Kennedy>they ghosted, right?

00:03:39.560 --> 00:03:40.600
<v Michael Kennedy>The maintainer just ghosted.

00:03:40.620 --> 00:03:40.840
<v Michael Kennedy>It's fine.

00:03:40.900 --> 00:03:42.120
<v Michael Kennedy>There could be the corporate orphan.

00:03:42.360 --> 00:03:44.700
<v Michael Kennedy>A company built and open sourced it with a team to run it.

00:03:44.780 --> 00:03:48.200
<v Michael Kennedy>and then pivoted or laid off the people and nobody updated it because they just,

00:03:48.420 --> 00:03:48.520
<v Michael Kennedy>well,

00:03:48.700 --> 00:03:49.020
<v Michael Kennedy>they're fired.

00:03:49.400 --> 00:03:50.200
<v Michael Kennedy>That's an interesting one.

00:03:50.400 --> 00:03:51.900
<v Michael Kennedy>There's the thesis orphan.

00:03:52.260 --> 00:03:55.140
<v Michael Kennedy>I created this project as a PhD or master's thesis,

00:03:55.400 --> 00:03:56.960
<v Michael Kennedy>and then I graduated and I'm done.

00:03:57.860 --> 00:03:58.940
<v Michael Kennedy>I'm not messing with it anymore.

00:03:59.540 --> 00:04:00.620
<v Michael Kennedy>I actually didn't enjoy it anyway.

00:04:01.040 --> 00:04:01.540
<v Michael Kennedy>Funding cliff,

00:04:01.760 --> 00:04:02.120
<v Michael Kennedy>similar,

00:04:02.440 --> 00:04:06.520
<v Michael Kennedy>like it has a grant or an NSF grant or something like that.

00:04:06.780 --> 00:04:08.200
<v Michael Kennedy>And then when the money's gone,

00:04:08.580 --> 00:04:09.460
<v Michael Kennedy>stop and so on.

00:04:09.680 --> 00:04:10.680
<v Michael Kennedy>Let's go on the next category.

00:04:10.860 --> 00:04:12.320
<v Michael Kennedy>So this one's also really common.

00:04:12.400 --> 00:04:14.820
<v Michael Kennedy>The maintainer's still there, but there's the burnout plateau,

00:04:15.260 --> 00:04:16.900
<v Michael Kennedy>still active by any metric you'd run.

00:04:17.120 --> 00:04:21.320
<v Michael Kennedy>Typo fixes and dependency bumps get merged with the occasional thanks on an issue,

00:04:21.720 --> 00:04:28.000
<v Michael Kennedy>but anything that needs actual design work or serious debugging is open indefinitely because they're just done.

00:04:29.140 --> 00:04:29.800
<v Michael Kennedy>Custody battle,

00:04:30.740 --> 00:04:31.960
<v Michael Kennedy>two maintainers fighting over it.

00:04:32.320 --> 00:04:33.460
<v Michael Kennedy>Toxic gatekeeping,

00:04:33.680 --> 00:04:36.640
<v Michael Kennedy>you know, the person in charge of it just doesn't really want to maintain it,

00:04:36.760 --> 00:04:38.840
<v Michael Kennedy>but also to all new incoming work.

00:04:39.120 --> 00:04:40.780
<v Michael Kennedy>That happens a lot, I think, actually.

00:04:40.960 --> 00:04:41.980
<v Michael Kennedy>Yeah, I think so.

00:04:42.960 --> 00:04:44.380
<v Michael Kennedy>there's the sabotage and capture.

00:04:44.960 --> 00:04:45.800
<v Michael Kennedy>Captured maintainer.

00:04:46.100 --> 00:04:49.000
<v Michael Kennedy>Commit or publish access ends up with someone hostile.

00:04:49.320 --> 00:04:51.280
<v Michael Kennedy>XZ is an elaborate version.

00:04:51.400 --> 00:04:53.440
<v Michael Kennedy>Remember that two-year social engineering campaign

00:04:53.920 --> 00:04:57.520
<v Michael Kennedy>that eventually talked that person into letting the person take over,

00:04:57.550 --> 00:04:59.700
<v Michael Kennedy>but they were actually a state actor,

00:05:00.030 --> 00:05:00.620
<v Michael Kennedy>we believe.

00:05:00.820 --> 00:05:01.260
<v Michael Kennedy>Addison Ware.

00:05:01.530 --> 00:05:04.320
<v Michael Kennedy>And then we've also covered the protest where, this is bad,

00:05:04.620 --> 00:05:05.460
<v Michael Kennedy>seems to be more JavaScript,

00:05:05.800 --> 00:05:06.280
<v Michael Kennedy>but there it is.

00:05:06.540 --> 00:05:09.720
<v Michael Kennedy>The legitimate maintainer deliberately breaks their own package.

00:05:10.140 --> 00:05:13.040
<v Michael Kennedy>Colors and Faker were sabotaged by their author in 2022.

00:05:14.440 --> 00:05:16.220
<v Michael Kennedy>LeftPad was unpublished entirely.

00:05:16.820 --> 00:05:19.200
<v Michael Kennedy>Remember that one was pretty bad.

00:05:19.460 --> 00:05:19.900
<v Brian Okken>That was funny.

00:05:20.660 --> 00:05:23.340
<v Michael Kennedy>Why is there an entire package that just LeftPad's a string?

00:05:23.450 --> 00:05:24.340
<v Michael Kennedy>Like, that's all it does.

00:05:24.700 --> 00:05:26.940
<v Michael Kennedy>You know, it's just too fine-grained.

00:05:27.180 --> 00:05:27.380
<v Michael Kennedy>All right.

00:05:27.750 --> 00:05:29.920
<v Michael Kennedy>The release pipeline broke, a bunch of stuff around that.

00:05:30.160 --> 00:05:30.960
<v Michael Kennedy>Force majeure,

00:05:31.300 --> 00:05:32.180
<v Michael Kennedy>like, sanctions.

00:05:32.520 --> 00:05:34.440
<v Michael Kennedy>Some people's accounts have been shut down or blocked

00:05:34.720 --> 00:05:37.360
<v Michael Kennedy>because they've been frozen under export controls

00:05:37.410 --> 00:05:38.360
<v Michael Kennedy>or other things like that,

00:05:38.500 --> 00:05:40.100
<v Michael Kennedy>or taken down because of DMCA.

00:05:40.500 --> 00:05:41.340
<v Michael Kennedy>The world moved on.

00:05:41.350 --> 00:05:44.340
<v Michael Kennedy>This one we know well from the Python world.

00:05:44.570 --> 00:05:46.060
<v Michael Kennedy>The platform got stranded,

00:05:46.540 --> 00:05:48.680
<v Michael Kennedy>like chained to an end-of-the-life runtime.

00:05:49.520 --> 00:05:50.440
<v Michael Kennedy>Python 2 only,

00:05:50.800 --> 00:05:52.660
<v Michael Kennedy>or requires a certain node version or whatever.

00:05:53.180 --> 00:05:55.420
<v Michael Kennedy>And related to that is the transit of death.

00:05:55.590 --> 00:05:57.660
<v Michael Kennedy>So the project's fine, the maintainer's present willing,

00:05:57.820 --> 00:06:00.320
<v Michael Kennedy>but something two or three levels down in its own dependency tree

00:06:00.740 --> 00:06:02.140
<v Michael Kennedy>can't be swapped out without a rewrite,

00:06:02.520 --> 00:06:03.580
<v Michael Kennedy>like think Python 2,

00:06:03.950 --> 00:06:04.060
<v Michael Kennedy>right?

00:06:04.240 --> 00:06:06.180
<v Michael Kennedy>Why did a lot of stuff not upgrade to Python 3?

00:06:06.680 --> 00:06:09.780
<v Michael Kennedy>because something it depended upon was Python 2 only.

00:06:09.830 --> 00:06:11.420
<v Michael Kennedy>And so there's no way to get there.

00:06:11.430 --> 00:06:11.920
<v Michael Kennedy>You know what I mean?

00:06:12.160 --> 00:06:12.300
<v Brian Okken>Yeah.

00:06:12.500 --> 00:06:13.320
<v Michael Kennedy>API rug pull.

00:06:13.480 --> 00:06:14.520
<v Michael Kennedy>I've seen this like, hey,

00:06:14.670 --> 00:06:15.320
<v Michael Kennedy>I depended upon,

00:06:15.320 --> 00:06:16.220
<v Michael Kennedy>I wrote something that wraps,

00:06:16.620 --> 00:06:19.060
<v Michael Kennedy>like let's say the Reddit's API or Twitter API.

00:06:19.230 --> 00:06:20.700
<v Michael Kennedy>And then those APIs go away.

00:06:20.780 --> 00:06:21.340
<v Michael Kennedy>And guess what?

00:06:21.580 --> 00:06:23.080
<v Michael Kennedy>Your app or library doesn't work.

00:06:23.440 --> 00:06:24.260
<v Michael Kennedy>Or it's just superseded,

00:06:24.640 --> 00:06:24.720
<v Michael Kennedy>right?

00:06:24.880 --> 00:06:27.000
<v Michael Kennedy>Like there's no reason to do a thing

00:06:27.180 --> 00:06:29.500
<v Michael Kennedy>if it's now part of the language or something like that.

00:06:29.780 --> 00:06:30.200
<v Michael Kennedy>Project split.

00:06:31.660 --> 00:06:31.780
<v Michael Kennedy>Yeah,

00:06:32.060 --> 00:06:32.660
<v Michael Kennedy>that's pretty much it.

00:06:32.980 --> 00:06:33.280
<v Michael Kennedy>Licensing.

00:06:33.740 --> 00:06:34.160
<v Michael Kennedy>So what do you think?

00:06:34.220 --> 00:06:34.760
<v Michael Kennedy>That's pretty neat, right?

00:06:34.940 --> 00:06:35.480
<v Brian Okken>Yeah.

00:06:36.060 --> 00:06:40.800
<v Brian Okken>And one of the things that's unfortunate is because a lot of the open source,

00:06:40.980 --> 00:06:41.460
<v Brian Okken>I don't know,

00:06:41.620 --> 00:06:43.400
<v Brian Okken>there's a lot of projects,

00:06:43.830 --> 00:06:52.920
<v Brian Okken>or there at least have been enough projects that has been painful that have had a lot of users and like something happened and it's not maintained anymore.

00:06:53.180 --> 00:06:57.480
<v Brian Okken>And it's not, there isn't a really good way to transition away or to something else.

00:06:57.840 --> 00:06:58.780
<v Brian Okken>And it gets messy.

00:06:59.920 --> 00:07:00.860
<v Brian Okken>I mean, we had, I had a,

00:07:01.180 --> 00:07:01.320
<v Brian Okken>like,

00:07:01.730 --> 00:07:03.160
<v Brian Okken>even at work,

00:07:03.330 --> 00:07:05.000
<v Brian Okken>we had a project that we were depending on

00:07:05.070 --> 00:07:06.840
<v Brian Okken>that was by Python 2 only.

00:07:07.420 --> 00:07:11.500
<v Brian Okken>And it's one of those things of, like, we could have thrown money at it and just had

00:07:11.730 --> 00:07:12.160
<v Brian Okken>a corporate,

00:07:12.400 --> 00:07:14.540
<v Brian Okken>you know, a corporate entity could convert it.

00:07:14.770 --> 00:07:16.400
<v Brian Okken>But we waited until a university,

00:07:16.780 --> 00:07:18.360
<v Brian Okken>some university students did it.

00:07:18.600 --> 00:07:18.740
<v Brian Okken>But,

00:07:19.020 --> 00:07:20.000
<v Brian Okken>you know, that seems dumb.

00:07:20.260 --> 00:07:21.340
<v Brian Okken>Why not throw money at it?

00:07:21.420 --> 00:07:23.840
<v Brian Okken>I think for a lot of, a lot of these.

00:07:23.890 --> 00:07:24.800
<v Michael Kennedy>You could just pay the person,

00:07:25.240 --> 00:07:26.640
<v Michael Kennedy>hey, I know it's on this old version,

00:07:26.900 --> 00:07:27.840
<v Michael Kennedy>but would $5,000

00:07:28.160 --> 00:07:29.480
<v Michael Kennedy>make it work on the new version too?

00:07:29.620 --> 00:07:30.920
<v Michael Kennedy>A lot of times people say, heck yeah.

00:07:31.300 --> 00:07:33.500
<v Michael Kennedy>Or I've wanted to do it, but I don't have the time or energy,

00:07:33.740 --> 00:07:33.820
<v Michael Kennedy>right?

00:07:34.080 --> 00:07:38.980
<v Brian Okken>Or get your own people to do the conversion work, take it over.

00:07:39.580 --> 00:07:43.800
<v Michael Kennedy>Honestly, I'd rather see companies support the maintainers and get it upgraded.

00:07:44.020 --> 00:07:45.320
<v Michael Kennedy>But if that's not an option,

00:07:45.680 --> 00:07:46.900
<v Michael Kennedy>Claude could probably upgrade it too.

00:07:48.040 --> 00:07:50.660
<v Brian Okken>Well, I mean, in the case where somebody just moved on,

00:07:50.760 --> 00:07:52.680
<v Brian Okken>they're not interested in the project anymore,

00:07:53.560 --> 00:07:56.600
<v Brian Okken>throwing money at them is probably not the right option.

00:07:57.640 --> 00:07:58.160
<v Michael Kennedy>Yeah, that's true.

00:07:58.280 --> 00:07:59.260
<v Michael Kennedy>It depends on the situation.

00:07:59.340 --> 00:08:02.960
<v Michael Kennedy>I'll give you two examples of these in the Python space that both make me say, well,

00:08:03.040 --> 00:08:05.440
<v Michael Kennedy>one's in the front end CSS space is Bulma.

00:08:05.710 --> 00:08:06.620
<v Michael Kennedy>I really like Bulma.

00:08:06.980 --> 00:08:08.000
<v Michael Kennedy>Super cool project.

00:08:08.280 --> 00:08:11.120
<v Michael Kennedy>It sells itself as a modern CSS framework and all these things.

00:08:11.640 --> 00:08:13.580
<v Michael Kennedy>But let's see, when was the last release?

00:08:14.280 --> 00:08:15.740
<v Michael Kennedy>Oh yeah, about a year and a half ago.

00:08:16.000 --> 00:08:16.300
<v Brian Okken>Really?

00:08:16.760 --> 00:08:16.920
<v Michael Kennedy>Weird.

00:08:17.300 --> 00:08:18.080
<v Michael Kennedy>Which is really sad.

00:08:18.220 --> 00:08:21.360
<v Michael Kennedy>Like there was a commit for something super,

00:08:21.540 --> 00:08:22.460
<v Michael Kennedy>like, so this,

00:08:22.640 --> 00:08:23.840
<v Michael Kennedy>I think this is an absolute

00:08:24.080 --> 00:08:25.080
<v Michael Kennedy>telltale sign of this.

00:08:25.160 --> 00:08:27.280
<v Michael Kennedy>So people out there thinking about projects they want to depend upon.

00:08:27.720 --> 00:08:29.660
<v Michael Kennedy>This is a mega sign for it.

00:08:29.820 --> 00:08:30.940
<v Michael Kennedy>So three months ago,

00:08:31.420 --> 00:08:33.860
<v Michael Kennedy>the maintainer of this fixed issue 4000.

00:08:34.340 --> 00:08:35.080
<v Michael Kennedy>What is issue 4000?

00:08:35.659 --> 00:08:38.400
<v Michael Kennedy>The footer has a broken logo on the website.

00:08:43.200 --> 00:08:45.740
<v Michael Kennedy>Meanwhile, it's got 50,000 GitHub stars,

00:08:46.220 --> 00:08:47.480
<v Michael Kennedy>4,000 forks.

00:08:47.820 --> 00:08:48.420
<v Michael Kennedy>And that's fine.

00:08:48.560 --> 00:08:49.040
<v Michael Kennedy>Like this guy,

00:08:49.420 --> 00:08:51.200
<v Michael Kennedy>he doesn't owe the world anything.

00:08:51.660 --> 00:08:52.860
<v Michael Kennedy>If he built it, it's amazing.

00:08:52.940 --> 00:08:54.020
<v Michael Kennedy>I actually use this.

00:08:54.160 --> 00:08:59.120
<v Michael Kennedy>I love Bulma and I decided to keep using it even though it's basically dead in the water

00:08:59.500 --> 00:09:00.820
<v Michael Kennedy>because I looked around and all the other stuff.

00:09:00.920 --> 00:09:02.920
<v Michael Kennedy>It's like Tailwind, but way less complicated.

00:09:03.420 --> 00:09:04.640
<v Michael Kennedy>And it's going to keep working.

00:09:04.710 --> 00:09:06.860
<v Michael Kennedy>And in five years, I'll find something else.

00:09:06.930 --> 00:09:07.340
<v Michael Kennedy>But right now I

00:09:07.340 --> 00:09:08.260
<v Brian Okken>could see it though. So

00:09:08.260 --> 00:09:10.140
<v Brian Okken>you've got 10 minutes to work. Maybe

00:09:10.140 --> 00:09:12.020
<v Brian Okken>you've got a half an hour on the weekend to work on it. You

00:09:12.020 --> 00:09:16.640
<v Brian Okken>open this up and you see 346 issues and 175 pull requests.

00:09:17.320 --> 00:09:17.400
<v Brian Okken>I

00:09:17.400 --> 00:09:20.300
<v Brian Okken>just close my laptop and go outside and mow the lawn or something.

00:09:20.460 --> 00:09:20.600
<v Brian Okken>I

00:09:20.600 --> 00:09:20.840
<v Brian Okken>know.

00:09:22.840 --> 00:09:22.940
<v Michael Kennedy>No,

00:09:23.060 --> 00:09:23.340
<v Michael Kennedy>I know.

00:09:23.400 --> 00:09:25.160
<v Michael Kennedy>And so the guy doesn't owe the world anything.

00:09:25.460 --> 00:09:27.040
<v Michael Kennedy>He created something cool and that's fine.

00:09:27.120 --> 00:09:29.020
<v Michael Kennedy>He doesn't have to do, but there,

00:09:29.200 --> 00:09:30.200
<v Michael Kennedy>here's something that bugs me.

00:09:30.200 --> 00:09:32.140
<v Michael Kennedy>And I would just like to put this out there for, for people.

00:09:32.280 --> 00:09:32.740
<v Michael Kennedy>And you know, I,

00:09:33.080 --> 00:09:33.900
<v Michael Kennedy>if I have projects like this,

00:09:34.080 --> 00:09:36.080
<v Michael Kennedy>I consider myself same and nothing.

00:09:36.170 --> 00:09:37.080
<v Michael Kennedy>I have nothing of the scale.

00:09:37.280 --> 00:09:38.080
<v Michael Kennedy>But for example,

00:09:38.340 --> 00:09:39.560
<v Michael Kennedy>if I go to the pull request section,

00:09:39.740 --> 00:09:40.440
<v Michael Kennedy>I understand what you're saying,

00:09:40.540 --> 00:09:41.200
<v Michael Kennedy>Brian, like, oh God,

00:09:41.360 --> 00:09:42.280
<v Michael Kennedy>there's so much work here,

00:09:42.600 --> 00:09:44.320
<v Michael Kennedy>but he should put some kind of message

00:09:44.580 --> 00:09:45.020
<v Michael Kennedy>that says,

00:09:45.420 --> 00:09:45.840
<v Michael Kennedy>Hey, listen,

00:09:46.340 --> 00:09:47.540
<v Michael Kennedy>I just can't right now.

00:09:47.910 --> 00:09:49.840
<v Michael Kennedy>So please don't submit any PR.

00:09:49.970 --> 00:09:52.980
<v Michael Kennedy>I don't go do work that I won't even look at.

00:09:53.160 --> 00:09:57.600
<v Michael Kennedy>So if you look at the PRs, like there's one, one on February 20th, one on January 20th,

00:09:57.780 --> 00:10:03.600
<v Michael Kennedy>and there's 175 PRs without even a response to them going back,

00:10:04.040 --> 00:10:04.300
<v Michael Kennedy>you know,

00:10:04.640 --> 00:10:04.720
<v Michael Kennedy>way,

00:10:05.060 --> 00:10:05.420
<v Michael Kennedy>I don't know,

00:10:05.540 --> 00:10:06.360
<v Michael Kennedy>how far do they go back?

00:10:06.600 --> 00:10:07.860
<v Michael Kennedy>You got a page to it, right?

00:10:08.160 --> 00:10:09.340
<v Michael Kennedy>Like 2018.

00:10:10.260 --> 00:10:11.340
<v Michael Kennedy>You know what I mean? And so

00:10:11.440 --> 00:10:15.120
<v Michael Kennedy>I just feel like it kind of bugs me that there's all these people out in the world go, oh, I'm going

00:10:15.120 --> 00:10:16.120
<v Michael Kennedy>to help improve this project.

00:10:16.400 --> 00:10:18.860
<v Michael Kennedy>I'm like, I'm going to add the view CLI. Like, no, you're not,

00:10:18.940 --> 00:10:21.900
<v Michael Kennedy>because it's not going to get responded to and so on.

00:10:21.900 --> 00:10:25.460
<v Michael Kennedy>And also there's 36 people sponsoring the project,

00:10:25.610 --> 00:10:27.560
<v Michael Kennedy>like paying money monthly to support it.

00:10:27.660 --> 00:10:29.360
<v Michael Kennedy>Like, I just feel like at some point you're like,

00:10:29.640 --> 00:10:31.340
<v Michael Kennedy>just please use it, please enjoy it,

00:10:31.540 --> 00:10:33.460
<v Michael Kennedy>but don't do extra work to it

00:10:33.510 --> 00:10:36.080
<v Michael Kennedy>because I'm not in a space where I want to

00:10:36.200 --> 00:10:37.500
<v Michael Kennedy>or able to work on this right now.

00:10:37.810 --> 00:10:38.480
<v Michael Kennedy>You know, I don't know.

00:10:38.570 --> 00:10:39.380
<v Michael Kennedy>What are you thinking on that?

00:10:39.580 --> 00:10:41.920
<v Brian Okken>Well, I think that sometimes you're optimistic

00:10:41.920 --> 00:10:45.700
<v Brian Okken>when you originally like write up a contributor guideline,

00:10:46.220 --> 00:10:47.620
<v Brian Okken>but need to update it to say,

00:10:48.140 --> 00:10:48.200
<v Brian Okken>Yeah,

00:10:48.420 --> 00:10:50.540
<v Brian Okken>I'm not going to accept contributions,

00:10:50.790 --> 00:10:51.180
<v Brian Okken>I guess.

00:10:51.880 --> 00:10:52.200
<v Michael Kennedy>Yeah, exactly.

00:10:52.350 --> 00:10:54.320
<v Michael Kennedy>I think one sentence on the readme, like, hey,

00:10:54.520 --> 00:10:56.720
<v Michael Kennedy>look, I just can't, like a big, bold, I can't right now,

00:10:56.880 --> 00:10:57.000
<v Michael Kennedy>folks.

00:10:57.500 --> 00:10:58.900
<v Michael Kennedy>So please just hold your thoughts,

00:10:59.530 --> 00:10:59.860
<v Michael Kennedy>you know,

00:11:00.160 --> 00:11:00.720
<v Michael Kennedy>and so on.

00:11:01.000 --> 00:11:02.180
<v Michael Kennedy>Because anyway,

00:11:02.450 --> 00:11:05.440
<v Michael Kennedy>so the other one is disk cache, which I use and love.

00:11:05.640 --> 00:11:05.820
<v Michael Kennedy>What?

00:11:06.320 --> 00:11:07.100
<v Michael Kennedy>That's abandoned?

00:11:07.820 --> 00:11:08.880
<v Michael Kennedy>Last commit two years ago.

00:11:09.120 --> 00:11:10.060
<v Michael Kennedy>Maybe it just works, though.

00:11:10.480 --> 00:11:10.680
<v Michael Kennedy>Yeah.

00:11:11.160 --> 00:11:11.780
<v Michael Kennedy>But here's the thing.

00:11:12.220 --> 00:11:12.620
<v Michael Kennedy>Well,

00:11:13.020 --> 00:11:14.240
<v Michael Kennedy>I mean, there's 20 pull requests,

00:11:14.580 --> 00:11:15.940
<v Michael Kennedy>50 issues, no responses.

00:11:16.580 --> 00:11:18.400
<v Michael Kennedy>The guy Grant, I don't know him.

00:11:18.460 --> 00:11:19.220
<v Michael Kennedy>I don't know his background.

00:11:19.360 --> 00:11:22.220
<v Michael Kennedy>But I noticed that he was hired by OpenAI

00:11:22.720 --> 00:11:25.620
<v Michael Kennedy>almost exactly just a little bit after the last release.

00:11:26.300 --> 00:11:29.160
<v Michael Kennedy>So he's just, I don't know if this was captured in the taxonomy,

00:11:29.420 --> 00:11:30.360
<v Michael Kennedy>but like I've been,

00:11:30.580 --> 00:11:31.140
<v Michael Kennedy>it is actually,

00:11:31.580 --> 00:11:32.580
<v Michael Kennedy>I can't remember which one,

00:11:32.700 --> 00:11:34.480
<v Michael Kennedy>but there's like one of them where, hey,

00:11:34.560 --> 00:11:36.780
<v Michael Kennedy>if you get hired at a company that doesn't let you do open source,

00:11:37.080 --> 00:11:39.320
<v Michael Kennedy>your projects kind of like de facto die,

00:11:39.760 --> 00:11:40.900
<v Michael Kennedy>unless you can get someone else to do it.

00:11:41.040 --> 00:11:41.520
<v Michael Kennedy>You know what I mean?

00:11:42.359 --> 00:11:46.540
<v Brian Okken>Or you did open source to try to be well-known enough

00:11:46.540 --> 00:11:47.660
<v Brian Okken>hired by OpenAI.

00:11:48.260 --> 00:11:49.700
<v Michael Kennedy>I'm not saying there's a negative outcome.

00:11:49.940 --> 00:11:51.780
<v Michael Kennedy>Probably an amazing outcome for Grant.

00:11:52.100 --> 00:11:53.520
<v Michael Kennedy>So congrats to him.

00:11:53.720 --> 00:11:55.840
<v Michael Kennedy>And again, he doesn't know the world or anything. I think this is a little

00:11:55.940 --> 00:12:00.760
<v Michael Kennedy>bit different because it's really a wrapper on SQLite and SQLite is constantly being maintained

00:12:00.940 --> 00:12:01.380
<v Michael Kennedy>and updated.

00:12:01.540 --> 00:12:03.780
<v Michael Kennedy>So I feel less worried about it.

00:12:04.140 --> 00:12:04.240
<v Michael Kennedy>Anyway,

00:12:04.420 --> 00:12:06.880
<v Michael Kennedy>dumb ways for open source projects that I,

00:12:07.140 --> 00:12:08.020
<v Michael Kennedy>there's just two examples.

00:12:08.460 --> 00:12:09.100
<v Michael Kennedy>I think this is important,

00:12:09.260 --> 00:12:10.260
<v Michael Kennedy>especially for newcomers to open

00:12:10.460 --> 00:12:11.220
<v Michael Kennedy>source and Python.

00:12:11.580 --> 00:12:14.960
<v Michael Kennedy>When you add something to your project as a requirement,

00:12:15.620 --> 00:12:16.280
<v Michael Kennedy>you should know,

00:12:16.400 --> 00:12:21.380
<v Brian Okken>the consequences of doing that right um i want to add one more thing there's a there are a lot of

00:12:21.500 --> 00:12:26.500
<v Brian Okken>packages that really don't need that a lot that many updates um even if even if they have issues

00:12:26.780 --> 00:12:31.020
<v Brian Okken>in pull requests they might be just maybe the maintainer's not that great at saying you know i

00:12:31.160 --> 00:12:37.720
<v Brian Okken>don't feel like it or something um but one way to keep it like to to keep it noted that it's alive

00:12:38.000 --> 00:12:43.580
<v Brian Okken>is once a year update your tests to the new python version um then it's at least a year old and you

00:12:43.520 --> 00:12:45.380
<v Brian Okken>know it's being tested on the latest Python.

00:12:45.880 --> 00:12:48.300
<v Brian Okken>And that's the bare minimum,

00:12:48.500 --> 00:12:48.780
<v Brian Okken>I think.

00:12:49.040 --> 00:12:49.220
<v Michael Kennedy>Yeah.

00:12:49.540 --> 00:12:51.260
<v Michael Kennedy>Change your classifier.

00:12:51.420 --> 00:12:52.260
<v Michael Kennedy>What are those things called?

00:12:52.460 --> 00:12:53.780
<v Michael Kennedy>Your classifier to just say,

00:12:54.290 --> 00:12:55.740
<v Michael Kennedy>take out the old Python, put in the new Python,

00:12:56.140 --> 00:12:57.460
<v Michael Kennedy>something like that. You have a classifier in

00:12:57.540 --> 00:12:58.380
<v Michael Kennedy>here and you're good to go.

00:12:58.670 --> 00:13:00.260
<v Michael Kennedy>Yeah. But projects can be done.

00:13:00.450 --> 00:13:01.500
<v Michael Kennedy>They definitely can be done.

00:13:01.900 --> 00:13:02.020
<v Michael Kennedy>It's

00:13:02.040 --> 00:13:02.200
<v Michael Kennedy>just,

00:13:02.410 --> 00:13:05.540
<v Michael Kennedy>they don't need more changes. But I think it's all pretty interesting,

00:13:05.860 --> 00:13:07.280
<v Michael Kennedy>but let's take us on

00:13:07.300 --> 00:13:08.840
<v Michael Kennedy>to more packaging talk.

00:13:10.580 --> 00:13:10.780
<v Brian Okken>Yeah.

00:13:11.100 --> 00:13:11.260
<v Brian Okken>Okay.

00:13:11.740 --> 00:13:12.260
<v Brian Okken>So the,

00:13:12.800 --> 00:13:14.840
<v Brian Okken>I wanted to talk, this is a brief one, but,

00:13:15.180 --> 00:13:15.380
<v Brian Okken>um,

00:13:15.820 --> 00:13:21.040
<v Brian Okken>this is a Tim Hopper article on how to create a PyLock Toml file.

00:13:21.680 --> 00:13:21.980
<v Brian Okken>And,

00:13:22.340 --> 00:13:23.440
<v Brian Okken>um, I just kind of forgot

00:13:23.660 --> 00:13:26.340
<v Brian Okken>that these were sort of rolling in at different times.

00:13:26.560 --> 00:13:27.600
<v Brian Okken>And as of May,

00:13:27.980 --> 00:13:28.240
<v Brian Okken>um,

00:13:28.480 --> 00:13:30.380
<v Brian Okken>now of 2026,

00:13:31.060 --> 00:13:31.340
<v Brian Okken>there's

00:13:31.360 --> 00:13:40.300
<v Brian Okken>now three ways to create these these guys so uh he he covers um using uv pip and pdm and notes that

00:13:40.740 --> 00:13:47.220
<v Brian Okken>uv is the only one that says it's in stable status uh the pip lock uh piloc tunnel generation

00:13:47.360 --> 00:13:52.880
<v Brian Okken>is experimental and so is pdm experimental i didn't know pdm did it i'm not really a pdm user

00:13:53.420 --> 00:14:00.040
<v Brian Okken>um but the uh yeah just uh sort of sort of running down uh how to how to create lock files with the

00:13:59.980 --> 00:14:05.280
<v Brian Okken>all these tools and it's kind of just a general neat tutorial with the

00:14:05.480 --> 00:14:10.420
<v Brian Okken>recommendation of why not just use uv because it works the incantations a

00:14:10.500 --> 00:14:15.300
<v Brian Okken>little magic it's uv export --format by lock Tomo with an output of

00:14:15.440 --> 00:14:19.180
<v Brian Okken>pilot all hmm seems you're done I wonder if there's there are I think there's a

00:14:19.260 --> 00:14:22.320
<v Michael Kennedy>global config for uv I wonder if you could put it in there that'd be

00:14:22.400 --> 00:14:27.140
<v Brian Okken>interesting I don't know and if you the he also has apparently a companion page

00:14:27.160 --> 00:14:34.040
<v Brian Okken>of how to install and the how to install is the short version is use -r because

00:14:34.190 --> 00:14:38.900
<v Brian Okken>every they all the tools treat it like a requirements file so oh not completely

00:14:39.460 --> 00:14:45.200
<v Brian Okken>interesting no depths oh you know no dependencies okay anyway yeah just

00:14:45.820 --> 00:14:50.580
<v Brian Okken>creating by like toml files I'm and yeah it's kind of the way we were moving so

00:14:50.620 --> 00:14:51.140
<v Michael Kennedy>That's it.

00:14:51.320 --> 00:14:52.000
<v Michael Kennedy>It sure is.

00:14:52.560 --> 00:14:53.320
<v Michael Kennedy>Very interesting.

00:14:53.760 --> 00:14:53.920
<v Michael Kennedy>Now,

00:14:54.920 --> 00:14:56.580
<v Michael Kennedy>let's talk about lifeguard.

00:14:57.020 --> 00:14:57.840
<v Michael Kennedy>So lifeguard,

00:14:58.140 --> 00:15:00.480
<v Michael Kennedy>we've talked about... That was a good summer topic.

00:15:00.800 --> 00:15:01.240
<v Michael Kennedy>Exactly.

00:15:01.720 --> 00:15:03.980
<v Michael Kennedy>A lot of places, at least in the U.S.,

00:15:04.260 --> 00:15:08.940
<v Michael Kennedy>public pools open on Memorial Day and all the lifeguards go back to work and you need a lifeguard

00:15:09.180 --> 00:15:14.180
<v Michael Kennedy>job. And it's often a rite of passage of high school to work as a lifeguard.

00:15:14.520 --> 00:15:16.779
<v Michael Kennedy>So this works for

00:15:16.840 --> 00:15:17.720
<v Michael Kennedy>lazy imports.

00:15:17.880 --> 00:15:18.080
<v Michael Kennedy>Remember,

00:15:18.260 --> 00:15:19.480
<v Michael Kennedy>lazy imports are coming in Python,

00:15:20.040 --> 00:15:21.180
<v Michael Kennedy>which is going to be really nice.

00:15:21.760 --> 00:15:25.320
<v Michael Kennedy>And I was pretty interested in before, but then I did that work where,

00:15:25.660 --> 00:15:26.140
<v Michael Kennedy>and I wrote it up,

00:15:26.300 --> 00:15:27.340
<v Michael Kennedy>said, we talked about it here,

00:15:27.500 --> 00:15:32.260
<v Michael Kennedy>cutting Python web app memory by 31%. A lot of that had to do with

00:15:32.600 --> 00:15:37.160
<v Michael Kennedy>imports and changing imports and only using heavyweight libraries when they actually executed

00:15:37.250 --> 00:15:38.400
<v Michael Kennedy>the code that needed them.

00:15:38.660 --> 00:15:39.940
<v Michael Kennedy>But so lazy imports,

00:15:40.170 --> 00:15:40.300
<v Michael Kennedy>good,

00:15:40.690 --> 00:15:41.100
<v Michael Kennedy>I think.

00:15:41.520 --> 00:15:41.660
<v Michael Kennedy>However,

00:15:42.320 --> 00:15:43.900
<v Michael Kennedy>lazy imports also can have

00:15:43.920 --> 00:15:45.840
<v Michael Kennedy>incompatibilities in other issues.

00:15:46.280 --> 00:15:49.920
<v Michael Kennedy>So this lifeguard library will go through and find those issues.

00:15:50.320 --> 00:15:51.520
<v Michael Kennedy>It's, I don't know if we,

00:15:51.720 --> 00:15:54.360
<v Michael Kennedy>it's kind of an interesting juxtaposition.

00:15:54.660 --> 00:15:55.880
<v Michael Kennedy>It has 56 GitHub

00:15:56.080 --> 00:15:57.380
<v Michael Kennedy>stars. So it's kind of like brand new,

00:15:57.640 --> 00:16:00.160
<v Michael Kennedy>which is fine. It's just like a linter type thing made by

00:16:01.640 --> 00:16:01.820
<v Michael Kennedy>Facebook.

00:16:02.180 --> 00:16:06.900
<v Michael Kennedy>So it's probably something that meta used internally and they just open sourced, you

00:16:06.920 --> 00:16:07.880
<v Michael Kennedy>know, a couple months ago.

00:16:08.160 --> 00:16:08.760
<v Michael Kennedy>So that's all good.

00:16:09.120 --> 00:16:11.240
<v Michael Kennedy>Looks like it is a Rust based thing because it

00:16:11.200 --> 00:16:12.400
<v Michael Kennedy>as a cargo folder.

00:16:12.840 --> 00:16:15.020
<v Michael Kennedy>And that was two months ago when it was created.

00:16:15.020 --> 00:16:17.180
<v Michael Kennedy>I don't know when it actually came out public on GitHub,

00:16:17.400 --> 00:16:17.520
<v Michael Kennedy>right?

00:16:17.700 --> 00:16:18.780
<v Michael Kennedy>Because you can have a private repo

00:16:18.860 --> 00:16:20.800
<v Michael Kennedy>and then flip it to public at some point.

00:16:20.860 --> 00:16:21.060
<v Michael Kennedy>Anyway,

00:16:21.370 --> 00:16:22.700
<v Michael Kennedy>it says, what are lazy points?

00:16:22.840 --> 00:16:24.300
<v Michael Kennedy>We talked about that in ports.

00:16:24.740 --> 00:16:25.140
<v Michael Kennedy>But it says,

00:16:25.380 --> 00:16:27.180
<v Michael Kennedy>the idea is obviously,

00:16:27.560 --> 00:16:28.600
<v Michael Kennedy>especially in large code bases,

00:16:29.100 --> 00:16:29.160
<v Michael Kennedy>this

00:16:29.340 --> 00:16:32.160
<v Michael Kennedy>both increases startup time and lowers memory usage,

00:16:32.480 --> 00:16:32.540
<v Michael Kennedy>which

00:16:32.540 --> 00:16:32.740
<v Michael Kennedy>is great.

00:16:33.040 --> 00:16:33.280
<v Michael Kennedy>However,

00:16:33.840 --> 00:16:35.180
<v Michael Kennedy>sometimes it doesn't work

00:16:35.440 --> 00:16:38.400
<v Michael Kennedy>because there's certain Python patterns that

00:16:38.660 --> 00:16:40.620
<v Michael Kennedy>require these things to execute immediately.

00:16:40.880 --> 00:16:46.260
<v Michael Kennedy>So module level side effects, like a module that registers a handler or

00:16:46.560 --> 00:16:51.300
<v Michael Kennedy>modifies global state at import time will behave differently if its import is deferred.

00:16:51.420 --> 00:16:54.760
<v Michael Kennedy>Think about something that sets sysstat at exit,

00:16:55.240 --> 00:16:55.420
<v Michael Kennedy>right?

00:16:55.580 --> 00:16:58.540
<v Michael Kennedy>So it wants to run some code at exit to unravel something.

00:16:58.980 --> 00:17:03.540
<v Michael Kennedy>But that's only there if you call the function that causes the lazy import to load and so

00:17:03.620 --> 00:17:03.940
<v Michael Kennedy>on, right?

00:17:04.120 --> 00:17:05.480
<v Michael Kennedy>As opposed to the way it does now.

00:17:05.600 --> 00:17:06.600
<v Michael Kennedy>The registry pattern.

00:17:06.839 --> 00:17:08.180
<v Michael Kennedy>So dependency injection, I'm guessing.

00:17:08.420 --> 00:17:14.740
<v Michael Kennedy>A module registers itself added to a global dict that when imported will silently fail under lazy imports.

00:17:15.459 --> 00:17:16.699
<v Michael Kennedy>Sys.modules manipulations.

00:17:16.939 --> 00:17:21.100
<v Michael Kennedy>Code that reads and writes Sys.modules assumes that prior imports have already executed.

00:17:21.459 --> 00:17:21.900
<v Michael Kennedy>Interesting.

00:17:22.500 --> 00:17:23.319
<v Michael Kennedy>And metaclasses.

00:17:23.860 --> 00:17:25.760
<v Michael Kennedy>Class creation side effects may depend on.

00:17:25.920 --> 00:17:29.800
<v Michael Kennedy>So you can just run this against your project and it'll tell you how safe are your lazy imports.

00:17:30.180 --> 00:17:30.920
<v Michael Kennedy>And you can't be lazy.

00:17:31.200 --> 00:17:31.820
<v Michael Kennedy>It's a lifeguard.

00:17:32.000 --> 00:17:32.600
<v Michael Kennedy>Looks out for you.

00:17:32.770 --> 00:17:34.880
<v Michael Kennedy>So you don't, I guess, drown in lazy imports.

00:17:36.640 --> 00:17:36.820
<v Michael Kennedy>Yeah.

00:17:37.140 --> 00:17:37.340
<v Michael Kennedy>Anyway,

00:17:37.520 --> 00:17:40.700
<v Michael Kennedy>I just want to put that out there for people because this is coming in Python 3.15.

00:17:41.180 --> 00:17:42.940
<v Michael Kennedy>And it's always better to go,

00:17:43.300 --> 00:17:48.780
<v Michael Kennedy>hey, let's test our package or our application on this new version before it's actually released.

00:17:49.160 --> 00:17:51.040
<v Michael Kennedy>Especially if you have a package other people use, right?

00:17:51.320 --> 00:17:51.520
<v Brian Okken>Yeah.

00:17:52.220 --> 00:17:56.680
<v Brian Okken>And I guess that I think like testing is often pretty safe to do lazy imports.

00:17:56.820 --> 00:17:57.940
<v Brian Okken>So I just want to throw out,

00:17:58.200 --> 00:17:59.140
<v Brian Okken>I don't have a link or anything,

00:17:59.340 --> 00:18:05.740
<v Brian Okken>but a reminder to people that if you're loading something fairly large for testing purposes and you have a big suite,

00:18:06.120 --> 00:18:09.340
<v Brian Okken>You can throw that into a conf test or not a conf test.

00:18:09.400 --> 00:18:10.480
<v Brian Okken>We could do me in a conf test,

00:18:10.600 --> 00:18:15.600
<v Brian Okken>but you can throw the import into a fixture and even an auto use fixture and

00:18:15.660 --> 00:18:15.800
<v Brian Okken>it'll,

00:18:16.080 --> 00:18:18.700
<v Brian Okken>it'll load at runtime instead of test collection time then.

00:18:19.020 --> 00:18:19.940
<v Brian Okken>So it's a lot faster.

00:18:20.160 --> 00:18:20.620
<v Michael Kennedy>That's very good.

00:18:20.840 --> 00:18:23.380
<v Michael Kennedy>You're focusing on just some category test or something like that.

00:18:23.480 --> 00:18:24.020
<v Michael Kennedy>You don't have to do it.

00:18:24.260 --> 00:18:24.500
<v Michael Kennedy>All right,

00:18:25.040 --> 00:18:25.480
<v Michael Kennedy>let's log it.

00:18:26.040 --> 00:18:26.720
<v Brian Okken>Let's log it.

00:18:28.059 --> 00:18:29.040
<v Brian Okken>So there's a,

00:18:29.120 --> 00:18:32.280
<v Brian Okken>I ran across this article called choosing a Python library log,

00:18:32.640 --> 00:18:35.360
<v Brian Okken>choosing a Python logging library in 2026.

00:18:36.060 --> 00:18:42.880
<v Brian Okken>And this just kind of came up at the right time because I've got a project that I'm switching to use.

00:18:43.380 --> 00:18:45.380
<v Brian Okken>My plan is to switch it to use Logaroo.

00:18:45.960 --> 00:18:46.400
<v Brian Okken>Logaroo?

00:18:46.840 --> 00:18:47.300
<v Brian Okken>I don't know.

00:18:47.520 --> 00:18:48.060
<v Brian Okken>Logaroo.

00:18:48.320 --> 00:18:49.720
<v Brian Okken>L-O-G-U-R-U.

00:18:50.080 --> 00:18:50.680
<v Brian Okken>And the,

00:18:50.960 --> 00:18:54.360
<v Brian Okken>but so I was looking at this just because it's interesting.

00:18:54.530 --> 00:18:57.420
<v Brian Okken>So the comparison is to the straight logging module,

00:18:57.600 --> 00:18:59.140
<v Brian Okken>struct log, Logaroo,

00:18:59.740 --> 00:19:00.200
<v Brian Okken>logbook,

00:19:00.460 --> 00:19:01.420
<v Brian Okken>and Pico logging.

00:19:01.820 --> 00:19:05.580
<v Brian Okken>And it looks like they sort of gave up on some of those.

00:19:05.860 --> 00:19:12.520
<v Brian Okken>But one of the interesting things about using straight logging was that doing structured output like JSON,

00:19:12.800 --> 00:19:15.140
<v Brian Okken>like logging JSON information,

00:19:15.450 --> 00:19:16.760
<v Brian Okken>is a little bit difficult.

00:19:17.400 --> 00:19:24.620
<v Brian Okken>So their recommendation right off the bat is to use a project called Python JSON Logger,

00:19:24.800 --> 00:19:25.820
<v Brian Okken>which I didn't know about,

00:19:26.020 --> 00:19:28.900
<v Brian Okken>which you can use with the standard logging module.

00:19:30.400 --> 00:19:32.300
<v Brian Okken>And it just makes logging easier.

00:19:32.720 --> 00:19:34.300
<v Brian Okken>They even have a, the same,

00:19:34.540 --> 00:19:37.300
<v Brian Okken>same people that wrote the original article have a setup guide,

00:19:37.400 --> 00:19:39.680
<v Brian Okken>a practical guide to setting up the JSON logger.

00:19:40.200 --> 00:19:41.220
<v Brian Okken>So that's, that's cool.

00:19:41.400 --> 00:19:42.760
<v Brian Okken>And especially I was thinking like,

00:19:43.020 --> 00:19:46.020
<v Brian Okken>especially for API endpoints or entry points or whatever,

00:19:46.460 --> 00:19:48.720
<v Brian Okken>that's important, but there's, he's JSON all over the place.

00:19:48.860 --> 00:19:48.980
<v Brian Okken>So,

00:19:49.780 --> 00:19:55.200
<v Brian Okken>but so just talking about comparing them all and they didn't really give an example.

00:19:55.360 --> 00:19:56.220
<v Brian Okken>They actually talked about,

00:19:56.980 --> 00:19:57.760
<v Brian Okken>well, they have examples,

00:19:57.920 --> 00:19:59.920
<v Brian Okken>but they didn't recommend anything.

00:20:00.340 --> 00:20:08.860
<v Brian Okken>Actually, the recommendation really was use the standard logging module unless you have a reason not to because it's being supported everywhere.

00:20:09.170 --> 00:20:16.960
<v Brian Okken>But I really liked the Logguru example of just how easy it looks to set up.

00:20:17.550 --> 00:20:18.560
<v Brian Okken>And we've covered this before,

00:20:18.860 --> 00:20:21.320
<v Brian Okken>but especially if you have a lot of people that are,

00:20:21.650 --> 00:20:24.480
<v Brian Okken>you know, logging kind of looks complicated.

00:20:24.900 --> 00:20:27.980
<v Brian Okken>And if you've got a small team that all understand it, that's great.

00:20:28.180 --> 00:20:29.460
<v Brian Okken>But if you have a large team,

00:20:29.800 --> 00:20:33.340
<v Brian Okken>it might be easier just to have an easier logging system.

00:20:33.640 --> 00:20:35.020
<v Brian Okken>And that's where I'm kind of leaning.

00:20:35.520 --> 00:20:38.940
<v Brian Okken>And the setting up JSON output,

00:20:39.100 --> 00:20:40.840
<v Brian Okken>you can say serialized equals true.

00:20:41.160 --> 00:20:42.120
<v Brian Okken>Now, I don't know.

00:20:42.280 --> 00:20:46.640
<v Brian Okken>I think that means that converts every log record to a JSON output.

00:20:46.760 --> 00:20:47.640
<v Brian Okken>So that might not be.

00:20:47.900 --> 00:20:49.260
<v Brian Okken>It's not logging JSON stuff.

00:20:49.480 --> 00:20:52.780
<v Brian Okken>It's actually the output is a JSON thing.

00:20:52.900 --> 00:20:54.360
<v Brian Okken>So you can read it somewhere else,

00:20:54.820 --> 00:20:55.760
<v Brian Okken>which also might be kind of cool.

00:20:55.920 --> 00:20:56.620
<v Brian Okken>But I probably won't do that.

00:20:56.620 --> 00:20:57.520
<v Michael Kennedy>Yeah, you could have two logs.

00:20:57.780 --> 00:21:01.980
<v Michael Kennedy>You could set up a logger to a file that logs without serialize and one that logs.

00:21:02.020 --> 00:21:02.440
<v Michael Kennedy>Oh, yeah.

00:21:02.840 --> 00:21:03.060
<v Michael Kennedy>Right?

00:21:03.140 --> 00:21:04.760
<v Michael Kennedy>So you have like a parallel,

00:21:05.160 --> 00:21:06.900
<v Michael Kennedy>like a structured and an unstructured version.

00:21:07.080 --> 00:21:10.680
<v Michael Kennedy>And when you just say log, it just hits all the attached destinations or whatever.

00:21:10.960 --> 00:21:13.700
<v Brian Okken>But the easy setup is what I'm looking for.

00:21:15.000 --> 00:21:16.560
<v Brian Okken>But there are some caveats.

00:21:16.700 --> 00:21:18.600
<v Brian Okken>Like it's harder to have multiple loggers apparently,

00:21:19.220 --> 00:21:21.920
<v Brian Okken>or at least multiple configurations of different loggers.

00:21:22.240 --> 00:21:24.680
<v Brian Okken>I don't know if that's true or not, but that's what the article says.

00:21:26.040 --> 00:21:26.860
<v Brian Okken>One of the things that I,

00:21:27.200 --> 00:21:30.560
<v Brian Okken>that I didn't know about with this is that there's a logger catch

00:21:30.800 --> 00:21:31.820
<v Brian Okken>and a logger exception.

00:21:32.180 --> 00:21:35.380
<v Brian Okken>So there's different ways the logger catches a decorator to,

00:21:35.540 --> 00:21:35.680
<v Brian Okken>uh,

00:21:36.340 --> 00:21:37.820
<v Brian Okken>to log exceptions,

00:21:38.180 --> 00:21:38.300
<v Brian Okken>uh,

00:21:38.660 --> 00:21:40.120
<v Brian Okken>nicely or into your,

00:21:40.300 --> 00:21:41.900
<v Brian Okken>into whatever log file you have set up.

00:21:42.040 --> 00:21:42.160
<v Brian Okken>Um,

00:21:42.400 --> 00:21:42.620
<v Brian Okken>so,

00:21:43.000 --> 00:21:44.380
<v Brian Okken>or logging stream or whatever.

00:21:44.940 --> 00:21:45.080
<v Brian Okken>Um,

00:21:45.380 --> 00:21:47.580
<v Brian Okken>and that looks neat because usually,

00:21:47.840 --> 00:21:47.980
<v Brian Okken>you know,

00:21:48.140 --> 00:21:49.320
<v Brian Okken>Michael does no exceptions,

00:21:49.620 --> 00:21:50.160
<v Brian Okken>but if there

00:21:50.200 --> 00:21:50.740
<v Brian Okken>is an exception,

00:21:51.040 --> 00:21:51.140
<v Brian Okken>uh,

00:21:51.300 --> 00:21:52.860
<v Brian Okken>be able to, might be nice to look at that.

00:21:53.060 --> 00:21:53.280
<v Brian Okken>Anyway,

00:21:53.940 --> 00:21:57.400
<v Brian Okken>kind of a good rundown of what the logging libraries look like right now

00:21:58.030 --> 00:21:59.540
<v Brian Okken>and now how to do structured output.

00:22:00.090 --> 00:22:01.300
<v Brian Okken>There was a performance benchmark,

00:22:01.470 --> 00:22:02.540
<v Brian Okken>which was interesting,

00:22:03.020 --> 00:22:08.340
<v Brian Okken>that it compared the standard lib plus the JSON stuff with struct log and Logaroo.

00:22:09.220 --> 00:22:13.040
<v Brian Okken>And Logaroo is about the same as the standard lib with JSON.

00:22:13.410 --> 00:22:18.440
<v Brian Okken>And struct log is about twice as fast as in some cases.

00:22:19.080 --> 00:22:19.960
<v Brian Okken>So that's interesting.

00:22:20.140 --> 00:22:20.340
<v Michael Kennedy>Well,

00:22:20.550 --> 00:22:23.120
<v Michael Kennedy>I use Logaroo by default these days.

00:22:23.250 --> 00:22:23.920
<v Michael Kennedy>I really like it.

00:22:24.080 --> 00:22:25.620
<v Michael Kennedy>But I've also used Logbook.

00:22:25.920 --> 00:22:27.800
<v Michael Kennedy>I don't really use the built-in logging.

00:22:27.910 --> 00:22:30.040
<v Michael Kennedy>It just seems complicated than needed to me.

00:22:30.700 --> 00:22:33.000
<v Brian Okken>I've been doing the built-in logging mostly lately.

00:22:34.190 --> 00:22:34.920
<v Brian Okken>And I figured,

00:22:35.190 --> 00:22:36.700
<v Brian Okken>you know, once I figure out like some,

00:22:37.020 --> 00:22:39.280
<v Brian Okken>and I think I'm like with a lot of people that use it,

00:22:39.450 --> 00:22:41.040
<v Brian Okken>I figured out one way that works for me,

00:22:41.160 --> 00:22:42.980
<v Brian Okken>and I just copy and paste and do that.

00:22:44.560 --> 00:22:44.940
<v Brian Okken>All right.

00:22:45.580 --> 00:22:45.660
<v Brian Okken>Well,

00:22:46.140 --> 00:22:46.960
<v Brian Okken>those are our items.

00:22:48.240 --> 00:22:49.480
<v Brian Okken>Do you have any extras you want to talk about?

00:22:49.520 --> 00:22:50.360
<v Brian Okken>Sure do.

00:22:50.640 --> 00:22:51.720
<v Michael Kennedy>I sure do.

00:22:52.020 --> 00:22:52.680
<v Michael Kennedy>Hold on.

00:22:53.020 --> 00:22:54.480
<v Michael Kennedy>I have two fun things.

00:22:54.710 --> 00:22:55.780
<v Michael Kennedy>So first of all,

00:22:55.940 --> 00:22:56.900
<v Michael Kennedy>let's do this in order.

00:22:57.160 --> 00:23:03.700
<v Michael Kennedy>A while ago, I told everyone that I have German subtitles available for all 283 hours of courses

00:23:03.930 --> 00:23:04.780
<v Michael Kennedy>over at Talk Python.

00:23:04.960 --> 00:23:05.320
<v Michael Kennedy>Training,

00:23:05.720 --> 00:23:07.300
<v Michael Kennedy>the courses we got. Well,

00:23:07.800 --> 00:23:09.160
<v Michael Kennedy>now we have Spanish as well.

00:23:09.380 --> 00:23:10.260
<v Michael Kennedy>So I'm very

00:23:10.440 --> 00:23:16.059
<v Michael Kennedy>excited to announce if Spanish is your language and you want Spanish subtitles to accompany the

00:23:16.080 --> 00:23:18.220
<v Michael Kennedy>English spoken version.

00:23:18.660 --> 00:23:18.740
<v Michael Kennedy>Well,

00:23:19.020 --> 00:23:21.080
<v Michael Kennedy>click on Espanol and you'll be good to go right there.

00:23:21.270 --> 00:23:21.700
<v Michael Kennedy>How about that?

00:23:21.900 --> 00:23:22.440
<v Michael Kennedy>That's cool.

00:23:22.850 --> 00:23:26.580
<v Michael Kennedy>We took two and a half weeks of just grinding on translations to get it done,

00:23:26.740 --> 00:23:27.240
<v Michael Kennedy>but there it is.

00:23:27.310 --> 00:23:28.540
<v Michael Kennedy>I think it's going to be really great.

00:23:28.850 --> 00:23:31.480
<v Brian Okken>So what do you, what, you have German and Spanish now? Is that?

00:23:31.680 --> 00:23:32.260
<v Michael Kennedy>German and Spanish.

00:23:32.740 --> 00:23:33.380
<v Michael Kennedy>Okay, nice.

00:23:33.580 --> 00:23:34.960
<v Michael Kennedy>Now I'm working on Portuguese.

00:23:35.490 --> 00:23:37.600
<v Michael Kennedy>Actually, I've done a lot of research and I feel like Portuguese

00:23:37.830 --> 00:23:40.580
<v Michael Kennedy>will be the most beneficial for the tech folks.

00:23:41.020 --> 00:23:41.540
<v Michael Kennedy>Because you got to intersect,

00:23:41.710 --> 00:23:42.280
<v Michael Kennedy>you got to look at

00:23:42.300 --> 00:23:47.240
<v Michael Kennedy>two things. You got to look at how confident is the group of people who speak a certain language

00:23:47.640 --> 00:23:48.380
<v Michael Kennedy>in English,

00:23:48.950 --> 00:23:49.060
<v Michael Kennedy>right?

00:23:49.220 --> 00:23:50.020
<v Michael Kennedy>So for example,

00:23:50.240 --> 00:23:50.380
<v Michael Kennedy>German,

00:23:50.750 --> 00:23:52.440
<v Michael Kennedy>I did German first because I speak some German,

00:23:52.490 --> 00:23:56.440
<v Michael Kennedy>so I could kind of spot check it a little bit and it made some sense to me, you know?

00:23:57.380 --> 00:23:59.780
<v Michael Kennedy>But German people are pretty good at English,

00:24:00.360 --> 00:24:01.740
<v Michael Kennedy>especially tech-oriented ones.

00:24:02.080 --> 00:24:03.020
<v Michael Kennedy>And so I was

00:24:03.070 --> 00:24:08.259
<v Michael Kennedy>looking around and it turns out that I think Portuguese people are a little less comfortable

00:24:08.280 --> 00:24:12.140
<v Michael Kennedy>with English than maybe German folks or I don't know,

00:24:12.400 --> 00:24:12.540
<v Michael Kennedy>French.

00:24:12.950 --> 00:24:13.840
<v Michael Kennedy>So I'm like, all right,

00:24:14.020 --> 00:24:14.120
<v Michael Kennedy>then

00:24:15.140 --> 00:24:19.060
<v Michael Kennedy>subtitles in their native language would be more helpful than not. So anyway, that's the kind of

00:24:19.060 --> 00:24:19.680
<v Michael Kennedy>thing I'm trying to balance.

00:24:19.840 --> 00:24:20.960
<v Michael Kennedy>So Portuguese is next.

00:24:21.340 --> 00:24:24.280
<v Michael Kennedy>Apparently there's a lot of like Python is one of

00:24:24.510 --> 00:24:27.080
<v Michael Kennedy>is super popular in Brazil and other places.

00:24:27.270 --> 00:24:28.060
<v Michael Kennedy>So excited for that.

00:24:28.500 --> 00:24:29.480
<v Michael Kennedy>All right. So that's, that's one

00:24:29.820 --> 00:24:30.460
<v Michael Kennedy>Spanish subtitles,

00:24:31.040 --> 00:24:31.520
<v Michael Kennedy>not Portuguese,

00:24:31.670 --> 00:24:34.180
<v Michael Kennedy>but Portuguese maybe in three or four weeks, something like that.

00:24:34.440 --> 00:24:35.740
<v Michael Kennedy>And a brand new course.

00:24:35.740 --> 00:24:36.840
<v Michael Kennedy>I'm super excited about this.

00:24:37.360 --> 00:24:39.080
<v Michael Kennedy>Python web security is the course.

00:24:39.580 --> 00:24:42.080
<v Michael Kennedy>And it comes in two components.

00:24:42.480 --> 00:24:44.100
<v Michael Kennedy>The OWASP top 10.

00:24:44.240 --> 00:24:48.900
<v Michael Kennedy>So it goes through every one of the OWASP top 10 categories with two to three examples,

00:24:49.540 --> 00:24:51.140
<v Michael Kennedy>sometimes in Flask, sometimes in Django,

00:24:51.380 --> 00:24:52.720
<v Michael Kennedy>sometimes in FastAPI,

00:24:53.060 --> 00:24:54.260
<v Michael Kennedy>the bad version, the good version,

00:24:54.580 --> 00:24:56.860
<v Michael Kennedy>just purely learning the security issues.

00:24:57.180 --> 00:25:03.579
<v Michael Kennedy>And then we turn it into an agentic AI course and start searching for bugs in your own code

00:25:03.840 --> 00:25:04.900
<v Michael Kennedy>using agentic AI.

00:25:05.230 --> 00:25:08.440
<v Michael Kennedy>So we talked about how Mozilla found a bunch of bugs with Cloud,

00:25:08.600 --> 00:25:09.480
<v Michael Kennedy>similar to that

00:25:09.740 --> 00:25:13.460
<v Michael Kennedy>with some really custom OWASP and Python web app focused things.

00:25:13.980 --> 00:25:14.060
<v Michael Kennedy>Yeah.

00:25:14.310 --> 00:25:15.160
<v Michael Kennedy>So if you're publishing

00:25:15.550 --> 00:25:21.060
<v Michael Kennedy>web apps or APIs on the internet, you definitely want to look at this because it basically gives

00:25:21.060 --> 00:25:27.460
<v Michael Kennedy>you tooling and a blueprint on how to completely check your app for OWASP violations and beyond

00:25:28.160 --> 00:25:29.740
<v Michael Kennedy>using things like Claude Code and others.

00:25:30.070 --> 00:25:30.640
<v Michael Kennedy>So you can,

00:25:30.810 --> 00:25:32.080
<v Michael Kennedy>instead of hiring pen testers,

00:25:32.180 --> 00:25:35.720
<v Michael Kennedy>you can do a first pass with this and then maybe find just a few more things.

00:25:35.880 --> 00:25:35.980
<v Michael Kennedy>If,

00:25:36.220 --> 00:25:40.100
<v Michael Kennedy>if you're that kind of company that can afford $25,000 or whatever for a pen

00:25:40.220 --> 00:25:40.360
<v Michael Kennedy>test,

00:25:40.520 --> 00:25:40.620
<v Michael Kennedy>or,

00:25:41.140 --> 00:25:41.260
<v Michael Kennedy>you know,

00:25:41.280 --> 00:25:42.860
<v Michael Kennedy>you could at least do this if you were going to do nothing.

00:25:43.200 --> 00:25:44.200
<v Michael Kennedy>So I think it's really helpful.

00:25:44.580 --> 00:25:44.640
<v Michael Kennedy>Thanks.

00:25:45.000 --> 00:25:45.180
<v Michael Kennedy>All right.

00:25:45.280 --> 00:25:45.780
<v Michael Kennedy>That's it for me.

00:25:46.140 --> 00:25:46.320
<v Brian Okken>Okay.

00:25:47.059 --> 00:25:47.460
<v Brian Okken>I,

00:25:48.179 --> 00:25:49.400
<v Brian Okken>I noticed this,

00:25:49.860 --> 00:25:55.300
<v Brian Okken>there's an article that was on NPR or planet money,

00:25:55.740 --> 00:25:58.020
<v Brian Okken>but I noticed it because on blue sky,

00:25:59.120 --> 00:26:01.160
<v Brian Okken>shout out to where I got the information from.

00:26:01.420 --> 00:26:02.660
<v Brian Okken>if my tabs work.

00:26:03.100 --> 00:26:04.140
<v Brian Okken>Savannah Ostrowski.

00:26:04.520 --> 00:26:06.200
<v Brian Okken>So posted this,

00:26:06.480 --> 00:26:07.220
<v Brian Okken>said it was surprising.

00:26:07.700 --> 00:26:09.900
<v Brian Okken>This is a disturbing article,

00:26:10.220 --> 00:26:10.360
<v Brian Okken>actually.

00:26:11.020 --> 00:26:12.940
<v Brian Okken>It's what happened to women in computer science.

00:26:14.100 --> 00:26:18.080
<v Brian Okken>And I didn't realize this was going on so long.

00:26:19.100 --> 00:26:19.660
<v Brian Okken>So basically,

00:26:20.020 --> 00:26:22.340
<v Brian Okken>modern computer science is dominated by men.

00:26:22.900 --> 00:26:26.519
<v Brian Okken>The percent of women in computer science was...

00:26:27.800 --> 00:26:33.240
<v Brian Okken>And also in the percent compared with other fields, like other physical sciences,

00:26:33.390 --> 00:26:33.800
<v Brian Okken>law school,

00:26:33.980 --> 00:26:34.500
<v Brian Okken>medical school.

00:26:35.060 --> 00:26:36.620
<v Brian Okken>So it's an interesting comparison.

00:26:36.990 --> 00:26:38.820
<v Brian Okken>But in the mid 80s,

00:26:39.320 --> 00:26:44.640
<v Brian Okken>it was at its height at like 36% or something were women.

00:26:45.080 --> 00:26:47.560
<v Brian Okken>And it's just been going down since then.

00:26:47.760 --> 00:26:47.900
<v Brian Okken>And,

00:26:48.370 --> 00:26:52.940
<v Brian Okken>you know, it's leveled off in like around 2008 or something like that.

00:26:53.180 --> 00:26:54.140
<v Brian Okken>But this isn't good.

00:26:55.040 --> 00:26:58.220
<v Brian Okken>And so I think we need more women in computer science.

00:26:58.740 --> 00:27:08.560
<v Brian Okken>And the analysis of this was really thought that this was because of the personal computers showing up in homes.

00:27:09.080 --> 00:27:16.000
<v Brian Okken>And I guess families and teachers encouraging boys to play with computers more than they taught girls.

00:27:16.480 --> 00:27:23.140
<v Brian Okken>And also a commentary from one woman that when she first went into her first computer science class,

00:27:23.320 --> 00:27:24.960
<v Brian Okken>she asked a question.

00:27:25.380 --> 00:27:29.360
<v Brian Okken>And the professor stopped and looked at her and said, you should know that by now.

00:27:29.570 --> 00:27:31.160
<v Brian Okken>But it was like the first class.

00:27:31.400 --> 00:27:35.120
<v Brian Okken>And so I actually, my wife had the same experience.

00:27:36.200 --> 00:27:42.760
<v Brian Okken>She took CS101 or something like that, or a basic class in high school.

00:27:43.600 --> 00:27:50.280
<v Brian Okken>And all the rest of the kids had already played with it on their Macs at home or something like that.

00:27:50.520 --> 00:27:51.700
<v Brian Okken>And she was an intro.

00:27:51.800 --> 00:27:53.800
<v Brian Okken>So I think we need to change this.

00:27:54.200 --> 00:28:02.820
<v Brian Okken>I think hopefully it's changing because I think there's less actual personal computers in homes now than there were in the 90s.

00:28:03.980 --> 00:28:07.320
<v Brian Okken>So I think maybe, hopefully it's leveled the playing field.

00:28:07.720 --> 00:28:08.320
<v Brian Okken>But who knows?

00:28:09.420 --> 00:28:11.960
<v Brian Okken>I'm glad that my daughter has already taken my,

00:28:12.940 --> 00:28:14.480
<v Brian Okken>has taken some Python in school,

00:28:14.840 --> 00:28:16.160
<v Brian Okken>but this is bad.

00:28:16.170 --> 00:28:16.480
<v Brian Okken>I mean,

00:28:16.940 --> 00:28:18.820
<v Brian Okken>software is not a boys or girls thing.

00:28:18.920 --> 00:28:19.240
<v Brian Okken>If anything,

00:28:19.720 --> 00:28:20.640
<v Brian Okken>the women started it.

00:28:20.860 --> 00:28:21.820
<v Brian Okken>So we're,

00:28:21.920 --> 00:28:23.000
<v Brian Okken>we're late comers to the,

00:28:23.180 --> 00:28:23.480
<v Brian Okken>to the,

00:28:23.720 --> 00:28:24.240
<v Brian Okken>to the game.

00:28:24.540 --> 00:28:24.660
<v Brian Okken>Anyway,

00:28:24.890 --> 00:28:26.360
<v Brian Okken>we need to fix this as a community.

00:28:26.590 --> 00:28:27.700
<v Brian Okken>So the,

00:28:27.980 --> 00:28:28.740
<v Brian Okken>the next thing,

00:28:28.750 --> 00:28:31.620
<v Brian Okken>the other thing I want to share is that I am.

00:28:32.500 --> 00:28:33.620
<v Michael Kennedy>A field report,

00:28:33.800 --> 00:28:34.000
<v Michael Kennedy>Brian.

00:28:34.400 --> 00:28:35.140
<v Michael Kennedy>So at PyCon,

00:28:35.560 --> 00:28:36.620
<v Michael Kennedy>I spoke to,

00:28:36.690 --> 00:28:39.320
<v Michael Kennedy>I was speaking to several women and they,

00:28:39.400 --> 00:28:46.480
<v Michael Kennedy>said just talking to each other something like there is a very good representation of women at

00:28:46.480 --> 00:28:52.360
<v Michael Kennedy>this conference now and 10 years ago it wasn't like that and i i feel that's great and it's so

00:28:52.440 --> 00:28:58.100
<v Michael Kennedy>it's really encouraging at least in the python space but in general i agree that the graph

00:28:58.140 --> 00:29:03.400
<v Brian Okken>is bad and it doesn't need to be that way i also wonder like a lot we get a lot of uh programmers

00:29:03.530 --> 00:29:08.860
<v Brian Okken>from other fields though not necessarily computer science so i wonder if um maybe we need to but it

00:29:08.820 --> 00:29:10.080
<v Brian Okken>It does say physical sciences.

00:29:10.820 --> 00:29:13.840
<v Brian Okken>Maybe we're getting a lot of our women coders from other fields.

00:29:14.170 --> 00:29:14.540
<v Brian Okken>I don't know.

00:29:14.770 --> 00:29:15.460
<v Michael Kennedy>I do think so.

00:29:15.650 --> 00:29:23.460
<v Michael Kennedy>You know, my daughter was learning to do like data science-y stuff in her psychology field.

00:29:23.700 --> 00:29:24.340
<v Michael Kennedy>And psychology,

00:29:24.510 --> 00:29:26.360
<v Michael Kennedy>I think, has more women than men in it,

00:29:26.620 --> 00:29:26.700
<v Michael Kennedy>right?

00:29:26.740 --> 00:29:31.020
<v Michael Kennedy>And so to the extent that like the data science side brings people in, I think there's a really

00:29:31.200 --> 00:29:34.100
<v Michael Kennedy>interesting, Python is super interesting because it brings people in from all these different

00:29:34.560 --> 00:29:34.620
<v Michael Kennedy>disciplines.

00:29:34.830 --> 00:29:36.240
<v Michael Kennedy>And it's not just a, unlike,

00:29:36.480 --> 00:29:37.700
<v Michael Kennedy>let's say, Go or See,

00:29:38.100 --> 00:29:38.160
<v Michael Kennedy>right?

00:29:38.240 --> 00:29:39.780
<v Michael Kennedy>That's like a straight path.

00:29:40.060 --> 00:29:42.560
<v Michael Kennedy>You start in programming and you end in this location, right?

00:29:42.880 --> 00:29:44.320
<v Michael Kennedy>Whereas with Python,

00:29:45.000 --> 00:29:47.740
<v Michael Kennedy>it's got a much more diversity of sources,

00:29:47.920 --> 00:29:49.240
<v Michael Kennedy>not necessarily people or genders,

00:29:49.460 --> 00:29:53.040
<v Michael Kennedy>but like a diversity of different backgrounds that you come from to get into it.

00:29:53.240 --> 00:29:55.420
<v Michael Kennedy>So I think that might have something to do with it as well, which is good.

00:29:55.660 --> 00:29:57.240
<v Brian Okken>Different generational things too.

00:29:57.600 --> 00:29:59.300
<v Brian Okken>I know we need to move on,

00:29:59.480 --> 00:30:04.040
<v Brian Okken>but I remember when I was doing teaching at university,

00:30:06.080 --> 00:30:11.300
<v Brian Okken>having some of the older students come in and not knowing i would i i was guilty of just expecting

00:30:11.380 --> 00:30:16.400
<v Brian Okken>a lot of people to know a lot of the basics um know how to do word or excel or something like

00:30:16.520 --> 00:30:22.860
<v Brian Okken>that and um and you don't people don't necessarily do that you can't assume anything really so yeah

00:30:23.100 --> 00:30:30.620
<v Brian Okken>anyway um i am still working on the audio version of the uh the lean tdd book um and it's uh it's

00:30:30.680 --> 00:30:34.699
<v Brian Okken>coming along well but during in the process of doing a lot of the audio i've made some changes

00:30:34.700 --> 00:30:36.100
<v Brian Okken>to the actual book.

00:30:36.660 --> 00:30:38.960
<v Brian Okken>That's why I'm holding off on the official release

00:30:39.240 --> 00:30:40.060
<v Brian Okken>because I want the audio

00:30:40.110 --> 00:30:42.840
<v Brian Okken>and the official release to match.

00:30:43.280 --> 00:30:45.680
<v Brian Okken>But a lot of changes have come in.

00:30:46.250 --> 00:30:46.440
<v Brian Okken>Just,

00:30:46.650 --> 00:30:47.600
<v Brian Okken>I published this morning,

00:30:48.800 --> 00:30:52.100
<v Brian Okken>one of the things is separating out TDD with teams

00:30:52.520 --> 00:30:55.720
<v Brian Okken>because the team aspects are different.

00:30:56.020 --> 00:30:57.480
<v Brian Okken>So I both have an emphasis

00:30:57.840 --> 00:31:00.000
<v Brian Okken>on acceptance tester and development

00:31:00.480 --> 00:31:03.759
<v Brian Okken>and then also how to apply those sorts of ATDD stuff

00:31:03.780 --> 00:31:05.000
<v Brian Okken>to the lean concept.

00:31:05.780 --> 00:31:08.020
<v Brian Okken>I also beefed up the AI chapter

00:31:08.560 --> 00:31:10.220
<v Brian Okken>to talk about guardrails and security.

00:31:10.680 --> 00:31:11.580
<v Brian Okken>So just a little bit.

00:31:11.880 --> 00:31:11.960
<v Brian Okken>Anyway,

00:31:12.600 --> 00:31:13.280
<v Brian Okken>it's coming along well.

00:31:13.700 --> 00:31:14.860
<v Brian Okken>And I don't know.

00:31:15.540 --> 00:31:16.720
<v Brian Okken>Who knows how long it'll take?

00:31:17.020 --> 00:31:18.500
<v Brian Okken>My original plan was last January.

00:31:18.880 --> 00:31:19.380
<v Brian Okken>So we'll see.

00:31:20.040 --> 00:31:20.180
<v Brian Okken>Or,

00:31:20.380 --> 00:31:21.540
<v Brian Okken>you know, January a few months ago.

00:31:22.640 --> 00:31:23.040
<v Brian Okken>Congrats.

00:31:23.260 --> 00:31:23.500
<v Brian Okken>That's awesome.

00:31:24.240 --> 00:31:24.480
<v Brian Okken>Thanks.

00:31:25.679 --> 00:31:26.900
<v Brian Okken>So it's still going.

00:31:27.620 --> 00:31:29.180
<v Brian Okken>Thanks to everybody that's contributed

00:31:29.520 --> 00:31:30.040
<v Brian Okken>and helped out.

00:31:31.120 --> 00:31:32.680
<v Michael Kennedy>What skill do you need to be an author?

00:31:33.120 --> 00:31:33.520
<v Michael Kennedy>Persistence.

00:31:34.380 --> 00:31:40.600
<v Michael Kennedy>yes humble humbleness yes uh speaking of persistence our joke is titled stop texting me

00:31:40.770 --> 00:31:49.000
<v Michael Kennedy>so it's just a um just a screenshot of a chat conversation somebody has clawed in their they've

00:31:49.120 --> 00:31:54.860
<v Michael Kennedy>clawed in their iphone i think it's an i it's an iphone um on their their messages right it says

00:31:55.100 --> 00:32:00.399
<v Michael Kennedy>claude build a one billion dollar b2b sass platform from scratch make no mistake then it says red

00:32:00.680 --> 00:32:04.660
<v Michael Kennedy>dude for the thousandth time this is Claude from the pickleball league i am not ai

00:32:07.460 --> 00:32:13.820
<v Michael Kennedy>ah that's funny and then of course there's comments there are definitely comments so

00:32:14.430 --> 00:32:17.880
<v Michael Kennedy>instead it doesn't i think i said it this way but it's not spelled out dude for the thousand

00:32:18.480 --> 00:32:24.239
<v Michael Kennedy>time this is Claude it's not the thousandth time so someone comments is it a legal requirement

00:32:24.260 --> 00:32:26.800
<v Michael Kennedy>that someone named Claude should be able to spell correctly.

00:32:29.320 --> 00:32:29.700
<v Michael Kennedy>And then,

00:32:30.280 --> 00:32:30.420
<v Michael Kennedy>yeah,

00:32:30.840 --> 00:32:31.220
<v Michael Kennedy>I don't know.

00:32:31.220 --> 00:32:32.180
<v Michael Kennedy>It just goes on and on.

00:32:32.380 --> 00:32:33.000
<v Michael Kennedy>This is funny.

00:32:33.300 --> 00:32:33.700
<v Michael Kennedy>Yeah, anyway,

00:32:33.860 --> 00:32:34.960
<v Michael Kennedy>comments are kind of fun too.

00:32:35.160 --> 00:32:37.320
<v Michael Kennedy>But for the thousandth time,

00:32:37.620 --> 00:32:39.060
<v Michael Kennedy>this is Claude from the Pickleball League.

00:32:39.140 --> 00:32:40.740
<v Michael Kennedy>I am not AI building this.

00:32:42.160 --> 00:32:42.560
<v Brian Okken>That's funny.

00:32:42.940 --> 00:32:47.400
<v Brian Okken>I would totally build them a really crappy B2B SaaS

00:32:47.980 --> 00:32:49.440
<v Brian Okken>and just charge them a billion dollars.

00:32:50.320 --> 00:32:51.620
<v Brian Okken>I can give you a billion dollar company.

00:32:52.220 --> 00:32:53.380
<v Brian Okken>You pay me a billion dollars,

00:32:53.540 --> 00:32:55.240
<v Brian Okken>I'll give you something that earns at least a dollar.

00:32:55.680 --> 00:32:58.980
<v Michael Kennedy>Just because you spend a lot of money building the company doesn't mean it's going to make a lot of money.

00:32:59.620 --> 00:32:59.980
Exactly.

00:33:00.240 --> 00:33:01.360
There's no guarantees there.

00:33:01.650 --> 00:33:01.740
Yeah.

00:33:02.200 --> 00:33:02.740
But anyway,

00:33:04.140 --> 00:33:05.160
as always,

00:33:05.560 --> 00:33:05.840
it's fun.

00:33:06.510 --> 00:33:08.120
And we'll talk to you later.

00:33:08.420 --> 00:33:08.540
Yep.

00:33:08.840 --> 00:33:08.900
Thanks.

00:33:09.090 --> 00:33:09.220
Bye.

