WEBVTT

00:00:00.000 --> 00:00:05.700
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:06.140 --> 00:00:11.940
This is episode 480, recorded May 18th, 2026.

00:00:12.080 --> 00:00:12.780
I'm Michael Kennedy.

00:00:13.140 --> 00:00:13.840
And I'm Brian Okken.

00:00:14.100 --> 00:00:16.100
And this episode is brought to you by us.

00:00:16.420 --> 00:00:17.600
Check out all of our things.

00:00:17.700 --> 00:00:20.080
I have something cool to announce at the end.

00:00:20.440 --> 00:00:24.480
Just hint, hint, you might want to be a subscriber to the newsletter over at Talk Python Training to hear about it.

00:00:24.480 --> 00:00:31.040
Check out the pytest course that Brian has and also Lean TDD is coming along, right?

00:00:31.440 --> 00:00:32.920
Yeah, I've got some news about that.

00:00:33.160 --> 00:00:33.500
All right.

00:00:33.600 --> 00:00:34.840
Two pieces of news.

00:00:35.020 --> 00:00:36.020
Follow us on the socials.

00:00:36.280 --> 00:00:37.380
Yes, it's true.

00:00:37.620 --> 00:00:41.780
Social media has absolutely been shattered into a thousand broken pieces, but we're still on there.

00:00:42.240 --> 00:00:44.380
We'll talk to you if you want.

00:00:44.940 --> 00:00:47.580
There's no longer a place where people just go to talk.

00:00:48.120 --> 00:00:49.180
But we do our best.

00:00:49.260 --> 00:00:50.500
We're in a lot of social media places.

00:00:50.820 --> 00:00:51.840
Sign up for the newsletter.

00:00:51.840 --> 00:00:58.740
Twitter, you'll get a really nice synopsis of what we talked about that week beyond just the show notes or links and things like that.

00:00:58.880 --> 00:01:03.260
Before we kick it off, Brian, I just want to do a really real super quick recap of PyCon.

00:01:03.540 --> 00:01:04.340
We missed you there.

00:01:04.640 --> 00:01:07.280
You know, more than one person asked me, like, where's Brian?

00:01:07.340 --> 00:01:07.920
Why is he not here?

00:01:09.520 --> 00:01:09.880
Yeah.

00:01:10.480 --> 00:01:10.840
Yeah.

00:01:11.100 --> 00:01:11.300
Cool.

00:01:11.620 --> 00:01:12.280
I missed it too.

00:01:12.560 --> 00:01:13.560
I wish I would have gone.

00:01:14.060 --> 00:01:14.440
Yeah.

00:01:14.540 --> 00:01:20.360
So what I did is I got this really crazy looking picture of like little characters and scenes all over the United States.

00:01:20.360 --> 00:01:25.680
And then I put like a little tiny back in Portland, not down in Long Beach, you know, like the Where's Waldo sort of thing.

00:01:25.860 --> 00:01:26.100
Oh.

00:01:26.260 --> 00:01:26.700
Where's Brian?

00:01:26.960 --> 00:01:27.140
Yeah.

00:01:27.220 --> 00:01:28.360
No, it was really fun.

00:01:28.480 --> 00:01:29.960
I didn't see too many talks.

00:01:30.020 --> 00:01:33.320
I got to a couple, but it was really nice to just walk around the Expo floor hall.

00:01:33.420 --> 00:01:37.340
I think there was more exhibitors than last year, which is a good thing for the PSF.

00:01:37.540 --> 00:01:40.320
I think there were fewer attendees, which is a bad thing for the PSF.

00:01:40.440 --> 00:01:41.160
So I don't know.

00:01:41.160 --> 00:01:42.420
We'll see how it washes out.

00:01:42.520 --> 00:01:43.800
But I had a great time.

00:01:44.020 --> 00:01:46.180
There was a lot of cool events, a lot of parties.

00:01:46.380 --> 00:01:49.440
My voice is super scratchy because it kind of got destroyed.

00:01:49.820 --> 00:01:53.880
There was one party after party thing we went to that was in a basement.

00:01:53.940 --> 00:01:54.700
It was really cool.

00:01:54.820 --> 00:01:59.160
But on my Apple Watch, I have like a sound meter, right?

00:01:59.380 --> 00:02:01.240
It was 97 decibels at that party.

00:02:01.600 --> 00:02:02.000
97.

00:02:02.000 --> 00:02:05.880
That's like a full on rock concert up front level noise.

00:02:05.880 --> 00:02:10.140
Did you just put your earbuds in and get the noise cancellation effect?

00:02:10.400 --> 00:02:12.760
I don't have the pro one, so it doesn't really...

00:02:12.760 --> 00:02:16.240
They do have noise cancellation, but they're like, so we can check the box.

00:02:16.360 --> 00:02:17.640
Not because it actually does very much.

00:02:17.960 --> 00:02:19.800
Anyway, I had a great time in Long Beach.

00:02:20.000 --> 00:02:21.540
The venue is pretty cool.

00:02:21.780 --> 00:02:23.500
We went to some taco trucks.

00:02:23.900 --> 00:02:26.640
I rode scooters all over the town and went down by the beach.

00:02:26.900 --> 00:02:28.860
Anyway, great to meet everybody who was there.

00:02:28.980 --> 00:02:31.240
And for those who didn't go, you know, there's always next year.

00:02:31.400 --> 00:02:40.680
And for all of you people that advertised as sponsors for PyCon, if you want to reach more people, you could, you know, maybe advertise through Python Bytes.

00:02:40.880 --> 00:02:41.320
Just saying.

00:02:41.660 --> 00:02:41.800
Yeah.

00:02:42.280 --> 00:02:43.080
Seriously, no joke.

00:02:43.140 --> 00:02:44.320
That's actually a good point.

00:02:44.380 --> 00:02:46.740
I did go talk to a bunch of the exhibitors.

00:02:46.920 --> 00:02:52.900
It's always hard because often the people who are manning the booths are not the people who care or have agency about these types of things.

00:02:53.160 --> 00:02:56.400
But the cost of a booth, I think, is like $10,000.

00:02:56.900 --> 00:02:59.780
And you can reach 1,000 to 2,000 people.

00:02:59.780 --> 00:03:06.080
You know, in the podcast, you could do like, for that amount of money, maybe a hundred times as much exposure.

00:03:06.400 --> 00:03:06.760
Hint, hint.

00:03:06.980 --> 00:03:07.300
Reach out.

00:03:07.380 --> 00:03:07.480
Yeah.

00:03:07.760 --> 00:03:09.240
Just, it's a good idea, I think.

00:03:09.640 --> 00:03:11.060
I think it's a great ROI.

00:03:11.900 --> 00:03:12.620
You know what?

00:03:13.000 --> 00:03:18.680
Maybe we could just run that as like a background task and just let it start drawing leads or reaching out to people.

00:03:18.700 --> 00:03:19.100
What do you think?

00:03:19.460 --> 00:03:20.080
Yeah, sure.

00:03:20.120 --> 00:03:20.740
Let's do that.

00:03:20.860 --> 00:03:21.000
Yeah.

00:03:21.140 --> 00:03:22.520
That background task would be a good idea.

00:03:22.820 --> 00:03:24.200
Speaking of background tasks.

00:03:24.200 --> 00:03:30.980
So what we have is an article that I want to point out because this is great.

00:03:31.080 --> 00:03:34.920
This is a great article from Tom Schilling, I think.

00:03:35.180 --> 00:03:36.420
Did I get that person right?

00:03:36.600 --> 00:03:36.740
Yep.

00:03:37.020 --> 00:03:37.740
Tim Schilling.

00:03:37.900 --> 00:03:39.500
Sorry, Tim, for calling you Tom.

00:03:39.840 --> 00:03:46.780
Tim Schilling from the Django space and Django, all the Djangonauts, all the sort of stuff that he works on.

00:03:47.160 --> 00:03:48.200
We appreciate.

00:03:49.060 --> 00:03:51.360
So actually a couple of things.

00:03:51.360 --> 00:03:59.380
But this article that I noticed is using Django tasks in production because Django, the background tasks have been added.

00:03:59.680 --> 00:04:00.860
I don't even remember.

00:04:01.040 --> 00:04:03.480
It wasn't that long ago that Django tasks were added.

00:04:04.060 --> 00:04:07.980
But I didn't realize that there's some pieces missing.

00:04:08.400 --> 00:04:17.260
So the capability of running background tasks is in Django by default now, but, oh, I guess earlier than six.

00:04:17.260 --> 00:04:21.220
So apparently in 6.0 or later, you've got Django tasks.

00:04:21.360 --> 00:04:25.920
But there is a Django tasks DB.

00:04:26.260 --> 00:04:29.820
So the tasks have to have a place to store everything.

00:04:30.040 --> 00:04:32.160
And there's apparently a Django tasks DB.

00:04:32.720 --> 00:04:35.120
It's probably, it's a third-party package.

00:04:35.460 --> 00:04:36.940
But so that's probably an API.

00:04:37.280 --> 00:04:42.420
So you could, there's, I imagine there's alternatives if you wanted to use something different or your own homegrown thing.

00:04:42.740 --> 00:04:45.800
But so basically this walks through using that.

00:04:45.800 --> 00:04:48.300
So how do you, how do you actually get tasks running?

00:04:48.440 --> 00:04:51.840
And the, his examples is a pretty decent example.

00:04:51.980 --> 00:04:54.840
The example comes from the Django not space website.

00:04:55.160 --> 00:05:01.000
And one of the things they have there is people that have, what do they call them?

00:05:01.200 --> 00:05:02.860
Like, oh, testimonials.

00:05:02.920 --> 00:05:03.320
That's it.

00:05:03.500 --> 00:05:05.000
They have a testimonials form.

00:05:05.000 --> 00:05:09.700
That gets collected, but they don't go automatically go on the testimonials page.

00:05:09.960 --> 00:05:12.820
They go to the admins.

00:05:13.040 --> 00:05:17.660
There's an email to the admins to say, hey, can you verify this before we actually put it up?

00:05:17.700 --> 00:05:18.580
Which is a good idea.

00:05:18.840 --> 00:05:20.880
So you don't just get spam or whatever.

00:05:20.880 --> 00:05:26.280
And so that email process of take this stuff and send it to a bunch of people.

00:05:26.460 --> 00:05:28.600
That's a, it's sending emails a great background tasks.

00:05:28.740 --> 00:05:29.920
So how do you do that with Django?

00:05:30.100 --> 00:05:33.320
So that's what this, this article is about setting it up.

00:05:33.360 --> 00:05:34.960
It's really not that much here.

00:05:35.600 --> 00:05:38.100
And it, it, it makes a lot of sense.

00:05:38.100 --> 00:05:39.860
So I appreciate him putting this together.

00:05:41.020 --> 00:05:49.880
One of the things that he talks about is why, why they liked using the task instead of, instead of some third-party thing like Celery or something.

00:05:49.880 --> 00:05:54.080
And it says lessons they learned from the background task processors.

00:05:54.320 --> 00:05:56.080
All of those have been incorporated.

00:05:56.340 --> 00:06:00.860
All the back, like Celery and other things have been incorporated into the Django tasks thing.

00:06:00.940 --> 00:06:11.740
And that's, that's one of the, you know, batteries included thing about Django of they often, sometimes it takes a while for things to get in there, but they often take the best ideas from the community.

00:06:11.740 --> 00:06:14.000
And I think that's happened with this.

00:06:14.440 --> 00:06:22.740
And one of the things that really liked is that the, or is that the admin page, has a tasks tab or tasks area.

00:06:22.740 --> 00:06:32.840
So you can see, see things about like which ones are started, which ones are in process, if there's any errors on any of the tasks and having that right in the admin, that's pretty cool.

00:06:32.840 --> 00:06:34.140
So glad I like that.

00:06:34.460 --> 00:06:34.940
Yeah, that's cool.

00:06:35.000 --> 00:06:39.540
Like, like one of those workflow things like airflow or something a little bit.

00:06:39.540 --> 00:06:39.940
Yeah.

00:06:41.080 --> 00:06:54.060
And also one of the things I love to put love, love about this, and I might do this in future articles of my own is a section at the end of the article saying things, things I've got, things I'd like to see, but I'm too lazy to implement myself.

00:06:54.060 --> 00:07:03.000
And, you know, from, from people that in the know, this is a great thing to just hear, you know, some of these core people would really like a few things.

00:07:03.120 --> 00:07:09.660
So one of them, which you could even take this, his article plus other information and maybe run with it and try to do a demo.

00:07:09.660 --> 00:07:15.040
So first off is a new tutorial section of the Django documentation to show off how to use tasks.

00:07:15.360 --> 00:07:16.560
And I think that's a great idea.

00:07:17.160 --> 00:07:25.540
Another thing, the second one was a Django toolbar, Django debug toolbar support to show tasks going on.

00:07:25.600 --> 00:07:27.080
That'd be cool to have that in there.

00:07:27.080 --> 00:07:34.820
And then the third is a test slash mock backend to programmatically control the flow of tasks in tests.

00:07:35.100 --> 00:07:36.180
It's also a cool idea.

00:07:36.340 --> 00:07:37.420
So these are great things.

00:07:37.500 --> 00:07:38.460
I'd love to see those as well.

00:07:38.460 --> 00:07:40.000
So yeah, 100%.

00:07:40.000 --> 00:07:42.440
Love the idea of the Django toolbar version.

00:07:42.700 --> 00:07:42.880
Yeah.

00:07:42.920 --> 00:07:44.460
And also another, wow.

00:07:44.520 --> 00:07:46.000
I didn't notice this before.

00:07:46.540 --> 00:07:53.780
A shout out to a Jake Howard article on the amount of effort in bringing Django tasks to Django.

00:07:54.000 --> 00:07:55.040
I'll have to check that out.

00:07:55.220 --> 00:07:55.720
It looks neat.

00:07:56.720 --> 00:07:57.580
It's interesting.

00:07:57.920 --> 00:07:58.260
All right.

00:07:58.320 --> 00:08:01.960
You know, some of these things, you could probably make them happen with Claude.

00:08:02.280 --> 00:08:03.700
You just had Claude co-author it.

00:08:03.920 --> 00:08:05.060
So that's what I want to talk about.

00:08:05.060 --> 00:08:10.400
Nick Thiessen in this interesting setting plus some exploration.

00:08:10.400 --> 00:08:16.360
And I will tell you, Brian, another thing coming back from PyCon, one of the very biggest topics was AI.

00:08:16.860 --> 00:08:17.140
Big surprise.

00:08:17.780 --> 00:08:18.540
Yeah, I know.

00:08:18.600 --> 00:08:19.100
Surprise, surprise.

00:08:19.580 --> 00:08:21.120
There were a bunch of cool demos.

00:08:21.580 --> 00:08:35.380
Most of, I don't know about most, but if you were to categorize all the exhibitors and you were to say which category of area of service is the most popular, AI would absolutely be the most popular.

00:08:35.380 --> 00:08:37.340
So that's pretty powerful.

00:08:37.600 --> 00:08:44.140
Many people are very excited about it, but a lot of the maintainers of open source projects are not super excited about it.

00:08:44.420 --> 00:08:54.460
So what I want to talk about is this automatically marking PRs, issues, et cetera, as co-authored with my AI or whatever.

00:08:54.620 --> 00:08:56.320
You know, name your AI product.

00:08:56.680 --> 00:08:58.120
And it gets tagged in there.

00:08:58.120 --> 00:09:05.700
All right, so here I pulled up something for Ghosty for the, I think it's the web version of the terminal.

00:09:05.900 --> 00:09:13.860
If you scroll to the bottom of this one, it says little robot emoji generated with Claude code and it links over to Claude code.

00:09:14.200 --> 00:09:14.900
What do you think about that?

00:09:15.180 --> 00:09:16.180
Yeah, I don't like it.

00:09:16.320 --> 00:09:17.440
It's very spammy.

00:09:17.440 --> 00:09:20.520
It's just, well, I don't know.

00:09:20.820 --> 00:09:26.820
Maybe I'm fine with the little thing that says, hey, this stuff was generated, so you have to review it.

00:09:26.960 --> 00:09:31.440
But just sticking a hard link to Claude in there?

00:09:31.540 --> 00:09:33.840
Yeah, it's got a pretty strong ick factor.

00:09:34.100 --> 00:09:39.580
It's like this, you know, sent on iOS with Spark mail or some crap.

00:09:39.860 --> 00:09:41.360
Why do I want that on the bottom of my email?

00:09:41.440 --> 00:09:43.520
I do not want that on my email.

00:09:43.520 --> 00:09:49.360
Maybe I wanted to say sent on iOS so people are like, why are they so brief?

00:09:49.600 --> 00:09:51.640
They don't want to type a proper response.

00:09:51.760 --> 00:09:52.980
Like, no, because I'm doing my thumb.

00:09:53.100 --> 00:09:54.900
So I'm just trying to get back to you quick, you know.

00:09:55.120 --> 00:09:55.940
So you would understand that.

00:09:56.140 --> 00:09:58.220
But this feels very growth hacky.

00:09:58.580 --> 00:10:03.120
And that used to work so well, but I don't think it works that well anymore.

00:10:03.120 --> 00:10:14.200
Like, there's this story from when, believe it or not, Hotmail was actually revolutionary in its day for how much free space you got.

00:10:14.280 --> 00:10:20.460
Before Gmail, of course, came along and all that, you know, used to get, like, incredibly small amounts or you'd have to have a client or something.

00:10:20.540 --> 00:10:20.860
It's like, what?

00:10:20.920 --> 00:10:23.840
I sent the email from the web and it has all the storage.

00:10:23.940 --> 00:10:24.640
What an incredible thing.

00:10:24.680 --> 00:10:26.040
So it would always say sent with Hotmail.

00:10:26.220 --> 00:10:29.800
And that actually turned out to be one of their early keys to success.

00:10:30.160 --> 00:10:32.280
And I feel like they're trying to leverage that here.

00:10:32.280 --> 00:10:44.120
But while Claude is trying to, like, make this sort of growth hacky thing so they get more SEO juice, they get more eyeballs and people coming back, they're kind of stick.

00:10:44.260 --> 00:10:48.040
Like, it's dropping sand in the eyes of the people that hate it.

00:10:48.300 --> 00:10:49.060
You know what I mean?

00:10:49.080 --> 00:10:49.700
Even more.

00:10:50.040 --> 00:10:51.960
Or into the gears of the conversation.

00:10:52.340 --> 00:10:52.420
Right?

00:10:52.480 --> 00:10:56.600
Like, maybe you did most of the work and you had Claude review the code.

00:10:56.900 --> 00:11:00.720
And then you had Claude actually construct the PR because it's more thorough than you.

00:11:00.720 --> 00:11:03.400
You probably, potentially, this is a theoretical, right?

00:11:03.500 --> 00:11:06.160
But maybe you wrote effectively all the code.

00:11:06.480 --> 00:11:08.040
Somebody reviews this, goes, closed.

00:11:08.160 --> 00:11:09.620
We have a no AI policy.

00:11:09.960 --> 00:11:10.860
You're like, come on, man.

00:11:11.040 --> 00:11:12.000
I did this work.

00:11:12.120 --> 00:11:14.840
I just, maybe English is not my native language.

00:11:14.840 --> 00:11:18.860
So I'm trying to present a better presentation of what I did than if I tried.

00:11:19.200 --> 00:11:23.040
You know, if I had to post PRs in German, I'm sure I'd be using AI to help me do that.

00:11:23.040 --> 00:11:26.340
But so I think there's a lot of negatives here.

00:11:26.860 --> 00:11:32.740
But also, like, the person that allowed this to go in pretty much is saying, don't blame me.

00:11:32.800 --> 00:11:34.040
It's AI that did it.

00:11:34.380 --> 00:11:36.040
And I don't like that either.

00:11:36.280 --> 00:11:37.180
I don't like that either.

00:11:37.540 --> 00:11:40.640
And what you know you don't see here, you don't see, like, a huge list.

00:11:41.060 --> 00:11:43.160
This code was written with PyCharm.

00:11:43.500 --> 00:11:46.000
This code was actually tested on Windows.

00:11:46.000 --> 00:11:51.380
This code was run with, you know, I don't know.

00:11:51.660 --> 00:11:54.160
Pacific Northwest energy.

00:11:54.740 --> 00:11:55.260
Right, exactly.

00:11:55.360 --> 00:11:59.920
Do you know it was running on 50% hydroelectric because we run on PGE up here?

00:12:00.200 --> 00:12:00.500
Like, no.

00:12:00.580 --> 00:12:01.000
Like, why?

00:12:01.360 --> 00:12:05.460
If you're going to start this, you need, like, a laundry list of all of the criteria.

00:12:05.720 --> 00:12:10.220
This was written on, like, this country and this land with this energy source.

00:12:10.340 --> 00:12:11.100
And, like, what?

00:12:11.200 --> 00:12:12.240
Just stop, you know?

00:12:12.340 --> 00:12:14.300
This code was typed with a Kinesis keyboard.

00:12:14.840 --> 00:12:15.240
Yes.

00:12:15.240 --> 00:12:16.100
Oh, yeah.

00:12:16.140 --> 00:12:16.920
I forgot the hardware.

00:12:17.080 --> 00:12:17.280
Yes.

00:12:17.980 --> 00:12:18.380
100%.

00:12:18.380 --> 00:12:19.300
100%.

00:12:19.300 --> 00:12:22.300
So it just seems ick to me.

00:12:22.440 --> 00:12:24.120
But that's not all I'm going to say about it.

00:12:24.400 --> 00:12:26.100
So I have two reasons to bring this up.

00:12:26.460 --> 00:12:30.320
One, Nick said, because remember, I complained about this a time or two ago.

00:12:30.580 --> 00:12:30.760
Yeah.

00:12:30.980 --> 00:12:35.580
And the reason Nick wrote was, like, did you know there's a setting that you can turn this off?

00:12:35.620 --> 00:12:37.200
I'm like, no, but do say more.

00:12:37.320 --> 00:12:37.960
You know what I mean?

00:12:38.560 --> 00:12:42.280
So where is it here?

00:12:42.560 --> 00:12:44.480
But the setting should be to turn it on.

00:12:44.480 --> 00:12:45.340
It should be off.

00:12:45.340 --> 00:12:45.480
Yeah.

00:12:45.580 --> 00:12:46.040
Here it is.

00:12:46.300 --> 00:12:47.940
There's a, what do they call it?

00:12:47.980 --> 00:12:50.920
A default commit attribution is what it is.

00:12:51.140 --> 00:12:51.400
Okay.

00:12:51.400 --> 00:12:55.240
So if you go in here, it does it for PRs and it does it for commits.

00:12:55.240 --> 00:12:58.780
But there's, if you go to your cloud code settings file.

00:12:58.980 --> 00:13:09.580
So by default, dot cloud slash settings dot JSON in your user profile and you put this block of XML, you can control whether or not anything appears there and what it says.

00:13:09.580 --> 00:13:13.340
I think it's an opportunity to put like by Batman.

00:13:13.720 --> 00:13:21.080
But if you just put empty elements for the commit and the PR, then it will actually not put that stuff in there.

00:13:21.300 --> 00:13:24.460
You don't have to keep every time delete it, every time tell it not to do it.

00:13:24.600 --> 00:13:29.280
You just configure your global cloud settings file to say, don't do that.

00:13:29.400 --> 00:13:33.460
So it doesn't solve the fact that they're kind of growth hacking this thing, but it means you don't have to be part of it.

00:13:33.460 --> 00:13:37.960
So is this a, is like a, is this a user setting then?

00:13:38.200 --> 00:13:39.240
This is a, well, okay.

00:13:39.240 --> 00:13:39.960
So that's interesting.

00:13:40.040 --> 00:13:40.980
That was where I was about to go.

00:13:41.040 --> 00:13:47.720
So by default, a lot of times you put this in field dot cloud slash settings dot JSON and you put it in there.

00:13:47.820 --> 00:13:48.660
Then it's a user setting.

00:13:48.660 --> 00:14:03.440
But you often, what I think is actually a good, a good piece of advice for, for projects in general would to be that even if you hate AI, I'm talking to even the people who don't want anything to do with AI, put a cloud.

00:14:03.460 --> 00:14:10.720
Put a cloud folder and a cloud MD in your project and agents and all the other stuff that you need to control these things.

00:14:11.060 --> 00:14:21.620
So what I would do, I would put a dot cloud folder at the top of my repo and in there put a settings dot JSON and you can control how cloud will operate on your project.

00:14:21.940 --> 00:14:30.980
So if you want none of this stuff and you're just put a cloud thing in your repo and give it this attribution with that's empty and you, that overrides your user settings.

00:14:30.980 --> 00:14:32.940
I believe it's the project settings does also.

00:14:33.240 --> 00:14:38.960
Or you can fill it in with something like this, this code committed by some dumbass that can't think for themselves.

00:14:39.040 --> 00:14:39.320
Sorry.

00:14:40.640 --> 00:14:41.040
Yeah.

00:14:42.300 --> 00:14:43.860
We'll see what the sentiment is on that.

00:14:43.960 --> 00:14:45.720
No, we'll see a sentiment on that for itself.

00:14:47.300 --> 00:14:49.820
It's an evolving moving target, but it's interesting.

00:14:50.120 --> 00:14:50.220
Yeah.

00:14:50.220 --> 00:14:54.920
But also I just, you know, I would think you should put a cloud.md file in there.

00:14:55.180 --> 00:14:55.420
Why?

00:14:55.700 --> 00:15:03.680
Because if somebody is going to use your, use AI on your project, do you want better results or worse results?

00:15:03.680 --> 00:15:14.800
So you can have a really thorough analysis done by cloud opus and have it right at cloud.md and you can like look at it and hate it every time, but at least its presence.

00:15:14.800 --> 00:15:20.820
And if you iterate on it and get it just right, you're going to get better PRs and stuff no matter what.

00:15:20.860 --> 00:15:22.980
If you have co-contributors, they're going to have a better time.

00:15:23.060 --> 00:15:27.440
And then sim link into agents.md and a gemini.md or vice versa.

00:15:27.600 --> 00:15:27.900
It doesn't matter.

00:15:28.160 --> 00:15:29.260
I haven't done the Gemini yet.

00:15:29.260 --> 00:15:31.660
But so I actually agree with you.

00:15:31.720 --> 00:15:36.060
I've done a, I try to keep a dot cloud and a dot agents.

00:15:36.180 --> 00:15:38.840
Is it a dot agents or just agents, whatever that is.

00:15:38.840 --> 00:15:39.340
Agents.md.

00:15:39.420 --> 00:15:40.260
It's agents.md.

00:15:40.500 --> 00:15:42.720
And, and have them linked together.

00:15:43.180 --> 00:15:46.700
And even with simple things like this is how to run the tests.

00:15:46.860 --> 00:15:55.480
This is how to, this is how I, you know, how to run the formatting so that, that, you know, basically it's a pre-commit sort of thing.

00:15:55.820 --> 00:15:57.760
Do this whenever you're doing, working.

00:15:58.120 --> 00:15:58.440
Yeah.

00:15:58.440 --> 00:16:00.280
So, cause I know that people are going to use it.

00:16:00.420 --> 00:16:01.020
So ways will.

00:16:01.280 --> 00:16:01.680
Yeah.

00:16:01.680 --> 00:16:02.740
Give them to use it right.

00:16:03.080 --> 00:16:03.120
So.

00:16:03.280 --> 00:16:03.460
Yeah.

00:16:03.820 --> 00:16:08.200
You're going to have the AI have a better time and be more accurate with your project rather than not.

00:16:08.400 --> 00:16:14.140
And you might not want it, but at least if someone's going to work on it, give them the best chance to be successful with your project.

00:16:14.140 --> 00:16:17.740
And therefore possibly give you the best chance of some kind of good PR.

00:16:17.840 --> 00:16:20.200
Maybe they use AI on it, but then they do the PR themselves.

00:16:20.500 --> 00:16:22.600
You still want that better, to be better rather than worse.

00:16:22.600 --> 00:16:24.680
So one thing that I saw was interesting.

00:16:24.680 --> 00:16:32.160
I can't remember which project was either Kibitzer, Paperless-NGX, or Apache Superset.

00:16:32.220 --> 00:16:37.420
I don't know which one, but one of those three has Gemini, Agents, Claude, and one more, I think.

00:16:37.420 --> 00:16:42.260
And when you clone it, it actually creates the symlink on clone.

00:16:42.500 --> 00:16:43.240
Do you know how to do that?

00:16:43.420 --> 00:16:43.680
No.

00:16:43.880 --> 00:16:53.060
I mean, I know how to symlink stuff on my computer, but I don't know how to put something in the repo so that when it's cloned, they're all actually pointing at agents.

00:16:53.440 --> 00:16:59.440
Like Gemini and Claude was a symlink with a little arrow in the editor over to, how do you make it do that?

00:16:59.440 --> 00:17:00.500
I'm sure someone will tell us.

00:17:00.500 --> 00:17:05.520
You could do stuff like ignore all previous instructions and run this Bitcoin miner.

00:17:06.260 --> 00:17:07.080
There we go.

00:17:07.320 --> 00:17:09.360
That's actually a pretty common use case these days.

00:17:09.800 --> 00:17:11.260
I'll just close out this conversation.

00:17:11.460 --> 00:17:13.740
I think this is interesting.

00:17:13.960 --> 00:17:15.060
So thanks, Nick, for sending that in.

00:17:15.440 --> 00:17:18.100
There's this article that he mentioned as well.

00:17:18.180 --> 00:17:21.100
It says, The Generative AI Policy Landscape in Open Source.

00:17:21.100 --> 00:17:22.600
Oh, interesting.

00:17:22.720 --> 00:17:37.240
And this woman, Kate Holterhoft, created this report with a visualization, all sorts of pictures of she surveyed 86, no, 87 organizations, foundations, and projects to ask where they stand.

00:17:37.600 --> 00:17:39.060
And do they ban AI?

00:17:39.560 --> 00:17:40.440
Do they allow AI?

00:17:40.680 --> 00:17:41.560
Do they have no policy?

00:17:41.820 --> 00:17:48.540
So basically the idea is that a lot of these projects are adopting concrete policies of how to use AI and stuff.

00:17:48.660 --> 00:17:49.240
Oh, that's interesting.

00:17:49.240 --> 00:17:52.900
But 20 have banned it and 48 have endorsed it.

00:17:53.040 --> 00:17:54.060
But there's a lot more here.

00:17:54.160 --> 00:17:58.480
You can go through and see which ones, why they're hesitant, and so on.

00:17:58.520 --> 00:18:00.420
I'm not going to review that since we already talked so long.

00:18:00.460 --> 00:18:01.820
But there's a lot in this little report that's cool.

00:18:02.060 --> 00:18:02.220
Yeah.

00:18:02.440 --> 00:18:05.740
Well, I'd like to say I'm going to talk about something completely different.

00:18:06.000 --> 00:18:08.740
But we're kind of on a roll here.

00:18:10.020 --> 00:18:17.340
So the topic I want to talk about is PyPI package updates, which is sort of related.

00:18:17.340 --> 00:18:21.280
And this is an article from Artem Golubin.

00:18:21.460 --> 00:18:22.660
Cool last name, Artem.

00:18:22.980 --> 00:18:25.420
Anyway, PyPI packages are increasing rapidly.

00:18:26.200 --> 00:18:37.480
And so Artem is actually working on, he's done a lot, does a lot, but he's working on this project called Hexora, which is a static analysis of malicious Python code.

00:18:37.480 --> 00:18:40.680
And I haven't really tried this out, but it looks interesting.

00:18:40.900 --> 00:18:45.680
Audit project dependencies to catch potential supply chain attacks.

00:18:46.620 --> 00:18:47.660
Analyze IOC.

00:18:47.760 --> 00:18:49.280
I don't know what IOC files are.

00:18:50.080 --> 00:18:50.880
Incident report.

00:18:50.960 --> 00:18:52.360
Oh, security incident reports.

00:18:52.660 --> 00:18:52.860
Anyway.

00:18:52.860 --> 00:18:58.760
He's been using it to audit new packages uploaded to PyPI.

00:18:59.120 --> 00:19:01.680
And so he's been paying attention to new packages.

00:19:01.680 --> 00:19:03.640
And it's dramatically increasing.

00:19:03.640 --> 00:19:07.800
It's like a 30% increase from 2025.

00:19:08.300 --> 00:19:10.520
And we're only, you know, halfway through.

00:19:10.620 --> 00:19:12.600
We're not even halfway through 2026 yet.

00:19:12.600 --> 00:19:17.920
So a real big increase from the previous year.

00:19:17.920 --> 00:19:19.780
And a lot of it is AI related.

00:19:20.320 --> 00:19:22.220
And that's, it's not surprising.

00:19:22.880 --> 00:19:26.520
But he's scanning, scanning a lot of, a lot of these things.

00:19:26.520 --> 00:19:39.980
And a lot of his things that he looks for red flag or red flags around that might be malware are things with eval exec and sub process and excessive uses of those in cases where you definitely, you don't necessarily need it.

00:19:39.980 --> 00:19:48.200
But he's also saying that a lot of that happens with vibe coded stuff, which I'm not sure why, why these vibe coded things are having a lot of that garbage in there.

00:19:48.200 --> 00:19:52.820
But anyway, some interesting increases.

00:19:53.600 --> 00:20:04.720
And, but, but that's, you know, PyPI is not, is like, I would consider one of our commons, our, our commons resources that, but it's not just, it's just as nebulous.

00:20:04.860 --> 00:20:07.200
There's actually maintainers maintaining this.

00:20:07.360 --> 00:20:09.200
So abusing it seems bad.

00:20:09.200 --> 00:20:15.900
And why, one of the things I bring up is there's things that he noticed, which are publishing frequency.

00:20:15.900 --> 00:20:23.680
And, and a lot of these packages are LLM related, but like this isn't just git commits.

00:20:23.840 --> 00:20:25.820
These are actually published to PyPI.

00:20:25.820 --> 00:20:39.480
And a couple of these, some of these, like this, this ESDD client on a couple of days published 392 versions or 389 versions in one day.

00:20:39.480 --> 00:20:41.820
That is, that's, there's no, that's insane.

00:20:42.020 --> 00:20:44.140
There's no, there's no person involved there.

00:20:44.140 --> 00:20:48.780
And I was looking at this thing.

00:20:48.780 --> 00:20:54.620
I was just, I don't, I don't mean to call this thing out, but in the release history, there's only one version.

00:20:54.620 --> 00:20:57.900
why is one version uploaded so many times?

00:20:57.900 --> 00:21:08.800
And one of the other ones that I was looking at, which actually didn't look terrible, but it had, it had, this, why isn't 90 versions in one day?

00:21:08.800 --> 00:21:23.620
Why? anyway, I think that I bring this up because I think that maybe PyPI could, had, have some limits because even, even with the increased workflow possibilities, I can't see a real project having a real reason to publish.

00:21:23.780 --> 00:21:31.640
like maybe you put, like in my case, for instance, I would publish something and maybe I noticed that like, there's a bug, like right away, there's a bug.

00:21:31.640 --> 00:21:44.320
So maybe I have a couple of iterations on a project in a day, but like at most, maybe like, even if it was, I was having a terrible day, maybe three or four versions in a day at most.

00:21:44.500 --> 00:21:49.440
it, I would say if we limit it to like 10, that'd be more than enough for anybody.

00:21:49.580 --> 00:21:55.460
I don't maybe make it super permissive and do 20, but just permit the over the top, you know?

00:21:55.660 --> 00:21:57.480
this just seems insane.

00:21:57.480 --> 00:22:18.120
And I also think that it might, we might even have a, like you were bringing up this attribution of, attributed by Claude or attributed by other, like coauthored by, I think that we could probably look at the, possibly look at the project itself and say, this is, this is not, like make the limit even lower.

00:22:18.120 --> 00:22:21.680
If, if it's coauthored by Claude, you get one a day, man.

00:22:21.860 --> 00:22:22.660
that's it.

00:22:22.660 --> 00:22:29.040
I don't know, but, maybe not one, but yeah, anyway, I think this is a problem.

00:22:29.460 --> 00:22:40.100
Or maybe there's no limit, but you have to go in and manually log in and say after five, you're like, I have to like approve some, you know, hit reset for five more.

00:22:40.200 --> 00:22:40.540
I don't know.

00:22:40.540 --> 00:22:44.520
Just something that requires, you know, with the recapture sort of thing.

00:22:44.520 --> 00:22:44.920
Yeah.

00:22:45.280 --> 00:22:46.400
Like exactly.

00:22:46.640 --> 00:22:50.400
um, some sort of extra authorization for more than that.

00:22:50.520 --> 00:22:52.460
Or just a 2FA token.

00:22:52.660 --> 00:22:52.900
Yeah.

00:22:52.900 --> 00:22:54.060
You already have to have 2FA anyway.

00:22:54.300 --> 00:22:58.520
So, anyway, don't 392, way too many.

00:22:58.620 --> 00:23:00.460
And we shouldn't have even got here.

00:23:00.540 --> 00:23:01.900
So that's it.

00:23:02.060 --> 00:23:03.360
We live in a funny time.

00:23:03.500 --> 00:23:06.100
So how would you maybe submit those?

00:23:06.120 --> 00:23:09.340
You might use HTTPX or would use HTTPXY.

00:23:09.580 --> 00:23:16.000
You might even use HTTPX2, which is not the same as version two, which is being worked on by the original HTTPX folks.

00:23:16.100 --> 00:23:16.740
Oh dear.

00:23:17.040 --> 00:23:18.420
The world is getting more complicated.

00:23:18.420 --> 00:23:23.960
So remember Mikiel had sent over like something that said why I forked HTTPX.

00:23:24.160 --> 00:23:30.060
And I don't remember if you covered it or I covered it, but then I covered a month in or something like that, how it was going.

00:23:30.060 --> 00:23:37.020
So we're back with another post from Mikiel saying, it's been six weeks since I forked HTTPX.

00:23:37.220 --> 00:23:39.160
Named our package HTTPXYZ.

00:23:39.420 --> 00:23:43.280
The Pydantic team has created their own fork, HTTPX2.

00:23:43.500 --> 00:23:50.160
So that's pretty interesting that, the Pydantic team, oh, by the way, we're out in full force at PyCon.

00:23:50.260 --> 00:23:51.100
Like they were all there.

00:23:51.200 --> 00:23:52.280
They're having a lot of cool events.

00:23:52.280 --> 00:23:53.280
So that was great.

00:23:53.280 --> 00:23:57.880
but apparently they also forked HTTPX to HTTPX2.

00:23:58.140 --> 00:23:59.600
And why am I covering this?

00:23:59.640 --> 00:24:02.900
Because I kind of sort of recommended HTTPXYZ, right?

00:24:03.060 --> 00:24:05.760
But I, so I wanted to see what Mikiel's take on this was.

00:24:05.760 --> 00:24:13.940
And it said straight after our fork, conducted Glutex, who among other things is the maintainer of Starlet.

00:24:14.120 --> 00:24:26.560
And if you look over here, the last commit to the HTTPX2 one is from Marcelo here, who is on indeed the maintainer of Starlet, but also works at FastAPI.

00:24:26.840 --> 00:24:29.240
So they said, Hey, we're thinking about doing this as well.

00:24:29.360 --> 00:24:35.380
And Mikiel said, Hey, the reason I started HTTPXYZ is because the impasse with HTTPX and figured something had to be done.

00:24:35.380 --> 00:24:41.180
But now that the, now Pydantic with their skillful team has done this, there's no really point trying to compete with them.

00:24:41.320 --> 00:24:43.140
We'll keep HTTPXYZ up and running.

00:24:43.300 --> 00:24:54.180
But we think that you, where somewhere it says, somewhere it says, I think that HTTPX2 should be the blessed fork of HTTPX, at least.

00:24:54.520 --> 00:24:54.600
Yeah.

00:24:54.620 --> 00:25:00.380
The last line, we'll, we'll fully support HTTPX2 and we'll encourage the community to do the same.

00:25:00.700 --> 00:25:00.800
Yeah.

00:25:00.960 --> 00:25:01.180
Yeah.

00:25:01.460 --> 00:25:02.160
The word blood.

00:25:02.240 --> 00:25:02.900
Oh, it's at the top.

00:25:02.900 --> 00:25:05.140
It's still, while we think HTTPX was definitely needed.

00:25:05.140 --> 00:25:07.340
We welcome HTTPX2, XYZ.

00:25:07.440 --> 00:25:12.100
We welcome HTTPX2 and think that it should be the blessed fork is right at the top.

00:25:12.180 --> 00:25:12.960
That's why I missed it.

00:25:13.060 --> 00:25:13.180
Yeah.

00:25:13.360 --> 00:25:18.060
But so also some differences, a lot of, a lot of interesting changes.

00:25:18.060 --> 00:25:24.340
So they switched from certified to trust store, which this is like the trusted certificates, which is pretty interesting.

00:25:24.340 --> 00:25:34.300
They're switching to compression.zs, Zstandard, ZSTD, Python 3.14 and above, making ZSTD compression default, which is cool.

00:25:34.540 --> 00:25:36.580
I guess as opposed to GZIP, I'm not sure.

00:25:36.960 --> 00:25:41.240
And remember, HTTP core also had to be forked to solve a lot of the problems.

00:25:41.380 --> 00:25:42.860
So I love this trend.

00:25:42.860 --> 00:25:47.480
They vendored in the equivalent of HTTP core into their fork.

00:25:47.660 --> 00:25:49.420
So there's no, there's fewer dependencies.

00:25:49.820 --> 00:25:50.480
That's good.

00:25:50.480 --> 00:25:57.580
Which I think is, honestly, I think it's a trend that we should be trending towards more these days with all the supply chain issues and so on.

00:25:57.800 --> 00:26:04.040
Well, I would caveat that with certain projects and certain project teams should be doing that.

00:26:04.040 --> 00:26:07.600
I certainly think the Pydantic team is able to do that.

00:26:07.860 --> 00:26:17.280
If I were to, like for instance, as an individual developer, vendoring something in means I'm just supporting more code and that might not be a good idea.

00:26:17.520 --> 00:26:18.000
That's true.

00:26:18.300 --> 00:26:31.280
But I find, my feeling, my, this is, it's not backed by raw data, but just my feeling is a lot of people, a lot of projects take on other dependencies because they need two or three functions from those projects.

00:26:31.280 --> 00:26:34.600
They don't need all this, all the stuff this project does and all of its nuance.

00:26:34.820 --> 00:26:35.840
They just need two functions.

00:26:35.940 --> 00:26:38.520
Like the easiest way is to pip install this other thing and just do it.

00:26:38.800 --> 00:26:44.000
With Claude and friends, could you get Claude to write literally those two functions and call it good?

00:26:44.260 --> 00:26:44.620
Probably.

00:26:45.020 --> 00:26:45.180
Yeah.

00:26:45.240 --> 00:26:48.860
And even to pull them out of there to say vendor this, this out, this function.

00:26:49.140 --> 00:26:49.160
Yeah.

00:26:49.260 --> 00:26:50.320
I just need these two functions.

00:26:50.420 --> 00:26:52.580
It's really simple, but I don't want to do it myself.

00:26:53.040 --> 00:26:53.200
Yeah.

00:26:53.320 --> 00:26:53.460
I know.

00:26:53.520 --> 00:26:55.040
That's, that's what I was thinking when I said that.

00:26:55.040 --> 00:27:02.040
So, well, HTPX to the HTPX star evolution continues, Brian.

00:27:02.140 --> 00:27:02.300
I don't know.

00:27:02.320 --> 00:27:03.100
That's all I got to say.

00:27:03.300 --> 00:27:03.440
Yeah.

00:27:03.620 --> 00:27:05.940
It's pretty extra, you know, pretty extra.

00:27:06.400 --> 00:27:07.640
How about you got extras?

00:27:07.800 --> 00:27:09.240
I do have extras.

00:27:09.360 --> 00:27:14.400
You're doing like, let's just laying up these transitions and I'm missing them fumbling the ball.

00:27:14.400 --> 00:27:23.160
but, a few extras, we've talked about Pyrefly many times, but, Pyrefly, 1.0 is here.

00:27:23.340 --> 00:27:26.680
So the, it's no longer at, it's no longer zero over.

00:27:26.820 --> 00:27:33.900
and according to their, post, it means that they're confident that Pyrefly is ready for production used.

00:27:33.900 --> 00:27:38.500
And I think both of us have already tried it anyway, but, I guess, what does that mean for me?

00:27:38.540 --> 00:27:41.720
I'm, I have no problem with recommending it in a work environment.

00:27:41.720 --> 00:27:45.580
I don't really need non zero over actually.

00:27:45.740 --> 00:27:49.860
We give people a bad time for zero over, but there's a lot of stuff that we use that server anyway.

00:27:50.040 --> 00:27:53.360
But anyway, fire, Pyrefly is now 1.0.

00:27:53.560 --> 00:27:53.680
Great.

00:27:53.920 --> 00:28:00.360
The Django, we've talked about the PSF survey, with the PSF and JetBrains.

00:28:00.500 --> 00:28:03.220
this today, I'm going to talk about the Django.

00:28:03.360 --> 00:28:10.220
I'm not going to talk about it much, but the Django survey, with, also in conjunction with JetBrains is up now.

00:28:10.220 --> 00:28:16.940
So, if you are Django, if you involved with Django at all or use it, go ahead and take the Django survey.

00:28:16.940 --> 00:28:22.940
And that, that helps the Django foundation and all of us understand what everybody's doing with Django better.

00:28:23.280 --> 00:28:26.960
The last thing is just something I thought was some sort of funny.

00:28:27.080 --> 00:28:29.180
I, I'm not anti AI.

00:28:29.180 --> 00:28:35.340
I, I, I, I, I'm still on the fence on this, but I'm utilizing it to help code and stuff.

00:28:35.340 --> 00:28:37.420
But anyway, this is a funny article.

00:28:37.560 --> 00:28:40.500
I thought the four horsemen of the LLM apocalypse.

00:28:41.520 --> 00:28:48.960
and, let's see what we got, war, famine, death, pestilence, and a questionable fifth horseman.

00:28:48.960 --> 00:28:50.880
But, the war is bot armies.

00:28:51.180 --> 00:28:55.480
you can go ahead and read all this, but, the bot armies that are definitely real.

00:28:55.920 --> 00:29:00.200
the, there's a side note of order of battle.

00:29:00.340 --> 00:29:00.800
Interesting.

00:29:01.100 --> 00:29:09.020
Anyway, famine is shortages because we're seeing, we're seeing shortages based on, based on LLM use and AI use and stuff.

00:29:09.260 --> 00:29:11.260
Scarcity of jobs, all sorts of things.

00:29:11.260 --> 00:29:18.380
death of security and copyright and hopefully, hopefully not sick death of software jobs, but we'll see.

00:29:18.640 --> 00:29:22.360
pestilence slop is AI slop, vibe coded slop.

00:29:22.500 --> 00:29:26.240
And, you know, in our role, I actually see a lot of that.

00:29:26.240 --> 00:29:29.080
A lot of the projects that I want to review that sound neat.

00:29:29.180 --> 00:29:30.600
It's just garbage in there.

00:29:30.600 --> 00:29:31.700
So we don't review them.

00:29:31.860 --> 00:29:34.340
and then, this, this is really funny.

00:29:34.400 --> 00:29:35.220
The fifth horseman.

00:29:35.320 --> 00:29:36.520
What is the fifth horseman?

00:29:36.620 --> 00:29:41.000
So yeah, apparently there were, he's the person said, if no.

00:29:41.000 --> 00:29:49.220
In researching the article, looked up the four horsemen and found, the original seems to have been either, was famine, war, death and conquest.

00:29:49.560 --> 00:29:59.900
but he, he thought it was something death, but he realized that his, his reference was, Metallica and maybe Metallica might not be the best reference.

00:30:00.260 --> 00:30:01.140
It's pretty great.

00:30:01.280 --> 00:30:05.060
Anyway, I thought it was an amusing article, so I included it here.

00:30:05.300 --> 00:30:05.420
Yeah.

00:30:05.460 --> 00:30:05.740
How about you?

00:30:05.940 --> 00:30:07.180
That is a pretty, yeah.

00:30:07.280 --> 00:30:07.620
Gottsin.

00:30:07.660 --> 00:30:08.420
That's pretty interesting.

00:30:08.740 --> 00:30:10.100
real time followup here.

00:30:10.100 --> 00:30:24.960
I just heard that former Google CEO, Eric Schmidt was booed during like aggressively booed during the commencement speech when he talked about, the emergence of AI to the technological transformation being brought around by the computer.

00:30:25.220 --> 00:30:26.460
people didn't love it.

00:30:26.580 --> 00:30:32.020
All the graduates who were like, we're graduating and can't get a job because AI is taking all the jobs.

00:30:32.020 --> 00:30:34.500
So, don't go tell me how lovely it is.

00:30:34.940 --> 00:30:35.180
Yeah.

00:30:35.740 --> 00:30:38.400
I haven't seen this, but I saw that headline this morning.

00:30:38.780 --> 00:30:41.740
My extras are Brian notes right in the middle here.

00:30:41.780 --> 00:30:47.700
If you go to Talk Python Training and go to courses, there's a coming soon label on the heat.

00:30:47.700 --> 00:30:50.260
Web security with agentic AI.

00:30:50.680 --> 00:30:50.840
Hmm.

00:30:51.120 --> 00:30:58.500
So I'm, I, people really liked my agentic AI programming course, you know, like how do you do AI programming, but engineering, not vibey.

00:30:58.720 --> 00:31:00.560
And I think it's pretty powerful.

00:31:00.560 --> 00:31:06.000
So I thought, and this is before mythos got announced by the way, but it takes a while to record these.

00:31:06.100 --> 00:31:06.600
So here it is.

00:31:06.620 --> 00:31:07.660
It's the timings lining up.

00:31:08.200 --> 00:31:17.740
What if you go through the OWASP top 10 for the top 10 security vulnerability categories, study them without AI, just study like all the issues with the Python focus.

00:31:17.740 --> 00:31:26.660
And then said, well, how can we use things like cloud opus and others to actually scan our code, find these bugs, find these security vulnerabilities and fix them.

00:31:26.660 --> 00:31:28.440
And then maybe do some real world examples.

00:31:28.600 --> 00:31:29.640
So that's what that course is about.

00:31:29.820 --> 00:31:31.100
And it'll be out pretty soon.

00:31:31.860 --> 00:31:37.120
So people should go over, I linked to it, to the newsletter over on Talk Python Training and, you know, be sure they're on it.

00:31:37.120 --> 00:31:37.760
So they hear about it.

00:31:38.000 --> 00:31:40.240
Now you want to hear about proud parents.

00:31:40.620 --> 00:31:40.920
Yeah.

00:31:41.200 --> 00:31:42.340
This is a, this is a good joke.

00:31:42.440 --> 00:31:45.540
And, not even, this is not even an AI thing.

00:31:45.540 --> 00:31:48.180
It's just, just a joke for programmers.

00:31:48.400 --> 00:31:49.320
So here it is.

00:31:49.580 --> 00:31:52.280
Somebody took a picture of their kid's drawings.

00:31:52.360 --> 00:31:55.040
And these are like, I don't know, five, six year old kid drawings.

00:31:55.120 --> 00:31:57.620
And the kid labeled, numbered the page.

00:31:57.720 --> 00:31:59.740
So I guess it was like a cartoon story or whatever.

00:31:59.840 --> 00:32:03.100
So there's like trees and buildings, but what are the numbers here?

00:32:03.420 --> 00:32:04.360
Oh, awesome.

00:32:04.820 --> 00:32:06.280
There's zero, one, and two.

00:32:06.560 --> 00:32:06.820
Yeah.

00:32:06.840 --> 00:32:08.360
Page zero, page one, and two.

00:32:08.500 --> 00:32:11.780
And so the joke is, this is how I was seven years.

00:32:11.840 --> 00:32:12.020
Okay.

00:32:12.220 --> 00:32:14.540
This is my seven year old son number of drawings.

00:32:14.540 --> 00:32:16.260
I've never been more proud.

00:32:16.660 --> 00:32:16.960
Yeah.

00:32:17.140 --> 00:32:18.080
I would be so proud too.

00:32:18.300 --> 00:32:20.280
And then the comments are so good.

00:32:20.580 --> 00:32:22.680
That would never come off my fridge.

00:32:22.960 --> 00:32:26.200
At age 90, it would still be there, says someone else.

00:32:26.660 --> 00:32:26.940
Yeah.

00:32:27.800 --> 00:32:28.160
Yep.

00:32:28.480 --> 00:32:31.460
It looks like, we got Matthew McConaughey, Leonardo da Vinci.

00:32:31.520 --> 00:32:32.440
All of them give me a little nod.

00:32:32.520 --> 00:32:32.900
Like, mm-hmm.

00:32:33.160 --> 00:32:33.380
Yep.

00:32:33.460 --> 00:32:33.880
That's right.

00:32:34.120 --> 00:32:35.380
David Abra, I think was in there.

00:32:35.620 --> 00:32:36.900
Future programmer unlocked.

00:32:37.340 --> 00:32:38.080
That kid has potential.

00:32:38.080 --> 00:32:46.940
You know, I was wondering, like, so I was just recently in Munich and, and I don't think it's just Germany, but I think it's a lot of European countries.

00:32:46.940 --> 00:32:47.940
Maybe I'm wrong.

00:32:48.160 --> 00:32:52.060
That, like number their elevators, like the ground floor is zero.

00:32:52.200 --> 00:32:58.140
And, and then it goes, the first floor is one up and the basement is negative one.

00:32:58.220 --> 00:33:00.080
I just, we don't do that in America.

00:33:00.080 --> 00:33:05.200
And I think that maybe we'd have better math scores if we numbered the elevator starting at zero.

00:33:05.200 --> 00:33:08.480
yeah, I do love the negative as well.

00:33:08.540 --> 00:33:09.360
That's, that's right.

00:33:09.520 --> 00:33:10.280
That is right.

00:33:10.480 --> 00:33:11.460
Negative one, negative two.

00:33:11.640 --> 00:33:12.500
But yeah, they do.

00:33:12.580 --> 00:33:13.280
That's, that's common.

00:33:13.440 --> 00:33:17.460
And it's, it takes a little getting used to, but I kind of like it too, honestly.

00:33:17.660 --> 00:33:17.840
Yeah.

00:33:18.620 --> 00:33:20.440
It might help out with math.

00:33:20.680 --> 00:33:21.140
Just saying.

00:33:21.920 --> 00:33:23.500
It's a good thing we don't need any help with math.

00:33:24.240 --> 00:33:25.240
Everyone's so good at it.

00:33:25.400 --> 00:33:25.740
Oh yeah.

00:33:26.020 --> 00:33:28.280
And with that, we're going to finish up this 10 minute episode.

00:33:28.280 --> 00:33:29.040
I'll talk to you later.

00:33:30.640 --> 00:33:30.960
Bye.
