WEBVTT

00:00:00.040 --> 00:00:04.500
<v Calvin Hendryx-Parker>Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to

00:00:04.500 --> 00:00:11.280
<v Calvin Hendryx-Parker>your earbuds. This is episode 495, recorded on Tuesday, September 8th. I'm Calvin Hendricks

00:00:11.290 --> 00:00:16.460
<v Calvin Hendryx-Parker>Parker. And I'm Michael Kennedy. Glad to have you, Michael. If you want to support the people who

00:00:16.460 --> 00:00:21.100
<v Calvin Hendryx-Parker>make this possible, make sure you support our sponsors, the fine folks at, oh, Talk Python.

00:00:21.470 --> 00:00:26.560
<v Calvin Hendryx-Parker>Make sure you check out Michael's courses. He is doing incredible work over there. It's a great way

00:00:26.540 --> 00:00:28.900
<v Calvin Hendryx-Parker>to brush up on some technology you weren't sure about,

00:00:29.440 --> 00:00:30.060
<v Calvin Hendryx-Parker>try something new.

00:00:30.440 --> 00:00:31.600
<v Calvin Hendryx-Parker>He's got some really cool notes.

00:00:31.630 --> 00:00:33.280
<v Calvin Hendryx-Parker>You just released a couple of new courses, right?

00:00:33.580 --> 00:00:36.160
<v Michael Kennedy>Yeah, we just released a Rust course,

00:00:36.520 --> 00:00:37.580
<v Michael Kennedy>which I think is really nice.

00:00:37.780 --> 00:00:37.860
<v Calvin Hendryx-Parker>Yeah.

00:00:38.230 --> 00:00:38.520
<v Calvin Hendryx-Parker>Very cool.

00:00:38.940 --> 00:00:41.380
<v Calvin Hendryx-Parker>And then also check out the fine folks over at Six Feet Up.

00:00:41.620 --> 00:00:43.840
<v Calvin Hendryx-Parker>They are the ones who love solving hard problems.

00:00:44.220 --> 00:00:45.220
<v Calvin Hendryx-Parker>They do a lot of Python work.

00:00:45.320 --> 00:00:46.320
<v Calvin Hendryx-Parker>They've been around for 27 years.

00:00:47.030 --> 00:00:48.200
<v Calvin Hendryx-Parker>And we'd love to talk to you

00:00:48.340 --> 00:00:49.520
<v Calvin Hendryx-Parker>about doing some cool projects.

00:00:50.060 --> 00:00:51.500
<v Calvin Hendryx-Parker>If you want to connect with the hosts online,

00:00:51.750 --> 00:00:53.920
<v Calvin Hendryx-Parker>you can find Michael, myself, and the show

00:00:54.160 --> 00:00:55.860
<v Calvin Hendryx-Parker>on Mastodon, Bluesky, and X.

00:00:56.360 --> 00:00:58.500
<v Calvin Hendryx-Parker>And you can also find Michael and I on LinkedIn.

00:00:59.170 --> 00:01:03.720
<v Calvin Hendryx-Parker>But make sure you join us on YouTube for the live stream at pythonbytes.fm/live to

00:01:03.720 --> 00:01:04.260
<v Calvin Hendryx-Parker>be part of the audience.

00:01:04.980 --> 00:01:06.960
<v Calvin Hendryx-Parker>Usually it's Tuesday mornings, Pacific time.

00:01:07.460 --> 00:01:09.680
<v Calvin Hendryx-Parker>Older video versions are available there too.

00:01:09.890 --> 00:01:14.880
<v Calvin Hendryx-Parker>And finally, if you want our artisanal digest of every week's show notes in email form,

00:01:15.340 --> 00:01:19.200
<v Calvin Hendryx-Parker>add your name to our friends of the show list and we'll never share it, but you'll get a

00:01:19.280 --> 00:01:21.000
<v Calvin Hendryx-Parker>really cool recap of everything we talked about.

00:01:21.520 --> 00:01:23.600
<v Michael Kennedy>Michael, thinking about recaps, what you got?

00:01:23.880 --> 00:01:28.820
<v Michael Kennedy>I always look forward to when the videos of the conferences come out.

00:01:28.940 --> 00:01:29.300
<v Michael Kennedy>How about you?

00:01:29.340 --> 00:01:30.220
<v Calvin Hendryx-Parker>Same. I do too.

00:01:30.640 --> 00:01:33.960
<v Calvin Hendryx-Parker>I mean, sometimes I'm at the conference and I just miss a great talk.

00:01:34.180 --> 00:01:36.580
<v Calvin Hendryx-Parker>And I'm so glad that many of the good ones are recorded.

00:01:37.140 --> 00:01:37.860
<v Michael Kennedy>Exactly the same.

00:01:38.060 --> 00:01:42.000
<v Michael Kennedy>And sometimes you don't miss it because you just want to...

00:01:42.000 --> 00:01:42.760
<v Michael Kennedy>There's trade-offs, right?

00:01:42.860 --> 00:01:44.680
<v Michael Kennedy>Like, I'm going to go to that talk instead of that one.

00:01:44.700 --> 00:01:48.240
<v Michael Kennedy>Or, oh, there's a really interesting group of people having this conversation.

00:01:48.700 --> 00:01:49.780
<v Michael Kennedy>And the talk is starting now.

00:01:49.900 --> 00:01:56.000
<v Michael Kennedy>You got to decide, do I join the group and have the experience that's not going to be recorded or do I go to the talk?

00:01:56.340 --> 00:02:01.940
<v Michael Kennedy>So, EuroPython2026 has all of the videos out.

00:02:02.340 --> 00:02:08.440
<v Michael Kennedy>And I realize I need to update what I put in the show notes because this is just my subset.

00:02:08.800 --> 00:02:16.820
<v Michael Kennedy>So, if you want to watch all the talks for EuroPython, 117 videos are now online on YouTube, which is great.

00:02:17.040 --> 00:02:17.880
<v Calvin Hendryx-Parker>That is fantastic.

00:02:18.320 --> 00:02:18.680
<v Calvin Hendryx-Parker>And quick.

00:02:18.840 --> 00:02:18.960
<v Calvin Hendryx-Parker>Yes.

00:02:19.240 --> 00:02:20.200
<v Michael Kennedy>Because the conference just happened.

00:02:20.750 --> 00:02:21.440
<v Michael Kennedy>Yes, I know.

00:02:21.560 --> 00:02:22.280
<v Michael Kennedy>It's really, really good.

00:02:22.700 --> 00:02:29.200
<v Michael Kennedy>And I went through and said, hmm, what might make an interesting thing that I personally

00:02:29.380 --> 00:02:30.200
<v Michael Kennedy>would be interested in?

00:02:30.420 --> 00:02:31.000
<v Michael Kennedy>This is not a voting.

00:02:31.220 --> 00:02:31.860
<v Michael Kennedy>This is not a ranking.

00:02:32.060 --> 00:02:32.880
<v Michael Kennedy>This is not a good, bad.

00:02:33.120 --> 00:02:35.580
<v Michael Kennedy>This is Michael wants to watch this for two reasons.

00:02:35.810 --> 00:02:40.360
<v Michael Kennedy>Either one is relevant to me, or I might be considering it for a Talk Python episode.

00:02:40.620 --> 00:02:47.539
<v Michael Kennedy>Like, for example, the very first one by Giovanni Bairoliari is already out over on Talk Python

00:02:47.840 --> 00:02:48.180
<v Michael Kennedy>Oh, nice.

00:02:48.460 --> 00:02:53.520
<v Michael Kennedy>As the latest, he did a cool project rewriting asyncio

00:02:54.080 --> 00:02:58.020
<v Michael Kennedy>from a perspective of what if there was only free-threaded Python?

00:02:58.520 --> 00:03:01.120
<v Michael Kennedy>You wouldn't write asyncio exactly the same

00:03:01.360 --> 00:03:03.480
<v Michael Kennedy>because you have the potential to split that work

00:03:03.920 --> 00:03:05.000
<v Michael Kennedy>across multiple threads,

00:03:05.110 --> 00:03:07.380
<v Michael Kennedy>whereas asyncio is single-threaded, et cetera, et cetera.

00:03:07.720 --> 00:03:09.400
<v Michael Kennedy>So I'm finding these really interesting.

00:03:09.880 --> 00:03:11.700
<v Michael Kennedy>We've got Marlene Magami.

00:03:12.400 --> 00:03:14.660
<v Michael Kennedy>Her talk, her keynote is up.

00:03:14.880 --> 00:03:19.540
<v Michael Kennedy>Updates on the JIT, update on free threaded Python by Thomas Warters.

00:03:20.620 --> 00:03:23.380
<v Michael Kennedy>Paul Everitt is in here somewhere because it's Paul Everitt.

00:03:23.380 --> 00:03:26.500
<v Calvin Hendryx-Parker>Yeah, look, I haven't watched, I have not watched his talk yet, but I really want to,

00:03:26.500 --> 00:03:32.800
<v Calvin Hendryx-Parker>because he talks a lot about kind of the future of AI-driven development and local models and controlling your destiny and your data.

00:03:33.200 --> 00:03:33.860
<v Michael Kennedy>Yeah, exactly.

00:03:34.240 --> 00:03:42.780
<v Michael Kennedy>Stefan Ostrowski deploying Python web apps by Will Vincent, probably with a lean towards Django, hinted to your topics, maybe.

00:03:43.160 --> 00:03:43.420
<v Michael Kennedy>Maybe.

00:03:43.480 --> 00:03:51.660
<v Michael Kennedy>But anyway, I thought I would make my, like this morning I did it, made my watch list public because I don't know.

00:03:51.680 --> 00:03:55.320
<v Michael Kennedy>I went through all 117 videos and said, okay, maybe, probably.

00:03:55.760 --> 00:03:57.120
<v Michael Kennedy>And now I'm down to 29.

00:03:57.460 --> 00:04:00.500
<v Michael Kennedy>So people can check that out or they can just look at the full list.

00:04:00.940 --> 00:04:04.360
<v Calvin Hendryx-Parker>I love that you make it a watch list so you get Michael's curated version.

00:04:04.800 --> 00:04:09.340
<v Calvin Hendryx-Parker>And so I can go enjoy what you think might be important because maybe I follow similar topics.

00:04:09.500 --> 00:04:13.660
<v Calvin Hendryx-Parker>So I think more folks should do that with conference videos because it's so hard to go.

00:04:13.760 --> 00:04:16.320
<v Calvin Hendryx-Parker>I mean, there's, you said what, 117 videos, what you said?

00:04:16.840 --> 00:04:17.680
<v Calvin Hendryx-Parker>Yeah, that's a lot.

00:04:17.840 --> 00:04:19.280
<v Calvin Hendryx-Parker>That's a lot of time to invest.

00:04:19.579 --> 00:04:26.280
<v Michael Kennedy>I would venture there's probably not a single person that watches all videos all the way through, you know?

00:04:26.380 --> 00:04:26.880
<v Michael Kennedy>Yeah, that'd be hard.

00:04:27.180 --> 00:04:27.920
<v Michael Kennedy>That would be super hard.

00:04:28.040 --> 00:04:28.980
<v Michael Kennedy>That's just a lot of time.

00:04:29.300 --> 00:04:29.840
<v Michael Kennedy>That's a lot of time.

00:04:31.180 --> 00:04:34.680
<v Calvin Hendryx-Parker>Well, and I just got back from DjangoCon, which was in Chicago.

00:04:34.740 --> 00:04:41.660
<v Calvin Hendryx-Parker>And same time, just shortly afterwards, the PyCharm folks and the Django Software Foundation have

00:04:41.880 --> 00:04:48.800
<v Calvin Hendryx-Parker>released the 2026 State of Django. And I love so that William Vincent also published this over on

00:04:48.800 --> 00:04:56.920
<v Calvin Hendryx-Parker>the PyCharm blog. I love the fact that it's called Boring is Back. If you've ever read the blog post

00:04:56.940 --> 00:05:02.460
<v Calvin Hendryx-Parker>about boring tokens, like you only get to have so many new shiny technologies, shiny tokens,

00:05:02.560 --> 00:05:04.480
<v Calvin Hendryx-Parker>You only get so many new shiny technologies in your project.

00:05:05.220 --> 00:05:10.680
<v Calvin Hendryx-Parker>The good news is you can have Django and you can have Postgres and they're both considered very boring and very stable.

00:05:11.400 --> 00:05:13.580
<v Calvin Hendryx-Parker>If you look through here, it's very thriving.

00:05:14.100 --> 00:05:22.520
<v Calvin Hendryx-Parker>Postgres is actually the database of choice for almost 80% of the respondents who are doing Django work out there, which I think is a really telling mark.

00:05:22.900 --> 00:05:28.620
<v Calvin Hendryx-Parker>Another nice thing to see here is 43% are already on Django 6.0 months after it shipped.

00:05:28.820 --> 00:05:32.840
<v Calvin Hendryx-Parker>So folks are staying up to date and pretty well on the stable side of things.

00:05:33.620 --> 00:05:36.400
<v Calvin Hendryx-Parker>It was 3,500 Django developers across more than 40 countries.

00:05:36.570 --> 00:05:40.880
<v Calvin Hendryx-Parker>So it's a fairly good representation of the world's uses of Django.

00:05:41.130 --> 00:05:41.960
<v Calvin Hendryx-Parker>I'm sure there's a lot more.

00:05:42.040 --> 00:05:44.600
<v Michael Kennedy>Statistically, I think that that's a pretty big sample size.

00:05:45.040 --> 00:05:45.220
<v Calvin Hendryx-Parker>Yeah.

00:05:45.350 --> 00:05:50.740
<v Calvin Hendryx-Parker>I mean, they did a good job of promoting it across multiple podcasts and conferences and

00:05:51.240 --> 00:05:51.660
<v Calvin Hendryx-Parker>things like that.

00:05:51.660 --> 00:05:53.880
<v Calvin Hendryx-Parker>And I think it's been really well received.

00:05:54.640 --> 00:05:56.060
<v Calvin Hendryx-Parker>They got a nice little infographic here.

00:05:56.440 --> 00:06:00.240
<v Calvin Hendryx-Parker>What I thought was interesting is this relates to maybe a future topic of yours.

00:06:00.740 --> 00:06:03.720
<v Calvin Hendryx-Parker>HTMX is closing in on React for the front end.

00:06:04.210 --> 00:06:10.700
<v Calvin Hendryx-Parker>You see here we've gone from 2025, 26% of projects maybe using, or we're using HTMX to

00:06:10.820 --> 00:06:15.480
<v Calvin Hendryx-Parker>now 34% catching up to React, which is only at 38% on the front end.

00:06:16.120 --> 00:06:16.940
<v Calvin Hendryx-Parker>I'm pro that.

00:06:17.010 --> 00:06:21.820
<v Calvin Hendryx-Parker>I think that's a really great sign of maybe people are looking for the simpler, more boring

00:06:22.100 --> 00:06:22.780
<v Calvin Hendryx-Parker>side of the web.

00:06:23.260 --> 00:06:25.120
<v Calvin Hendryx-Parker>And Django is a great place to do it.

00:06:25.240 --> 00:06:29.580
<v Calvin Hendryx-Parker>folks obviously using AI. So it's interesting, they had a couple of special sections in here.

00:06:29.810 --> 00:06:33.780
<v Calvin Hendryx-Parker>AI is mainstream, but no workflow is one. So whether they're using it all the time,

00:06:34.330 --> 00:06:39.760
<v Calvin Hendryx-Parker>several days a week, once or more often, AI is dominating the workflow, but it's still supervised,

00:06:40.050 --> 00:06:45.640
<v Calvin Hendryx-Parker>which I think it should be. The AI is here to make us better developers, not replace us as

00:06:45.820 --> 00:06:49.980
<v Calvin Hendryx-Parker>developers. I think we've seen that time and time again, as we talk about AI on the various shows.

00:06:50.480 --> 00:06:53.900
<v Calvin Hendryx-Parker>And so the report here, the stats definitely show it.

00:06:53.980 --> 00:06:56.420
<v Calvin Hendryx-Parker>I mean, that's the way to get the most out of these tools.

00:06:57.840 --> 00:06:59.260
<v Calvin Hendryx-Parker>VM is still the top of the list

00:06:59.440 --> 00:07:00.920
<v Calvin Hendryx-Parker>for managing your Python environment,

00:07:01.120 --> 00:07:02.520
<v Calvin Hendryx-Parker>not necessarily your Python dependencies,

00:07:03.140 --> 00:07:04.100
<v Calvin Hendryx-Parker>but the Python environment.

00:07:04.460 --> 00:07:07.500
<v Calvin Hendryx-Parker>I have a feeling uv will overtake here real soon

00:07:07.700 --> 00:07:09.260
<v Calvin Hendryx-Parker>because once you see uv work

00:07:09.560 --> 00:07:10.620
<v Calvin Hendryx-Parker>for getting your Python version,

00:07:11.220 --> 00:07:13.020
<v Calvin Hendryx-Parker>it's hard to go back seeing how fast

00:07:13.260 --> 00:07:14.640
<v Calvin Hendryx-Parker>and easy that is to be managed.

00:07:15.400 --> 00:07:16.340
<v Calvin Hendryx-Parker>Docker at 31%.

00:07:16.660 --> 00:07:18.559
<v Calvin Hendryx-Parker>So I'm also quite excited to see the fact

00:07:18.580 --> 00:07:22.300
<v Calvin Hendryx-Parker>that folks are containerizing and just using the Python coming out of the containers. That's also

00:07:22.400 --> 00:07:28.460
<v Calvin Hendryx-Parker>a very simple and easy way to just get started on the right foot with Python and Django is use

00:07:28.810 --> 00:07:32.200
<v Michael Kennedy>Python that's already in a Docker container. Yeah, yeah. And we're both on team Docker.

00:07:32.620 --> 00:07:40.640
<v Michael Kennedy>Oh, yeah, for sure. And in fact, I'm on team VE and V in Docker for consistency across the dev

00:07:40.810 --> 00:07:48.540
<v Calvin Hendryx-Parker>workflow. Me and Hennig. Right. I am on, actually, I use Docker, but a standard container

00:07:48.580 --> 00:07:53.940
<v Calvin Hendryx-Parker>and install my own uv python via uv for consistency exactly same like i don't yeah i don't want to

00:07:53.980 --> 00:07:58.600
<v Michael Kennedy>pick some pre-made thing like well python comes with it's like it's so easy to install python

00:07:58.780 --> 00:08:03.760
<v Michael Kennedy>into it pick pick yeah specifically i think and you can you run into weird edge cases if you start

00:08:04.060 --> 00:08:08.760
<v Calvin Hendryx-Parker>just kind of coloring slightly outside the lines with one of the standard python ones it could be a

00:08:08.820 --> 00:08:18.520
<v Calvin Hendryx-Parker>c dependency or just a weirdness of you want to install something and it gets it gets hard so i

00:08:18.540 --> 00:08:25.520
<v Calvin Hendryx-Parker>to install this way to go. Rough top of the list for code tooling. No surprises there. I think we

00:08:25.600 --> 00:08:30.440
<v Calvin Hendryx-Parker>should see more pre-commit coming up given what we'll see down here later. There's lots of testing

00:08:30.600 --> 00:08:37.200
<v Calvin Hendryx-Parker>going on. AI is write more code. Verification matters more. You see right here, pytest 45%.

00:08:37.419 --> 00:08:42.120
<v Calvin Hendryx-Parker>So we will, we see lots more testing happening, which I think is also a very good sign. And I'll

00:08:42.140 --> 00:08:47.620
<v Calvin Hendryx-Parker>talk a little bit about that in my second article as well. So I think, yeah, go check it out.

00:08:48.020 --> 00:08:50.400
<v Calvin Hendryx-Parker>This was also part of a fundraiser.

00:08:50.740 --> 00:08:55.860
<v Calvin Hendryx-Parker>So if you are renewing your PyCharm Pro license or looking for one, you can get 30% off.

00:08:56.020 --> 00:08:59.840
<v Calvin Hendryx-Parker>And then you also get 100% of that purchase price goes to the Django Software Foundation.

00:09:00.240 --> 00:09:03.840
<v Calvin Hendryx-Parker>So not an ad for PyCharm necessarily, but they are doing good out there in the world.

00:09:04.120 --> 00:09:05.700
<v Michael Kennedy>I like a lot about this.

00:09:06.680 --> 00:09:11.740
<v Michael Kennedy>Specifically, I also think this is a deeper view into Python in general.

00:09:11.940 --> 00:09:16.180
<v Michael Kennedy>When I saw the headline for the survey, I thought, oh, it's going to survey Django things.

00:09:16.420 --> 00:09:20.760
<v Michael Kennedy>Like who's using this feature, the ORM, and then who's deploying this way versus that way.

00:09:21.140 --> 00:09:23.140
<v Michael Kennedy>And no, it's more of a general thing.

00:09:23.180 --> 00:09:27.140
<v Michael Kennedy>Just let's ask the Django people what they're up to.

00:09:27.160 --> 00:09:27.280
<v Michael Kennedy>Yeah.

00:09:27.560 --> 00:09:27.700
<v Michael Kennedy>Yeah.

00:09:28.100 --> 00:09:28.160
<v Michael Kennedy>Nope.

00:09:28.460 --> 00:09:28.980
<v Michael Kennedy>Really good stuff.

00:09:29.360 --> 00:09:29.940
<v Michael Kennedy>It is good stuff.

00:09:29.960 --> 00:09:30.820
<v Michael Kennedy>I'm glad you covered it.

00:09:31.180 --> 00:09:32.220
<v Michael Kennedy>Speaking of good stuff.

00:09:32.540 --> 00:09:33.620
<v Michael Kennedy>Well, I mean, boring is good.

00:09:33.960 --> 00:09:35.720
<v Michael Kennedy>But you mentioned HTMX.

00:09:35.800 --> 00:09:38.960
<v Michael Kennedy>Well, HTMX 4 is now out.

00:09:39.000 --> 00:09:40.360
<v Michael Kennedy>And that's officially released.

00:09:40.800 --> 00:09:41.200
<v Michael Kennedy>Officially.

00:09:41.340 --> 00:09:42.020
<v Michael Kennedy>And it's a Jeep.

00:09:43.300 --> 00:09:43.740
<v Michael Kennedy>No, it's not.

00:09:43.860 --> 00:09:44.360
<v Michael Kennedy>Excuse me.

00:09:44.420 --> 00:09:44.920
<v Michael Kennedy>No, it's a horse.

00:09:45.560 --> 00:09:49.320
<v Michael Kennedy>It's a Land Cruiser, I believe, not a Jeep.

00:09:49.820 --> 00:09:54.800
<v Michael Kennedy>Anyway, there's a big picture on the announcement of some Land Cruiser jumping.

00:09:54.860 --> 00:10:00.980
<v Calvin Hendryx-Parker>That's the same cover art for the Game Boy Color cartridge that they produced in the announcement as well, which I have.

00:10:01.540 --> 00:10:02.180
<v Calvin Hendryx-Parker>You have? Okay.

00:10:02.450 --> 00:10:03.620
<v Calvin Hendryx-Parker>I have. I've been playing it too.

00:10:03.930 --> 00:10:05.640
<v Calvin Hendryx-Parker>So thank you, Carson, for doing that.

00:10:05.920 --> 00:10:11.040
<v Michael Kennedy>In the release, HTMX 4.000, yay for non-zero ver.

00:10:11.380 --> 00:10:14.540
<v Michael Kennedy>It says, after eight months of work, plus a game,

00:10:14.880 --> 00:10:15.600
<v Michael Kennedy>and if you go to the game,

00:10:16.320 --> 00:10:18.860
<v Michael Kennedy>this is a real Game Boy cartridge you can get, yeah?

00:10:19.280 --> 00:10:21.840
<v Calvin Hendryx-Parker>Yep, I have said cartridge is not made up.

00:10:21.940 --> 00:10:23.900
<v Calvin Hendryx-Parker>It is legitimately a cartridge you can play through.

00:10:24.400 --> 00:10:25.460
<v Calvin Hendryx-Parker>If you play all the way through,

00:10:25.920 --> 00:10:28.920
<v Calvin Hendryx-Parker>your reward is to see the source code for HTMX 4.0.

00:10:31.360 --> 00:10:31.760
<v Michael Kennedy>Incredible.

00:10:32.140 --> 00:10:32.400
<v Michael Kennedy>It is.

00:10:32.400 --> 00:10:36.000
<v Michael Kennedy>All right, so there's a lot of interesting changes here.

00:10:36.180 --> 00:10:40.160
<v Michael Kennedy>I think, first of all, HTMX has been really broadly adopted

00:10:40.180 --> 00:10:45.620
<v Michael Kennedy>by people who are just like, I don't want to take on a React front-end framework or something

00:10:45.820 --> 00:10:53.640
<v Michael Kennedy>like that. Even though all of the AI tools leap at using React for stuff, it's still really popular,

00:10:53.760 --> 00:10:57.780
<v Calvin Hendryx-Parker>which I think people are choosing. Why do you want to develop your models twice?

00:10:58.480 --> 00:11:04.900
<v Michael Kennedy>Yeah. Why do you want a bunch of build steps and all that stuff just to get your app out?

00:11:05.320 --> 00:11:10.140
<v Michael Kennedy>Yeah. If you don't need it, don't go all in. Also, a lot of these

00:11:10.160 --> 00:11:16.120
<v Michael Kennedy>front-end frameworks, not HTML, but many of them encourage you to treat your back-end as a dumb

00:11:16.380 --> 00:11:21.980
<v Michael Kennedy>pipe that just routes data to the front-end where the smarts live. And it's fine if you want to write

00:11:22.010 --> 00:11:26.740
<v Michael Kennedy>your code on the front-end in JavaScript, but if you want to leverage the things that are really

00:11:26.840 --> 00:11:30.940
<v Michael Kennedy>nice about Django or Flask or whatever you're writing against, and just Python in general,

00:11:31.310 --> 00:11:35.820
<v Calvin Hendryx-Parker>well, then it kind of undermines that, right? Yeah, but it's the last you just stay in the

00:11:35.840 --> 00:11:42.580
<v Calvin Hendryx-Parker>batteries included world especially with Django like all the html like filters and helpers that

00:11:42.580 --> 00:11:47.720
<v Calvin Hendryx-Parker>are built in to Django the framework are all still very useful with a tool like this they become

00:11:47.940 --> 00:11:52.620
<v Calvin Hendryx-Parker>useless if you're on react like you're not going to use it right exactly exactly so major changes

00:11:53.260 --> 00:11:59.980
<v Michael Kennedy>attribute inheritance is now explicit it's a little is on a python isn't it um so it used to be you

00:12:00.000 --> 00:12:06.080
<v Michael Kennedy>could do like an hx-confirm and if some action was going to happen first a dialogue would pop up

00:12:06.090 --> 00:12:10.960
<v Michael Kennedy>and say are you sure you want to delete all the data and you would say yes or no but you could put

00:12:11.020 --> 00:12:15.680
<v Michael Kennedy>that in say a div that contains some elements and then there was a button way down if you click the

00:12:15.880 --> 00:12:20.780
<v Michael Kennedy>button the confirm would fire that no longer happens so you have to explicitly say at the top

00:12:20.830 --> 00:12:26.579
<v Calvin Hendryx-Parker>in the confirm and i want this to cascade down to the children biggest part yeah except for that it

00:12:26.560 --> 00:12:30.620
<v Michael Kennedy>it stops working. That's the only problem. On the older code, so there's an upgrade path. It's not

00:12:30.860 --> 00:12:34.820
<v Michael Kennedy>major, but there is, I mean, it's kind of a find and replace upgrade path, so it's not a huge deal.

00:12:35.220 --> 00:12:40.620
<v Michael Kennedy>The event names have been changed a little bit. Yeah, we'll go through some examples, I guess.

00:12:40.710 --> 00:12:46.100
<v Michael Kennedy>So yeah, there's like, you could do an hx confirm and then a button with an hx delete, and now you've

00:12:46.140 --> 00:12:52.460
<v Michael Kennedy>got to say colon inherited. The events are also used to be able to say disinherit, so you could

00:12:52.480 --> 00:12:54.420
<v Michael Kennedy>block a child from having stuff inherited

00:12:54.800 --> 00:12:56.280
<v Michael Kennedy>upon it? Leave this part alone.

00:12:56.600 --> 00:12:57.060
<v Michael Kennedy>Get away from me.

00:12:58.280 --> 00:13:00.520
<v Michael Kennedy>Now that's gone. Now that's gone because you just

00:13:00.620 --> 00:13:02.220
<v Michael Kennedy>that's the default is not to inherit.

00:13:02.360 --> 00:13:04.140
<v Michael Kennedy>So you don't have to say don't cascade it down.

00:13:04.800 --> 00:13:06.380
<v Michael Kennedy>Some events were renamed. Here's the find

00:13:06.480 --> 00:13:08.500
<v Michael Kennedy>and replace. So it used

00:13:08.500 --> 00:13:10.400
<v Michael Kennedy>to be htmx before request

00:13:10.680 --> 00:13:12.380
<v Michael Kennedy>now it's htmx colon

00:13:12.620 --> 00:13:14.260
<v Michael Kennedy>before colon request and

00:13:14.600 --> 00:13:16.520
<v Michael Kennedy>so on. What else? History. This is

00:13:16.740 --> 00:13:18.420
<v Michael Kennedy>actually, I didn't know this was happening.

00:13:18.740 --> 00:13:20.600
<v Michael Kennedy>This is not ideal. So history

00:13:20.620 --> 00:13:26.280
<v Michael Kennedy>support allows you go forwards and backwards, even if, so your forwards and backwards can navigate

00:13:26.600 --> 00:13:33.440
<v Michael Kennedy>between HTMX events, not through just the page loads, right? So if I click a button, yeah,

00:13:33.450 --> 00:13:38.500
<v Michael Kennedy>and it does a load, it changes something else. And I click another, maybe another row in a grid and a

00:13:38.840 --> 00:13:43.300
<v Michael Kennedy>master detail, like another detail thing loads, you can go backwards, forwards between those.

00:13:43.740 --> 00:13:50.020
<v Michael Kennedy>I didn't know this. It used to be that in HTMX2, the way backwards and forwards worked is it would

00:13:49.980 --> 00:13:53.500
<v Michael Kennedy>save a copy of the pages for restoration and local storage.

00:13:53.920 --> 00:13:54.800
<v Michael Kennedy>I forget the storage part.

00:13:54.860 --> 00:13:56.460
<v Michael Kennedy>Like, wait, what if that data changed?

00:13:58.040 --> 00:14:00.140
<v Michael Kennedy>You know, there's two hard things.

00:14:00.740 --> 00:14:01.300
<v Calvin Hendryx-Parker>Yeah, dangerous.

00:14:02.260 --> 00:14:02.520
<v Michael Kennedy>Exactly.

00:14:02.780 --> 00:14:04.520
<v Michael Kennedy>There's like two hard things in computer science.

00:14:05.080 --> 00:14:08.160
<v Michael Kennedy>Caching, naming things, and off by one errors, right?

00:14:08.740 --> 00:14:09.300
<v Michael Kennedy>Love that joke.

00:14:09.860 --> 00:14:11.140
<v Michael Kennedy>Yeah, it's there for a reason.

00:14:11.180 --> 00:14:12.340
<v Michael Kennedy>The caching is super hard.

00:14:12.800 --> 00:14:15.160
<v Michael Kennedy>And this was so, like, I thought it was just reloading it.

00:14:15.180 --> 00:14:15.660
<v Michael Kennedy>What's going on?

00:14:15.960 --> 00:14:17.000
<v Michael Kennedy>So anyway, that's gone.

00:14:17.300 --> 00:14:17.440
<v Michael Kennedy>Nice.

00:14:17.540 --> 00:14:20.600
<v Michael Kennedy>It just literally reloads it like I always thought it did.

00:14:20.650 --> 00:14:21.260
<v Michael Kennedy>So there's that.

00:14:21.760 --> 00:14:24.340
<v Michael Kennedy>And the last one is, well, there's like two things.

00:14:24.780 --> 00:14:25.780
<v Michael Kennedy>There's morph swaps.

00:14:25.990 --> 00:14:28.360
<v Michael Kennedy>So what this is, I had to look this up, folks,

00:14:28.920 --> 00:14:35.060
<v Michael Kennedy>is a morph swap is that instead of saying this portion of the page is changing,

00:14:35.340 --> 00:14:37.820
<v Michael Kennedy>so we're going to get the new partial or fragment from the server

00:14:38.220 --> 00:14:39.540
<v Michael Kennedy>and just replace that,

00:14:39.860 --> 00:14:44.140
<v Michael Kennedy>a morph swap will rewrite the DOM to match the new segment.

00:14:44.600 --> 00:14:47.580
<v Michael Kennedy>So for example, it doesn't jump around as much

00:14:47.720 --> 00:14:49.500
<v Michael Kennedy>and those kinds of things, right?

00:14:49.680 --> 00:14:51.440
<v Michael Kennedy>If maybe only some tiny element,

00:14:51.570 --> 00:14:52.800
<v Michael Kennedy>even though you replaced a whole section,

00:14:53.260 --> 00:14:54.000
<v Michael Kennedy>changes, it's like, okay,

00:14:54.050 --> 00:14:55.260
<v Michael Kennedy>we'll just change the little element

00:14:56.160 --> 00:14:57.700
<v Michael Kennedy>because, again, master detail,

00:14:57.890 --> 00:15:00.040
<v Michael Kennedy>like there's a whole structure of the HTML there,

00:15:00.260 --> 00:15:01.800
<v Michael Kennedy>but really as you click from page to page,

00:15:01.960 --> 00:15:03.700
<v Michael Kennedy>it's just the values inside that structure.

00:15:04.080 --> 00:15:05.380
<v Calvin Hendryx-Parker>That sounds hard as a framework,

00:15:05.580 --> 00:15:07.240
<v Calvin Hendryx-Parker>but much easier for the end user

00:15:07.460 --> 00:15:08.460
<v Calvin Hendryx-Parker>who's building with the framework.

00:15:08.900 --> 00:15:09.240
<v Calvin Hendryx-Parker>Exactly.

00:15:10.040 --> 00:15:10.760
<v Calvin Hendryx-Parker>Let them suffer.

00:15:11.120 --> 00:15:12.700
<v Calvin Hendryx-Parker>Apparently they did the suffering for us,

00:15:12.730 --> 00:15:13.180
<v Calvin Hendryx-Parker>which I love.

00:15:13.240 --> 00:15:13.460
<v Calvin Hendryx-Parker>Yes.

00:15:14.000 --> 00:15:15.760
<v Michael Kennedy>I mean, honestly, it's not the point of a framework.

00:15:15.760 --> 00:15:16.040
<v Michael Kennedy>It is.

00:15:16.300 --> 00:15:19.480
<v Michael Kennedy>I mean, why would you do a framework if you're not going to leverage that?

00:15:20.520 --> 00:15:22.320
<v Michael Kennedy>And then the HX partial tag.

00:15:23.560 --> 00:15:25.920
<v Michael Kennedy>So this for outer band changes.

00:15:26.500 --> 00:15:29.080
<v Michael Kennedy>This is where HTMX used to be really brutal.

00:15:29.150 --> 00:15:30.980
<v Michael Kennedy>And honestly, I've worked on a project before.

00:15:31.130 --> 00:15:34.440
<v Michael Kennedy>And in the end, I'm like, oh, I kind of wish I didn't choose HTMX for this.

00:15:34.590 --> 00:15:37.560
<v Michael Kennedy>Because I want to update something over here and something over there.

00:15:37.940 --> 00:15:38.700
<v Michael Kennedy>And this part here.

00:15:38.900 --> 00:15:39.600
<v Michael Kennedy>And it was tough.

00:15:40.040 --> 00:15:42.760
<v Michael Kennedy>So this lets you specify partials.

00:15:43.200 --> 00:15:49.680
<v Michael Kennedy>then um elements of it that change right so pretty pretty neat um that's slick it allows you to to

00:15:49.680 --> 00:15:56.180
<v Michael Kennedy>sort of glue that stuff together very nice yeah so there there it is i mean and they definitely get

00:15:56.480 --> 00:16:03.140
<v Calvin Hendryx-Parker>best launch swag gifts or whatever the game boy cartridge over the top and real i love it

00:16:03.760 --> 00:16:08.120
<v Michael Kennedy>i know the website you can go to the website and play it too but i didn't even have the

00:16:08.260 --> 00:16:11.839
<v Calvin Hendryx-Parker>eminid version that's cool so everyone can enjoy it if you don't have a game boy

00:16:12.240 --> 00:16:17.480
<v Calvin Hendryx-Parker>but that's crazy right it is super good it works yeah it's a beautiful cartridge really well done

00:16:17.740 --> 00:16:21.980
<v Calvin Hendryx-Parker>like the game was surprisingly well done for i can't imagine what how much time they spent on it

00:16:22.300 --> 00:16:30.200
<v Michael Kennedy>well carson definitely is known for um interesting and catchy stuff so well played well well played

00:16:30.520 --> 00:16:36.579
<v Michael Kennedy>well played i love it that's awesome yeah let's head over you mentioned zen some zen of python

00:16:36.600 --> 00:16:43.660
<v Calvin Hendryx-Parker>things. So for the final news article for me, this is actually a local IndyPy person. He presented

00:16:44.100 --> 00:16:49.360
<v Calvin Hendryx-Parker>about two IndyPys ago, Kyle from Testable. He gave a little nice little blog post about

00:16:49.600 --> 00:16:54.920
<v Calvin Hendryx-Parker>functionally Zen. And I kind of like going back over Zen of Python things. It's one of my favorite

00:16:55.160 --> 00:17:02.119
<v Calvin Hendryx-Parker>talks to give at PyCon and other conferences is something more around these initial tenants of

00:17:02.160 --> 00:17:07.199
<v Calvin Hendryx-Parker>Python and simplicity and why we love it. And for those of you who don't know, you can go to your

00:17:07.270 --> 00:17:12.439
<v Calvin Hendryx-Parker>command line, you can type Python minus m this, and you will see the little Easter egg, which is the

00:17:12.520 --> 00:17:16.980
<v Calvin Hendryx-Parker>Zen of Python that is in Python. Everyone should print it out, they should frame it, and you should

00:17:16.990 --> 00:17:20.939
<v Calvin Hendryx-Parker>put it in your, above your sink when you brush your teeth at night so you can read it every night.

00:17:21.300 --> 00:17:25.300
<v Calvin Hendryx-Parker>And you'll become a better human being instantly because you've got the Zen of Python there

00:17:25.420 --> 00:17:30.940
<v Calvin Hendryx-Parker>available to you. But Kyle took the Zen of Python and he actually put, took kind of added into it

00:17:30.960 --> 00:17:33.060
<v Calvin Hendryx-Parker>like seven extra tenants for Python simplicity.

00:17:33.740 --> 00:17:36.520
<v Calvin Hendryx-Parker>So he took specifically the simple

00:17:36.540 --> 00:17:38.760
<v Calvin Hendryx-Parker>is better than complex tenant of Python

00:17:39.420 --> 00:17:41.900
<v Calvin Hendryx-Parker>and then added these seven additional pieces

00:17:42.200 --> 00:17:44.680
<v Calvin Hendryx-Parker>that are about idiomatic code, data,

00:17:45.500 --> 00:17:47.540
<v Calvin Hendryx-Parker>pure functions being simpler than impure functions.

00:17:48.340 --> 00:17:50.260
<v Calvin Hendryx-Parker>It kind of goes on like in class functions

00:17:50.400 --> 00:17:52.840
<v Calvin Hendryx-Parker>being maybe simpler than classes.

00:17:53.620 --> 00:17:55.300
<v Calvin Hendryx-Parker>So it's just a way to think about

00:17:55.320 --> 00:17:57.060
<v Calvin Hendryx-Parker>how to keep your code again simple.

00:17:57.620 --> 00:17:59.899
<v Calvin Hendryx-Parker>There's no reason to get overly complex

00:18:00.000 --> 00:18:00.940
<v Calvin Hendryx-Parker>if you don't have to.

00:18:01.390 --> 00:18:04.160
<v Calvin Hendryx-Parker>And Python gives you all the tools that are right here.

00:18:04.210 --> 00:18:05.140
<v Calvin Hendryx-Parker>So you can talk about, again,

00:18:05.190 --> 00:18:06.420
<v Calvin Hendryx-Parker>he talks about being idiomatic.

00:18:07.000 --> 00:18:08.520
<v Calvin Hendryx-Parker>There's things you need to watch out for.

00:18:08.810 --> 00:18:09.940
<v Calvin Hendryx-Parker>For example, side effects,

00:18:10.340 --> 00:18:12.540
<v Calvin Hendryx-Parker>especially with classes that have constructors,

00:18:12.980 --> 00:18:15.240
<v Calvin Hendryx-Parker>they can have side effects in subclasses

00:18:15.360 --> 00:18:16.440
<v Calvin Hendryx-Parker>that you aren't aware of.

00:18:16.860 --> 00:18:18.780
<v Calvin Hendryx-Parker>So it just adds to the complexity

00:18:18.960 --> 00:18:19.980
<v Calvin Hendryx-Parker>and overhead as a developer.

00:18:20.620 --> 00:18:21.640
<v Calvin Hendryx-Parker>Some good examples in here.

00:18:21.750 --> 00:18:23.380
<v Calvin Hendryx-Parker>So if you looked at the idiomatic code

00:18:23.460 --> 00:18:25.200
<v Calvin Hendryx-Parker>is simpler than non-idiomatic code,

00:18:25.540 --> 00:18:27.800
<v Calvin Hendryx-Parker>some functional programmers might be tempted

00:18:27.800 --> 00:18:31.960
<v Calvin Hendryx-Parker>to use the map function of Python to extend a list.

00:18:32.280 --> 00:18:33.320
<v Calvin Hendryx-Parker>But there's actually a simpler way.

00:18:33.800 --> 00:18:35.300
<v Calvin Hendryx-Parker>Just using a list comprehension

00:18:35.980 --> 00:18:38.220
<v Calvin Hendryx-Parker>is actually a clearer, probably cleaner way

00:18:38.780 --> 00:18:40.080
<v Calvin Hendryx-Parker>for writing what you're looking for there.

00:18:40.320 --> 00:18:43.080
<v Calvin Hendryx-Parker>So this actually loops through and does the x times 2

00:18:43.240 --> 00:18:44.700
<v Calvin Hendryx-Parker>for x in a list of 1, 2, 3.

00:18:45.160 --> 00:18:46.280
<v Calvin Hendryx-Parker>So now you've got 2, 4, 6.

00:18:46.420 --> 00:18:48.060
<v Michael Kennedy>And sometimes I think even better performance.

00:18:48.840 --> 00:18:50.220
<v Michael Kennedy>Not hugely, but a little bit.

00:18:50.400 --> 00:18:51.900
<v Calvin Hendryx-Parker>Well, now the docs should be able to tell us, right?

00:18:51.980 --> 00:18:55.160
<v Calvin Hendryx-Parker>Because I've got the notation for those things in there.

00:18:55.260 --> 00:18:56.220
<v Calvin Hendryx-Parker>It's right in the docs.

00:18:56.880 --> 00:18:57.980
<v Calvin Hendryx-Parker>Data is simpler than functions.

00:18:58.430 --> 00:18:59.460
<v Calvin Hendryx-Parker>This one's a little harder to do.

00:18:59.670 --> 00:19:01.500
<v Calvin Hendryx-Parker>I think the example was a little contrived

00:19:01.920 --> 00:19:04.320
<v Calvin Hendryx-Parker>because if you have an object that has age

00:19:04.610 --> 00:19:06.320
<v Calvin Hendryx-Parker>with a sub-element of weight

00:19:06.500 --> 00:19:07.960
<v Calvin Hendryx-Parker>and a sub-element of lab measurement,

00:19:08.340 --> 00:19:09.460
<v Calvin Hendryx-Parker>I don't know if you'd have that structure

00:19:09.610 --> 00:19:10.220
<v Calvin Hendryx-Parker>necessarily all the time,

00:19:10.480 --> 00:19:12.680
<v Calvin Hendryx-Parker>but if you can get your data structured that way,

00:19:12.980 --> 00:19:15.380
<v Calvin Hendryx-Parker>it's probably easier to use, again, a dictionary lookup,

00:19:15.660 --> 00:19:16.620
<v Calvin Hendryx-Parker>and actually it's probably faster

00:19:17.130 --> 00:19:17.980
<v Calvin Hendryx-Parker>to use a dictionary lookup

00:19:18.060 --> 00:19:19.760
<v Calvin Hendryx-Parker>than it is to run a function

00:19:19.890 --> 00:19:21.280
<v Calvin Hendryx-Parker>that would be taking in arguments

00:19:21.720 --> 00:19:23.260
<v Calvin Hendryx-Parker>and looking up things based on those arguments.

00:19:23.810 --> 00:19:26.620
<v Calvin Hendryx-Parker>So I mostly agree with that example.

00:19:27.260 --> 00:19:33.160
<v Calvin Hendryx-Parker>This is about the impure functions or pure functions versus impure. So this pure function, for example

00:19:33.320 --> 00:19:39.080
<v Calvin Hendryx-Parker>You're certain is always going to return an integer like it has a reliable return to it

00:19:39.620 --> 00:19:42.560
<v Calvin Hendryx-Parker>This the second example where they're talking about fetch doubles

00:19:42.640 --> 00:19:45.300
<v Calvin Hendryx-Parker>The first one was like a double where you just to return x times two

00:19:45.520 --> 00:19:48.080
<v Calvin Hendryx-Parker>So it doubles the number the second one which was like fetch

00:19:48.820 --> 00:19:53.920
<v Calvin Hendryx-Parker>Under double it actually uses requests to get the response and then it tries to return the body

00:19:54.400 --> 00:19:58.420
<v Calvin Hendryx-Parker>looking for an answer key, that is not as stable.

00:19:58.780 --> 00:20:00.760
<v Calvin Hendryx-Parker>It could be it returns two or four.

00:20:01.280 --> 00:20:03.040
<v Calvin Hendryx-Parker>It could be the returns of 500 server error.

00:20:03.320 --> 00:20:05.020
<v Calvin Hendryx-Parker>Could be the returns some other,

00:20:05.340 --> 00:20:06.520
<v Calvin Hendryx-Parker>if a developer makes a mistake someplace,

00:20:06.640 --> 00:20:08.980
<v Calvin Hendryx-Parker>some other not expected answer or a string.

00:20:09.280 --> 00:20:11.100
<v Calvin Hendryx-Parker>So that's just an example of what

00:20:11.100 --> 00:20:13.340
<v Calvin Hendryx-Parker>It might even return an exception,

00:20:13.340 --> 00:20:15.320
<v Calvin Hendryx-Parker>like network not available.

00:20:15.320 --> 00:20:18.060
<v Calvin Hendryx-Parker>And then the pure functions versus classes.

00:20:18.060 --> 00:20:20.080
<v Calvin Hendryx-Parker>I mean, if you look at the example here,

00:20:20.080 --> 00:20:23.440
<v Calvin Hendryx-Parker>a function you can do in as simply as two lines

00:20:23.460 --> 00:20:25.640
<v Calvin Hendryx-Parker>with a definition of the function and a return.

00:20:26.440 --> 00:20:27.620
<v Calvin Hendryx-Parker>When you start talking about classes,

00:20:28.120 --> 00:20:31.220
<v Calvin Hendryx-Parker>you just get a lot more boilerplate going on inside the class.

00:20:31.440 --> 00:20:33.240
<v Calvin Hendryx-Parker>So if you don't need the classes,

00:20:33.700 --> 00:20:35.440
<v Calvin Hendryx-Parker>there's probably no reason to go that direction.

00:20:35.580 --> 00:20:37.120
<v Calvin Hendryx-Parker>And it kind of goes on and on and on here

00:20:37.280 --> 00:20:38.600
<v Calvin Hendryx-Parker>with more and more examples

00:20:39.240 --> 00:20:41.880
<v Calvin Hendryx-Parker>that just show some simpler ways to do that.

00:20:42.020 --> 00:20:43.840
<v Calvin Hendryx-Parker>This is the last one I'll talk about,

00:20:44.080 --> 00:20:44.920
<v Calvin Hendryx-Parker>which is the side effects.

00:20:45.320 --> 00:20:48.060
<v Calvin Hendryx-Parker>If you have a class that has a constructor in it,

00:20:48.180 --> 00:20:49.780
<v Calvin Hendryx-Parker>so you've defined a __init__() method,

00:20:50.580 --> 00:20:52.740
<v Calvin Hendryx-Parker>that __init__() can affect subclasses

00:20:52.780 --> 00:20:53.780
<v Calvin Hendryx-Parker>and you may not be aware of it

00:20:53.850 --> 00:20:55.420
<v Calvin Hendryx-Parker>because you've not looked at the code for it.

00:20:55.560 --> 00:20:57.580
<v Calvin Hendryx-Parker>So they have a time client example here

00:20:57.710 --> 00:21:00.840
<v Calvin Hendryx-Parker>with a __init__() that initializes a token

00:21:02.070 --> 00:21:03.400
<v Calvin Hendryx-Parker>using a request post.

00:21:03.430 --> 00:21:06.040
<v Calvin Hendryx-Parker>So it actually makes an API call in the base class.

00:21:06.500 --> 00:21:09.240
<v Calvin Hendryx-Parker>These other ones for time service and time controller

00:21:09.800 --> 00:21:12.600
<v Calvin Hendryx-Parker>are calling a constructor that uses that client,

00:21:12.810 --> 00:21:14.020
<v Calvin Hendryx-Parker>which means that every one of these

00:21:14.110 --> 00:21:15.740
<v Calvin Hendryx-Parker>will also make an API request.

00:21:16.240 --> 00:21:18.620
<v Calvin Hendryx-Parker>So you may want to manage that a little cleaner

00:21:19.320 --> 00:21:21.720
<v Calvin Hendryx-Parker>and reduce them or say, for example, external calls

00:21:21.940 --> 00:21:27.660
<v Calvin Hendryx-Parker>you're making in that case. The last bit I'll call out in honor of Brian Okken and his Lean TDD book,

00:21:28.240 --> 00:21:33.060
<v Calvin Hendryx-Parker>tests with no mocking are simpler than tests with mocking. I think we can all agree, but I think

00:21:33.120 --> 00:21:37.180
<v Calvin Hendryx-Parker>there's a world that needs to hear it. And there's a book about it. So if you check out Brian's Lean

00:21:37.360 --> 00:21:43.180
<v Calvin Hendryx-Parker>TDD book, he talks about this as well as part of that book. So I thought that was pretty apt and

00:21:43.680 --> 00:21:49.480
<v Calvin Hendryx-Parker>timely that this came up. And thanks, Kyle, for helping remind folks of the simpler ways and the

00:21:49.500 --> 00:21:53.400
<v Michael Kennedy>nice idioms that Python gives us out of the box. I really like it. I remember when I first got into

00:21:53.570 --> 00:21:58.140
<v Michael Kennedy>Python, I hear Pythonic. I'm like, but I need examples. These words are great, but give me

00:21:58.340 --> 00:22:03.180
<v Calvin Hendryx-Parker>examples so much. Yeah. I learned by example. And these are just great examples of like, oh,

00:22:03.600 --> 00:22:07.960
<v Calvin Hendryx-Parker>that's how I should do that. Okay. I can follow that pattern every time. Yeah, absolutely. That's

00:22:07.970 --> 00:22:11.800
<v Michael Kennedy>good stuff. Speaking of following a pattern, your screen's already up. Maybe you just take the extras.

00:22:11.800 --> 00:22:17.680
<v Calvin Hendryx-Parker>Yeah, I will. I'll go with the extras first. And continuing in my three-week streak of talking

00:22:17.700 --> 00:22:26.240
<v Calvin Hendryx-Parker>about uv releases and new features. The latest one released four days ago, uv 0.12.10, now ships the

00:22:26.460 --> 00:22:33.380
<v Calvin Hendryx-Parker>trusted publisher token revocation, and it has Python 3.15 support. So uv is on a terror of keeping

00:22:33.540 --> 00:22:39.620
<v Calvin Hendryx-Parker>up with all the latest bits that are going on, including the Python 3.15 releases coming up. So

00:22:40.180 --> 00:22:43.880
<v Calvin Hendryx-Parker>that's really cool that they're doing that. And then the other bit, I saw a fun little

00:22:44.180 --> 00:22:51.480
<v Calvin Hendryx-Parker>right release here making a python interpreter in 1024 bytes so kind of a little example of

00:22:51.900 --> 00:22:57.640
<v Calvin Hendryx-Parker>of if you've ever done code golf and do something in in such and such a number of steps this person

00:22:57.920 --> 00:23:05.040
<v Calvin Hendryx-Parker>implemented a full python interpreter in 1024 bytes of good old c code so that's pretty wild

00:23:05.420 --> 00:23:11.880
<v Calvin Hendryx-Parker>he i think he first attempted with 512 bytes uh which seems kind of crazy yeah good for you austin

00:23:12.480 --> 00:23:16.660
<v Michael Kennedy>the subtitle was 512 bytes. It's not enough. Like, right. No kidding. Wow.

00:23:18.400 --> 00:23:23.420
<v Calvin Hendryx-Parker>So yeah, he, he chronicled his whole journey. I just thought that was fun. not necessarily a

00:23:23.520 --> 00:23:26.920
<v Calvin Hendryx-Parker>full news article, but it's pretty cool. The people out there doing still cool stuff like this.

00:23:27.240 --> 00:23:29.680
<v Calvin Hendryx-Parker>That's some minified Python, not something you normally see.

00:23:30.400 --> 00:23:32.220
<v Calvin Hendryx-Parker>Right. But yeah.

00:23:32.760 --> 00:23:41.860
<v Michael Kennedy>Wow. Okay. I just got a one quick one. Steering council elections are going on. So

00:23:41.880 --> 00:23:46.540
<v Calvin Hendryx-Parker>Oh, two week nomination period followed by a voting period.

00:23:46.880 --> 00:23:47.920
<v Michael Kennedy>When is this actually?

00:23:48.080 --> 00:23:50.240
<v Michael Kennedy>I saw that the votes were coming up, but I don't see the actual.

00:23:50.640 --> 00:23:54.100
<v Michael Kennedy>Anyway, it's previously been November through December or November through November.

00:23:54.260 --> 00:23:56.660
<v Michael Kennedy>I think it's not yet up or just started.

00:23:57.040 --> 00:23:58.940
<v Michael Kennedy>Anyway, this is the 2026 one.

00:23:59.400 --> 00:24:02.520
<v Michael Kennedy>And so candidates, the nominees are here.

00:24:02.920 --> 00:24:04.020
<v Michael Kennedy>Lots of folks I see.

00:24:04.440 --> 00:24:05.740
<v Michael Kennedy>Yeah, it's a good list.

00:24:05.940 --> 00:24:07.000
<v Michael Kennedy>So check it out, folks.

00:24:07.600 --> 00:24:08.400
<v Michael Kennedy>And yeah.

00:24:08.580 --> 00:24:10.720
<v Michael Kennedy>So anyway, I just want to give a shout out to that being a thing.

00:24:10.940 --> 00:24:12.360
<v Calvin Hendryx-Parker>Hey, Michael, you got any jokes for us?

00:24:12.780 --> 00:24:14.420
<v Michael Kennedy>I have a band joke.

00:24:14.920 --> 00:24:15.720
<v Michael Kennedy>A band joke?

00:24:16.000 --> 00:24:16.660
<v Michael Kennedy>Oh my God.

00:24:17.040 --> 00:24:18.500
<v Calvin Hendryx-Parker>You mean like band as in not allowed?

00:24:18.520 --> 00:24:21.020
<v Calvin Hendryx-Parker>We're going to be kicked off of YouTube and all the

00:24:21.020 --> 00:24:22.620
<v Michael Kennedy>Yes, as in disallowed.

00:24:22.660 --> 00:24:23.060
<v Michael Kennedy>Disallowed.

00:24:23.060 --> 00:24:25.260
<v Michael Kennedy>We'll only get kicked off Reddit.

00:24:25.260 --> 00:24:27.300
<v Michael Kennedy>This is not like a trombone versus trumpet.

00:24:27.300 --> 00:24:29.020
<v Michael Kennedy>Like, what can you do with a trombone?

00:24:29.020 --> 00:24:30.820
<v Michael Kennedy>You can't hit him with a little slider thing?

00:24:31.540 --> 00:24:32.100
<v Michael Kennedy>I don't know.

00:24:32.100 --> 00:24:33.200
<v Michael Kennedy>I used to play the trombone.

00:24:33.200 --> 00:24:36.420
<v Michael Kennedy>I never really enjoyed it though.

00:24:37.160 --> 00:24:38.460
<v Michael Kennedy>It was a requirement.

00:24:39.020 --> 00:24:39.620
<v Michael Kennedy>No, the joke is, keep in mind,

00:24:39.660 --> 00:24:44.680
<v Michael Kennedy>there's not programming exactly it's it but i think we can all just like enjoy a little it uh

00:24:45.240 --> 00:24:50.260
<v Michael Kennedy>stuff you know and it says what single word in it makes you look like this and there used to be a

00:24:50.440 --> 00:24:55.860
<v Michael Kennedy>picture that had a ah like i can't take it anymore and sorry this post was removed by reddit's filters

00:24:56.260 --> 00:24:59.820
<v Michael Kennedy>and all it was was a picture of somebody making a weird face like honestly i don't know what was

00:24:59.860 --> 00:25:06.100
<v Michael Kennedy>wrong with it but someone got up in arms this one this one took me a minute to understand what the

00:25:05.980 --> 00:25:12.400
<v Michael Kennedy>the heck it was. It said, hello. Do you know what this is about? Why would this make IT people wig

00:25:12.580 --> 00:25:18.420
<v Michael Kennedy>out? Maybe, you know, I didn't either. It's apparently on Teams or Slack. If somebody just

00:25:18.500 --> 00:25:22.440
<v Michael Kennedy>says hello, and then they're going to write more, but then they kind of don't, you're like, hi.

00:25:22.880 --> 00:25:28.340
<v Calvin Hendryx-Parker>Okay. That could make me a little, okay, let's go. Okay. All right. Not a single word, but anytime

00:25:28.490 --> 00:25:34.540
<v Michael Kennedy>I get a direct message along the lines, you got a minute? Or can I ask a question? Yes, exactly.

00:25:35.680 --> 00:25:36.360
<v Michael Kennedy>Oh, let's see.

00:25:36.650 --> 00:25:38.480
<v Michael Kennedy>So I got to collapse them because they all go down at like,

00:25:39.460 --> 00:25:40.540
<v Michael Kennedy>this person says printer.

00:25:41.060 --> 00:25:42.160
<v Michael Kennedy>Just no, no.

00:25:43.300 --> 00:25:43.860
<v Michael Kennedy>Can't do it.

00:25:44.000 --> 00:25:46.180
<v Michael Kennedy>What year is this and we still can't reliably print?

00:25:46.520 --> 00:25:46.880
<v Michael Kennedy>I know.

00:25:46.930 --> 00:25:49.020
<v Michael Kennedy>I just, this other, just like last week,

00:25:49.430 --> 00:25:51.960
<v Michael Kennedy>I print maybe twice a year and I just needed to print.

00:25:52.050 --> 00:25:53.080
<v Michael Kennedy>And it's like, the printer's out of ink.

00:25:53.110 --> 00:25:54.300
<v Michael Kennedy>Like, I just bought an ink.

00:25:54.330 --> 00:25:56.460
<v Michael Kennedy>I haven't printed since the last time I bought an ink.

00:25:56.760 --> 00:26:01.320
<v Michael Kennedy>Anyway, but as in, not to interrupt your lunch, but.

00:26:02.980 --> 00:26:04.120
<v Calvin Hendryx-Parker>Could you add in a well actually?

00:26:04.640 --> 00:26:04.860
<v Michael Kennedy>Yeah.

00:26:05.580 --> 00:26:07.920
<v Michael Kennedy>Rico or scan to mail.

00:26:09.440 --> 00:26:11.160
<v Michael Kennedy>Now I get hello.

00:26:11.600 --> 00:26:12.040
<v Calvin Hendryx-Parker>That's pretty good.

00:26:12.600 --> 00:26:12.680
<v Michael Kennedy>Yeah.

00:26:13.040 --> 00:26:13.420
<v Michael Kennedy>All right.

00:26:13.520 --> 00:26:15.120
<v Michael Kennedy>Now I'm in my zone now.

00:26:15.400 --> 00:26:15.560
<v Michael Kennedy>DNS.

00:26:16.820 --> 00:26:20.620
<v Michael Kennedy>There's even like a little like Japanese style like water painting.

00:26:20.730 --> 00:26:21.820
<v Michael Kennedy>It says it's not DNS.

00:26:22.180 --> 00:26:23.040
<v Michael Kennedy>There's no way it's DNS.

00:26:23.340 --> 00:26:24.020
<v Michael Kennedy>It's always DNS.

00:26:24.440 --> 00:26:25.500
<v Michael Kennedy>Like some philosopher.

00:26:25.920 --> 00:26:26.040
<v Calvin Hendryx-Parker>Yeah.

00:26:26.480 --> 00:26:32.360
<v Calvin Hendryx-Parker>In the early days of Six Feet Up, Gabrielle made a comic about DNS because it was so hard to explain to folks.

00:26:32.760 --> 00:26:35.020
<v Calvin Hendryx-Parker>And every time I say there's a problem, she's like, is it DNS?

00:26:35.440 --> 00:26:41.040
<v Calvin Hendryx-Parker>and so this is my co-founder partner in life and she totally gets it dns is absolutely the problem

00:26:41.400 --> 00:26:47.060
<v Michael Kennedy>this one might be for me outlook crowd strike i'll just not ever since you owe this one oh my god

00:26:47.200 --> 00:26:54.000
<v Michael Kennedy>ever since you xyz this doesn't work anymore um update i'm surprised yeah i'm surprised update's

00:26:54.000 --> 00:27:01.899
<v Calvin Hendryx-Parker>not in there oracle i'm on that bandwagon um sharepoint let's see what else we got cve or just

00:27:01.940 --> 00:27:06.740
<v Michael Kennedy>Citrix, teams, SAP, you got my vote on SAP.

00:27:07.310 --> 00:27:07.980
<v Michael Kennedy>Oh my gosh.

00:27:08.460 --> 00:27:10.080
<v Michael Kennedy>Anyway, I thought this was a really fun list.

00:27:10.220 --> 00:27:11.480
<v Michael Kennedy>I don't understand why.

00:27:11.520 --> 00:27:11.980
<v Michael Kennedy>That was a good thread.

00:27:12.340 --> 00:27:13.980
<v Michael Kennedy>I don't understand why they banned it, but whatever.

00:27:14.560 --> 00:27:15.460
<v Michael Kennedy>Now that makes it even better.

00:27:15.460 --> 00:27:16.120
<v Michael Kennedy>Because it's Reddit apparently.

00:27:17.020 --> 00:27:17.600
<v Michael Kennedy>Yeah, I know.

00:27:17.920 --> 00:27:18.160
<v Michael Kennedy>Awesome.

00:27:18.420 --> 00:27:23.180
<v Michael Kennedy>I put stuff up there and it'll be like, well, it looks like you're trying to share an announcement

00:27:23.740 --> 00:27:24.560
<v Michael Kennedy>and that's not allowed.

00:27:24.720 --> 00:27:25.160
<v Michael Kennedy>So blocked.

00:27:25.500 --> 00:27:27.060
<v Michael Kennedy>Like just, I wrote a blog post.

00:27:27.090 --> 00:27:28.700
<v Michael Kennedy>I thought this community would think was interesting.

00:27:28.790 --> 00:27:29.740
<v Michael Kennedy>So I wanted to share it.

00:27:29.980 --> 00:27:31.560
<v Michael Kennedy>It's like, I'm not selling you anything.

00:27:31.820 --> 00:27:32.140
<v Michael Kennedy>I promise.

00:27:32.560 --> 00:27:33.240
<v Michael Kennedy>Not in this case anyway.

00:27:33.440 --> 00:27:34.820
<v Michael Kennedy>Not on my blog.

00:27:35.240 --> 00:27:35.720
<v Calvin Hendryx-Parker>Sorry, Michael.

00:27:36.120 --> 00:27:36.460
<v Calvin Hendryx-Parker>Not allowed.

00:27:36.840 --> 00:27:37.100
<v Calvin Hendryx-Parker>Banned.

00:27:37.500 --> 00:27:37.800
<v Calvin Hendryx-Parker>Banned.

00:27:38.180 --> 00:27:38.760
<v Calvin Hendryx-Parker>Well, that was a good episode.

00:27:39.160 --> 00:27:40.320
<v Calvin Hendryx-Parker>Thanks for hanging out.

00:27:40.640 --> 00:27:41.800
<v Calvin Hendryx-Parker>And we'll see you all next week.

00:27:41.960 --> 00:27:43.280
<v Calvin Hendryx-Parker>I'll still be in France next week, I believe.

00:27:43.740 --> 00:27:44.120
<v Calvin Hendryx-Parker>Au revoir.

00:27:44.700 --> 00:27:45.140
<v Calvin Hendryx-Parker>Au revoir.