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


Transcript #416: A Ghostly Episode

Return to episode page view on github
Recorded on Monday, Jan 13, 2025.

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to

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

00:11 And I'm Brian Okken.

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

00:16 over at Brian's course. Where's your course, Brian? I forgot the URL.

00:20 pythontest.com.

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

00:27 player show notes or on the homepage, all of those things. Follow us on Mastodon and Blue Sky.

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

00:37 into this yet, but there's a bunch of recommendations I got from, I think it was Blue Sky,

00:41 which fills out many of my topics today.

00:44 Nice.

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

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

00:55 getting an upgrade. We're not entirely sure yet. We're playing around with some ideas here.

00:58 Yeah.

00:59 Content-wise. But you should definitely subscribe to the email.

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

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

01:11 couple of weeks we've been on break. Some of it by decision, some of it mandatory by family stuff,

01:16 all those kinds of things. That's on my end. But welcome back. Happy New Year.

01:20 Welcome back. Yes. Thanks. It's really good to be back. I'm glad to start talking coding and Python

01:27 on the air again.

01:28 Yeah, absolutely. You get to this age where you get phone calls out of the blue. You've got to come

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

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

01:46 last week. Okay. Well, how about this week? What do you got for us? Well, I was thinking that this

01:52 week at the start of the new year, people might be thinking of some changes. So some of the changes

01:58 they might be thinking about is terminal or shell changes. If you're kind of a terminal person,

02:04 and especially if you were a macOS or Linux user, one of the things that just came out recently is

02:10 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

02:19 feature rich and cross platform terminal emulator that uses platform native UI and GPU acceleration.

02:27 So super fast, super featured. Why am I covering this? It's kind of fun actually. So ghosty,

02:34 have you heard about this? I have absolutely heard about it. I haven't installed. I have played with

02:39 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

02:46 are written in high speed languages. I think ghosted is zig of all zig language is awesome. And yeah,

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

02:57 announcement announcement of a release in October, but it it just came out at the end of the year. I

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

03:11 why am I talking about this? Because it's it's kind of fun. And also it has some interesting heritage.

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

03:24 left HashiCorp in 2023, but anyway, some, some, some nice heritage. It's a feature rich. What does

03:32 feature rich mean? That's a, it's a fast feature rich, fast. It's got themes. It's got all that stuff,

03:38 sort of stuff. But a couple of reviews that I was reading of it were saying that it really is pretty

03:45 fast and partly because it's less code. They really, the, the code for it is a lot stream,

03:51 more streamlined than a lot of other things. And, and having it be native and really focusing on some

03:59 of the speed and as well as features. So the, the tagline really, when you go to the about page,

04:04 it says there are many, many excellent terminal emulators available, but they all kind of force you

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

04:17 that. I've had issues with things that don't really look like, you know, they're not, they don't really

04:21 look like a native feel. Anyway. I kind of, I haven't, I've just downloaded it, started playing with it a

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

04:33 masked over the break. as far as shells go, so ghosty does integrate with, with shells,

04:40 with different shells that integrates with, it says, some of the features require integrating with

04:46 your shell. It automatically does automatic injection of shell integration for bash, Z shell,

04:52 fish and elvish. And I've been thinking about fish because fish was actually in the news as well.

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

05:08 but, and then the announcement at in December as well is that fish shell, is the 4.0 is in beta

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

05:22 I think it was CVC or C++. Yeah. a port from C++ to rust. So, not sure about

05:30 the reasons around that, but it's kind of fun. if you, it'd be fun to get, if you want to contribute

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

05:41 things that I'm, I'm intrigued by with fish because I I've been setting up new environments

05:46 lately and stuff and, and I, I like my environment, my shell environment, but, keeping it all

05:52 like all the extras on different machines is, is a little tricky. and, apparently fish has a,

05:59 I haven't used fish, but apparently fish has a lot of stuff built in that, that other people have

06:04 have to configure later. So, okay. Yeah. Yeah. I'll check that out. Very nice. Yeah. Are you,

06:10 you used to do a Z shell and oh my Z shell? Are you still? Yeah. Yeah. Yeah. Okay. If,

06:15 if I use the regular terminal or I term or stuff like that, then I am, but I think with warp,

06:20 I'm pretty sure. Yeah. I'm sure that it, it doesn't run Z shell, not directly anyway. It may

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

06:32 enjoying it. It comes to be built with a lot of stuff that I used to install like McFly and other

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

06:43 configuration changes. But when I started doing a bunch of machines, I kind of just went back to

06:48 vanilla bash and with a, with just a, like a bash or C file. but we'll see.

06:54 It's the history. The history is so hard on bash compared to some of the other things,

06:59 unless you configure it, right? Yeah. Yeah. Anyway, what you got for us?

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

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

07:16 but he might have a, a perfect, perfect, trifecta sort of thing going on here. So this,

07:24 this one that we're going to cover, he pointed out. And then the next one we're going to cover

07:28 is, the next one I'm going to cover is my second main topic is actually created by him.

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

07:38 three different sections, which is pretty wild. So Owen, thanks for sending this in. And like,

07:43 like I said, I encourage lots of people, to send their stuff in because that is a super helpful

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

07:55 you're working in asyncio, well, asyncio is not as high performance as it could be, right? So there

08:02 are things like UV lib, which is the backend powering things like UV loop, hence wind loop, UV loop.

08:10 The problem is UV loop is not compatible with windows, even though the foundation of

08:17 lib UV is compatible. Make that make sense, huh? So this person came along and worked on it,

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

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

08:34 many years of waiting, I went ahead and downloaded the source code for UV loop, started modifying the

08:38 source code, to be windows compatible by carefully removing and changing parts that were

08:43 not made for windows, such as forking processes rather than launching sub processes and so on and

08:48 so on. So here's a, does it have any, any, benchmarks? Where are your benchmarks? I think

08:55 it might actually, no. Yeah, it does have some benchmarks. So this is a way to replace the asyncio

09:00 event loop to upgrade it to have faster performance, much like UV lib, UV loop does for Mac and Linux.

09:08 But you can just do that here and you can kind of use them both, right? You can just do sort of a

09:13 import, try, except like try to import this or check your platform and import the right thing and just

09:19 sort of swap between them. Okay, cool. Yeah. So, it says if you run it, with the different

09:25 policies, it'll show you like how much faster, you can get like, it gets, I don't know,

09:30 is this like five times faster or something for some benchmark, you know, all those things go.

09:34 And then where are we? They've got some nice examples. Yeah. It says, check out the,

09:39 how to use when loop when UV loop is not available. So it just basically says if the platform is when

09:45 32 sigwin or CLI, just import the run method from when loop, otherwise import it from UV lib. You could

09:53 also probably, you know, probably a nice way would just to be set the asyncio event loop policy before

09:59 an event loop comes into existence, which then when it goes and creates a no event loop automatically,

10:04 it'll use the when, when loop or UV loop one or whatever, but yeah, people can check it out.

10:08 It shows how to use it with FastAPI, and things like that. So pretty neat, I think.

10:13 Yeah, that's cool. Yeah. So if you're doing asyncio stuff and you're on windows and you've been like,

10:20 people keep telling me UV loop is awesome. I hear you. I can't use it. When loop, check it out.

10:25 And thanks Owen for sending that in. I also kind of, I really liked that it kind of works with

10:29 both or you can, you can have, have some examples to use both because there are people that are test,

10:35 you know, test developing on windows and pushing to the Linux. So yeah. Or you're a framework creator

10:41 and you have users on both. Yeah. Which you should think about because like we've said before,

10:46 it's like over half of the Python users are using windows. So yeah, the majority,

10:50 if you single down to a single platform, the majority, the biggest one is windows and then

10:57 it breaks into pieces. Right. Yeah. Luckily all the other pieces are Linux sort of things.

11:02 That's right. And that, I think that's the problem is right. Everything is POSIX like

11:07 except for windows. Right. That's a challenge. So yeah. Oh, well, anyway. Okay. Well, let's,

11:14 let's take a look to get this right. Oh, I've got some news from, from both from astral,

11:19 a couple of astral topics, UV and rough. first off, I saw this like little notice that there's

11:26 a rough 2025 style guide and I'm like, well, what do we need a new style guide for 2025? but,

11:34 but I'm really, there's a bunch of stuff in here, but what I'm really excited about is the,

11:37 the modifications to the F string formatting. And yeah. I, we're getting really nerdy here. If,

11:43 if you're getting excited about F string format, but F yes, there was a great sticker for us that

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

11:55 with the, formatting the expressions inside, the interpolated expressions inside of the curly

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

12:08 but you can put code in there and, and now, now rough, we'll, we'll, we'll format that correctly. So, it's doing like, like here's, it shows an example of like,

12:19 you know, layer layer method plus five and it was two stuck together. So now, rough will

12:25 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

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

12:35 thousand. Yeah. And actually more and more now I'm like, do I really need to assign this to a variable

12:40 just so I can stick it into an F string. I'll just stick the code in the F string.

12:43 so I'm doing that more and more. So having a rough deal with that is great. But with that also,

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

12:53 to a project configuration. So if you want, if you set it to be double quotes or single quotes,

12:58 it'll deal with that. But, and they're left untouched if normalizing would result in an invalid

13:04 F string, of course it checks to make sure it doesn't make things up, looks for,

13:10 unnecessary, escape, like back tick or the, you know, the backslash, if it doesn't,

13:16 if it's not needed to be there. So that's nice. Yeah. That's excellent. Like for example,

13:20 you have single quote and then you will have another single quote in the string. You've got to escape it.

13:24 It'll rather than leave it there, it'll convert it, the outer strength to double quotes. So you

13:28 just don't need that escape at all, which is perfect. Yeah. Yeah. and then,

13:33 one of the last things is, it looks at the interpolated expressions in an F string to see

13:39 whether it might be acceptable to split the F string over multiple lines. So, and, and it has done

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

13:50 because it could have mucked up the interpolation. Now it's figuring that out.

13:54 And doing the right thing. So, it just lots, lots of good cleanup work for F string.

13:59 there's other stuff in here too, that, that I think is really nice. There's a,

14:03 prefer wrapping the assert message. Basically, do I care about this? Not really, except for,

14:08 I like the new one better. It looks better. so sure. better looking code is always a good thing.

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

14:18 in the first place. And yeah, so, so I'm glad that there's still work going on here.

14:23 now I've got a bit of a tangent that seems like a tangent, but not really.

14:28 the Python 3.14, 314, the PI release of Python is in alpha right now. December, as of December

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

14:41 but how do you play with it if you're kind of a UV person? Well, Charlie Marsh posted,

14:48 in just on the seventh that you can use, what was that UV Python? Yeah. 3.14. And then you

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

15:05 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,

15:11 and then pick up. Yeah. Yeah. Yeah. Yeah. Yeah. 3.14 or whatever. Yeah. It just works because

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

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

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

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

15:40 Toml for me and to start a project, but UV in it, it rocks. it does just enough. Like if you

15:47 pop into a new, a new project and just say UV and like you, you start coding and you say UV in it,

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

15:59 you. but it's not too big. You can just, you know, add more stuff. Yeah. That is such a balancing act,

16:05 right? Like I'm going to create a new project, run this cookie cutter or this other template.

16:08 Do you want to use Postgres? How about celery? Do you like caching? What kind of are like,

16:13 whoa, whoa, I just, I just don't, I just need to like a PI project Toml on a few things and what's

16:17 the right layout relative structure. Let's, let's not overdo it, you know? Yeah.

16:22 That's too much opinion. and then, also UV sync. I'm using a UV sync all the time. So you

16:28 clone a project and do UV sync and it'll pick up the project Toml and create a virtual environment and

16:33 all that. So nice. Well, I really appreciate your perfect segue because this next topic of mine is

16:41 called UV dash secure. Nice. Pretty awesome. This was the one created by Owen Lamont and he just

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

16:52 audit will go and look at what is installed in your virtual environment. So I've got a virtual environment.

16:58 I've installed some packages through whatever pip install dash E or through just pip install or dash

17:05 requirements, however you get it, right? You've got all those requirements installed. And what if there's

17:11 some kind of malware or some other horrible thing that you mistyped like Jane, Jane Gagu or I don't know,

17:17 whatever, like you, somehow you miss a letter and you get something terrible or something was just

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

17:26 you can't remember exactly what it's going back to, but there's an API that checks for vulnerabilities

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

17:35 Cool. Cool. So that's great. But that requires you to have all those things installed.

17:40 Oh yeah. And it doesn't work. It doesn't like look at things like the UV lock file. So UV secure allows you

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

17:56 know, Hey, you've installed a virus that is now running loose in your computer. You'll want to try to work on that,

18:00 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,

18:08 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.

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

18:25 to the working folder for Python bytes and say UV dash secure. So first of all, you can install it with

18:31 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

18:37 this requirements file, or I'm looking at this lock file or whatever it is. And it'll take a minute.

18:41 Cause it's, you know, the Python bytes project has 86 packages it uses. So it calls that API 86 times

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

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

18:58 everything looks safe and Hey, everything looks good. Gotta love that. Nice. Yeah. So, nice work on that,

19:03 Owen and yeah, people can check out UV secure. Cool. Yep. And yeah, there it is. I'm being checked to see if

19:10 I'm secure trying to pull it up, but yeah, scan your UV lock file for dependencies with known vulnerabilities.

19:15 And now also works with requirements.txt files that were generated by UV. I imagine with others as well,

19:22 pinned ones at least, you know? Yeah. I mean, people might write their own now. Who knows? Whatever.

19:29 Yeah. They might, they might. All right. that's it for our main items, isn't it?

19:34 It is. Yeah. You got any extras? just, I guess, a little bit over the the, break I did, I did play around with PI test, more and, and, started testing

19:48 code again. So, we'd talked about doing seasons. So I thought, yeah, what the heck I'll do. I'll,

19:53 I'll shift over. And so after nine and a half years and 223 episodes, season two is starting.

20:03 so I'm going to do PI test plugins. So please, anybody, so there's an episode up just

20:08 introducing the, introducing the season that there'll be probably short, short or long,

20:12 depending on what we want to talk about for different plugins. some of them are going to

20:17 combine, plugins, like all the orderings together or something or whatever, or individual ones.

20:23 So, if you'd like to submit your favorite plugin or something you'd like me to take a look at,

20:28 go ahead. And how would you do that? you would, either go to, to blue sky or mastodon.

20:35 or I recently added a contact form on python test.com. Oh, I have to add my blue sky to that contact

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

20:50 you have Henny, out there points out that sneak maybe as possible does something similar.

20:55 Yeah. And that's for sure. I wonder if it's using the sneak API for that UV secure. Not sure anyway,

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

21:06 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

21:10 all had plenty of heavy metal, but Owen, was inspired by the funny song that we did with, remember

21:17 the curl heavy metal, like super heavy metal. That was awesome. TLS connect. Oh, so,

21:24 he did one for HTTP status codes and it goes through all the different HTTP status codes. So I'll link to

21:29 that. You can play it. You make sure you turn on the audio cause it's off by default because it's

21:33 pretty good. It's pretty good. I'm I do enjoy it. gosh, I wonder if it has, I'm a teapot in there.

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

21:46 people can check that out. That's, that's pretty fun following on that. And, who knows, maybe I

21:52 might do some more fun stuff with songs later as well with some of these episodes. I think we can do it,

21:56 but we're not doing this episode. We've got to play around. So another thing to announce is

21:59 Picon Austria is coming. When is it coming in April 6th and 7th? And it's opening party on the 5th. I mean,

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

22:13 some of the folks behind this at Picon Slovakia 2018 when I was there giving a talk and they're

22:19 putting this on. I think it is free. Yeah. Attendance is free, but space is limited. So you

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

22:31 to do that, you know, check it out. I would absolutely go if I could, but it intersects with some

22:36 family stuff that I can't get out of. So I'm not going this year, unfortunately, because of the

22:41 dates, but it still would be fun and people can check it out. Right? Yeah. Yeah. Very cool. All

22:46 right. Another one, Leonard Richardson, the guy who created beautiful soup. this was sent into

22:53 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,

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

23:06 three was just updated, uploaded to pipe AI and hoping to get another round of feedback says

23:12 Leonard before the final release, because apparently some, there's some kind of changes and stuff and you

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

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

23:28 Python. yeah, yeah, I agree. If you scroll through the comments here, Eric Holscher says,

23:33 I just want to say thanks. Beautiful soup has been a constant utility, basically as long as I've been

23:37 doing Python. So I thought that was a pretty apparent you're on the same vibe. They're pretty awesome.

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

23:47 extra Brian, but I want to close out the show with something special and unexpected for people. Okay.

23:53 Okay. Okay. So in order to do that at the end, I think let's do the joke first.

23:58 Oh, I'm all for jokes.

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

24:06 but it can be a little prickly. Let's say, yeah, yeah. You'll submit a question like,

24:10 well, that question was answered seven, asked and answered seven years ago over there. Like, well,

24:15 yes, but it doesn't work that way anymore. Or, you know, you just, you shouldn't,

24:18 why are you even asking this? You shouldn't do this. Right. So this comes back to a very common

24:24 sort of question, you know, optimist versus pessimist, but we have a third category,

24:28 a stack overflowist. Okay. So here's a glass. It's exactly 50% full of water. I mean,

24:34 you can debate it's full of, it's a hundred percent full, but whatever. Like that's,

24:37 that's not the debate. That's the chemistry joke. This one is the optimist pessimist versus stack

24:42 overflowist. The first one is the optimist says the glass is half full. The pessimist says the glass

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

24:55 notes, I entitled the joke. That's a stupid cup, stupid glass. I like it. Pretty good. Right? Yeah.

25:02 Yeah. And then like, of course, I'm, I'm the nerd in me is looking at this going,

25:07 well, visually it's halfway up, but the, since the cup is wider at the top,

25:11 it's got more, more air than it does. Anyway, I would say pessimist wins.

25:16 It's going to go for this comes in second. Optimist. No, no, no, no. That's a stupid cup. Okay.

25:21 That's a stupid cup. All right. You ready for the last thing? This is pretty awesome. This is,

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

25:29 Talk Python. This is only tangentially the actual topic it is, but it isn't. I've started doing this

25:34 thing called episode deep dive. So I wrote up on the Talk Python blog, introducing episode deep dives

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

25:44 the snorkel reference, but deep dive. Yeah. Well, you got to pick something from your font. Awesome

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

25:54 I like it. Yeah. So now for every episode that I publish, I'm putting together what's called a deep

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

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

26:12 Space science. Does this have a deep dive? It does. Okay. So space science, this one is,

26:17 I interviewed Thomas Alban, Alban about his YouTube channel and his work. I think it was a European

26:23 space, yeah, or European space agency and so on. But instead of just having the show notes, now it has

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

26:32 Python, these are the types of things you want to like research a little bit to understand this topic

26:37 really well. Like this one's about visualization. So it talks about Matplotlib and pandas and spicy pie

26:42 and visvis. And then it goes into all the like the takeaways and links and documents and tools and

26:48 excellent stuff to just make it way more useful. Right. Okay. So yeah, thanks. We might start doing

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

26:58 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

27:02 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.

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

27:13 here's the thing I'm going to close out the show with that I think is crazy. And I think people will

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

27:22 second why notebook LM. Have you played with notebook LM? No. So notebook LM is originally came out,

27:29 it's from Google and it came out as a way to help people understand documents like researchers,

27:34 professors, and so on. So what you do is you give notebook LM a PDF or a couple of PDFs,

27:40 and then you can ask it questions like, what are the, what are the researchers think about this?

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

27:48 out the show with is you can push a button. Literally, you don't have to give it prompts

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

27:57 talk show, like podcast episode of this paper. It is so insane. So if I was researching,

28:04 I don't know if I was researching something between FastAPI and Django and somebody written up a really

28:10 detailed report, I could upload that. And I could just say, Hey, I want to have a couple of people

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

28:20 words in there. Like, it's kind of like ChatGPT in that it knows everything. And then it also just

28:25 talks about this and it is insane. So going back to what the heck with these deep dives,

28:31 if you scroll down a little bit, there's a, listen to a conversation about our deep dives.

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

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

28:46 Okay. Okay. For everyone else, Brian, I'm going to put it as the closeout to the show. So there's

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

28:56 what I did is I took this deep dive conversation, blog posts, the deep dive blog posts, gave it to

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

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

29:09 you can just, you know, this is the end of the show.

29:10 That's funny because you sent this to me and I started listening and I totally thought you just

29:15 like, like somebody else was doing a podcast about your deep dives.

29:18 It's crazy if you haven't heard it and it has interruptions like, oh yeah. Uh huh. Or,

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

29:30 It's, it is, it's not just speech to text. It is something entirely on unworldly. It is weird.

29:36 And I thought it'd be fun to close out the show just to, just to give people a weird glimpse into

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

29:45 everyone later, you ever listened to a podcast and it's packed with like all this insightful info,

29:50 but then like a week later, you're like, wait, what was that again?

29:53 It's like trying to, I don't know, grasp smoke or something. Yeah, exactly.

29:57 Try to remember those key takeaways. You're not alone. If you're like that.

30:01 Not at all. A lot of us struggle with that kind of thing.

30:03 Making podcast knowledge stick. So that's what we're going to deep dive into today.

30:08 We're looking at what Talk Python is calling episode deep dives.

30:12 Okay.

30:13 This could be the solution for that podcast information overload.

30:16 Interesting. I'm intrigued by how Talk Python is, you know, going beyond just the audio.

30:22 They're realizing that people consume information in different ways.

30:25 Right.

30:26 And so they're providing tools to deal with that.

30:28 It's not about ditching the podcast. It's about having something to go along with it.

30:33 Like imagine you're panning for gold, right? You're swirling the pan around and you see those

30:37 little flecks of gold. Yeah.

30:38 A deep dive is like having a tool that magically extracts those golden nuggets.

30:44 Saves you a ton of time and effort.

30:47 I like that analogy. It definitely captures that essence of efficiency.

30:51 But how are these deep dives? Like, are they really that much different from just detailed

30:55 show notes?

30:56 Oh, that's a good question. Think of it like this. Typical show notes give you like the bullet

31:02 points.

31:02 Right.

31:03 The bare minimum.

31:04 Yeah.

31:04 Deep dives are like, it's like getting the director's cut of the episode.

31:07 Oh.

31:08 With all the behind the scenes insights.

31:09 Interesting.

31:09 Deleted scenes.

31:11 Yeah.

31:11 Bonus features. So you get guest backgrounds.

31:13 Key quotes, code examples, links to resources, all that stuff. It's just a much richer experience.

31:19 So all that richness, that must lead to a lot of practical benefits. I mean, let's be honest,

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

31:29 Yeah, for sure.

31:30 The deep dive, you can just quickly skim and locate what you need.

31:34 That's such a time saver.

31:35 Yeah.

31:36 Doesn't this risk kind of discouraging people from actively listening during the podcast

31:41 itself?

31:42 Yeah.

31:42 Because they're like, oh, I don't really need to pay attention.

31:45 Yeah.

31:45 There's going to be a summary waiting for me later.

31:47 That's a good point. That's a valid concern. But think of it like taking notes during a lecture.

31:54 Taking notes doesn't replace listening, right? It just enhances it.

31:59 Right.

31:59 It forces you to engage more actively.

32:02 Makes sense.

32:02 Knowing you're creating that reference for later.

32:05 Yeah.

32:05 Deep dives can serve a similar function. They can prompt more focused listening.

32:10 Okay. Yeah, I see that. It's about being more intentional with how you absorb the information.

32:16 Yeah.

32:16 So we've established that deep dives go beyond typical show notes, and they can actually improve

32:21 how we engage with a podcast. But what about people who, you know, maybe they're visual learners

32:26 or they just prefer reading? Can these deep dives cater to different learning styles?

32:30 Oh, absolutely. Podcasts are fantastic for auditory learners.

32:34 Right.

32:34 But not everybody learns the same way. Some people just, you know, they prefer reading. Some people

32:38 have a hard time focusing solely on audio.

32:40 Yeah, that's true.

32:41 Deep dives give you that alternative pathway. It makes it accessible to more people.

32:45 I like that.

32:46 Yeah.

32:47 So how are these deep dives structured? Is it just like a wall of text summarizing the whole

32:51 thing?

32:52 Oh, no, no, no. Not at all. They're really well designed, very scannable, digestible. Each

32:57 one starts with what they call a guest spotlight section.

33:01 Okay.

33:01 It's like a mini biography of the guest. It gives you insight into their background, their expertise.

33:06 Yeah.

33:07 That adds context to their perspective. So you're not just hearing opinions, you're understanding

33:11 where they're coming from.

33:12 I like that. It's like getting to peek behind the curtain a little bit.

33:15 Yeah.

33:15 So we've got the guest spotlight setting the stage. What comes after that?

33:19 So then the content is broken up. It follows the flow of the conversation. They've got clear

33:24 headings and subheadings, you know, guiding you through the topics. And of course, it's

33:28 got all the links to libraries, code examples, resources, all that.

33:32 So it's really structured in a way that respects your time, lets you prioritize the information

33:37 that matters most to you. I'm still a little skeptical, though. Can we look at a specific

33:42 example to see how it all plays out?

33:44 Absolutely. Let's look at the deep dive for the episode, secure coding for Python with

33:49 She Hacks Purple.

33:50 Okay. Sounds intriguing. This episode was all about threat modeling for Python developers,

33:55 right?

33:55 Exactly. And even if you haven't listened to the whole episode, the deep dive gives you

33:59 a ton of insight. It starts with a background on Tanya Janca. She's the guest, also known

34:05 as She Hacks Purple. It highlights her journey, you know, from software developer to penetration

34:10 tester, and then how she eventually landed in application security.

34:13 So you get a sense of her expertise and how her experience informs her view on secure

34:19 coding. But why She Hacks Purple?

34:21 The deep dive explains that, too. It comes from her role blending offensive and defensive security,

34:27 which is often called like purple teaming.

34:29 Ah, okay. Makes sense. So now we're starting to understand who we're dealing with. But let's

34:33 go beyond the introduction. What were some of the key takeaways from the actual secure coding

34:38 discussion?

34:38 Well, one central concept was threat modeling, which they described as like a structured brainstorming

34:45 session where the developers, a security person, and a product owner all come together to, as Tanya

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

34:57 kind of a big name in security.

34:59 Hold on. Four questions to brainstorm evil. I like that. What are they?

35:02 Well, the first one is, what are we building?

35:05 Okay.

35:05 That involves sketching out an architectural diagram to understand the components of the system.

35:11 And then it's what can go wrong.

35:13 Oh, okay.

35:14 And that's where they put on their black hats and brainstorm potential risks and vulnerabilities.

35:19 Okay. So far, so good. What about the next two?

35:22 The third question is, what are we going to do about it?

35:25 Makes sense.

35:25 And that's where they shift gears and start discussing mitigation strategies. And then the final question

35:30 is, did we do a good job?

35:32 Okay.

35:33 That involves validating the process, making sure those mitigations are actually effective.

35:37 So it's a comprehensive process that goes beyond just identifying threats. It's about

35:42 proactively addressing them. Are we getting a little too deep into the weeds here though?

35:45 Yeah, you're right. We are getting a little ahead of ourselves. The point is,

35:49 the deep dive breaks this concept down in a really clear and concise way,

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

35:59 the episode.

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

36:03 Yeah.

36:03 Highlighting the most important points. But let's pull back for a second.

36:07 Back to the deep dives themselves. We've seen how they're structured, the benefits they offer. We've even gotten a glimpse of what they actually look like.

36:14 But what about availability? Are these deep dives available for every single Talk Python episode?

36:20 That's where it gets interesting. They are available for all Talk Python episodes from

36:24 number 440 onwards, which is November 30th, 2023.

36:28 Oh, okay. So fairly recent episodes are covered.

36:31 Yeah.

36:31 What about the older ones? Are they just out of luck?

36:33 No, no, no. Not at all. Michael Kennedy and the Talk Python team are actually working on

36:37 updating older episodes with deep dives.

36:39 That's great.

36:40 It's a big job. But they're steadily making progress.

36:42 What if there's a specific older episode that I really want to deep dive for? Can I do anything

36:48 about that?

36:49 You absolutely can. Michael is really receptive to feedback.

36:52 Okay.

36:52 So if there's an episode you really want, you can reach out to him directly through his website,

36:56 himkennedy.codes.

36:57 So it's kind of a community effort then. Listeners can help decide which episodes get the deep dive

37:02 treatment sooner. I like that. But some people might argue that, you know, just reading a summary

37:07 isn't really enough, especially for these, you know, complex technical topics. What are your

37:12 thoughts on that?

37:12 I mean, that's fair. Deep dives aren't meant to replace listening to the episode. They're designed

37:17 to work together. Think of it like this. You watch a fascinating documentary. You're captivated. You

37:24 love it. But later on, some of the details get a little fuzzy.

37:28 Yeah, that happened.

37:29 Would you rather struggle to remember or have a nice, concise recap?

37:33 Oh, a recap is nice.

37:34 Yeah, to refresh your memory. Deep dives provide that extra layer. They help solidify that knowledge.

37:41 Yeah, it's like having a study guide for your favorite podcasts. You get the big picture from

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

37:50 Away from Talk Python, what do you think this trend towards more structured and interactive podcast

37:58 content? What do you think it says about how we're consuming information these days?

38:03 It's really fascinating, isn't it? We're moving beyond passive consumption.

38:07 For sure.

38:08 People are demanding more. They want to engage with the content.

38:12 Right.

38:12 Dissect it, make it their own. Podcasts are evolving from just entertainment.

38:17 Yeah.

38:17 To really powerful learning platforms.

38:21 I like that. The lines are blurring between education and entertainment, which I think is really

38:25 exciting. But are we risking losing something in this shift, you know, by focusing on efficiency

38:31 and structure? Could it make podcasts feel less? Less human?

38:35 Oh, that is a really thoughtful question. We definitely need to retain that human element,

38:41 that personal connection. That's what draws people to podcasts in the first place. The host's voice,

38:45 you know, the curiosity in their questions, those unscripted moments. All of that is essential.

38:52 It's that personal touch that makes you feel like you're part of a conversation, not just listening

38:56 to a lecture. Can these structured summaries, like deep dives, can they go exist with that human

39:01 element?

39:02 I think they can. And they might even enhance it.

39:05 Oh, interesting.

39:05 By providing the tools to understand and retain the information, it deepens their connection to the

39:11 content and to the creators.

39:13 So instead of replacing the human element, it's more about creating a richer experience.

39:18 Exactly.

39:19 That caters to different learning styles.

39:21 It's about empowering the listeners to engage on their own terms.

39:25 I like that.

39:26 In a way that resonates with them. And that, in turn, creates a more vibrant and engaged community

39:32 around the podcast.

39:33 Okay, I'm seeing deep dives in a whole new light. It's not just about summarizing. It's about fostering

39:39 deeper engagement, making information more accessible, and ultimately empowering listeners

39:44 to get more out of their podcast experience.

39:46 It's recognizing that learning is a journey. And podcasts are an incredible vehicle for that

39:51 journey. But like any journey, having the right tools and resources makes all the difference.

39:57 So if these deep dives are the tools, what kind of impact can they have on the journey itself?

40:03 What does this mean for the future of podcasts as a learning medium?

40:07 It feels like we're on the cusp of something big.

40:09 Yeah, podcasts have definitely transformed how we listen to things.

40:13 For sure. But now it's like we're moving beyond just listening to actually learning from podcasts.

40:19 Yeah.

40:19 Like podcasts in the future, where they all come with these detailed summaries and maybe

40:25 interactive exercises, even community forums.

40:27 Whoa.

40:28 All built right in.

40:29 That would be pretty cool. It would really make knowledge accessible to everybody.

40:32 Exactly. It's like no longer would these valuable insights be trapped in an audio stream,

40:36 lost forever. As soon as the episode ends, they'd be readily available, searchable. You could

40:41 share them easily.

40:42 And it would really help people learn, too.

40:44 Oh, yeah, for sure. What about the impact on the creators, the podcasters themselves?

40:50 Oh, that's a great point. This kind of engagement, you know, it could really strengthen the bond

40:55 between podcasters and their audience.

40:58 It's like building a community.

41:00 Yeah.

41:00 Instead of just having a bunch of listeners.

41:01 Exactly. It could take podcasting to a whole new level.

41:05 This is really eye-opening.

41:06 Yeah.

41:06 What started as a deep dive into episode deep dives has turned into this, like, exploration

41:12 of the future of podcasts.

41:14 Yeah.

41:14 And I'm excited about it.

41:15 Me, too. It's clear that podcasting is still young.

41:18 It's got so much potential.

41:19 And innovations like deep dives are just the beginning.

41:23 So if you're listening to this.

41:24 Yeah.

41:24 And you want to see how deep dives work, I really encourage you to check out talkpython.fm

41:31 and explore for yourself.

41:32 Yeah.

41:33 You might be surprised at how much more you get out of your podcasts.

41:36 It could even inspire you to think about how you learn and connect with information in new ways.

41:41 It's all about embracing this evolution.

41:43 Absolutely.

41:44 How we learn, how we connect with information.

41:46 Because knowledge is most powerful when we share it, when we explore it.

41:50 Yeah.

41:51 And when we put it into action.

41:52 So on that note, we'll wrap up this deep dive.

41:56 Hopefully this has given you some new ideas.

41:58 Yeah.

41:58 And inspired you to look at the world of podcasts with a fresh perspective.

42:02 Happy listening.

42:03 I think we are, yeah.

42:05 Podcasts have come a long way.

42:06 They really have.

42:07 But now it's like we're talking about not just passive listening anymore.

42:11 It's active learning.

42:12 Right.

42:12 Right.

42:13 It's exciting.

42:13 Yeah.

42:14 And think about the impact this could have on, you know, on creators, on podcasters.

42:20 Oh, yeah.

42:21 For sure.

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

42:29 Yeah.

42:29 And the people listening.

42:30 Yeah.

42:31 It's like you're building a community, not just broadcasting to an audience.

42:34 Exactly.

42:35 Yeah.

42:35 It's turning podcasting into this collaborative learning experience.

42:40 I love that.

42:40 This has been really eye-opening.

42:42 I mean, we started by diving into episode deep dives.

42:45 Yeah.

42:45 But it's turned into this whole exploration of the future of podcasts.

42:49 It has.

42:49 And I'm feeling pretty optimistic about it.

42:51 I do.

42:51 It's clear that podcasting is still in its early stages.

42:55 And there's so much potential.

42:56 And I think things like deep dives are just paving the way.

43:00 They're leading the charge.

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

43:07 Yeah.

43:08 Explore a little bit.

43:09 You might be surprised at how much more you can get out of your podcast listening.

43:12 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.

43:22 Yeah, for sure.

43:23 It's all about embracing this evolution and how we learn, how we connect with information.

43:28 Exactly.

43:29 And on that note, we'll wrap up this deep dive.

43:32 We hope you enjoyed it.

43:33 We hope it gave you some new ideas and inspired you to explore the world of podcasts with a fresh perspective.

43:38 Absolutely.

43:39 Happy listening, everyone.

Back to show page