We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode #416 A Ghostly Episode

#416 A Ghostly Episode

2025/1/13
logo of podcast Python Bytes

Python Bytes

AI Deep Dive AI Insights AI Chapters Transcript
People
B
Brian
Python 开发者和播客主持人,专注于测试和软件开发教育。
M
Michael
帮助医生和高收入专业人士管理财务的金融教育者和播客主持人。
Topics
Brian: 我关注到 Ghostty 终端模拟器,它在速度、功能和原生 UI 方面取得了很好的平衡。它由 HashiCorp 的联合创始人 Mitchell Hashimoto 创建,支持 macOS 和 Linux 系统,未来计划支持 Windows。Ghostty 的特点是速度快,功能丰富,并提供主题、连字等功能。一些功能需要与 Shell 集成,Ghostty 自动支持 Bash、Zsh、Fish 和 Elvish。 另外,Fish shell 4.0 版本发布,它使用 Rust 重写,改进了性能和用户体验,并增加了更自然按键绑定和扩展的历史搜索等功能。 Michael: 我也关注到 Ghostty,但目前 Warp 仍然是我的首选终端模拟器。Fish shell 使用 Rust 重写是一个有趣的趋势,这可能与 Rust 社区日益活跃有关。我个人使用 zsh 和 oh-my-zsh,但在管理多台机器时,我更倾向于使用简单的 bash 和 bashrc 文件。不同 Shell 的历史记录功能差异很大,这需要根据个人需求进行配置。

Deep Dive

Key Insights

What is Ghostty and what makes it unique among terminal emulators?

Ghostty is a terminal emulator developed by Mitchell Hashimoto, co-founder of HashiCorp. It is designed to be fast, feature-rich, and cross-platform, offering a native UI with GPU acceleration. Unlike other terminal emulators that force users to choose between speed, features, or native UI, Ghostty aims to provide all three. It supports themes, ligatures, and integrates with shells like Bash, Zsh, Fish, and Elvish.

Why is Fish Shell 4.0 significant, and what major change has been made?

Fish Shell 4.0 is significant because it has been rewritten in Rust, moving away from its previous C++ codebase. This rewrite brings new features like more natural key bindings and expanded history search, making the command line experience more user-friendly and efficient. The shift to Rust reflects the growing energy and community support around the Rust programming language.

What is WinLoop and why was it created?

WinLoop is an alternative library that provides compatibility with uvloop for Windows users. It was created because, despite libuv (the foundation of uvloop) being compatible with Windows, uvloop itself was not. WinLoop modifies the uvloop source code to work on Windows, addressing issues like process forking and subprocess launching. It allows Windows users to benefit from the performance improvements of uvloop in async I/O applications.

What are the key improvements in Ruff 0.9.0's f-string formatting?

Ruff 0.9.0 introduces several improvements to f-string formatting, including formatting expressions inside f-string curly braces, normalizing quotes according to project configuration, removing unnecessary escapes, and determining if splitting f-strings over multiple lines is acceptable. These changes make f-string formatting more consistent and readable, especially for complex interpolated expressions.

What is uv-secure and how does it enhance dependency security?

uv-secure is a tool that scans PyPI dependencies listed in uv.lock files or uv-generated requirements.txt files for known vulnerabilities. It checks these dependencies against the PyPI JSON API to identify potential security issues before installation. This proactive approach helps developers avoid installing vulnerable packages, enhancing the security of their projects.

What is the purpose of TalkPython's episode deep dives?

TalkPython's episode deep dives provide a structured and detailed summary of podcast episodes, including guest backgrounds, key quotes, code examples, and resource links. They aim to enhance the listener's experience by offering a richer, more accessible way to engage with the content, catering to different learning styles and making it easier to revisit and retain key information.

What is Notebook LM and how does it transform document interaction?

Notebook LM is a tool from Google that allows users to upload documents, such as research papers, and interact with them in innovative ways. It can generate podcast-like conversations about the content, combining the document's information with broader world knowledge. This feature enables users to explore complex topics in a conversational format, making it easier to understand and engage with the material.

Shownotes Transcript

Translations:
中文

- Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 416, recorded January 13th, 2025. I'm Michael Kennedy.

And I'm Brian Ocken. This episode is brought to you by us. Check out our stuff that we're doing over at Brian's course. Where's your course, Brian? I forgot the URL. PythonTest.com. PythonTest.com. That's right. And over at TalkPythonTraining, links are in the podcast player show notes or on the homepage, all of those things. Follow us on Mastodon and Blue Sky. We love to connect with people over there. In fact, Brian, you don't really have visibility into this yet, but there's a bunch of recommendations I got from...

think it was blue sky which fills out many of my topics today so nice yes and i encourage people to follow us out there use the starter pack on my profile if they wish and if you want to get all the stuff sent to you automatically as an email and this might be getting an upgrade we're not entirely sure yet we're playing around with some ideas here yeah content wise but you should definitely subscribe to the email by them by start fm click on newsletter guess what you'll get a newsletter if you do it that'd be awesome we'd love we

We'd love to talk to you there. And with that, happy new year, Brian. It's been a couple of weeks we've been on break, some of it by decision, some of it mandatory by family stuff, all those kinds of things. That's on my end, but welcome back. Happy new year. Welcome back. Yes, thanks. It's really good to be back. I'm glad to start talking coding and Python on the air again. Yeah, absolutely. You get to this age where you

You get phone calls out of the blue. You've got to come help your father with this because he's, you know, old and can't do stuff. And just sometimes you jump on a plane for non-vacation reasons and it's not as fun as it could be, but you got to do it. That was me. Bye.

last week. Okay, well, how about this week? What do you got for us? Well, I was thinking that this week at the start of the new year, people might be thinking of some changes. So some of the changes they might be thinking about is terminal or shell changes. If you're kind of a terminal person, and especially if you were a Mac OS or Linux user, one of the things that just came out recently is Ghosty. So

G-H-O-S-T-T-Y. Did that go TTY? Yeah, that's clever. It's a fast feature rich and cross platform terminal emulator

That uses platform native UI and GPU acceleration. So super fast, super featured. Why am I covering this? It's kind of fun, actually. So, Ghosty, have you heard about this? I have absolutely heard about it. I have it installed. I have played with it. It is fun. It is not yet dethroned to warp as my way to go.

Okay.

announcement of a release in October but it it just came out at the end of the year I think it was the 31st of December or something like that in into the year but it's so what why why am I talking about this because it's it's kind of fun and also it has some interesting heritage so this is started by Mitchell Hashimoto which is one of the co-founders of HashiCorp he I think

I think he left HashiCorp in 2023. But anyway, some nice heritage. It's feature rich. What does feature rich mean? It's fast. Feature

feature-rich fast it's got themes it's got all that sort of stuff but um a couple of reviews that i was reading of it were saying that um it really is pretty fast and partly because it's less code they really the the code for it is a lot uh stream more streamlined than a lot of other things and and having it be native um and really focusing on some of the speed and as well as features

So the tagline really, when you go to the about page, it says there are many, many excellent terminal emulators available, but they all kind of force you to either choose speed features or a native UI and ghosty wants to do all three. And I kind of like that. I've had issues with things that don't really look like, you know, they're not, they don't really look like a native feel. Anyway, I kind of,

I haven't, I've just downloaded it, started playing with it a little bit. Haven't done much with it, but a lot of people on Blue Sky were talking about it in Mastodon over the break. As far as shells go, so Ghosty does integrate with shells, with different shells. It integrates with, it says some of the features require integrating with your shell. It automatically does automatic injection of shell integration for Bash, ZShell, Fish, and Elvish. And,

And I've been thinking about Phish because Phish was actually in the news as well. You're into jam bands? I got it. Yeah, I kind of forgot about Phish. Anyway, but an announcement in December as well is that Phish Shell is the 4.0 is in beta and it is rewritten in Rust. Wow.

That's kind of fun. Do you know what it was written in before? I think it was C or C++. Yeah, a port from C++ to Rust. So not sure about the reasons around that, but it's kind of fun. It'd be fun to get if you want to contribute or whatever. I think there's more energy around Rust than C++ right now. Yeah. One of the things that I'm intrigued by with Phish, because I've been setting up new

environments lately and stuff and and i i like my environment my shell environment but um keeping it all like all the extras on different machines is is a little tricky um and uh apparently fish has a i haven't used fish but apparently fish has a lot of stuff built in that that other people have have to configure later so okay shot also yeah yeah i'll check that out very nice yeah are you used to do uh z shell and oh my z shell are you still yeah yeah yeah okay

If I use the regular terminal or iTerm or something like that, then I am. But I think with Warp, I'm pretty sure... Yeah, I'm sure that it doesn't run ZShell. Not directly, anyway. It may underneath the cover somehow. But it feels like it kind of does its own thing, you know? Yeah. And I'm enjoying it. It comes...

rebuilt with a lot of stuff that i used to install like mcfly and other types of stuff well so i used to have it used to be a heavy duty z shell user and had tons of configuration changes but when i started doing a bunch of machines i kind of just went back to vanilla bash and with a with just a like a bash rc file um but we'll see i mean it's the history the history is so hard on bash compared to some of the other things unless you configure it right yeah yeah anyway what you

What you got for us? All right. Let's take it for a loop here. This one comes to us from Owen Lamont. And I told you stuff was coming from blue sky. And Owen has a special honor in this episode. He doesn't know it, but he might have a, a perfect, perfect trifecta sort of thing going on here. So this, this one that we're going to cover, he pointed out. And then the next one we're going to cover is,

is the next one I'm going to cover is my second main topic is actually created by him. Then something else, I can't remember exactly what it was, was referred to. So he's got three things in three different sections, which is pretty wild. So Owen, thanks for sending this in. And like I said, I encourage lots of people to send their stuff in because that is super helpful and we'd love to have it up

So this one is called WinLoop. Now, something that's a hassle is if you're working in AsyncIO, well, AsyncIO is not...

as high performance as it could be, right? So there are things like UV lib, which is the backend powering things like UV loop, hence WinLoop, UV loop. The problem is UV loop is not compatible with Windows, even though the foundation of lib UV is compatible. Make that make sense, huh?

So this person came along and worked on it, Visonex, and said, all right, I've been waiting for people to set this up and make it work. And well, I guess I'm going to have to do it myself. So he said, because nobody was willing to step up after so many years of waiting, I went ahead and downloaded the source code for UV loop, started modifying the source code to be Windows compatible by carefully removing and changing parts that were not made for Windows, such as forking processes rather than launching subprocesses and so on and so on.

So here's a, does it have any benchmarks? Where are your benchmarks? I think it might actually, no. Yeah, it does have some benchmarks. So this is a way to replace the async IO event loop to upgrade it to faster performance, much like UV loop does fast.

for Mac and Linux, but you can just do that here. And you can kind of use them both, right? You can just do sort of an import, try, accept, like try to import this or check your platform and import the right thing and just sort of swap between them. Okay, cool. Yeah. So it says if you run it with the different policies, it'll show you like how much faster you can get. Like it gets, I don't know, is this like five times faster or something for some benchmark, you know, all those things go. And then where are...

MARK MANDEL: They've got some nice examples. Yeah, it says, check out the how to use WinLoop when UV loop is not available. So it just basically says, if the platform is Win32, Cygwin, or CLI, just import the run method from WinLoop.

Otherwise, import it from UVLib. You could also probably, you know, probably a nice way would just to be set the async IO event loop policy before an event loop comes into existence, which then when it goes and creates a no event loop automatically, it'll use the WinLoop or UVLoop one or whatever. But, you know, people can check it out. It shows how to use it with FastAPI.

and things like that so pretty neat i think yeah that's cool yeah so if you're doing async io stuff and you're on windows and you've been like people keep telling me uv loop is awesome i hear you i can't use it when look check it out and thanks for sending that in um i also kind of i really like that it kind of works with both or you can you can have have some examples to use both because there are people that are test you know test yeah developing on windows and pushing to fill

Yeah, or you're a framework creator and you have users on both. Yeah, which you should think about because like we've said before, it's like over half of the Python users are using Windows. Yeah, the majority. If you single down to a single platform, the majority, the biggest one is Windows and then it breaks into pieces, right? Yeah.

Luckily, all the other pieces are Linux-y sort of things. That's right. And I think that's the problem. Everything is POSIX-like, except for Windows. That's a challenge. Anyway, okay. Well, let's take a look to get this right. I've got some news from Astral, a couple of Astral topics, UV and ROUGH.

First off, I saw this little notice that there's a rough 2025 style guide. And I'm like, what? What do we need, a new style guide for 2025? But there's a bunch of stuff in here. But what I'm really excited about is the modifications to the F string formatting. And yeah, we're getting really nerdy here if you're getting excited about F string formatting. But-- F, yes. There was a great sticker for a while that said F, yes, when F strings came out.

So one of the cool things is, I guess it didn't deal with the formatting, the expressions inside, the interpolated expressions inside, the curly braces inside of an F string. And so, yeah, often it's just a variable name, which isn't a big deal. But you can put code in there. And now Ruff will format that correctly. That's cool. It's doing like, it shows an example of like,

you know, layer method plus five and it was too stuck together. So now Ruff will 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 much time, I want to represent that in milliseconds, but it has a dot total second. So I'll just times a thousand. Yeah. And actually more and more now I'm like, do I really need to assign this to a variable just so I can stick it into an F string? I'll just stick the code in the F string. Yeah.

So I'm doing that more and more. So having rough deal with that is great. But with that also, there's a bunch of other cool things like quotes are now normalized in F strings according to a project configuration. So if you want, if you set it to be double quotes or single quotes, it'll deal with that. But, and, and,

They're left untouched if normalizing would result in an invalid F string. Of course, it checks to make sure it doesn't mess things up. Looks for unnecessary escape, like back tick or the backslash, if it's not needed to be there. So that's nice. Yeah, that's excellent. Like, for example, you have single quote, and then you will have another single quote in the string. You've got to escape it. Rather than leave it there, it'll convert it, the outer string, to double quotes. So you just don't need the escape at all, which is perfect.

Perfect. Yeah. Yeah. And then one of the last things is it looks at the interpolated expressions in an F string to see whether it might be acceptable to split the F string over multiple lines. So, and, and it has done that with strings of splitting it on multiple lines of, but,

But I don't think it did that with F strings before because it could have mucked up the interpolation. Now it's figuring that out and doing the right thing. So just lots, lots of good cleanup work for F string. There's other stuff in here, too, that I think is really nice. There's a prefer wrapping the assert message. Basically, do I care about this? Not really, except for I like the new one better. It looks better.

Um, so sure. Um, better looking code is always a good thing. So thanks Astral for not like ignoring. I mean, rough is why we've got fell in love with these guys in the first place. And so, uh, so I'm glad that there's still work going on here. Um, now I've got a bit of a tangent that seems like a tangent, but not really. Uh,

the Python 3.14, 3.14, the PI release of Python is in alpha right now. As of December 17th, there's the alpha three. So it's been in alpha for a while. But so you can play with it. But how do you play with it if you're kind of a UV person? Well, Charlie Marsh posted in just on the seventh that you can use what was

What is it? UV Python install. 3.14. And then you do dash dash preview because 3.14 isn't there yet. But if you use the preview, it works. And 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, and then pick up Python. Yeah. Python. 3.14 or whatever. Yeah. It just works because now it's on my machine too. So there's a preview mode to grab that. Which

Which is really nice. I like it. That's excellent. Yeah, they're doing really good work over there. And you're right that Ruff started it all. So that's really cool to see. And one of the things I've noticed that I'm... I wasn't really up for a lot of the big packagers to create my PyProject homo for me and to start a project. But UVInit, it rocks. Okay. It does just enough. Like if you pop into a new...

a new project and just say UV and like, if you start coding and you say UV and it, it creates enough boilerplate that's good, but not too much. Like it'll generate a pipe project automa for you. Um, but it's not too big. You can just, you know, add more stuff. That is such a,

a balancing act, right? Like I'm going to create a new project, run this cookie cutter or this other template. Do you want to use Postgres? How about Celery? Do you like caching? What kind of R and like, whoa, whoa, I just, I just don't, I just need to like a by-project tunnel and a few things and what's the right layout relative structure. Let's, let's not overdo it, you know? Yeah. Too much opinion.

And then also UV sync. I'm using a UV sync all the time. So you clone a project and do UV sync and it'll pick up the project HOMO and create a virtual environment and all that. So love that. Well, I really appreciate you

your perfect segue because this next topic of mine is called UV-Secure. Nice. Pretty awesome. This was the one created by Owen Lamont and he just released, he's been working on it for a little while and people might be familiar with PipAudit. So PipAudit will go and look at what is installed in your virtual environment. So I've got a virtual environment, I've

installed some packages through whatever pip install dash e or through just pip install or dash requirements, however you get it, right? You've got all those requirements installed. And what if there's some kind of malware or some other horrible thing that you mistyped, like jeng, jengagu, or I don't know, whatever, like you somehow you miss a letter and you get something terrible.

Or something was just taken over. It was fine. And then it wasn't fine. This will go, pip audit will go back and talk to, can't remember exactly what it's going back to, but there's an API that checks for vulnerabilities.

in different packages. And basically if a vulnerability is found, it's listed there. You'll know, right? Cool. Cool. So that's great. But that requires you to have all those things installed and it doesn't work. It doesn't like look at things like the UV lock file. So UV secure allows you to ask, Hey, what is the status and vulnerability story of

of my project before I install them, right? It's good to know, hey, you've installed a virus that is now running loose in your computer. You'll want to try to work on that, get it out. It's better to know before you install it, right? And so when Owen submitted this to us, I'm like, this is awesome, 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. So he said, no problem. I'll update it to also do requirements files. And then I ran that just go in to the working folder for Python bytes and

and say uv-secure. So first of all, you can install it with uv as a tool or with pipx or however you want. And then you say uv-secure, and it'll say, I'm looking at this requirements file or I'm looking at this lock file or whatever it is. And it'll take a minute because it's, you know, the Python bytes project has 86 packages it uses. So it calls that API 86 times and gets a response. There's a bit of a delay there. Sure, you could parallelize that, but maybe harm the API. I don't know how much it can take in parallel. But anyway, it says...

if there's a problem or whether everything looks safe and hey, everything looks good. Got to love that. Nice. Yeah. So nice work on that, Owen. And people can check out UV secure. Cool. Yeah. And yeah, there it is. I'm being checked to see if I'm secure, trying to pull it up. But yeah, scan your UV lock file for dependencies with non-filled vulnerabilities. And now also works with requirements.txt files that were generated by UV. I imagine with others as well, pinned ones at least, you know? Yeah.

Yeah. I mean, people might write their own now. Who knows? Whatever. Yeah, they might. They might. All right. That's it for our main items, isn't it? It is. Yeah. You got any extras? Just, I guess, a little bit over the break. I did play around with PyTest more and I

testing code again. So, um, we'd talked about doing seasons. So I thought, yeah, what the heck I'll do. I'll, I'll shift over. And so after nine and a half years and 223 episodes, uh, season two is starting. Um, so I'm going to do pie test plugins. So please, um, anybody, uh, so there's an episode up just introducing the, introducing the season. There there'll be probably short, short or long depending on what we want to talk about for different plugins. Um,

Some of them are going to combine plugins, like all the orderings together or something or whatever, or individual ones. So if you'd like to submit your favorite plugin or something you'd like me to take a look at, go ahead. And how would you do that? You would either go to Blue Sky or Mastodon, or I recently added a contact form on pythontest.com. Oh, hey.

I have to add my blue sky to that contact form also. - Ooh, come on now. Don't forget it. - Anyway, so that's my extra. - Excellent. And real-time follow up. You have Henny out there points out that Snyk maybe is possible, does something similar. Yeah, that's for sure. I wonder if it's using the Snyk API for that UV secure. Not sure anyway, but MPBot it. But yeah, that's another thing to consider. Okay, I have a few extras. This is the trifecta part.

And I'm just going to link to it. I'm not going to play it. We've already all had plenty of heavy metal, but Owen was inspired by the funny song that we did with remember the curl heavy metal, like super heavy metal. That was awesome. TLS connect. So he did one for HTTP status codes and it goes through all the different HTTP status codes. So I'll link to that. You can play it. You make sure you turn on the audio because it's off by default because it's pretty good. It's pretty good. I'm I,

I do enjoy it. Gosh, I wonder if it has I'm a teapot in there. I didn't listen that hard before 18, 19, whatever it is. That's a pretty good one. Okay. So people can check that out. That's pretty fun following on that. Who knows? Maybe I might do some more fun stuff with songs later as well with some of these episodes. I think we can do it, but we're not doing this episode. We've got to play around. So another thing to announce is PyCon Austria is coming. When is it coming in? April 6th and 7th. And

And it's opening party on the 5th. I mean, who wouldn't want to go to a party in Austria? Have some good beer. Yeah. It'd be great. Yeah. So I met some of the folks behind this at PyCon Slovakia 2018 when I was there giving a talk. And they're putting this on. I think it is free. Yeah. Attendance is free, but space is limited. So you still got to sign up. So if you're near Austria, in Austria, or can take a...

train over to austria and like to do that you know check it out i would absolutely go if i could but it intersects with some family stuff that i can't get out of so i'm not going this year unfortunately because of the dates but it still would be fun and people can check it out right yeah yeah very cool all right another one leonard richardson uh the guy who created beautiful soup um

This was sent in to me. I want to give a little bit of credit here as well. This one was sent in by Sue Mana and she said, hey, check it out. New updates for Beautiful Soup. Apparently this is a pretty big change. 4.13 Beta 3 was just updated.

uploaded to PyPI and hoping to get another round of feedback, says Leonard, before the final release because apparently there's some kind of changes and stuff and you can check out Google Groups link to talk about the changes that he's proposing and trying out and so on.

That's pretty awesome. I think I've been using Beautiful Soup since I started using Python. Yeah, I agree. If you scroll through the comments here, Eric Holscher says, I just want to say thanks. Beautiful Soup has been a constant utility basically as long as I've been doing Python. So I thought that was a pretty, you're on the same vibe there. Pretty awesome. Yeah, cool. So Beautiful Soup.

certainly rocks and I've used it a ton as well. Okay. I have one more extra, Brian, but I want to close out the show with something special and unexpected for people. Okay. Okay.

Okay. So in order to do that at the end, I think let's do the joke first. I'm all for jokes. Yeah. So you know what it's like to go to Stack Overflow, right? It's not, it's super helpful, but it can be a little prickly, let's say. Yeah. Yeah. You'll submit a question like, well, that question was answered seven, asked and answered seven years ago over there. Yeah.

Like, well, yes, but it doesn't work that way anymore. Or, you know, you just, you shouldn't, why are you even asking this? You shouldn't do this, right? So this comes back to a very common sort of question, you know, optimist versus pessimist. But we have a third category, a stack overflowist, okay? So here's a glass. It's exactly 50% full of water. I mean, you can debate it's full of...

It's a hundred percent full, but whatever. Like that's, that's not the debate. That's the chemistry joke. This one is the optimist pessimist versus stack overflowist. The first one is the optimist says the glass is half full. The pessimist says the glass is half empty. The stack overflowist says the glass is a stupid question. And so I've in the show notes, I entitled the joke. That's a stupid cup, stupid glass. I like it. Pretty good. Right? Yeah.

And then, like, of course, the nerd in me is looking at this going, well, visually, it's halfway up. But since the cup is wider at the top, it's got more air than it does water. I would say pessimist wins. This comes in second. Optimist. No, no, no.

That's a stupid cup. Okay. That's a stupid cup. All right. You ready for the last thing? This is pretty awesome. This is pretty wild. We live in incredible times. So I've started doing this thing over at TalkPython. This is only tangentially the actual topic. It is, but it isn't.

I was already doing this thing called episode deep dive. So I wrote up on the TalkPython blog, introducing episode deep dives at TalkPython. And so if you go to any... I'm embarrassed to say it took me a while to understand the snorkel reference, but... Deep dive, yeah, well, you got to pick something from your awesome icons. And I'd already used up some other stuff. So it's a snorkel is the icon to click the button. I like it.

So now for every episode that I publish, I'm putting together what's called a deep dive. And actually, it's ironic that the older ones are better because the more of them I've done, the better I've got at figuring them out. Yeah, it's so weird. So here, let's see space science. Does this have a deep dive? It does. Okay. So space science, this one is, I interviewed Thomas Albon, Albin, Albin.

about his YouTube channel and his work. I think it was a European space, yeah, a European space agency and so on. But instead of just having the show notes, now it has this thing called the deep dive, which comes into their background. It says, hey, if you're new to Python, these are the types of things you want to

like research a little bit to understand this topic really well. Like this one's about visualization. So it talks about matplotlib and pandas and spicy pie and vis-vis. And then it goes into all the, like the takeaways and links and documents and tools and excellent stuff to just make it way more useful. Right. Okay. That's nice. Yeah. Thanks. We might start doing that here. I'm trying to decide because we're shown us are pretty close to this, but they're not exactly, we can play with it, but you know, we've looked at a little, right. Is

It's a ton of work though. I don't 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. So there you go. But many of the new ones are done, which is awesome. So here's the thing that here's the thing I'm going to close out the show with that I think is crazy.

crazy and I think people will enjoy. This is kind of a separate topic, but that was a lead in because you'll see in a second why. Notebook LM. Have you played with Notebook LM? No. So Notebook LM originally came out, it's from Google, and it came out as a way to help people understand documents like researchers, professors, and so on. So what you do is you give Notebook LM a PDF or a couple of PDFs

And then you can ask it questions like, what do the researchers think about this? And it's based on all of their thing. But the most insane thing, and this is what we're going to close out the show with, is you can push a button. Literally, you don't have to give it prompts or anything. You just push a button and say, create a talk show-like, similar to what we're doing here, talk show-like podcast episode podcast.

of this paper. It is so insane. So if I was researching, I don't know if I was researching something between FastAPI and Django and somebody written up a really detailed report, I could upload that and I could just say, hey, I want to have a couple of people talk to me about the trade-offs and it brings in other world knowledge, right? It's not just the words in there. Like it's kind of like ChatGPT in that it knows everything. And then it also just talks about this and it is in

Sane. So going back to what the heck with these deep dives, if you scroll down a little bit, there's a listen to a conversation about our deep dives. So those of you watching just the live stream, I'm not going to play this here because it's 13 minutes and 54 seconds, but you can go to this link here and just click the play button if you want to hear it. Okay. Okay.

For everyone else, Brian, I'm going to put it as the closeout to the show. So there's nothing else, but I'm going to play this because it is an insane view into what is possible. So what I did is I took this deep dive conversation blog post, the deep dive blog post, gave it to Notebook LM and I said, I want to hear people talk about it. So I'm going to drop that in and people can hear about it now. I think your mind's going to be blown, but if you don't want to listen to it, you can just, you know, this is the end of the show. That's funny because you sent this to me and I started listening and I totally thought you just like,

Like somebody else was doing a podcast about your deep dives. It's cool.

crazy if you haven't heard it and it has interruptions like oh yeah uh-huh or you know and it's it's got that kind of artificial back and forth but it's done in a really nice way it's it is it's not just speech to text it is something entirely unworldly it is weird and i thought it'd be fun to close out the show just just to give people a weird glimpse into this world and it'll talk about the deep dives if you care cool all right well with that later everyone later

You ever listen to a podcast and it's packed with like all this insightful info?

But then like a week later, you're like, wait, what was that again? It's like trying to, I don't know, grasp smoke or something. Yeah, exactly. Try to remember those key takeaways. You're not alone if you're like that. Not at all. A lot of us struggle with that kind of thing. Making podcast knowledge stick. So that's what we're going to deep dive into today. We're looking at what TalkPython is calling episode deep dives. Okay. This could be the solution for that podcast information overload.

I'm intrigued by how TalkPython is, you know, going beyond just the audio. They're realizing that people consume information in different ways. Right. And so they're providing tools to deal with that. It's not about ditching the podcast. It's about having something to go along with it. Like, imagine you're panning for gold, right? You're swirling the pan around and you see those little flecks of gold. Yeah. A deep dive is like having a tool that magically extracts those golden nuggets. So.

Saves you a ton of time and effort. I like that analogy. It definitely captures that essence of efficiency. But how are these deep dives? Like, are they really that much different from just detailed show notes? Oh, that's a good question. Think of it like this. Typical show notes give you, like, the bullet points. Right. The bare minimum. Yeah. Deep dives are like, it's like getting the director's cut of the episode. Oh. With all the behind-the-scenes insights. I was just staying up. Deleted scenes. Yeah. Bonus features. So you get guest backgrounds. Key quotes. Yeah.

code examples, links to resources, all that stuff. It's just a much richer experience. So all that richness, that must lead to a lot of practical benefits. I mean, let's be honest, re-listening to a whole episode to find one specific thing, that can be a real time suck. Yeah, for sure. The deep dive, you can just quickly skim and locate what you need. Oh, it's such a time saver. Yeah. Doesn't this risk kind of discouraging people from actively listening?

During the podcast itself. Yeah. Because they're like, oh, I don't really need to pay attention. Yeah. There's going to be a summary waiting for me later. That's a good point. That's a valid concern. But think of it like...

Taking notes during a lecture. Taking notes doesn't replace listening, right? It just enhances it. Right. It forces you to engage more actively. Makes sense. Knowing you're creating that reference for later. Yeah. Deep dives can serve a similar function. They can prompt more focused listening. Okay. Yeah, I see that. It's about being more intentional.

with how you absorb the information. So we've established that deep dives go beyond typical show notes and they can actually improve how we engage with a podcast. But what about people who, you know, maybe they're visual learners or they just prefer reading? Can these deep dives cater to different learning styles? Oh, absolutely. Podcasts are fantastic for auditory learners. Right. But not everybody learns the same way. Some people just, you know, they prefer reading. Some people have a hard time focusing solely on audio. Yeah, that's true. Deep dives give

give you that alternative pathway. It makes it accessible to more people. I like that. Yeah. So how are these deep dives structured? Is it just like a wall of text summarizing the whole thing? Oh, no, no, no, not at all. They're really well designed, very scannable, digestible. Each one starts with what they call a guest spotlight section. It's like a mini biography of the guest.

gives you insight into their background, their expertise. Yeah. That adds context to their perspective. So you're not just hearing opinions, you're understanding where they're coming from. I like that. It's like getting to peek behind the curtain a little bit. Yeah. So we've got the guest spotlight setting the stage. What comes after that?

So then the content is broken up. It follows the flow of the conversation. They've got clear headings and subheadings, you know, guiding you through the topics. And of course, it's got all the links to libraries, code examples, resources, all that. So it's really structured in a way that respects your time, lets you prioritize the information that matters most to you. I'm still a little skeptical, though. Can we look at a specific example to see how it all plays out? Absolutely. Yeah.

Let's look at the deep dive for the episode, Secure Coding for Python with SheHacksPurple. Okay. Sounds intriguing. This episode was all about threat modeling for Python developers, right? Exactly. And even if you haven't listened to the whole episode, the deep dive gives you a ton of insight. It starts with a background on Tonya Janka.

She's the guest, also known as SheHacksPurple. It highlights her journey, you know, from software developer to penetration tester, and then how she eventually landed in application security. So you get a sense of her expertise and how her experience informs her view on secure coding. But why SheHacksPurple? The deep dive explains that, too. It comes from her role blending occupations.

offensive and defensive security, which is often called like purple teaming. Ah, okay. Makes sense. So now we're starting to understand who we're dealing with, but let's go beyond the introduction. What were some of the key takeaways from the actual secure coding discussion? Well, one central concept was threat modeling, which they described as like a structured brainstorming session where the developers, a security person, and a product owner all come together.

to, as Tanya put it, brainstorm evil. They ask four key questions based on the work of Adam Shostak, who's, you know, kind of a big name in security. Hold on. Four questions to brainstorm evil. I like that. What are they? Well, the first one is, what are we building? That involves sketching out an architectural diagram to understand the components of the system. And then it's what can go wrong. Oh, okay. And that's where they put on their black hats.

and brainstorm potential risks and vulnerabilities. Okay, so far so good. What about the next two? The third question is, what are we going to do about it? Makes sense. And that's where they shift gears.

and start discussing mitigation strategies. And then the final question is, did we do a good job? Okay. That involves validating the process, making sure those mitigations are actually effective. So it's a comprehensive process that goes beyond just identifying threats. It's about proactively addressing them. Are we getting a little too deep into the weeds here, though? Yeah, you're right. We are getting a little ahead of ourselves. The point is,

The deep dive breaks this concept down in a really clear and concise way, even if you're not familiar with threat modeling at all. And it does this for all the key topics from the episode. Okay, I see the value there. It's like having a condensed version of the conversation. Yeah. Highlighting the most important points. But let's pull back for a second. 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.

But what about availability? Are these deep dives available for every single TalkPython episode? That's where it gets interesting. They are available for all TalkPython episodes from number 440 onwards, which is November 30th, 2023. Oh, okay. So fairly recent episodes are covered. Yeah. What about the older ones? Are they just out of luck? No, no, no, not at all. Michael Kennedy and the TalkPython team.

are actually working on updating older episodes with deep dives. That's great. It's a big job, but they're steadily making progress. What if there's a specific older episode that I really want to deep dive for?

Can I do anything about that? You absolutely can. Michael is really receptive to feedback. So if there's an episode you really want, you can reach out to him directly through his website, hemkennedy.codes. So it's kind of a community effort then. Listeners can help decide which episodes get the deep dive treatment sooner. I like that. But some people might argue that, you know, just reading a summary isn't really enough, especially for these, you know, complex technical topics. What are your thoughts on that? I

I mean, that's fair. Deep dives aren't meant to replace listening to the episode. They're designed to work together. Think of it like this. You watch a fascinating documentary. You're captivated. You love it. But later on, some of the details get a little fuzzy. Yeah, that happened. Would you rather struggle to remember or have a nice, concise recap? Oh, a recap is nice. Yeah, to refresh your memory.

Deep dives provide that extra layer. They help solidify that knowledge. Yeah, it's like having a study guide for your favorite podcasts. You get the big picture from listening, and then the deep dive helps you focus on the important details. Let's zoom out for a second. Away from TalkPython, what do you think this trend towards more structured and interactive podcast content is?

What do you think it says about how we're consuming information these days? It's really fascinating, isn't it? We're moving beyond passive consumption. For sure. People are demanding more. They want to engage with the content. Right. Dissect it, make it their own. Podcasts are evolving from just entertainment to really powerful learning platforms. I like that. The lines are blurring between education and entertainment, which I think is really exciting.

But are we risking losing something in this shift? You know, by focusing on efficiency and structure, could it make podcasts feel less efficient?

Less human. Oh, that is a really thoughtful question. We definitely need to retain that human element, that personal connection. That's what draws people to podcasts in the first place. The host's voice, you know, the curiosity in their questions, those unscripted moments. All of that is essential. It's that personal touch that makes you feel like you're part of a conversation, not just listening to a lecture. Can these structured summaries, like deep dives, can they coexist with that human element?

I think they can. And they might even enhance it. Oh, interesting. By providing the tools to understand and retain the information, it deepens their connection to the content and to the creators. So instead of replacing the human element, it's more about creating a richer experience. Exactly. That caters to different learning styles. It's about empowering the listeners.

To engage on their own terms. I like that. In a way that resonates with them. And that, in turn, creates a more vibrant and engaged community around the podcast. Okay, I'm seeing deep dives in a whole new light.

It's not just about summarizing. It's about fostering deeper engagement, making information more accessible, and ultimately empowering listeners to get more out of their podcast experience. It's recognizing that learning is a journey. And podcasts are an incredible vehicle for that journey. But like any journey, having the right tools and resources makes all the difference. So if these deep dives are the tools...

What kind of impact can they have on the journey itself? What does this mean for the future of podcasts as a learning medium? It feels like we're on the cusp of something big. Yeah, podcasts have definitely transformed how we listen to things. For sure. But now it's like we're moving beyond just listening to actually learning from podcasts. Yeah. Like podcasts.

Podcasts in the future where they all come with these detailed summaries and maybe interactive exercises, even community forums. Whoa. Built right in. That would be pretty cool. It would really make knowledge accessible to like everybody. Exactly. It's like no longer would these valuable insights be trapped in an audio stream lost forever. As soon as the episode ends, they'd be like readily available, searchable. You could share them easily. And it would really help people learn too. Oh yeah, for sure. What about the impact on like the creators themselves?

The podcasters themselves. Oh, that's a great point. This kind of engagement, you know, it could really strengthen the bond between podcasters and their audience. It's like building a community. Yeah. Instead of just having a bunch of listeners. Exactly. It could take podcasting to a whole new level. This is really eye-opening. Yeah. What started as a deep dive into episode deep dives has turned into this like

Exploration of the future of podcasts. Yeah. And I'm excited about it. Me too. It's clear that podcasting is still young. It's got so much potential. And innovations like deep dives are just the beginning. So if you're listening to this. Yeah. And you want to see how deep dives work.

I really encourage you to check out TalkPython.fm and explore for yourself. Yeah. You might be surprised at how much more you get out of your podcasts. It could even inspire you to think about how you learn and connect with information in new ways. It's all about embracing this evolution. Absolutely. How we learn, how we connect with information. Because knowledge is most powerful when we share it, when we explore it, and when we put it into action. So on that note.

We'll wrap up this deep dive. Hopefully this has given you some new ideas and inspired you to look at the world of podcasts with a fresh perspective. Happy listening. I think we are, yeah. Podcasts have come a long way. They really have. But now it's like we're talking about not just passive listening anymore. It's active learning. Right, right. It's exciting. And think about the impact this could have on, you know,

On creators, on podcasters. Oh, yeah, for sure. This deeper level of engagement, I think it could lead to a much stronger connection between the people making the podcasts and the people listening. Yeah, it's like you're building a community, not just broadcasting to an audience. Exactly, yeah. It's turning podcasting into this collaborative learning experience. I love that.

This has been really eye opening. I mean, we started by diving into episode deep dives. Yeah. But it's turned into this whole exploration of the future of podcasts. It has. And I'm feeling pretty optimistic about it. Me too. It's clear that podcasting is still in its early stages. And there's so much potential. And I think things like deep dives are just paving the way. They're leading the charge.

So to all our listeners out there, if you want to see how deep dives work and practice, head over to TalkPython.fm. Yeah. Explore a little bit. You might be surprised at how much more you can get out of your podcast listening. 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. Yeah, for sure. It's all about embracing this evolution. Yeah. How we learn, how we connect with information. Exactly. And on that note, we'll wrap up this deep dive. We hope you enjoyed it. We hope it gave you some new ideas and inspired you to explore the world of podcasts with a fresh perspective. Absolutely. Happy listening, everyone.