WEBVTT

00:00:00.100 --> 00:00:05.860
<v Brian Okken>Hello, everybody. Welcome to Python Bytes. Let's kick it off. It's a bunch of exciting news today.

00:00:06.140 --> 00:00:10.480
<v Brian Okken>Hello, and welcome to Python Bytes, where we deliver Python news and headlines directly to

00:00:10.620 --> 00:00:17.800
<v Brian Okken>earbuds. This is episode 451, recorded September 28th, 2025. I'm Brian Okken.

00:00:18.080 --> 00:00:19.000
<v Brian Okken>And I'm Michael Kennedy.

00:00:19.360 --> 00:00:27.199
<v Brian Okken>And this episode we have as a sponsor ourselves. So please check out all the fun courses at

00:00:27.220 --> 00:00:32.920
<v Brian Okken>talk python training go to head over to python test.com check out some i test courses there and

00:00:33.020 --> 00:00:38.400
<v Brian Okken>of course thank you to patreon supporters um you rock we don't thank you all the time but we always

00:00:38.600 --> 00:00:46.100
<v Brian Okken>think of you and then um if you'd like to we love topics sent to us and just feedback so um uh please

00:00:46.560 --> 00:00:54.699
<v Brian Okken>check out our our socials uh they're in the show notes but we're on blue sky mastodon and i'm pretty

00:00:54.720 --> 00:01:01.060
<v Michael Kennedy>sure michael's still on uh x i am i don't i don't do too much there but i i do answer at mentions

00:01:01.180 --> 00:01:07.380
<v Brian Okken>and stuff there so okay yeah um and if you're listening and like to um check out the video

00:01:07.800 --> 00:01:13.700
<v Brian Okken>or check out the live performance uh head on over to pythonbytes.fm/live and you can be a part

00:01:13.700 --> 00:01:19.499
<v Brian Okken>of the audience usually mondays at 10 pacific time and you can also use that link to get to older

00:01:19.520 --> 00:01:27.020
<v Brian Okken>episodes. And finally, hop on the mailing list. We send out all the show notes every week,

00:01:27.500 --> 00:01:30.860
<v Brian Okken>including some background information, all the links to whatever we talk about,

00:01:31.240 --> 00:01:38.640
<v Brian Okken>and links to the joke even. So that's always fun. So check that out. And yeah, let's kick it off.

00:01:38.980 --> 00:01:43.280
<v Michael Kennedy>I want to talk about databases. Probably a fad, but yeah, some people use databases.

00:01:43.960 --> 00:01:44.980
<v Michael Kennedy>Databases are a fad.

00:01:45.420 --> 00:01:48.360
<v Michael Kennedy>We're not over covering things that could be a fad.

00:01:48.680 --> 00:01:52.920
<v Michael Kennedy>We'll spend a lot of time on some of these new cutting-edge things like Postgres.

00:01:53.410 --> 00:01:56.360
<v Michael Kennedy>So Postgres 18 releases is a major release.

00:01:57.310 --> 00:02:10.259
<v Michael Kennedy>And I don't remember the numbers exactly, but if you go look at the PSF slash JetBrains survey results, latest one, it's been Postgres and Mongo as sort of the top two most wanted, most desired ones.

00:02:10.479 --> 00:02:13.900
<v Michael Kennedy>But Postgres has been pulling ahead and it just keeps pulling ahead.

00:02:14.140 --> 00:02:21.240
<v Michael Kennedy>It is really far and beyond the most loved, used, and wanted relational database and also

00:02:21.460 --> 00:02:21.580
<v Michael Kennedy>manga.

00:02:22.100 --> 00:02:24.040
<v Michael Kennedy>So a release of it is a big deal.

00:02:24.600 --> 00:02:27.820
<v Michael Kennedy>And their website is not overly dramatic.

00:02:28.100 --> 00:02:30.880
<v Michael Kennedy>It's fairly just not straight text or whatever.

00:02:30.900 --> 00:02:33.960
<v Michael Kennedy>But hey, you don't got to be a web designer to build databases.

00:02:34.340 --> 00:02:35.760
<v Michael Kennedy>So let's not hold that against them.

00:02:36.240 --> 00:02:41.540
<v Michael Kennedy>So I put in the show notes a bunch of stuff about what is new.

00:02:42.120 --> 00:02:44.020
<v Michael Kennedy>So let me give you the highlights here.

00:02:44.100 --> 00:03:01.780
<v Michael Kennedy>So there's a new asyncio subsystem, which speeds sequential scans, bitmap heap scans and vacuum, which I think is cleaning up dead space and sort of compacting and so on by issuing concurrent read because now it can be asynchronous instead of blocking on each request.

00:03:02.740 --> 00:03:12.740
<v Michael Kennedy>So that's already like, you should be like, hey, maybe I should upgrade it from whatever I'm doing to 18 because I get async and async subsystem for reading, right?

00:03:14.340 --> 00:03:15.300
<v Michael Kennedy>Async IOSystem.

00:03:16.080 --> 00:03:18.960
<v Michael Kennedy>And then if you're thinking, well, I don't have a fun upgrade.

00:03:19.360 --> 00:03:21.800
<v Michael Kennedy>They also did work to make major upgrades smoother.

00:03:21.960 --> 00:03:31.460
<v Michael Kennedy>So PG underscore upgrade retains planner stats and also does checks for things if you do a dash jobs option.

00:03:31.810 --> 00:03:33.880
<v Michael Kennedy>And it checks those in parallel now as well.

00:03:34.360 --> 00:03:35.960
<v Michael Kennedy>And faster cutovers will swap.

00:03:36.110 --> 00:03:37.860
<v Michael Kennedy>So those are all good things if you want to upgrade.

00:03:38.150 --> 00:03:41.260
<v Michael Kennedy>It has a smarter query system.

00:03:41.280 --> 00:03:53.000
<v Michael Kennedy>So performance lands with skip scans on B-trees, better OR optimization, incremental sorts, parallel, other parallel operations.

00:03:53.270 --> 00:03:53.840
<v Michael Kennedy>It's all good.

00:03:54.320 --> 00:04:00.400
<v Michael Kennedy>And virtual generated columns are enabled, which is by default, which is great.

00:04:00.940 --> 00:04:10.880
<v Michael Kennedy>There's also a new unique identifier that it's using, UUIDV4, which is cool because it'll generate time ordered random IDs.

00:04:11.320 --> 00:04:16.320
<v Michael Kennedy>so if it gets a primary key index based on that i'm guessing like you can sort by that and that's

00:04:16.320 --> 00:04:20.500
<v Michael Kennedy>the sort that also it went into the database so you don't necessarily need a creative time if all

00:04:20.500 --> 00:04:25.960
<v Michael Kennedy>you care about is order so that's kind of cool right yeah security gets an upgrade and by both

00:04:26.120 --> 00:04:32.860
<v Michael Kennedy>throwing out the old and gaining the new adds o off two which is good stops using md5 password auth

00:04:33.379 --> 00:04:38.520
<v Michael Kennedy>that seems reasonable you know like world's oldest hash that shouldn't really be used for that kind

00:04:38.440 --> 00:04:45.000
<v Michael Kennedy>stuff and more TLS controls for SSL type things. And finally, last but not least, text operations

00:04:45.470 --> 00:04:53.640
<v Michael Kennedy>also get a boost through PG Unicode fast collation for faster, upper, lower and caseful helper stuff

00:04:54.400 --> 00:05:00.520
<v Michael Kennedy>and better like hyper queries. So that's actually a pretty big set of boosts you get just for

00:05:00.790 --> 00:05:04.979
<v Brian Okken>upgrading your database server. Yeah, you might not have to do anything but upgrade. It'll be a

00:05:04.860 --> 00:05:11.120
<v Michael Kennedy>zippier yeah exactly and not only that wait there's more what does it cost it's free it's open source

00:05:11.500 --> 00:05:17.520
<v Brian Okken>why not upgrade give it a try people come on yeah cool nice um we got uh other other versions

00:05:18.060 --> 00:05:23.780
<v Brian Okken>updating we'll check check in with other new things later in the show but first let's do some testing

00:05:24.300 --> 00:05:29.740
<v Brian Okken>i uh have i gotta cover some testing topics we'll probably cover more testing topics on this

00:05:29.700 --> 00:05:33.000
<v Brian Okken>this podcast more than normal-ish?

00:05:33.200 --> 00:05:34.140
<v Brian Okken>I don't know, maybe,

00:05:34.320 --> 00:05:35.740
<v Brian Okken>because there's no testing code anymore.

00:05:36.060 --> 00:05:37.420
<v Brian Okken>So I've got to cover it here.

00:05:37.660 --> 00:05:40.540
<v Brian Okken>Anyway, Ned Batchelder wrote a nice article

00:05:40.860 --> 00:05:43.240
<v Brian Okken>called Testing is Better Than DSA.

00:05:43.660 --> 00:05:45.060
<v Brian Okken>And I didn't understand.

00:05:45.260 --> 00:05:46.740
<v Brian Okken>I didn't know what he meant by DSA.

00:05:47.100 --> 00:05:48.680
<v Michael Kennedy>Neither do I, but you're going to tell us, right?

00:05:49.180 --> 00:05:51.320
<v Brian Okken>DSA, Data Structures and Algorithms.

00:05:51.740 --> 00:05:54.020
<v Brian Okken>And kind of the point is,

00:05:54.300 --> 00:05:55.680
<v Brian Okken>there's a lot of people,

00:05:55.820 --> 00:05:56.800
<v Brian Okken>you learn to code,

00:05:56.980 --> 00:06:01.380
<v Brian Okken>you do maybe a base camp or wait, it's not base camp.

00:06:01.680 --> 00:06:02.300
<v Brian Okken>What are those things called?

00:06:02.480 --> 00:06:02.800
<v Brian Okken>Boot camps.

00:06:03.500 --> 00:06:05.920
<v Brian Okken>Maybe you do a boot camp or you learn in school or something

00:06:05.940 --> 00:06:06.760
<v Brian Okken>or you're trying to find a job.

00:06:07.700 --> 00:06:12.380
<v Brian Okken>It is, he does do a nod to say, hey, if you got to get a job,

00:06:12.520 --> 00:06:13.500
<v Brian Okken>you got to do what you got to do.

00:06:13.540 --> 00:06:16.480
<v Brian Okken>And if grinding through leak code will help you line a position,

00:06:16.760 --> 00:06:17.220
<v Brian Okken>then do it.

00:06:17.420 --> 00:06:19.680
<v Brian Okken>But once you have the job, that's not what you do.

00:06:20.320 --> 00:06:23.300
<v Brian Okken>I have never done a doubly linked list at work.

00:06:23.600 --> 00:06:25.820
<v Brian Okken>If I need one, I use one off the shelf.

00:06:26.580 --> 00:06:26.740
<v Michael Kennedy>Same.

00:06:27.260 --> 00:06:31.840
<v Michael Kennedy>Yeah, it's maybe a vague understanding is when I use this one versus that one.

00:06:31.940 --> 00:06:34.800
<v Michael Kennedy>When is a dictionary versus a set versus a list, but you don't build them.

00:06:35.080 --> 00:06:35.420
<v Brian Okken>Yeah.

00:06:35.780 --> 00:06:43.040
<v Brian Okken>And actually, we've got an extra topic later in the show I want to talk about for complexity.

00:06:43.380 --> 00:06:47.320
<v Brian Okken>Complexity is important, but actually building these algorithms, I don't know.

00:06:47.900 --> 00:06:49.460
<v Brian Okken>So what should you do instead?

00:06:49.840 --> 00:06:55.380
<v Brian Okken>One of the things what he's talking about is, and he did say that time complexity is important.

00:06:55.900 --> 00:07:04.940
<v Brian Okken>You should learn how to test your code because a lot of universities and boot camps and stuff say, you know, when you're on the job, they'll let you know how to test.

00:07:06.150 --> 00:07:10.480
<v Brian Okken>But universities don't really teach testing that much, or at least a lot of them don't.

00:07:10.690 --> 00:07:11.800
<v Brian Okken>A lot of boot camps don't.

00:07:12.160 --> 00:07:14.820
<v Brian Okken>So it's good to pick that up yourself.

00:07:15.300 --> 00:07:22.420
<v Brian Okken>And actually, in my experience, tons of working software engineers are really bad at it.

00:07:22.780 --> 00:07:28.960
<v Brian Okken>And so it can put you above the average coder and stuff, if you understand.

00:07:30.540 --> 00:07:34.660
<v Brian Okken>So he's talking about these testing skills are skills that you'll use constantly.

00:07:34.980 --> 00:07:40.160
<v Brian Okken>Real-world software means writing tests much more than school teaches you to.

00:07:41.380 --> 00:07:43.160
<v Brian Okken>It'll help you in job searching, I think.

00:07:44.180 --> 00:07:47.320
<v Brian Okken>It's obviously, it's not obvious how to test well.

00:07:47.700 --> 00:07:50.880
<v Brian Okken>And that's one of the assumptions a lot of people do is that you'll just,

00:07:51.340 --> 00:07:54.580
<v Brian Okken>the testing will be handed to one of the lower level engineers.

00:07:55.200 --> 00:07:56.120
<v Brian Okken>That's a terrible idea.

00:07:56.520 --> 00:08:02.080
<v Brian Okken>Having a robust test suite and one that's elegant and easy to read is a joy to work with.

00:08:02.100 --> 00:08:04.160
<v Brian Okken>And you got to be an expert at it.

00:08:04.940 --> 00:08:06.960
<v Brian Okken>Jumping in and getting good at this helps you.

00:08:07.300 --> 00:08:08.780
<v Brian Okken>And it'll help any team you land on.

00:08:09.800 --> 00:08:11.700
<v Brian Okken>Anyway, just that's pretty much it.

00:08:11.840 --> 00:08:13.680
<v Brian Okken>It's a shout out to say, hey, you should test more.

00:08:15.639 --> 00:08:17.020
<v Michael Kennedy>Yeah, excellent article.

00:08:17.420 --> 00:08:24.440
<v Brian Okken>then yeah thanks i'm right i got the one thing i want to add to this is i think uh testing at a

00:08:24.620 --> 00:08:30.040
<v Brian Okken>unit test level is something that there's a lot of tutorials on and that's okay but testing at a

00:08:30.140 --> 00:08:36.360
<v Brian Okken>higher level like at an api level or at a ui level is more how you think about how the system

00:08:36.919 --> 00:08:41.320
<v Brian Okken>works and if you can do that really well you're going to be invaluable even if a bunch of stuff

00:08:41.419 --> 00:08:46.699
<v Brian Okken>is being offloaded at ai you still need to understand the high level tests so that's that's

00:08:46.720 --> 00:09:11.600
<v Michael Kennedy>Yeah. And I find without a lot of guidance, the AI test creation is not super. It's too fine grained. It's like, oh, we set the value to seven. Test the value of seven. No, we don't need that. Just the whole thing worked. It probably took the seven. You know what I mean? Like, yeah. Yeah. Yeah. Interesting. Okay. So what have I got next? I'm going to set this next one on fire by going back to something that Brian talked about.

00:09:11.740 --> 00:09:14.140
<v Michael Kennedy>A couple episodes ago, can't remember exactly.

00:09:14.320 --> 00:09:16.780
<v Michael Kennedy>I want to talk about Pyrefly again, but a different aspect.

00:09:17.080 --> 00:09:20.860
<v Michael Kennedy>So you mentioned Pyrefly a while ago, six weeks, I don't know.

00:09:21.180 --> 00:09:24.100
<v Michael Kennedy>Then the folks from the Pyrefly team reached out to me and said,

00:09:24.840 --> 00:09:26.280
<v Michael Kennedy>thanks so much for talking about it.

00:09:26.540 --> 00:09:31.680
<v Michael Kennedy>But Michael, you're a little bit misguided and you're a little bit wrong on the features of this.

00:09:32.060 --> 00:09:33.180
<v Michael Kennedy>I'd love to talk to you more.

00:09:33.220 --> 00:09:37.680
<v Michael Kennedy>So I ended up having three of the people from Meta who are on the team on Talk Python.

00:09:37.980 --> 00:09:38.880
<v Michael Kennedy>I had a great conversation.

00:09:39.120 --> 00:09:39.840
<v Michael Kennedy>I learned a bunch.

00:09:40.140 --> 00:09:41.140
<v Michael Kennedy>Super neat project.

00:09:41.580 --> 00:09:45.880
<v Michael Kennedy>So I'm not here to just tell you about Powerfly again, because at best, that would be a follow-up, right?

00:09:46.220 --> 00:09:51.260
<v Michael Kennedy>But I'm here to tell you more about the yellowish orange button on their home screen.

00:09:51.860 --> 00:09:54.260
<v Michael Kennedy>Get the VS Code extension and not just VS Code.

00:09:54.740 --> 00:09:56.140
<v Michael Kennedy>Get the editor integration.

00:09:56.760 --> 00:10:00.540
<v Michael Kennedy>So I interviewed both Charlie Marsh from ty and the team from Powerfly.

00:10:01.100 --> 00:10:02.440
<v Michael Kennedy>And what they're doing is really great.

00:10:02.930 --> 00:10:04.760
<v Michael Kennedy>Both of those projects are amazing.

00:10:05.180 --> 00:10:12.900
<v Michael Kennedy>If you want to do like CI or on-demand type checking, I think they're very much in parallel.

00:10:13.460 --> 00:10:22.280
<v Michael Kennedy>But right now, the editor integration, what I learned from talking to the Powerfly guys, girls, is that the team that does Instagram,

00:10:22.620 --> 00:10:32.920
<v Michael Kennedy>the reason they built this is the team that does Instagram was having a hard time using their editors on the 20 million lines of Python code that Instagram is.

00:10:33.240 --> 00:10:51.980
<v Michael Kennedy>Like, for example, when you'd open a file to get any squigglies or get any like information about anything, like if you wanted to hover over and see or you hit command B or whatever your hot key is, command click, control click to navigate to an item might not work for five seconds or the hover might take a while to come up with the docs or the autocomplete.

00:10:52.040 --> 00:10:56.120
<v Michael Kennedy>all those things right it's like just overwhelmed so like we got to have a faster type system

00:10:56.600 --> 00:11:04.640
<v Michael Kennedy>primarily for a faster type server thing primarily for the editor experience so i said well after i

00:11:04.780 --> 00:11:10.780
<v Michael Kennedy>talked about that's pretty let me try it on mine so if you go uh over here to the powerfly.org

00:11:10.960 --> 00:11:17.339
<v Michael Kennedy>there's an install and then you search for um search for pychart node out there where is it

00:11:18.520 --> 00:11:19.780
<v Michael Kennedy>IDE integration, that's one.

00:11:20.180 --> 00:11:21.320
<v Michael Kennedy>They've got VS Code.

00:11:21.680 --> 00:11:23.740
<v Michael Kennedy>It installs into Cursor.

00:11:24.180 --> 00:11:26.700
<v Michael Kennedy>It has some things that you've got to maybe turn off

00:11:26.860 --> 00:11:28.000
<v Michael Kennedy>the default language server

00:11:28.500 --> 00:11:29.840
<v Michael Kennedy>depending on how things are set.

00:11:29.870 --> 00:11:31.940
<v Michael Kennedy>So read it because that's already come

00:11:32.020 --> 00:11:33.500
<v Michael Kennedy>with Python language servers.

00:11:34.080 --> 00:11:35.320
<v Michael Kennedy>So you don't want them to fight.

00:11:35.740 --> 00:11:37.440
<v Michael Kennedy>And there's also a PyCharm version

00:11:37.880 --> 00:11:39.720
<v Michael Kennedy>that's a PyCharm plugin that you can get

00:11:40.000 --> 00:11:41.140
<v Michael Kennedy>as the language server for that.

00:11:41.440 --> 00:11:42.180
<v Brian Okken>Oh, wow. Cool.

00:11:42.400 --> 00:11:43.820
<v Michael Kennedy>I gave it a try.

00:11:44.160 --> 00:11:46.840
<v Michael Kennedy>And in there, you've got not a huge code base, right?

00:11:47.020 --> 00:11:49.800
<v Michael Kennedy>much smaller on Instagram, but still go in there and hit dot.

00:11:49.900 --> 00:11:55.120
<v Michael Kennedy>And it's like, my experience is the autocomplete is up before you feel the key actually strike

00:11:55.140 --> 00:11:58.440
<v Michael Kennedy>the bottom of the key throw as you hit the dot.

00:11:58.540 --> 00:12:02.540
<v Michael Kennedy>You're like, it just is instant and like really satisfying ways.

00:12:03.439 --> 00:12:04.900
<v Speaker 3>So I'm giving this a try.

00:12:05.000 --> 00:12:08.480
<v Michael Kennedy>It's not like I felt like, oh gosh, it was so slow before, but there's just something

00:12:08.760 --> 00:12:13.940
<v Michael Kennedy>about like, it feels magical that the editor just knows it knows what you want.

00:12:14.040 --> 00:12:14.440
<v Michael Kennedy>You know what I mean?

00:12:14.540 --> 00:12:16.140
<v Michael Kennedy>Like, not like, oh, it figured it out.

00:12:16.240 --> 00:12:18.360
<v Michael Kennedy>it's already giving you the answer.

00:12:18.520 --> 00:12:19.060
<v Michael Kennedy>You know what I mean?

00:12:19.480 --> 00:12:20.520
<v Michael Kennedy>So give it a try.

00:12:20.860 --> 00:12:24.020
<v Michael Kennedy>You can always disable the plugin slash extension,

00:12:24.340 --> 00:12:25.520
<v Michael Kennedy>whatever, and re-enable.

00:12:26.720 --> 00:12:27.180
<v Michael Kennedy>What is it?

00:12:28.300 --> 00:12:28.700
<v Michael Kennedy>PyRite.

00:12:28.860 --> 00:12:30.480
<v Michael Kennedy>I believe it's PyRite or Base PyRite

00:12:30.500 --> 00:12:32.680
<v Michael Kennedy>if you're in cursor, depending on...

00:12:32.680 --> 00:12:33.120
<v Michael Kennedy>Read the instruction.

00:12:33.580 --> 00:12:33.800
<v Michael Kennedy>Okay.

00:12:34.080 --> 00:12:34.740
<v Brian Okken>I'll check it out.

00:12:35.020 --> 00:12:35.560
<v Michael Kennedy>Yeah, check it out.

00:12:35.560 --> 00:12:37.240
<v Michael Kennedy>I mostly...

00:12:37.240 --> 00:12:39.000
<v Michael Kennedy>And also, look...

00:12:39.360 --> 00:12:40.600
<v Michael Kennedy>TY has one as well.

00:12:40.960 --> 00:12:43.540
<v Michael Kennedy>But the ty extension has got a lot...

00:12:43.620 --> 00:12:45.380
<v Michael Kennedy>I was going to use that one first, maybe, actually.

00:12:45.800 --> 00:12:50.560
<v Michael Kennedy>But it's got a lot of sort of like, we're not quite ready yet, but you can give it a try sort of thing.

00:12:50.880 --> 00:12:59.240
<v Michael Kennedy>My feel is like it's super alpha where the Instagram team is using this day in, day out as their autocomplete language server stuff.

00:12:59.640 --> 00:13:03.980
<v Michael Kennedy>I feel like the editor integration right now at this moment is a little bit better for Pyrefly.

00:13:04.180 --> 00:13:06.160
<v Michael Kennedy>So that's why I was playing with that one.

00:13:06.420 --> 00:13:06.920
<v Michael Kennedy>All right.

00:13:07.280 --> 00:13:11.100
<v Michael Kennedy>Well, if it ever changes, we'll probably hear about it.

00:13:11.560 --> 00:13:15.060
<v Michael Kennedy>Yeah, I'll be telling you in six weeks how I'm using the TY1 and it's so incredible.

00:13:15.180 --> 00:13:22.200
<v Brian Okken>yeah all right i'm gonna um switch over to you know let's let's talk about testing a little bit

00:13:23.580 --> 00:13:29.940
<v Brian Okken>no um actually so that just uh it is kind of cool that a couple a couple of great testing

00:13:30.040 --> 00:13:35.460
<v Brian Okken>articles came up so uh the what i want to talk about next is from tim shilling and actually we

00:13:35.580 --> 00:13:41.660
<v Brian Okken>don't cover a lot of stuff from tim but um he's got a great looking blog uh so tim is a big in

00:13:41.580 --> 00:13:47.260
<v Brian Okken>the Django community, of course. And he wrote an article called Playwright and pytest Techniques

00:13:47.400 --> 00:13:53.500
<v Brian Okken>That Bring Me Joy. And again, on the topic of, I think more people should be comfortable with

00:13:53.620 --> 00:13:59.920
<v Brian Okken>high-level tests. If your tests have a web UI, you need to have at least some tests covering that.

00:14:00.260 --> 00:14:05.960
<v Brian Okken>And all developers need to understand how to do some of that. It helps out. So in some of that joy,

00:14:06.540 --> 00:14:10.080
<v Brian Okken>These are some cool tricks that he's put together on how to do.

00:14:10.440 --> 00:14:17.140
<v Brian Okken>We've got open new pages and tabs to be tested using a pytest marker to identify playwright

00:14:17.300 --> 00:14:17.560
<v Brian Okken>tests.

00:14:17.860 --> 00:14:19.740
<v Brian Okken>And I really love that.

00:14:20.000 --> 00:14:20.940
<v Brian Okken>That's really simple.

00:14:21.420 --> 00:14:23.520
<v Brian Okken>But you can just set up a marker.

00:14:24.180 --> 00:14:30.440
<v Brian Okken>And that way, you can, on which tests are running playwright, that way you can exclude

00:14:30.680 --> 00:14:35.100
<v Brian Okken>those if you don't want to run your playwright tests, or you can include those.

00:14:35.500 --> 00:14:39.760
<v Brian Okken>And actually, I usually probably use something smaller than the whole Playwright.

00:14:39.800 --> 00:14:43.720
<v Brian Okken>I might do something like web or UI test or something like that.

00:14:43.780 --> 00:14:46.880
<v Brian Okken>But whatever marker you choose, that's an easy way to distinguish them.

00:14:47.020 --> 00:14:47.520
<v Brian Okken>Great technique.

00:14:48.700 --> 00:14:53.020
<v Brian Okken>Using pause and Playwright's debugging tool, we're using page pause.

00:14:53.640 --> 00:14:55.340
<v Brian Okken>So also neat to do.

00:14:55.980 --> 00:14:59.160
<v Brian Okken>If you've got a test you're debugging, you can throw in page pause.

00:14:59.960 --> 00:15:01.040
<v Brian Okken>It's kind of like a breakpoint.

00:15:01.860 --> 00:15:04.240
<v Brian Okken>So it's kind of a cool technique.

00:15:04.520 --> 00:15:06.140
<v Brian Okken>I see. You can give it a look, maybe.

00:15:06.800 --> 00:15:08.040
<v Speaker 3>Yeah, if you keep looking at it.

00:15:08.360 --> 00:15:13.680
<v Brian Okken>That's one of the neat things about testing with Playwright is to be able to,

00:15:14.000 --> 00:15:17.100
<v Brian Okken>if you're not using, I mean, even if you are using headless,

00:15:17.140 --> 00:15:22.440
<v Brian Okken>you can turn on, you can switch to a headed UI so you can watch it.

00:15:22.800 --> 00:15:25.960
<v Brian Okken>So I'll just run through the other stuff he's got.

00:15:26.060 --> 00:15:31.740
<v Brian Okken>He's got using pause, using axe violations to assert axe violations

00:15:31.900 --> 00:15:34.260
<v Brian Okken>to prevent accessibility regressions.

00:15:34.600 --> 00:15:35.320
<v Brian Okken>Oh, that's interesting.

00:15:35.780 --> 00:15:37.000
<v Brian Okken>Yeah, I'll have to check that out more.

00:15:37.860 --> 00:15:40.300
<v Brian Okken>And then using page expect response

00:15:40.640 --> 00:15:42.620
<v Brian Okken>to confirm a background request occurred.

00:15:43.000 --> 00:15:43.760
<v Brian Okken>That's also nice.

00:15:44.460 --> 00:15:45.700
<v Brian Okken>If you've got a Zippy app

00:15:45.880 --> 00:15:48.320
<v Brian Okken>and it's refreshing the background request.

00:15:48.880 --> 00:15:49.440
<v Brian Okken>That's cool.

00:15:50.080 --> 00:15:51.540
<v Brian Okken>Anyway, great tips from Tim

00:15:51.960 --> 00:15:54.300
<v Brian Okken>if you're going to use Playwright

00:15:54.440 --> 00:15:56.740
<v Michael Kennedy>and testing your UI.

00:15:57.420 --> 00:15:57.960
<v Michael Kennedy>Yeah, very cool.

00:15:58.260 --> 00:15:59.640
<v Michael Kennedy>And just bring it home.

00:15:59.980 --> 00:16:01.920
<v Michael Kennedy>Your app doesn't have to be in Python

00:16:02.400 --> 00:16:04.000
<v Michael Kennedy>to use Playwright to test it, right?

00:16:04.120 --> 00:16:05.540
<v Michael Kennedy>I mean, you're just touching the web.

00:16:06.020 --> 00:16:09.600
<v Brian Okken>Yeah, and also, and that's one of the great things about Playwright

00:16:09.720 --> 00:16:13.840
<v Brian Okken>is it's anything on the web, but also the integration with pytest.

00:16:15.800 --> 00:16:20.340
<v Brian Okken>On my day-to-day job, I'm testing Embedded C with pytest,

00:16:20.620 --> 00:16:24.140
<v Brian Okken>and pytest and Playwright are great across languages.

00:16:24.680 --> 00:16:25.240
<v Brian Okken>Yeah, absolutely.

00:16:26.340 --> 00:16:27.200
<v Brian Okken>All right, your screen's up.

00:16:27.300 --> 00:16:27.960
<v Michael Kennedy>Why don't you do your extras?

00:16:28.280 --> 00:16:29.140
<v Michael Kennedy>You got more than me anyway.

00:16:29.220 --> 00:16:36.500
<v Brian Okken>um i did we did talk about dsa data structures and algorithms um one of the things on that topic

00:16:36.610 --> 00:16:42.880
<v Brian Okken>i wanted to bring up was uh sam who has this excellent article called big o and it is probably

00:16:42.890 --> 00:16:48.900
<v Brian Okken>one of the best overviews quick overview of what big o no uh big o notation is and it's just sort

00:16:48.900 --> 00:16:55.099
<v Brian Okken>of general complexity of algorithms and how much looping and based on the size and um it goes through

00:16:55.699 --> 00:16:57.120
<v Brian Okken>goes through a lot of stuff.

00:16:57.800 --> 00:16:58.200
<v Brian Okken>What do we got?

00:16:58.250 --> 00:17:00.300
<v Brian Okken>I think there's like a table of contents here somewhere.

00:17:00.630 --> 00:17:03.860
<v Brian Okken>But anyway, it talks about iterating

00:17:04.400 --> 00:17:05.980
<v Brian Okken>and going through stuff,

00:17:06.110 --> 00:17:09.500
<v Brian Okken>but he does do finding and searching as well.

00:17:10.339 --> 00:17:11.420
<v Brian Okken>And oh no, sorting.

00:17:11.689 --> 00:17:15.439
<v Brian Okken>So we often talk about sorting algorithms and complexity,

00:17:15.920 --> 00:17:18.020
<v Brian Okken>but the little demos are just awesome

00:17:18.240 --> 00:17:19.660
<v Brian Okken>because you can just walk through stuff.

00:17:19.890 --> 00:17:21.680
<v Brian Okken>And like this one, you can run,

00:17:21.829 --> 00:17:23.060
<v Brian Okken>see how long something takes.

00:17:23.920 --> 00:17:30.940
<v Brian Okken>But then there's some examples of, you know, as N increases, you know, if it's an O of

00:17:31.080 --> 00:17:34.080
<v Brian Okken>one, it might be slower, but eventually it'll be faster.

00:17:34.430 --> 00:17:39.960
<v Brian Okken>Those sorts of just, and these are what we want to have every engineer understand about

00:17:40.070 --> 00:17:45.640
<v Brian Okken>big O no-captation and algorithmic complexity is to just get a gut feel for stuff.

00:17:45.820 --> 00:17:53.019
<v Brian Okken>If you've got a nested loop or a multiply nested loop that goes over everything multiple

00:17:53.040 --> 00:18:00.860
<v Brian Okken>times it's going to be really slow if the end gets pretty big so um the uh the demo of uh

00:18:01.370 --> 00:18:08.600
<v Brian Okken>of sorting totally fun to watch the just walk through the code and then see the uh the the

00:18:08.620 --> 00:18:14.260
<v Brian Okken>demo of how things are getting sorted it goes through a bubble sort here um but anyway uh really

00:18:14.310 --> 00:18:18.680
<v Brian Okken>great for complexity kind of went long on this already but if you'd like to understand big o

00:18:18.680 --> 00:18:28.020
<v Brian Okken>consider that python 3.14 uh rc3 the last rc is out it's it's let's see it was out as of september

00:18:28.160 --> 00:18:35.020
<v Brian Okken>18th and that's it folks for the rcs um if we're looking at the schedule uh release candidate

00:18:35.320 --> 00:18:40.400
<v Brian Okken>three is the last one scheduled final is scheduled for october 7th just right around the corner

00:18:40.900 --> 00:18:48.640
<v Brian Okken>so i'm pretty excited about that speaking of uh upcoming releases django 6 is in in the works and

00:18:48.660 --> 00:18:50.260
<v Brian Okken>Django 6 Alpha 1 is available.

00:18:51.220 --> 00:18:54.300
<v Brian Okken>This was posted September 17th, so I'm not sure when it was out,

00:18:54.500 --> 00:18:56.780
<v Brian Okken>but about then, I'm guessing.

00:18:57.660 --> 00:18:58.660
<v Brian Okken>Django 6 Alpha 1.

00:18:59.720 --> 00:19:02.020
<v Brian Okken>There's our in-development release notes,

00:19:02.060 --> 00:19:03.760
<v Brian Okken>so you can check out what's in there.

00:19:04.960 --> 00:19:06.640
<v Brian Okken>But there's some exciting things.

00:19:07.740 --> 00:19:09.980
<v Brian Okken>I'm excited about template partials in there.

00:19:10.160 --> 00:19:10.660
<v Brian Okken>That'll be fun.

00:19:10.960 --> 00:19:11.760
<v Brian Okken>And background tasks.

00:19:12.560 --> 00:19:12.880
<v Brian Okken>What else?

00:19:13.320 --> 00:19:18.200
<v Brian Okken>The roadmap is a little different for the schedule for Django.

00:19:18.240 --> 00:19:21.920
<v Brian Okken>the final release for Django 6 is scheduled for December 3rd.

00:19:22.040 --> 00:19:23.160
<v Brian Okken>It's still just right around the corner,

00:19:23.270 --> 00:19:26.060
<v Brian Okken>but not quite as close as Python 3.14.

00:19:26.920 --> 00:19:31.700
<v Brian Okken>The last extra I wanted to bring up is actually almost last.

00:19:33.000 --> 00:19:36.960
<v Brian Okken>Last week, we talked about that Python test is a static site,

00:19:36.970 --> 00:19:39.140
<v Brian Okken>and I was looking at possible alternatives.

00:19:39.450 --> 00:19:40.340
<v Brian Okken>I'm still looking.

00:19:40.780 --> 00:19:43.460
<v Brian Okken>However, I've realized that I think I might be yak shaving,

00:19:43.880 --> 00:19:46.060
<v Brian Okken>and there's other stuff I need to be doing,

00:19:46.240 --> 00:19:47.340
<v Brian Okken>like writing new content.

00:19:47.440 --> 00:19:50.340
<v Brian Okken>So I'm going to put off changing that for now.

00:19:50.730 --> 00:19:51.860
<v Michael Kennedy>But the yak is fun.

00:19:52.150 --> 00:19:55.440
<v Brian Okken>But I did want to, the last thing is Pi Bay.

00:19:55.900 --> 00:19:58.680
<v Brian Okken>We had some tickets and we still have a couple of tickets left.

00:19:59.020 --> 00:20:00.200
<v Brian Okken>So how are we going to give those away?

00:20:00.540 --> 00:20:08.820
<v Brian Okken>I think that we decided that the easiest way is if you are available for Pi Bay and want to go, when is it?

00:20:08.980 --> 00:20:10.080
<v Brian Okken>It's October 18th.

00:20:10.380 --> 00:20:10.940
<v Brian Okken>Just let me know.

00:20:11.000 --> 00:20:21.120
<v Brian Okken>So message me on the socials or email, email the show or mostly try to contact me through the social messages.

00:20:21.740 --> 00:20:26.760
<v Brian Okken>First, first couple of people that get in, I'll I'll send you some free tickets.

00:20:27.600 --> 00:20:28.120
<v Michael Kennedy>Lots of extras.

00:20:28.500 --> 00:20:29.080
<v Michael Kennedy>How about you, Michael?

00:20:29.440 --> 00:20:29.660
<v Michael Kennedy>Excellent.

00:20:29.800 --> 00:20:31.860
<v Michael Kennedy>I had no extras, but then I decided I have an extra.

00:20:32.020 --> 00:20:33.920
<v Michael Kennedy>So let's talk real, real quick and then we'll do a joke.

00:20:34.720 --> 00:20:39.720
<v Michael Kennedy>So I know last time I don't know if I have much I went into this, but I'm back of a volley, Brian.

00:20:40.120 --> 00:20:45.540
<v Michael Kennedy>you know I mentioned that but the you know the thing I really liked about Zen was how I could

00:20:45.700 --> 00:20:51.440
<v Michael Kennedy>have just little icons down the left and it would give me more room and that would just be like a

00:20:51.490 --> 00:20:56.440
<v Michael Kennedy>super minimalized view and then I realized like well let me just let me try playing with some

00:20:56.570 --> 00:21:01.840
<v Michael Kennedy>settings and guess what I knew Vivaldi had side tabs but I'm just they were weird to me but then

00:21:01.850 --> 00:21:06.880
<v Michael Kennedy>I tried it for a day and I'm like that's actually kind of neat so I'm back and I think it's better

00:21:06.900 --> 00:21:12.000
<v Michael Kennedy>I think, you know, it's Chromium based and for all the problems of monoculture and all

00:21:12.100 --> 00:21:16.440
<v Michael Kennedy>the stuff that I wish it weren't that way, the web is a little bit smoother on Chrome.

00:21:17.320 --> 00:21:17.520
<v Brian Okken>Yeah.

00:21:18.000 --> 00:21:21.280
<v Brian Okken>I'm one of, I love Valvaldi or have since I've been using it.

00:21:21.460 --> 00:21:24.560
<v Brian Okken>And I do also appreciate that the world sees it as Chrome.

00:21:25.140 --> 00:21:25.300
<v Brian Okken>Yes.

00:21:25.690 --> 00:21:26.100
<v Michael Kennedy>You know what?

00:21:26.160 --> 00:21:30.260
<v Michael Kennedy>You'll hear people say it's not very popular because it doesn't show up in, it doesn't

00:21:30.270 --> 00:21:32.960
<v Michael Kennedy>even register on the list of like popular browsers.

00:21:33.130 --> 00:21:34.580
<v Michael Kennedy>Like what percentage does it use?

00:21:34.860 --> 00:21:40.260
<v Michael Kennedy>It's because it's the only browser that I know of that lies about its user agent, right?

00:21:40.820 --> 00:21:43.520
<v Michael Kennedy>Like Opera says it's Opera plus Chromium.

00:21:43.920 --> 00:21:45.460
<v Michael Kennedy>Brave says it's Brave plus Chromium.

00:21:46.000 --> 00:21:51.620
<v Michael Kennedy>But Vivaldi just says whatever Chrome would be for the one that I'm running on, that's

00:21:51.620 --> 00:21:52.220
<v Michael Kennedy>my user agent.

00:21:52.290 --> 00:21:54.920
<v Michael Kennedy>And so it literally just is like a stealth sort of thing.

00:21:55.420 --> 00:21:59.220
<v Michael Kennedy>I'd also encourage people to check out the themes, like this bright red theme that it

00:21:59.270 --> 00:22:02.820
<v Michael Kennedy>comes with is like, I don't know, it gets your attention, but it's tiresome to me.

00:22:03.260 --> 00:22:04.540
<v Michael Kennedy>So there's a bunch of nice themes.

00:22:04.710 --> 00:22:05.060
<v Michael Kennedy>Check them out.

00:22:05.800 --> 00:22:08.380
<v Brian Okken>And the lying about what you are,

00:22:08.650 --> 00:22:10.620
<v Brian Okken>I really appreciate that in a work setting

00:22:10.840 --> 00:22:13.660
<v Brian Okken>because there's a lot of internal stuff

00:22:14.100 --> 00:22:15.820
<v Brian Okken>that just for ease of use,

00:22:15.910 --> 00:22:16.700
<v Brian Okken>they just say,

00:22:16.920 --> 00:22:18.340
<v Brian Okken>we're going to support Chrome and that's it.

00:22:18.540 --> 00:22:21.100
<v Brian Okken>So they'll check to see what user agent you have.

00:22:21.460 --> 00:22:22.260
<v Brian Okken>And if you don't have Chrome,

00:22:22.480 --> 00:22:23.760
<v Brian Okken>they'll like not let you in.

00:22:24.120 --> 00:22:24.960
<v Michael Kennedy>And I hate that.

00:22:25.840 --> 00:22:26.640
<v Brian Okken>It's extra frustrating

00:22:26.670 --> 00:22:28.200
<v Michael Kennedy>because it literally is the same Chrome.

00:22:28.640 --> 00:22:30.700
<v Michael Kennedy>It just identifies itself differently, right?

00:22:30.980 --> 00:22:31.200
<v Brian Okken>Yeah.

00:22:31.510 --> 00:22:32.460
<v Michael Kennedy>Except for Vulti.

00:22:32.940 --> 00:22:33.280
<v Michael Kennedy>All right.

00:22:33.660 --> 00:22:34.160
<v Michael Kennedy>How about something funny?

00:22:35.000 --> 00:22:35.900
<v Michael Kennedy>So we started with database.

00:22:36.560 --> 00:22:37.700
<v Michael Kennedy>We talked about big O.

00:22:38.240 --> 00:22:40.020
<v Michael Kennedy>Let's finish with database and performance.

00:22:40.460 --> 00:22:40.640
<v Brian Okken>Okay.

00:22:40.880 --> 00:22:44.680
<v Michael Kennedy>Now you could take this joke in a vibe coding.

00:22:45.260 --> 00:22:46.080
<v Michael Kennedy>You don't really know.

00:22:46.360 --> 00:22:48.160
<v Michael Kennedy>And you made a mistake and you're sorry.

00:22:48.820 --> 00:22:53.260
<v Michael Kennedy>Or you could take it in the way of, I'm an experienced engineer and I know I messed up right away.

00:22:53.680 --> 00:22:54.080
<v Michael Kennedy>Here we go.

00:22:54.420 --> 00:22:57.100
<v Michael Kennedy>So there's a hamster and the hamster is freaked.

00:22:58.159 --> 00:23:01.100
<v Michael Kennedy>Ah, what the hamster says is you ran a query,

00:23:01.300 --> 00:23:03.020
<v Michael Kennedy>which was supposed to update a single row,

00:23:03.180 --> 00:23:04.600
<v Michael Kennedy>but it's still running after 10 seconds.

00:23:06.180 --> 00:23:06.360
<v Michael Kennedy>Yeah.

00:23:07.820 --> 00:23:09.240
<v Speaker 3>You might not have a database anymore.

00:23:09.920 --> 00:23:11.100
<v Speaker 3>It's updating every row.

00:23:11.840 --> 00:23:12.460
<v Speaker 3>That's what it's doing.

00:23:13.540 --> 00:23:14.000
<v Michael Kennedy>Oh boy.

00:23:14.780 --> 00:23:14.980
<v Brian Okken>Yeah.

00:23:15.360 --> 00:23:16.820
<v Michael Kennedy>So, I mean, that ties it all together

00:23:17.100 --> 00:23:18.160
<v Michael Kennedy>as the end of the show, doesn't it?

00:23:18.180 --> 00:23:19.680
<v Michael Kennedy>Brian brings the big O notation.

00:23:20.340 --> 00:23:20.420
<v Speaker 3>Yeah.

00:23:20.540 --> 00:23:22.680
<v Michael Kennedy>And how long does it take to update 10 million records?

00:23:23.240 --> 00:23:25.040
<v Michael Kennedy>It talks about the database.

00:23:25.320 --> 00:23:28.780
<v Michael Kennedy>It'll do it faster because there's an asyncioS subsystem now, etc.

00:23:29.280 --> 00:23:29.400
<v Brian Okken>Yeah.

00:23:29.800 --> 00:23:32.400
<v Brian Okken>Scroll up on that guy's face again a little bit.

00:23:33.100 --> 00:23:33.600
<v Brian Okken>Ah, poor guy.

00:23:34.300 --> 00:23:34.840
<v Michael Kennedy>There he is.

00:23:35.060 --> 00:23:35.560
<v Michael Kennedy>He knows.

00:23:37.120 --> 00:23:38.300
<v Michael Kennedy>I'm turning in my resume.

00:23:38.520 --> 00:23:38.640
<v Michael Kennedy>Why?

00:23:39.300 --> 00:23:40.180
<v Michael Kennedy>You'll find out soon.

00:23:40.400 --> 00:23:40.640
<v Brian Okken>Yeah.

00:23:41.100 --> 00:23:41.360
<v Brian Okken>All right.

00:23:41.660 --> 00:23:42.260
<v Brian Okken>Poor hamster.

00:23:42.740 --> 00:23:43.300
<v Michael Kennedy>Poor hamster.

00:23:43.840 --> 00:23:44.560
<v Brian Okken>But not poor listeners.

00:23:44.680 --> 00:23:45.300
<v Michael Kennedy>It's been a good show.

00:23:46.120 --> 00:23:46.300
<v Brian Okken>Yeah.

00:23:46.660 --> 00:23:50.980
<v Brian Okken>Well, another great show and another week.

00:23:51.320 --> 00:23:52.140
<v Brian Okken>We'll talk to you next week.

00:23:52.280 --> 00:23:52.380
<v Brian Okken>Bye.

00:23:52.960 --> 00:23:53.140
<v Brian Okken>Bye.

