WEBVTT

00:00:00.080 --> 00:00:11.080
<v Calvin Hendryx-Parker>Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 493, recorded on Tuesday, August 25th, 2026. I'm Calvin Hendricks

00:00:11.120 --> 00:00:21.720
<v Calvin Hendryx-Parker>Parker. And I'm Michael Kennedy. Hey, Michael. Glad for you to be here. We are sponsored this episode by Logfire from Pydantic, so make sure you check them out. There are links in the show notes.

00:00:22.100 --> 00:00:33.300
<v Calvin Hendryx-Parker>If you want to connect with Michael and I on the socials and the show itself, you can catch us on Mastodon, Bluesky, X, and LinkedIn. And join us for the live stream. Each week we record this live,

00:00:33.400 --> 00:00:46.460
<v Calvin Hendryx-Parker>you can join in, comment, be a part of the audience at pythonbytes.fm/live. It's usually Tuesday at 7 a.m. Pacific. It's a little different, but because of DjangoCon. And finally, if you want an

00:00:46.680 --> 00:01:01.060
<v Calvin Hendryx-Parker>artisanal handcrafted digest of every week's show notes in your email form, add your name to our friends of the show list and we'll never share it to anyone else michael let's dig in uh i think we got a web heavy episode except for one item in here and you're going to kick off with one right

00:01:01.120 --> 00:01:12.340
<v Michael Kennedy>now yeah i'm going to put it in reverse or race mode if you know the british radio joke yeah well first of all hello Django con thank you for the greetings and uh calvin you're reporting live from

00:01:12.520 --> 00:01:27.500
<v Calvin Hendryx-Parker>jango con yeah i am live from jigger i am in the hotel of Django con here in downtown chicago we are in the loop. So those of you who know Chicago area, right on the river, it has been a great conference. This is day two. We've had some excellent keynotes. Don Wages, Sarah from the

00:01:27.600 --> 00:01:39.360
<v Calvin Hendryx-Parker>Django community gave some excellent keynotes each day. And there's been some lightning talks are also one of my favorite things. So a couple rounds of lightning talks have already happened, one of which you're going to cover as part of one of your news items. So there's a lot of Django news

00:01:40.100 --> 00:01:45.720
<v Calvin Hendryx-Parker>actually in this episode included. So it's very timely that DjangoCon is happening right now and and lots that's happening in the community.

00:01:46.020 --> 00:01:48.980
<v Michael Kennedy>Yeah, we've got a couple of Django topics actually.

00:01:49.100 --> 00:01:50.600
<v Michael Kennedy>You did say it's a web heavy episode, right?

00:01:50.820 --> 00:01:52.400
<v Michael Kennedy>It is, except for my one outlier.

00:01:52.740 --> 00:01:53.400
<v Michael Kennedy>We'll get to that.

00:01:53.500 --> 00:01:54.620
<v Michael Kennedy>We'll get to that one.

00:01:54.940 --> 00:01:56.700
<v Michael Kennedy>Right, well, let's talk about the first one.

00:01:56.880 --> 00:02:00.000
<v Michael Kennedy>So this is, I ran across this for something called Traefik.

00:02:00.160 --> 00:02:00.900
<v Michael Kennedy>Are you familiar with Traefik?

00:02:01.240 --> 00:02:02.220
<v Michael Kennedy>I am familiar with Traefik.

00:02:02.560 --> 00:02:16.760
<v Michael Kennedy>Yeah, so Traefik is, it's a reverse proxy like Nginx or Caddy, but it's a little more focused on microservices and like I've got a Kubernetes cluster and stuff is coming and going, and maybe it's recycled and now it's in a different location

00:02:16.910 --> 00:02:18.520
<v Michael Kennedy>in terms of an internal URL.

00:02:18.810 --> 00:02:21.400
<v Michael Kennedy>And so it's gonna like find those pieces and put it together.

00:02:21.610 --> 00:02:24.940
<v Michael Kennedy>So I ran across this thing called Traefik Manager.

00:02:25.560 --> 00:02:26.680
<v Michael Kennedy>Are you familiar with Traefik Manager?

00:02:27.100 --> 00:02:28.260
<v Calvin Hendryx-Parker>I'm not familiar with Traefik Manager.

00:02:28.340 --> 00:02:29.360
<v Calvin Hendryx-Parker>So I don't know about you.

00:02:29.680 --> 00:02:32.500
<v Calvin Hendryx-Parker>Yeah, anyone who's ever used Kubernetes is using some kind of reverse proxy.

00:02:32.960 --> 00:02:34.300
<v Calvin Hendryx-Parker>Yeah, this would be, yeah, exactly.

00:02:34.390 --> 00:02:36.420
<v Michael Kennedy>I think Traefik might be the most popular for that.

00:02:37.220 --> 00:02:39.080
<v Michael Kennedy>It's not the one we're using for Python Bytes.

00:02:39.400 --> 00:02:41.400
<v Michael Kennedy>I'll say a bit more about that in a second, but yeah.

00:02:41.580 --> 00:02:46.820
<v Michael Kennedy>So this Traefik manager is a visualization dashboard for your Traefik server.

00:02:47.040 --> 00:02:54.880
<v Michael Kennedy>And if Traefik is your front end server, your reverse proxy, whatever you call it, it is the one choke point that all Traefik is going through.

00:02:54.880 --> 00:02:57.540
<v Michael Kennedy>So it's a really good place to report on how things are going.

00:02:57.580 --> 00:03:00.200
<v Michael Kennedy>Of course, besides CDNs, which are, you know, their own deal.

00:03:00.480 --> 00:03:06.540
<v Michael Kennedy>But this is a really nice looking UI that you can, it gives you all sorts of information.

00:03:07.180 --> 00:03:09.820
<v Michael Kennedy>How many requests, how many routes do you got?

00:03:09.900 --> 00:03:11.140
<v Michael Kennedy>How many services is it serving?

00:03:11.860 --> 00:03:13.280
<v Michael Kennedy>What's the Traefik?

00:03:13.660 --> 00:03:14.980
<v Michael Kennedy>What media are you hosting?

00:03:15.980 --> 00:03:16.780
<v Michael Kennedy>What else we got?

00:03:17.140 --> 00:03:21.260
<v Michael Kennedy>Route map, logs, CrowdSec for security, I presume,

00:03:21.400 --> 00:03:22.600
<v Calvin Hendryx-Parker>TLS options, certificates.

00:03:23.319 --> 00:03:23.940
<v Calvin Hendryx-Parker>All of that.

00:03:24.040 --> 00:03:28.080
<v Michael Kennedy>You can just see this live as a web dashboard over top of your infrastructure.

00:03:28.230 --> 00:03:28.840
<v Calvin Hendryx-Parker>It's really slick.

00:03:29.120 --> 00:03:30.140
<v Calvin Hendryx-Parker>I think that's pretty slick, right?

00:03:30.170 --> 00:03:30.520
<v Michael Kennedy>What do you think?

00:03:30.780 --> 00:03:44.600
<v Calvin Hendryx-Parker>I think having that available just at your fingertips to be able to diagnose, triage, understand patterns, especially when something goes wrong, having more bandwidth of data coming in as the human making some decisions is better and this

00:03:44.670 --> 00:03:56.200
<v Michael Kennedy>looks wonderful for that yeah it looks great and it shows you how to run it just as an installer but also on docker podman and like on bare metal Linux and so on yeah it's you can even edit like static

00:03:56.380 --> 00:04:05.499
<v Michael Kennedy>files and a few other things so i think this is pretty cool so i saw that i thought oh let me cover this i'm like well and i looked into Traefik a little bit and Traefik is great for a certain

00:04:05.520 --> 00:04:11.780
<v Michael Kennedy>class of problems, the ones I described at the opening, but it's not a true just front end thing.

00:04:12.660 --> 00:04:27.100
<v Michael Kennedy>Like for example, it doesn't serve static files at all, right? Or certain things. So it's like a little bit, you can, a lot of people could use it, but not everybody. Well, what are the other options? Well, the other options are Nginx, right? Which is what we use for Python bytes. I have an

00:04:27.440 --> 00:04:40.060
<v Michael Kennedy>insane amount of Nginx config files. There are 2,200 lines of Nginx config powering 33 containers on my server oh my goodness i'm a little committed to nginx at this point and unlike many other

00:04:40.300 --> 00:04:50.000
<v Michael Kennedy>things you can't run another server like Traefik or caddy which i'm going to talk about next to it because they all need port 80 like you can't even set up tls until you can get to you know what i

00:04:50.100 --> 00:04:55.800
<v Calvin Hendryx-Parker>mean like it's uh so it's a really hard cut over basically is what i'm saying so right now i'm

00:04:55.940 --> 00:05:01.940
<v Michael Kennedy>sticking with nginx and like well is there something like this for nginx because that is a full on front end story, right?

00:05:02.360 --> 00:05:04.920
<v Michael Kennedy>So I will introduce you to Nginx UI.

00:05:05.580 --> 00:05:06.820
<v Michael Kennedy>Guess is how you would pronounce it?

00:05:07.220 --> 00:05:08.720
<v Michael Kennedy>Yet another Nginx web UI.

00:05:09.200 --> 00:05:09.620
<v Michael Kennedy>There's others.

00:05:10.120 --> 00:05:10.760
<v Michael Kennedy>It's not the only one.

00:05:10.920 --> 00:05:12.320
<v Michael Kennedy>Yes, it's not the only one, no.

00:05:12.600 --> 00:05:16.360
<v Michael Kennedy>But you can go to the demo, which is very confusing 'cause it just takes you here and says, you gotta log in.

00:05:16.380 --> 00:05:17.760
<v Michael Kennedy>I'm like, huh, what do you think that's about?

00:05:18.040 --> 00:05:19.400
<v Michael Kennedy>Go back to the page that took you the demo.

00:05:19.540 --> 00:05:20.500
<v Michael Kennedy>Where's the username and password?

00:05:20.840 --> 00:05:21.900
<v Michael Kennedy>Nah, but I'm a hacker.

00:05:22.300 --> 00:05:24.280
<v Michael Kennedy>I didn't know if that told you in my spare time.

00:05:25.180 --> 00:05:26.040
<v Michael Kennedy>Admin, admin, admin.

00:05:26.500 --> 00:05:29.760
<v Michael Kennedy>You may be a hacker too because let's see if that gets us in.

00:05:29.880 --> 00:05:30.400
<v Michael Kennedy>Sure enough.

00:05:30.900 --> 00:05:32.160
<v Michael Kennedy>Sure enough, login successful.

00:05:32.870 --> 00:05:33.280
<v Michael Kennedy>There we go.

00:05:33.460 --> 00:05:36.260
<v Michael Kennedy>So this is actually even better than the Traefik one, I think.

00:05:36.360 --> 00:05:37.780
<v Michael Kennedy>So it shows you stuff about your server.

00:05:38.100 --> 00:05:42.100
<v Michael Kennedy>This is your Linux machine running, or Docker machine, running Nginx.

00:05:42.520 --> 00:05:47.400
<v Michael Kennedy>The CPU stats, network stats, disc IO, all that kind of, which is really cool, right?

00:05:47.700 --> 00:05:58.640
<v Michael Kennedy>Then you get over to Nginx and it shows you the max number of requests per second you can handle, the max concurrent connections, the request per connection, which is like these are just like kind of stats.

00:05:58.910 --> 00:06:01.540
<v Michael Kennedy>And it shows you where the process is working.

00:06:01.650 --> 00:06:06.400
<v Michael Kennedy>Is it cache processes, worker process, et cetera, alive connections, all this stuff.

00:06:06.520 --> 00:06:07.020
<v Michael Kennedy>That's really cool.

00:06:07.270 --> 00:06:08.280
<v Michael Kennedy>It lets you manage your sites.

00:06:08.330 --> 00:06:14.840
<v Michael Kennedy>Now, at least the Nginx one, I think actually the Traefik one as well, but the Nginx one lets you edit your config.

00:06:15.440 --> 00:06:23.260
<v Michael Kennedy>You can go over your manage sites here and you can say, I could even add a site, but I could go over here and edit the prime sponsor, whatever that is.

00:06:23.780 --> 00:06:27.880
<v Michael Kennedy>But you can go and put in, just start typing away in your Nginx config here.

00:06:28.300 --> 00:06:29.660
<v Michael Kennedy>Set your upstream, set your server.

00:06:30.040 --> 00:06:33.960
<v Michael Kennedy>You can view the logs, which is pretty sweet, and all kinds of stuff.

00:06:34.140 --> 00:06:36.880
<v Michael Kennedy>Look at the certificates, configs, upstreams.

00:06:37.100 --> 00:06:37.800
<v Michael Kennedy>This one makes me nervous.

00:06:38.200 --> 00:06:39.540
<v Michael Kennedy>A little terminology just goes to your server.

00:06:39.680 --> 00:06:40.360
<v Michael Kennedy>I'm not a fan of that.

00:06:40.540 --> 00:06:41.600
<v Michael Kennedy>Like, that should be turned off.

00:06:41.900 --> 00:06:42.620
<v Michael Kennedy>Just, there's no need.

00:06:42.680 --> 00:06:43.320
<v Michael Kennedy>There's no need for that.

00:06:43.420 --> 00:06:44.700
<v Michael Kennedy>A little bit of security risk there.

00:06:45.060 --> 00:06:45.520
<v Michael Kennedy>You know what?

00:06:45.540 --> 00:06:46.100
<v Michael Kennedy>I'm sure it's fine.

00:06:46.440 --> 00:06:48.600
<v Michael Kennedy>Everyone was just looking like, yeah, it would be mean to mess with this.

00:06:48.800 --> 00:06:53.560
<v Calvin Hendryx-Parker>It kind of reminds me of the old days of Webman, which was riddled with security problems.

00:06:53.660 --> 00:06:55.040
<v Michael Kennedy>like a C panel or something.

00:06:55.380 --> 00:06:55.840
<v Michael Kennedy>Yeah, right.

00:06:56.060 --> 00:06:56.160
<v Michael Kennedy>Exactly.

00:06:57.020 --> 00:06:57.100
<v Michael Kennedy>Yeah.

00:06:57.280 --> 00:07:00.040
<v Michael Kennedy>So anyway, what's cool though is I believe this as well.

00:07:00.280 --> 00:07:04.920
<v Michael Kennedy>Certainly the prior one, you can run it in Docker just as a sidecar Docker container.

00:07:05.000 --> 00:07:08.180
<v Michael Kennedy>So it's just in your Docker cluster set up there, which I think is pretty cool.

00:07:08.500 --> 00:07:10.020
<v Michael Kennedy>So this is one that looks pretty interesting.

00:07:10.080 --> 00:07:11.980
<v Michael Kennedy>And finally, I'm a fan of Caddy.

00:07:12.400 --> 00:07:15.440
<v Michael Kennedy>If I didn't have 2,000 lines of config, I'd have to migrate.

00:07:15.780 --> 00:07:16.240
<v Michael Kennedy>I'm starting over.

00:07:16.300 --> 00:07:17.320
<v Michael Kennedy>I'm pretty sure I would do Caddy.

00:07:17.460 --> 00:07:18.060
<v Michael Kennedy>Caddy looks great.

00:07:18.180 --> 00:07:19.180
<v Calvin Hendryx-Parker>I've never used Caddy.

00:07:19.340 --> 00:07:19.900
<v Calvin Hendryx-Parker>No, I've never used.

00:07:19.960 --> 00:07:20.580
<v Calvin Hendryx-Parker>I mean, I've heard of it.

00:07:20.640 --> 00:07:21.180
<v Calvin Hendryx-Parker>I've never used it.

00:07:21.320 --> 00:07:22.120
<v Calvin Hendryx-Parker>I've been more on.

00:07:22.220 --> 00:07:25.960
<v Calvin Hendryx-Parker>We've been using Traefik quite a bit, and we historically use a lot of Nginx.

00:07:26.280 --> 00:07:27.180
<v Michael Kennedy>Yeah, same.

00:07:27.470 --> 00:07:29.680
<v Michael Kennedy>I mean, Nginx and then like, no bad Traefik.

00:07:29.900 --> 00:07:35.080
<v Michael Kennedy>But, so this is really cool because it's config file is supposed to be like, just what you need.

00:07:35.200 --> 00:07:36.460
<v Michael Kennedy>It's got kind of a Python vibe.

00:07:36.660 --> 00:07:40.640
<v Michael Kennedy>Like, yeah, you don't need a namespace, a static class, and a static main void.

00:07:40.710 --> 00:07:43.840
<v Michael Kennedy>Like you could just, could we just put the thing that does the thing in there?

00:07:44.130 --> 00:07:44.800
<v Michael Kennedy>Which is really cool.

00:07:44.930 --> 00:07:54.700
<v Michael Kennedy>And it also does auto, automatically does, it's in order to get SSL, All you got to do is turn it on and have the IP address pointing there and you make a request to it.

00:07:54.700 --> 00:07:56.820
<v Michael Kennedy>And it just does that, manages it like that.

00:07:56.980 --> 00:07:59.560
<v Michael Kennedy>So certainly a very neat setup.

00:07:59.620 --> 00:08:01.760
<v Michael Kennedy>I feel like this is a pretty modern server.

00:08:02.280 --> 00:08:06.540
<v Michael Kennedy>So with that said, there's also CATI UI, which is another one of these.

00:08:06.780 --> 00:08:07.500
<v Michael Kennedy>Of course there is, right?

00:08:07.740 --> 00:08:08.500
<v Michael Kennedy>Because why wouldn't there be?

00:08:08.780 --> 00:08:13.540
<v Michael Kennedy>Let's say you look at like a dashboard and then logs and like metrics for your server and so on.

00:08:13.600 --> 00:08:17.280
<v Michael Kennedy>It's like so dark mode that even the text on a black background is mostly dark.

00:08:17.520 --> 00:08:30.180
<v Calvin Hendryx-Parker>So I wonder if there's not a limited audience for these UIs though, because if you're at a certain level, you're gonna have Prometheus, Grafana, and all these kinds of metrics streaming into a centralized observability platform

00:08:30.540 --> 00:08:35.400
<v Calvin Hendryx-Parker>where you can now correlate and trace, but you're still only getting a view from the web server.

00:08:35.700 --> 00:08:40.360
<v Calvin Hendryx-Parker>I didn't know, did you see if they include any kind of web request tracing in there?

00:08:40.360 --> 00:08:41.460
<v Calvin Hendryx-Parker>It could only go so far.

00:08:41.700 --> 00:08:43.240
<v Michael Kennedy>I didn't see any.

00:08:43.580 --> 00:08:44.640
<v Michael Kennedy>Yeah. - No, I didn't see any.

00:08:44.900 --> 00:08:52.960
<v Michael Kennedy>I think that this is targeted at the Home Assistant crew, The one website, small project crew.

00:08:53.430 --> 00:09:02.320
<v Michael Kennedy>Although the Traefik one talks about a lot of auto discovery of services and that kind of stuff, which speaks not to it.

00:09:02.680 --> 00:09:06.520
<v Michael Kennedy>So the Traefik one seems maybe to be the most pro of them all.

00:09:06.720 --> 00:09:07.220
<v Michael Kennedy>Very cool.

00:09:07.660 --> 00:09:08.660
<v Michael Kennedy>Anyway, there you go.

00:09:09.350 --> 00:09:12.020
<v Michael Kennedy>If you want a UI for your front-end web server, why not?

00:09:12.420 --> 00:09:13.000
<v Michael Kennedy>You can get it.

00:09:13.140 --> 00:09:13.460
<v Michael Kennedy>You can get it.

00:09:13.480 --> 00:09:16.420
<v Calvin Hendryx-Parker>All right, well, let's head back into Django world.

00:09:17.000 --> 00:09:28.360
<v Calvin Hendryx-Parker>in the Django world, there's a brand new release that released, I think it's like literally, I'll dive in, we're at Wagtail land now. Wagtail did an 8.0 release today. So this is very, very

00:09:28.760 --> 00:09:40.040
<v Calvin Hendryx-Parker>hot news. If we go into the Wagtail repository, take a look at the releases, you'll see here eight, six hours ago, 8.0 release for Wagtail. So the Wagtail team has been very busy. They have not

00:09:40.090 --> 00:09:49.620
<v Calvin Hendryx-Parker>even completed the release blog for this yet, which will come out tomorrow, depending on when this comes out, you should see that news tomorrow. But if you're a Wagtail user, you can rejoice that

00:09:49.620 --> 00:10:01.860
<v Calvin Hendryx-Parker>there is the 8.0 version out right now. Some new stuff that is inside of Wagtail. We've got custom base page models are now supported. So projects aren't locked into subclassing Wagtail's page as

00:10:02.060 --> 00:10:15.460
<v Calvin Hendryx-Parker>shipped. So you get a little more flexibility to having your own custom base page models. I think that's going to be a big win for folks who want to do more customized things and not feel so constrained. The V3 REST API handles both read and write operations for the CMS,

00:10:16.300 --> 00:10:28.360
<v Calvin Hendryx-Parker>so that gives a lot more flexibility to the API and be able to have a fully headless wag tail if you wanted. There's a global registry for permission policies plus full customizability for the remaining page views via the

00:10:28.520 --> 00:10:39.420
<v Calvin Hendryx-Parker>page view set. Another big one to watch out for if you're migrating from prior to eight, so in the seven or the six range, AVIF and WebP images are no longer are going to be auto-converted to PNG by default.

00:10:40.030 --> 00:10:43.420
<v Calvin Hendryx-Parker>So that's something to watch out for on Upgrade if you're depending on that specific behavior.

00:10:43.900 --> 00:10:49.820
<v Calvin Hendryx-Parker>They're going to be treated more natively by the platform, but you may have some special behaviors because you were depending on the auto-conversion.

00:10:50.340 --> 00:10:52.940
<v Calvin Hendryx-Parker>I don't know how to feel about WebP images.

00:10:53.130 --> 00:10:57.080
<v Calvin Hendryx-Parker>You know, I like to be on the cut edge of these things, but I just feel like, I don't know, I feel like they're everywhere though.

00:10:57.500 --> 00:11:00.140
<v Calvin Hendryx-Parker>I more and more see them all the major sites.

00:11:00.520 --> 00:11:03.720
<v Michael Kennedy>Yeah, almost all the ones on Python by Set.fm are WebP.

00:11:04.060 --> 00:11:16.020
<v Michael Kennedy>I went through the Google page optimization stuff and you know like lighthouse is that what it's called yeah all those things right yeah all those things it's like you need to upgrade to webp you need to upgrade i'm like fine i will upgrade to

00:11:16.140 --> 00:11:29.360
<v Michael Kennedy>webp and i went through it and yeah they i do think it's actually a slightly a little bit better like is it as big of a deal as they make uh probably not but sometimes it's really nice and and so on it does seem to work pretty seamlessly except for if i go to youtube like for example if

00:11:29.360 --> 00:11:38.520
<v Michael Kennedy>i want to change the thumbnail for this live version of our recording yeah on a google property it will not allow me to upload a web P file because it says it's not an image.

00:11:38.600 --> 00:11:39.640
<v Michael Kennedy>I'm like, I'm not surprised.

00:11:39.940 --> 00:11:40.280
<v Michael Kennedy>It's Google.

00:11:42.880 --> 00:11:52.320
<v Michael Kennedy>So there's places like that, like, or if you try to set it as the poster for your podcast, a lot of the podcast apps can't display web P even though the platform can't, like, there's just like a little hang up.

00:11:52.580 --> 00:11:56.520
<v Michael Kennedy>I imagine though it's like, there are people like, I want web P stop turning it back into something else.

00:11:56.630 --> 00:11:57.600
<v Michael Kennedy>I put it there on purpose.

00:11:58.140 --> 00:11:58.960
<v Michael Kennedy>Cause Google told me to.

00:11:59.140 --> 00:11:59.720
<v Calvin Hendryx-Parker>Cause you did it.

00:11:59.720 --> 00:12:00.320
<v Calvin Hendryx-Parker>Cause this is optimized.

00:12:00.510 --> 00:12:13.920
<v Calvin Hendryx-Parker>It was funny because a lot of platforms are just a little behind the times on what image because obviously they're trying to protect their platforms and not allow random images or random not images to be uploaded as images so i think a little uh thumbnail.exe for example right

00:12:14.110 --> 00:12:23.880
<v Calvin Hendryx-Parker>right it's a little peer pressure to get folks to do the right thing would probably go a long way so google google if you're listening go update your uh application to support webp for that exactly

00:12:24.320 --> 00:12:29.620
<v Michael Kennedy>youtube team just yeah add a star.webp in there come on let's do it so and more importantly in

00:12:29.400 --> 00:12:40.980
<v Calvin Hendryx-Parker>in this release, there are some five major security fixes. The page admin API restrictions, document identification by a SHA-1 hash, the descendant collections and documents and images

00:12:41.240 --> 00:12:50.500
<v Calvin Hendryx-Parker>API, and the snippet copy permissions, and the page translation endpoint have all had fixes. I highlighted them here on the screen, but you can go see those in the release notes. They're called

00:12:50.640 --> 00:13:04.800
<v Calvin Hendryx-Parker>out with the big security fix prefix there. Also of note is formalized. They now have formalized django 6.1 support and the ci now runs with uh uv and a lock file so the uv is takeover is it's

00:13:04.800 --> 00:13:15.620
<v Calvin Hendryx-Parker>been successful in the wagtail community very cool yeah wagtail is neat i'm glad it's getting the love and april that's a big release yeah and i think this will tie in with your later segment the

00:13:16.180 --> 00:13:27.020
<v Calvin Hendryx-Parker>the intentionality and the sophistication by which they tie themselves to specific releases so that you know you are well supported by the community, by the bug fixes, by the maintainers.

00:13:27.180 --> 00:13:29.660
<v Calvin Hendryx-Parker>All that lines up really, really well in the Wagtail community.

00:13:29.960 --> 00:13:33.040
<v Calvin Hendryx-Parker>And we'll talk about it a little more when you get into the Django stuff as well.

00:13:33.160 --> 00:13:33.420
<v Calvin Hendryx-Parker>Absolutely.

00:13:33.920 --> 00:13:37.880
<v Michael Kennedy>Well, before we get to that, though, maybe a quick thanks to our sponsor.

00:13:38.120 --> 00:13:38.700
<v Michael Kennedy>That sounds awesome.

00:13:39.140 --> 00:13:39.300
<v Michael Kennedy>Yeah.

00:13:39.390 --> 00:13:45.320
<v Michael Kennedy>So thank you, Pydantic and thank you, Logfire, their observability platform from Pydantic.

00:13:45.640 --> 00:13:46.420
<v Michael Kennedy>So here's the situation.

00:13:46.760 --> 00:13:49.080
<v Michael Kennedy>Your AI agent failed at 2 a.m.

00:13:49.380 --> 00:13:51.760
<v Michael Kennedy>Was it the model, a tool call, the database?

00:13:52.240 --> 00:13:55.520
<v Michael Kennedy>Most observability tools can't tell you because they only see part of the stack.

00:13:55.860 --> 00:13:57.560
<v Michael Kennedy>Pydantic Logfire sees all of it.

00:13:57.700 --> 00:14:00.820
<v Michael Kennedy>One trace across all your agents, LLMs, APIs, and databases.

00:14:01.320 --> 00:14:04.880
<v Michael Kennedy>Down to the infrastructure, services, Kubernetes, as well as hosts.

00:14:05.200 --> 00:14:09.060
<v Michael Kennedy>It's built on open telemetry with SDKs for Python, TypeScript, and Rust.

00:14:09.330 --> 00:14:11.760
<v Michael Kennedy>And it works with any hotel compatible language.

00:14:12.180 --> 00:14:16.680
<v Michael Kennedy>Every prompt, token count, cost right in your vector searches and API calls.

00:14:16.960 --> 00:14:20.800
<v Michael Kennedy>You query everything with a Postgres compatible SQL language.

00:14:21.320 --> 00:14:22.980
<v Michael Kennedy>So super easy to do.

00:14:23.390 --> 00:14:24.880
<v Michael Kennedy>You get reports and slice and dice them.

00:14:25.280 --> 00:14:29.800
<v Michael Kennedy>And your coding agent can get there through the Logfire MCP server.

00:14:30.060 --> 00:14:30.900
<v Michael Kennedy>So stop guessing.

00:14:31.300 --> 00:14:31.820
<v Michael Kennedy>Read the trace.

00:14:32.280 --> 00:14:33.960
<v Michael Kennedy>Once you have it installed, you'll have the trace, right?

00:14:34.500 --> 00:14:35.120
<v Michael Kennedy>Logfire AI.

00:14:35.380 --> 00:14:37.560
<v Michael Kennedy>AI, it's still just engineering.

00:14:37.920 --> 00:14:40.920
<v Michael Kennedy>I'm actually going to close out the show with a little sidebar on that.

00:14:41.060 --> 00:14:43.980
<v Michael Kennedy>But visit pythonbytes.fm/logfire today and sign up.

00:14:44.060 --> 00:14:45.760
<v Michael Kennedy>You'll get 10 million records for free every month.

00:14:45.960 --> 00:15:00.360
<v Michael Kennedy>no card acquired. And we talked about last time, you can even click the onboard your project with your coding agent, which instantly copies a markdown block. You just paste into cloud or codex and it will go on it. I'm on it. You're going to have a log fire in your app. So give me 10

00:15:00.470 --> 00:15:03.180
<v Michael Kennedy>minutes. So thank you to Pydantic for supporting the show.

00:15:03.320 --> 00:15:06.580
<v Calvin Hendryx-Parker>And count feature. I think they're downplaying that. They need to put that front and center.

00:15:06.940 --> 00:15:07.700
<v Calvin Hendryx-Parker>That's going to be a big deal.

00:15:07.980 --> 00:15:10.200
<v Michael Kennedy>Yeah. That's the one that you all are chasing, right?

00:15:10.640 --> 00:15:18.940
<v Calvin Hendryx-Parker>Yeah, totally right now. So I don't want to turn this into a full segment, but I think that There's a lot to be said for having that just right out of the box with their tools.

00:15:19.440 --> 00:15:19.880
<v Calvin Hendryx-Parker>So very cool.

00:15:19.990 --> 00:15:23.120
<v Calvin Hendryx-Parker>Well, thanks Pydantic Logfire for being a sponsor.

00:15:23.520 --> 00:15:27.780
<v Calvin Hendryx-Parker>This is the one non-webby thing on here, but could have a web implication.

00:15:28.340 --> 00:15:34.860
<v Calvin Hendryx-Parker>So the Python Software Foundation has announced RISC-V support is now officially supported by CPython.

00:15:35.000 --> 00:15:36.840
<v Calvin Hendryx-Parker>Why would anyone care?

00:15:37.780 --> 00:15:38.600
<v Calvin Hendryx-Parker>So I'll get into that.

00:15:38.900 --> 00:15:45.320
<v Calvin Hendryx-Parker>So RISC-V is a CPU architecture, and it's technically so important fits here.

00:15:45.400 --> 00:15:48.000
<v Calvin Hendryx-Parker>It's now a tier three platform under PEP 11.

00:15:48.260 --> 00:15:57.720
<v Calvin Hendryx-Parker>So the rules for when they build, what they build, how they support, fast-summing gets prioritized for fixes, all comes into play when saying it's a tier three platform.

00:15:57.840 --> 00:16:00.100
<v Calvin Hendryx-Parker>But it does mean someone's watching and someone does care.

00:16:00.700 --> 00:16:03.080
<v Calvin Hendryx-Parker>So this is specifically for 64-bit Linux.

00:16:03.780 --> 00:16:16.660
<v Calvin Hendryx-Parker>So that means that if you've got single board computers, kind of like Raspberry Pis, but they're running alternate architectures like RISC-V, which there's quite a few of those out there on the market right now, you can now depend on there being a Python

00:16:16.980 --> 00:16:28.600
<v Calvin Hendryx-Parker>build that will run on your architecture and not having it be kind of a maybe it'll work. So this opens up a lot of things in like maybe the IoT space, the home automation space. There's a lot of

00:16:28.780 --> 00:16:41.360
<v Calvin Hendryx-Parker>at-edge computing applications here where now Python can be a number one potentially choice for the coding, application building, deploying at edge, and you're not relying on just maybe lower

00:16:41.470 --> 00:16:53.520
<v Calvin Hendryx-Parker>level languages. So hopefully this opens up some of that IRT space to other folks. So yeah, like the RISC-V is an open architecture that anyone can implement, unlike the x86 and ARM, which are like

00:16:53.820 --> 00:17:05.819
<v Calvin Hendryx-Parker>closed. But its market is projected to quadruple by 2032. So we expect to see more news about RISC-V of architectures and processors, especially given all the hype around GPUs and things like that

00:17:05.839 --> 00:17:16.199
<v Calvin Hendryx-Parker>right now. So what changes? The push now maintained with a compatibility target. CPython changes are going to be less likely to quietly break it. That means that they got to take care of it. Someone's

00:17:16.280 --> 00:17:27.639
<v Calvin Hendryx-Parker>basically watching. What you don't get, there are no Python.org installers yet and no binary wheel parity for native extensions. So if you've got an extension that depends on a C compiled or a

00:17:27.660 --> 00:17:38.080
<v Calvin Hendryx-Parker>Rust compiled binary piece that's still on you to compile and enroll your own. But at least this is a step in the right direction. And if their market share is going to quadruple, it's nice to see

00:17:38.220 --> 00:17:43.300
<v Calvin Hendryx-Parker>Python taking proactive measures to ensure we have compatibility there. See what else we got in here.

00:17:43.660 --> 00:17:53.959
<v Calvin Hendryx-Parker>Yeah. The one thing that folks may also think would be happening is, for example, you're familiar with SP32 boards. If you do any kind of home automation or any kind of like hacking on hardware

00:17:54.060 --> 00:18:07.560
<v Calvin Hendryx-Parker>or IoT. You've probably heard of the SP32 platform or the Raspberry pypyco, Pico2 platform. Those are RISC-V processors, but they are not 64-bit Linux RISC processors. So there's not necessarily support

00:18:07.780 --> 00:18:19.060
<v Calvin Hendryx-Parker>yet for those embedded processors. You're still going to want to use MicroPython or CircuitPython for those kinds of applications. But if you're using something like the Vision 5 board, there's

00:18:19.060 --> 00:18:27.580
<v Calvin Hendryx-Parker>a couple other boards out there on the market that are more like Raspberry Pis. You'll now have support. You can embed those, put them at the edge. There's reasons why you may do that. For example,

00:18:27.840 --> 00:18:40.060
<v Calvin Hendryx-Parker>costs, supply, demand, power, efficiency, energy usage, a lot of special cases here. But again, I think it's kind of exciting news. I'm a nerd when it comes to like hardware and architectures,

00:18:40.210 --> 00:18:50.439
<v Calvin Hendryx-Parker>and I know not everyone cares, but it does mean you could run Django on a RISC-V processor now reliably and have releases out there that will guarantee to work. So that's what the news is

00:18:50.460 --> 00:19:01.240
<v Michael Kennedy>the risk five i love it yeah that's really cool it's easy to think okay mac Linux windows arm x86 that's what we got to support right but there's a bunch of little little tiny devices exactly

00:19:01.710 --> 00:19:13.680
<v Michael Kennedy>we all run on like here's my 25 esp32 if it were 64 then i'd be even more excited i run circuit python on it but yeah the ability to reach all these little so many little niche things

00:19:14.000 --> 00:19:22.880
<v Calvin Hendryx-Parker>well and there's been recently there's been shortage of raspberry pi vives for example So I think that helps with the supply chain issues potentially.

00:19:23.540 --> 00:19:27.540
<v Calvin Hendryx-Parker>And again, from power and efficiency, we see this thing quadrupling.

00:19:27.810 --> 00:19:29.040
<v Calvin Hendryx-Parker>We better make sure Python's there.

00:19:29.320 --> 00:19:31.400
<v Michael Kennedy>So I'm excited to see the Python community making that happen.

00:19:31.480 --> 00:19:31.760
<v Michael Kennedy>As well.

00:19:32.340 --> 00:19:32.700
<v Michael Kennedy>I'm as well.

00:19:33.080 --> 00:19:37.120
<v Michael Kennedy>My experience working with effectively MicroPython, it's super cool in the language.

00:19:37.320 --> 00:19:39.960
<v Michael Kennedy>It's Python, but there's a lot of stuff like, you want this library?

00:19:40.280 --> 00:19:41.180
<v Michael Kennedy>No, no, no, no, no.

00:19:41.230 --> 00:19:41.700
<v Michael Kennedy>You don't get that.

00:19:41.910 --> 00:19:45.920
<v Michael Kennedy>You get something that looks a little bit like it and it sort of works like it, but it's really tricky.

00:19:46.690 --> 00:19:48.580
<v Michael Kennedy>So the more it can just be the same, the better.

00:19:48.920 --> 00:19:58.760
<v Calvin Hendryx-Parker>Yeah. So I assume this will eventually trickle down into, who knows, maybe MicroPython will kind of just disintegrate, fade into the background, just genuine support for the architecture now that this is here.

00:19:58.920 --> 00:20:06.020
<v Michael Kennedy>Maybe it becomes a little bit like an anaconda. It is the same Python, but it's more ready for you to actually do stuff with. Who knows?

00:20:06.240 --> 00:20:11.440
<v Calvin Hendryx-Parker>Yeah. Yeah. Well, speaking of supporting languages, I think you've got a little mixed up here.

00:20:12.880 --> 00:20:16.040
<v Michael Kennedy>Let's talk about Django. I mean, how do I get this? I'm not even at the conference.

00:20:16.380 --> 00:20:18.180
<v Calvin Hendryx-Parker>I know, but I saw it on there.

00:20:18.260 --> 00:20:22.280
<v Calvin Hendryx-Parker>Like, honestly, I'm glad you're covering this because it's, I think truly, again, important news.

00:20:22.640 --> 00:20:30.680
<v Calvin Hendryx-Parker>It speaks to the volumes of how the communities are supporting the software that we're putting out and the vibrancy and viability of open source.

00:20:31.180 --> 00:20:33.700
<v Michael Kennedy>Yeah, I always feel like with web frameworks, I'm just a flyer.

00:20:33.770 --> 00:20:35.080
<v Michael Kennedy>I'm like, well, let's try this.

00:20:35.380 --> 00:20:38.280
<v Michael Kennedy>Maybe it'll go unsupported in six months or maybe it'll be still going strong.

00:20:38.430 --> 00:20:40.780
<v Michael Kennedy>I don't know, but it's But not with Django.

00:20:40.780 --> 00:20:42.420
<v Michael Kennedy>But exactly, not with Django.

00:20:42.420 --> 00:20:44.440
<v Michael Kennedy>And that has been true for a while.

00:20:44.740 --> 00:20:52.920
<v Michael Kennedy>However, Django's had this sort of multi-stage release where it's like, well, some of the things are just feature releases and they won't last that long.

00:20:53.080 --> 00:20:56.080
<v Michael Kennedy>And others, these are the LTS or long-term versions.

00:20:56.560 --> 00:21:02.080
<v Michael Kennedy>And those, if you install and run on those, then you're going to get guaranteed 12 years at least, right?

00:21:02.360 --> 00:21:08.800
<v Michael Kennedy>Well, the news is, folks, Django is moving to an annual release cycle, part one, by our friend of the show, Carlton Gibson.

00:21:09.200 --> 00:21:14.540
<v Michael Kennedy>and every release is going to be an LTS, three years of supported version.

00:21:14.900 --> 00:21:15.480
<v Michael Kennedy>Super cool, right?

00:21:15.820 --> 00:21:17.540
<v Michael Kennedy>So I think that's really good.

00:21:17.740 --> 00:21:19.000
<v Michael Kennedy>So let me give you all the details.

00:21:20.320 --> 00:21:22.000
<v Michael Kennedy>2028, January, 2028.

00:21:22.220 --> 00:21:26.000
<v Michael Kennedy>It sounds so far away, but probably it'll be here just like, oh, is it 2028?

00:21:26.020 --> 00:21:27.040
<v Michael Kennedy>I guess, here we go.

00:21:27.520 --> 00:21:28.400
<v Michael Kennedy>I'm sure we'll cover it then.

00:21:28.700 --> 00:21:38.820
<v Michael Kennedy>But in 2028 in January, there will be a new version of Django and it won't be called 6.1, 7.0 or whatever the heck it would have otherwise been called.

00:21:38.870 --> 00:21:40.640
<v Michael Kennedy>It's going to be called Django 2028.

00:21:41.060 --> 00:21:43.180
<v Michael Kennedy>So they're moving to calendar versioning

00:21:43.480 --> 00:21:44.580
<v Calvin Hendryx-Parker>instead of semantic versioning.

00:21:44.720 --> 00:21:45.720
<v Calvin Hendryx-Parker>Big fan of calendar versioning.

00:21:45.860 --> 00:21:46.680
<v Michael Kennedy>Yeah, I am too.

00:21:46.940 --> 00:21:48.700
<v Michael Kennedy>I'm generally a fan of calendar versioning as well.

00:21:49.020 --> 00:21:52.380
<v Michael Kennedy>So we're going to have Django 2028, Django 2029.

00:21:52.820 --> 00:21:57.780
<v Michael Kennedy>And you won't be able to play the game like, hey, what year was Django 3 released?

00:21:58.120 --> 00:21:59.540
<v Michael Kennedy>I'm really a Django fan like, yeah.

00:21:59.880 --> 00:22:02.660
<v Michael Kennedy>What year was Django 2028 released?

00:22:02.780 --> 00:22:04.660
<v Michael Kennedy>Like, I'll tell you what, I bet it was 2028.

00:22:04.980 --> 00:22:05.340
<v Michael Kennedy>Pretty amazing.

00:22:05.470 --> 00:22:06.360
<v Michael Kennedy>So that's also helpful.

00:22:06.560 --> 00:22:10.400
<v Michael Kennedy>Kind of give you a sense of like, oh, we're running on 2026 and it's 2031.

00:22:10.660 --> 00:22:12.140
<v Michael Kennedy>This is probably not good, folks.

00:22:12.800 --> 00:22:13.740
<v Michael Kennedy>It's probably not good.

00:22:13.950 --> 00:22:15.880
<v Michael Kennedy>So it can also kind of be a little bit of a marker.

00:22:16.060 --> 00:22:16.220
<v Michael Kennedy>All right.

00:22:16.290 --> 00:22:21.040
<v Michael Kennedy>So every release gets one-year mainstream bug fixes, followed by two years of security and data loss fixes.

00:22:21.420 --> 00:22:25.520
<v Michael Kennedy>The new release to support the last three years of Python versions.

00:22:25.820 --> 00:22:30.880
<v Michael Kennedy>So there's this interchange of support guarantees with Python and the next Python release during its first year.

00:22:31.160 --> 00:22:32.940
<v Michael Kennedy>Calendar version begins in 2028.

00:22:33.780 --> 00:22:40.440
<v Michael Kennedy>And then from there, three Django versions will be supported anytime because years are a year long and it's three years of support.

00:22:40.920 --> 00:22:41.500
<v Michael Kennedy>So there we go.

00:22:41.600 --> 00:22:44.780
<v Michael Kennedy>And most importantly, maybe nothing changes for a year and a half.

00:22:45.160 --> 00:22:49.300
<v Michael Kennedy>So existing commitments like 6.2 LTS still there as they were before.

00:22:49.660 --> 00:22:50.620
<v Michael Kennedy>Anything else you want to add to that?

00:22:51.480 --> 00:22:59.180
<v Calvin Hendryx-Parker>I think these are the kind of promises that the community needs to make so that business understands that this community is serious.

00:22:59.740 --> 00:23:05.540
<v Calvin Hendryx-Parker>If you've got software projects where you are just wishy-washy around what versions you're going to support, what versions it runs on.

00:23:06.360 --> 00:23:10.020
<v Calvin Hendryx-Parker>You see this a little bit in the WordPress community, a lot of it in the WordPress community.

00:23:10.380 --> 00:23:13.100
<v Calvin Hendryx-Parker>There's not hard and fast, like this should run on this version.

00:23:13.600 --> 00:23:16.680
<v Calvin Hendryx-Parker>There's a long-term support that's going to give you bug fixes till this version.

00:23:17.179 --> 00:23:20.760
<v Calvin Hendryx-Parker>It's a little more Wild West, I feel like, over there compared to the Django community.

00:23:21.140 --> 00:23:22.620
<v Calvin Hendryx-Parker>I think I can make that as a fair statement.

00:23:22.920 --> 00:23:27.220
<v Calvin Hendryx-Parker>The Django community is already committed to two long-term supports at any point in time.

00:23:27.440 --> 00:23:29.860
<v Calvin Hendryx-Parker>So like right now we've got 5.2 and 6.2 will be coming up.

00:23:30.320 --> 00:23:34.620
<v Calvin Hendryx-Parker>Now we're saying there's basically gonna be three versions that will be stable, supported, updated.

00:23:34.980 --> 00:23:48.420
<v Calvin Hendryx-Parker>And you have now time in your enterprise planning to make sure you get your software updated to follow the schedule on your schedule and not the emergency schedule because stuff happened and now you gotta deal with it.

00:23:48.600 --> 00:23:57.720
<v Calvin Hendryx-Parker>So I feel like that gives a big boost again to the peace of mind of running Django, running Python and doing this all in production and knowing when things are going to happen.

00:23:57.900 --> 00:23:58.800
<v Calvin Hendryx-Parker>I'm a huge fan.

00:23:59.100 --> 00:24:00.120
<v Calvin Hendryx-Parker>And the calendar version in the boot.

00:24:00.240 --> 00:24:10.220
<v Calvin Hendryx-Parker>I, again, love that because, you know, immediately at a glance, if you're three years out of date and just about ready to run out of end of life on LTS, it's right in the name.

00:24:10.360 --> 00:24:10.860
<v Michael Kennedy>That's right there.

00:24:11.140 --> 00:24:18.200
<v Michael Kennedy>If I were running an organization based on Django, I would probably just be flipping to the new version pretty much mid-January or something like that.

00:24:18.560 --> 00:24:19.500
<v Calvin Hendryx-Parker>I think most do.

00:24:19.980 --> 00:24:23.420
<v Calvin Hendryx-Parker>Yeah, most do, but I think there's a class of org that can't.

00:24:23.660 --> 00:24:23.980
<v Michael Kennedy>Exactly.

00:24:24.210 --> 00:24:24.820
<v Michael Kennedy>Or just won't.

00:24:24.920 --> 00:24:26.180
<v Michael Kennedy>They just have a don't touch it principle.

00:24:26.320 --> 00:24:26.620
<v Michael Kennedy>Is it working?

00:24:26.840 --> 00:24:27.620
<v Michael Kennedy>Just don't touch it.

00:24:27.660 --> 00:24:27.920
<v Michael Kennedy>It's working.

00:24:28.240 --> 00:24:31.820
<v Michael Kennedy>I think this opens up just every February.

00:24:32.520 --> 00:24:33.080
<v Michael Kennedy>Just have a look.

00:24:33.380 --> 00:24:35.440
<v Michael Kennedy>What does it cost to upgrade to the next version of Django?

00:24:35.800 --> 00:24:36.540
<v Michael Kennedy>Do a little automation.

00:24:37.040 --> 00:24:37.660
<v Calvin Hendryx-Parker>Give it a go.

00:24:38.010 --> 00:24:38.500
<v Michael Kennedy>See how it works.

00:24:38.830 --> 00:24:42.960
<v Michael Kennedy>And that gives you a really solid cadence of just staying to date.

00:24:43.270 --> 00:24:46.180
<v Michael Kennedy>And even though there's three-year support, I wouldn't have three-year gaps.

00:24:46.190 --> 00:24:51.640
<v Michael Kennedy>I would have one-year gaps because the number of issues you might run into are, on average, one-third as many.

00:24:51.750 --> 00:24:53.900
<v Michael Kennedy>So it just makes that little staying on top of it easier.

00:24:54.100 --> 00:25:04.440
<v Michael Kennedy>Because if you're five years out and you hear something is something catastrophic happens and you need to update for whatever reason, well, you're all of a sudden like juggling a really big migration project, you know, the house on fire.

00:25:04.790 --> 00:25:05.860
<v Calvin Hendryx-Parker>So get ahead of it.

00:25:06.270 --> 00:25:18.760
<v Calvin Hendryx-Parker>At this point, you can go three years and reliably have your CID pipeline build, you know, once a week, a seven day back off and know you're going to get the security fixes and the peace of mind of always having a patch piece of software that can be automated.

00:25:19.000 --> 00:25:23.640
<v Calvin Hendryx-Parker>Like it should be no hands on to make this now a very secure process.

00:25:23.940 --> 00:25:28.640
<v Michael Kennedy>And if you're doing CI, CD, maybe throw in some knocks and just get different versions or something like that, right?

00:25:28.800 --> 00:25:30.300
<v Michael Kennedy>Like, hey, might as well automate.

00:25:30.940 --> 00:25:32.040
<v Calvin Hendryx-Parker>Yeah, know when they're coming.

00:25:33.140 --> 00:25:34.320
<v Calvin Hendryx-Parker>Get ahead of that curve.

00:25:34.760 --> 00:25:41.000
<v Michael Kennedy>Yeah, we've been doing unit tests in CI against the next version of Django for two months, so probably okay.

00:25:41.000 --> 00:25:47.820
<v Calvin Hendryx-Parker>And that, unless you're doing something really kind of off the wall, Django releases are pretty non-events these days in general, which is awesome.

00:25:48.320 --> 00:25:49.920
<v Calvin Hendryx-Parker>Well, do you have any extra events?

00:25:50.300 --> 00:25:52.940
<v Calvin Hendryx-Parker>Do you have some extra events in here, Michael?

00:25:53.040 --> 00:25:55.260
<v Calvin Hendryx-Parker>So a couple quick item here.

00:25:56.000 --> 00:26:02.220
<v Calvin Hendryx-Parker>This one was interesting because the Python docs now document the time of built-in types.

00:26:02.640 --> 00:26:08.860
<v Calvin Hendryx-Parker>This is not new per se because it's been buried in a wiki that's been aging for years and years and years.

00:26:09.140 --> 00:26:10.220
<v Calvin Hendryx-Parker>But it was never front and center.

00:26:10.360 --> 00:26:11.400
<v Calvin Hendryx-Parker>And so people had to go look it up.

00:26:11.460 --> 00:26:14.740
<v Calvin Hendryx-Parker>It was never associated with the documentation directly.

00:26:14.760 --> 00:26:18.800
<v Calvin Hendryx-Parker>So this is just a migration from wiki to official docs.

00:26:18.940 --> 00:26:24.620
<v Calvin Hendryx-Parker>And so you can see over here on the list operation, a list copy has an O the N complexity.

00:26:25.080 --> 00:26:36.520
<v Calvin Hendryx-Parker>And so if you are evaluating how you might implement specific algorithms, this may matter if you're in a very performance based environment or you're just trying to be more efficient about your coding.

00:26:36.960 --> 00:26:41.100
<v Calvin Hendryx-Parker>These will give you all the hints around complexity and gives it for all the various default types.

00:26:41.480 --> 00:26:44.520
<v Calvin Hendryx-Parker>So you want to know the complexity of a set compared to a dictionary.

00:26:44.940 --> 00:26:46.460
<v Calvin Hendryx-Parker>You can see those things in here.

00:26:46.720 --> 00:26:48.920
<v Calvin Hendryx-Parker>The strings and byte arrays and memories.

00:26:49.090 --> 00:26:50.580
<v Calvin Hendryx-Parker>So all those are basically baked in.

00:26:50.880 --> 00:26:55.540
<v Calvin Hendryx-Parker>You can see in the big O quotation if you're into that kind of thing.

00:26:55.760 --> 00:26:58.380
<v Calvin Hendryx-Parker>I was never a computer science major in college.

00:26:58.770 --> 00:27:01.020
<v Calvin Hendryx-Parker>So I never learned about this until later in life.

00:27:01.680 --> 00:27:05.180
<v Calvin Hendryx-Parker>But that's very helpful because again, kind of next level thinking on that.

00:27:05.960 --> 00:27:07.100
<v Michael Kennedy>Let me add one thing really quick.

00:27:07.100 --> 00:27:08.500
<v Calvin Hendryx-Parker>I saw this as well and this is interesting.

00:27:08.980 --> 00:27:11.780
<v Michael Kennedy>I wish the list would have like find item as well.

00:27:12.200 --> 00:27:12.940
<v Michael Kennedy>I don't think it does though.

00:27:13.040 --> 00:27:15.300
<v Michael Kennedy>because then you could have put that against, or does it?

00:27:15.520 --> 00:27:17.240
<v Michael Kennedy>Because then you can put it against like dictionary or set.

00:27:17.280 --> 00:27:19.560
<v Michael Kennedy>You're like, oh, it's a million times faster in set.

00:27:19.680 --> 00:27:19.900
<v Michael Kennedy>That's weird.

00:27:20.000 --> 00:27:20.680
<v Michael Kennedy>Maybe we should use that.

00:27:21.420 --> 00:27:22.440
<v Calvin Hendryx-Parker>So these are like...

00:27:22.820 --> 00:27:24.020
<v Calvin Hendryx-Parker>Especially for performance optimization.

00:27:24.600 --> 00:27:25.280
<v Michael Kennedy>Yeah, yeah, yeah.

00:27:25.320 --> 00:27:33.220
<v Michael Kennedy>So it could give people a little bit of an idea, but also I think having this listed here might encourage some new contributions to CPython.

00:27:33.600 --> 00:27:36.320
<v Michael Kennedy>For example, find range on there if you can.

00:27:36.540 --> 00:27:36.860
<v Michael Kennedy>There it is.

00:27:37.000 --> 00:27:40.180
<v Michael Kennedy>So what's the length or the min or the max?

00:27:40.740 --> 00:27:42.840
<v Michael Kennedy>Like len or min and max, all those.

00:27:43.040 --> 00:27:43.780
<v Michael Kennedy>is O of N.

00:27:44.680 --> 00:27:46.140
<v Michael Kennedy>Oh, Gitlin is one.

00:27:46.340 --> 00:27:47.000
<v Michael Kennedy>Okay, that's pretty good.

00:27:47.300 --> 00:27:48.060
<v Michael Kennedy>So it does know.

00:27:48.900 --> 00:27:49.840
<v Michael Kennedy>I guess it's not the...

00:27:49.860 --> 00:27:50.520
<v Calvin Hendryx-Parker>It's been around a while.

00:27:50.800 --> 00:27:52.320
<v Michael Kennedy>No, no, but I still think min and max.

00:27:52.460 --> 00:27:56.080
<v Michael Kennedy>So for example, when you create a range, you say, what is the starting value?

00:27:56.260 --> 00:27:57.080
<v Michael Kennedy>What is the N in value?

00:27:57.200 --> 00:27:58.080
<v Michael Kennedy>And what is the step, right?

00:27:58.380 --> 00:27:58.580
<v Michael Kennedy>Yeah.

00:27:58.860 --> 00:28:02.760
<v Michael Kennedy>It should be able to answer O of one what the min and max are, right?

00:28:03.000 --> 00:28:04.540
<v Michael Kennedy>Because it knows where it starts.

00:28:04.640 --> 00:28:05.920
<v Michael Kennedy>It knows whether it's positive or negative.

00:28:06.520 --> 00:28:07.280
<v Michael Kennedy>It was in the arcs.

00:28:07.400 --> 00:28:09.540
<v Michael Kennedy>It's like a field of the object.

00:28:10.020 --> 00:28:21.100
<v Michael Kennedy>So for example, somebody might go, why the heck is that determined by the, like, if I have a million items in my range, why is it a million computations when it could just be just like Len looks up the length? Well, one. Yeah,

00:28:21.260 --> 00:28:30.320
<v Michael Kennedy>it should be oh one. Right. And so I think there might be some like some interesting interplay of performance in the next version of Python for these kinds of things. The other thing I wanted to let

00:28:30.440 --> 00:28:41.960
<v Calvin Hendryx-Parker>everyone know about a friend of Python and the language, Bruce Eccle has released his thinking in Python book. So you can go to, I believe the address is thinkinginpython.com. And the whole

00:28:42.060 --> 00:28:53.320
<v Calvin Hendryx-Parker>book's here. And he's a great author. I mean, he's been famous for doing this kind of work for decades now in multiple communities. And it's Creative Commons, freely readable online. And

00:28:53.420 --> 00:29:03.120
<v Calvin Hendryx-Parker>there's a GitHub with all the examples and solutions in it. But if you're learning Python and you want to know about the insights, idioms, and patterns, this is, I haven't read the book yet because it just released.

00:29:03.710 --> 00:29:08.780
<v Calvin Hendryx-Parker>But I got to imagine knowing the author and everything that's going into this, this must be a great place to start.

00:29:08.980 --> 00:29:10.220
<v Michael Kennedy>Yeah, Bruce does excellent work.

00:29:10.340 --> 00:29:13.460
<v Michael Kennedy>I've read some of his books and he's been on Talk Python before as well

00:29:13.540 --> 00:29:14.160
<v Calvin Hendryx-Parker>and some other panels.

00:29:14.420 --> 00:29:15.080
<v Michael Kennedy>So yeah, very cool.

00:29:15.430 --> 00:29:15.620
<v Calvin Hendryx-Parker>Good job.

00:29:15.760 --> 00:29:16.780
<v Calvin Hendryx-Parker>Been around the community, long time.

00:29:17.540 --> 00:29:18.480
<v Calvin Hendryx-Parker>Michael, you got any extras?

00:29:19.500 --> 00:29:20.160
<v Calvin Hendryx-Parker>I'm feeling a little extra.

00:29:20.620 --> 00:29:22.420
<v Michael Kennedy>So Are you feeling a little extra?

00:29:22.420 --> 00:29:31.060
<v Michael Kennedy>Remember last time we talked about uv and it was those older security builds that were source only, but then I'm like, hey, uv is building them.

00:29:31.060 --> 00:29:31.520
<v Michael Kennedy>That's kind of cool.

00:29:31.880 --> 00:29:32.760
<v Michael Kennedy>Do you want to upgrade them?

00:29:33.270 --> 00:29:35.180
<v Michael Kennedy>But then I did a listing of all of the stuff I had.

00:29:35.180 --> 00:29:40.380
<v Michael Kennedy>I'm like, oh, I've got like a 3.9.3, a 3.94, 3.9.5.

00:29:40.450 --> 00:29:40.820
<v Michael Kennedy>Like, no.

00:29:41.520 --> 00:29:43.140
<v Calvin Hendryx-Parker>I'm kind of scared to see how many I have now.

00:29:43.300 --> 00:29:43.840
<v Michael Kennedy>Yes, exactly.

00:29:44.200 --> 00:29:48.540
<v Michael Kennedy>There's like, there's no scenario where I want like seven versions of 3.9.

00:29:48.610 --> 00:29:50.760
<v Michael Kennedy>I mean, one is enough, certainly of that one.

00:29:50.860 --> 00:29:50.960
<v Michael Kennedy>Right?

00:29:51.120 --> 00:29:57.780
<v Michael Kennedy>So I created this little program, little shell utility you can run using, you can uv run it if you like.

00:29:57.950 --> 00:29:58.260
<v Michael Kennedy>Pretty cool.

00:29:58.420 --> 00:30:06.360
<v Michael Kennedy>And what it does basically is it goes through and it says, find me all of the uv installed pythons and show me which ones are duplicates.

00:30:06.480 --> 00:30:09.380
<v Michael Kennedy>So a duplicate might be 3.9.3 and a 3.9.4.

00:30:09.580 --> 00:30:11.080
<v Michael Kennedy>Like I have two 3.9s, right?

00:30:11.320 --> 00:30:13.880
<v Michael Kennedy>And you can even say, I want to just print them down.

00:30:13.920 --> 00:30:15.260
<v Michael Kennedy>So I only have the latest of each major.

00:30:15.720 --> 00:30:22.320
<v Michael Kennedy>I mean, it's not really a major version, but there's never going to be a three, the four O so I'm going to call 3.8, the eight parts of the major version.

00:30:23.600 --> 00:30:26.060
<v Michael Kennedy>Anyway, cause we can't have a four.

00:30:26.180 --> 00:30:27.080
<v Michael Kennedy>It's too, too traumatic.

00:30:27.500 --> 00:30:29.680
<v Michael Kennedy>So you can just say keep that, or you can say actually keep two.

00:30:29.940 --> 00:30:35.020
<v Michael Kennedy>You could say I want 3.9.3 and 3.9.2, but no more than that as the older ones, right?

00:30:35.400 --> 00:30:37.120
<v Michael Kennedy>Anyway, so you can run that, and I ran that here.

00:30:37.120 --> 00:30:45.500
<v Michael Kennedy>I actually have a little upgrade script that I've run on my computer periodically to upgrade homebrew and that stuff, and then upgrade uv, and then anything that's uv tool installed.

00:30:45.740 --> 00:30:49.340
<v Michael Kennedy>And so now I've added this thing into the mix, and it says pruning UVs pythons.

00:30:49.820 --> 00:30:56.940
<v Michael Kennedy>It says, look, you've got 3.14.5 free threaded version, and you've got 3.14.7 free threaded.

00:30:57.320 --> 00:30:58.220
<v Michael Kennedy>Why don't we drop the last one?

00:30:58.260 --> 00:30:59.600
<v Michael Kennedy>It says you should remove that, for example.

00:30:59.760 --> 00:31:01.000
<v Michael Kennedy>So you just say yes, and it takes away.

00:31:01.300 --> 00:31:02.960
<v Michael Kennedy>So anyway, put that out there for everyone to play with.

00:31:03.040 --> 00:31:03.400
<v Calvin Hendryx-Parker>That's awesome.

00:31:03.500 --> 00:31:05.760
<v Calvin Hendryx-Parker>If you go back to the script, I want to call out something.

00:31:06.220 --> 00:31:09.600
<v Calvin Hendryx-Parker>I absolutely, the very top of your script, you're using the inline dependencies.

00:31:09.700 --> 00:31:09.840
<v Calvin Hendryx-Parker>Yeah, yeah.

00:31:10.220 --> 00:31:11.460
<v Calvin Hendryx-Parker>The uv run magic.

00:31:11.700 --> 00:31:12.720
<v Calvin Hendryx-Parker>I absolutely love.

00:31:12.880 --> 00:31:20.140
<v Calvin Hendryx-Parker>I think if you think about, if you could have gone into Claude Code and said, hey, Claude Code, prune my old versions and given it like your kind of rule set.

00:31:20.580 --> 00:31:24.220
<v Calvin Hendryx-Parker>And it would have run through and used tokens and found all the ones and use more tokens.

00:31:24.620 --> 00:31:26.140
<v Calvin Hendryx-Parker>But here you're giving it a deterministic.

00:31:26.300 --> 00:31:27.020
<v Calvin Hendryx-Parker>This is the way to write.

00:31:27.140 --> 00:31:37.280
<v Calvin Hendryx-Parker>tools for your own agents and use that that inline script i love that i think there's a good example i think of using exactly that that's good now yeah uv run works it just works i love it yeah yeah it

00:31:37.280 --> 00:31:47.380
<v Michael Kennedy>does and if i had dependencies that's where it really shines yeah automatically manage that for me yeah yeah it's wonderful yeah and on my older installs of my uv tool projects it did like lose

00:31:47.580 --> 00:31:59.620
<v Michael Kennedy>track of the virtual environment but apparently in the newer uv installs it will like remap to the like across major versions to like 3.14.3 and 3.14.7, it'll figure out, oh, we can just go to the seven, I believe.

00:32:00.500 --> 00:32:00.720
<v Michael Kennedy>Nice.

00:32:00.920 --> 00:32:08.720
<v Michael Kennedy>Anyway, yeah, so it might be a little bit of a pain after you might have to reinstall a few things on the older virtual environments, but I think it's in the future going to be less painful.

00:32:09.100 --> 00:32:11.380
<v Michael Kennedy>All right, also, very quick AI thing.

00:32:11.800 --> 00:32:13.340
<v Michael Kennedy>We've not done any AI, so I would like that.

00:32:13.360 --> 00:32:14.860
<v Michael Kennedy>It's been an AI-free episode so far.

00:32:15.180 --> 00:32:16.140
<v Michael Kennedy>It has, and this is super quick.

00:32:16.800 --> 00:32:20.640
<v Michael Kennedy>You know, when you think about Olama, I always thought about Olama as for running local models.

00:32:21.060 --> 00:32:21.160
<v Michael Kennedy>Yeah?

00:32:21.400 --> 00:32:21.480
<v Michael Kennedy>Yeah.

00:32:21.560 --> 00:32:23.580
<v Michael Kennedy>Did you know that they have a cloud version?

00:32:23.610 --> 00:32:24.340
<v Michael Kennedy>I did know that.

00:32:24.710 --> 00:32:24.820
<v Michael Kennedy>Yes.

00:32:24.900 --> 00:32:25.900
<v Michael Kennedy>Yeah, of course you do.

00:32:26.840 --> 00:32:27.660
<v Michael Kennedy>I knew you would.

00:32:28.050 --> 00:32:31.880
<v Michael Kennedy>But you can sign up for like $20 a month to get DeepSea, Kimi 3.

00:32:32.030 --> 00:32:33.040
<v Calvin Hendryx-Parker>It's very, very inexpensive.

00:32:33.460 --> 00:32:38.660
<v Michael Kennedy>Yeah, GLM, 5.1, 5.2, all that kind of stuff as a thing you could just add.

00:32:38.660 --> 00:32:46.500
<v Michael Kennedy>So I'm using this to power my Hermes agent, which is really nice, as an alternative to ChatGPT, which also can be in the mix.

00:32:46.660 --> 00:32:48.300
<v Michael Kennedy>So I thought that was pretty interesting.

00:32:48.440 --> 00:32:48.600
<v Calvin Hendryx-Parker>Yeah.

00:32:48.830 --> 00:32:51.040
<v Calvin Hendryx-Parker>Yeah, especially with your ability to run like Kimi K3.

00:32:51.540 --> 00:33:02.060
<v Michael Kennedy>uh the glm five two the big ones uh yeah yeah these things you couldn't run them yourself so i've been doing like generally yeah i mean if you have if you're if your room is loud you might

00:33:02.080 --> 00:33:12.900
<v Calvin Hendryx-Parker>be able to run it but if it's quiet you'll get away with them on the nvidia the spark boxes like if you not not just one but you if you if you daisy chain those things together it will spread

00:33:13.100 --> 00:33:20.680
<v Calvin Hendryx-Parker>the memory across two of them you might be able to get one of these running yeah okay if you have an over $10,000 dedicated local AI machine,

00:33:22.360 --> 00:33:24.660
<v Michael Kennedy>then I consider you a special category.

00:33:24.920 --> 00:33:26.400
<v Michael Kennedy>Anyway, yeah, so people can check that.

00:33:27.020 --> 00:33:28.260
<v Michael Kennedy>Thanks to Jeff Triplett for showing me that.

00:33:28.940 --> 00:33:30.960
<v Calvin Hendryx-Parker>That's a far more cost-effective way of doing it.

00:33:31.720 --> 00:33:33.860
<v Michael Kennedy>Couldn't be able to do this for a while until I break $10,000.

00:33:34.240 --> 00:33:36.760
<v Michael Kennedy>Although I still, I wouldn't hate having a couple of those Spark machines.

00:33:36.820 --> 00:33:37.180
<v Michael Kennedy>Those are cool.

00:33:37.500 --> 00:33:40.200
<v Michael Kennedy>All right, I would like to just go back and just have a little comment here.

00:33:40.260 --> 00:33:43.640
<v Michael Kennedy>And feel free to jump in or not put your hand on the stove.

00:33:43.980 --> 00:33:51.880
<v Michael Kennedy>So we published this to YouTube and got some comments there, some in favor of our position.

00:33:52.040 --> 00:33:54.020
<v Michael Kennedy>Others like, what do you mean CodeWork's not doing?

00:33:54.060 --> 00:33:54.840
<v Michael Kennedy>Like CodeWork is great.

00:33:55.100 --> 00:34:03.220
<v Michael Kennedy>But more like, more of the comments were like, well, I think you're not taking the negative side of AI seriously enough.

00:34:03.540 --> 00:34:04.020
<v Michael Kennedy>And it's fair.

00:34:04.440 --> 00:34:06.480
<v Michael Kennedy>I do, we periodically say it.

00:34:06.660 --> 00:34:08.940
<v Michael Kennedy>I feel like it's a little bit of a drag to just every week.

00:34:09.060 --> 00:34:10.659
<v Michael Kennedy>Like, yes, I realize this.

00:34:11.100 --> 00:34:19.419
<v Michael Kennedy>Anytime we mentioned LLMs, yes, I realize that this, A lot of this information was trained, taken to train with, and it was copyright theft.

00:34:19.879 --> 00:34:21.940
<v Michael Kennedy>Yes, I realized it's a data center that uses a lot of energy.

00:34:22.159 --> 00:34:23.780
<v Michael Kennedy>Out there, like we've said that before plenty of times.

00:34:24.080 --> 00:34:28.139
<v Michael Kennedy>But I think also it's the reason I named it this, Codeberg puts head in sand.

00:34:28.520 --> 00:34:30.480
<v Michael Kennedy>Not just to like dunk on Codeberg.

00:34:30.659 --> 00:34:31.580
<v Michael Kennedy>I mean, it's fun and all.

00:34:31.639 --> 00:34:37.520
<v Michael Kennedy>But the reason is over 90% of software these days, software development is done with AI.

00:34:38.060 --> 00:34:44.000
<v Michael Kennedy>Not exclusively, not like, no, just, hey, agent, go make me, go make Google or whatever.

00:34:44.260 --> 00:34:45.500
<v Calvin Hendryx-Parker>Just keep making software.

00:34:45.720 --> 00:34:48.879
<v Calvin Hendryx-Parker>Just pump out software until I tell you to stop, I guess.

00:34:48.940 --> 00:34:49.080
<v Calvin Hendryx-Parker>Exactly.

00:34:50.000 --> 00:34:51.780
<v Michael Kennedy>Until my energy bill is too high.

00:34:52.179 --> 00:34:57.200
<v Michael Kennedy>But almost all of software these days is at least AI-assisted in a significant way.

00:34:57.600 --> 00:34:58.520
<v Michael Kennedy>90% and above.

00:34:58.760 --> 00:35:00.120
<v Michael Kennedy>And it's only going up.

00:35:00.380 --> 00:35:08.220
<v Michael Kennedy>So when I say things like this, I'm trying to put this on people's radar, especially people who are like, I'm not willing to, I just don't even want to look at it.

00:35:08.420 --> 00:35:09.100
<v Michael Kennedy>That is a choice.

00:35:09.460 --> 00:35:17.420
<v Michael Kennedy>But if you want a job as a professional software developer in five years, if you're like, I'm not going to touch AI, I will bet you it's going to be very hard to find a job.

00:35:17.640 --> 00:35:28.900
<v Michael Kennedy>I already know companies are saying, we're not hiring unless you at least are willing to use AI somewhat, or this is a skill that needs to be learned. And it is an important part, even if

00:35:28.930 --> 00:35:41.160
<v Michael Kennedy>you don't like it. It's like saying, I don't like object-oriented programming, but all of a sudden everything is Java and C-sharp. You're like, well, they only have objects. So you're going to have to just do a little bit of it. You know what I mean? Anyway, I just wanted to put that as a comment.

00:35:41.240 --> 00:35:50.180
<v Michael Kennedy>is like i'm not trying to dunk on people who don't believe in it but i do think if if you put your head in the sand it's it's gonna have a negative consequence on your career i don't know how do you

00:35:50.180 --> 00:35:59.520
<v Calvin Hendryx-Parker>feel about this calvin if you want to say yeah i think to be eyes wide open and pragmatic pragmatic about our position on this in this trip i can't i don't want to imagine going back and not having an

00:35:59.680 --> 00:36:11.840
<v Calvin Hendryx-Parker>ai assisted environment because it is very enjoyable to get so much done um because i can guide these tools that that way if you like creating software it's incredible and i hate saying like oh now

00:36:11.980 --> 00:36:26.740
<v Calvin Hendryx-Parker>we're being complacent in our usage of say like copyright infringed material that has gone into the trainings models but i don't know how we can i don't know i don't know what you can do about that i don't it's not going back in the box right it's not going back in the box um and was what maybe

00:36:26.840 --> 00:36:38.300
<v Calvin Hendryx-Parker>there was an issue with the copyright law to begin with and maybe there's a way people need to we can compensate people so that this is fair uh well at least more equitable and i would like to put out

00:36:38.400 --> 00:36:48.840
<v Michael Kennedy>there that some ai companies are doing that but the most haven't i would imagine yeah but i just think this it's like around the dot-com boom saying ah we don't want to talk about the web could do that

00:36:49.080 --> 00:37:00.560
<v Michael Kennedy>but a lot of the stuff is happening on the web right now like and i think this is bigger in terms of the sort of transformational wave like 90 right 90 of software development wasn't the web in the

00:37:00.440 --> 00:37:04.320
<v Calvin Hendryx-Parker>the year 2000. I don't think so. No, no, we're going to, we're going to be the pets.com for

00:37:04.640 --> 00:37:08.980
<v Michael Kennedy>human knowledge. Exactly. We have dancing monkeys spending a million dollars every 30 seconds.

00:37:09.380 --> 00:37:14.300
<v Michael Kennedy>That was a, that was a Superbowl ad around the dot com days. For those of you who are of an age.

00:37:14.680 --> 00:37:19.200
<v Michael Kennedy>Yeah, exactly. It was my favorite one, I think. But look, I mean, I understand the drawbacks.

00:37:19.260 --> 00:37:28.200
<v Michael Kennedy>I understand what it's doing to software teams. I understand what it, the effects on like copyright right information and the effects on people's jobs.

00:37:28.360 --> 00:37:33.900
<v Michael Kennedy>But at the same time, it's 90%, it's really a challenge to ignore 90% of the industry.

00:37:35.040 --> 00:37:39.060
<v Michael Kennedy>And some of the comments are like, well, the people who can actually think and who aren't idiots.

00:37:39.280 --> 00:37:39.840
<v Michael Kennedy>It's like, you know what?

00:37:40.040 --> 00:37:42.260
<v Michael Kennedy>Not everyone who chooses to use these tools is a need.

00:37:42.320 --> 00:37:44.140
<v Michael Kennedy>That's a little bit harsh perspective.

00:37:44.220 --> 00:37:51.020
<v Michael Kennedy>So I think it's worth, I don't know, I just want to put that out there 'cause I feel like people are just like, oh, you're just flippant about it.

00:37:51.020 --> 00:38:02.160
<v Michael Kennedy>I'm like, no, it's just really transformational significant and we're going to have to deal with it like it or not because it's not going back in the box agree okay now there we go after all that are we actually ready for a joke i think

00:38:03.819 --> 00:38:07.520
<v Calvin Hendryx-Parker>i'm ready for i'm ready for i think we need a joke we need a joke and this that was a little

00:38:07.680 --> 00:38:18.080
<v Michael Kennedy>philosophical wouldn't you say i would okay okay what do you offer me well did you ever read the tau to ten sort of the tau like the traditional chinese one no have you read the

00:38:18.240 --> 00:38:25.340
<v Michael Kennedy>tau of programming oh i would like to i would like to do a guided reading of the tau programming We haven't done this for a while.

00:38:25.390 --> 00:38:26.660
<v Michael Kennedy>So let's go over to the corporate wisdom.

00:38:27.480 --> 00:38:33.540
<v Michael Kennedy>I can't link to it because it's like a weird, God, this is like the oldest website that could be made in 1995.

00:38:34.240 --> 00:38:35.740
<v Calvin Hendryx-Parker>Is this hosted on GeoCities?

00:38:35.900 --> 00:38:36.600
<v Calvin Hendryx-Parker>What is going on here?

00:38:36.660 --> 00:38:39.260
<v Michael Kennedy>It might be, and oh my gosh, it even has a gradient background.

00:38:39.779 --> 00:38:40.140
<v Calvin Hendryx-Parker>Yes.

00:38:40.440 --> 00:38:41.500
<v Michael Kennedy>All right, let's see.

00:38:42.300 --> 00:38:44.160
<v Michael Kennedy>I don't think I can get it to do like a reader view.

00:38:44.390 --> 00:38:50.740
<v Michael Kennedy>Oh, well, let's do a couple of sections from book seven, corporate wisdom from the Tao of programming, okay?

00:38:51.020 --> 00:38:51.300
<v Michael Kennedy>Okay.

00:38:52.080 --> 00:38:58.520
<v Michael Kennedy>7.1 The Novice Asks the Master: In the East, there is a great tree, structure that men call "corporate headquarters."

00:38:58.560 --> 00:39:01.420
<v Michael Kennedy>It is bloated out of shape with vice presidents and accountants.

00:39:01.680 --> 00:39:06.700
<v Michael Kennedy>Its issues, it issues a multitude of memos, each saying "go hence" or "go hither."

00:39:06.960 --> 00:39:08.420
<v Michael Kennedy>Nah, nobody knows what is meant.

00:39:08.720 --> 00:39:12.500
<v Michael Kennedy>Every year new names are put onto the branches, but all to no avail.

00:39:12.960 --> 00:39:15.080
<v Michael Kennedy>How can such an unnatural entity exist?

00:39:15.540 --> 00:39:21.240
<v Michael Kennedy>The Master calmly replies: You perceive this immense structure and are disturbed that it has no rational purpose.

00:39:21.840 --> 00:39:28.320
<v Michael Kennedy>you not take amusement from its endless gyrations? Do you not enjoy the untroubled ease of programming

00:39:28.490 --> 00:39:34.240
<v Calvin Hendryx-Parker>beneath its sheltered branches? Why are you bothered by its uselessness? Where did you find this gem?

00:39:34.350 --> 00:39:45.520
<v Michael Kennedy>Oh, it's so good, isn't it? Oh my gosh. I'll do a little bit of, I think, I think 7.3. I'll do a little 7.3, then we'll call it. The magician of the ivory tower brought his latest invention to

00:39:45.520 --> 00:39:51.700
<v Michael Kennedy>the master programmer to examine. The magician wheeled a large black box into the master's office while the master waited in silence.

00:39:52.020 --> 00:39:56.080
<v Michael Kennedy>This is an integrated, distributed, general-purpose workstation, began the magician.

00:39:56.640 --> 00:40:03.360
<v Michael Kennedy>Ergonomically designed with a proprietary operating system, sixth-generation languages, and multiple state-of-the-art user interfaces.

00:40:03.780 --> 00:40:07.200
<v Michael Kennedy>It took my assistants several hundred man years to construct it.

00:40:07.380 --> 00:40:08.020
<v Michael Kennedy>Is it not amazing?

00:40:08.330 --> 00:40:09.940
<v Michael Kennedy>The master raised an eyebrow slightly.

00:40:10.320 --> 00:40:11.760
<v Michael Kennedy>It is indeed amazing, he said.

00:40:12.060 --> 00:40:16.220
<v Michael Kennedy>Corporate Headquarters has commanded, continued the magician, that everyone use this workstation.

00:40:16.520 --> 00:40:18.980
<v Michael Kennedy>As a new platform for their programs, do you agree to this?

00:40:19.240 --> 00:40:20.420
<v Michael Kennedy>Certainly, replied the master.

00:40:20.620 --> 00:40:23.320
<v Michael Kennedy>I will have it transported to the data center immediately.

00:40:24.200 --> 00:40:26.220
<v Michael Kennedy>And the magician returned to his tower, well pleased.

00:40:26.600 --> 00:40:32.020
<v Michael Kennedy>Several days later, a novice wandered into the office of the master program and said, I cannot find the listing for my new program.

00:40:32.320 --> 00:40:33.300
<v Michael Kennedy>Do you know where it might be?

00:40:33.660 --> 00:40:34.420
<v Michael Kennedy>Yes, replied the master.

00:40:34.620 --> 00:40:37.040
<v Michael Kennedy>The listings are stacked on the platform in the data center.

00:40:37.820 --> 00:40:38.140
<v Michael Kennedy>There you go.

00:40:39.260 --> 00:40:41.480
<v Michael Kennedy>So this is a fun read.

00:40:41.660 --> 00:40:43.060
<v Michael Kennedy>You can't do too much of it.

00:40:43.140 --> 00:40:48.580
<v Michael Kennedy>It's a thick, long joke, but we'll maybe come back to maintenance in a couple months or something.

00:40:48.600 --> 00:40:58.120
<v Michael Kennedy>books we can go through here let's fake the master programmer though a program be three lines long someday it will have to be maintained all right yeah that's a good that's a good one right there

00:40:58.660 --> 00:41:10.640
<v Calvin Hendryx-Parker>great one great one great one to end on indeed all right well very fun michael and uh i'm gonna go back to Django con we'll talk to you all next week yeah have a great time at Django con and yeah see you next week sounds good bye