WEBVTT

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

00:00:05.840 --> 00:00:11.180
This is episode 396, recorded August 13, 2024.

00:00:11.180 --> 00:00:12.380
I'm Michael Kennedy.

00:00:12.380 --> 00:00:13.500
And I'm Brian Okken.

00:00:13.500 --> 00:00:17.580
And this episode is brought to you by Scout APM.

00:00:17.580 --> 00:00:21.460
Thank you to Scout for their continued support of the show.

00:00:21.460 --> 00:00:23.620
Check out their link in the show notes.

00:00:23.620 --> 00:00:24.920
We'll tell you more about them later.

00:00:24.920 --> 00:00:28.980
If you want to follow us on the socials, you can find us all over on Mastodon.

00:00:28.980 --> 00:00:31.260
Links at the top of the show notes.

00:00:31.260 --> 00:00:36.080
And we are on X, although less active than we are on Mastodon, I would say.

00:00:36.080 --> 00:00:41.520
When we catch the live show, you can do that at pythonbytes.fm/live.

00:00:41.520 --> 00:00:46.680
And it takes you either to the old ones or lets you know about the new one if it's running right there.

00:00:46.680 --> 00:00:50.980
So we appreciate when people are there, but audio always, always works as well.

00:00:50.980 --> 00:00:52.280
Brian, how are you doing?

00:00:52.280 --> 00:00:53.400
I'm good.

00:00:53.400 --> 00:00:54.220
Yeah?

00:00:54.220 --> 00:00:56.640
I didn't know we were still on X.

00:00:56.640 --> 00:00:57.900
Well.

00:00:57.960 --> 00:00:59.240
You're on X.

00:00:59.240 --> 00:01:00.900
Here's the thing.

00:01:00.900 --> 00:01:02.900
Oh, see, you're not on X anymore, okay?

00:01:02.900 --> 00:01:04.020
Did you actually delete your account?

00:01:04.020 --> 00:01:08.320
I have an account, but I check it like every other month or something like that.

00:01:08.320 --> 00:01:08.660
So.

00:01:08.660 --> 00:01:11.720
I still get notifications if people will at mention me.

00:01:11.720 --> 00:01:12.400
Oh, okay.

00:01:12.400 --> 00:01:13.400
I'll see it.

00:01:13.400 --> 00:01:17.080
I don't like drop in and cruise through there as much.

00:01:17.080 --> 00:01:23.760
I'd be happy on Mastodon, but there's just, I would say 75% of the people that follow us,

00:01:23.760 --> 00:01:28.420
interact with us, at least through the show account, probably didn't make the transition.

00:01:28.420 --> 00:01:29.280
Okay.

00:01:29.460 --> 00:01:30.820
I should pay attention more.

00:01:30.820 --> 00:01:31.480
So apologies.

00:01:31.480 --> 00:01:32.540
Still there for them.

00:01:32.540 --> 00:01:33.020
Yeah.

00:01:33.020 --> 00:01:34.160
We're still there for them.

00:01:34.160 --> 00:01:34.540
Okay.

00:01:34.540 --> 00:01:35.020
Good.

00:01:35.020 --> 00:01:37.360
That's all I meant by it.

00:01:37.360 --> 00:01:37.700
Okay.

00:01:37.700 --> 00:01:38.220
All right.

00:01:38.220 --> 00:01:39.820
Well, let's kick it off with your first item.

00:01:39.820 --> 00:01:40.320
Okay.

00:01:40.460 --> 00:01:45.880
I want to talk, I think I already, I covered uv, a uv article yesterday, a lot yesterday.

00:01:45.880 --> 00:01:46.100
Yeah.

00:01:46.100 --> 00:01:46.560
Last week.

00:01:46.560 --> 00:01:47.320
Well, it's the summertime.

00:01:47.320 --> 00:01:51.780
You got to be real careful about your uv index and put it on your, oh, wait, no, not that.

00:01:51.780 --> 00:01:52.300
I love uv.

00:01:52.300 --> 00:01:52.720
Oh my God.

00:01:52.720 --> 00:01:54.140
We could put together a uv index.

00:01:54.140 --> 00:01:58.000
It'd be like the, that would be awesome.

00:01:58.000 --> 00:01:59.780
Anyway.

00:01:59.780 --> 00:02:03.840
So I saw this article, Python packaging is great now.

00:02:03.840 --> 00:02:05.620
UV is all you need.

00:02:05.620 --> 00:02:08.120
And I'm like, I don't know.

00:02:08.400 --> 00:02:11.100
It seems like a little silver bullet dish for me.

00:02:11.100 --> 00:02:13.800
But I took a look at it anyway.

00:02:13.800 --> 00:02:17.640
This is from Juan Luis Cano Rodriguez.

00:02:17.640 --> 00:02:20.600
Awesome name and cool profile picture.

00:02:20.600 --> 00:02:20.900
Anyway.

00:02:20.900 --> 00:02:28.940
So uv, what is, we like to bash on packaging, but it's just continually getting better.

00:02:28.940 --> 00:02:34.640
And especially with people like Brett Cannon trying to continue to make it better.

00:02:34.840 --> 00:02:39.640
It's going to, and people at uv at Astral making uv better.

00:02:39.640 --> 00:02:41.460
But what, so what is this about?

00:02:41.460 --> 00:02:46.840
This article, I didn't really want to completely cover the article, but there's some pretty cool

00:02:46.840 --> 00:02:47.340
stuff here.

00:02:47.340 --> 00:02:54.080
So bootstrapping, getting a project started is difficult sometimes or knowing what to do.

00:02:54.080 --> 00:03:00.960
And, and I've been using a uv for making virtual environments, but, and it's really fast at that.

00:03:00.960 --> 00:03:03.280
But I took another look at it.

00:03:03.280 --> 00:03:07.620
There's been some updates that I didn't know it did some, some cool stuff.

00:03:07.620 --> 00:03:11.780
So one of the highlights here is uv Python.

00:03:11.780 --> 00:03:13.520
It manages Python versions.

00:03:13.520 --> 00:03:15.620
And I'm like, what it does what?

00:03:15.620 --> 00:03:18.120
So I went and checked it out.

00:03:18.120 --> 00:03:25.440
And you can, so you don't even have to, so you can go down and say uv Python install and

00:03:25.440 --> 00:03:27.780
it installs Python versions for you.

00:03:27.780 --> 00:03:30.500
And it's really fast, but you don't have to.

00:03:30.500 --> 00:03:32.420
And I'll tell you why in just a sec.

00:03:32.820 --> 00:03:38.540
You can, you can install it like that, but you can also say uv Python list and it lists

00:03:38.540 --> 00:03:41.160
all the Python versions that it can find on your system.

00:03:41.160 --> 00:03:48.500
But if you say uv, V, E, and V, so creating a virtual environment, you can give it a Python

00:03:48.500 --> 00:03:50.200
flag with a, with a number.

00:03:50.200 --> 00:03:52.420
So you can do list to edit time.

00:03:52.420 --> 00:03:57.280
And it tells you not only what versions are there, but also what versions it has available.

00:03:57.280 --> 00:04:02.800
So you can, you can say like, if you don't have 3.11 on your system, you can,

00:04:02.800 --> 00:04:05.960
you can say 3.11 anyway, and it'll install it.

00:04:05.960 --> 00:04:07.840
I'm like, does that really work?

00:04:07.840 --> 00:04:08.940
So I checked it out.

00:04:08.940 --> 00:04:09.580
I tried it.

00:04:09.580 --> 00:04:15.720
I personally, it, it said that it would just do it automatically if it wasn't there.

00:04:15.720 --> 00:04:18.520
But I had to add the Python.

00:04:18.520 --> 00:04:23.300
There's a flag called Python preference managed, and it's listed here somewhere.

00:04:23.300 --> 00:04:26.500
Anyway, Python preference managed.

00:04:26.500 --> 00:04:28.420
Dash to ask Python preference.

00:04:28.420 --> 00:04:30.520
And then you can say uv managed.

00:04:30.520 --> 00:04:31.340
Yeah.

00:04:31.400 --> 00:04:33.960
Only managed or managed system or only system.

00:04:33.960 --> 00:04:34.400
Gotcha.

00:04:34.400 --> 00:04:34.960
Awesome.

00:04:34.960 --> 00:04:35.460
Yeah.

00:04:35.460 --> 00:04:35.520
Yeah.

00:04:35.520 --> 00:04:37.520
Python preference.

00:04:37.520 --> 00:04:42.920
But if you say managed, which is supposedly the default, but I had to pass it in anyway,

00:04:42.920 --> 00:04:43.800
it just does it.

00:04:43.800 --> 00:04:45.620
So I'm like, this is cool.

00:04:45.720 --> 00:04:50.280
And I installed like six versions of Python on my Mac yesterday in seconds.

00:04:50.280 --> 00:04:54.160
And just, just to have fun to create virtual environments.

00:04:54.160 --> 00:04:56.500
And, and it's just neat.

00:04:56.500 --> 00:05:02.240
So I only really need a Python with, I usually use Python within virtual environments.

00:05:02.240 --> 00:05:06.380
So being able to just install one into a virtual environment is cool.

00:05:07.160 --> 00:05:09.380
So what else can we do?

00:05:09.380 --> 00:05:16.720
So the, there's other things that uv can do that, like it can initialize a pyproject.toml

00:05:16.720 --> 00:05:17.280
for you.

00:05:17.280 --> 00:05:23.100
And it sets up, if you do a knit, it sets up pyproject.toml and a readme and a source layout.

00:05:23.100 --> 00:05:25.080
It doesn't do a lot, but it gets you started.

00:05:25.780 --> 00:05:29.040
The, the thing that I thought was neat is add.

00:05:29.040 --> 00:05:34.320
So you can add dependencies to your pyproject.toml with uv add.

00:05:34.320 --> 00:05:36.980
And so you don't have to look up the syntax for it.

00:05:36.980 --> 00:05:40.900
The other cool thing about it is you can give it the dev flag.

00:05:40.900 --> 00:05:43.360
You can say uv add --dev.

00:05:43.360 --> 00:05:45.820
Like you can say --dev py test.

00:05:45.820 --> 00:05:50.660
And it'll add py test to your development dependencies, which is neat.

00:05:50.660 --> 00:05:55.580
So I guess I was going to say packaging is not solved with uv.

00:05:55.740 --> 00:05:57.360
But maybe, maybe it is.

00:05:57.360 --> 00:05:58.940
There's some pretty cool stuff.

00:05:58.940 --> 00:06:00.140
This is awesome.

00:06:00.140 --> 00:06:00.380
Yeah.

00:06:00.380 --> 00:06:07.720
If you look up, if you say uv help, there's a whole bunch of experimental, experimental items

00:06:07.720 --> 00:06:08.540
through here.

00:06:08.540 --> 00:06:10.800
So there's run, a knit add.

00:06:10.800 --> 00:06:12.680
A lot of these are experimental features.

00:06:12.680 --> 00:06:13.880
Tree is cool.

00:06:13.880 --> 00:06:17.380
You can do a project dependency tree using uv.

00:06:17.380 --> 00:06:22.200
So there's a lot of stuff that I used to use other tools for that uv is doing.

00:06:22.200 --> 00:06:23.200
So kind of cool.

00:06:23.200 --> 00:06:24.920
Locking, creating lockout.

00:06:25.700 --> 00:06:25.840
Self.

00:06:25.840 --> 00:06:26.380
I like it.

00:06:26.380 --> 00:06:27.440
What does Self do?

00:06:27.440 --> 00:06:29.680
Manage the uv executable itself.

00:06:29.680 --> 00:06:30.800
Oh, yeah.

00:06:30.800 --> 00:06:31.300
Okay.

00:06:31.300 --> 00:06:34.020
So there was a lot of drama, honestly.

00:06:34.020 --> 00:06:38.120
Not on our show, but on the mailing lists when this was announced.

00:06:38.120 --> 00:06:39.960
With uv Python?

00:06:39.960 --> 00:06:40.720
Or UV?

00:06:40.720 --> 00:06:40.940
No.

00:06:40.940 --> 00:06:42.120
With uv pip.

00:06:42.120 --> 00:06:42.900
UV pip.

00:06:42.900 --> 00:06:43.260
Yeah.

00:06:43.260 --> 00:06:43.880
Yeah.

00:06:44.000 --> 00:06:44.240
Yeah.

00:06:44.240 --> 00:06:44.260
Yeah.

00:06:44.260 --> 00:06:44.340
Yeah.

00:06:44.340 --> 00:06:44.560
Yeah.

00:06:44.560 --> 00:06:44.640
Yeah.

00:06:44.640 --> 00:06:44.680
Yeah.

00:06:44.680 --> 00:06:53.180
And so the reason that Charlie and team chose uv pip as part of the CLI interface as a sub-command

00:06:53.180 --> 00:06:56.020
was so that they had space to do all these other things.

00:06:56.020 --> 00:07:00.360
So if you just said uv install, well, is that install the Python thing?

00:07:00.360 --> 00:07:01.840
Is that install a package?

00:07:01.840 --> 00:07:02.240
Oh, yeah.

00:07:02.240 --> 00:07:02.500
Yeah.

00:07:02.500 --> 00:07:03.240
Right.

00:07:03.240 --> 00:07:03.300
Right.

00:07:03.300 --> 00:07:08.980
And so they put that in there as almost like a namespace for all their commands and stuff.

00:07:08.980 --> 00:07:12.560
And how much new stuff is under these experimental sections?

00:07:12.560 --> 00:07:16.100
Starting to feel like, okay, this is what they had in mind, right?

00:07:16.480 --> 00:07:16.680
Yeah.

00:07:16.680 --> 00:07:17.220
Yeah.

00:07:17.220 --> 00:07:23.800
So the experimental part makes me nervous to put it into my normal everyday workflow a

00:07:23.800 --> 00:07:24.220
little bit.

00:07:24.220 --> 00:07:26.840
But for personal workflow stuff, why not play with it?

00:07:26.840 --> 00:07:27.640
Yeah.

00:07:27.640 --> 00:07:32.480
As you're going through this and seeing this title, Python Packaging is great.

00:07:32.480 --> 00:07:33.400
UV is all you need.

00:07:33.400 --> 00:07:34.920
I think it's all I use these days.

00:07:34.920 --> 00:07:36.140
I don't think I use anything else.

00:07:36.140 --> 00:07:42.120
There are some systems that the whole, especially with certain firewalls, that I know you can get

00:07:42.120 --> 00:07:46.200
around it with uv, but there are some systems that I work on where I have trouble working

00:07:46.200 --> 00:07:48.920
with uv, but pip works fine.

00:07:48.920 --> 00:07:50.120
Oh, interesting.

00:07:50.120 --> 00:07:50.580
Okay.

00:07:50.580 --> 00:07:51.060
Yeah.

00:07:51.060 --> 00:07:57.000
I have basically three or four, maybe four or five aliases that are just like two or three

00:07:57.000 --> 00:08:01.980
letters that will do all the combination, like the full commands with this and that.

00:08:01.980 --> 00:08:04.320
So those used to be pip commands.

00:08:04.320 --> 00:08:06.960
Now they're uv pip with the different parameters and stuff.

00:08:06.960 --> 00:08:07.380
Yeah.

00:08:07.480 --> 00:08:15.320
So when uv pip started, came, I tried to alias pip to uv pip and same with virtual environment,

00:08:15.320 --> 00:08:18.300
but I realized that I kind of like control.

00:08:18.300 --> 00:08:20.380
I like to be able to use both.

00:08:20.380 --> 00:08:23.360
So I just sort of taught myself these uv commands.

00:08:23.360 --> 00:08:24.100
Yeah.

00:08:24.100 --> 00:08:24.920
Yeah.

00:08:24.920 --> 00:08:25.540
Sounds good.

00:08:25.540 --> 00:08:27.160
Not too hard, is it?

00:08:27.160 --> 00:08:27.620
All right.

00:08:27.620 --> 00:08:35.040
Well, I have a set of bookends around Python versions to start and end the show here.

00:08:35.040 --> 00:08:41.320
So let's start with Python 312.5 was out just last week.

00:08:41.320 --> 00:08:44.020
Came out right after the show was released, I think.

00:08:44.020 --> 00:08:50.040
So we didn't cover it, but yeah, here we have a brand new version of the most recent version,

00:08:50.040 --> 00:08:50.700
Python.

00:08:50.700 --> 00:08:52.000
And I just checked, by the way.

00:08:52.000 --> 00:08:52.320
What?

00:08:52.320 --> 00:08:53.100
Yeah.

00:08:53.100 --> 00:08:57.260
And I just checked with the uv Python list.

00:08:57.720 --> 00:09:03.860
And I think 312.4 is the latest there, just to give you a sense that like one week into

00:09:03.860 --> 00:09:05.420
it, apparently we don't have the latest.

00:09:05.420 --> 00:09:09.080
I was kind of hoping like that thing would be super cutting edge on top of it.

00:09:09.080 --> 00:09:12.640
So, but I wonder if I, you know what?

00:09:12.640 --> 00:09:17.500
It's possible that my uv is over a week out of date and it doesn't know, right?

00:09:17.500 --> 00:09:17.980
Something like that.

00:09:17.980 --> 00:09:18.360
I don't know.

00:09:18.500 --> 00:09:20.900
Anyway, 312.5 is out.

00:09:20.900 --> 00:09:24.120
And if you scroll through, I'm linking to the release notes.

00:09:24.120 --> 00:09:30.940
Sometimes it's hard to find like what is actually changed in say 312.4 to 312.5.

00:09:31.300 --> 00:09:36.540
Because if you go to the, if you go to python.org and click on downloads, a lot of times it'll

00:09:36.540 --> 00:09:38.460
just show like, well, here's what's new for 312.

00:09:38.460 --> 00:09:39.320
You're like, great.

00:09:39.320 --> 00:09:42.800
And from the last one that I had to this, what was that?

00:09:42.800 --> 00:09:46.000
But if you go and you can find the release notes, which I'm linking to.

00:09:46.000 --> 00:09:52.660
And so there are a lot of releases and changes in just this minor point release.

00:09:52.660 --> 00:09:55.420
So we've got a bunch of tests that are fixed.

00:09:55.420 --> 00:09:56.060
How about that, Brian?

00:09:56.060 --> 00:09:57.080
That's great.

00:09:57.080 --> 00:09:57.640
Yeah.

00:09:57.780 --> 00:10:01.280
Two different security improvements, patches, I guess.

00:10:01.280 --> 00:10:04.000
You know, they're not, don't think they have CVEs.

00:10:04.000 --> 00:10:05.820
So there must not be too bad.

00:10:05.820 --> 00:10:09.480
Like audit, like missing audit events around certain behaviors.

00:10:09.480 --> 00:10:13.880
Like, okay, so you couldn't audit it properly, but it's not, it's not a, you know, all your

00:10:13.880 --> 00:10:15.400
bases are belong to us sort of thing.

00:10:15.400 --> 00:10:17.520
A bunch of stuff in the library.

00:10:17.520 --> 00:10:19.740
So for example, a new version of pip.

00:10:19.740 --> 00:10:24.640
So for just a moment, just briefly, when you create a virtual environment, I won't say your

00:10:24.640 --> 00:10:25.360
pip is out of date.

00:10:25.640 --> 00:10:31.160
But this, things like this, fix crash when importing SSL after the main interpreter starts.

00:10:31.160 --> 00:10:31.640
Hmm.

00:10:31.640 --> 00:10:33.340
Might want to have that not happen.

00:10:33.340 --> 00:10:36.380
Handle value errors raised by os.stat.

00:10:36.380 --> 00:10:38.900
Fix some error messages in pickle.

00:10:38.900 --> 00:10:40.640
Here's one that's worth paying attention to.

00:10:40.640 --> 00:10:44.860
Fix a seg fault in async io.taskit coroutine.

00:10:44.860 --> 00:10:45.540
Okay.

00:10:45.540 --> 00:10:50.520
You know, a lot of times you think of, at least I think one of the really huge advantages of

00:10:50.520 --> 00:10:54.940
Python is when stuff goes wrong, your program doesn't just go poof and go away.

00:10:54.940 --> 00:10:56.680
It, it reports the error.

00:10:56.680 --> 00:10:57.880
It gives you a chance to catch it.

00:10:57.880 --> 00:10:58.040
Right.

00:10:58.040 --> 00:11:00.960
You like this Python itself doesn't die.

00:11:00.960 --> 00:11:04.020
It knows it's something's gone terribly wrong and it shuts down.

00:11:04.020 --> 00:11:04.260
Right.

00:11:04.260 --> 00:11:07.860
But the Python, cpython seg faults, then it just goes poof and goes away.

00:11:07.860 --> 00:11:09.360
So there's a ton of stuff like this.

00:11:09.360 --> 00:11:12.680
So I just wanted to call, call people's attention to all the changes here.

00:11:12.680 --> 00:11:15.380
And there's even some that look like performance.

00:11:15.380 --> 00:11:18.020
For example, what was it?

00:11:18.020 --> 00:11:18.900
f-strings.

00:11:18.900 --> 00:11:25.320
If you have an F string that has just one entry into it, it, I think it used to create an abstract

00:11:25.320 --> 00:11:27.460
syntax tree to try to build it up.

00:11:27.460 --> 00:11:31.120
And they're like, not really needed all that stuff for a single F string.

00:11:31.120 --> 00:11:33.960
Our F string was single, entry in it.

00:11:34.320 --> 00:11:39.420
So, yeah, that's, that's going to be a nice performance improvement as well.

00:11:39.420 --> 00:11:40.340
Is it a dash?

00:11:40.340 --> 00:11:41.140
How do they F string it?

00:11:41.140 --> 00:11:41.500
Yeah.

00:11:41.500 --> 00:11:43.600
So anyway, these are all good things.

00:11:43.600 --> 00:11:44.680
Yeah, definitely.

00:11:44.680 --> 00:11:45.260
Yeah.

00:11:45.260 --> 00:11:49.020
f-strings are getting, getting, getting more secure, more fast, more faster, better.

00:11:49.020 --> 00:11:50.380
Faster, better, stronger.

00:11:50.380 --> 00:11:51.460
We have the technology.

00:11:51.460 --> 00:11:52.380
We can rebuild it.

00:11:52.380 --> 00:11:52.720
Okay.

00:11:52.720 --> 00:11:55.980
Can you even imagine going back to the time before f-strings?

00:11:55.980 --> 00:11:57.600
It was a dark time.

00:11:57.600 --> 00:11:59.440
It was a dark time.

00:11:59.440 --> 00:12:04.240
My percent, my percent key still has no, no, characters on it.

00:12:04.240 --> 00:12:04.880
No, just kidding.

00:12:04.880 --> 00:12:06.380
Yeah.

00:12:06.380 --> 00:12:06.820
Yeah.

00:12:06.820 --> 00:12:07.180
Indeed.

00:12:07.180 --> 00:12:07.780
Okay.

00:12:07.780 --> 00:12:12.080
And before we go on to the next one, you were probably going to give us some really awesome

00:12:12.080 --> 00:12:17.640
segue there, but let's talk about, Scott APM before we move on.

00:12:17.640 --> 00:12:17.960
Okay.

00:12:17.960 --> 00:12:21.600
Let me tell you real quick about doubt APM.

00:12:21.600 --> 00:12:23.720
They're big supporters of Python bytes.

00:12:23.720 --> 00:12:25.260
So we appreciate that very much.

00:12:25.260 --> 00:12:31.040
So if you are tired of spending hours trying to find the root cause of issues impacting your

00:12:31.040 --> 00:12:34.340
performance, then you owe it to yourself to check out scout APM.

00:12:34.340 --> 00:12:40.520
They're a leading Python application performance monitoring tool, APM, that helps you identify

00:12:40.520 --> 00:12:43.540
and solve performance abnormalities faster and easier.

00:12:43.540 --> 00:12:48.840
Scout APM ties bottlenecks such as memory leaks, slow database queries, background jobs,

00:12:49.000 --> 00:12:51.900
and the dreaded N plus one queries that you can end up.

00:12:51.900 --> 00:12:56.820
If you do lazy loading in your ORM, then you say, Oh no, why is it so slow?

00:12:56.820 --> 00:12:59.160
Why are you doing 200 database queries for what should be one?

00:12:59.160 --> 00:13:00.580
So you can find out things like that.

00:13:00.580 --> 00:13:02.420
And it links it back directly to source code.

00:13:02.420 --> 00:13:07.440
So you can spend less time in the debugger and healing logs and just finding the problems

00:13:07.440 --> 00:13:07.980
and moving on.

00:13:07.980 --> 00:13:10.960
And you'll love it because it's built for developers by developers.

00:13:10.960 --> 00:13:12.620
It makes it easy to get set up.

00:13:12.620 --> 00:13:15.140
Seriously, you can do it in less than four minutes.

00:13:15.140 --> 00:13:15.960
So that's awesome.

00:13:15.960 --> 00:13:19.060
And the best part is the pricing is straightforward.

00:13:19.060 --> 00:13:24.520
You only pay for the data that you use with no hidden overage fees or per seat pricing.

00:13:24.520 --> 00:13:26.940
And I just learned this, Brian.

00:13:27.020 --> 00:13:32.080
They also have, they provide the pro version for free to all open source projects.

00:13:32.080 --> 00:13:36.600
So if you're an open source maintainer and you want to have Scout APM for that project,

00:13:36.600 --> 00:13:39.500
just shoot them a message or something on their pricing page about that.

00:13:39.500 --> 00:13:43.380
So you can start your free trial and get instant insights today.

00:13:43.380 --> 00:13:46.060
Visit pythonbytes.fm/scout.

00:13:46.060 --> 00:13:48.300
The link is in your podcast player show notes as well.

00:13:48.300 --> 00:13:49.720
And please use that link.

00:13:49.720 --> 00:13:53.680
Don't just search for them because otherwise they don't think you came from us.

00:13:53.680 --> 00:13:55.260
And then they'd stop supporting the show.

00:13:55.340 --> 00:13:57.820
So please use our link pythonbytes.fm/scout.

00:13:57.820 --> 00:13:58.760
Check them out.

00:13:58.760 --> 00:14:00.700
It really supports the show.

00:14:00.700 --> 00:14:01.700
Over to you, Brian.

00:14:01.700 --> 00:14:02.640
All righty.

00:14:02.640 --> 00:14:04.960
I want to talk about Tox a little bit.

00:14:04.960 --> 00:14:08.160
We haven't talked, actually brought up Tox for a while, I don't think.

00:14:08.160 --> 00:14:17.460
But there's an article on Victor Reimark's blog about compile and use dependencies for multiple

00:14:17.460 --> 00:14:19.060
Python versions with Tox.

00:14:19.060 --> 00:14:22.600
And it's kind of a neat idea.

00:14:22.840 --> 00:14:36.220
I use Tox for incorporating it with GitHub Actions a lot to be able to, well, and just locally to be able to test multiple Python versions and multiple versions of different libraries, how they work together.

00:14:36.220 --> 00:14:37.880
Tox is great for things like that.

00:14:38.760 --> 00:14:49.880
But one of the things that I didn't think about was doing pinning, like compiling pinned list or lock lists for dependencies for multiple Python versions.

00:14:49.880 --> 00:14:55.000
And so this article walks you through kind of why you would want to do that, but then also how to.

00:14:55.180 --> 00:15:03.380
And the little trick here, which I think is cool, is that Tox uses an environment name called the env name.

00:15:03.380 --> 00:15:16.640
And so there is a way to be able to specify, use that to look at different, the Tox environment that it created, because it creates a little virtual environments when it's running.

00:15:17.220 --> 00:15:20.460
But the neat thing about that is you can use it other places.

00:15:20.460 --> 00:15:29.600
And the idea around this was to go ahead and use this article uses pip-tools, but really, I think you could use anything.

00:15:29.600 --> 00:15:52.840
But to target a compile, like a pip-tools compile and, and send it to using pip compile and using pyproject.toml as the base file, and then outputting to a requirements in env name, which is, or a env.text or a, like a env-dev.text.

00:15:52.840 --> 00:16:00.920
So you could do like a requirements with a requirements file, essentially with, with your environment specified in it.

00:16:00.920 --> 00:16:10.960
You could, in this example, it's using a directory, pumping them all into a requirements folder with a directory, but you could also do, you could also do a directory.

00:16:10.960 --> 00:16:14.820
And then also, I also like to have a requirements dash whatever.

00:16:15.220 --> 00:16:23.500
So even if I had them all filed into a directory, I usually put something like requirements dash 312.txt or something like that.

00:16:23.500 --> 00:16:34.600
But having that be able to specify it from the project allows you, allows the little trick to be able to say, oh, here's an example of with the requirements dash.

00:16:34.600 --> 00:16:36.000
I like that a little bit better.

00:16:36.840 --> 00:16:47.420
But to, to have a requirements target within Tox, so that you can use that to compile your project, compile those.

00:16:47.420 --> 00:16:52.460
And while they're running, you're, instead of like in CI or something, can grab those.

00:16:52.460 --> 00:17:01.920
And instead of generating a, just whatever it can find, it's a pinned or a locked set of, set of dependencies.

00:17:01.920 --> 00:17:04.180
It might be a little bit more consistent.

00:17:04.180 --> 00:17:12.840
So, so that locally, the, and the idea would be then locally you, when you're testing yourself, you can say, hey, I'm ready to update my dependencies.

00:17:12.840 --> 00:17:19.340
And then it regenerate the, all of the, all of the dev files and then, or all the lock files.

00:17:19.340 --> 00:17:25.720
And then later when you're, when CI is running, it doesn't look up dependencies.

00:17:25.720 --> 00:17:29.200
It just like knows the fixed links or the fixed versions.

00:17:29.200 --> 00:17:30.760
So kind of a neat idea.

00:17:30.760 --> 00:17:32.260
I wanted to highlight that.

00:17:32.980 --> 00:17:38.360
I also wanted to highlight this because I want to, I like this idea, but I want to do it with uv.

00:17:38.360 --> 00:17:42.720
And I want to, I'd like to be, I think I'll play with this.

00:17:42.720 --> 00:17:48.340
But if anybody else has time to play with this and see if they can get it working with uv, I'd love to see the outcome.

00:17:48.340 --> 00:17:48.780
So.

00:17:48.780 --> 00:17:49.620
Yeah, that's awesome.

00:17:49.620 --> 00:17:56.480
I imagine you can, because if it was using pip-tools, you know, it's got the pip compile behaviors.

00:17:56.480 --> 00:17:57.720
It shouldn't be that hard.

00:17:58.120 --> 00:17:58.360
Yeah.

00:17:58.360 --> 00:17:58.560
Yeah.

00:17:58.560 --> 00:17:58.960
It's awesome.

00:17:58.960 --> 00:17:59.380
Yeah.

00:17:59.380 --> 00:17:59.920
This looks great.

00:17:59.920 --> 00:18:00.560
I love it.

00:18:00.560 --> 00:18:01.960
What do you got for us?

00:18:01.960 --> 00:18:05.780
You let's, let's close it out with dark.

00:18:05.780 --> 00:18:07.940
I did tell you it was the 13th, didn't I?

00:18:07.940 --> 00:18:08.840
Yeah.

00:18:09.200 --> 00:18:20.700
So I present to you a, this is not exactly a Python thing, but I feel like this is a, anyone who builds web apps or other types of apps and interacts with, you know, users sort of thing.

00:18:20.700 --> 00:18:26.860
So superset, if you will, I present to you a catalog of dark patterns for software.

00:18:26.860 --> 00:18:27.880
Dun, dun, dun.

00:18:27.880 --> 00:18:28.960
Dun, dun, dun.

00:18:28.960 --> 00:18:37.480
It says discover a variety of dark pattern examples sorted by category to help you better understand deceptive design practices.

00:18:37.480 --> 00:18:41.380
So there's some that you probably would know like bait and switch.

00:18:41.420 --> 00:18:49.220
And each one of these has at least one concrete, like case study of evil, badness of darkness, let's say.

00:18:49.220 --> 00:18:57.540
So the bait and switch one, which says this tactic lures users with an enticing offer only to change the terms unexpectedly.

00:18:57.540 --> 00:19:00.400
So they've got a lift 60% off.

00:19:00.400 --> 00:19:02.680
Wouldn't you like 60% off of your next ride?

00:19:02.680 --> 00:19:04.340
Just click here and sign up, right?

00:19:04.340 --> 00:19:07.540
And then once actually your next two rides, it says right here.

00:19:07.540 --> 00:19:08.060
Yeah.

00:19:08.060 --> 00:19:14.800
But then actually, as you try to apply it, it turns out it only counts towards 60% off the first $10.

00:19:14.800 --> 00:19:17.340
So if you like went to the airport, it was 50 bucks.

00:19:17.340 --> 00:19:19.940
It's like, well, you know, it's still 44.

00:19:19.940 --> 00:19:20.800
Yeah.

00:19:20.800 --> 00:19:21.100
Perfect.

00:19:21.100 --> 00:19:24.060
so that's not ideal.

00:19:24.060 --> 00:19:24.500
No.

00:19:24.820 --> 00:19:29.660
To me, the classic bait switch is the cable companies for internet or, or anything like,

00:19:29.660 --> 00:19:33.760
don't you want to add like a home phone, like digital phone?

00:19:33.760 --> 00:19:39.520
And then you can add like the sports package and it's only $5 more for the first, you know,

00:19:39.520 --> 00:19:41.640
for the first, six months.

00:19:41.640 --> 00:19:43.600
And then it's like $150 more.

00:19:43.600 --> 00:19:45.940
So I had one just like yesterday.

00:19:45.940 --> 00:19:52.160
I had an email from my cell phone provider that said, since you've been here, like so many numbers

00:19:52.160 --> 00:19:54.220
of years, we're going to give you 10% off.

00:19:54.500 --> 00:19:55.440
I'm like, that's cool.

00:19:55.440 --> 00:20:00.180
And I clicked on it and it was 10% off any of your case pair purchases.

00:20:00.180 --> 00:20:03.580
Like, so shady.

00:20:03.580 --> 00:20:05.240
So shady.

00:20:05.240 --> 00:20:09.940
So that, I mean, people probably know that one, but there's other ones that are, interesting.

00:20:09.940 --> 00:20:13.500
Like one that I really like is the roach motel.

00:20:13.500 --> 00:20:14.160
Okay.

00:20:14.160 --> 00:20:16.000
So, you know, what is that?

00:20:16.000 --> 00:20:21.060
Oh, it's this dark pattern usually used for subscriptions, making it easy to sign up, but

00:20:21.060 --> 00:20:22.840
nearly impossible to cancel.

00:20:23.220 --> 00:20:27.960
So there's, you know, you can't, there's not like a just unsubscribe us button.

00:20:27.960 --> 00:20:30.960
You've got to call somebody and they try to talk you out of it.

00:20:30.960 --> 00:20:32.760
Like I'm a hat, hat tip.

00:20:32.760 --> 00:20:34.460
The cable companies again on this.

00:20:34.460 --> 00:20:35.220
Yeah.

00:20:35.220 --> 00:20:35.820
Right.

00:20:35.820 --> 00:20:36.680
But yeah.

00:20:36.680 --> 00:20:38.500
There's one, there's one click subscribe.

00:20:38.500 --> 00:20:40.240
All right.

00:20:40.240 --> 00:20:40.600
Canceled.

00:20:40.600 --> 00:20:43.660
So please come down to our office during hours of four and three.

00:20:43.660 --> 00:20:44.660
Exactly.

00:20:44.660 --> 00:20:45.660
Exactly.

00:20:45.660 --> 00:20:46.160
Exactly.

00:20:46.160 --> 00:20:49.900
And if you don't get through the line of people backed up trying to get out of it, then,

00:20:49.900 --> 00:20:51.400
you'll, you'll, do bad.

00:20:51.400 --> 00:20:52.900
Try again the next week.

00:20:52.900 --> 00:20:53.400
So there's a bunch of these.

00:20:53.400 --> 00:20:56.140
I'll do one more just that people go play with them.

00:20:56.140 --> 00:20:58.140
Disguised ads.

00:20:58.140 --> 00:21:00.760
Oh, I thought it was disgusting ads.

00:21:00.760 --> 00:21:01.580
Disguised ads.

00:21:01.580 --> 00:21:01.800
Okay.

00:21:01.800 --> 00:21:07.540
Disguised ads, which are themselves disgusting, but the pattern is disguised.

00:21:07.540 --> 00:21:14.720
So Microsoft edge, for example, and I feel like Google, this is towards Google Chrome, like

00:21:14.720 --> 00:21:19.460
a thing towards, I feel like it's also kind of reverse a lot of like Google does that as

00:21:19.460 --> 00:21:19.660
well.

00:21:19.660 --> 00:21:23.240
Like, wouldn't you rather use this instead when you search for something?

00:21:23.240 --> 00:21:25.760
Anyway, I'll give you the example that's on the page.

00:21:25.760 --> 00:21:32.320
So you may encounter not one, but two dark pattern patterns when attempting to get Google

00:21:32.320 --> 00:21:33.420
Chrome onto your computer.

00:21:33.420 --> 00:21:37.240
When you have Microsoft edge, this happens when you have a empty install of windows.

00:21:37.240 --> 00:21:39.520
Because you have edge installed, but not Chrome.

00:21:39.520 --> 00:21:44.240
And, or, I mean, I feel like installing Chrome itself is a dark pattern that you should just

00:21:44.240 --> 00:21:48.180
avoid use of all the brave Firefox, something else.

00:21:48.180 --> 00:21:50.000
But anyway, that's not the point.

00:21:50.000 --> 00:21:51.240
There's, there's two here.

00:21:51.240 --> 00:21:53.720
And the first one is disguised ads.

00:21:53.720 --> 00:21:55.820
The second one is confirm shaming.

00:21:55.820 --> 00:21:57.380
And so this is like a good case here.

00:21:57.380 --> 00:22:05.760
So if you go over to google.com/chrome in edge and you go to the down, you go to the,

00:22:05.760 --> 00:22:07.740
like the, where you get to download it.

00:22:07.740 --> 00:22:12.760
It literally has a built into the browser popup that comes out of the menu bar.

00:22:12.760 --> 00:22:16.700
No, that dress bar rather says, I hate saving money.

00:22:16.700 --> 00:22:17.700
Said no one ever.

00:22:17.700 --> 00:22:24.040
Microsoft edge is the best browser for online shopping.

00:22:24.040 --> 00:22:28.000
Just by literally visiting the Chrome page, you get this popup.

00:22:28.000 --> 00:22:32.000
It's like integrated, not into the HTML, but into the UI of the browser.

00:22:32.000 --> 00:22:33.000
That's so funny.

00:22:33.000 --> 00:22:34.000
Yeah.

00:22:34.000 --> 00:22:35.000
So that's, that's shady.

00:22:35.000 --> 00:22:36.000
That's one.

00:22:36.000 --> 00:22:38.940
I kind of love the boldness of that though, actually.

00:22:38.940 --> 00:22:40.940
But I know.

00:22:40.940 --> 00:22:46.720
And then if you go to, go to Bing, I believe this, which is the default search engine and

00:22:46.720 --> 00:22:50.000
you just search for Chrome, you get some results.

00:22:50.000 --> 00:22:51.980
And then there's like this other part.

00:22:51.980 --> 00:22:55.000
Oh no, this is actually in the start, the start menu.

00:22:55.000 --> 00:22:57.000
This is in the start menu.

00:22:57.000 --> 00:23:00.000
So if you type Chrome, you like try to run Chrome.

00:23:00.000 --> 00:23:01.000
Oh dear.

00:23:01.000 --> 00:23:04.980
Half of the whole start menu says, try Bing wallpaper.

00:23:04.980 --> 00:23:07.980
Switch to the browser recommended by Microsoft.

00:23:07.980 --> 00:23:08.980
Download edge.

00:23:08.980 --> 00:23:09.980
Yeah.

00:23:09.980 --> 00:23:10.980
Oh my God.

00:23:10.980 --> 00:23:11.980
Yeah.

00:23:11.980 --> 00:23:16.980
So what's cool is it says, look here, like it kind of highlights the various patterns

00:23:16.980 --> 00:23:17.980
that are here.

00:23:17.980 --> 00:23:20.980
And then like other companies that do similar patterns.

00:23:20.980 --> 00:23:22.980
Anyway, I think this is interesting reading.

00:23:22.980 --> 00:23:25.980
I think figuring out, like just being aware of this stuff.

00:23:25.980 --> 00:23:29.980
So if you're involved in building these things, you're like, Hey guys, people are going to not

00:23:29.980 --> 00:23:30.980
like us.

00:23:30.980 --> 00:23:32.980
Could we do this a little bit differently?

00:23:32.980 --> 00:23:33.980
You know, sometimes marketing will win.

00:23:33.980 --> 00:23:35.980
Sometimes developers will win, but.

00:23:35.980 --> 00:23:41.980
So are these dark patterns or, or maybe growth hacking?

00:23:41.980 --> 00:23:42.980
Yes.

00:23:42.980 --> 00:23:46.980
Is this our yacht or is this a dark pattern?

00:23:46.980 --> 00:23:47.980
Could it be both?

00:23:47.980 --> 00:23:48.980
Hmm.

00:23:48.980 --> 00:23:50.980
What could I incorporate these into?

00:23:50.980 --> 00:23:51.980
No.

00:23:51.980 --> 00:23:52.980
Yeah.

00:23:52.980 --> 00:23:55.980
Hashtag you win if you can get like all dark patterns.

00:23:55.980 --> 00:23:57.980
Oh, that'd be fun to try to.

00:23:57.980 --> 00:23:58.980
It'd be good growth act.

00:23:58.980 --> 00:24:00.980
Cause then you could appear under every category.

00:24:00.980 --> 00:24:02.980
That'd be like some like link.

00:24:02.980 --> 00:24:03.980
Pre-advertising.

00:24:03.980 --> 00:24:04.980
Exactly.

00:24:04.980 --> 00:24:05.980
Yeah.

00:24:05.980 --> 00:24:06.980
Anyway.

00:24:06.980 --> 00:24:07.980
Yeah.

00:24:07.980 --> 00:24:08.980
This is what I got for you.

00:24:08.980 --> 00:24:09.980
Kind of interesting.

00:24:09.980 --> 00:24:10.980
Nice.

00:24:10.980 --> 00:24:11.980
Extras.

00:24:11.980 --> 00:24:12.980
You got any extras you want to share?

00:24:12.980 --> 00:24:18.980
The extra I wanted to shout out was, was just, I've been, I've been, I think I have my

00:24:18.980 --> 00:24:20.980
recording done for, for HelloPiTest.

00:24:20.980 --> 00:24:23.980
The only thing left to record is the summary at the end.

00:24:23.980 --> 00:24:28.980
The, I want, well I have the, there's a few things I want to like one extra video and

00:24:28.980 --> 00:24:30.980
record, but I want to edit everything first.

00:24:30.980 --> 00:24:35.980
I'm in the process of editing and keeping track of everything so that at the end I can go, Hey,

00:24:35.980 --> 00:24:36.980
we went through all these things.

00:24:36.980 --> 00:24:39.980
So I want to make sure.

00:24:39.980 --> 00:24:44.980
Actually the thing that I have left is I want to review all of the command line flags that

00:24:44.980 --> 00:24:46.980
I use in the course.

00:24:46.980 --> 00:24:47.980
I don't remember all the ones I've used.

00:24:47.980 --> 00:24:50.980
So I'm writing down as I'm editing.

00:24:50.980 --> 00:24:51.980
So nice.

00:24:51.980 --> 00:24:52.980
That's awesome.

00:24:52.980 --> 00:24:54.980
But I'm on track for August 19th.

00:24:54.980 --> 00:24:55.980
A few people have ordered already.

00:24:55.980 --> 00:24:57.980
Thank you so much.

00:24:57.980 --> 00:24:59.980
Everyone that's ordered so far.

00:24:59.980 --> 00:25:00.980
So love you.

00:25:00.980 --> 00:25:01.980
My wife loves you.

00:25:01.980 --> 00:25:05.980
We went out to got coffee or off of money we got from this.

00:25:05.980 --> 00:25:06.980
So beautiful.

00:25:06.980 --> 00:25:07.980
Yeah.

00:25:07.980 --> 00:25:08.980
Available for pre-order now.

00:25:08.980 --> 00:25:09.980
Yeah.

00:25:09.980 --> 00:25:10.980
what you got?

00:25:10.980 --> 00:25:13.980
I have just a couple of things.

00:25:13.980 --> 00:25:17.980
Django 5.1 released though.

00:25:17.980 --> 00:25:20.980
Big deal here is easier guardrails for authentication.

00:25:20.980 --> 00:25:26.980
Cause having people access stuff that was supposed to be authenticated, but isn't as bad.

00:25:26.980 --> 00:25:28.980
They didn't say that that's my words.

00:25:28.980 --> 00:25:33.980
The new and shiny login required middleware is available, which enforces authentication for

00:25:33.980 --> 00:25:34.980
all views.

00:25:34.980 --> 00:25:35.980
Yeah.

00:25:35.980 --> 00:25:40.980
better screen reader support, better HTML semantics.

00:25:40.980 --> 00:25:46.980
The second oldest ticket is now fixed with a long awaited query string template tag.

00:25:46.980 --> 00:25:48.980
So these things are all good.

00:25:48.980 --> 00:25:50.980
And let's see.

00:25:50.980 --> 00:25:51.980
What's there now?

00:25:51.980 --> 00:25:55.980
I thought there might've been a CVE or something in here, but I don't think so.

00:25:55.980 --> 00:26:01.980
I saw Django CVE not too long ago, security deal, but it doesn't seem like it's addressed

00:26:01.980 --> 00:26:02.980
with this one.

00:26:02.980 --> 00:26:03.980
So it must've been fixed previously.

00:26:03.980 --> 00:26:04.980
All right.

00:26:04.980 --> 00:26:05.980
So that, and then here's the bookend.

00:26:05.980 --> 00:26:08.980
We started with a 312.5 being available.

00:26:08.980 --> 00:26:14.980
Well, how about Python 313 looking forward with release candidate one is out.

00:26:14.980 --> 00:26:21.980
So this happened a little bit ago, but if you're out there and they say, please test,

00:26:21.980 --> 00:26:28.980
you have a package, especially a popular one, please test it with Python 313 ahead of time.

00:26:28.980 --> 00:26:29.980
So we can do stuff about it.

00:26:29.980 --> 00:26:31.980
And you're like, oh, it's betas.

00:26:31.980 --> 00:26:32.980
I'm not going to take the trouble.

00:26:32.980 --> 00:26:33.980
I'm not going to worry about it.

00:26:33.980 --> 00:26:37.980
Well, it's now officially stable in terms of features, right?

00:26:37.980 --> 00:26:41.980
They're not going to add or remove things ideally unless they absolutely have to.

00:26:41.980 --> 00:26:46.980
So you should be able to properly start putting energy into testing and playing with this one.

00:26:46.980 --> 00:26:51.980
And this one is a big deal because this is the first free threaded Python, which is going

00:26:51.980 --> 00:26:55.980
to have significant effects on runtime behavior.

00:26:55.980 --> 00:26:57.980
not just the API still work, right?

00:26:57.980 --> 00:26:59.980
So it's going to be worth testing with this one.

00:26:59.980 --> 00:27:02.980
All those other versions of Python, you have to pay for threading.

00:27:02.980 --> 00:27:03.980
This one's free threading.

00:27:03.980 --> 00:27:05.980
Yeah, it's awesome.

00:27:05.980 --> 00:27:07.980
Finally, finally, it's free.

00:27:07.980 --> 00:27:13.980
You just have, yeah, you have to pay by buying other machines and running copies on them to get parallels.

00:27:13.980 --> 00:27:19.980
No, I, so I was hoping that uv Python would have 313 there, but it doesn't yet.

00:27:19.980 --> 00:27:21.980
So yeah, that would, all right.

00:27:21.980 --> 00:27:23.980
UV team out there listening.

00:27:23.980 --> 00:27:24.980
Astral, come on Astral.

00:27:24.980 --> 00:27:25.980
What are you doing?

00:27:25.980 --> 00:27:26.980
Exactly.

00:27:26.980 --> 00:27:33.980
Let's, let's get, let's turn uv Python into like, this is how I get the freshest Python, which is actually one of the things that's a little tricky.

00:27:33.980 --> 00:27:36.980
Like homebrew, it takes a week for that stuff to show up and other stuff.

00:27:36.980 --> 00:27:37.980
Yeah.

00:27:37.980 --> 00:27:38.980
A week.

00:27:38.980 --> 00:27:39.980
Yeah.

00:27:39.980 --> 00:27:40.980
Who wants week old coffee?

00:27:40.980 --> 00:27:41.980
No, no.

00:27:41.980 --> 00:27:44.980
Your threads are totally stale, but.

00:27:44.980 --> 00:27:47.980
It's a, it's a goofy episode, man.

00:27:47.980 --> 00:27:48.980
It is.

00:27:48.980 --> 00:27:49.980
All right.

00:27:49.980 --> 00:27:50.980
I know you got the joke for us this week.

00:27:50.980 --> 00:27:51.980
So.

00:27:51.980 --> 00:27:52.980
Okay.

00:27:52.980 --> 00:27:56.980
Well, actually, before we get onto this, I was just thinking because you, you wanted, when

00:27:56.980 --> 00:28:02.980
you were talking about Django, I thought of a new, of a, a dorky joke.

00:28:02.980 --> 00:28:05.980
So what do you call a 17 year old insect?

00:28:05.980 --> 00:28:06.980
A minor, a minor bug.

00:28:06.980 --> 00:28:09.980
Oh, that's pretty good.

00:28:09.980 --> 00:28:10.980
okay.

00:28:10.980 --> 00:28:14.980
So, I saw this artist technical, a, is it ours or ARS?

00:28:14.980 --> 00:28:15.980
I don't know.

00:28:15.980 --> 00:28:16.980
ARS technica.

00:28:16.980 --> 00:28:21.980
I say ours, but I know now you say that I'm not sure I've ever heard anyone pronounce it.

00:28:21.980 --> 00:28:22.980
So.

00:28:22.980 --> 00:28:22.980
Okay.

00:28:22.980 --> 00:28:23.980
We're going with ours.

00:28:23.980 --> 00:28:24.980
Cause it's lowercase.

00:28:24.980 --> 00:28:27.980
Ars technica, had an article parody site.

00:28:27.980 --> 00:28:32.980
Clown strike refuses to bow down to cloud strikes, bogus DMCA takedown.

00:28:32.980 --> 00:28:34.980
so there's an article here.

00:28:34.980 --> 00:28:36.980
I wanted to check it out myself.

00:28:36.980 --> 00:28:41.980
so if you go to, clown strike dot LOL.

00:28:41.980 --> 00:28:43.980
and we'll refresh it.

00:28:43.980 --> 00:28:49.980
see if it, it starts out looking like crowd strike, but it has a little goofy hat on

00:28:49.980 --> 00:28:50.980
it.

00:28:50.980 --> 00:28:55.980
and then if you put, I'm not going to play the music now, but, if you play music,

00:28:55.980 --> 00:28:57.980
it's got like some, some goofy little music that goes along with it.

00:28:57.980 --> 00:28:58.980
And there's a clown.

00:28:58.980 --> 00:28:59.980
That's it.

00:28:59.980 --> 00:29:00.980
That's just, it's just funny.

00:29:00.980 --> 00:29:06.980
but, now if you click on the left, it tells you about all this.

00:29:06.980 --> 00:29:11.980
Well, it tells you the ARS technica article, but it also talks about this story about how

00:29:11.980 --> 00:29:17.980
they had these takedown, crowd strike tried to take them down and it's just silly.

00:29:17.980 --> 00:29:20.980
there's some other stuff here too, that I think it's just hilarious.

00:29:20.980 --> 00:29:29.980
Like, the what scam advisor lists clown strike, LOL as a highly trusted might be safe.

00:29:29.980 --> 00:29:34.980
It's like nothing there except for just this goofy little picture.

00:29:34.980 --> 00:29:38.980
And, but, but there are some, some, some other stuff in it.

00:29:38.980 --> 00:29:42.980
You can read the whole story and all the letters about, or all the emails, the back and forth

00:29:42.980 --> 00:29:43.980
about the takedowns.

00:29:43.980 --> 00:29:49.980
And actually, there, I was surprised to find out that they had to like cloud for cloud

00:29:49.980 --> 00:29:57.980
flare was, was, was hosting this, but it, it like accepted the takedown at first.

00:29:57.980 --> 00:30:03.980
and eventually back down, but even after, but after it got moved, but I'm surprised that,

00:30:03.980 --> 00:30:09.980
I'm surprised that it got taken down so fast because obviously this is a parody site.

00:30:09.980 --> 00:30:11.980
and parody is protected.

00:30:11.980 --> 00:30:13.980
There's no way like even a cursory look at this.

00:30:13.980 --> 00:30:17.980
Anybody would think this is a realistic, yeah.

00:30:17.980 --> 00:30:20.980
It's not trying to impersonate it or anything like that.

00:30:20.980 --> 00:30:21.980
Yeah.

00:30:21.980 --> 00:30:22.980
Just making fun of the situation.

00:30:22.980 --> 00:30:26.980
And, and I think that they just probably, I mean, they really should have just ignored

00:30:26.980 --> 00:30:27.980
it.

00:30:27.980 --> 00:30:30.980
And now clown strike is known and we're talking about it.

00:30:30.980 --> 00:30:31.980
And ours technique is talking about it.

00:30:31.980 --> 00:30:32.980
Anyway.

00:30:32.980 --> 00:30:33.980
exactly.

00:30:33.980 --> 00:30:34.980
So it's the barber strain stand effect.

00:30:34.980 --> 00:30:35.980
Right?

00:30:35.980 --> 00:30:36.980
Yeah.

00:30:36.980 --> 00:30:37.980
So, oh boy.

00:30:37.980 --> 00:30:38.980
So, oh boy.

00:30:38.980 --> 00:30:39.980
Anyway.

00:30:39.980 --> 00:30:39.980
Yeah.

00:30:39.980 --> 00:30:43.980
I mean, I'm somewhat sympathetic to crowd strike, but this is, this is a bad look.

00:30:43.980 --> 00:30:49.980
You know, if you've got a right native code that runs in the kernel, the smallest mistake.

00:30:49.980 --> 00:30:53.980
And it has to be like updated within hours of you learning new information.

00:30:53.980 --> 00:30:54.980
I don't know.

00:30:54.980 --> 00:30:55.980
It's, it's tough.

00:30:55.980 --> 00:31:00.980
It's apparently it's one of the best antivirus systems out there that actually works.

00:31:00.980 --> 00:31:02.980
And isn't just, you know, you wouldn't talk dark patterns.

00:31:02.980 --> 00:31:08.980
Like a lot of this antivirus clean your computer stuff is really shit shady, but boy, did they

00:31:08.980 --> 00:31:11.980
cause a problem that I would not want to be in their shoes.

00:31:11.980 --> 00:31:12.980
No.

00:31:12.980 --> 00:31:13.980
Well, I don't know.

00:31:13.980 --> 00:31:18.980
I mean, a couple of weeks of shame over you get billions of dollars to pay for that shame.

00:31:18.980 --> 00:31:23.980
So, yeah, I think they're going to get a lot of lawsuits from a lot of angry fortune 500

00:31:23.980 --> 00:31:24.980
companies.

00:31:24.980 --> 00:31:27.980
And even if they win defending them, it's going to, going to hurt them bad.

00:31:27.980 --> 00:31:29.980
If it doesn't kill them, it's going to hurt them bad.

00:31:29.980 --> 00:31:30.980
So.

00:31:30.980 --> 00:31:31.980
Okay.

00:31:31.980 --> 00:31:31.980
So yeah.

00:31:31.980 --> 00:31:33.980
Sympathies out there for somebody.

00:31:33.980 --> 00:31:40.980
Some, a little bit, a little bit, a little bit, but I feel like they've certainly earned

00:31:40.980 --> 00:31:41.980
this website and wow.

00:31:41.980 --> 00:31:42.980
I didn't know.

00:31:42.980 --> 00:31:43.980
LOL was a top level domain.

00:31:43.980 --> 00:31:44.980
Yeah.

00:31:44.980 --> 00:31:45.980
It's funny.

00:31:45.980 --> 00:31:46.980
It makes me laugh.

00:31:46.980 --> 00:31:47.980
Yeah.

00:31:47.980 --> 00:31:48.980
What's that stand?

00:31:48.980 --> 00:31:49.980
What is it?

00:31:49.980 --> 00:31:50.980
What is it?

00:31:50.980 --> 00:31:51.980
Is it like a country?

00:31:51.980 --> 00:31:52.980
Is it literally lol?

00:31:52.980 --> 00:31:53.980
Like laugh out loud?

00:31:53.980 --> 00:31:58.980
Or is it because they're like dot pizza is a top level domain as well, which just seems

00:31:58.980 --> 00:31:59.980
wrong.

00:31:59.980 --> 00:32:01.980
Oh, that does seem wrong.

00:32:01.980 --> 00:32:02.980
Really?

00:32:02.980 --> 00:32:03.980
I think so.

00:32:03.980 --> 00:32:04.980
I'll have to check that out.

00:32:04.980 --> 00:32:06.980
Like pepperoni dot pizza and like, you know, Hawaiian.

00:32:06.980 --> 00:32:07.980
Honestly.

00:32:07.980 --> 00:32:08.980
Yeah.

00:32:08.980 --> 00:32:09.980
Pineapple.

00:32:09.980 --> 00:32:10.980
Maybe we need to get some domains.

00:32:10.980 --> 00:32:11.980
Yeah.

00:32:11.980 --> 00:32:12.980
Anyway.

00:32:12.980 --> 00:32:13.980
Okay.

00:32:13.980 --> 00:32:14.980
Awesome.

00:32:14.980 --> 00:32:15.120
Great.

00:32:15.120 --> 00:32:15.900
All right.

00:32:15.900 --> 00:32:16.940
Thanks for being here like always.

00:32:16.940 --> 00:32:17.720
Thank you.

