WEBVTT

00:00:00.001 --> 00:00:04.200
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to

00:00:04.200 --> 00:00:11.660
your earbuds. This is episode 416, recorded January 13th, 2025. I'm Michael Kennedy.

00:00:11.660 --> 00:00:12.680
And I'm Brian Okken.

00:00:12.680 --> 00:00:16.400
This episode is brought to you by us. Check out our stuff that we're doing

00:00:16.400 --> 00:00:20.540
over at Brian's course. Where's your course, Brian? I forgot the URL.

00:00:20.540 --> 00:00:21.920
pythontest.com.

00:00:21.920 --> 00:00:27.300
pythontest.com. That's right. And over at Talk Python Training. Links are in the podcast

00:00:27.300 --> 00:00:32.320
player show notes or on the homepage, all of those things. Follow us on Mastodon and Bluesky.

00:00:32.320 --> 00:00:37.200
We love to connect with people over there. In fact, Brian, you don't really have visibility

00:00:37.200 --> 00:00:41.800
into this yet, but there's a bunch of recommendations I got from, I think it was Bluesky,

00:00:41.800 --> 00:00:44.020
which fills out many of my topics today.

00:00:44.020 --> 00:00:44.800
Nice.

00:00:44.800 --> 00:00:50.180
Yes. And I encourage people to follow us out there. Use the starter pack on my profile if they wish.

00:00:50.180 --> 00:00:55.140
And if you want to get all this stuff sent to you automatically as an email, and this might be

00:00:55.140 --> 00:00:58.700
getting an upgrade. We're not entirely sure yet. We're playing around with some ideas here.

00:00:58.700 --> 00:00:59.020
Yeah.

00:00:59.020 --> 00:01:02.200
Content-wise. But you should definitely subscribe to the email.

00:01:02.200 --> 00:01:05.760
I don't buy stat.fm. Click on newsletter. Guess what? You'll get a newsletter if you do it. That'd

00:01:05.760 --> 00:01:11.180
be awesome. We'd love to talk to you there. And with that, Happy New Year, Brian. It's been a

00:01:11.180 --> 00:01:16.740
couple of weeks we've been on break. Some of it by decision, some of it mandatory by family stuff,

00:01:16.740 --> 00:01:20.920
all those kinds of things. That's on my end. But welcome back. Happy New Year.

00:01:20.980 --> 00:01:27.340
Welcome back. Yes. Thanks. It's really good to be back. I'm glad to start talking coding and Python

00:01:27.340 --> 00:01:28.420
on the air again.

00:01:28.420 --> 00:01:34.120
Yeah, absolutely. You get to this age where you get phone calls out of the blue. You've got to come

00:01:34.120 --> 00:01:41.100
help your father with this because he's old and can't do stuff. And just sometimes you jump on a

00:01:41.100 --> 00:01:46.880
plane for non-vacation reasons and it's not as fun as it could be, but you got to do it. That was me

00:01:46.880 --> 00:01:52.560
last week. Okay. Well, how about this week? What do you got for us? Well, I was thinking that this

00:01:52.560 --> 00:01:58.280
week at the start of the new year, people might be thinking of some changes. So some of the changes

00:01:58.280 --> 00:02:04.240
they might be thinking about is terminal or shell changes. If you're kind of a terminal person,

00:02:04.240 --> 00:02:10.040
and especially if you were a macOS or Linux user, one of the things that just came out recently is

00:02:10.040 --> 00:02:19.960
ghosty. So at G H O S T T Y, get it go T T Y. Yeah, that's clever. That's clever. It's a it's a fast

00:02:19.960 --> 00:02:27.100
feature rich and cross platform terminal emulator that uses platform native UI and GPU acceleration.

00:02:27.100 --> 00:02:34.720
So super fast, super featured. Why am I covering this? It's kind of fun actually. So ghosty,

00:02:34.720 --> 00:02:39.180
have you heard about this? I have absolutely heard about it. I haven't installed. I have played with

00:02:39.180 --> 00:02:46.160
it. It is fun. It is not yet dethroned warp as my way to my go to yet, but I like it. Both of them

00:02:46.160 --> 00:02:51.460
are written in high speed languages. I think ghosted is zig of all zig language is awesome. And yeah,

00:02:51.520 --> 00:02:57.480
warp is rust, but yeah, I love it. Okay. Yep. So ghosty just came out. Let's see. They did the

00:02:57.480 --> 00:03:03.300
announcement announcement of a release in October, but it it just came out at the end of the year. I

00:03:03.300 --> 00:03:11.600
think it was the 31st of December or something like that in into the year. But it's so what, why,

00:03:11.600 --> 00:03:17.820
why am I talking about this? Because it's it's kind of fun. And also it has some interesting heritage.

00:03:17.820 --> 00:03:24.800
So this is started by Mitchell Hashimoto, which is one of the co-founders of HashiCorp. He think he

00:03:24.800 --> 00:03:32.900
left HashiCorp in 2023, but anyway, some, some, some nice heritage. It's a feature rich. What does

00:03:32.900 --> 00:03:38.540
feature rich mean? That's a, it's a fast feature rich, fast. It's got themes. It's got all that stuff,

00:03:38.540 --> 00:03:45.100
sort of stuff. But a couple of reviews that I was reading of it were saying that it really is pretty

00:03:45.100 --> 00:03:51.000
fast and partly because it's less code. They really, the code for it is a lot stream,

00:03:51.000 --> 00:03:59.080
more streamlined than a lot of other things. And, and having it be native and really focusing on some

00:03:59.080 --> 00:04:04.740
of the speed and as well as features. So the tagline really, when you go to the about page,

00:04:04.740 --> 00:04:09.980
it says there are many, many excellent terminal emulators available, but they all kind of force you

00:04:09.980 --> 00:04:17.100
to either choose speed features or a native UI and ghost D wants to do all three. And I kind of like

00:04:17.100 --> 00:04:21.940
that. I've had issues with things that don't really look like, you know, they're not, they don't really

00:04:21.940 --> 00:04:28.800
look like a native feel. Anyway. I kind of, I haven't, I've just downloaded it, started playing with it a

00:04:28.800 --> 00:04:33.420
little bit. I haven't done much with it, but a lot of people on a blue sky were talking about it and

00:04:33.420 --> 00:04:40.760
masked over the break. as far as shells go, so ghosty does integrate with, with shells,

00:04:40.760 --> 00:04:46.780
with different shells that integrates with, it says, some of the features require integrating with

00:04:46.780 --> 00:04:52.860
your shell. It automatically does automatic injection of shell integration for bash, Z shell,

00:04:52.860 --> 00:05:00.680
fish and elvish. And I've been thinking about fish because fish was actually in the news as well.

00:05:00.680 --> 00:05:08.020
fish, you're, you're into jam bands. I got it. Yeah. I kind of forgot about fish anyway.

00:05:08.020 --> 00:05:16.120
but, and then the announcement at in December as well is that fish shell, is the 4.0 is in beta

00:05:16.120 --> 00:05:22.340
and it is rewritten in rust. So, that's kind of fun. Do you know what it was written in before?

00:05:22.340 --> 00:05:30.440
I think it was CVC or C++. Yeah. a port from C++ to rust. So, not sure about

00:05:30.440 --> 00:05:35.960
the reasons around that, but it's kind of fun. if you, it'd be fun to get, if you want to contribute

00:05:35.960 --> 00:05:41.700
or whatever, I think there's more energy around rust than C++ right now. Yeah. one of the

00:05:41.700 --> 00:05:46.540
things that I'm, I'm intrigued by with fish because I I've been setting up new environments

00:05:46.540 --> 00:05:52.520
lately and stuff and, and I like my environment, my shell environment, but, keeping it all

00:05:52.520 --> 00:05:59.820
like all the extras on different machines is, is a little tricky. and, apparently fish has a,

00:05:59.820 --> 00:06:04.520
I haven't used fish, but apparently fish has a lot of stuff built in that, that other people have

00:06:04.520 --> 00:06:10.340
have to configure later. So, okay. Yeah. Yeah. I'll check that out. Very nice. Yeah. Are you,

00:06:10.340 --> 00:06:15.560
you used to do a Z shell and oh my Z shell? Are you still? Yeah. Yeah. Yeah. Okay. If,

00:06:15.560 --> 00:06:20.540
if I use the regular terminal or I term or stuff like that, then I am, but I think with warp,

00:06:20.540 --> 00:06:26.480
I'm pretty sure. Yeah. I'm sure that it, it doesn't run Z shell, not directly anyway. It may

00:06:26.480 --> 00:06:32.660
underneath the cover somehow, but it feels like it kind of does its own thing, you know? Yeah. And I'm

00:06:32.660 --> 00:06:37.660
enjoying it. It comes to be built with a lot of stuff that I used to install like McFly and other

00:06:37.660 --> 00:06:43.640
types of stuff. Well, so I used to have, it used to be a heavy duty Z shell user and had tons of

00:06:43.640 --> 00:06:48.980
configuration changes. But when I started doing a bunch of machines, I kind of just went back to

00:06:48.980 --> 00:06:54.900
vanilla bash and with a, with just a, like a bash or C file. but we'll see.

00:06:54.900 --> 00:06:59.980
It's the history. The history is so hard on bash compared to some of the other things,

00:06:59.980 --> 00:07:03.740
unless you configure it, right? Yeah. Yeah. Anyway, what you got for us?

00:07:03.740 --> 00:07:10.780
All right. Let's take it for a loop here. This one comes to us from Owen Lamont. And I told you

00:07:10.780 --> 00:07:16.340
stuff was coming from blue sky and Owen has a special honor in this episode. He doesn't know it,

00:07:16.340 --> 00:07:24.100
but he might have a, a perfect, perfect, trifecta sort of thing going on here. So this,

00:07:24.100 --> 00:07:27.860
this one that we're going to cover, he pointed out. And then the next one we're going to cover

00:07:28.060 --> 00:07:33.320
is, the next one I'm going to cover is my second main topic is actually created by him.

00:07:33.320 --> 00:07:38.980
Then something else, I can't remember exactly what it was, was referred to. So he's got three things in

00:07:38.980 --> 00:07:43.700
three different sections, which is pretty wild. So Owen, thanks for sending this in. And like,

00:07:43.700 --> 00:07:48.640
like I said, I encourage lots of people, to send their stuff in because that is a super helpful

00:07:48.640 --> 00:07:55.820
and we'd love to have it up. So this one is called wind loop. Now, something that's a hassle is if

00:07:55.820 --> 00:08:02.940
you're working in asyncio, well, asyncio is not as high performance as it could be, right? So there

00:08:02.940 --> 00:08:10.800
are things like uv lib, which is the backend powering things like uvloop, hence wind loop, uvloop.

00:08:10.800 --> 00:08:17.700
The problem is uvloop is not compatible with windows, even though the foundation of

00:08:17.700 --> 00:08:24.940
lib uv is compatible. Make that make sense, huh? So this person came along and worked on it,

00:08:24.940 --> 00:08:30.360
Vizonext and said, all right, I've been waiting for people to set this up and make it work. And well,

00:08:30.360 --> 00:08:34.520
I guess I'm going to have to do it myself. So he said, because nobody was willing to step up after so

00:08:34.520 --> 00:08:38.880
many years of waiting, I went ahead and downloaded the source code for uvloop, started modifying the

00:08:38.880 --> 00:08:43.220
source code, to be windows compatible by carefully removing and changing parts that were

00:08:43.220 --> 00:08:48.960
not made for windows, such as forking processes rather than launching sub processes and so on and

00:08:48.960 --> 00:08:55.040
so on. So here's a, does it have any, any, benchmarks? Where are your benchmarks? I think

00:08:55.040 --> 00:09:00.700
it might actually, no. Yeah, it does have some benchmarks. So this is a way to replace the asyncio

00:09:00.700 --> 00:09:08.820
event loop to upgrade it to have faster performance, much like uv lib, uvloop does for Mac and Linux.

00:09:08.820 --> 00:09:13.940
But you can just do that here and you can kind of use them both, right? You can just do sort of a

00:09:13.940 --> 00:09:19.440
import, try, except like try to import this or check your platform and import the right thing and just

00:09:19.440 --> 00:09:25.840
sort of swap between them. Okay, cool. Yeah. So, it says if you run it, with the different

00:09:25.840 --> 00:09:30.260
policies, it'll show you like how much faster, you can get like, it gets, I don't know,

00:09:30.260 --> 00:09:34.140
is this like five times faster or something for some benchmark, you know, all those things go.

00:09:34.140 --> 00:09:39.580
And then where are we? They've got some nice examples. Yeah. It says, check out the,

00:09:39.580 --> 00:09:45.580
how to use when loop when uvloop is not available. So it just basically says if the platform is when

00:09:45.580 --> 00:09:53.340
32 sigwin or CLI, just import the run method from when loop, otherwise import it from uv lib. You could

00:09:53.340 --> 00:09:59.760
also probably, you know, probably a nice way would just to be set the asyncio event loop policy before

00:09:59.760 --> 00:10:04.120
an event loop comes into existence, which then when it goes and creates a no event loop automatically,

00:10:04.120 --> 00:10:08.560
it'll use the when, when loop or uvloop one or whatever, but yeah, people can check it out.

00:10:08.560 --> 00:10:13.420
It shows how to use it with FastAPI, and things like that. So pretty neat, I think.

00:10:13.420 --> 00:10:20.000
Yeah, that's cool. Yeah. So if you're doing asyncio stuff and you're on windows and you've been like,

00:10:20.000 --> 00:10:25.120
people keep telling me uvloop is awesome. I hear you. I can't use it. When loop, check it out.

00:10:25.120 --> 00:10:29.200
And thanks Owen for sending that in. I also kind of, I really liked that it kind of works with

00:10:29.200 --> 00:10:35.280
both or you can, you can have, have some examples to use both because there are people that are test,

00:10:35.280 --> 00:10:41.100
you know, test developing on windows and pushing to the Linux. So yeah. Or you're a framework creator

00:10:41.100 --> 00:10:46.460
and you have users on both. Yeah. Which you should think about because like we've said before,

00:10:46.460 --> 00:10:50.960
it's like over half of the Python users are using windows. So yeah, the majority,

00:10:50.960 --> 00:10:57.280
if you single down to a single platform, the majority, the biggest one is windows and then

00:10:57.280 --> 00:11:02.800
it breaks into pieces. Right. Yeah. Luckily all the other pieces are Linux sort of things.

00:11:02.800 --> 00:11:07.760
That's right. And that, I think that's the problem is right. Everything is POSIX like

00:11:07.760 --> 00:11:14.480
except for windows. Right. That's a challenge. So yeah. Oh, well, anyway. Okay. Well, let's,

00:11:14.480 --> 00:11:19.760
let's take a look to get this right. Oh, I've got some news from, from both from astral,

00:11:19.760 --> 00:11:26.400
a couple of astral topics, uv and Ruff. first off, I saw this like little notice that there's

00:11:26.400 --> 00:11:34.160
a rough 2025 style guide and I'm like, well, what do we need a new style guide for 2025? but,

00:11:34.160 --> 00:11:37.840
but I'm really, there's a bunch of stuff in here, but what I'm really excited about is the,

00:11:37.840 --> 00:11:43.840
the modifications to the F string formatting. And yeah. I, we're getting really nerdy here. If,

00:11:43.840 --> 00:11:48.800
if you're getting excited about F string format, but F yes, there was a great sticker for us that

00:11:48.800 --> 00:11:55.200
F yes, when the strings came out. so one of the cool things is, I guess it didn't do deal

00:11:55.200 --> 00:12:02.640
with the, formatting the expressions inside, the interpolated expressions inside of the curly

00:12:02.640 --> 00:12:08.080
braces inside of an F string. And so, yeah, often it's just a variable name, which isn't a big deal,

00:12:08.080 --> 00:12:13.680
but you can put code in there and, and now, now rough, we'll, we'll,

00:12:13.680 --> 00:12:19.360
we'll format that correctly. So, it's doing like, like here's, it shows an example of like,

00:12:19.360 --> 00:12:25.680
uh, you know, layer layer method plus five and it was two stuck together. So now, rough will

00:12:25.680 --> 00:12:30.000
spread it out a little bit. I do that all the time. Like if I have a time delta and I want to know how

00:12:30.000 --> 00:12:35.120
much time I want to represent that in milliseconds, but it has a total seconds. So I'll just times a

00:12:35.120 --> 00:12:40.160
thousand. Yeah. And actually more and more now I'm like, do I really need to assign this to a variable

00:12:40.160 --> 00:12:43.360
just so I can stick it into an F string. I'll just stick the code in the F string.

00:12:43.360 --> 00:12:48.800
so I'm doing that more and more. So having a rough deal with that is great. But with that also,

00:12:48.800 --> 00:12:53.760
there's a bunch of other cool things like, quotes are now normalized in f-strings according

00:12:53.760 --> 00:12:58.640
to a project configuration. So if you want, if you set it to be double quotes or single quotes,

00:12:58.640 --> 00:13:04.800
it'll deal with that. But, and they're left untouched if normalizing would result in an invalid

00:13:04.800 --> 00:13:10.320
F string, of course it checks to make sure it doesn't make things up, looks for,

00:13:10.320 --> 00:13:16.240
unnecessary, escape, like back tick or the, you know, the backslash, if it doesn't,

00:13:16.240 --> 00:13:20.240
if it's not needed to be there. So that's nice. Yeah. That's excellent. Like for example,

00:13:20.240 --> 00:13:24.320
you have single quote and then you will have another single quote in the string. You've got to escape it.

00:13:24.320 --> 00:13:28.400
It'll rather than leave it there, it'll convert it, the outer strength to double quotes. So you

00:13:28.400 --> 00:13:33.440
just don't need that escape at all, which is perfect. Yeah. Yeah. and then,

00:13:33.440 --> 00:13:39.200
one of the last things is, it looks at the interpolated expressions in an F string to see

00:13:39.200 --> 00:13:45.520
whether it might be acceptable to split the F string over multiple lines. So, and, and it has done

00:13:45.520 --> 00:13:50.400
that with strings of splitting it on multiple lines. But I don't think it did that with f-strings before

00:13:50.400 --> 00:13:54.000
because it could have mucked up the interpolation. Now it's figuring that out.

00:13:54.000 --> 00:13:59.040
And doing the right thing. So, it just lots, lots of good cleanup work for F string.

00:13:59.040 --> 00:14:03.520
there's other stuff in here too, that, that I think is really nice. There's a,

00:14:03.520 --> 00:14:08.160
prefer wrapping the assert message. Basically, do I care about this? Not really, except for,

00:14:08.160 --> 00:14:13.440
I like the new one better. It looks better. so sure. better looking code is always a good thing.

00:14:13.440 --> 00:14:18.640
So thanks Astral for not like ignore it. I mean, rough is why we've got fell in love with these guys

00:14:18.640 --> 00:14:23.120
in the first place. And yeah, so, so I'm glad that there's still work going on here.

00:14:23.680 --> 00:14:28.240
now I've got a bit of a tangent that seems like a tangent, but not really.

00:14:28.240 --> 00:14:36.160
the Python 3.14, 314, the PI release of Python is in alpha right now. December, as of December

00:14:36.160 --> 00:14:41.680
17th, there's the alpha three. So it's been an alpha for a while. but so you can play with it,

00:14:41.680 --> 00:14:48.240
but how do you play with it if you're kind of a uv person? Well, Charlie Marsh posted,

00:14:48.240 --> 00:14:57.520
uh, in just on the seventh that you can use, what was that uv Python? Yeah. 3.14. And then you

00:14:57.520 --> 00:15:05.120
do --preview because 3.14 isn't there yet, but if you use the preview, it works. And after I've,

00:15:05.120 --> 00:15:11.360
after I did this now I can just, now I don't have to use preview when I just say like uv, V and V,

00:15:11.360 --> 00:15:17.520
uh, and then pick up. Yeah. Yeah. Yeah. Yeah. Yeah. 3.14 or whatever. Yeah. It just works because

00:15:17.520 --> 00:15:22.800
this is now it's on my machine. So, so there's a preview mode to grab that, which is really nice.

00:15:22.800 --> 00:15:27.920
I like it. Oh, that's excellent. Yeah. They're doing really good work over there and you're right that,

00:15:27.920 --> 00:15:34.080
that rough started it all. So that's, that's really cool to see. And one of the things that I've noticed

00:15:34.080 --> 00:15:40.540
that I'm, I wasn't really up for a lot of the, like the big packagers to create my PI project

00:15:40.540 --> 00:15:47.740
Toml for me and to start a project, but uv in it, it rocks. it does just enough. Like if you

00:15:47.740 --> 00:15:53.740
pop into a new, a new project and just say uv and like you, you start coding and you say uv in it,

00:15:53.740 --> 00:15:59.340
it creates enough boiler plate. That's good, but not too much. Like it'll generate a PI project. Toml for

00:15:59.340 --> 00:16:05.260
you. but it's not too big. You can just, you know, add more stuff. Yeah. That is such a balancing act,

00:16:05.260 --> 00:16:08.540
right? Like I'm going to create a new project, run this cookie cutter or this other template.

00:16:08.540 --> 00:16:13.100
Do you want to use Postgres? How about celery? Do you like caching? What kind of are like,

00:16:13.100 --> 00:16:17.740
whoa, whoa, I just, I just don't, I just need to like a PI project Toml on a few things and what's

00:16:17.740 --> 00:16:22.540
the right layout relative structure. Let's, let's not overdo it, you know? Yeah.

00:16:22.540 --> 00:16:28.620
That's too much opinion. and then, also uv sync. I'm using a uv sync all the time. So you

00:16:28.620 --> 00:16:33.740
clone a project and do uv sync and it'll pick up the project Toml and create a virtual environment and

00:16:33.740 --> 00:16:41.100
all that. So nice. Well, I really appreciate your perfect segue because this next topic of mine is

00:16:41.100 --> 00:16:47.500
called uv dash secure. Nice. Pretty awesome. This was the one created by Owen Lamont and he just

00:16:47.500 --> 00:16:52.940
released, he's been working on for a little while and people might be familiar with pip audit. So pip

00:16:52.940 --> 00:16:58.940
audit will go and look at what is installed in your virtual environment. So I've got a virtual environment.

00:16:58.940 --> 00:17:05.260
I've installed some packages through whatever pip install dash E or through just pip install or dash

00:17:05.260 --> 00:17:11.180
requirements, however you get it, right? You've got all those requirements installed. And what if there's

00:17:11.180 --> 00:17:17.500
some kind of malware or some other horrible thing that you mistyped like Jane, Jane Gagu or I don't know,

00:17:17.500 --> 00:17:21.580
whatever, like you, somehow you miss a letter and you get something terrible or something was just

00:17:21.580 --> 00:17:26.220
taken over. It was fine. And then it wasn't fine. This will go, pip audit will go back and talk to,

00:17:26.220 --> 00:17:31.020
you can't remember exactly what it's going back to, but there's an API that checks for vulnerabilities

00:17:31.020 --> 00:17:35.820
in different packages. And basically if a vulnerability is found, it's listed there. You'll know, right?

00:17:35.820 --> 00:17:40.140
Cool. Cool. So that's great. But that requires you to have all those things installed.

00:17:40.140 --> 00:17:47.740
Oh yeah. And it doesn't work. It doesn't like look at things like the uv lock file. So uv secure allows you

00:17:47.740 --> 00:17:56.060
to ask, Hey, what is the status and vulnerability story of my project before I install them? Right. It's, it's good to

00:17:56.060 --> 00:18:00.860
know, Hey, you've installed a virus that is now running loose in your computer. You'll want to try to work on that,

00:18:00.860 --> 00:18:08.540
get it out. It's better to know before you install it. Okay. Right. And so when Owen submitted this to us, I'm like, this is awesome,

00:18:08.540 --> 00:18:17.420
but I'm not a uv sync kind of guy. I'm a uv pip install and a uv pip compile to generate a requirements.txt file.

00:18:17.420 --> 00:18:25.500
So he said, no problem. I'll update it to also do requirements files. And then I ran that just go in

00:18:25.500 --> 00:18:31.580
to the working folder for Python bytes and say uv dash secure. So first of all, you can install it with

00:18:31.580 --> 00:18:37.100
UV as a tool or with pip X or however you want. Then you say uv dash secure, and it'll say, I'm looking at

00:18:37.100 --> 00:18:41.740
this requirements file, or I'm looking at this lock file or whatever it is. And it'll take a minute.

00:18:41.740 --> 00:18:48.540
Cause it's, you know, the Python bytes project has 86 packages it uses. So it calls that API 86 times

00:18:48.540 --> 00:18:52.780
and gets a response. There's a bit of a delay there. Sure. You could parallelize that, but maybe harm the

00:18:52.780 --> 00:18:58.060
API. I don't know how much it can take in parallel, but anyway, it says if there's a problem or whether

00:18:58.060 --> 00:19:03.340
everything looks safe and Hey, everything looks good. Gotta love that. Nice. Yeah. So, nice work on that,

00:19:03.340 --> 00:19:10.860
Owen and yeah, people can check out uv secure. Cool. Yep. And yeah, there it is. I'm being checked to see if

00:19:10.860 --> 00:19:15.420
I'm secure trying to pull it up, but yeah, scan your uv lock file for dependencies with known vulnerabilities.

00:19:15.420 --> 00:19:22.780
And now also works with requirements.txt files that were generated by uv. I imagine with others as well,

00:19:22.780 --> 00:19:29.340
pinned ones at least, you know? Yeah. I mean, people might write their own now. Who knows? Whatever.

00:19:29.340 --> 00:19:34.700
Yeah. They might, they might. All right. that's it for our main items, isn't it?

00:19:34.700 --> 00:19:40.700
It is. Yeah. You got any extras? just, I guess, a little bit over the

00:19:40.700 --> 00:19:48.220
the, break I did, I did play around with PI test, more and, and, started testing

00:19:48.220 --> 00:19:53.740
code again. So, we'd talked about doing seasons. So I thought, yeah, what the heck I'll do. I'll,

00:19:53.740 --> 00:20:00.700
I'll shift over. And so after nine and a half years and 223 episodes, season two is starting.

00:20:03.260 --> 00:20:08.460
so I'm going to do PI test plugins. So please, anybody, so there's an episode up just

00:20:08.460 --> 00:20:12.940
introducing the, introducing the season that there'll be probably short, short or long,

00:20:12.940 --> 00:20:17.180
depending on what we want to talk about for different plugins. some of them are going to

00:20:17.180 --> 00:20:23.420
combine, plugins, like all the orderings together or something or whatever, or individual ones.

00:20:23.420 --> 00:20:28.460
So, if you'd like to submit your favorite plugin or something you'd like me to take a look at,

00:20:28.460 --> 00:20:35.100
um, go ahead. And how would you do that? you would, either go to, to blue sky or mastodon.

00:20:35.100 --> 00:20:41.660
or I recently added a contact form on python test.com. Oh, I have to add my blue sky to that contact

00:20:41.660 --> 00:20:50.620
form also. Oh, come on now. Don't forget it. Anyway. So that's my extra. Excellent. And real-time follow-up,

00:20:50.620 --> 00:20:55.740
uh, you have Henny, out there points out that sneak maybe as possible does something similar.

00:20:55.740 --> 00:21:00.140
Yeah. And that's for sure. I wonder if it's using the sneak API for that uv secure. Not sure anyway,

00:21:00.140 --> 00:21:06.620
but MP bought it, but yeah, that's another thing to consider. Okay. I have a few extras. This is the

00:21:06.620 --> 00:21:10.780
try. This is the trifecta part and I'm just going to link to it. I'm not going to play it. We've already

00:21:10.780 --> 00:21:17.740
all had plenty of heavy metal, but Owen, was inspired by the funny song that we did with, remember

00:21:17.740 --> 00:21:24.380
the curl heavy metal, like super heavy metal. That was awesome. TLS connect. Oh, so,

00:21:24.380 --> 00:21:29.340
he did one for HTTP status codes and it goes through all the different HTTP status codes. So I'll link to

00:21:29.340 --> 00:21:33.180
that. You can play it. You make sure you turn on the audio cause it's off by default because it's

00:21:33.180 --> 00:21:39.980
pretty good. It's pretty good. I'm I do enjoy it. gosh, I wonder if it has, I'm a teapot in there.

00:21:39.980 --> 00:21:46.460
I didn't listen that hard before 18, 19, whatever it is. That's a pretty good one. Okay. So,

00:21:46.460 --> 00:21:52.140
people can check that out. That's, that's pretty fun following on that. And, who knows, maybe I

00:21:52.140 --> 00:21:56.380
might do some more fun stuff with songs later as well with some of these episodes. I think we can do it,

00:21:56.380 --> 00:21:59.580
but we're not doing this episode. We've got to play around. So another thing to announce is

00:21:59.580 --> 00:22:07.580
Picon Austria is coming. When is it coming in April 6th and 7th? And it's opening party on the 5th. I mean,

00:22:07.580 --> 00:22:13.420
who wouldn't want to go to a party in Austria, have some good beer. Yeah. Great. Yeah. So I met

00:22:13.420 --> 00:22:19.260
some of the folks behind this at Picon Slovakia 2018 when I was there giving a talk and they're

00:22:19.260 --> 00:22:23.020
putting this on. I think it is free. Yeah. Attendance is free, but space is limited. So you

00:22:23.020 --> 00:22:31.260
still got to sign up. So if you're near Austria in Austria or can take a train over to Austria and like

00:22:31.260 --> 00:22:36.300
to do that, you know, check it out. I would absolutely go if I could, but it intersects with some

00:22:36.300 --> 00:22:41.660
family stuff that I can't get out of. So I'm not going this year, unfortunately, because of the

00:22:41.660 --> 00:22:46.460
dates, but it still would be fun and people can check it out. Right? Yeah. Yeah. Very cool. All

00:22:46.460 --> 00:22:53.740
right. Another one, Leonard Richardson, the guy who created beautiful soup. this was sent into

00:22:53.740 --> 00:23:00.380
me. I want to give a little bit of a credit here as well. This one was sent in by Sue mana and she said,

00:23:00.380 --> 00:23:06.940
Hey, check it out. New updates for beautiful soup. Apparently this is a pretty big change for 13 beta

00:23:06.940 --> 00:23:12.380
three was just updated, uploaded to pipe AI and hoping to get another round of feedback says

00:23:12.380 --> 00:23:17.740
Leonard before the final release, because apparently some, there's some kind of changes and stuff and you

00:23:17.740 --> 00:23:23.420
can check it out. There's a Google groups link to talk about the changes that he's proposing and trying

00:23:23.420 --> 00:23:28.060
out and so on. That's pretty awesome. I think I've been using beautiful soup since I started using

00:23:28.060 --> 00:23:33.340
Python. yeah, yeah, I agree. If you scroll through the comments here, Eric Holscher says,

00:23:33.340 --> 00:23:37.420
I just want to say thanks. Beautiful soup has been a constant utility, basically as long as I've been

00:23:37.420 --> 00:23:41.260
doing Python. So I thought that was a pretty apparent you're on the same vibe. They're pretty awesome.

00:23:41.260 --> 00:23:47.260
Yeah. Cool. So beautiful soup certainly rocks and I've used it a ton as well. Okay. I have one more

00:23:47.260 --> 00:23:53.260
extra Brian, but I want to close out the show with something special and unexpected for people. Okay.

00:23:53.260 --> 00:23:58.940
Okay. Okay. So in order to do that at the end, I think let's do the joke first.

00:23:58.940 --> 00:24:00.140
Oh, I'm all for jokes.

00:24:00.140 --> 00:24:06.620
Yeah. So you know what it's like to go to stack overflow, right? It's not, it's super helpful,

00:24:06.620 --> 00:24:10.700
but it can be a little prickly. Let's say, yeah, yeah. You'll submit a question like,

00:24:10.700 --> 00:24:15.180
well, that question was answered seven, asked and answered seven years ago over there. Like, well,

00:24:15.180 --> 00:24:18.780
yes, but it doesn't work that way anymore. Or, you know, you just, you shouldn't,

00:24:18.780 --> 00:24:24.060
why are you even asking this? You shouldn't do this. Right. So this comes back to a very common

00:24:24.060 --> 00:24:28.540
sort of question, you know, optimist versus pessimist, but we have a third category,

00:24:28.540 --> 00:24:34.940
a stack overflowist. Okay. So here's a glass. It's exactly 50% full of water. I mean,

00:24:34.940 --> 00:24:37.980
you can debate it's full of, it's a hundred percent full, but whatever. Like that's,

00:24:37.980 --> 00:24:42.540
that's not the debate. That's the chemistry joke. This one is the optimist pessimist versus stack

00:24:42.540 --> 00:24:48.140
overflowist. The first one is the optimist says the glass is half full. The pessimist says the glass

00:24:48.140 --> 00:24:55.660
is half empty. The stack over for this says the glass is a stupid question. And so I've in the show

00:24:55.660 --> 00:25:02.140
notes, I entitled the joke. That's a stupid cup, stupid glass. I like it. Pretty good. Right? Yeah.

00:25:02.140 --> 00:25:07.420
Yeah. And then like, of course, I'm, I'm the nerd in me is looking at this going,

00:25:07.420 --> 00:25:11.900
well, visually it's halfway up, but the, since the cup is wider at the top,

00:25:11.900 --> 00:25:16.940
it's got more, more air than it does. Anyway, I would say pessimist wins.

00:25:16.940 --> 00:25:21.480
It's going to go for this comes in second. Optimist. No, no, no, no. That's a stupid cup. Okay.

00:25:21.480 --> 00:25:25.100
That's a stupid cup. All right. You ready for the last thing? This is pretty awesome. This is,

00:25:25.100 --> 00:25:29.060
this is pretty wild. We live in, we live in incredible times. So I've started doing this thing over at

00:25:29.060 --> 00:25:34.300
Talk Python. This is only tangentially the actual topic it is, but it isn't. I've started doing this

00:25:34.300 --> 00:25:39.340
thing called episode deep dive. So I wrote up on the Talk Python blog, introducing episode deep dives

00:25:39.340 --> 00:25:44.600
at Talk Python. And so if you go to a, any, I'm embarrassed to say it took me a while to understand

00:25:44.600 --> 00:25:49.820
the snorkel reference, but deep dive. Yeah. Well, you got to pick something from your font. Awesome

00:25:49.820 --> 00:25:54.880
icons. And I'd already used up some other stuff. So it's a snorkel as the icon to click the button.

00:25:54.880 --> 00:26:00.440
I like it. Yeah. So now for every episode that I publish, I'm putting together what's called a deep

00:26:00.440 --> 00:26:07.160
dive. And actually it's ironic that the older ones are better because the more of them I've done,

00:26:07.160 --> 00:26:12.800
the better I've got at, you know, figure them out. Let's yeah. It's so weird. So here, let's see.

00:26:12.800 --> 00:26:17.520
Space science. Does this have a deep dive? It does. Okay. So space science, this one is,

00:26:17.620 --> 00:26:23.460
I interviewed Thomas Alban, Alban about his YouTube channel and his work. I think it was a European

00:26:23.460 --> 00:26:28.080
space, yeah, or European space agency and so on. But instead of just having the show notes, now it has

00:26:28.080 --> 00:26:32.440
this thing called the deep dive, which comes into their background. It says, Hey, if you're new to

00:26:32.440 --> 00:26:37.480
Python, these are the types of things you want to like research a little bit to understand this topic

00:26:37.480 --> 00:26:42.980
really well. Like this one's about visualization. So it talks about Matplotlib and pandas and spicy pie

00:26:42.980 --> 00:26:48.380
and visvis. And then it goes into all the like the takeaways and links and documents and tools and

00:26:48.380 --> 00:26:53.720
excellent stuff to just make it way more useful. Right. Okay. So yeah, thanks. We might start doing

00:26:53.720 --> 00:26:58.520
that here. I'm trying to decide because we're shown us are pretty close to this, but they're not exactly,

00:26:58.520 --> 00:27:02.520
we can play with it, but you know, we've looked at a little, right. It's a ton of work though. I don't

00:27:02.520 --> 00:27:07.420
have them all done. I'm back. I don't know. I'm back to like 2022 and I've got to go back to 2016.

00:27:07.420 --> 00:27:13.040
So there you go. But many of the new ones are done, which is awesome. So here's the thing that,

00:27:13.040 --> 00:27:17.820
here's the thing I'm going to close out the show with that I think is crazy. And I think people will

00:27:17.820 --> 00:27:22.840
enjoy. This is kind of a separate topic, but it just, that was a lead in because you'll see in a

00:27:22.840 --> 00:27:29.060
second why notebook LM. Have you played with notebook LM? No. So notebook LM is originally came out,

00:27:29.060 --> 00:27:34.380
it's from Google and it came out as a way to help people understand documents like researchers,

00:27:34.380 --> 00:27:40.300
professors, and so on. So what you do is you give notebook LM a PDF or a couple of PDFs,

00:27:40.300 --> 00:27:44.680
and then you can ask it questions like, what are the, what are the researchers think about this?

00:27:44.680 --> 00:27:48.920
And it's based on all of their thing, but the most insane thing, and this is what we're going to close

00:27:48.920 --> 00:27:52.820
out the show with is you can push a button. Literally, you don't have to give it prompts

00:27:52.820 --> 00:27:57.060
or anything. You just push a button and say, create a talk show, like similar to what we're doing here,

00:27:57.060 --> 00:28:04.180
talk show, like podcast episode of this paper. It is so insane. So if I was researching,

00:28:04.180 --> 00:28:10.420
I don't know if I was researching something between FastAPI and Django and somebody written up a really

00:28:10.420 --> 00:28:14.780
detailed report, I could upload that. And I could just say, Hey, I want to have a couple of people

00:28:14.780 --> 00:28:20.500
talk to me about the trade-offs and it brings in other world knowledge, right? It's not just the

00:28:20.500 --> 00:28:25.200
words in there. Like, it's kind of like ChatGPT in that it knows everything. And then it also just

00:28:25.200 --> 00:28:31.340
talks about this and it is insane. So going back to what the heck with these deep dives,

00:28:31.340 --> 00:28:36.100
if you scroll down a little bit, there's a, listen to a conversation about our deep dives.

00:28:36.100 --> 00:28:41.780
So those of you watching just the live stream, I'm not going to play this here because it's 13 minutes

00:28:41.780 --> 00:28:46.640
and 54 seconds, but you can go to this link here and just click the play button if you want to hear it.

00:28:46.640 --> 00:28:51.580
Okay. Okay. For everyone else, Brian, I'm going to put it as the closeout to the show. So there's

00:28:51.580 --> 00:28:56.600
nothing else, but I'm going to play this because it is an insane view into what is possible. So

00:28:56.600 --> 00:29:01.920
what I did is I took this deep dive conversation, blog posts, the deep dive blog posts, gave it to

00:29:01.920 --> 00:29:05.900
notebook LM. And I said, I want to hear people talk about it. So I'm going to drop that in and people

00:29:05.900 --> 00:29:09.260
can hear about it now. I think your mind's going to be blown, but if you don't want to listen to it,

00:29:09.260 --> 00:29:10.640
you can just, you know, this is the end of the show.

00:29:10.720 --> 00:29:15.360
That's funny because you sent this to me and I started listening and I totally thought you just

00:29:15.360 --> 00:29:18.800
like, like somebody else was doing a podcast about your deep dives.

00:29:18.800 --> 00:29:25.060
It's crazy if you haven't heard it and it has interruptions like, oh yeah. Uh huh. Or,

00:29:25.060 --> 00:29:30.940
you know, and it's, it's got that kind of artificial back and forth, but it's done in a really nice way.

00:29:30.940 --> 00:29:36.880
It's, it is, it's not just speech to text. It is something entirely on unworldly. It is weird.

00:29:36.880 --> 00:29:40.840
And I thought it'd be fun to close out the show just to, just to give people a weird glimpse into

00:29:40.840 --> 00:29:45.480
this world. And it'll talk about the deep dives if you care. Cool. All right. Well, with that later,

00:29:45.480 --> 00:29:50.080
everyone later, you ever listened to a podcast and it's packed with like all this insightful info,

00:29:50.080 --> 00:29:53.540
but then like a week later, you're like, wait, what was that again?

00:29:53.880 --> 00:29:57.900
It's like trying to, I don't know, grasp smoke or something. Yeah, exactly.

00:29:57.900 --> 00:30:01.020
Try to remember those key takeaways. You're not alone. If you're like that.

00:30:01.020 --> 00:30:03.760
Not at all. A lot of us struggle with that kind of thing.

00:30:03.760 --> 00:30:08.340
Making podcast knowledge stick. So that's what we're going to deep dive into today.

00:30:08.340 --> 00:30:12.560
We're looking at what Talk Python is calling episode deep dives.

00:30:12.560 --> 00:30:13.180
Okay.

00:30:13.180 --> 00:30:16.920
This could be the solution for that podcast information overload.

00:30:16.920 --> 00:30:21.940
Interesting. I'm intrigued by how Talk Python is, you know, going beyond just the audio.

00:30:22.060 --> 00:30:25.900
They're realizing that people consume information in different ways.

00:30:25.900 --> 00:30:26.180
Right.

00:30:26.180 --> 00:30:28.140
And so they're providing tools to deal with that.

00:30:28.140 --> 00:30:33.200
It's not about ditching the podcast. It's about having something to go along with it.

00:30:33.200 --> 00:30:37.520
Like imagine you're panning for gold, right? You're swirling the pan around and you see those

00:30:37.520 --> 00:30:38.940
little flecks of gold. Yeah.

00:30:38.940 --> 00:30:44.460
A deep dive is like having a tool that magically extracts those golden nuggets.

00:30:44.460 --> 00:30:47.520
Saves you a ton of time and effort.

00:30:47.520 --> 00:30:50.600
I like that analogy. It definitely captures that essence of efficiency.

00:30:51.000 --> 00:30:55.860
But how are these deep dives? Like, are they really that much different from just detailed

00:30:55.860 --> 00:30:56.460
show notes?

00:30:56.460 --> 00:31:02.300
Oh, that's a good question. Think of it like this. Typical show notes give you like the bullet

00:31:02.300 --> 00:31:02.700
points.

00:31:02.700 --> 00:31:03.040
Right.

00:31:03.040 --> 00:31:04.180
The bare minimum.

00:31:04.180 --> 00:31:04.600
Yeah.

00:31:04.600 --> 00:31:07.680
Deep dives are like, it's like getting the director's cut of the episode.

00:31:07.680 --> 00:31:08.320
Oh.

00:31:08.320 --> 00:31:09.640
With all the behind the scenes insights.

00:31:09.640 --> 00:31:09.980
Interesting.

00:31:09.980 --> 00:31:11.040
Deleted scenes.

00:31:11.040 --> 00:31:11.420
Yeah.

00:31:11.420 --> 00:31:13.400
Bonus features. So you get guest backgrounds.

00:31:13.720 --> 00:31:19.120
Key quotes, code examples, links to resources, all that stuff. It's just a much richer experience.

00:31:19.120 --> 00:31:25.000
So all that richness, that must lead to a lot of practical benefits. I mean, let's be honest,

00:31:25.000 --> 00:31:29.540
re-listening to a whole episode to find one specific thing, that can be a real time suck.

00:31:29.540 --> 00:31:30.540
Yeah, for sure.

00:31:30.540 --> 00:31:34.520
The deep dive, you can just quickly skim and locate what you need.

00:31:34.740 --> 00:31:35.700
That's such a time saver.

00:31:35.700 --> 00:31:36.100
Yeah.

00:31:36.100 --> 00:31:41.860
Doesn't this risk kind of discouraging people from actively listening during the podcast

00:31:41.860 --> 00:31:42.460
itself?

00:31:42.460 --> 00:31:42.720
Yeah.

00:31:42.720 --> 00:31:45.200
Because they're like, oh, I don't really need to pay attention.

00:31:45.200 --> 00:31:45.600
Yeah.

00:31:45.600 --> 00:31:47.700
There's going to be a summary waiting for me later.

00:31:47.700 --> 00:31:54.700
That's a good point. That's a valid concern. But think of it like taking notes during a lecture.

00:31:54.700 --> 00:31:59.400
Taking notes doesn't replace listening, right? It just enhances it.

00:31:59.400 --> 00:31:59.680
Right.

00:31:59.760 --> 00:32:02.020
It forces you to engage more actively.

00:32:02.020 --> 00:32:02.740
Makes sense.

00:32:02.740 --> 00:32:05.000
Knowing you're creating that reference for later.

00:32:05.000 --> 00:32:05.340
Yeah.

00:32:05.340 --> 00:32:10.500
Deep dives can serve a similar function. They can prompt more focused listening.

00:32:10.500 --> 00:32:16.480
Okay. Yeah, I see that. It's about being more intentional with how you absorb the information.

00:32:16.480 --> 00:32:16.860
Yeah.

00:32:16.860 --> 00:32:21.680
So we've established that deep dives go beyond typical show notes, and they can actually improve

00:32:21.680 --> 00:32:26.720
how we engage with a podcast. But what about people who, you know, maybe they're visual learners

00:32:26.720 --> 00:32:30.440
or they just prefer reading? Can these deep dives cater to different learning styles?

00:32:30.440 --> 00:32:34.040
Oh, absolutely. Podcasts are fantastic for auditory learners.

00:32:34.040 --> 00:32:34.400
Right.

00:32:34.400 --> 00:32:38.880
But not everybody learns the same way. Some people just, you know, they prefer reading. Some people

00:32:38.880 --> 00:32:40.680
have a hard time focusing solely on audio.

00:32:40.680 --> 00:32:41.640
Yeah, that's true.

00:32:41.640 --> 00:32:45.720
Deep dives give you that alternative pathway. It makes it accessible to more people.

00:32:45.720 --> 00:32:46.980
I like that.

00:32:46.980 --> 00:32:47.240
Yeah.

00:32:47.240 --> 00:32:51.860
So how are these deep dives structured? Is it just like a wall of text summarizing the whole

00:32:51.860 --> 00:32:52.100
thing?

00:32:52.420 --> 00:32:57.880
Oh, no, no, no. Not at all. They're really well designed, very scannable, digestible. Each

00:32:57.880 --> 00:33:01.360
one starts with what they call a guest spotlight section.

00:33:01.360 --> 00:33:01.740
Okay.

00:33:01.740 --> 00:33:06.860
It's like a mini biography of the guest. It gives you insight into their background, their expertise.

00:33:06.860 --> 00:33:07.500
Yeah.

00:33:07.500 --> 00:33:11.400
That adds context to their perspective. So you're not just hearing opinions, you're understanding

00:33:11.400 --> 00:33:12.360
where they're coming from.

00:33:12.360 --> 00:33:15.080
I like that. It's like getting to peek behind the curtain a little bit.

00:33:15.080 --> 00:33:15.400
Yeah.

00:33:15.540 --> 00:33:19.120
So we've got the guest spotlight setting the stage. What comes after that?

00:33:19.120 --> 00:33:24.700
So then the content is broken up. It follows the flow of the conversation. They've got clear

00:33:24.700 --> 00:33:28.600
headings and subheadings, you know, guiding you through the topics. And of course, it's

00:33:28.600 --> 00:33:32.300
got all the links to libraries, code examples, resources, all that.

00:33:32.300 --> 00:33:37.920
So it's really structured in a way that respects your time, lets you prioritize the information

00:33:37.920 --> 00:33:42.080
that matters most to you. I'm still a little skeptical, though. Can we look at a specific

00:33:42.080 --> 00:33:44.400
example to see how it all plays out?

00:33:44.500 --> 00:33:49.600
Absolutely. Let's look at the deep dive for the episode, secure coding for Python with

00:33:49.600 --> 00:33:50.360
She Hacks Purple.

00:33:50.360 --> 00:33:55.540
Okay. Sounds intriguing. This episode was all about threat modeling for Python developers,

00:33:55.540 --> 00:33:55.800
right?

00:33:55.800 --> 00:33:59.900
Exactly. And even if you haven't listened to the whole episode, the deep dive gives you

00:33:59.900 --> 00:34:05.600
a ton of insight. It starts with a background on Tanya Janca. She's the guest, also known

00:34:05.600 --> 00:34:10.140
as She Hacks Purple. It highlights her journey, you know, from software developer to penetration

00:34:10.140 --> 00:34:13.900
tester, and then how she eventually landed in application security.

00:34:13.900 --> 00:34:19.060
So you get a sense of her expertise and how her experience informs her view on secure

00:34:19.060 --> 00:34:21.400
coding. But why She Hacks Purple?

00:34:21.400 --> 00:34:27.140
The deep dive explains that, too. It comes from her role blending offensive and defensive security,

00:34:27.140 --> 00:34:29.680
which is often called like purple teaming.

00:34:29.680 --> 00:34:33.740
Ah, okay. Makes sense. So now we're starting to understand who we're dealing with. But let's

00:34:33.740 --> 00:34:38.260
go beyond the introduction. What were some of the key takeaways from the actual secure coding

00:34:38.260 --> 00:34:38.760
discussion?

00:34:38.760 --> 00:34:45.040
Well, one central concept was threat modeling, which they described as like a structured brainstorming

00:34:45.040 --> 00:34:50.900
session where the developers, a security person, and a product owner all come together to, as Tanya

00:34:50.900 --> 00:34:57.920
put it, brainstorm evil. They ask four key questions. Based on the work of Adam Shostak, who's, you know,

00:34:57.960 --> 00:34:59.300
kind of a big name in security.

00:34:59.300 --> 00:35:02.780
Hold on. Four questions to brainstorm evil. I like that. What are they?

00:35:02.780 --> 00:35:05.400
Well, the first one is, what are we building?

00:35:05.400 --> 00:35:05.800
Okay.

00:35:05.800 --> 00:35:11.380
That involves sketching out an architectural diagram to understand the components of the system.

00:35:11.380 --> 00:35:13.840
And then it's what can go wrong.

00:35:13.840 --> 00:35:14.580
Oh, okay.

00:35:14.740 --> 00:35:19.780
And that's where they put on their black hats and brainstorm potential risks and vulnerabilities.

00:35:19.780 --> 00:35:22.140
Okay. So far, so good. What about the next two?

00:35:22.140 --> 00:35:25.220
The third question is, what are we going to do about it?

00:35:25.220 --> 00:35:25.680
Makes sense.

00:35:25.680 --> 00:35:30.900
And that's where they shift gears and start discussing mitigation strategies. And then the final question

00:35:30.900 --> 00:35:32.920
is, did we do a good job?

00:35:32.920 --> 00:35:33.300
Okay.

00:35:33.300 --> 00:35:37.600
That involves validating the process, making sure those mitigations are actually effective.

00:35:37.600 --> 00:35:42.040
So it's a comprehensive process that goes beyond just identifying threats. It's about

00:35:42.040 --> 00:35:45.720
proactively addressing them. Are we getting a little too deep into the weeds here though?

00:35:45.720 --> 00:35:49.140
Yeah, you're right. We are getting a little ahead of ourselves. The point is,

00:35:49.140 --> 00:35:54.880
the deep dive breaks this concept down in a really clear and concise way,

00:35:54.880 --> 00:35:59.640
even if you're not familiar with threat modeling at all. And it does this for all the key topics from

00:35:59.640 --> 00:36:00.080
the episode.

00:36:00.080 --> 00:36:03.440
Okay. I see the value there. It's like having a condensed version of the conversation.

00:36:03.440 --> 00:36:03.800
Yeah.

00:36:03.800 --> 00:36:07.000
Highlighting the most important points. But let's pull back for a second.

00:36:07.000 --> 00:36:10.900
Back to the deep dives themselves. We've seen how they're structured,

00:36:11.260 --> 00:36:14.680
the benefits they offer. We've even gotten a glimpse of what they actually look like.

00:36:14.680 --> 00:36:20.320
But what about availability? Are these deep dives available for every single Talk Python episode?

00:36:20.320 --> 00:36:24.780
That's where it gets interesting. They are available for all Talk Python episodes from

00:36:24.780 --> 00:36:28.900
number 440 onwards, which is November 30th, 2023.

00:36:28.900 --> 00:36:31.260
Oh, okay. So fairly recent episodes are covered.

00:36:31.260 --> 00:36:31.500
Yeah.

00:36:31.500 --> 00:36:33.200
What about the older ones? Are they just out of luck?

00:36:33.200 --> 00:36:37.840
No, no, no. Not at all. Michael Kennedy and the Talk Python team are actually working on

00:36:37.840 --> 00:36:39.760
updating older episodes with deep dives.

00:36:39.920 --> 00:36:40.340
That's great.

00:36:40.340 --> 00:36:42.980
It's a big job. But they're steadily making progress.

00:36:42.980 --> 00:36:48.880
What if there's a specific older episode that I really want to deep dive for? Can I do anything

00:36:48.880 --> 00:36:49.380
about that?

00:36:49.380 --> 00:36:52.080
You absolutely can. Michael is really receptive to feedback.

00:36:52.080 --> 00:36:52.620
Okay.

00:36:52.620 --> 00:36:56.280
So if there's an episode you really want, you can reach out to him directly through his website,

00:36:56.280 --> 00:36:57.760
himkennedy.codes.

00:36:57.760 --> 00:37:02.520
So it's kind of a community effort then. Listeners can help decide which episodes get the deep dive

00:37:02.520 --> 00:37:07.120
treatment sooner. I like that. But some people might argue that, you know, just reading a summary

00:37:07.120 --> 00:37:12.020
isn't really enough, especially for these, you know, complex technical topics. What are your

00:37:12.020 --> 00:37:12.520
thoughts on that?

00:37:12.660 --> 00:37:17.540
I mean, that's fair. Deep dives aren't meant to replace listening to the episode. They're designed

00:37:17.540 --> 00:37:24.140
to work together. Think of it like this. You watch a fascinating documentary. You're captivated. You

00:37:24.140 --> 00:37:28.100
love it. But later on, some of the details get a little fuzzy.

00:37:28.100 --> 00:37:29.400
Yeah, that happened.

00:37:29.400 --> 00:37:33.260
Would you rather struggle to remember or have a nice, concise recap?

00:37:33.260 --> 00:37:34.840
Oh, a recap is nice.

00:37:34.840 --> 00:37:41.320
Yeah, to refresh your memory. Deep dives provide that extra layer. They help solidify that knowledge.

00:37:41.320 --> 00:37:45.700
Yeah, it's like having a study guide for your favorite podcasts. You get the big picture from

00:37:45.700 --> 00:37:50.960
listening, and then the deep dive helps you focus on the important details. Let's zoom out for a second.

00:37:50.960 --> 00:37:58.380
Away from Talk Python, what do you think this trend towards more structured and interactive podcast

00:37:58.380 --> 00:38:03.720
content? What do you think it says about how we're consuming information these days?

00:38:03.720 --> 00:38:07.740
It's really fascinating, isn't it? We're moving beyond passive consumption.

00:38:07.740 --> 00:38:08.340
For sure.

00:38:08.340 --> 00:38:12.140
People are demanding more. They want to engage with the content.

00:38:12.140 --> 00:38:12.540
Right.

00:38:12.540 --> 00:38:17.520
Dissect it, make it their own. Podcasts are evolving from just entertainment.

00:38:17.520 --> 00:38:17.940
Yeah.

00:38:17.940 --> 00:38:21.200
To really powerful learning platforms.

00:38:21.200 --> 00:38:25.220
I like that. The lines are blurring between education and entertainment, which I think is really

00:38:25.220 --> 00:38:31.700
exciting. But are we risking losing something in this shift, you know, by focusing on efficiency

00:38:31.700 --> 00:38:35.880
and structure? Could it make podcasts feel less? Less human?

00:38:35.880 --> 00:38:41.080
Oh, that is a really thoughtful question. We definitely need to retain that human element,

00:38:41.080 --> 00:38:45.560
that personal connection. That's what draws people to podcasts in the first place. The host's voice,

00:38:45.560 --> 00:38:52.060
you know, the curiosity in their questions, those unscripted moments. All of that is essential.

00:38:52.440 --> 00:38:56.600
It's that personal touch that makes you feel like you're part of a conversation, not just listening

00:38:56.600 --> 00:39:01.960
to a lecture. Can these structured summaries, like deep dives, can they go exist with that human

00:39:01.960 --> 00:39:02.280
element?

00:39:02.280 --> 00:39:05.260
I think they can. And they might even enhance it.

00:39:05.260 --> 00:39:05.900
Oh, interesting.

00:39:05.900 --> 00:39:11.760
By providing the tools to understand and retain the information, it deepens their connection to the

00:39:11.760 --> 00:39:13.360
content and to the creators.

00:39:13.900 --> 00:39:18.720
So instead of replacing the human element, it's more about creating a richer experience.

00:39:18.720 --> 00:39:19.360
Exactly.

00:39:19.360 --> 00:39:21.340
That caters to different learning styles.

00:39:21.340 --> 00:39:25.620
It's about empowering the listeners to engage on their own terms.

00:39:25.620 --> 00:39:26.140
I like that.

00:39:26.140 --> 00:39:32.140
In a way that resonates with them. And that, in turn, creates a more vibrant and engaged community

00:39:32.140 --> 00:39:33.040
around the podcast.

00:39:33.040 --> 00:39:39.260
Okay, I'm seeing deep dives in a whole new light. It's not just about summarizing. It's about fostering

00:39:39.260 --> 00:39:44.280
deeper engagement, making information more accessible, and ultimately empowering listeners

00:39:44.280 --> 00:39:46.680
to get more out of their podcast experience.

00:39:46.680 --> 00:39:51.600
It's recognizing that learning is a journey. And podcasts are an incredible vehicle for that

00:39:51.600 --> 00:39:57.220
journey. But like any journey, having the right tools and resources makes all the difference.

00:39:57.220 --> 00:40:03.460
So if these deep dives are the tools, what kind of impact can they have on the journey itself?

00:40:03.460 --> 00:40:07.180
What does this mean for the future of podcasts as a learning medium?

00:40:07.180 --> 00:40:09.660
It feels like we're on the cusp of something big.

00:40:09.660 --> 00:40:13.860
Yeah, podcasts have definitely transformed how we listen to things.

00:40:13.860 --> 00:40:19.220
For sure. But now it's like we're moving beyond just listening to actually learning from podcasts.

00:40:19.220 --> 00:40:19.560
Yeah.

00:40:19.800 --> 00:40:25.040
Like podcasts in the future, where they all come with these detailed summaries and maybe

00:40:25.040 --> 00:40:27.880
interactive exercises, even community forums.

00:40:27.880 --> 00:40:28.320
Whoa.

00:40:28.320 --> 00:40:29.040
All built right in.

00:40:29.040 --> 00:40:32.720
That would be pretty cool. It would really make knowledge accessible to everybody.

00:40:32.720 --> 00:40:36.880
Exactly. It's like no longer would these valuable insights be trapped in an audio stream,

00:40:36.880 --> 00:40:41.820
lost forever. As soon as the episode ends, they'd be readily available, searchable. You could

00:40:41.820 --> 00:40:42.620
share them easily.

00:40:42.620 --> 00:40:44.240
And it would really help people learn, too.

00:40:44.240 --> 00:40:50.560
Oh, yeah, for sure. What about the impact on the creators, the podcasters themselves?

00:40:50.560 --> 00:40:55.920
Oh, that's a great point. This kind of engagement, you know, it could really strengthen the bond

00:40:55.920 --> 00:40:58.580
between podcasters and their audience.

00:40:58.580 --> 00:41:00.040
It's like building a community.

00:41:00.040 --> 00:41:00.600
Yeah.

00:41:00.600 --> 00:41:01.960
Instead of just having a bunch of listeners.

00:41:01.960 --> 00:41:05.140
Exactly. It could take podcasting to a whole new level.

00:41:05.140 --> 00:41:06.600
This is really eye-opening.

00:41:06.600 --> 00:41:06.860
Yeah.

00:41:06.860 --> 00:41:12.700
What started as a deep dive into episode deep dives has turned into this, like, exploration

00:41:12.700 --> 00:41:14.240
of the future of podcasts.

00:41:14.240 --> 00:41:14.620
Yeah.

00:41:14.620 --> 00:41:15.700
And I'm excited about it.

00:41:15.700 --> 00:41:18.020
Me, too. It's clear that podcasting is still young.

00:41:18.020 --> 00:41:19.380
It's got so much potential.

00:41:19.380 --> 00:41:23.120
And innovations like deep dives are just the beginning.

00:41:23.120 --> 00:41:24.580
So if you're listening to this.

00:41:24.580 --> 00:41:24.920
Yeah.

00:41:24.920 --> 00:41:31.040
And you want to see how deep dives work, I really encourage you to check out talkpython.fm

00:41:31.040 --> 00:41:32.660
and explore for yourself.

00:41:32.660 --> 00:41:33.100
Yeah.

00:41:33.100 --> 00:41:36.080
You might be surprised at how much more you get out of your podcasts.

00:41:36.080 --> 00:41:41.680
It could even inspire you to think about how you learn and connect with information in new ways.

00:41:41.800 --> 00:41:43.480
It's all about embracing this evolution.

00:41:43.480 --> 00:41:44.200
Absolutely.

00:41:44.200 --> 00:41:46.620
How we learn, how we connect with information.

00:41:46.620 --> 00:41:50.860
Because knowledge is most powerful when we share it, when we explore it.

00:41:50.860 --> 00:41:51.040
Yeah.

00:41:51.040 --> 00:41:52.200
And when we put it into action.

00:41:52.200 --> 00:41:56.060
So on that note, we'll wrap up this deep dive.

00:41:56.060 --> 00:41:58.380
Hopefully this has given you some new ideas.

00:41:58.380 --> 00:41:58.720
Yeah.

00:41:58.720 --> 00:42:02.580
And inspired you to look at the world of podcasts with a fresh perspective.

00:42:02.580 --> 00:42:03.660
Happy listening.

00:42:03.660 --> 00:42:05.020
I think we are, yeah.

00:42:05.020 --> 00:42:06.460
Podcasts have come a long way.

00:42:06.460 --> 00:42:07.120
They really have.

00:42:07.120 --> 00:42:11.120
But now it's like we're talking about not just passive listening anymore.

00:42:11.120 --> 00:42:12.100
It's active learning.

00:42:12.100 --> 00:42:12.540
Right.

00:42:12.540 --> 00:42:13.060
Right.

00:42:13.060 --> 00:42:13.980
It's exciting.

00:42:13.980 --> 00:42:14.400
Yeah.

00:42:14.400 --> 00:42:20.700
And think about the impact this could have on, you know, on creators, on podcasters.

00:42:20.700 --> 00:42:21.380
Oh, yeah.

00:42:21.380 --> 00:42:22.260
For sure.

00:42:22.260 --> 00:42:29.580
This deeper level of engagement, I think it could lead to like a much stronger connection between the people making the podcasts.

00:42:29.580 --> 00:42:29.900
Yeah.

00:42:29.960 --> 00:42:30.960
And the people listening.

00:42:30.960 --> 00:42:31.280
Yeah.

00:42:31.280 --> 00:42:34.780
It's like you're building a community, not just broadcasting to an audience.

00:42:34.780 --> 00:42:35.440
Exactly.

00:42:35.440 --> 00:42:35.860
Yeah.

00:42:35.860 --> 00:42:40.160
It's turning podcasting into this collaborative learning experience.

00:42:40.160 --> 00:42:40.960
I love that.

00:42:40.960 --> 00:42:42.480
This has been really eye-opening.

00:42:42.480 --> 00:42:45.360
I mean, we started by diving into episode deep dives.

00:42:45.360 --> 00:42:45.660
Yeah.

00:42:45.660 --> 00:42:49.140
But it's turned into this whole exploration of the future of podcasts.

00:42:49.140 --> 00:42:49.980
It has.

00:42:49.980 --> 00:42:51.600
And I'm feeling pretty optimistic about it.

00:42:51.600 --> 00:42:51.860
I do.

00:42:51.860 --> 00:42:55.080
It's clear that podcasting is still in its early stages.

00:42:55.080 --> 00:42:56.600
And there's so much potential.

00:42:56.600 --> 00:43:00.200
And I think things like deep dives are just paving the way.

00:43:00.200 --> 00:43:01.080
They're leading the charge.

00:43:01.080 --> 00:43:07.640
So to all our listeners out there, if you want to see how deep dives work and practice, head over to talkpython.fm.

00:43:07.640 --> 00:43:08.000
Yeah.

00:43:08.000 --> 00:43:09.020
Explore a little bit.

00:43:09.020 --> 00:43:12.900
You might be surprised at how much more you can get out of your podcast listening.

00:43:12.900 --> 00:43:22.720
It might even inspire you to think about how you can incorporate some of these ideas into your own work or learning or whatever you're doing.

00:43:22.720 --> 00:43:23.360
Yeah, for sure.

00:43:23.360 --> 00:43:28.420
It's all about embracing this evolution and how we learn, how we connect with information.

00:43:28.420 --> 00:43:29.160
Exactly.

00:43:29.160 --> 00:43:32.160
And on that note, we'll wrap up this deep dive.

00:43:32.160 --> 00:43:33.000
We hope you enjoyed it.

00:43:33.000 --> 00:43:38.760
We hope it gave you some new ideas and inspired you to explore the world of podcasts with a fresh perspective.

00:43:38.760 --> 00:43:39.420
Absolutely.

00:43:39.420 --> 00:43:40.920
Happy listening, everyone.