WEBVTT

00:00:00.020 --> 00:00:05.040
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.580 --> 00:00:10.660
This is episode 473, recorded March 16th, 2026.

00:00:11.400 --> 00:00:12.440
And I am Brian Okken.

00:00:12.550 --> 00:00:13.320
And I'm Michael Kennedy.

00:00:13.740 --> 00:00:19.260
And as often lately, this episode is sponsored by you and us.

00:00:20.240 --> 00:00:23.580
For everybody that supports the show through Patreon or through,

00:00:23.880 --> 00:00:25.660
mostly through a lot of our offerings,

00:00:25.860 --> 00:00:30.460
like the courses at Talk Python Training and PythonTest.com,

00:00:31.140 --> 00:00:31.660
and books.

00:00:31.940 --> 00:00:33.300
We've got lovely books coming along.

00:00:34.140 --> 00:00:36.160
I might bring up a book later in the show,

00:00:36.290 --> 00:00:36.980
but we'll talk about it.

00:00:37.660 --> 00:00:40.120
Anyway, thanks a lot for everybody supporting us.

00:00:40.840 --> 00:00:41.900
It keeps us going.

00:00:42.360 --> 00:00:45.620
And also thank you to everybody that sends in topic ideas,

00:00:45.890 --> 00:00:48.580
either by going to pythonbys.fm

00:00:48.720 --> 00:00:50.600
and submitting something through the contact form,

00:00:50.920 --> 00:00:54.540
or we're going ahead and sending it to us on socials.

00:00:54.980 --> 00:00:58.160
So we're at BlueSky and at Mastodon

00:00:58.540 --> 00:01:00.080
and all those links are in the show notes

00:01:01.140 --> 00:01:02.600
or at pythonbytes.fm.

00:01:03.140 --> 00:01:05.700
You also can watch the show if you'd like,

00:01:05.920 --> 00:01:07.820
either real time or after the fact.

00:01:08.150 --> 00:01:10.720
You can join us at pythonbytes.fm/live

00:01:11.080 --> 00:01:11.960
and be part of the audience.

00:01:12.440 --> 00:01:13.840
And one of the fun things about that is

00:01:14.320 --> 00:01:15.700
while we're recording this,

00:01:15.790 --> 00:01:18.820
you can add comments and we might comment back

00:01:18.980 --> 00:01:20.000
or highlight your comment.

00:01:20.260 --> 00:01:20.580
That's fun.

00:01:20.660 --> 00:01:26.300
anyway the last thing I want to bring up is that you don't have to take any notes while we're

00:01:26.540 --> 00:01:32.280
talking because it's all the stuff is it's on the show notes to links but if you'd like that

00:01:32.500 --> 00:01:37.080
delivered right to your inbox plus a little background information some extra stuff especially

00:01:37.300 --> 00:01:42.240
helpful for for if we're covering a topic that you're slightly you think you know about but maybe

00:01:42.360 --> 00:01:47.619
not we'll send you some extra information and you just sign up to be a friend of the show at

00:01:47.680 --> 00:01:52.800
pythonbys.fm and say, join the newsletter. With that, what do we have to start with?

00:01:53.020 --> 00:01:58.200
Well, I've got a doozy. Oh, as they say, a doozy. And this one comes to us from

00:01:58.540 --> 00:02:03.040
Ian Lessing. So thank you for sending it in to your point about sending us ideas about the show.

00:02:03.280 --> 00:02:09.920
This one somehow missed my radar, but shouldn't have. So yeah, it's a big one. So this,

00:02:10.640 --> 00:02:17.600
you probably have seen char debt as in character debt. Maybe it's care debt. I don't know. I'm

00:02:17.620 --> 00:02:21.640
It's always funny to think about abbreviations like lib or lib.

00:02:21.960 --> 00:02:25.180
You know, it's if you pronounce it lib, I think it goes lib.

00:02:25.320 --> 00:02:27.780
But if it's an abbreviation of library, shouldn't it be lib?

00:02:28.040 --> 00:02:28.440
I don't know.

00:02:28.680 --> 00:02:28.920
So anyway.

00:02:29.080 --> 00:02:29.880
No, because that's weird.

00:02:30.240 --> 00:02:30.860
I know it is weird.

00:02:32.720 --> 00:02:38.560
So Caradet is a library that I believe was originally done,

00:02:39.380 --> 00:02:42.860
originally created by Mark Pilgrim, but now is maintained by Dan Blanchard.

00:02:43.080 --> 00:02:48.640
So I think this alone makes it interesting because there's something happening with this project.

00:02:49.090 --> 00:02:53.440
And a lot of people are pushing back, saying the maintainer can't make a change to it.

00:02:53.590 --> 00:02:54.560
But they're the maintainer.

00:02:54.840 --> 00:02:56.520
Like, I don't want you to, but you can't.

00:02:56.780 --> 00:02:57.980
So here's the headline.

00:02:59.400 --> 00:03:04.060
The care debt dispute shows how AI will kill software licensing, argues Bruce Perens.

00:03:05.480 --> 00:03:10.160
And the subtitle, this comes from the register, alarm bells are ringing in the open source community,

00:03:10.320 --> 00:03:12.520
but commercial licensing is also at risk.

00:03:12.900 --> 00:03:17.220
so told me it's a doozy what is going on so earlier this week dan blanchard and i want to

00:03:17.240 --> 00:03:22.320
point out the maintainer of the library released a new version of library under a new software

00:03:22.460 --> 00:03:29.000
license it was lgpl and he released it under mit in doing so he may have killed copy left because

00:03:29.340 --> 00:03:34.520
well mit is a do whatever you want just don't sue me about it you know what i mean license which

00:03:34.820 --> 00:03:38.579
almost all the stuff that i do is mit as well i just want people to just i'd rather have people

00:03:38.600 --> 00:03:39.780
just have access to do whatever.

00:03:39.980 --> 00:03:41.340
Like, I don't want people to just, hey,

00:03:42.080 --> 00:03:44.380
could I get an exception to use this for this thing like that?

00:03:44.580 --> 00:03:46.900
Like, nothing I'm doing is that important, you know?

00:03:47.240 --> 00:03:50.540
Yeah, and I think of the MIT stuff as, like, a good license

00:03:50.840 --> 00:03:53.820
if you don't care if people use it in their commercial product.

00:03:54.260 --> 00:03:54.440
Yes.

00:03:54.880 --> 00:03:55.380
Yeah, so.

00:03:55.680 --> 00:03:59.480
And look, if it's OK, I was not familiar with what this is.

00:03:59.660 --> 00:04:00.820
I still don't quite get.

00:04:01.000 --> 00:04:02.540
What does Caridit do?

00:04:02.620 --> 00:04:09.100
So it is a character detection library that's used by millions of projects.

00:04:09.170 --> 00:04:09.520
Let me see.

00:04:09.630 --> 00:04:12.540
It has 130 million downloads a month.

00:04:12.920 --> 00:04:14.900
So it's used by a lot of things.

00:04:16.620 --> 00:04:16.820
Okay.

00:04:17.100 --> 00:04:18.180
Character encoding detector.

00:04:18.400 --> 00:04:18.640
Yes.

00:04:18.780 --> 00:04:19.140
Yeah, exactly.

00:04:19.459 --> 00:04:21.140
Like UTF, I think.

00:04:21.560 --> 00:04:23.100
Is this UTF or Unicode?

00:04:23.110 --> 00:04:24.400
Or is it how do I?

00:04:24.720 --> 00:04:25.320
I have bytes.

00:04:25.480 --> 00:04:26.120
What am I going to do?

00:04:26.580 --> 00:04:27.540
So it takes a guess.

00:04:28.620 --> 00:04:30.400
You're getting bytes and you're not really sure.

00:04:30.490 --> 00:04:32.360
It wasn't declared or whatever.

00:04:32.420 --> 00:04:35.340
So previously, this was an LGPL project.

00:04:36.060 --> 00:04:40.100
Dan Blanchard wanted two things from what I can read between the lines,

00:04:40.490 --> 00:04:41.540
putting words into their mouth.

00:04:41.980 --> 00:04:46.520
One, wanted to dramatically improve this library to make it better.

00:04:46.920 --> 00:04:47.120
Check.

00:04:47.480 --> 00:04:48.400
You'll see he did that.

00:04:48.620 --> 00:04:53.920
Two, wanted to set the stage such that this can just be part of Python.

00:04:54.300 --> 00:04:56.060
Could this just be part of the standard library?

00:04:56.560 --> 00:05:00.960
So previously, there's this move to say we should have less in Python,

00:05:01.220 --> 00:05:05.980
and I agree, but detecting whether or not something is Unicode or ASCII or whatever,

00:05:06.500 --> 00:05:09.840
maybe that does belong in the library. Anyway, that was the goal. Could we put it in there? Well,

00:05:10.060 --> 00:05:16.120
LGPL says no. It would change the license of Python, I believe, right? So as long as it's a

00:05:16.280 --> 00:05:21.720
GPL-based license, you can't move this library into the standard library. I don't know if the

00:05:22.000 --> 00:05:27.100
core developers or even if Dan is a core developer was interested in this, but that was one of the

00:05:27.040 --> 00:05:33.100
goals, right? So no problem. We're going to change it. Well, an individual claiming to be Mark Pilgrim

00:05:33.240 --> 00:05:38.560
because verify people on the internet for sure, the original created the library. So it's a little

00:05:38.560 --> 00:05:43.140
bit like Flask where Armin Roeneker created it. And then now David Lord maintains it. And David

00:05:43.200 --> 00:05:47.260
Lord gets to do whatever he wants with it. It's his project now as the maintainer, but I'm sure

00:05:47.520 --> 00:05:53.139
Armin still has influence over the community's opinion if he were to take a strong position one

00:05:53.160 --> 00:05:57.420
way or the other right neither of them chimed into this as far as i know i don't think maybe

00:05:57.580 --> 00:06:02.440
armin did i can't remember there's a lot there's a lot of chat about it kind of like giving somebody

00:06:02.460 --> 00:06:07.200
a puppy and then telling them that what they have to where they have to take it what vet they have

00:06:07.200 --> 00:06:13.020
to take it to yes exactly yeah exactly i'm i'm leaning on the side of of dan blanchard here just

00:06:13.380 --> 00:06:17.959
just setting the state i have a slight there's a lot of complexity in this i'm i'm not like totally

00:06:18.540 --> 00:06:23.960
just say this is how it is, but let's keep setting the stage. So Mark says, you can't do that. You

00:06:24.040 --> 00:06:30.560
can't change an LPGL. I believe that's the typo LGPL license requirement. It requires that the

00:06:30.720 --> 00:06:36.680
license remain unchanged. License code when modified must be released under the same GPL license.

00:06:37.300 --> 00:06:43.919
But I get that when somebody gets it from the source, they make a change. It must be released

00:06:43.940 --> 00:06:49.480
under the same license as the owner of the project i thought you could change the license on nuka i

00:06:49.580 --> 00:06:54.800
don't know it's your software effectively if you want to change the license of it i don't know

00:06:55.760 --> 00:06:59.200
this is a little bit of shaky ground here that to say that you can't change the license

00:06:59.700 --> 00:07:04.880
as the owner of the license you know what i mean anyone else in the world should not they have to

00:07:05.000 --> 00:07:09.560
follow what i just read but that as the owner license is that true well so what here's what

00:07:09.460 --> 00:07:13.320
Dan said, here's what I'm going to create a new, better version.

00:07:13.620 --> 00:07:18.540
I'm going to rewrite this entire project from scratch, not using any of its source code and

00:07:18.780 --> 00:07:22.300
re-release it into the same package channel as the old one.

00:07:22.560 --> 00:07:22.640
Okay.

00:07:23.000 --> 00:07:28.240
Now, one of the problems under that is as the maintainer, he's deeply familiar with how it

00:07:28.360 --> 00:07:28.520
works.

00:07:28.820 --> 00:07:34.160
And one of the challenges is if you know how it works, your idea is like hard to do a fresh

00:07:34.520 --> 00:07:35.500
from scratch rewrite.

00:07:35.840 --> 00:07:39.220
If it's burned into your mind, how it works, you know what I mean?

00:07:39.480 --> 00:07:44.140
So what he did is he just gave the specification to Claude and said, Claude,

00:07:44.240 --> 00:07:48.640
write this so that the test pass and Claude wrote it and it wrote it

00:07:49.100 --> 00:07:50.080
extremely differently.

00:07:50.580 --> 00:07:55.720
There's a, a plagiarism detection algorithm that was more probably more for

00:07:55.820 --> 00:08:01.300
English, but whatever it said is only 1% similar to version six version seven

00:08:01.300 --> 00:08:02.860
is only 1% similar to version six.

00:08:03.260 --> 00:08:05.360
So that means it's pretty different.

00:08:05.840 --> 00:08:08.600
Dan also said it's like structurally the files are not named the same.

00:08:08.740 --> 00:08:09.880
They're not organized the same.

00:08:10.140 --> 00:08:12.460
It is basically not at all the same thing.

00:08:12.640 --> 00:08:12.760
Nothing.

00:08:13.240 --> 00:08:17.900
The only thing that's that 1% is like arg pars structure and stuff because you have the same

00:08:18.180 --> 00:08:18.740
arguments, you know?

00:08:19.020 --> 00:08:22.000
And so they believe this is, there's nothing here.

00:08:22.440 --> 00:08:23.600
This is a new project.

00:08:24.140 --> 00:08:26.000
This is what gets the MIT license.

00:08:26.540 --> 00:08:29.240
Now, to be clear, this is a mega improvement.

00:08:29.530 --> 00:08:34.200
It results in a 48 times improvement in detection speed.

00:08:34.640 --> 00:08:37.680
It now supports multi-threading for Python T.

00:08:38.159 --> 00:08:40.539
So you can do free-threaded Python and it supports that.

00:08:40.919 --> 00:08:43.120
There's a lot of benefits to this new version.

00:08:43.520 --> 00:08:47.060
So I don't think anyone is saying you've messed up the library.

00:08:47.460 --> 00:08:49.720
It's like clearly a better library.

00:08:50.260 --> 00:08:55.380
It's only this, we hate AI or AI is theft or like there's a lot of these different angles

00:08:55.800 --> 00:08:58.940
that are like focusing in like a laser onto this change.

00:08:58.990 --> 00:08:59.600
You know what I mean?

00:08:59.920 --> 00:09:00.060
Yeah.

00:09:00.390 --> 00:09:03.059
So Dan says, I was just trying to accomplish these goals

00:09:03.060 --> 00:09:05.080
with the tools and times I had available.

00:09:05.380 --> 00:09:07.040
I never have been paid to work on this

00:09:07.300 --> 00:09:08.860
and I have a full-time job, you know?

00:09:09.240 --> 00:09:11.140
Software licensing and the laws around it

00:09:11.180 --> 00:09:13.060
haven't been tested a lot in this new world

00:09:13.240 --> 00:09:14.320
of AI-assisted development

00:09:14.420 --> 00:09:15.660
and a long-time open source developer.

00:09:15.840 --> 00:09:17.700
I'm also curious how this is going to shake out.

00:09:18.500 --> 00:09:20.100
Yeah, but somewhere it says, yeah,

00:09:20.820 --> 00:09:23.140
after maintaining this library for years,

00:09:23.800 --> 00:09:25.820
I've wanted to make these improvements, but I couldn't.

00:09:26.060 --> 00:09:27.500
Quad gave me the ability to do this

00:09:27.780 --> 00:09:29.280
in roughly five days, right?

00:09:29.600 --> 00:09:31.760
So I think this is also really interesting.

00:09:32.180 --> 00:09:33.180
Why change the license?

00:09:33.700 --> 00:09:35.580
Because he wants to put it into Python.

00:09:35.980 --> 00:09:36.400
Oh, okay.

00:09:36.680 --> 00:09:36.820
Yeah.

00:09:37.340 --> 00:09:39.720
Or maybe he just wants people to be able to more freely use it,

00:09:39.960 --> 00:09:41.540
and he just doesn't care about copyleft.

00:09:41.560 --> 00:09:42.660
I don't really know.

00:09:42.920 --> 00:09:45.000
But I believe, for the article makes it imply,

00:09:45.080 --> 00:09:48.520
like, he wants to put it into Python and LGPL to make that not possible.

00:09:48.860 --> 00:09:50.920
And Arnaker actually did, or Armin actually,

00:09:51.280 --> 00:09:53.180
Arnaker actually did a post about this,

00:09:53.260 --> 00:09:54.840
saying that he welcomed the license change,

00:09:55.060 --> 00:09:56.160
and he's wanted it for years.

00:09:56.440 --> 00:09:58.840
Kind of what I would expect that he wanted to say as well.

00:09:59.100 --> 00:10:01.440
Now, there's a issue that has been created,

00:10:01.880 --> 00:10:08.160
that version seven presents unacceptable legal risk to users due to the copyright controversy.

00:10:09.480 --> 00:10:10.800
There's so much.

00:10:11.460 --> 00:10:12.780
There is so much going on here.

00:10:13.120 --> 00:10:18.200
I don't know, because to me, the license only goes from less restrictive to more permissive,

00:10:18.380 --> 00:10:20.480
or more restrictive to more permissive.

00:10:20.740 --> 00:10:24.800
And if it turns out that it's the old version, you know, you're back to where you started.

00:10:25.180 --> 00:10:25.800
So I don't know.

00:10:25.940 --> 00:10:28.900
I'm telling you, there's a lot of, this may be the bigger issue,

00:10:29.140 --> 00:10:33.240
There's issue 327 fired by Mark Pilgrim.

00:10:33.280 --> 00:10:34.280
Hi, I'm Mark Pilgrim.

00:10:34.540 --> 00:10:36.800
The title is No Right to Relicense This Project.

00:10:37.040 --> 00:10:40.160
And it's absolutely toxic is the word.

00:10:40.500 --> 00:10:41.380
So I don't know.

00:10:41.580 --> 00:10:43.060
It's very interesting here.

00:10:43.460 --> 00:10:45.640
I mean, version six is still there.

00:10:45.880 --> 00:10:49.740
People can just keep using that or fork it if they want, if they still want the old license.

00:10:50.620 --> 00:10:57.060
I think what's happening is this is becoming a lightning rod for the debate of licensing intersecting with agentic AI.

00:10:57.520 --> 00:11:00.460
I mean, how many people actually care that much about character detection?

00:11:01.320 --> 00:11:01.760
You know what I mean?

00:11:01.840 --> 00:11:03.420
I mean, it's apparently a lot of people.

00:11:03.860 --> 00:11:05.300
I know a lot of it's extreme.

00:11:05.420 --> 00:11:10.340
This is like there are just pages of stuff to go through on all of this, like pages.

00:11:10.840 --> 00:11:11.620
It's crazy.

00:11:12.240 --> 00:11:15.140
So, OK, I understand the sensitivity of it.

00:11:15.400 --> 00:11:16.500
I forgot my popcorn.

00:11:17.060 --> 00:11:17.320
I know.

00:11:17.670 --> 00:11:17.920
I know.

00:11:18.360 --> 00:11:24.640
And I get it that AI ingesting the world's work and then turning that into automation.

00:11:25.240 --> 00:11:26.900
I'm not even sure where that sits.

00:11:27.000 --> 00:11:32.740
legally. At the time, it felt like a lot of theft. I'm not sure if it's a good trade-off or not.

00:11:33.040 --> 00:11:35.620
I don't get how that relates to this project, though.

00:11:36.940 --> 00:11:40.200
Okay, so let me add in one more detail. Like I said, there's a lot going on here. We'll wrap

00:11:40.300 --> 00:11:44.960
this up pretty soon, but it's a super interesting discussion. I think, so one of the reasons that

00:11:45.100 --> 00:11:48.160
said, she said, well, I did it with Claude Code. They said, well, it doesn't matter. Claude Code

00:11:48.260 --> 00:11:52.460
trained on GitHub. Therefore, it trained on the original source code of Kradet. Therefore,

00:11:52.620 --> 00:11:54.360
it's not a clean room re-implementation.

00:11:55.080 --> 00:11:55.680
So I ask.

00:11:55.760 --> 00:11:57.060
I don't know if that matters

00:11:57.300 --> 00:11:58.840
because I can lead one company,

00:11:59.260 --> 00:12:00.320
go work at another company.

00:12:00.440 --> 00:12:02.020
As long as I don't take the source code,

00:12:02.100 --> 00:12:03.600
if I just take what I remember

00:12:04.000 --> 00:12:05.260
and do similar work,

00:12:05.420 --> 00:12:06.480
I'm allowed to do that.

00:12:06.640 --> 00:12:07.680
Yes, you're a human being

00:12:07.900 --> 00:12:09.860
that gets to interact in the world.

00:12:10.060 --> 00:12:10.340
Yeah, exactly.

00:12:10.940 --> 00:12:13.180
It's not like, well, I saw a picture once

00:12:13.420 --> 00:12:15.020
and it was of a tree and it was copyrighted.

00:12:15.020 --> 00:12:16.940
So I can never, ever create a picture of a tree again

00:12:17.180 --> 00:12:18.320
because I looked at it, right?

00:12:18.700 --> 00:12:20.400
Yeah, that's why I said I'm on the side of,

00:12:20.520 --> 00:12:25.380
I'm, I'm, I'm done. I feel like I'm on Dan's side here. So I, let me look. So I pull, I wrote a

00:12:25.450 --> 00:12:30.540
little, I didn't write. I asked Claude for some research on like, well, what is the legal precedence

00:12:30.660 --> 00:12:36.520
of this? Here's the situation, at least in the U S are there rules, rulings that have come down

00:12:36.920 --> 00:12:42.120
previously. So I put a little document up for people to look at, but it says the closest

00:12:42.520 --> 00:12:47.459
precedence is this Thomas Reuters versus Ross intelligence where somebody can remember who they

00:12:47.480 --> 00:12:57.800
They took a bunch of Westlaw head notes for legal advice and then did their own custom AI training on it and built an exact tool for legal research.

00:12:58.270 --> 00:12:59.880
That turned out to be a violation.

00:13:00.400 --> 00:13:01.340
But the exists here.

00:13:01.580 --> 00:13:02.540
This is this is interesting.

00:13:02.550 --> 00:13:05.920
The existing copyright framework requires two things to prove infringement.

00:13:06.290 --> 00:13:07.420
Access to the original work.

00:13:07.820 --> 00:13:08.020
Check.

00:13:08.300 --> 00:13:10.440
Claude did have access to the original work.

00:13:10.780 --> 00:13:12.860
And substantial similarity in output.

00:13:13.340 --> 00:13:13.560
No.

00:13:13.940 --> 00:13:14.320
Not even close.

00:13:14.820 --> 00:13:16.480
Not even not even one percent.

00:13:16.880 --> 00:13:20.380
I know it said 1.3%, but that was like structure of ARGPARs.

00:13:20.700 --> 00:13:21.160
You know what I mean?

00:13:21.720 --> 00:13:23.000
That's ARGPARs structure.

00:13:23.200 --> 00:13:25.160
That's not CharDette structure, effectively.

00:13:25.620 --> 00:13:27.900
So I think this strongly fails.

00:13:28.560 --> 00:13:32.220
Those are the two criteria that you have to have to prove similarity.

00:13:33.559 --> 00:13:35.140
But there's other stuff.

00:13:35.630 --> 00:13:46.080
The emerging judicial consensus is developing that training a general purpose AM model is highly transformative, therefore is free use.

00:13:46.440 --> 00:13:48.680
But there were some specific examples where it wasn't.

00:13:48.960 --> 00:13:57.040
The U.S. Copyright Office's position is that using copyright materials for AI model development may constitute prima facie infringement.

00:13:57.400 --> 00:14:05.140
And what's really crazy, Brian, is if things like that said, no, this is copyright infringement, like, what happens to everything created by AI?

00:14:05.620 --> 00:14:05.740
Period.

00:14:06.260 --> 00:14:06.640
You know what I mean?

00:14:07.040 --> 00:14:08.560
And I don't know how that's going to shake out.

00:14:08.620 --> 00:14:09.320
Well, not forever.

00:14:09.740 --> 00:14:11.780
I mean, let's take, like, the extreme case.

00:14:11.780 --> 00:14:12.840
And you go, well, you know what?

00:14:13.140 --> 00:14:16.740
All the current models have been trained on licensed stuff.

00:14:17.000 --> 00:14:19.920
So let's just not start over.

00:14:20.260 --> 00:14:22.400
It's going to cost a ton of money to retrain a model.

00:14:22.860 --> 00:14:24.780
But do it right.

00:14:25.340 --> 00:14:28.820
Only train on the stuff that's available license-wise.

00:14:29.240 --> 00:14:29.380
Right.

00:14:29.500 --> 00:14:31.640
You could just look and say, is it a GPL license?

00:14:31.820 --> 00:14:32.580
We're not trading on that.

00:14:32.620 --> 00:14:33.500
Is it an MIT license?

00:14:34.000 --> 00:14:34.300
It's on.

00:14:34.520 --> 00:14:34.940
You know what I mean?

00:14:35.000 --> 00:14:38.540
There's probably plenty of information still out there to build out your models.

00:14:39.600 --> 00:14:41.060
Anyway, it's pretty wild.

00:14:41.180 --> 00:14:42.780
I think people can have a look.

00:14:43.130 --> 00:14:47.900
I would certainly say the folks who took the time to comment are very much against this.

00:14:48.420 --> 00:14:54.520
There is a lot of toxicity and Dan's support going out to you just mentally because I've

00:14:54.530 --> 00:14:57.200
been on the receiving end of these types of things and they're not fun.

00:14:57.880 --> 00:15:01.840
But I think Dan has a point here.

00:15:02.180 --> 00:15:07.239
However, this could all be solved if he just said, okay, version seven is char.2, new project

00:15:07.500 --> 00:15:13.160
and just put like a strong warning like we will we will never change char dot one ever again except

00:15:13.260 --> 00:15:17.260
for security patches and then all the things that depend upon it go fine we'll just take this one

00:15:17.340 --> 00:15:22.080
like i want 48 times faster and multi-threaded sounds better to me let's just do that yeah but

00:15:22.120 --> 00:15:27.700
and if like we push it too hard though one option is he just stops maintaining it and doesn't

00:15:27.960 --> 00:15:33.779
transfer maintainership to anybody else um yeah and we don't want that either so yeah yeah i certainly

00:15:33.880 --> 00:15:38.820
I think this debate has far outgrown character encoding concerns.

00:15:39.700 --> 00:15:41.660
It's its own special lightning rod, like I said.

00:15:41.860 --> 00:15:42.100
Yeah.

00:15:42.480 --> 00:15:42.820
All right.

00:15:43.380 --> 00:15:43.640
How are you?

00:15:44.040 --> 00:15:52.740
Can we talk about, I got just a small tool that I, this is a small tool suggested by Matthias.

00:15:53.860 --> 00:15:56.800
Well, it's not a small tool, but it's quick to cover.

00:15:57.660 --> 00:15:58.520
Refined GitHub.

00:15:59.040 --> 00:16:00.820
And this is awesome.

00:16:01.120 --> 00:16:02.080
I didn't know about this.

00:16:02.520 --> 00:16:08.920
So this is a web browser plugin.

00:16:08.940 --> 00:16:09.580
Browser extension.

00:16:09.920 --> 00:16:10.700
Browser extension.

00:16:11.140 --> 00:16:11.500
Thank you.

00:16:12.200 --> 00:16:15.100
That does some cool stuff if you work with GitHub a lot.

00:16:15.300 --> 00:16:21.080
And looking through this, I'm like, what's wrong with GitHub right now?

00:16:21.480 --> 00:16:22.980
Well, there's a bunch of stuff.

00:16:23.000 --> 00:16:25.020
The highlights, there's some highlights at the top.

00:16:25.420 --> 00:16:27.220
Makes white space characters visible.

00:16:27.700 --> 00:16:28.560
That's cool.

00:16:28.620 --> 00:16:33.920
I mean, that's not cool enough to get this, but there's a lot more coming.

00:16:34.620 --> 00:16:37.080
Tells you whether you're looking at the latest version of the repository,

00:16:37.380 --> 00:16:39.240
if there's any unreleased commits.

00:16:40.100 --> 00:16:40.820
That's kind of neat.

00:16:41.160 --> 00:16:46.920
The shows how far behind PR head branches, tells you it's base commit.

00:16:47.180 --> 00:16:48.100
There's a bunch of stuff here.

00:16:48.520 --> 00:16:52.940
I'm going to highlight down to some of the stuff that one of the nice things,

00:16:53.100 --> 00:16:56.980
there's lots of features, but they put fire beside things that you might care about.

00:16:57.280 --> 00:17:00.520
Like adds a build CI status icon next to the repo name.

00:17:01.020 --> 00:17:01.560
Love that.

00:17:02.540 --> 00:17:05.040
Adds a link back to the PR that ran the workflow.

00:17:05.520 --> 00:17:06.060
That's cool.

00:17:08.560 --> 00:17:12.100
This one, I installed it just for this one feature.

00:17:12.480 --> 00:17:16.360
Enables tab and shift tab for indentation in comment fields.

00:17:17.060 --> 00:17:21.220
Because, you know, if you're in a web browser, you hit tab, it goes to the next field.

00:17:21.420 --> 00:17:24.420
I just want to put a tab in the field.

00:17:25.040 --> 00:17:25.280
Anyway.

00:17:26.319 --> 00:17:28.439
For Python people, it might not matter that much,

00:17:28.580 --> 00:17:30.000
but if you're doing C++ or something,

00:17:30.360 --> 00:17:32.280
you don't want to mix spaces and tables.

00:17:32.760 --> 00:17:35.860
I just expect it to add four spaces.

00:17:36.820 --> 00:17:39.580
But anyway, let's see.

00:17:39.620 --> 00:17:41.100
Auto resize the commit field.

00:17:42.200 --> 00:17:46.320
Add reaction avatars showing who reacted to a comment.

00:17:46.520 --> 00:17:46.960
That's interesting.

00:17:47.860 --> 00:17:50.460
The other one that I want to highlight just to,

00:17:51.240 --> 00:17:52.060
because I think it's cool,

00:17:52.220 --> 00:17:55.320
is highlights the most useful comment in an issue.

00:17:56.020 --> 00:17:59.720
So if there's a lot of people talking about a comment or whatever,

00:18:00.120 --> 00:18:01.420
it'll highlight that.

00:18:01.440 --> 00:18:02.400
So just scroll around.

00:18:03.800 --> 00:18:05.440
And actually, I haven't really noticed.

00:18:05.720 --> 00:18:09.360
I've turned this on, and it just sort of stays out of the way.

00:18:09.500 --> 00:18:11.400
There's just more features and more.

00:18:11.500 --> 00:18:12.760
It's just a nicer experience.

00:18:13.240 --> 00:18:15.000
So yeah, kudos to them.

00:18:15.060 --> 00:18:16.520
This is an absolutely mega.

00:18:17.060 --> 00:18:22.180
So what's notable about this is you wouldn't look at your UI and know anything is different.

00:18:22.300 --> 00:18:24.020
But there's like 100 little changes, right?

00:18:24.340 --> 00:18:24.620
Yeah.

00:18:25.020 --> 00:18:25.540
So yeah.

00:18:25.760 --> 00:18:29.020
Anyway, I'm always nervous to install browser extensions.

00:18:29.160 --> 00:18:32.320
I have maybe five or six that I really love from places I trust.

00:18:32.560 --> 00:18:34.800
But go to the top, see how many stars this has.

00:18:35.639 --> 00:18:36.440
30,000.

00:18:36.720 --> 00:18:39.540
Yeah, at that level, I think it's all right.

00:18:39.680 --> 00:18:41.280
It's probably totally trustworthy, right?

00:18:41.580 --> 00:18:44.160
So let's-- yeah, I think it's good.

00:18:44.320 --> 00:18:44.900
I think it's good.

00:18:44.960 --> 00:18:46.620
I would probably install it.

00:18:47.260 --> 00:18:49.120
I'll look and see if it'll inspire me.

00:18:49.880 --> 00:18:50.840
Yeah, I don't know.

00:18:51.660 --> 00:18:55.460
I'll play with it for a while, see if my entire computer blows up.

00:18:55.700 --> 00:18:58.560
But yeah, if your computer gets-

00:18:58.560 --> 00:18:59.820
It's all something around for a while,

00:18:59.820 --> 00:19:01.800
it looks like nine years or so.

00:19:02.060 --> 00:19:03.400
Wow. Really? No kidding.

00:19:03.460 --> 00:19:06.120
Well, at least in the front top,

00:19:06.120 --> 00:19:10.100
there's the editor config is nine years ago.

00:19:10.100 --> 00:19:12.240
So at least there's some commits from nine years ago.

00:19:12.510 --> 00:19:14.520
Yeah, exactly. I would imagine it is.

00:19:14.520 --> 00:19:16.200
That's very, very wild. Awesome.

00:19:16.980 --> 00:19:20.060
Okay. Let's move on to talk about

00:19:20.060 --> 00:19:22.400
databases and in particular Postgres.

00:19:22.400 --> 00:19:23.780
So this project I want to talk about,

00:19:23.780 --> 00:19:24.600
I want to feature everyone across,

00:19:24.840 --> 00:19:27.560
and I think it's been around for a little while, but it's called PG dog.

00:19:28.260 --> 00:19:28.400
Okay.

00:19:28.660 --> 00:19:32.800
And what it is, is it's a performance enhancing layer for Postgres.

00:19:32.980 --> 00:19:37.380
So if you're using, you know, maybe you're using my SQL, not my SQL,

00:19:37.760 --> 00:19:41.000
using SQL light in dev, but then in production, you're using Postgres,

00:19:41.240 --> 00:19:41.340
right?

00:19:41.500 --> 00:19:42.140
Something like that.

00:19:42.140 --> 00:19:44.940
And, and it's starting to outgrow its performance.

00:19:45.520 --> 00:19:45.680
Okay.

00:19:45.820 --> 00:19:50.140
So either it needs better uptime, the database is getting too large or

00:19:50.220 --> 00:19:50.840
something like that.

00:19:51.020 --> 00:19:54.800
Postgres doesn't have certain features like, connection pooling and other

00:19:54.820 --> 00:19:57.040
that could be better high performance, right?

00:19:57.120 --> 00:19:58.720
So you don't have to reconnect as much.

00:19:59.020 --> 00:20:00.740
This thing handles a whole bunch of those.

00:20:01.160 --> 00:20:04.180
So we go down here to their repo.

00:20:04.300 --> 00:20:09.640
It, by the way, has 4,000 stars and its age is a year, two years.

00:20:09.680 --> 00:20:12.720
It looks like last year is all, it's probably its most recent things.

00:20:13.080 --> 00:20:15.120
So there's been other projects like this as well.

00:20:15.520 --> 00:20:19.920
For example, PG Bouncer is a friend, a colleague,

00:20:20.660 --> 00:20:22.880
it's a software, I guess, another thing that does the same thing.

00:20:23.180 --> 00:20:25.880
So what this is, is it's a proxy for scaling Postgres.

00:20:26.170 --> 00:20:29.180
And it does connection pooling, load balancing for queries,

00:20:29.560 --> 00:20:32.780
and it does sharding of databases, which sounds bad,

00:20:32.780 --> 00:20:34.220
but is actually a potentially good thing.

00:20:34.560 --> 00:20:37.760
So you just create a toml file to set it up, and then off it goes.

00:20:37.940 --> 00:20:39.580
I got a bunch of notes here for all these little things

00:20:39.640 --> 00:20:40.180
that kind of spread around.

00:20:40.840 --> 00:20:44.740
So for starters, it's a load balancer across Postgres.

00:20:45.070 --> 00:20:49.880
So you can run Postgres in a replica network configuration.

00:20:50.110 --> 00:20:53.140
So I can have a Postgres database, but then I

00:20:53.160 --> 00:20:58.340
let's say four other Postgres databases that are all copies of that same data and they stay in sync.

00:20:59.030 --> 00:21:03.260
And from a read perspective, you could read from all five of them if they all have the same data,

00:21:03.840 --> 00:21:10.480
and that basically 5Xs your database query performance, just by simply sending them to

00:21:10.600 --> 00:21:16.000
different machines with exactly the same data, the same database. But the problem is the consistency,

00:21:16.260 --> 00:21:21.679
so it knows which one is the primary database and it can do writing to that and make sure that it

00:21:21.680 --> 00:21:26.500
propagates to the others before it tells you that it's committed, which is kind of the magic of

00:21:26.880 --> 00:21:30.740
replicas. Because if you write to it and then immediately do another read, but it happens to

00:21:30.740 --> 00:21:35.860
have gone to, this time it's round robin to a different database server, that's bad because it

00:21:36.000 --> 00:21:39.620
might not be there, right? Like I saved the database, I queried and it wasn't there and I

00:21:39.640 --> 00:21:43.140
went to test why it wasn't there. Then it was there. I don't get it. What is going on with the

00:21:43.180 --> 00:21:47.120
world, right? So you want it to definitely manage that kind of stuff. It also does health checks.

00:21:47.640 --> 00:21:53.060
And you've got this read primary replica configuration

00:21:53.380 --> 00:21:53.900
that I'm talking about.

00:21:54.160 --> 00:21:58.020
If one of them goes down, it will just take it out of its rotation.

00:21:58.460 --> 00:22:01.440
And if it's the primary one, it'll pick another primary, I believe.

00:22:01.860 --> 00:22:04.540
So it has a single endpoint behavior, which I talked about.

00:22:04.720 --> 00:22:09.880
So it understands the Postgres structure, like basically T-SQL.

00:22:10.320 --> 00:22:13.660
And so it knows if it sees an update or insert or create table

00:22:13.800 --> 00:22:15.600
and things like that and sends that to the primary

00:22:16.280 --> 00:22:18.960
and then leaves the other ones chilling to do their thing.

00:22:19.320 --> 00:22:22.800
Has the failover I talked about, and it has sharding, which is really cool.

00:22:22.800 --> 00:22:25.220
And it does a bunch of stuff to manage and keep that in sync.

00:22:25.600 --> 00:22:29.540
You can even have different sets, different clusters of database

00:22:29.780 --> 00:22:31.420
and say, keep this one in sync with that one.

00:22:31.820 --> 00:22:34.860
So for example, imagine you've got an e-commerce site

00:22:35.519 --> 00:22:37.160
and it's starting to go too slow.

00:22:37.440 --> 00:22:41.400
People do a request for, I don't know, let me give you an example

00:22:41.500 --> 00:22:43.180
that probably resonates more with people.

00:22:43.520 --> 00:22:45.440
a health provider database.

00:22:45.670 --> 00:22:46.320
I don't know about yours,

00:22:46.450 --> 00:22:48.760
but whenever I go to figure out something

00:22:48.810 --> 00:22:50.240
with my next doctor appointment or something,

00:22:50.440 --> 00:22:52.560
it's like the page slowly loads in

00:22:52.570 --> 00:22:53.300
and then it spins,

00:22:53.390 --> 00:22:54.120
it says checking records,

00:22:54.500 --> 00:22:54.880
checking records,

00:22:55.260 --> 00:22:55.680
checking records,

00:22:55.940 --> 00:22:57.020
and like five seconds later,

00:22:57.260 --> 00:22:58.420
chunk will come in and more of it.

00:22:58.420 --> 00:23:00.060
And like, what is going on with this?

00:23:00.140 --> 00:23:01.860
Why is this so slow, you know?

00:23:02.160 --> 00:23:04.220
And there's probably just some huge database

00:23:04.900 --> 00:23:06.800
with a bunch of insane joins

00:23:07.120 --> 00:23:09.480
and weird queries and stuff

00:23:09.530 --> 00:23:11.580
just to tell me that my appointment is at 10 o'clock.

00:23:11.880 --> 00:23:12.980
So what you could do is you could say,

00:23:13.140 --> 00:23:16.440
okay, your health record ID is going to be the shard key,

00:23:16.760 --> 00:23:19.460
and we're going to have 20 different servers, right,

00:23:19.680 --> 00:23:20.440
running our cloud setup.

00:23:20.840 --> 00:23:24.500
And for that, we're going to somehow determine

00:23:24.800 --> 00:23:25.600
which database it goes.

00:23:25.720 --> 00:23:27.380
So maybe we're going to say,

00:23:27.660 --> 00:23:30.420
take the hash of the health ID

00:23:30.740 --> 00:23:32.320
and use the first two letters to figure out

00:23:32.600 --> 00:23:34.000
which database it actually goes in.

00:23:34.040 --> 00:23:38.700
So like AA through B, whatever, right,

00:23:39.280 --> 00:23:40.560
goes to the first database server,

00:23:40.600 --> 00:23:42.060
and the second, the third, the fourth, and so on.

00:23:42.180 --> 00:23:45.200
So when you do a query, you say, I want the thing for this user.

00:23:45.280 --> 00:23:46.340
It just goes, OK, great.

00:23:46.360 --> 00:23:48.840
Well, that means I only query that one server.

00:23:49.280 --> 00:23:54.000
Instead of trying to query the 100 million records, you query, what did I say, 25s?

00:23:54.020 --> 00:23:57.940
You query 4 million, which is way, way faster, right, on any given server.

00:23:58.280 --> 00:23:59.660
So that's a really cool aspect.

00:24:00.400 --> 00:24:02.880
And one of its main features is the sharding capability.

00:24:03.400 --> 00:24:03.700
OK.

00:24:04.020 --> 00:24:04.840
So pretty neat.

00:24:05.140 --> 00:24:05.400
Pretty neat.

00:24:05.620 --> 00:24:11.040
Well, but if you're really trying to find out, like, health information, it might, the hash might be the problem.

00:24:11.320 --> 00:24:12.540
Stop doing hash, man.

00:24:13.140 --> 00:24:15.620
I don't know why these systems are so bad.

00:24:16.040 --> 00:24:16.700
They're so bad.

00:24:17.080 --> 00:24:17.520
Bad joke.

00:24:17.800 --> 00:24:17.920
Sorry.

00:24:18.060 --> 00:24:18.260
Yes.

00:24:18.600 --> 00:24:19.560
Yeah, that's true.

00:24:21.400 --> 00:24:22.020
I get it now.

00:24:22.020 --> 00:24:22.420
I get it.

00:24:23.799 --> 00:24:24.200
Awesome.

00:24:24.520 --> 00:24:24.760
Over to you.

00:24:25.280 --> 00:24:25.560
Okay.

00:24:25.880 --> 00:24:33.040
Well, this is partly a public service announcement, maybe.

00:24:34.620 --> 00:24:36.340
I want to cover Simon Willis.

00:24:36.540 --> 00:24:43.060
And so we know Simon Willison's been playing with AI and agents and stuff since like since they came out or something.

00:24:43.520 --> 00:24:45.680
And I appreciate all of Simon's work.

00:24:46.500 --> 00:24:55.180
And and I've been watching here and there and just like learning from him and not having to do all the experimentation that he's doing.

00:24:55.450 --> 00:24:57.280
But he's really great at explaining it.

00:24:57.440 --> 00:25:06.180
So what I want to he's got this sort of book like thing together that we're going to link to called agentic engineering patterns.

00:25:06.800 --> 00:25:12.600
and this is a series of blog posts but they're fairly concise and short and it's really good

00:25:12.680 --> 00:25:20.040
writing as well um there uh and i think anybody especially well it might be useful for really

00:25:20.260 --> 00:25:25.060
everybody but especially people with teams um it'd be good to make sure that everybody's kind of on

00:25:25.160 --> 00:25:30.839
like good i i think there's the information here is right good for everybody so there's principles

00:25:31.600 --> 00:25:37.880
getting started like some intro on how agents work and testing and QA.

00:25:38.040 --> 00:25:40.140
There's three posts about that, which I love.

00:25:40.920 --> 00:25:43.360
Understanding code, using it to walk through,

00:25:43.730 --> 00:25:45.340
using agents to walk through code and stuff.

00:25:46.390 --> 00:25:47.440
Even these are,

00:25:48.320 --> 00:25:50.500
didn't notice these when I was looking at this the other day,

00:25:50.830 --> 00:25:52.300
an appendix of prompts I use.

00:25:52.330 --> 00:25:53.060
That might be interesting,

00:25:53.820 --> 00:25:58.120
but also GIF animation tool using WebAssembly and GIFsicle,

00:25:58.840 --> 00:25:59.560
annotated prompts.

00:26:00.460 --> 00:26:03.260
That might be fun, but maybe not appropriate for everybody.

00:26:04.840 --> 00:26:10.240
But the one that I love right here is anti-patterns.

00:26:10.480 --> 00:26:12.700
So in principles, there's some anti-patterns.

00:26:12.950 --> 00:26:14.560
Well, everything.

00:26:14.900 --> 00:26:16.760
Everything in the principles, definitely go read.

00:26:17.820 --> 00:26:19.380
The writing code is cheap now.

00:26:19.620 --> 00:26:20.760
What is agentic engineering?

00:26:21.160 --> 00:26:22.580
Word things you know, basically.

00:26:23.570 --> 00:26:29.940
Not basic, but keeping track of, for instance, making tools and doing snippets,

00:26:30.100 --> 00:26:34.840
doing little tools, having those available, not only for you to remember, but you can also tell

00:26:35.210 --> 00:26:39.820
an agent to say, hey, I already kind of solved this over here in this project. So use that,

00:26:40.120 --> 00:26:48.540
but apply it to this other project here. Super cool idea. And also, these two, AI should help us

00:26:48.700 --> 00:26:53.879
produce better code. So if you're having AI produce your code, I think it should be better

00:26:53.900 --> 00:27:01.860
code than you would produce by yourself. Not worse. I don't like this notion of people not

00:27:02.040 --> 00:27:08.100
reading their code at all. And I think that's going to blow up on us. And especially if you're

00:27:08.100 --> 00:27:13.940
working in teams, a bunch of anti-patterns to watch out for. And the top one is about inflicting

00:27:14.300 --> 00:27:19.260
unreviewed code on your collaborators. This anti-pattern is common and deeply frustrating,

00:27:19.320 --> 00:27:22.340
both in open source and I'm dealing with it at work myself.

00:27:22.960 --> 00:27:26.300
Don't file pull requests with code you haven't reviewed yourself.

00:27:26.880 --> 00:27:30.540
I'm tired of reviewing reams and reams and reams of code

00:27:30.700 --> 00:27:33.320
that I know that nobody actually read that.

00:27:33.770 --> 00:27:36.000
And so why did they expect me to read it?

00:27:36.340 --> 00:27:38.400
So anyway, great resource here.

00:27:38.650 --> 00:27:43.920
I love the cheat sheet on red-green refactor is pretty great also.

00:27:44.860 --> 00:27:47.860
And I probably should highlight that since testing is kind of my thing, right?

00:27:49.060 --> 00:27:54.660
And this is the, he has tested it and the phrase use red slash green.

00:27:54.780 --> 00:28:00.160
So use red green TDD is a pleasingly succinct way to get better results out of your coding

00:28:00.320 --> 00:28:00.460
agent.

00:28:00.640 --> 00:28:06.440
So you can tell your coding agent to do this and it will know to write a test first and

00:28:07.440 --> 00:28:09.640
test, you know, make changes until it's green.

00:28:10.100 --> 00:28:13.480
What's interesting is normally we think of TDD as red green refactor.

00:28:13.880 --> 00:28:16.080
The refactor part, that's when you need to get involved.

00:28:16.100 --> 00:28:22.420
So you can have the agent do the red green part, which is come up with a test that describes what you want to do.

00:28:22.920 --> 00:28:25.420
Write code until you have code that does that.

00:28:25.880 --> 00:28:28.880
Now you go and review that code and you can talk to the agent.

00:28:28.920 --> 00:28:30.920
You don't have to necessarily change it.

00:28:30.920 --> 00:28:33.480
You can talk to the agent and go, this part of the code is weird.

00:28:33.680 --> 00:28:35.120
Can we change it to a different pattern?

00:28:35.800 --> 00:28:37.500
Or is there some way to clean this up?

00:28:37.780 --> 00:28:42.400
And I've had really good results with that, actually, to just say, kind of good.

00:28:42.560 --> 00:28:44.600
But this part, why did we do that?

00:28:44.720 --> 00:28:51.160
And it's surprising to me to have the agent come back and say, oh, yeah, that's weird and change it to what I would expect.

00:28:51.560 --> 00:28:52.960
Why didn't it just do that in the first place?

00:28:53.440 --> 00:28:54.320
But it doesn't.

00:28:55.020 --> 00:28:56.200
So and maybe it will.

00:28:56.360 --> 00:28:59.260
And in the future and the future might be next week.

00:28:59.430 --> 00:28:59.840
Who knows?

00:29:00.540 --> 00:29:03.500
But for right now, these are great engineering pattern.

00:29:03.830 --> 00:29:04.600
Great things to watch.

00:29:04.730 --> 00:29:05.380
So thanks, Simon.

00:29:05.760 --> 00:29:08.040
And I trust him to keep these up to date.

00:29:08.400 --> 00:29:08.920
So anyway.

00:29:09.240 --> 00:29:10.220
Yeah, this looks super interesting.

00:29:10.270 --> 00:29:11.340
I definitely want to check it out.

00:29:11.680 --> 00:29:14.460
I've already spread this around to to work.

00:29:14.800 --> 00:29:16.960
and especially the people that have sent me code reviews

00:29:17.320 --> 00:29:18.780
that I'm like, you didn't read this.

00:29:20.160 --> 00:29:20.720
I know you didn't.

00:29:23.260 --> 00:29:25.380
I think that's part of the pushback as well.

00:29:25.920 --> 00:29:27.840
People are lazy or they don't know what they're doing

00:29:28.090 --> 00:29:30.040
and they just, here's 2,000 lines of code

00:29:30.050 --> 00:29:31.460
that fixes what I was asking for.

00:29:31.580 --> 00:29:32.620
You're like, no, go away.

00:29:33.140 --> 00:29:34.500
Where if they spend some time, you're like,

00:29:34.740 --> 00:29:37.180
actually, can you narrow this down to a 10-line change?

00:29:37.440 --> 00:29:38.160
This is all I want.

00:29:38.320 --> 00:29:39.300
Please don't go do other things.

00:29:39.540 --> 00:29:42.100
Just help me understand this and why this needs to change.

00:29:42.300 --> 00:29:45.300
And then I think we're still learning how all this stuff works.

00:29:45.740 --> 00:29:51.280
And there are engineering practices, but it's so, the stakes are so low for getting started.

00:29:51.640 --> 00:29:53.860
You know, normally you're like, okay, we're going to set up our build tool chain.

00:29:54.090 --> 00:29:57.700
And then we're going to learn the language and the syntax and the structures and the keywords.

00:29:57.940 --> 00:30:00.760
And now it's just like, oh, just use regular English to just tell it stuff.

00:30:00.810 --> 00:30:02.020
And it'll probably figure it out, right?

00:30:02.580 --> 00:30:06.040
That gives the sense that I don't need to learn this as a skill, but you do.

00:30:07.000 --> 00:30:13.080
I also think that we're getting a lot of advice about how to utilize agents from startups and

00:30:13.340 --> 00:30:18.940
startups have a different field. Startups are greenfield for the most part. They're writing

00:30:19.020 --> 00:30:25.180
new code. Whereas a lot of software jobs are maintaining existing code bases that have been

00:30:25.420 --> 00:30:33.360
around for decades, possibly, or at least years. And you can't just not care what goes into it.

00:30:35.260 --> 00:30:38.200
you've been handed this thing that is making your company money.

00:30:38.560 --> 00:30:42.220
You can't make it worse just because the agent decided to rewrite everything.

00:30:42.440 --> 00:30:43.020
So yeah.

00:30:43.540 --> 00:30:43.620
Yeah.

00:30:44.080 --> 00:30:44.160
Anyway,

00:30:44.860 --> 00:30:45.200
for sure.

00:30:45.580 --> 00:30:45.720
Well,

00:30:45.980 --> 00:30:46.560
do we have any extras?

00:30:46.660 --> 00:30:47.420
I got a few extras.

00:30:48.020 --> 00:30:48.500
Why don't you go first?

00:30:49.060 --> 00:30:49.180
Okay.

00:30:49.580 --> 00:30:50.780
A couple ones.

00:30:51.020 --> 00:30:51.100
This,

00:30:51.320 --> 00:30:52.900
the first one comes from John Hagen.

00:30:53.140 --> 00:30:57.020
Thanks for mentioning this because I almost made this a top level story,

00:30:57.460 --> 00:30:59.860
but there's not much to say about it other than this is awesome.

00:31:00.640 --> 00:31:02.400
Upgrading Python versions with uv.

00:31:02.940 --> 00:31:04.000
So if you do,

00:31:04.520 --> 00:31:07.520
we know now that if to get all these new features,

00:31:08.000 --> 00:31:09.460
any new features from uv,

00:31:09.590 --> 00:31:11.520
you have to say uv self-update.

00:31:12.380 --> 00:31:13.180
I think, is that right?

00:31:13.380 --> 00:31:14.160
I think self-update?

00:31:14.300 --> 00:31:15.880
Yeah, uv self-update.

00:31:16.140 --> 00:31:16.280
Yep.

00:31:17.180 --> 00:31:18.480
But after you've done that,

00:31:18.780 --> 00:31:21.780
now you can say uv Python upgrade.

00:31:22.400 --> 00:31:23.600
You can give it a specific one.

00:31:23.630 --> 00:31:28.000
So like for instance, if you say uv Python upgrade 3.12,

00:31:28.400 --> 00:31:31.920
it updates 3.12 to the latest version,

00:31:32.260 --> 00:31:33.380
the latest dot release,

00:31:33.980 --> 00:31:34.900
which is cool.

00:31:35.300 --> 00:31:37.740
But if you leave that off, which that's what I do,

00:31:38.280 --> 00:31:41.480
it just looks at all of the Python versions

00:31:41.820 --> 00:31:43.960
that you have installed on your computer through uv

00:31:44.500 --> 00:31:48.860
and updates them all to the most recent bug fix release.

00:31:50.519 --> 00:31:51.480
And why not?

00:31:51.540 --> 00:31:52.720
We should be doing that all the time.

00:31:52.940 --> 00:31:54.780
I'm going to set this up as a cron job or something.

00:31:54.880 --> 00:31:55.180
I don't know.

00:31:55.640 --> 00:31:56.460
Yeah, that's cool.

00:31:57.039 --> 00:31:58.580
And yeah, so thanks, uv.

00:31:58.940 --> 00:32:00.660
Making things easier once again.

00:32:00.920 --> 00:32:01.620
Awesome job.

00:32:01.880 --> 00:32:04.040
I've already incorporated it into my little updater scripts

00:32:04.140 --> 00:32:05.060
that I run periodically.

00:32:05.700 --> 00:32:09.280
Next is also something that's suggested by a reader.

00:32:09.420 --> 00:32:13.940
And I understand New York Times Magazine is behind a paywall.

00:32:14.640 --> 00:32:17.860
But for some reason, I was able to read this fine.

00:32:18.520 --> 00:32:18.980
I don't know.

00:32:19.580 --> 00:32:22.080
I do have a New York Times newspaper subscription,

00:32:22.280 --> 00:32:23.080
so maybe that's it.

00:32:23.300 --> 00:32:27.360
Anyway, coding after coders, the end of computer programming

00:32:27.540 --> 00:32:28.260
as we know it.

00:32:28.560 --> 00:32:31.139
This is a description of basically talking

00:32:31.160 --> 00:32:37.840
about whether or not, like, it's not just whether or not, like, AI is the end of coding jobs. I don't,

00:32:38.120 --> 00:32:43.220
you know, we don't think it is. The conclusion here is it's not, but it's also more about that.

00:32:43.380 --> 00:32:47.780
It's more than that. It's talking about basically kind of some different, different life, like,

00:32:48.020 --> 00:32:52.580
different changes. And it also talks about, I believe it talked about the different differences

00:32:52.820 --> 00:33:00.100
between percent of improved percent of efficiency improvement of Greenfield versus legacy code,

00:33:00.300 --> 00:33:02.580
Whereas like a lot of startups say they're a hundred,

00:33:03.160 --> 00:33:03.960
a hundred times faster,

00:33:04.700 --> 00:33:07.980
but Amazon has said it's on average 10% faster,

00:33:08.040 --> 00:33:09.800
but that's not nothing to get.

00:33:10.020 --> 00:33:12.140
You should still get excited about 10% faster,

00:33:12.380 --> 00:33:12.500
but,

00:33:12.940 --> 00:33:16.560
but don't expect people maintaining your own code to be a hundred times

00:33:16.720 --> 00:33:16.880
faster.

00:33:17.360 --> 00:33:19.220
The reason why it was passed to me was,

00:33:19.700 --> 00:33:21.240
was because there's this great line.

00:33:21.260 --> 00:33:22.580
If I could see if I can find it,

00:33:22.760 --> 00:33:25.040
I test pushing code that fails.

00:33:25.180 --> 00:33:27.180
Pytest is unacceptable and embarrassing.

00:33:27.560 --> 00:33:30.860
Apparently this is a, a, like a,

00:33:31.210 --> 00:33:37.260
an instruction that somebody has in their markdown files to instruct Claude to,

00:33:37.730 --> 00:33:41.320
to always run the PyTist and be embarrassed if they don't.

00:33:42.100 --> 00:33:42.960
I love it.

00:33:43.140 --> 00:33:43.620
This is good.

00:33:44.190 --> 00:33:46.300
But anyway, those are my extras.

00:33:46.410 --> 00:33:47.020
I actually,

00:33:47.110 --> 00:33:50.460
I think this is a well-written article for somebody that doesn't understand

00:33:51.380 --> 00:33:52.600
apparently this part of this, the,

00:33:52.760 --> 00:33:55.940
the author was has been covering the tech world for a while.

00:33:55.990 --> 00:33:56.640
So nice.

00:33:57.540 --> 00:33:59.360
And also, pytest got into the New York Times.

00:34:00.780 --> 00:34:01.640
Yeah, that's pretty cool.

00:34:02.100 --> 00:34:03.500
Anyway, what you got extra for us?

00:34:03.740 --> 00:34:04.120
All right.

00:34:04.400 --> 00:34:05.800
Well, I've got a few.

00:34:06.180 --> 00:34:07.440
Let's start with TalkByThonTraining.

00:34:08.440 --> 00:34:10.260
By per request from one of the users,

00:34:10.310 --> 00:34:12.240
they said, hey, I would be really great if I could,

00:34:12.639 --> 00:34:14.679
when I log into my account, have more information.

00:34:14.770 --> 00:34:18.200
So I updated the people who have accounts there.

00:34:18.540 --> 00:34:20.379
If you go log into your account,

00:34:20.379 --> 00:34:23.220
it will show you all the courses you are actively learning.

00:34:23.620 --> 00:34:25.080
I have 48 of them.

00:34:25.740 --> 00:34:26.720
I haven't finished a bunch of them.

00:34:27.020 --> 00:34:29.639
People might be like, Michael, you have courses on the website.

00:34:29.770 --> 00:34:30.280
You haven't finished.

00:34:30.540 --> 00:34:33.639
By the time it gets to the website, I've watched the videos two to three times.

00:34:33.770 --> 00:34:38.720
I don't have to watch them a fourth time in sequence and have the system record me watching them.

00:34:39.080 --> 00:34:39.960
So no, they're not all done.

00:34:39.970 --> 00:34:43.220
But it'll show you things like the ones you're working on, how far are you through,

00:34:43.600 --> 00:34:45.679
and when did you last watch it, and when did you start?

00:34:45.940 --> 00:34:51.520
Apparently, this is things like if you're submitting this as a training evidence for your employer,

00:34:51.800 --> 00:34:55.379
knowing when you started, when you finished, and so on, and whatever, how far you are.

00:34:55.679 --> 00:34:56.500
There's also a whole bunch.

00:34:56.500 --> 00:34:57.540
It shows you completed ones.

00:34:57.720 --> 00:35:00.800
I'm going to be generating certificates for people.

00:35:01.580 --> 00:35:03.440
It's easy enough for me to make PDF downloads,

00:35:03.700 --> 00:35:05.060
but I want to make stuff that you could say,

00:35:05.260 --> 00:35:07.840
post to your LinkedIn profile as an accomplishment.

00:35:09.100 --> 00:35:12.140
I've done the FastAPI course at Talk Python

00:35:12.230 --> 00:35:14.600
as part of your LinkedIn record and other places

00:35:14.630 --> 00:35:15.580
you can put those kinds of things.

00:35:16.050 --> 00:35:17.480
So it's not as simple as just a PDF,

00:35:18.040 --> 00:35:19.280
but hopefully stuff like that comes.

00:35:19.340 --> 00:35:20.320
Anyway, this was fun to build.

00:35:20.700 --> 00:35:21.560
I think it looks really neat.

00:35:21.760 --> 00:35:24.900
I think especially if somebody is buying the bundle,

00:35:25.200 --> 00:35:30.460
they have access to a ton of courses and they might not remember like what course was I taking last

00:35:30.840 --> 00:35:34.380
month? Exactly. You didn't even buy it, but you took it. Then you forgot which one you're doing.

00:35:34.520 --> 00:35:38.500
This totally solves that problem. Yeah. Yeah. Exactly. Cool. Yeah. That's what the request was

00:35:38.640 --> 00:35:42.320
like. I know I took a course. I don't remember which one I was working on in which order would,

00:35:42.520 --> 00:35:45.860
you know, help me get back to that. And then of course, when you're in, in a course, it has a

00:35:46.020 --> 00:35:49.740
resume button. So you just click that to presume what you left off, but it doesn't have a cross

00:35:50.140 --> 00:35:54.619
cutting resume. You know what I mean? I do like that. How you split it up so that if, like you

00:35:54.640 --> 00:35:58.440
said, if I took the whole course and there's something I want to go back and review, I can

00:35:58.540 --> 00:36:01.980
just look through and go and watch those videos. It's labeled well.

00:36:02.560 --> 00:36:09.520
Yeah, thanks a bunch. All right. I talked about using latency to increase security for

00:36:09.880 --> 00:36:15.560
supply chain stuff, right? Like, hey, if I do a pip, a uv pip update or upgrade sort of thing,

00:36:15.720 --> 00:36:22.020
or similarly with sync and add and so on, just doing like an exclude newer than or whatever,

00:36:22.620 --> 00:36:24.840
Give it seven days or a week or however you do it.

00:36:25.120 --> 00:36:28.900
There's this article by Andrew Nespen that says package managers need to chill.

00:36:30.180 --> 00:36:35.780
And right at the top, we have this post requested by Seth Larson, the security guy at the PSF.

00:36:36.100 --> 00:36:41.840
So yeah, anyway, it talks about all the different, how you make your dependency manager cool, chill.

00:36:42.080 --> 00:36:44.460
Like uv has an exclude newer, which I've been using.

00:36:44.880 --> 00:36:50.180
And it's mostly awesome, except for when there's a vulnerability that appears in one and you get a notification that you got to fix it.

00:36:50.260 --> 00:36:51.960
but it just came out the fix.

00:36:52.270 --> 00:36:53.360
So you don't want to exclude it.

00:36:54.580 --> 00:36:59.000
But in general, it's, I think, a better thing than not.

00:36:59.880 --> 00:37:00.580
Remind me why?

00:37:00.770 --> 00:37:02.300
Why would you want to exclude newer stuff?

00:37:02.560 --> 00:37:04.040
Because for popular packages,

00:37:04.410 --> 00:37:07.820
if somebody uploads a virus inside the package,

00:37:08.080 --> 00:37:10.280
like they take over the build chain

00:37:10.470 --> 00:37:12.760
or they fish the person who created it,

00:37:12.760 --> 00:37:14.560
like the sake shared it, they fish Dan,

00:37:14.860 --> 00:37:16.340
they get access to his GitHub

00:37:16.600 --> 00:37:18.179
and they install a subtle thing

00:37:18.200 --> 00:37:23.800
that downloads some rootkit or whatever info stealer to your account, that usually gets

00:37:24.100 --> 00:37:25.580
found within the first couple of days.

00:37:26.100 --> 00:37:30.740
And if you're always just going update, update, update, give me the latest, give me the latest,

00:37:31.220 --> 00:37:34.120
you know, the chances that you hit that are pretty high, right?

00:37:34.240 --> 00:37:35.920
Cause they won't get found in the first hour.

00:37:36.400 --> 00:37:40.060
Even if it's found in the first hour, will people be able to react and communicate within

00:37:40.150 --> 00:37:41.240
the first hour to deal with it?

00:37:41.350 --> 00:37:46.340
You know, but if you just say, give it a week, like probably most of the popular ones, if

00:37:46.460 --> 00:37:48.040
there was something wrong, it would have been found out.

00:37:48.140 --> 00:37:49.840
by then. But okay, what if it

00:37:50.340 --> 00:37:51.920
got found out and

00:37:52.220 --> 00:37:54.160
got fixed and the weak

00:37:54.420 --> 00:37:55.740
boundary is there and I like

00:37:55.980 --> 00:37:58.100
upload the weak old one that has

00:37:58.650 --> 00:38:00.080
the bug or do they remove it

00:38:00.240 --> 00:38:02.080
completely from there? If there was a virus, they

00:38:02.280 --> 00:38:04.120
remove it from PyPI. Okay. It's not

00:38:04.170 --> 00:38:05.900
even there, even if somebody picks an old one.

00:38:06.190 --> 00:38:08.000
Exactly. I knew that. I was just

00:38:08.140 --> 00:38:09.620
sort of playing along. Yeah, yeah.

00:38:10.050 --> 00:38:11.260
Yeah, yeah. Exactly. Yeah.

00:38:12.300 --> 00:38:14.060
So basically, just more

00:38:14.200 --> 00:38:15.860
people singing the same message, but this is a nice

00:38:16.100 --> 00:38:18.020
cross technology. Are you in.NET? Are you in Ruby?

00:38:18.100 --> 00:38:23.980
here in JavaScript. Here's how you make it chill. Okay. So back to AI real quick. Paul Everitt and

00:38:24.060 --> 00:38:29.560
I did this video debate, although it was not that much of a debate, but it was more of a

00:38:29.960 --> 00:38:35.840
conversation, but in kind of debate format about will AI kill open source? Not the licensing part

00:38:35.840 --> 00:38:41.180
of it, but just will it make open source unnecessary? Will it just stop using open source and so on?

00:38:41.370 --> 00:38:45.999
We don't think so, but we had a really nice chat and did a little quick write-up, but mostly the

00:38:46.140 --> 00:38:50.120
write-up links to the video. So check out the video. I also did a write-up called always activate

00:38:50.420 --> 00:38:55.340
the VE and V, a shell script. So I talked about this before, I believe. This is not the thing.

00:38:55.640 --> 00:39:00.520
This is the lead into the thing I want to talk about. And so as I change directories around my

00:39:00.860 --> 00:39:06.040
computer with just the terminal, it automatically finds and activates virtual environments. But

00:39:06.220 --> 00:39:11.259
there's like, this was a thing in dir-inf. They said, well, we can't do this. What if somebody

00:39:11.320 --> 00:39:19.120
maliciously sends some kind of virus and like commits a virus called VE and V into the repo.

00:39:19.640 --> 00:39:21.500
And like it runs the activate script.

00:39:21.630 --> 00:39:23.420
What if that activate script is malicious?

00:39:23.760 --> 00:39:24.540
You know, that kind of thing.

00:39:24.860 --> 00:39:32.280
So with some nice feedback from Scott H, I made a much more secure version that whitelists

00:39:32.480 --> 00:39:32.560
them.

00:39:32.690 --> 00:39:36.700
And if it's not whitelisted, it says, hey, do you really trust this thing or do you not?

00:39:36.710 --> 00:39:40.699
Because you might just open up a folder and go, oh my gosh, there was a virtual environment

00:39:40.720 --> 00:39:43.640
somewhere and it activated and ran something that I didn't know was going to happen. Right.

00:39:44.060 --> 00:39:47.740
All that I think is super polished and really nice and I'm loving it. So here's the news.

00:39:49.200 --> 00:39:58.140
Viraj Kenwande said, I wrote the antidote for ZSH plugin management and I ran across Michael's

00:39:58.380 --> 00:40:04.759
secure aware virtual environment activator script, which was pretty awesome. So this is now a Zshell

00:40:04.760 --> 00:40:10.860
plugin or ohmyzsh plugin a z sh safe v and v auto is what it's called which i thought it's

00:40:10.870 --> 00:40:15.620
pretty awesome that's pretty cool yeah all right that's it for my extras cool we each got a joke

00:40:15.710 --> 00:40:22.060
right uh yeah i took mine down though uh so i'm gonna have to rely on you to bring it into your

00:40:22.420 --> 00:40:28.600
thing so all right i'll find it no worries so this one is so good and it follows this ai theme

00:40:28.680 --> 00:40:33.959
that we've been going i remember the stack overflow keyboard and this is exactly the same

00:40:33.980 --> 00:40:38.080
Vive is the Stack Overflow keyboard. The Stack Overflow keyboard was like the coder's keyboard,

00:40:38.610 --> 00:40:43.760
and it's had a control and a C and a V for the joke of just copy and pasting from Stack Overflow.

00:40:44.170 --> 00:40:49.080
Yeah. Well, if you've done anything with Claude Code, it often asks permissions to make changes,

00:40:49.580 --> 00:40:54.260
and it says, do you want to allow this once, allow this always, or do you want to reject this change?

00:40:54.720 --> 00:41:00.360
And so it's the super fancy Apple-looking keyboard that just says, allow once, always allow, or reject.

00:41:00.860 --> 00:41:02.240
So this is funny on its own.

00:41:02.250 --> 00:41:03.420
You all have to check out the picture.

00:41:03.710 --> 00:41:04.680
I put it in the show notes.

00:41:04.840 --> 00:41:07.160
It may or may not show up in your podcast player.

00:41:07.490 --> 00:41:07.900
I don't know.

00:41:08.000 --> 00:41:10.020
Maybe I can, I'll just make it the poster art.

00:41:10.740 --> 00:41:14.620
But also there's two, there's two, too many buttons.

00:41:14.750 --> 00:41:16.760
I think you just all need allow always.

00:41:17.220 --> 00:41:17.920
I know.

00:41:18.290 --> 00:41:22.520
Well, let's, let's review the comments because, oh my gosh, they're so good.

00:41:22.620 --> 00:41:24.000
There's 223 comments.

00:41:24.460 --> 00:41:24.860
Yeah, exactly.

00:41:25.280 --> 00:41:26.920
Issue says, waste of two buttons.

00:41:27.320 --> 00:41:30.240
A truly productive agent should only have allow all.

00:41:31.080 --> 00:41:39.160
um somebody this is like the remember the little joke last week that was like so you're new to uh

00:41:39.360 --> 00:41:43.900
sarcasm the person that looks like an ai generated image yeah exactly it didn't obviously

00:41:46.440 --> 00:41:50.640
and there's the secret button dangerously skip permissions somebody added it to their stream

00:41:50.710 --> 00:41:56.039
deck for real that it actually allows it yeah matt says too too many buttons but if we go down

00:41:56.320 --> 00:41:56.980
Oh my gosh.

00:41:57.520 --> 00:42:01.880
There's, there's, there's, this is the one, the actual one, Brian.

00:42:02.360 --> 00:42:04.140
There's, there's a used version.

00:42:04.540 --> 00:42:09.460
It says update after day one, it shows the same picture, but the allow always is like

00:42:09.860 --> 00:42:10.960
cracked and smashed.

00:42:10.960 --> 00:42:12.920
And just like, it's just been hit like brutally.

00:42:13.480 --> 00:42:14.420
Just used, yes.

00:42:16.080 --> 00:42:18.100
Oh, this is really good.

00:42:18.600 --> 00:42:20.380
And so someone says, you got to be safe.

00:42:20.480 --> 00:42:24.600
And they create a little like Rube Goldberg machine that just like automates hitting allow

00:42:24.920 --> 00:42:25.640
once, but forever.

00:42:25.960 --> 00:42:30.060
Yeah, just a little bobber thing that just hits it all the time.

00:42:30.320 --> 00:42:30.580
That's funny.

00:42:30.800 --> 00:42:32.960
Yeah, Devon says, no, no, no, we need the--

00:42:33.460 --> 00:42:36.220
Claude code will say, I got to ask you a few questions.

00:42:36.700 --> 00:42:37.580
Here's three options.

00:42:37.670 --> 00:42:38.740
Do you want one, two, or three?

00:42:38.770 --> 00:42:39.700
Or sometimes there's four.

00:42:39.900 --> 00:42:40.840
Or you got to choose other.

00:42:41.040 --> 00:42:43.980
So there's one that has a second row that says one, two, three, four, other.

00:42:45.040 --> 00:42:46.040
I would actually use that.

00:42:46.779 --> 00:42:47.460
I know.

00:42:47.600 --> 00:42:48.280
It's so good.

00:42:48.340 --> 00:42:50.940
Another one has the three, the allow ones.

00:42:51.050 --> 00:42:51.860
Allow always rejected.

00:42:51.970 --> 00:42:54.220
It has a microphone button to dictate to it.

00:42:54.700 --> 00:42:55.880
These are so good.

00:42:56.380 --> 00:42:57.420
You got to look at the comments.

00:42:58.240 --> 00:42:58.860
That's funny.

00:42:59.300 --> 00:42:59.560
Anyway.

00:43:00.600 --> 00:43:00.920
That's good.

00:43:01.260 --> 00:43:01.820
Yeah, that's my joke.

00:43:02.180 --> 00:43:05.800
But my favorite one of it is where it's like crushed with like after day one.

00:43:06.840 --> 00:43:07.020
Yeah.

00:43:07.540 --> 00:43:10.180
So, well, let me try to get mine up.

00:43:10.480 --> 00:43:10.860
Let's see.

00:43:11.360 --> 00:43:13.140
I can pull it for you if you don't have me yet.

00:43:13.200 --> 00:43:13.320
Okay.

00:43:13.600 --> 00:43:16.160
Yeah, just go ahead and pull that link up or something or the picture.

00:43:17.120 --> 00:43:20.780
So this was submitted with something else submitted by Paul Cutler.

00:43:21.460 --> 00:43:22.900
Has some news about AI too.

00:43:24.080 --> 00:43:25.000
Are you getting it?

00:43:25.000 --> 00:43:25.480
You want me to?

00:43:25.680 --> 00:43:26.340
I get it.

00:43:26.420 --> 00:43:26.880
It's just slow.

00:43:27.100 --> 00:43:27.280
Okay.

00:43:27.440 --> 00:43:28.280
It's just slow loading.

00:43:28.410 --> 00:43:28.820
There we go.

00:43:29.070 --> 00:43:33.560
So set this over on Mastodon, Paul Cutler.

00:43:33.940 --> 00:43:42.240
Today, it was mandated at work that we install Claude Code because, as they said, it has built-in PowerPoint creation capabilities.

00:43:43.340 --> 00:43:44.120
What a reason.

00:43:44.480 --> 00:43:44.980
FML.

00:43:46.000 --> 00:43:46.140
Yeah.

00:43:46.740 --> 00:43:51.600
Because you know what's coming next, hour-long meetings with lots of PowerPoint.

00:43:52.060 --> 00:43:54.180
You know, I thought this was super funny at first,

00:43:54.240 --> 00:43:57.380
but also like it drives me kind of nuts with it

00:43:57.560 --> 00:43:59.020
because, you know, I'm a coder.

00:43:59.180 --> 00:44:00.940
So if I have to write a PowerPoint presentation,

00:44:01.320 --> 00:44:01.880
it's unusual.

00:44:03.000 --> 00:44:05.060
So this probably is a good idea

00:44:05.320 --> 00:44:06.560
that I could save some time

00:44:06.760 --> 00:44:08.620
and not waste time on creating PowerPoint.

00:44:08.980 --> 00:44:10.040
So yeah, no kidding.

00:44:10.160 --> 00:44:12.500
Well, it's actually, it's a pretty neat integration.

00:44:12.860 --> 00:44:14.340
It's not just that it knows how to do PowerPoint,

00:44:14.600 --> 00:44:17.740
but if you open up the Claude desktop app,

00:44:17.780 --> 00:44:19.080
the same one that does co-work,

00:44:19.580 --> 00:44:24.620
It has like a little what's new button and you click it and it says install into PowerPoint.

00:44:24.820 --> 00:44:29.640
And it actually adds like a Claude section inside of your PowerPoint presentation.

00:44:30.460 --> 00:44:30.820
Why?

00:44:31.760 --> 00:44:35.880
So you could like highlight a picture and say, could we get a different picture for this or highlight the text?

00:44:35.900 --> 00:44:38.260
And could you could you animate this in from the left?

00:44:38.640 --> 00:44:41.300
Oh, like not while you're presenting, though?

00:44:41.760 --> 00:44:43.380
Like, no, it's during the building time.

00:44:43.680 --> 00:44:44.860
OK, yeah, that makes more sense.

00:44:44.880 --> 00:44:48.200
You know, you got like format picture animation tab and then you've got Claude now.

00:44:48.280 --> 00:44:53.140
Yeah, it's actually pretty as opposed to just read my PowerPoint file and do this, you know.

00:44:53.600 --> 00:44:53.900
Sorry, Paul.

00:44:54.160 --> 00:44:55.880
I want it to be during the presentation.

00:44:56.060 --> 00:45:00.740
So when you're presenting and go, hey, Claude, does anybody in the audience stopped at Starbucks

00:45:01.420 --> 00:45:04.320
before they got here or something like that?

00:45:04.640 --> 00:45:05.960
I forgot what I'm talking about, Claude.

00:45:06.140 --> 00:45:07.360
Please tell the audience what this means.

00:45:09.000 --> 00:45:09.160
Yeah.

00:45:09.520 --> 00:45:09.640
Anyway.

00:45:10.000 --> 00:45:10.080
Yeah.

00:45:10.660 --> 00:45:10.840
Awesome.

00:45:11.240 --> 00:45:13.680
Well, fun talking with you as always.

00:45:13.980 --> 00:45:22.600
And I don't know if we need to change the name of the podcast to like Claude Bytes or probably not.

00:45:22.640 --> 00:45:23.240
I don't think so.

00:45:23.560 --> 00:45:28.000
But I mean, honestly, it's a good point.

00:45:28.220 --> 00:45:38.580
But as a meta comment for the audience out there, it's really challenging to cover this stuff because so much of the energy in software development and tech in general is in AI.

00:45:39.060 --> 00:45:39.140
Yeah.

00:45:39.320 --> 00:45:43.560
But we obviously realize that there's plenty of stuff that's not really AI at all.

00:45:43.820 --> 00:45:48.720
At the same time, it's transforming the industry, basically like the web, when the web came around.

00:45:49.140 --> 00:45:53.660
And it's like, well, now we have the web, but we don't talk about it because it's, I don't know, it's tough.

00:45:53.880 --> 00:45:54.180
It's a balance.

00:45:54.600 --> 00:46:02.600
Also, I just am aware that there's people that care about Python, but also they have to care about this right now, whether they want to or not.

00:46:02.940 --> 00:46:05.180
So it's something I'm willing to cover as well.

00:46:05.840 --> 00:46:05.980
Yeah.

00:46:06.660 --> 00:46:07.500
And it's wild.

00:46:07.800 --> 00:46:08.940
May we live in interesting times.

00:46:10.140 --> 00:46:10.220
Bye.

00:46:10.320 --> 00:46:10.640
Later, Brian.