WEBVTT

00:00:00.020 --> 00:00:04.800
<v Michael Kennedy>Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.380 --> 00:00:11.680
<v Michael Kennedy>This is episode 458, recorded November 17th, 2025.

00:00:12.120 --> 00:00:12.620
<v Michael Kennedy>I'm Michael Kennedy.

00:00:13.040 --> 00:00:13.780
<v Michael Kennedy>And I'm Brian Okken.

00:00:14.140 --> 00:00:16.020
<v Michael Kennedy>And this episode is brought to you by us.

00:00:16.480 --> 00:00:17.300
<v Michael Kennedy>All the things that we're doing.

00:00:17.320 --> 00:00:20.000
<v Michael Kennedy>We have many fun and useful things to offer you.

00:00:20.560 --> 00:00:24.040
<v Michael Kennedy>pytest books, pytest courses, Python training courses,

00:00:24.540 --> 00:00:28.320
<v Michael Kennedy>the agentic AI programming course about how you take agentic AI

00:00:28.320 --> 00:00:32.020
<v Michael Kennedy>and turn it from like weird wizardry smushiness into engineering.

00:00:32.279 --> 00:00:33.500
<v Michael Kennedy>It's going incredibly well.

00:00:34.120 --> 00:00:35.320
<v Michael Kennedy>So check that course out.

00:00:35.720 --> 00:00:36.860
<v Michael Kennedy>Follow us on the socials.

00:00:37.180 --> 00:00:41.240
<v Michael Kennedy>Put them by set up slash live if you want to see this live

00:00:41.360 --> 00:00:43.180
<v Michael Kennedy>or streaming live or see the old shows.

00:00:43.700 --> 00:00:45.620
<v Michael Kennedy>And be sure to sign up to our newsletter.

00:00:45.840 --> 00:00:48.220
<v Michael Kennedy>We have tons of people really getting a lot of value with that.

00:00:48.440 --> 00:00:49.340
<v Michael Kennedy>Brian's putting that out.

00:00:49.959 --> 00:00:51.880
<v Michael Kennedy>And yeah, it's truly nice.

00:00:52.060 --> 00:00:53.600
<v Michael Kennedy>It's not just the links of the show notes,

00:00:53.820 --> 00:00:57.280
<v Michael Kennedy>but it's extra deep information, background information,

00:00:57.340 --> 00:00:57.960
<v Michael Kennedy>that kind of stuff.

00:00:58.180 --> 00:00:59.520
<v Michael Kennedy>And the joke, always the joke, Brian.

00:00:59.820 --> 00:01:00.720
<v Brian Okken>Always the joke.

00:01:00.920 --> 00:01:05.760
<v Brian Okken>And we put a link to the joke, if we can find a link to the joke, in the newsletter as well.

00:01:06.060 --> 00:01:06.220
<v Michael Kennedy>Exactly.

00:01:07.000 --> 00:01:12.360
<v Michael Kennedy>Sometimes the joke has a link, and sometimes it's just like a dad programming joke, and it just has words.

00:01:13.280 --> 00:01:14.280
<v Michael Kennedy>What do you want to talk about first?

00:01:14.940 --> 00:01:16.520
<v Brian Okken>I actually want to talk about Django.

00:01:17.960 --> 00:01:18.600
<v Brian Okken>Oh, really? Okay.

00:01:19.460 --> 00:01:22.920
<v Brian Okken>And actually, kind of lightweight, I want to talk about the Django website.

00:01:23.980 --> 00:01:29.140
<v Brian Okken>I guess I heard about this, but there was a discussion about maybe redesigning the Django

00:01:29.280 --> 00:01:29.420
<v Brian Okken>website.

00:01:29.560 --> 00:01:31.400
<v Brian Okken>It's been the same for a while.

00:01:32.280 --> 00:01:32.900
<v Brian Okken>And it works.

00:01:33.680 --> 00:01:34.060
<v Brian Okken>It's good.

00:01:34.280 --> 00:01:43.840
<v Brian Okken>But I noticed Adam Hill put out a mock-up for what the Django website might look like.

00:01:43.900 --> 00:01:46.320
<v Brian Okken>So here's his new one.

00:01:46.500 --> 00:01:47.920
<v Brian Okken>And I'm kind of liking it.

00:01:47.920 --> 00:01:51.280
<v Brian Okken>I like the animated thing at the top.

00:01:51.540 --> 00:01:52.580
<v Brian Okken>It's the task framework.

00:01:52.920 --> 00:01:53.680
<v Brian Okken>It's the web framework.

00:01:55.280 --> 00:01:58.360
<v Michael Kennedy>Did Django just jump like 20 years into the future?

00:01:59.160 --> 00:01:59.640
<v Michael Kennedy>Yeah, it looks...

00:01:59.680 --> 00:02:01.720
<v Michael Kennedy>From where it was to the current day, it was.

00:02:01.900 --> 00:02:03.120
<v Michael Kennedy>It looks pretty good.

00:02:03.300 --> 00:02:05.380
<v Brian Okken>It's got like search documentation at the top

00:02:05.560 --> 00:02:06.600
<v Brian Okken>that's really easy to find.

00:02:06.780 --> 00:02:08.520
<v Brian Okken>I mean, I guess there was...

00:02:08.520 --> 00:02:09.340
<v Brian Okken>Yeah, there's no...

00:02:09.340 --> 00:02:10.940
<v Brian Okken>I don't know where you have to...

00:02:10.940 --> 00:02:13.300
<v Brian Okken>The search documentation isn't at the top here.

00:02:13.300 --> 00:02:14.160
<v Brian Okken>I like the search there.

00:02:15.720 --> 00:02:16.640
<v Brian Okken>I'm liking it.

00:02:16.740 --> 00:02:19.440
<v Brian Okken>I like just the life of it.

00:02:20.440 --> 00:02:21.240
<v Brian Okken>Feels good.

00:02:21.600 --> 00:02:23.060
<v Brian Okken>I think that maybe we should go with it.

00:02:23.160 --> 00:02:29.660
<v Brian Okken>but you know it's just my vote but that you can you can join the discussion too if you'd like to

00:02:29.760 --> 00:02:37.080
<v Brian Okken>help out and and there is some assistance that that adam hill is okay with so there's and

00:02:37.140 --> 00:02:42.880
<v Brian Okken>it's not just him if you i'm putting a link to a discussion uh where he announced what his little

00:02:43.140 --> 00:02:50.779
<v Brian Okken>his demo um he said i'd love help with in the form of prs to the repo explicitly not looking for

00:02:50.800 --> 00:02:56.880
<v Brian Okken>drive-by critical feedback without PRs. It's fine. I guess here's my drive-by feedback. I like it.

00:02:57.200 --> 00:03:03.100
<v Brian Okken>I know that's not really, but I do like it. And, but you can read, it looks like he kind of picked

00:03:03.220 --> 00:03:09.600
<v Brian Okken>this up off of other, there was other work. Just a reminder that this doc informed my approach. So

00:03:09.660 --> 00:03:16.420
<v Brian Okken>there's another document about things. I didn't look at it actually, but the discussion's been

00:03:16.340 --> 00:03:21.480
<v Brian Okken>going on for a while, if I scroll to the top, there's been a discussion on, let me do this,

00:03:22.280 --> 00:03:28.140
<v Brian Okken>up to September 21st. Oh, it looks like he started it, that maybe we ought to redesign the website.

00:03:28.540 --> 00:03:35.780
<v Brian Okken>It's not too long, man, September 21st to now. But I think that it'd be cool to give. Why not?

00:03:35.980 --> 00:03:36.820
<v Brian Okken>Let's go for it.

00:03:36.820 --> 00:03:42.920
<v Michael Kennedy>You know what? I think, look, Django's a web framework. It should not look like it's, you know,

00:03:42.960 --> 00:03:47.700
<v Michael Kennedy>15 years old and outdated and rusty. I mean, it's a project that's getting tons of love and

00:03:47.900 --> 00:03:53.100
<v Michael Kennedy>attention. And I think it's a really good idea to make it feel like it belongs at the cutting edge

00:03:53.120 --> 00:04:01.240
<v Michael Kennedy>of web development these days. And, you know, just that website is aged. Yeah, it's like a long time,

00:04:01.520 --> 00:04:07.980
<v Brian Okken>right? Yeah, it is a long time. But also, even if the it should be a the to make it feel alive,

00:04:08.080 --> 00:04:10.140
<v Brian Okken>also the website could be in progress.

00:04:10.260 --> 00:04:11.560
<v Brian Okken>It could change also.

00:04:11.840 --> 00:04:14.180
<v Brian Okken>Not that, I mean, even if this one doesn't,

00:04:14.400 --> 00:04:15.360
<v Brian Okken>I mean, maybe this is great

00:04:15.380 --> 00:04:16.220
<v Brian Okken>and this will be great for,

00:04:16.420 --> 00:04:17.859
<v Brian Okken>the new one will be great for a long time.

00:04:18.320 --> 00:04:20.519
<v Brian Okken>But I think that we should be tweaking it

00:04:20.820 --> 00:04:21.600
<v Brian Okken>on a regular basis

00:04:21.940 --> 00:04:23.880
<v Brian Okken>just to make sure people understand

00:04:24.120 --> 00:04:25.440
<v Brian Okken>that it's still moving.

00:04:25.780 --> 00:04:26.480
<v Brian Okken>Yeah, absolutely.

00:04:26.780 --> 00:04:28.060
<v Michael Kennedy>And hat tip to Adam Hill.

00:04:28.160 --> 00:04:29.580
<v Michael Kennedy>That is a very nice looking website.

00:04:30.000 --> 00:04:31.680
<v Brian Okken>Yeah, I think it's neat.

00:04:31.920 --> 00:04:32.720
<v Brian Okken>Plus, I love that.

00:04:33.260 --> 00:04:34.320
<v Brian Okken>I got to say,

00:04:34.360 --> 00:04:35.780
<v Brian Okken>I love the documentation at the top,

00:04:35.960 --> 00:04:36.520
<v Brian Okken>the search docs,

00:04:36.840 --> 00:04:38.640
<v Brian Okken>because I often just go there,

00:04:38.730 --> 00:04:40.520
<v Brian Okken>because I'm used to going to a project homepage

00:04:40.750 --> 00:04:41.680
<v Brian Okken>to search the docs.

00:04:41.890 --> 00:04:42.500
<v Brian Okken>So, yeah.

00:04:42.760 --> 00:04:42.860
<v Brian Okken>Yeah.

00:04:44.280 --> 00:04:45.580
<v Michael Kennedy>All right, what you got?

00:04:46.820 --> 00:04:51.620
<v Michael Kennedy>I want to dive into some concurrent database stuff.

00:04:52.210 --> 00:04:55.620
<v Michael Kennedy>So I want to talk about aiosqlitepool.

00:04:55.890 --> 00:04:57.120
<v Michael Kennedy>So there's three concepts here.

00:04:57.840 --> 00:04:59.500
<v Michael Kennedy>Async IO, SQLite,

00:04:59.860 --> 00:05:02.640
<v Michael Kennedy>and then a connection pool type of thing.

00:05:02.860 --> 00:05:04.899
<v Michael Kennedy>So normally you just work with SQLite

00:05:04.920 --> 00:05:10.380
<v Michael Kennedy>And it just says, hey, let's go open up all the infrastructure to talk to the SQLite database and do your work.

00:05:10.380 --> 00:05:11.300
<v Michael Kennedy>And then it closes it.

00:05:11.400 --> 00:05:11.980
<v Michael Kennedy>Then it opens it.

00:05:12.060 --> 00:05:12.820
<v Michael Kennedy>Then it closes it.

00:05:12.840 --> 00:05:13.480
<v Michael Kennedy>Then it opens it.

00:05:13.620 --> 00:05:16.600
<v Michael Kennedy>And that's not necessarily the fastest way to do that.

00:05:16.760 --> 00:05:18.060
<v Michael Kennedy>Maybe you could just leave it open.

00:05:18.720 --> 00:05:23.940
<v Michael Kennedy>But you don't want to leak these connections or have a whole insane ton of them open.

00:05:24.100 --> 00:05:26.360
<v Michael Kennedy>So instead, the idea is to use this connection pool.

00:05:26.620 --> 00:05:30.020
<v Michael Kennedy>So you say, instead of giving me a connection, you say, give me a connection from the pool.

00:05:30.600 --> 00:05:30.700
<v Michael Kennedy>Right.

00:05:30.920 --> 00:05:35.560
<v Michael Kennedy>And it'll keep a certain number of them open and hand them over to you when it needs or wait.

00:05:35.620 --> 00:05:41.440
<v Michael Kennedy>If there's already 10 connections running queries, you probably can just better off to wait and try to hit it with another.

00:05:42.300 --> 00:05:44.080
<v Michael Kennedy>So that's what this is.

00:05:44.600 --> 00:05:46.380
<v Michael Kennedy>And it's not a replacement.

00:05:46.680 --> 00:05:49.060
<v Michael Kennedy>Maybe people have heard of AIO SQLite.

00:05:49.460 --> 00:05:54.680
<v Michael Kennedy>AIO SQLite is a way to talk async and await, but to SQLite.

00:05:54.680 --> 00:06:00.180
<v Michael Kennedy>And all this is a little bit funky and interesting because SQLite is a file that runs in process.

00:06:00.480 --> 00:06:03.720
<v Michael Kennedy>It's stored as a file and it's a thing that runs in your Python process.

00:06:04.340 --> 00:06:06.940
<v Michael Kennedy>So you're not going out to the network and waiting and that kind of thing.

00:06:07.700 --> 00:06:11.720
<v Michael Kennedy>But this AIO SQLite gives you an async programming model.

00:06:12.080 --> 00:06:14.680
<v Michael Kennedy>But the way it works is you create a connection, do a query,

00:06:14.880 --> 00:06:17.680
<v Michael Kennedy>and then when you do async with, when that with block,

00:06:17.760 --> 00:06:20.220
<v Michael Kennedy>that context manager closes, the connection's gone.

00:06:20.600 --> 00:06:22.400
<v Michael Kennedy>So over and over, it's kind of up and down.

00:06:22.920 --> 00:06:29.899
<v Michael Kennedy>And so the idea is this aiosqlitepool wraps this SQLite library

00:06:30.260 --> 00:06:32.620
<v Michael Kennedy>for basically three core problems.

00:06:32.760 --> 00:06:34.420
<v Michael Kennedy>One, it tries to eliminate connection overhead

00:06:34.740 --> 00:06:37.700
<v Michael Kennedy>by avoiding repeatedly opening and closing

00:06:38.480 --> 00:06:40.580
<v Michael Kennedy>syscalls, mem allocation, teardowns,

00:06:40.820 --> 00:06:41.640
<v Michael Kennedy>all that kind of stuff, right?

00:06:41.760 --> 00:06:42.260
<v Michael Kennedy>Which I already described.

00:06:43.060 --> 00:06:45.960
<v Michael Kennedy>It also has the advantage of potentially faster queries

00:06:46.160 --> 00:06:47.220
<v Michael Kennedy>via hot cache.

00:06:47.360 --> 00:06:50.020
<v Michael Kennedy>So long-lived connections keep SQLite's

00:06:50.100 --> 00:06:52.040
<v Michael Kennedy>in-memory page cache hot, right?

00:06:52.580 --> 00:06:54.920
<v Michael Kennedy>So once a database has seen a query,

00:06:55.040 --> 00:06:56.300
<v Michael Kennedy>it has to look at the query and say,

00:06:56.380 --> 00:06:58.320
<v Michael Kennedy>okay, we're going to come up with a query plan.

00:06:58.340 --> 00:06:59.300
<v Michael Kennedy>Do we use this index?

00:06:59.560 --> 00:07:00.500
<v Michael Kennedy>Are there any indexes?

00:07:00.540 --> 00:07:01.340
<v Michael Kennedy>How are we going to sort it?

00:07:01.600 --> 00:07:02.380
<v Michael Kennedy>Is it a table scan?

00:07:02.520 --> 00:07:03.560
<v Michael Kennedy>There's all these things, right?

00:07:03.900 --> 00:07:05.540
<v Michael Kennedy>And that has to be determined for a query.

00:07:05.620 --> 00:07:09.300
<v Michael Kennedy>So it could be kept around and reused better, potentially.

00:07:10.320 --> 00:07:11.900
<v Michael Kennedy>And maximize the connection throughput.

00:07:12.260 --> 00:07:16.100
<v Michael Kennedy>So there's a bunch of stuff in here and some examples and so on.

00:07:16.160 --> 00:07:19.820
<v Michael Kennedy>Again, similar programming model with connection with async width,

00:07:19.980 --> 00:07:21.360
<v Michael Kennedy>but you get a connection from the pool.

00:07:21.780 --> 00:07:25.400
<v Michael Kennedy>Somewhere down here, though, there are some stats, I do believe.

00:07:26.100 --> 00:07:27.300
<v Michael Kennedy>Yes, the very, very bottom.

00:07:28.160 --> 00:07:28.600
<v Michael Kennedy>Let's see.

00:07:29.180 --> 00:07:42.240
<v Michael Kennedy>It says just doing 100,000 complex read operations across 20 workers with a reasonable-ish database setup, 5 million comments, 10 million likes, 100,000 posts.

00:07:42.260 --> 00:07:47.620
<v Michael Kennedy>And so like real data, not just like there's three items, query them, which one is, you know, which one's bigger than one.

00:07:47.920 --> 00:07:51.420
<v Michael Kennedy>Anyway, with all that, it says what's your throughput without the pool?

00:07:51.740 --> 00:07:54.080
<v Michael Kennedy>You get 3,000 operations a second with it.

00:07:54.340 --> 00:07:55.340
<v Michael Kennedy>You get 6,000.

00:07:55.380 --> 00:08:00.400
<v Michael Kennedy>basically for all the metrics you care about it's like a 2x improvement almost not quite but almost

00:08:00.700 --> 00:08:07.700
<v Michael Kennedy>so like throughput's almost double the latency's almost half more than half um better than that um

00:08:08.120 --> 00:08:13.140
<v Michael Kennedy>so on right so instead of 60 milliseconds it's 20 milliseconds response time that kind of thing so

00:08:13.600 --> 00:08:20.319
<v Brian Okken>why not you know if this is easy to use so you're gonna like maybe i'm dense but the i can use this

00:08:20.360 --> 00:08:23.360
<v Brian Okken>and I can have multiple async

00:08:23.720 --> 00:08:25.860
<v Brian Okken>or multiple parts of my process

00:08:26.720 --> 00:08:28.460
<v Brian Okken>accessing the same file at the same time?

00:08:28.940 --> 00:08:29.040
<v Michael Kennedy>Yeah.

00:08:29.380 --> 00:08:29.580
<v Brian Okken>Okay.

00:08:30.160 --> 00:08:32.599
<v Michael Kennedy>Yeah, SQLite supports concurrent access.

00:08:33.680 --> 00:08:34.820
<v Michael Kennedy>And especially if you're reading,

00:08:35.120 --> 00:08:37.219
<v Michael Kennedy>there's no problem reading the file in parallel.

00:08:37.640 --> 00:08:37.840
<v Brian Okken>Yeah.

00:08:37.979 --> 00:08:38.099
<v Michael Kennedy>Right?

00:08:38.599 --> 00:08:39.120
<v Michael Kennedy>So, yeah.

00:08:39.360 --> 00:08:41.200
<v Michael Kennedy>Anyway, if you're doing SQLite stuff

00:08:41.840 --> 00:08:42.919
<v Michael Kennedy>and you're doing async stuff,

00:08:43.200 --> 00:08:43.520
<v Michael Kennedy>check this out.

00:08:43.599 --> 00:08:45.760
<v Michael Kennedy>There may also be a SQLite pool that is not async.

00:08:45.860 --> 00:08:46.220
<v Michael Kennedy>I have no idea.

00:08:46.380 --> 00:08:47.060
<v Michael Kennedy>I haven't looked at that.

00:08:47.200 --> 00:08:49.140
<v Michael Kennedy>But once you get to the point where you're like,

00:08:49.300 --> 00:08:51.740
<v Michael Kennedy>I'm worried about concurrent speed access to my database,

00:08:51.960 --> 00:08:54.660
<v Michael Kennedy>you know what, you're probably already in async land anyway.

00:08:54.830 --> 00:08:55.920
<v Michael Kennedy>So here you are.

00:08:56.280 --> 00:08:56.460
<v Michael Kennedy>Yeah.

00:08:57.820 --> 00:08:59.740
<v Brian Okken>So the answer is, yes, you're dense.

00:08:59.960 --> 00:09:01.100
<v Brian Okken>And I'm going to answer you anyway.

00:09:02.020 --> 00:09:02.780
<v Brian Okken>But no, thanks.

00:09:03.400 --> 00:09:03.940
<v Michael Kennedy>Yeah, yeah.

00:09:04.880 --> 00:09:05.600
<v Brian Okken>All right, over to you.

00:09:06.080 --> 00:09:06.440
<v Brian Okken>OK.

00:09:07.280 --> 00:09:08.900
<v Brian Okken>I am going to--

00:09:09.420 --> 00:09:11.400
<v Brian Okken>I'd like to talk about dependencies a little bit.

00:09:11.820 --> 00:09:13.219
<v Brian Okken>Last week-- I think it was last week--

00:09:13.240 --> 00:09:20.300
<v Brian Okken>We talked about pipdeptree and uv pip tree.

00:09:21.640 --> 00:09:22.740
<v Brian Okken>And those are great things.

00:09:24.740 --> 00:09:26.680
<v Brian Okken>This sounds similar, but it's not.

00:09:27.600 --> 00:09:31.280
<v Brian Okken>I'm going to talk about DEPTRY, D-E-P-T-R-Y.

00:09:31.740 --> 00:09:34.120
<v Brian Okken>And I'm pretty sure this was recommended by somebody,

00:09:34.220 --> 00:09:36.120
<v Brian Okken>but I couldn't find the reference.

00:09:36.480 --> 00:09:39.060
<v Brian Okken>So I'm sorry for losing your name,

00:09:39.200 --> 00:09:42.640
<v Brian Okken>but thanks to everybody for suggesting topics.

00:09:43.160 --> 00:09:46.140
<v Brian Okken>So Deptree is D-E-P-T-R-Y.

00:09:46.780 --> 00:09:53.380
<v Brian Okken>And what it does is it's a command line tool to check for issues with dependencies in a Python project,

00:09:53.960 --> 00:09:56.160
<v Brian Okken>such as unused or missing dependencies.

00:09:56.860 --> 00:10:02.220
<v Brian Okken>So the idea is like, so I appreciate the unused part.

00:10:02.690 --> 00:10:05.880
<v Brian Okken>The missing dependencies I'm probably going to catch and test, but hopefully,

00:10:06.310 --> 00:10:08.100
<v Brian Okken>but maybe you don't have thorough tests.

00:10:08.620 --> 00:10:13.520
<v Brian Okken>So if you're importing something and it doesn't show up in your requirements file or your

00:10:13.960 --> 00:10:16.140
<v Brian Okken>Python project.toml, it'll flag that.

00:10:16.540 --> 00:10:17.560
<v Brian Okken>And the reverse is true too.

00:10:17.680 --> 00:10:23.160
<v Brian Okken>So if you have a dependency listed, but maybe you refactored your code and you're not using

00:10:23.680 --> 00:10:27.520
<v Brian Okken>that dependency anymore, it'd be nice to find out that you don't need it.

00:10:28.240 --> 00:10:29.660
<v Brian Okken>So that's pretty much what it does.

00:10:29.920 --> 00:10:31.280
<v Brian Okken>But I really wanted one.

00:10:31.720 --> 00:10:33.400
<v Brian Okken>And it's pretty easy.

00:10:33.700 --> 00:10:37.780
<v Brian Okken>You install it in your project and then you run it.

00:10:37.920 --> 00:10:41.360
<v Brian Okken>and it scans everything and lets you know if,

00:10:41.580 --> 00:10:44.920
<v Brian Okken>hey, you've got, for instance, NumPy is imported,

00:10:45.020 --> 00:10:47.080
<v Brian Okken>but you didn't declare it as a dependency.

00:10:47.880 --> 00:10:51.460
<v Brian Okken>And it does have this idea of development in dependencies

00:10:53.120 --> 00:10:54.320
<v Brian Okken>versus project dependencies,

00:10:54.760 --> 00:10:56.900
<v Brian Okken>and that's the part that tripped me up a little bit.

00:10:57.500 --> 00:10:58.620
<v Brian Okken>That's the switch.

00:10:58.720 --> 00:11:03.840
<v Brian Okken>It's either development dependency or a project dependency.

00:11:04.460 --> 00:11:10.620
<v Brian Okken>And it's unfortunately super easy to get started and really easy to get tripped up by it.

00:11:10.810 --> 00:11:18.840
<v Brian Okken>And I got tripped up because I use optional dependencies for tests often.

00:11:19.150 --> 00:11:22.580
<v Brian Okken>So I'll do something like list test.

00:11:24.030 --> 00:11:26.800
<v Brian Okken>In my project, I'll say project optional dependency.

00:11:27.110 --> 00:11:29.920
<v Brian Okken>For test, I've got pytest and all my pytest plugins.

00:11:31.160 --> 00:11:37.920
<v Brian Okken>And then maybe doc for docs for all of my make docs or something to build the documentation.

00:11:38.360 --> 00:11:38.860
<v Brian Okken>Pretty standard.

00:11:39.300 --> 00:11:51.260
<v Brian Okken>But what Deptree does is it finds these optional dependencies and just includes them in your normal dependencies because it might be your CLI or your GUI, which is interesting.

00:11:52.280 --> 00:11:57.740
<v Brian Okken>I guess I don't get why your GUI or your CLI would be optional, but maybe two choices.

00:11:58.100 --> 00:12:04.900
<v Michael Kennedy>I don't like it either, but I think I've seen it like I want to install this and only have the CLI or I want to install this.

00:12:05.320 --> 00:12:09.240
<v Michael Kennedy>And I do also want to have the GUI and the GUI install might be super heavyweight.

00:12:09.500 --> 00:12:09.900
<v Michael Kennedy>You know what I mean?

00:12:10.020 --> 00:12:15.180
<v Michael Kennedy>It's just a way to say I want less instead of like the union of all possible use cases.

00:12:15.790 --> 00:12:16.180
<v Brian Okken>Actually, I.

00:12:16.590 --> 00:12:17.020
<v Brian Okken>Oh, cool.

00:12:17.120 --> 00:12:17.540
<v Brian Okken>I've got a.

00:12:17.880 --> 00:12:22.020
<v Brian Okken>I wonder if I can work this as a test in test suites because there's times where I want some.

00:12:22.280 --> 00:12:25.820
<v Brian Okken>Anyway, I'm getting off on a tangent, but I think this would be fun to play with with test suites.

00:12:26.960 --> 00:12:34.080
<v Brian Okken>Why I'm going down this rabbit hole is because the most common thing in the usage and configuration,

00:12:34.320 --> 00:12:36.100
<v Brian Okken>it's like buried in here.

00:12:36.260 --> 00:12:40.520
<v Brian Okken>But if I look for a pytest, I'm going to have to look for it a couple of times, I guess.

00:12:40.820 --> 00:12:41.280
<v Brian Okken>Here we go.

00:12:41.720 --> 00:12:48.260
<v Brian Okken>So optional dependencies test of pytest, you have to list it out as you have to add this

00:12:49.120 --> 00:12:55.980
<v Brian Okken>big pip dep tree or tool dot dep tree and then pep621 dev dependency groups.

00:12:56.560 --> 00:12:59.880
<v Brian Okken>this is kind of verbose guys, but that's what you got to do.

00:12:59.960 --> 00:13:03.900
<v Brian Okken>And if you do that, it all works fine because I just like tried this out on a

00:13:03.990 --> 00:13:07.100
<v Brian Okken>simple project and it said, you're in, you've included pytest,

00:13:07.220 --> 00:13:10.140
<v Brian Okken>but you don't import it anywhere. No, I don't import it anywhere.

00:13:10.380 --> 00:13:11.580
<v Brian Okken>I'm using it for my test.

00:13:13.080 --> 00:13:14.660
<v Michael Kennedy>Do you understand what this is for?

00:13:16.160 --> 00:13:19.620
<v Brian Okken>So I'm a little thrown that I think,

00:13:19.920 --> 00:13:22.920
<v Brian Okken>I think maybe I'll suggest that this, that the,

00:13:23.140 --> 00:13:28.200
<v Brian Okken>their example of using your depend that the dev dependency groups are at the

00:13:28.200 --> 00:13:29.720
<v Brian Okken>very least test and docs.

00:13:30.200 --> 00:13:31.860
<v Brian Okken>And I think that that should be the default.

00:13:31.930 --> 00:13:33.780
<v Brian Okken>I don't think you should have to declare that.

00:13:34.600 --> 00:13:34.900
<v Brian Okken>You know,

00:13:35.180 --> 00:13:35.280
<v Brian Okken>if,

00:13:35.580 --> 00:13:35.640
<v Brian Okken>if,

00:13:35.770 --> 00:13:37.700
<v Brian Okken>if you've got a tests or docs,

00:13:38.160 --> 00:13:38.380
<v Brian Okken>it's,

00:13:38.620 --> 00:13:40.540
<v Brian Okken>it's probably a development dependency,

00:13:40.900 --> 00:13:41.120
<v Brian Okken>not.

00:13:42.180 --> 00:13:42.740
<v Brian Okken>But anyway,

00:13:42.880 --> 00:13:43.720
<v Brian Okken>I had fun with it.

00:13:44.200 --> 00:13:45.040
<v Brian Okken>I tried it out.

00:13:45.900 --> 00:13:46.720
<v Brian Okken>I do like the,

00:13:46.900 --> 00:13:48.120
<v Brian Okken>it's not a whole bunch of rules.

00:13:48.490 --> 00:13:52.420
<v Brian Okken>The rules are like projects should not contain missing dependencies,

00:13:52.960 --> 00:13:54.400
<v Brian Okken>should not contain unused dependencies,

00:13:55.840 --> 00:13:57.740
<v Brian Okken>should not use transitive dependencies.

00:13:58.100 --> 00:13:58.720
<v Brian Okken>That's interesting.

00:13:59.140 --> 00:14:00.400
<v Brian Okken>Yeah, I kind of agree.

00:14:00.580 --> 00:14:02.880
<v Brian Okken>You don't depend on-- if something's

00:14:03.320 --> 00:14:06.700
<v Brian Okken>depend getting imported or installed because you

00:14:06.960 --> 00:14:09.720
<v Brian Okken>installed something else, that third party package

00:14:09.980 --> 00:14:12.620
<v Brian Okken>might refactor and not include that.

00:14:12.700 --> 00:14:13.520
<v Brian Okken>So yeah, you should--

00:14:13.560 --> 00:14:13.660
<v Brian Okken>Yeah.

00:14:14.180 --> 00:14:14.300
<v Brian Okken>Yeah.

00:14:14.940 --> 00:14:15.420
<v Brian Okken>--transitive.

00:14:15.700 --> 00:14:17.480
<v Brian Okken>Anyway, I think a fun project.

00:14:17.800 --> 00:14:19.560
<v Michael Kennedy>And yeah, I'm going to check it out a little bit more.

00:14:19.800 --> 00:14:20.140
<v Michael Kennedy>Very cool.

00:14:20.540 --> 00:14:25.520
<v Michael Kennedy>Henry out there says those tests and doc dependencies should be dependency groups nowadays.

00:14:26.720 --> 00:14:26.960
<v Brian Okken>Okay.

00:14:28.660 --> 00:14:29.740
<v Michael Kennedy>I appreciate that.

00:14:29.980 --> 00:14:32.860
<v Michael Kennedy>I don't do nuanced stuff enough to know.

00:14:33.040 --> 00:14:33.900
<v Michael Kennedy>So yes, thanks, Henry.

00:14:34.180 --> 00:14:35.140
<v Michael Kennedy>Thanks for that homework, Henry.

00:14:35.860 --> 00:14:36.380
<v Michael Kennedy>Yes, exactly.

00:14:36.540 --> 00:14:37.340
<v Michael Kennedy>Thanks for the homework, man.

00:14:37.860 --> 00:14:38.720
<v Michael Kennedy>So you know what?

00:14:39.220 --> 00:14:46.540
<v Michael Kennedy>I could find myself on a server or just the terminal, and I'm trying to figure out why are some of my dependencies missing?

00:14:46.620 --> 00:14:47.480
<v Michael Kennedy>Where are my files even?

00:14:47.560 --> 00:14:48.360
<v Michael Kennedy>What's going on, Brian?

00:14:48.820 --> 00:14:52.540
<v Michael Kennedy>And I came across this thing called Juftin Browser.

00:14:53.080 --> 00:14:53.700
<v Michael Kennedy>Drop the E.

00:14:54.280 --> 00:14:57.760
<v Michael Kennedy>So it's a little bit too Web 2.0y, but it still has the O,

00:14:57.850 --> 00:14:58.800
<v Michael Kennedy>so I don't really know what that means.

00:14:59.200 --> 00:15:02.900
<v Michael Kennedy>Anyway, what it is, is this is a really neat tool

00:15:03.440 --> 00:15:07.300
<v Michael Kennedy>that is basically an interactive keyboard-driven

00:15:07.600 --> 00:15:11.520
<v Michael Kennedy>and mouse-driven experience, like a Finder or Windows Explorer,

00:15:12.120 --> 00:15:15.020
<v Michael Kennedy>but for your terminal and works over SSH.

00:15:15.400 --> 00:15:18.039
<v Michael Kennedy>So if I SSH into a server, I can say Browser

00:15:18.580 --> 00:15:22.600
<v Michael Kennedy>in a folder and it gives me a tree of all the folders i can arrow through them i can click

00:15:22.610 --> 00:15:27.960
<v Michael Kennedy>through them and then expand and when you click on them it will show on the right the file and on the

00:15:28.080 --> 00:15:33.640
<v Brian Okken>left the tree of the area starting from where you ran it and down isn't that cool that is pretty cool

00:15:33.980 --> 00:15:40.460
<v Michael Kennedy>yeah and it has yeah it has um basically the viewing for the files it has context highlighting

00:15:40.570 --> 00:15:46.240
<v Michael Kennedy>you can even show images and a couple other things like that so really neat and i think if you're

00:15:46.200 --> 00:15:51.460
<v Michael Kennedy>doing anything super terminal based i know you can run on your local machine but i don't know here's

00:15:51.500 --> 00:15:58.620
<v Michael Kennedy>a little tip for people who don't know if you're in a folder on mac os you can type open space dot

00:15:58.900 --> 00:16:03.620
<v Michael Kennedy>and that will just bring a binder there in windows you can say start space dot and it will open up

00:16:03.760 --> 00:16:08.460
<v Michael Kennedy>windows explorer focused in that folder so if you're in the terminal you want like a brow like a

00:16:09.060 --> 00:16:13.519
<v Michael Kennedy>gooey like thing you're pretty close you're pretty close to having it you got to type browser anyway

00:16:13.540 --> 00:16:14.820
<v Michael Kennedy>if you want to get this thing to start.

00:16:15.420 --> 00:16:17.840
<v Michael Kennedy>But if you're on an SSH connection to a server,

00:16:18.640 --> 00:16:21.740
<v Michael Kennedy>well, there is no alternative but to just LS your way through.

00:16:22.280 --> 00:16:24.480
<v Michael Kennedy>And this is a really nice way to just kind of flip through

00:16:24.580 --> 00:16:25.560
<v Michael Kennedy>and exploit what is in here.

00:16:25.600 --> 00:16:26.820
<v Michael Kennedy>And as you move through the files,

00:16:26.910 --> 00:16:28.580
<v Michael Kennedy>it displays them with syntax highlighting.

00:16:29.020 --> 00:16:29.400
<v Michael Kennedy>I like it.

00:16:29.460 --> 00:16:30.620
<v Michael Kennedy>I think it's super, super useful.

00:16:30.840 --> 00:16:34.160
<v Michael Kennedy>It's going to be part of my server maintenance toolkit,

00:16:34.420 --> 00:16:35.260
<v Michael Kennedy>I think is what I'll say.

00:16:35.580 --> 00:16:36.340
<v Brian Okken>Yeah, it's fun.

00:16:37.780 --> 00:16:42.320
<v Brian Okken>I, you know, I'm also one to possibly just use open.

00:16:43.000 --> 00:16:44.980
<v Brian Okken>for that, but also

00:16:45.680 --> 00:16:47.040
<v Brian Okken>or just cheat and

00:16:47.040 --> 00:16:48.960
<v Brian Okken>just say code space dot and

00:16:49.160 --> 00:16:49.260
<v Brian Okken>open

00:16:50.600 --> 00:16:52.140
<v Brian Okken>and have the tree directory.

00:16:53.160 --> 00:16:54.840
<v Brian Okken>I think the O is necessary

00:16:55.300 --> 00:16:57.100
<v Brian Okken>in the name so that it's

00:16:57.280 --> 00:16:58.920
<v Brian Okken>bro. So bros or

00:16:59.140 --> 00:17:00.100
<v Brian Okken>maybe. Bro.

00:17:02.880 --> 00:17:03.180
<v Michael Kennedy>Yeah.

00:17:03.300 --> 00:17:04.959
<v Michael Kennedy>If you don't, it's not on the

00:17:05.079 --> 00:17:06.880
<v Michael Kennedy>GitHub, I don't think, but if you click their

00:17:07.560 --> 00:17:08.880
<v Michael Kennedy>domain, which is

00:17:09.040 --> 00:17:10.740
<v Michael Kennedy>effectively like a read the docs type of thing,

00:17:11.000 --> 00:17:12.560
<v Michael Kennedy>you can actually see it in action.

00:17:12.680 --> 00:17:15.040
<v Michael Kennedy>with a little animated screen recording.

00:17:15.740 --> 00:17:17.459
<v Michael Kennedy>We love animated screen recordings.

00:17:17.900 --> 00:17:18.199
<v Michael Kennedy>Yes.

00:17:18.900 --> 00:17:19.620
<v Michael Kennedy>So, so nice.

00:17:20.220 --> 00:17:20.300
<v Michael Kennedy>So.

00:17:20.760 --> 00:17:20.880
<v Michael Kennedy>Cool.

00:17:21.260 --> 00:17:21.439
<v Michael Kennedy>All right.

00:17:22.180 --> 00:17:22.819
<v Michael Kennedy>What you got extras?

00:17:23.900 --> 00:17:25.079
<v Brian Okken>I just have a show and tell extra

00:17:25.180 --> 00:17:28.280
<v Brian Okken>because I went to an estate sale a couple weeks ago

00:17:28.700 --> 00:17:30.260
<v Brian Okken>and I got a fun gift that,

00:17:30.480 --> 00:17:33.400
<v Brian Okken>or a fun little thing that I just picked up.

00:17:33.740 --> 00:17:35.360
<v Brian Okken>And so I was going to show it off, show and tell.

00:17:36.340 --> 00:17:39.220
<v Brian Okken>I got this book called Micro,

00:17:40.280 --> 00:17:41.240
<v Brian Okken>Understanding the Micro.

00:17:42.360 --> 00:17:47.780
<v Brian Okken>And it's microcomputers, how they work and what they can do.

00:17:48.240 --> 00:17:48.860
<v Brian Okken>And I flipped.

00:17:49.160 --> 00:17:50.160
<v Brian Okken>It's sort of fun.

00:17:50.260 --> 00:17:52.420
<v Brian Okken>It's got like, you know, it's for kids and stuff.

00:17:53.420 --> 00:17:56.980
<v Brian Okken>But in the back, there's a buyer's guide.

00:17:57.380 --> 00:17:58.880
<v Brian Okken>And I flipped back.

00:17:58.940 --> 00:18:00.300
<v Brian Okken>I'm like, well, does it have mine?

00:18:00.660 --> 00:18:05.220
<v Brian Okken>And yeah, sure enough, the TRS-80 color computer.

00:18:05.500 --> 00:18:06.600
<v Brian Okken>That was when I started.

00:18:07.360 --> 00:18:07.660
<v Michael Kennedy>Okay.

00:18:08.480 --> 00:18:09.120
<v Brian Okken>Fun little book.

00:18:09.760 --> 00:18:11.640
<v Brian Okken>And I haven't read much of it yet, though.

00:18:11.880 --> 00:18:13.220
<v Brian Okken>but it should be fun.

00:18:13.460 --> 00:18:14.900
<v Brian Okken>It even talks about basic programming

00:18:15.200 --> 00:18:16.340
<v Brian Okken>and stuff like that.

00:18:16.560 --> 00:18:16.760
<v Brian Okken>It's fun.

00:18:17.040 --> 00:18:17.180
<v Michael Kennedy>Nice.

00:18:17.920 --> 00:18:18.460
<v Michael Kennedy>You see, Brian,

00:18:18.560 --> 00:18:19.820
<v Michael Kennedy>I was definitely later

00:18:20.100 --> 00:18:21.980
<v Michael Kennedy>in the computer hardware game.

00:18:22.420 --> 00:18:24.800
<v Michael Kennedy>My brother had a Commodore 64,

00:18:25.440 --> 00:18:27.700
<v Michael Kennedy>but I saved up when I was in high school

00:18:28.020 --> 00:18:30.420
<v Michael Kennedy>and I got myself a 486 DX,

00:18:30.920 --> 00:18:31.540
<v Michael Kennedy>not the SX,

00:18:31.640 --> 00:18:33.380
<v Michael Kennedy>but the one with the floating point processor

00:18:33.800 --> 00:18:34.960
<v Michael Kennedy>and 33 megahertz.

00:18:35.380 --> 00:18:36.940
<v Michael Kennedy>That's where I started off.

00:18:37.240 --> 00:18:39.200
<v Brian Okken>I think that's close to what I had.

00:18:39.200 --> 00:18:41.540
<v Brian Okken>I think I must've been ahead of you a little bit.

00:18:41.840 --> 00:18:48.480
<v Brian Okken>I bought a 486 IBM 46 when I was in college so that I could do homework on it.

00:18:48.710 --> 00:18:52.540
<v Brian Okken>And I think the first thing I bought was Turbo Pascal for it.

00:18:52.800 --> 00:18:52.960
<v Brian Okken>Nice.

00:18:53.090 --> 00:18:54.840
<v Michael Kennedy>I think the first thing I got was MechWarriors.

00:18:57.180 --> 00:18:57.420
<v Michael Kennedy>Yeah.

00:18:57.840 --> 00:18:57.920
<v Michael Kennedy>Yeah.

00:18:58.320 --> 00:18:58.560
<v Michael Kennedy>All right.

00:18:58.980 --> 00:18:59.180
<v Michael Kennedy>Awesome.

00:18:59.360 --> 00:19:03.020
<v Michael Kennedy>Well, there's a whole bunch of stories from that era, but let's go back to this era.

00:19:03.580 --> 00:19:09.320
<v Michael Kennedy>And I just want to say, since you gave the recommendation of John Papa's Peacock, I've

00:19:09.380 --> 00:19:09.980
<v Michael Kennedy>been playing with it.

00:19:10.070 --> 00:19:11.440
<v Michael Kennedy>It is so good.

00:19:11.800 --> 00:19:18.160
<v Michael Kennedy>that's fun right it is really really useful and what i didn't realize the way it works is if you

00:19:18.220 --> 00:19:24.660
<v Michael Kennedy>are in something like cursor or vs code or whatever and it has you have to create a workspace not just

00:19:24.820 --> 00:19:31.240
<v Michael Kennedy>open a directory but once you create the workspace it embeds your like styling for that project into

00:19:31.240 --> 00:19:38.760
<v Michael Kennedy>the workspace file so it syncs across machines naturally by just doing git push get pull oh and

00:19:38.760 --> 00:19:42.220
<v Michael Kennedy>So yeah, it's a little bit extra like that.

00:19:42.420 --> 00:19:43.100
<v Michael Kennedy>So that's pretty cool.

00:19:43.280 --> 00:19:44.220
<v Michael Kennedy>Anyway, I just want to give a shout out

00:19:44.340 --> 00:19:45.480
<v Michael Kennedy>to a follow up to that, I suppose.

00:19:45.820 --> 00:19:47.360
<v Michael Kennedy>Like, yeah, that was awesome.

00:19:47.700 --> 00:19:48.040
<v Michael Kennedy>Still is.

00:19:48.420 --> 00:19:48.480
<v Michael Kennedy>Cool.

00:19:49.220 --> 00:19:50.800
<v Michael Kennedy>I guess I have, do you have more extras?

00:19:51.320 --> 00:19:52.820
<v Michael Kennedy>No, without further extras.

00:19:53.280 --> 00:19:55.840
<v Brian Okken>I had one that I kind of forgot to say.

00:19:55.960 --> 00:19:57.980
<v Brian Okken>I am still working on the Lean TDD book

00:19:58.280 --> 00:20:01.460
<v Brian Okken>and I'm almost done with the building

00:20:01.700 --> 00:20:02.920
<v Brian Okken>on test-driven development chapter.

00:20:04.519 --> 00:20:07.560
<v Brian Okken>So finally, with a book like TDD in the name,

00:20:07.680 --> 00:20:09.260
<v Brian Okken>I finally talk about TDD in it.

00:20:10.340 --> 00:20:11.700
<v Brian Okken>I haven't released that yet,

00:20:11.790 --> 00:20:13.520
<v Brian Okken>but I'm hoping to release that later today

00:20:13.670 --> 00:20:14.200
<v Brian Okken>or maybe tomorrow.

00:20:14.540 --> 00:20:15.480
<v Michael Kennedy>Oh, very cool.

00:20:15.870 --> 00:20:15.960
<v Michael Kennedy>Awesome.

00:20:16.390 --> 00:20:16.740
<v Michael Kennedy>I love it.

00:20:17.380 --> 00:20:17.600
<v Michael Kennedy>Anyway.

00:20:17.900 --> 00:20:18.320
<v Michael Kennedy>That's great.

00:20:18.570 --> 00:20:19.160
<v Michael Kennedy>I love the idea.

00:20:19.620 --> 00:20:21.200
<v Michael Kennedy>And Brutus out there says,

00:20:21.280 --> 00:20:21.920
<v Michael Kennedy>Peacock is awesome.

00:20:22.110 --> 00:20:23.180
<v Michael Kennedy>I used it since last week

00:20:23.250 --> 00:20:24.120
<v Michael Kennedy>when you talked about it, Brian.

00:20:24.340 --> 00:20:24.400
<v Michael Kennedy>Thanks.

00:20:24.780 --> 00:20:24.940
<v Michael Kennedy>Cool.

00:20:25.360 --> 00:20:25.740
<v Michael Kennedy>Yeah, I love it.

00:20:26.060 --> 00:20:26.680
<v Michael Kennedy>Yeah, I do too.

00:20:26.940 --> 00:20:27.220
<v Michael Kennedy>All right.

00:20:27.660 --> 00:20:28.660
<v Michael Kennedy>Let's do our joke.

00:20:29.320 --> 00:20:30.840
<v Michael Kennedy>So, you know, people have threats.

00:20:30.970 --> 00:20:32.840
<v Michael Kennedy>They can be empty threats

00:20:33.590 --> 00:20:34.540
<v Michael Kennedy>or scary threats.

00:20:35.260 --> 00:20:35.880
<v Michael Kennedy>You know, like,

00:20:36.380 --> 00:20:38.500
<v Michael Kennedy>I'm going to tell the world about this thing that you did weird.

00:20:38.680 --> 00:20:39.980
<v Michael Kennedy>Or I'm going to find you.

00:20:40.080 --> 00:20:42.080
<v Michael Kennedy>I'm going to punch you in the gut or whatever.

00:20:43.159 --> 00:20:45.600
<v Michael Kennedy>But that's not a very common thing that programmers do.

00:20:46.120 --> 00:20:48.020
<v Michael Kennedy>Now, programmers have a different version.

00:20:48.600 --> 00:20:51.780
<v Michael Kennedy>I will find you and I will install Linux on your computer.

00:20:55.660 --> 00:20:56.660
<v Brian Okken>Yeah, that's extreme.

00:20:56.960 --> 00:21:00.640
<v Michael Kennedy>Yeah, you know you've messed up when someone gets over and you're like,

00:21:01.000 --> 00:21:08.820
<v Michael Kennedy>Aurora? All right. Who did this? What is this? Reminds me of the, I'm having the bios flavor

00:21:09.220 --> 00:21:17.700
<v Brian Okken>of the slushies or the frozen yogurt or whatever. Yeah. I will downvote your Hacker News article.

00:21:18.130 --> 00:21:23.800
<v Michael Kennedy>No. Oh yeah, exactly. I will definitely downvote your Hacker News article.

00:21:25.160 --> 00:21:30.280
<v Michael Kennedy>Or, you know, this also reminds me of like some of the jokes people used to play. Oh my goodness.

00:21:30.860 --> 00:21:36.140
<v Michael Kennedy>especially with Windows, if you could change the background image.

00:21:36.220 --> 00:21:37.900
<v Brian Okken>Oh, yeah. To the blue screen of death.

00:21:38.440 --> 00:21:40.520
<v Michael Kennedy>Change the background image to the blue screen of death.

00:21:41.380 --> 00:21:44.420
<v Michael Kennedy>Or I know when Vista came out, people were super like,

00:21:44.740 --> 00:21:46.120
<v Michael Kennedy>do not put this on my computer.

00:21:46.600 --> 00:21:48.160
<v Michael Kennedy>And the IT people were installing it.

00:21:48.240 --> 00:21:50.280
<v Michael Kennedy>I know someone who took a screenshot of Vista,

00:21:50.680 --> 00:21:52.260
<v Michael Kennedy>put it onto someone else's computer,

00:21:52.940 --> 00:21:56.220
<v Michael Kennedy>and then tasked their Explorer or something like that.

00:21:56.300 --> 00:21:57.520
<v Michael Kennedy>And so they didn't have any.

00:21:58.540 --> 00:21:59.180
<v Michael Kennedy>Oh, that's funny.

00:21:59.440 --> 00:22:02.680
<v Michael Kennedy>They had no thing overlaying it, so it just, like, no, they didn't.

00:22:03.520 --> 00:22:04.260
<v Michael Kennedy>And they, like, click around.

00:22:04.290 --> 00:22:05.220
<v Michael Kennedy>Like, I told you it wouldn't work.

00:22:05.360 --> 00:22:06.200
<v Michael Kennedy>Nothing even clicks here.

00:22:07.640 --> 00:22:07.820
<v Michael Kennedy>Yeah.

00:22:08.520 --> 00:22:10.220
<v Michael Kennedy>I will find you and do stuff your computer is pretty fun.

00:22:10.580 --> 00:22:13.060
<v Michael Kennedy>But this one is I will find you and install Linux in your computer.

00:22:13.360 --> 00:22:13.700
<v Brian Okken>That's funny.

00:22:14.860 --> 00:22:15.040
<v Brian Okken>Yeah.

00:22:15.280 --> 00:22:17.680
<v Brian Okken>Be careful whose child you had booked.

00:22:18.040 --> 00:22:18.280
<v Michael Kennedy>Exactly.

00:22:18.490 --> 00:22:19.400
<v Michael Kennedy>Well, I'll tell you what.

00:22:19.400 --> 00:22:22.180
<v Michael Kennedy>I'm not actually going to go install Linux on anyone's computers,

00:22:22.330 --> 00:22:23.180
<v Michael Kennedy>other than particularly mine.

00:22:23.350 --> 00:22:24.160
<v Michael Kennedy>So no threats here.

00:22:24.440 --> 00:22:24.660
<v Brian Okken>Yeah.

00:22:25.840 --> 00:22:29.920
<v Michael Kennedy>Although, Henry does point out that these days, maybe the opposite is more threatening.

00:22:30.160 --> 00:22:32.740
<v Michael Kennedy>I'll find you and I'll steal Windows 11 on your computer.

00:22:35.880 --> 00:22:36.020
<v Michael Kennedy>Yeah.

00:22:36.220 --> 00:22:38.220
<v Michael Kennedy>Oh, there's a lot of bad ideas shown in the chat.

00:22:38.260 --> 00:22:38.820
<v Michael Kennedy>We're not going to share.

00:22:41.640 --> 00:22:42.360
<v Michael Kennedy>They're great, though.

00:22:42.460 --> 00:22:42.840
<v Michael Kennedy>Made me laugh.

00:22:42.840 --> 00:22:43.400
<v Michael Kennedy>No, they're good.

00:22:43.960 --> 00:22:44.420
<v Michael Kennedy>Thank you, everyone.

00:22:45.040 --> 00:22:45.560
<v Michael Kennedy>See you all later.

00:22:45.940 --> 00:22:46.120
<v Michael Kennedy>Bye.

00:22:46.420 --> 00:22:46.540
<v Michael Kennedy>Bye.

