WEBVTT

00:00:00.000 --> 00:00:08.300
Hey, everybody. Hey, Michael. It's great to be back. So we kick it off.

00:00:09.140 --> 00:00:11.120
Let's kick it off. Let's do it.

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

00:00:18.400 --> 00:00:25.320
This is episode 473, recorded March 16th, 2026. And I am Brian Okken.

00:00:25.740 --> 00:00:26.960
And I'm Michael Kennedy.

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

00:00:34.060 --> 00:00:40.340
For everybody that supports the show through Patreon or through mostly through a lot of our offerings,

00:00:40.420 --> 00:00:47.560
like the courses at Talk Python Training and PythonTest.com and books.

00:00:47.720 --> 00:00:53.140
We've got lovely books coming along. I might bring up a book later in the show, but we'll talk about it.

00:00:53.440 --> 00:00:56.300
Anyway, thanks a lot for everybody supporting us.

00:00:56.300 --> 00:01:03.220
It keeps us going. And also thank you to everybody that sends in topic ideas, either by going to

00:01:03.220 --> 00:01:11.480
pythonbytes.fm and submitting something through the contact form, or we're going ahead and sending it to us on socials.

00:01:11.480 --> 00:01:20.560
So we're at BlueSky and at Mastodon, and all those links are in the show notes, or at pythonbytes.fm.

00:01:21.140 --> 00:01:26.120
You also can watch the show if you'd like, either real time or after the fact.

00:01:26.400 --> 00:01:30.720
You can join us at pythonbytes.fm/live and be part of the audience.

00:01:30.720 --> 00:01:39.220
And one of the fun things about that is while we're recording this, you can add comments, and we might comment back or highlight your comment.

00:01:39.340 --> 00:01:39.780
That's fun.

00:01:39.780 --> 00:01:51.520
Anyway, the last thing I want to bring up is that you don't have to take any notes while we're talking because it's all the stuff is on the show notes to links.

00:01:51.520 --> 00:02:05.520
But if you'd like that delivered right to your inbox, plus a little background information, some extra stuff, especially helpful for if we're covering a topic that you're slightly thinking about, but maybe not, we'll send you some extra information.

00:02:06.240 --> 00:02:12.140
And you just sign up to be a friend of the show at pythonbytes.fm and say, join the newsletter.

00:02:12.640 --> 00:02:15.500
So with that, what do we have to start with?

00:02:15.500 --> 00:02:19.720
Well, I've got a doozy, as they say.

00:02:19.940 --> 00:02:20.400
A doozy.

00:02:20.480 --> 00:02:22.980
And this one comes to us from Ian Lessing.

00:02:23.100 --> 00:02:27.040
So thank you for sending it in to your point about sending us ideas about the show.

00:02:27.240 --> 00:02:30.520
This one somehow missed my radar, but shouldn't have.

00:02:31.160 --> 00:02:34.840
So, yeah, it's a big one.

00:02:35.740 --> 00:02:40.680
So this, you probably have seen char debt as in character debt.

00:02:40.800 --> 00:02:41.840
Maybe it's care debt.

00:02:42.060 --> 00:02:42.380
I don't know.

00:02:42.380 --> 00:02:44.700
I'm always, you know, sidebar.

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

00:02:53.180 --> 00:02:56.980
You know, it's, if you pronounce it L-I-B, I think it goes lib.

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

00:02:59.820 --> 00:03:00.300
I don't know.

00:03:00.600 --> 00:03:00.920
So anyway.

00:03:01.040 --> 00:03:01.900
No, because that's weird.

00:03:02.420 --> 00:03:03.220
I know it is weird.

00:03:03.220 --> 00:03:17.240
So, car debt is a library that I believe was originally done, originally created by Mark Pilgrim, but now is maintained by Dan Blanchard.

00:03:17.240 --> 00:03:23.920
So I think this alone makes it interesting because there's something happening with this project.

00:03:23.920 --> 00:03:30.460
And a lot of people are pushing back, saying the maintainer can't make a change to it, but they're the maintainer.

00:03:30.720 --> 00:03:32.500
Like, I don't want you to, but you can't.

00:03:32.500 --> 00:03:34.100
So here's the headline.

00:03:34.740 --> 00:03:40.340
Care debt, does the care debt dispute shows how AI will kill software licensing, argues Bruce Perens.

00:03:41.300 --> 00:03:41.600
Perens.

00:03:42.540 --> 00:03:44.900
And subtitles comes from the register.

00:03:45.060 --> 00:03:49.920
Alarm bells are ringing in the open source community, but commercial licensing is also at risk.

00:03:49.920 --> 00:03:52.520
So, told you it's a doozy.

00:03:52.640 --> 00:03:53.400
What is going on?

00:03:53.720 --> 00:04:02.960
So earlier this week, Dan Blanchard, and I want to point out, the maintainer of the library, released a new version of the library under a new software license.

00:04:02.960 --> 00:04:08.160
It was LGPL, and he released it under MIT.

00:04:09.520 --> 00:04:16.860
In doing so, he may have killed Copy Left because, well, MIT is a do-whatever-you-want-just-don't-sue-me-about-it, you know what I mean?

00:04:16.860 --> 00:04:20.580
License, which almost all the stuff that I do is MIT as well.

00:04:20.640 --> 00:04:24.720
I just want people to just, I'd rather have people just have access to do whatever.

00:04:24.940 --> 00:04:30.860
Like, I don't want people to just, hey, could I get an exception to use this for this thing like that?

00:04:30.940 --> 00:04:33.400
Like, nothing I'm doing is that important, you know?

00:04:34.080 --> 00:04:40.900
Yeah, and I think of the MIT stuff as, like, a good license if you don't care if people use it in their commercial product.

00:04:41.580 --> 00:04:41.820
Yes.

00:04:42.480 --> 00:04:42.920
So.

00:04:42.920 --> 00:04:49.300
And look, if it's okay, I was not familiar with what this is.

00:04:49.440 --> 00:04:50.640
I still don't quite get.

00:04:50.740 --> 00:04:52.420
What does Caradet do?

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

00:04:59.380 --> 00:04:59.700
Let me see.

00:04:59.780 --> 00:05:02.680
It has 130 million downloads a month.

00:05:03.360 --> 00:05:06.480
So it's used by a lot of things.

00:05:07.920 --> 00:05:08.360
Okay.

00:05:08.580 --> 00:05:09.720
Character encoding detector.

00:05:09.720 --> 00:05:10.820
Yes, yeah, exactly.

00:05:11.000 --> 00:05:13.220
Like, UTF, I think, you know.

00:05:13.300 --> 00:05:18.020
Is this UTF or Unicode or is it, how do I have bytes, what am I going to do, you know?

00:05:18.580 --> 00:05:19.040
Yeah, okay.

00:05:19.040 --> 00:05:19.880
So it takes a guess, right?

00:05:20.380 --> 00:05:20.580
Right.

00:05:20.880 --> 00:05:22.620
You're getting bytes and you're not really sure.

00:05:22.760 --> 00:05:24.580
It's like, wasn't declared or whatever.

00:05:24.580 --> 00:05:29.100
So previously this was an LGPL project.

00:05:30.240 --> 00:05:34.600
Dan Blanchard wanted two things from what I can read between the lines.

00:05:35.120 --> 00:05:36.400
Putting words into their mouth.

00:05:37.440 --> 00:05:43.300
One, wanted to dramatically improve this library to make it better.

00:05:44.160 --> 00:05:44.520
Check.

00:05:44.800 --> 00:05:45.800
You'll see he did that.

00:05:45.800 --> 00:05:53.020
Two, wanted to set the stage such that this can just be part of Python.

00:05:53.260 --> 00:05:55.040
Like, could this just be part of the standard library?

00:05:55.900 --> 00:06:01.160
So previously, like, there's this move to say we should have less in Python.

00:06:01.320 --> 00:06:01.940
And I agree.

00:06:02.060 --> 00:06:06.600
But detecting whether or not something is Unicode or ASCII or whatever,

00:06:07.620 --> 00:06:08.920
maybe that does belong in the library.

00:06:09.020 --> 00:06:09.860
Anyway, that was the goal.

00:06:09.900 --> 00:06:10.800
It's like, could we put it in there?

00:06:10.800 --> 00:06:12.340
Well, LGPL says no.

00:06:13.140 --> 00:06:15.700
It would change the license of Python, I believe.

00:06:16.660 --> 00:06:16.860
Right?

00:06:17.100 --> 00:06:20.140
So as long as it's a GPL-based license,

00:06:20.600 --> 00:06:23.200
you can't move this library into the standard library.

00:06:23.740 --> 00:06:26.860
I don't know if the core developers or even if Dan is a core developer

00:06:26.860 --> 00:06:28.380
was interested in this.

00:06:28.760 --> 00:06:31.220
But that was one of the goals, right?

00:06:31.620 --> 00:06:33.960
So no problem.

00:06:33.960 --> 00:06:34.800
We're going to change it.

00:06:34.940 --> 00:06:38.400
Well, an individual claiming to be Mark Pilgrim

00:06:38.400 --> 00:06:42.020
because you can't verify people on the internet for sure.

00:06:42.380 --> 00:06:44.080
The original created the library.

00:06:44.420 --> 00:06:47.440
So it's a little bit like Flask where Armin Roeneker created it

00:06:47.440 --> 00:06:49.340
and then now David Lord maintains it.

00:06:49.800 --> 00:06:51.680
And David Lord gets to do whatever he wants with it.

00:06:51.720 --> 00:06:53.780
It's his project now as the maintainer.

00:06:54.980 --> 00:06:59.540
But I'm sure Armin still has influence over the community's opinion

00:06:59.540 --> 00:07:02.600
if he were to take a strong position one way or the other, right?

00:07:03.180 --> 00:07:05.440
Neither of them chimed into this as far as I know.

00:07:05.700 --> 00:07:06.480
I don't think.

00:07:06.580 --> 00:07:07.180
Maybe Armin did.

00:07:07.240 --> 00:07:07.720
I can't remember.

00:07:07.720 --> 00:07:10.220
But there's a lot of chat about it.

00:07:10.240 --> 00:07:12.340
I still think it's kind of like giving somebody a puppy

00:07:12.340 --> 00:07:15.800
and then telling them what they have to, where they have to take it,

00:07:15.980 --> 00:07:17.200
what vet they have to take it to.

00:07:17.620 --> 00:07:18.200
Yes, exactly.

00:07:18.300 --> 00:07:18.780
Yeah, exactly.

00:07:19.400 --> 00:07:24.040
I'm leaning on the side of Dan Blanchard here, just setting the state.

00:07:24.120 --> 00:07:27.160
I have a slight, there's a lot of complexity in this.

00:07:27.300 --> 00:07:30.100
So I'm not like totally just saying this is how it is.

00:07:30.240 --> 00:07:32.800
But let's keep setting the stage.

00:07:32.940 --> 00:07:35.300
So Mark says, you can't do that.

00:07:35.300 --> 00:07:37.720
You can't change an LPGL.

00:07:38.600 --> 00:07:39.760
I believe that's the typo.

00:07:39.920 --> 00:07:41.800
LGPL license requirement.

00:07:42.020 --> 00:07:44.780
It requires that the license remain unchanged.

00:07:45.780 --> 00:07:50.020
License code, when modified, must be released under the same GPL license.

00:07:50.020 --> 00:07:58.020
But I get that when somebody gets it from the source, they make a change.

00:07:58.100 --> 00:07:59.880
It must be released under the same license.

00:08:00.500 --> 00:08:05.040
As the owner of the project, I thought you could change the license on Nuco.

00:08:05.040 --> 00:08:06.640
I don't know.

00:08:08.080 --> 00:08:11.520
It's your software, effectively.

00:08:11.880 --> 00:08:15.860
If you want to change the license of it, I don't know.

00:08:16.760 --> 00:08:20.380
This is a little bit of shaky ground here to say that you can't change the license.

00:08:20.380 --> 00:08:23.660
As the owner of the license, you know what I mean?

00:08:24.000 --> 00:08:27.400
Anyone else in the world should not, they have to follow what I just read.

00:08:27.480 --> 00:08:29.280
But as the owner of the license, is that true?

00:08:30.360 --> 00:08:32.400
Well, so here's what Dan did.

00:08:32.500 --> 00:08:36.640
Dan said, here's what, I'm going to create a new better version.

00:08:37.100 --> 00:08:41.820
I'm going to rewrite this entire project from scratch, not using any of its source code,

00:08:41.820 --> 00:08:46.420
and re-release it into the same package channel as the old one.

00:08:47.320 --> 00:08:47.420
Okay?

00:08:48.780 --> 00:08:55.080
Now, one of the problems under that is, as the maintainer, he's deeply familiar with how it works.

00:08:55.260 --> 00:08:59.500
And one of the challenges is, if you know how it works, your idea,

00:08:59.680 --> 00:09:05.080
it's like hard to do a fresh from scratch rewrite if it's burned into your mind,

00:09:05.220 --> 00:09:06.700
how it works, you know what I mean?

00:09:07.420 --> 00:09:11.640
So what he did is he just gave the specification to Claude.

00:09:11.640 --> 00:09:14.780
And said, Claude, write this so that the test pass.

00:09:16.060 --> 00:09:17.260
And Claude wrote it.

00:09:17.580 --> 00:09:20.340
And it wrote it extremely differently.

00:09:20.960 --> 00:09:27.680
There's a plagiarism detection algorithm.

00:09:28.700 --> 00:09:30.860
So it's probably more for English, but whatever.

00:09:31.420 --> 00:09:35.840
It said it is only 1% similar to version 6.

00:09:35.840 --> 00:09:38.040
Version 7 is only 1% similar to version 6.

00:09:38.040 --> 00:09:43.660
So that means it's pretty different.

00:09:44.260 --> 00:09:47.080
Dan also said it's like structurally the files are not named the same.

00:09:47.180 --> 00:09:48.400
They're not organized the same.

00:09:48.540 --> 00:09:50.900
It is basically not at all the same thing.

00:09:51.040 --> 00:09:51.280
Nothing.

00:09:51.860 --> 00:09:57.500
The only thing that's that 1% is like argparse structure and stuff because you have the same arguments, you know?

00:09:57.500 --> 00:10:02.880
And so they believe there's nothing here.

00:10:03.300 --> 00:10:04.680
This is a new project.

00:10:05.540 --> 00:10:07.580
This is what gets the MIT license.

00:10:08.260 --> 00:10:11.080
Now, to be clear, this is a mega improvement.

00:10:11.360 --> 00:10:16.820
It results in a 48 times improvement in detection speed.

00:10:16.820 --> 00:10:20.780
It now supports multi-threading for Python T.

00:10:21.520 --> 00:10:24.520
So you can do free-threaded Python and it supports that.

00:10:24.840 --> 00:10:27.760
There's a lot of benefits to this new version.

00:10:28.160 --> 00:10:32.780
So I don't think anyone is saying you've messed up the library.

00:10:33.160 --> 00:10:35.740
It's like clearly a better library.

00:10:35.740 --> 00:10:46.280
It's only this we hate AI or AI is theft or like there's a lot of these different angles that are like focusing in like a laser onto this change.

00:10:46.380 --> 00:10:46.940
You know what I mean?

00:10:47.740 --> 00:10:47.880
Yeah.

00:10:49.780 --> 00:10:54.800
So Dan says, I was just trying to accomplish these goals with the tools and times I had available.

00:10:55.820 --> 00:10:59.540
I'd never been paid to work on this and I have a full-time job, you know?

00:10:59.780 --> 00:11:05.120
Software licensing and the laws around it haven't been tested a lot in this new world of AI-assisted development.

00:11:05.120 --> 00:11:08.580
And a long-time open source developer, I'm also curious how this is going to shake out.

00:11:11.000 --> 00:11:11.400
Yeah.

00:11:12.200 --> 00:11:19.380
But somewhere it says, yeah, after maintaining this library for years, I've wanted to make these improvements, but I couldn't.

00:11:20.540 --> 00:11:23.440
Claude gave me the ability to do this in roughly five days.

00:11:24.660 --> 00:11:25.060
Right?

00:11:25.400 --> 00:11:27.760
So I think this is also really interesting.

00:11:28.460 --> 00:11:29.760
But why change the license?

00:11:30.600 --> 00:11:32.860
Because he wants to put it into Python.

00:11:34.200 --> 00:11:34.820
Oh, okay.

00:11:35.860 --> 00:11:36.080
Yeah.

00:11:37.360 --> 00:11:41.760
Or maybe he just wants people to be able to more freely use it and he just doesn't care about copyleft.

00:11:41.860 --> 00:11:42.980
I don't really know.

00:11:43.340 --> 00:11:48.940
But I believe, for the article makes it imply like he wants to put it into Python and LGPL to make that not possible.

00:11:48.940 --> 00:11:58.300
And Arnaker actually did, or Armin actually, Arnaker actually did post about this saying that he welcomed the license change and he's wanted it for years.

00:11:58.300 --> 00:12:01.740
That's kind of what I would expect that he wanted to say as well.

00:12:01.740 --> 00:12:14.660
Now, there's an issue that has been created that version 7 presents unacceptable legal risk to users due to the copyright controversy.

00:12:14.660 --> 00:12:18.660
There's so much.

00:12:18.660 --> 00:12:19.340
Why?

00:12:19.340 --> 00:12:20.720
So much.

00:12:20.980 --> 00:12:22.680
There is so much going on here.

00:12:23.060 --> 00:12:23.500
I don't know.

00:12:23.560 --> 00:12:30.780
Because to me, the license only goes from less restrictive to more permissive or more restrictive to more permissive.

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

00:12:39.440 --> 00:12:40.100
So I don't know.

00:12:40.180 --> 00:12:41.740
I'm telling you, there's a lot of...

00:12:41.740 --> 00:12:49.340
This may be the bigger issue is there's issue 327 fired by, I think, Mark Pilgrim.

00:12:49.440 --> 00:12:50.400
Hi, I'm Mark Pilgrim.

00:12:50.800 --> 00:12:53.240
The title is No Right to Relicense This Project.

00:12:53.480 --> 00:12:54.740
And it's absolutely...

00:12:56.740 --> 00:12:59.080
Toxic is the word.

00:12:59.340 --> 00:13:00.360
So I don't know.

00:13:00.460 --> 00:13:02.040
It's very interesting here.

00:13:02.780 --> 00:13:04.920
I mean, version 6 is still there.

00:13:04.920 --> 00:13:09.140
People can just keep using that or fork it if they want, if they still want the old license.

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

00:13:21.000 --> 00:13:24.380
I mean, how many people actually care that much about character detection?

00:13:25.400 --> 00:13:26.200
You know what I mean?

00:13:26.240 --> 00:13:27.220
I mean, it's a utility.

00:13:27.220 --> 00:13:27.860
Apparently a lot of people.

00:13:28.140 --> 00:13:28.980
I know a lot of...

00:13:28.980 --> 00:13:29.640
It's extreme.

00:13:29.800 --> 00:13:30.640
This is like...

00:13:30.640 --> 00:13:33.560
There are just pages of stuff to go through on all of this.

00:13:33.740 --> 00:13:34.720
Like page after page.

00:13:34.880 --> 00:13:36.060
It's crazy.

00:13:36.760 --> 00:13:37.260
So...

00:13:37.260 --> 00:13:38.120
Okay.

00:13:38.120 --> 00:13:40.080
I understand the sensitivity of it.

00:13:40.620 --> 00:13:41.780
I forgot my popcorn.

00:13:42.280 --> 00:13:42.780
I know.

00:13:43.080 --> 00:13:43.620
I know.

00:13:45.040 --> 00:13:53.600
And I get it that AI ingesting the world's work and then turning that into automation.

00:13:54.460 --> 00:13:56.900
I'm not even sure where that sits legally.

00:13:58.520 --> 00:14:01.020
At the time, it felt like a lot of theft.

00:14:01.120 --> 00:14:02.680
I'm not sure if it's a good trade-off or not.

00:14:04.120 --> 00:14:06.740
I don't care how that relates to this project, though.

00:14:06.740 --> 00:14:07.740
Okay.

00:14:08.740 --> 00:14:10.040
So let me add in one more detail.

00:14:10.100 --> 00:14:11.160
Like I said, there's a lot going on here.

00:14:11.240 --> 00:14:13.560
We'll wrap this up pretty soon, but it's a super interesting discussion.

00:14:14.100 --> 00:14:15.160
I think...

00:14:15.160 --> 00:14:17.420
So one of the reasons that said...

00:14:17.420 --> 00:14:18.580
She said, well, I did it with Claude Code.

00:14:18.660 --> 00:14:19.460
They said, well, it doesn't matter.

00:14:19.540 --> 00:14:20.800
Claude Code trained on GitHub.

00:14:21.140 --> 00:14:23.840
Therefore, it trained on the original source code of Caradet.

00:14:26.340 --> 00:14:29.160
Therefore, it's not a clean room reimplementation.

00:14:29.160 --> 00:14:31.160
So I asked...

00:14:31.160 --> 00:14:36.980
But I don't know if that matters because I can lead one company, go work at another company.

00:14:36.980 --> 00:14:43.280
As long as I don't take the source code, if I just take what I remember and do similar work, I'm allowed to do that.

00:14:43.280 --> 00:14:46.700
Yes, you're a human being that gets to interact in the world.

00:14:46.820 --> 00:14:47.260
Yeah, exactly.

00:14:47.880 --> 00:14:52.580
It's not like, well, I saw a picture once and it was of a tree and it was copyrighted.

00:14:52.580 --> 00:14:55.900
So I can never, ever create a picture of a tree again because I looked at it, right?

00:14:57.000 --> 00:14:57.320
Yeah.

00:14:57.680 --> 00:14:59.120
That's why I said I'm on the side of...

00:14:59.120 --> 00:15:01.340
I feel like I'm on Dan's side here.

00:15:02.140 --> 00:15:02.720
So I...

00:15:02.720 --> 00:15:03.700
Let me look.

00:15:03.800 --> 00:15:04.920
So I wrote a little...

00:15:04.920 --> 00:15:05.420
I didn't write.

00:15:05.620 --> 00:15:11.040
I asked Cloud for some research on like, well, what is the legal precedence of this?

00:15:11.040 --> 00:15:12.340
Here's the situation.

00:15:13.200 --> 00:15:18.860
At least in the US, are there rules, rulings that have come down previously?

00:15:18.860 --> 00:15:28.860
So I put a little document up for people to look at, but it says the closest precedence is this Thomas Reuters versus Ross Intelligence, where somebody...

00:15:28.860 --> 00:15:30.440
I can't remember who.

00:15:30.500 --> 00:15:41.020
They took a bunch of Westlaw head notes for legal advice and then did their own custom AI training on it.

00:15:41.040 --> 00:15:43.140
and built an exact tool for legal research.

00:15:43.460 --> 00:15:45.520
That turned out to be a violation.

00:15:46.700 --> 00:15:47.720
But the exists...

00:15:47.720 --> 00:15:48.900
This is interesting.

00:15:49.020 --> 00:15:52.340
The existing copyright framework requires two things to prove infringement.

00:15:52.520 --> 00:15:53.840
Access to the original work.

00:15:54.360 --> 00:15:54.620
Check.

00:15:54.840 --> 00:15:57.080
Cloud did have access to the original work.

00:15:57.360 --> 00:15:59.900
And substantial similarity in output.

00:16:00.460 --> 00:16:00.720
No.

00:16:00.980 --> 00:16:01.720
Not even close.

00:16:02.100 --> 00:16:03.860
Not even 1%.

00:16:03.860 --> 00:16:09.060
I know it's at 1.3%, but that was like structure of argpars.

00:16:09.060 --> 00:16:09.960
You know what I mean?

00:16:10.100 --> 00:16:11.760
That's argparse structure.

00:16:11.900 --> 00:16:14.040
That's not chardet structure, effectively.

00:16:15.280 --> 00:16:18.720
So I think this strongly fails.

00:16:19.240 --> 00:16:23.940
Those are the two criteria that you have to have to prove similarity.

00:16:23.940 --> 00:16:25.720
Hmm.

00:16:26.580 --> 00:16:26.840
Hmm.

00:16:27.260 --> 00:16:29.580
But there's other stuff.

00:16:30.420 --> 00:16:35.940
The emerging judicial consensus is that developing...

00:16:36.580 --> 00:16:42.200
Is developing that training a general purpose AI model is highly transformative, therefore is free use.

00:16:42.200 --> 00:16:45.500
But there were some specific examples where it wasn't.

00:16:46.100 --> 00:16:46.200
The copyright...

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

00:16:55.360 --> 00:17:06.100
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:17:07.240 --> 00:17:07.640
Period.

00:17:09.080 --> 00:17:09.820
You know what I mean?

00:17:10.080 --> 00:17:12.820
And I don't know how that's going to shake out, but it's so far down.

00:17:12.920 --> 00:17:14.960
I mean, let's take, like, the extreme case.

00:17:15.040 --> 00:17:16.080
And you go, well, you know what?

00:17:16.260 --> 00:17:20.620
All the current models have been trained on licensed stuff.

00:17:20.620 --> 00:17:24.140
So let's just, like, not really just start over.

00:17:24.320 --> 00:17:26.540
It's going to cost a ton of money to retrain a model.

00:17:27.440 --> 00:17:30.260
But do it right.

00:17:30.760 --> 00:17:31.540
Yeah, that's true.

00:17:31.540 --> 00:17:34.260
Only train on the stuff that's available license-wise.

00:17:34.820 --> 00:17:35.180
Right.

00:17:35.260 --> 00:17:37.460
You could just look and say, is it a GPL license?

00:17:37.560 --> 00:17:38.320
We're not trading on that.

00:17:38.380 --> 00:17:39.360
Is it an MIT license?

00:17:39.560 --> 00:17:40.060
It's on.

00:17:40.280 --> 00:17:40.700
You know what I mean?

00:17:40.760 --> 00:17:40.900
Yeah.

00:17:40.900 --> 00:17:44.320
There's probably plenty of information still out there to build out your models.

00:17:46.320 --> 00:17:48.320
Anyway, it's pretty wild.

00:17:48.320 --> 00:17:50.900
I think people can have a look.

00:17:51.620 --> 00:17:56.640
I would certainly say the folks who took the time to comment are very much against this.

00:17:56.940 --> 00:17:58.960
There's a lot of toxicity.

00:17:59.380 --> 00:18:05.420
And Dan's support going out to you just mentally because I've been on the receiving end of these types of things.

00:18:05.540 --> 00:18:06.320
And they're not fun.

00:18:07.580 --> 00:18:14.100
But I'm – I kind of – I think Dan has a point here.

00:18:14.100 --> 00:18:19.740
However, this could all be solved if he just said, okay, version 7 is char.2, new project.

00:18:20.880 --> 00:18:22.560
And just put like a strong warning.

00:18:22.700 --> 00:18:28.060
Like we will never change char.1 ever again except for security patches.

00:18:28.700 --> 00:18:30.840
And then all the things that depend upon it, go fine.

00:18:30.900 --> 00:18:31.760
We'll just take this one.

00:18:31.860 --> 00:18:35.360
Like I want 48 times faster and multi-threaded sounds better to me.

00:18:35.420 --> 00:18:36.060
Let's just do that.

00:18:36.060 --> 00:18:45.040
Yeah, and if like we push it too hard though, one option is he just stops maintaining it and doesn't transfer maintainership to anybody else.

00:18:45.560 --> 00:18:45.720
Yeah.

00:18:46.320 --> 00:18:47.560
And we don't want that either.

00:18:47.900 --> 00:18:48.780
So, yeah.

00:18:49.160 --> 00:18:49.540
Yeah.

00:18:50.100 --> 00:18:56.900
I certainly – I think this debate has far, far outgrown character encoding concerns.

00:18:57.160 --> 00:18:59.540
It's its own special lightning rod, like I said.

00:19:00.080 --> 00:19:00.320
Yeah.

00:19:00.820 --> 00:19:01.280
All right.

00:19:01.740 --> 00:19:02.120
Over to you.

00:19:02.120 --> 00:19:11.640
Can we talk – I got just a small tool that I – this is a small tool suggested by Matthias.

00:19:13.520 --> 00:19:16.640
Well, it's not a small tool, but it's quick to cover.

00:19:17.700 --> 00:19:18.640
Refined GitHub.

00:19:19.120 --> 00:19:20.980
And this is awesome.

00:19:21.220 --> 00:19:22.240
I didn't know about this.

00:19:22.640 --> 00:19:26.580
So, this is a web page or website?

00:19:27.660 --> 00:19:29.140
A web browser plug-in.

00:19:29.140 --> 00:19:29.800
Browser extension.

00:19:30.300 --> 00:19:31.200
Browser extension.

00:19:31.200 --> 00:19:32.040
Thank you.

00:19:32.780 --> 00:19:36.000
That does some cool stuff if you work with GitHub a lot.

00:19:36.500 --> 00:19:42.400
And I, you know, looking through this, I'm like, what's wrong with GitHub right now?

00:19:42.700 --> 00:19:44.440
Well, there's a bunch of stuff.

00:19:44.540 --> 00:19:46.540
The highlights, there's some highlights at the top.

00:19:47.120 --> 00:19:49.080
Makes white space characters visible.

00:19:49.820 --> 00:19:50.820
That's cool.

00:19:51.040 --> 00:19:56.260
So, I mean, that's cool enough to get this, but there's a lot more coming.

00:19:56.260 --> 00:20:01.720
Tells you whether you're looking at the latest version of the repository, if there's any unreleased commits.

00:20:02.500 --> 00:20:03.460
That's kind of neat.

00:20:04.260 --> 00:20:08.920
The – shows how far behind a PR head branch is.

00:20:09.080 --> 00:20:10.960
Tells you its base commit.

00:20:11.080 --> 00:20:12.040
There's a bunch of stuff here.

00:20:12.040 --> 00:20:18.040
I'm going to highlight down to some of the stuff that – one of the nice things, there's lots of features.

00:20:18.380 --> 00:20:21.240
But they put fire beside things that you might care about.

00:20:21.720 --> 00:20:25.340
Like, adds a build CI status icon next to the repo name.

00:20:25.700 --> 00:20:26.280
Love that.

00:20:27.160 --> 00:20:30.020
Adds a link back to the PR that ran the workflow.

00:20:30.020 --> 00:20:31.060
Oh, that's cool.

00:20:32.540 --> 00:20:37.840
The – this one, I installed it just for this one feature.

00:20:38.680 --> 00:20:42.660
Enables tab and shift tab for indentation in comment fields.

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

00:20:48.520 --> 00:20:51.540
I just want to put a tab in the field.

00:20:51.880 --> 00:20:52.360
Anyway.

00:20:52.600 --> 00:20:52.760
Yeah.

00:20:53.380 --> 00:20:54.200
So –

00:20:54.200 --> 00:20:55.860
For Python people, it might not matter that much.

00:20:55.860 --> 00:21:00.040
But if you're doing C++ or something, you don't want to mix spaces and titles.

00:21:00.040 --> 00:21:00.240
Well, I still hit tab.

00:21:00.400 --> 00:21:03.640
I just – I just expect it to add four spaces.

00:21:04.120 --> 00:21:05.660
But anyway.

00:21:07.820 --> 00:21:08.500
Let's see.

00:21:08.580 --> 00:21:10.220
Auto resize the commit field.

00:21:11.320 --> 00:21:12.460
Add reaction –

00:21:12.460 --> 00:21:16.200
Add reaction avatars showing who reacted to a comment.

00:21:16.280 --> 00:21:16.840
That's interesting.

00:21:17.500 --> 00:21:22.500
The other one that I want to highlight just to – because I think it's cool.

00:21:22.500 --> 00:21:25.780
It highlights the most useful comment in an issue.

00:21:26.500 --> 00:21:30.860
So it'll – you know, if there's a lot of people talking about a comment or whatever,

00:21:31.140 --> 00:21:32.500
it'll, you know, highlight that.

00:21:32.600 --> 00:21:33.540
So, you know, just scroll around.

00:21:34.980 --> 00:21:36.960
And actually, I haven't really noticed.

00:21:37.200 --> 00:21:38.640
I've turned this on.

00:21:39.120 --> 00:21:41.220
And it just sort of stays out of the way.

00:21:41.320 --> 00:21:44.760
There's just more features and more – it's just a nicer experience.

00:21:45.080 --> 00:21:46.280
So, yeah.

00:21:46.460 --> 00:21:46.920
Kudos to them.

00:21:46.920 --> 00:21:50.560
Yeah, this is an absolutely mega-sized browser extension.

00:21:50.700 --> 00:21:55.640
And what's notable about it is it doesn't dramatically shift.

00:21:58.380 --> 00:22:02.120
It doesn't dramatically change how much – oh, hold on.

00:22:02.160 --> 00:22:03.120
My dog is going crazy.

00:22:03.200 --> 00:22:03.800
One second, Brian.

00:22:03.800 --> 00:22:17.020
I'm sorry.

00:22:17.080 --> 00:22:17.760
She snuck in there.

00:22:17.800 --> 00:22:18.960
We'll have to edit that out, huh?

00:22:18.960 --> 00:22:28.640
So what's notable about this is it's – you wouldn't look at your UI and know anything is different.

00:22:28.740 --> 00:22:30.400
But there's like 100 little changes, right?

00:22:30.800 --> 00:22:31.260
Yeah.

00:22:31.260 --> 00:22:35.680
So, yeah.

00:22:35.820 --> 00:22:39.140
Anyway, I'm always nervous to install browser extensions.

00:22:39.300 --> 00:22:42.480
I have maybe five or six that I really love from places I trust.

00:22:42.760 --> 00:22:43.900
But go to the top.

00:22:43.940 --> 00:22:45.300
See how many stars this has.

00:22:48.480 --> 00:22:49.440
30,000.

00:22:49.820 --> 00:22:52.720
Yeah, you know, at that level, I think it's all right.

00:22:52.800 --> 00:22:55.200
It's probably totally trustworthy, right?

00:22:58.120 --> 00:23:01.040
So let's – yeah, you know, I think it's good.

00:23:01.040 --> 00:23:01.740
I think it's good.

00:23:01.820 --> 00:23:03.420
I would probably install it.

00:23:04.480 --> 00:23:06.880
I've got to look and see if it will inspire me.

00:23:08.600 --> 00:23:09.040
But –

00:23:09.040 --> 00:23:11.800
Yeah, I don't know.

00:23:13.920 --> 00:23:17.840
I'll play with it for a while, see if my entire computer blows up.

00:23:18.880 --> 00:23:21.700
Yeah, if your computer gets –

00:23:21.700 --> 00:23:22.620
It's also been around for a while.

00:23:22.700 --> 00:23:24.200
It looks like nine years or so.

00:23:24.720 --> 00:23:25.080
Wow.

00:23:25.800 --> 00:23:26.140
Really?

00:23:26.220 --> 00:23:26.580
No kidding.

00:23:27.180 --> 00:23:30.900
Well, at least in the front top, there's the –

00:23:31.040 --> 00:23:34.220
the editor config is nine years ago.

00:23:34.300 --> 00:23:36.640
So at least there's some commits from nine years ago.

00:23:36.660 --> 00:23:36.800
Yeah, yeah.

00:23:36.960 --> 00:23:37.320
Exactly.

00:23:37.500 --> 00:23:38.500
I would imagine it is.

00:23:38.880 --> 00:23:40.000
Yeah, that's very wild.

00:23:40.420 --> 00:23:40.760
Awesome.

00:23:40.920 --> 00:23:41.120
Okay.

00:23:42.320 --> 00:23:45.260
Let's move on to talk about databases,

00:23:45.480 --> 00:23:46.540
and in particular, Postgres.

00:23:47.000 --> 00:23:50.500
So this project I want to talk about,

00:23:50.560 --> 00:23:51.560
I want to feature everyone across,

00:23:51.660 --> 00:23:52.940
and I think it's been around for a little while,

00:23:52.940 --> 00:23:54.800
but it's called PGDog.

00:23:56.220 --> 00:23:56.480
Okay?

00:23:57.220 --> 00:23:58.100
And what it is,

00:23:58.260 --> 00:24:01.480
is it's a performance-enhancing layer for Postgres.

00:24:01.620 --> 00:24:04.100
So if you're using –

00:24:04.100 --> 00:24:06.500
maybe you're using MySQL –

00:24:06.500 --> 00:24:07.340
not MySQL –

00:24:07.340 --> 00:24:09.220
using SQLite in dev,

00:24:09.220 --> 00:24:09.960
but then in production,

00:24:10.160 --> 00:24:11.200
you're using Postgres, right?

00:24:11.240 --> 00:24:11.980
Something like that.

00:24:11.980 --> 00:24:16.220
And it's starting to outgrow its performance.

00:24:16.780 --> 00:24:16.880
Okay?

00:24:17.040 --> 00:24:20.360
So either it needs better uptime,

00:24:21.400 --> 00:24:23.240
the database is getting too large

00:24:23.240 --> 00:24:24.100
or something like that.

00:24:25.840 --> 00:24:27.400
Postgres doesn't have certain features

00:24:27.400 --> 00:24:29.220
like connection pooling

00:24:29.220 --> 00:24:32.160
and other stuff that could be better high performance.

00:24:32.540 --> 00:24:32.660
Right?

00:24:32.700 --> 00:24:34.320
So you don't have to reconnect as much.

00:24:35.140 --> 00:24:37.180
This thing handles a whole bunch of those.

00:24:37.500 --> 00:24:41.000
So if we go down here to their repo,

00:24:41.200 --> 00:24:42.500
it, by the way, has 4,000 stars,

00:24:42.700 --> 00:24:48.580
and its age is a year, two years, it looks like.

00:24:49.180 --> 00:24:51.540
Last year is probably its most recent things.

00:24:52.060 --> 00:24:54.380
So there's been other projects like this as well.

00:24:54.580 --> 00:24:55.440
For example,

00:24:57.960 --> 00:25:00.220
PG Bouncer is a friend,

00:25:00.220 --> 00:25:03.160
a colleague,

00:25:03.620 --> 00:25:04.720
a software, I guess,

00:25:04.760 --> 00:25:05.960
another thing that does the same thing.

00:25:06.440 --> 00:25:07.220
So what this is,

00:25:07.260 --> 00:25:09.220
is it's a proxy for scaling Postgres.

00:25:09.440 --> 00:25:10.700
And it does connection pooling,

00:25:10.860 --> 00:25:12.940
load balancing for queries,

00:25:13.120 --> 00:25:15.480
and it does sharding of databases,

00:25:15.860 --> 00:25:16.440
which sounds bad,

00:25:16.500 --> 00:25:17.940
but is actually a potentially good thing.

00:25:18.460 --> 00:25:22.780
So you just create a toml file to set it up,

00:25:22.840 --> 00:25:23.860
and then off it goes.

00:25:23.960 --> 00:25:24.940
I got a bunch of notes here

00:25:24.940 --> 00:25:25.620
for all these little things

00:25:25.620 --> 00:25:26.300
that kind of spread around.

00:25:26.300 --> 00:25:30.560
So let me look here.

00:25:33.480 --> 00:25:34.540
So for starters,

00:25:34.720 --> 00:25:37.840
it's a load balancer across Postgres.

00:25:38.100 --> 00:25:39.660
So you can run Postgres

00:25:39.660 --> 00:25:43.840
in a replica network configuration.

00:25:44.000 --> 00:25:46.100
So I can have a Postgres database,

00:25:46.580 --> 00:25:47.220
but then I can have,

00:25:47.300 --> 00:25:47.620
let's say,

00:25:47.720 --> 00:25:49.300
four other Postgres databases

00:25:49.300 --> 00:25:52.120
that are all copies of that same data,

00:25:52.160 --> 00:25:53.100
and they stay in sync.

00:25:53.620 --> 00:25:53.840
Okay?

00:25:53.840 --> 00:25:55.740
And from a read perspective,

00:25:55.740 --> 00:25:57.420
you could read from all five of them

00:25:57.420 --> 00:25:59.060
if they all have the same data, right?

00:25:59.380 --> 00:26:01.820
And that basically 5Xs your database

00:26:01.820 --> 00:26:05.140
query performance, right?

00:26:05.780 --> 00:26:06.040
Okay.

00:26:06.160 --> 00:26:08.000
Just by simply sending them

00:26:08.000 --> 00:26:08.880
to different machines

00:26:08.880 --> 00:26:11.320
with exactly the same data

00:26:11.320 --> 00:26:12.320
in the same database, yeah?

00:26:13.240 --> 00:26:15.600
But the problem is the consistency, right?

00:26:15.640 --> 00:26:16.720
So it knows which one

00:26:16.720 --> 00:26:17.840
is the primary database,

00:26:17.940 --> 00:26:20.020
and it can do writing to that

00:26:20.020 --> 00:26:21.420
and make sure that it propagates

00:26:21.420 --> 00:26:23.800
to the others before it tells you

00:26:23.800 --> 00:26:24.420
that it's committed,

00:26:24.560 --> 00:26:27.220
which is kind of the magic of replicas.

00:26:27.320 --> 00:26:28.220
Because if you write to it

00:26:28.220 --> 00:26:29.680
and then immediately do another read,

00:26:29.940 --> 00:26:31.460
but it happens to have gone to,

00:26:31.900 --> 00:26:33.100
this time it's round robin

00:26:33.100 --> 00:26:35.660
to a different database server,

00:26:35.860 --> 00:26:36.640
that's bad,

00:26:36.680 --> 00:26:38.280
because it might not be there, right?

00:26:38.320 --> 00:26:39.440
Like, I saved the database,

00:26:39.540 --> 00:26:40.040
I queried,

00:26:40.100 --> 00:26:40.720
and it wasn't there,

00:26:40.740 --> 00:26:42.120
and I went to test why it wasn't there,

00:26:42.180 --> 00:26:42.680
then it was there.

00:26:42.720 --> 00:26:43.200
I don't get it,

00:26:43.220 --> 00:26:44.800
what is going on with the world, right?

00:26:45.220 --> 00:26:46.480
So you want it to definitely

00:26:46.480 --> 00:26:48.280
manage that kind of stuff.

00:26:48.280 --> 00:26:49.400
It also does health checks,

00:26:50.680 --> 00:26:54.700
and you've got this read primary

00:26:54.700 --> 00:26:57.620
replica configuration

00:26:57.620 --> 00:26:58.360
that I'm talking about.

00:26:58.580 --> 00:26:59.980
If one of them goes down,

00:27:00.160 --> 00:27:04.000
it will just take it out of its rotation,

00:27:04.260 --> 00:27:05.400
and if it's the primary one,

00:27:05.460 --> 00:27:07.580
it'll pick another primary, I believe.

00:27:08.560 --> 00:27:10.780
So it has a single endpoint behavior,

00:27:10.880 --> 00:27:11.540
which I talked about,

00:27:11.660 --> 00:27:14.980
so it understands the Postgres structure,

00:27:14.980 --> 00:27:17.560
like the, basically, T-SQL,

00:27:18.860 --> 00:27:19.660
and so it updates,

00:27:19.820 --> 00:27:20.820
it knows if it sees an update

00:27:20.820 --> 00:27:22.380
or insert or create table

00:27:22.380 --> 00:27:23.020
and things like that,

00:27:23.060 --> 00:27:24.240
and sends that to the primary,

00:27:24.980 --> 00:27:26.540
and then leaves the other ones

00:27:26.540 --> 00:27:28.180
chilling to do their thing.

00:27:28.500 --> 00:27:30.060
It has the failover I talked about,

00:27:30.140 --> 00:27:31.120
and it has sharding,

00:27:31.420 --> 00:27:32.420
which is really cool,

00:27:32.480 --> 00:27:33.500
and it does a bunch of stuff

00:27:33.500 --> 00:27:34.920
to manage and keep that in sync.

00:27:35.460 --> 00:27:38.180
You can even have different sets,

00:27:38.580 --> 00:27:40.120
different clusters of database,

00:27:40.240 --> 00:27:41.420
and say keep this one in sync

00:27:41.420 --> 00:27:41.960
with that one.

00:27:41.960 --> 00:27:43.780
So, for example,

00:27:43.920 --> 00:27:47.040
imagine you've got an e-commerce site,

00:27:47.600 --> 00:27:51.180
and it's starting to go too slow.

00:27:51.320 --> 00:27:53.820
People do a request for,

00:27:54.700 --> 00:27:55.040
I don't know,

00:27:55.220 --> 00:27:56.580
let me give you an example

00:27:56.580 --> 00:27:59.080
that probably resonates more with people,

00:27:59.640 --> 00:28:03.040
a health provider database.

00:28:03.180 --> 00:28:03.940
I don't know about yours,

00:28:04.020 --> 00:28:06.560
but whenever I go to figure out something

00:28:06.560 --> 00:28:07.740
with my next doctor appointment

00:28:07.740 --> 00:28:08.040
or something,

00:28:08.180 --> 00:28:10.760
it's like the page slowly loads in,

00:28:10.760 --> 00:28:11.520
and then it spins,

00:28:11.620 --> 00:28:12.440
it says checking records,

00:28:12.600 --> 00:28:13.220
checking records,

00:28:13.400 --> 00:28:13.980
checking records,

00:28:14.060 --> 00:28:15.240
and like five seconds later,

00:28:15.380 --> 00:28:16.560
chunk will come in and more of it,

00:28:16.560 --> 00:28:18.240
and like what is going on with this?

00:28:18.320 --> 00:28:20.040
Why is this so slow, you know?

00:28:21.900 --> 00:28:24.040
And there's probably just some huge database

00:28:24.040 --> 00:28:28.100
with a bunch of insane joins

00:28:28.100 --> 00:28:30.880
and weird queries and stuff

00:28:30.880 --> 00:28:31.580
just to tell me

00:28:31.580 --> 00:28:32.980
that my appointment is at 10 o'clock.

00:28:32.980 --> 00:28:35.200
So what you could do is you could say,

00:28:35.280 --> 00:28:37.000
okay, your health record ID

00:28:37.000 --> 00:28:38.800
is going to be the shard key,

00:28:39.060 --> 00:28:41.440
and we're going to have 20 different servers,

00:28:42.440 --> 00:28:43.840
right, running our cloud setup.

00:28:43.840 --> 00:28:48.700
And for that,

00:28:49.000 --> 00:28:51.100
we're going to somehow determine

00:28:51.100 --> 00:28:52.140
which database it goes.

00:28:52.240 --> 00:28:53.960
So maybe we're going to say,

00:28:54.100 --> 00:28:58.080
take the hash of the health ID

00:28:58.080 --> 00:28:59.460
and use the first two letters

00:28:59.460 --> 00:29:01.660
to figure out which database it actually goes in.

00:29:01.740 --> 00:29:08.440
So like AA through B, whatever, right,

00:29:08.940 --> 00:29:10.480
goes to the first database server,

00:29:10.560 --> 00:29:11.480
and the second, the third, the fourth,

00:29:11.480 --> 00:29:11.940
and so on.

00:29:12.000 --> 00:29:12.960
So when you do a query,

00:29:13.420 --> 00:29:15.260
you say, I want the thing for this user.

00:29:15.380 --> 00:29:16.340
It just goes, okay, great.

00:29:16.400 --> 00:29:18.920
Well, that means I only query that one server.

00:29:19.620 --> 00:29:22.340
Instead of trying to query the 100 million records,

00:29:22.340 --> 00:29:24.580
you query, what did I say, 25s?

00:29:24.600 --> 00:29:25.560
You query 4 million,

00:29:25.860 --> 00:29:27.480
which is way, way faster, right,

00:29:27.560 --> 00:29:28.820
on any given server.

00:29:29.280 --> 00:29:31.100
So that's a really cool aspect

00:29:31.100 --> 00:29:32.820
and one of its main features

00:29:32.820 --> 00:29:34.560
is the sharding capability.

00:29:35.720 --> 00:29:36.200
Okay.

00:29:36.880 --> 00:29:37.880
So pretty neat.

00:29:38.860 --> 00:29:39.260
Pretty neat.

00:29:39.540 --> 00:29:41.200
Well, but if you're really trying to find out

00:29:41.200 --> 00:29:42.880
like a health information,

00:29:43.340 --> 00:29:45.280
it might, the hash might be the problem.

00:29:45.440 --> 00:29:46.900
Stop doing hash, man.

00:29:48.740 --> 00:29:51.700
I don't know why these systems are so bad.

00:29:52.380 --> 00:29:53.100
They're so bad.

00:29:54.660 --> 00:29:55.420
Bad joke.

00:29:55.880 --> 00:29:56.080
Sorry.

00:29:56.220 --> 00:29:56.440
Yes.

00:29:56.660 --> 00:29:57.780
Yeah, that's true.

00:29:59.400 --> 00:30:00.280
I get it now.

00:30:00.340 --> 00:30:01.040
I get it.

00:30:02.200 --> 00:30:02.580
All right.

00:30:02.620 --> 00:30:02.920
Awesome.

00:30:03.060 --> 00:30:03.480
Over to you.

00:30:04.220 --> 00:30:04.480
Okay.

00:30:04.480 --> 00:30:06.240
Well, I,

00:30:06.540 --> 00:30:10.920
this is partly a public service announcement.

00:30:11.340 --> 00:30:11.980
Maybe.

00:30:13.140 --> 00:30:14.000
This is,

00:30:14.440 --> 00:30:16.220
I want to cover Simon Wilson.

00:30:16.540 --> 00:30:19.000
So we know Simon Wilson's been playing with AI

00:30:19.000 --> 00:30:21.140
and agents and stuff since like,

00:30:21.520 --> 00:30:23.160
since they came out or something.

00:30:23.160 --> 00:30:25.740
And I appreciate all of Simon's work.

00:30:26.840 --> 00:30:27.320
And,

00:30:27.320 --> 00:30:31.280
and I've been watching here and there and it just like,

00:30:31.660 --> 00:30:37.020
learning from him and not having to do all the experimentation that he's doing,

00:30:37.020 --> 00:30:39.060
but he's really great at explaining it.

00:30:39.060 --> 00:30:40.160
So what I want to,

00:30:40.380 --> 00:30:48.300
he's got this sort of book-like thing together that we're going to link to called agentic engineering patterns.

00:30:48.940 --> 00:30:51.500
And this is a series of blog posts,

00:30:51.500 --> 00:30:55.900
but they're fairly concise and short and it's really good writing as well.

00:30:56.900 --> 00:30:57.420
There,

00:30:57.780 --> 00:30:59.220
and I think anybody,

00:30:59.480 --> 00:30:59.940
especially,

00:31:00.560 --> 00:31:00.780
well,

00:31:01.160 --> 00:31:03.580
it might be useful for really everybody,

00:31:03.780 --> 00:31:05.220
but especially people with teams,

00:31:05.220 --> 00:31:09.100
it'd be good to make sure that everybody's kind of on a good.

00:31:09.800 --> 00:31:10.980
I think there's the,

00:31:10.980 --> 00:31:12.200
the information here is right.

00:31:12.300 --> 00:31:12.980
Good for everybody.

00:31:13.120 --> 00:31:18.460
So there's principles getting started like some intro on how,

00:31:18.580 --> 00:31:22.060
how agents work and testing and QA.

00:31:22.060 --> 00:31:23.800
There's just three posts about that,

00:31:23.860 --> 00:31:25.940
which I love understanding code,

00:31:26.080 --> 00:31:30.120
using it to walk through using agents to walk through code and stuff.

00:31:31.000 --> 00:31:34.920
Even these are didn't notice these when I was looking at this,

00:31:34.920 --> 00:31:35.520
the other day,

00:31:36.180 --> 00:31:38.520
an appendix of prompts I use that might be interesting,

00:31:38.780 --> 00:31:43.280
but also GIF animation tool using WebAssembly and GIF,

00:31:43.360 --> 00:31:45.880
GIF sickle annotated prompts.

00:31:46.540 --> 00:31:47.760
That might be fun,

00:31:47.840 --> 00:31:50.220
but maybe not appropriate for everybody.

00:31:50.360 --> 00:31:50.920
But,

00:31:51.000 --> 00:31:53.100
but the,

00:31:53.100 --> 00:31:53.420
the,

00:31:53.520 --> 00:31:53.800
the,

00:31:53.800 --> 00:31:54.120
the,

00:31:54.120 --> 00:31:57.960
the one that I love right here is anti patterns.

00:31:57.960 --> 00:31:59.400
So in principles,

00:31:59.400 --> 00:32:00.620
there's some anti patterns.

00:32:00.740 --> 00:32:01.180
Well,

00:32:01.500 --> 00:32:02.640
everything,

00:32:02.800 --> 00:32:03.920
everything in the principles,

00:32:04.080 --> 00:32:04.860
definitely go read.

00:32:04.920 --> 00:32:05.780
Uh,

00:32:05.980 --> 00:32:07.240
the writing code is cheap.

00:32:07.240 --> 00:32:07.580
Now.

00:32:07.700 --> 00:32:10.120
What is agentic engineering hoard things?

00:32:10.180 --> 00:32:10.520
You know,

00:32:10.580 --> 00:32:11.040
basically,

00:32:11.040 --> 00:32:11.540
um,

00:32:11.680 --> 00:32:12.580
not basic,

00:32:12.580 --> 00:32:15.720
but like keeping track of like he,

00:32:16.020 --> 00:32:17.260
for instance,

00:32:17.320 --> 00:32:18.920
I'm making tools and doing snippets,

00:32:18.980 --> 00:32:19.820
doing little tools,

00:32:20.380 --> 00:32:21.340
having those available,

00:32:21.340 --> 00:32:23.200
not only for you to remember,

00:32:23.200 --> 00:32:25.560
but you can also tell an agent to say,

00:32:25.620 --> 00:32:26.180
Hey,

00:32:26.300 --> 00:32:26.540
um,

00:32:26.540 --> 00:32:28.480
I already kind of solved this over here in this project.

00:32:28.480 --> 00:32:29.400
So use that,

00:32:29.400 --> 00:32:30.620
but apply it to this,

00:32:30.620 --> 00:32:31.240
this,

00:32:31.240 --> 00:32:32.240
this other project here.

00:32:32.880 --> 00:32:34.360
Super cool idea.

00:32:35.000 --> 00:32:35.320
Um,

00:32:35.400 --> 00:32:36.080
and also,

00:32:36.280 --> 00:32:37.200
uh,

00:32:37.560 --> 00:32:37.820
the,

00:32:38.020 --> 00:32:40.560
these two AI should help us produce better code.

00:32:40.560 --> 00:32:41.200
So if the,

00:32:41.360 --> 00:32:43.300
if you're having AI producer code,

00:32:43.400 --> 00:32:45.860
I think it should be better code than you should,

00:32:46.020 --> 00:32:47.760
than you would produce by yourself.

00:32:48.520 --> 00:32:49.500
Not worse.

00:32:49.660 --> 00:32:50.160
Uh,

00:32:50.160 --> 00:32:51.340
I don't like this,

00:32:51.480 --> 00:32:55.160
this notion of produce of people not reading their code at all.

00:32:55.160 --> 00:32:55.640
Um,

00:32:55.640 --> 00:32:58.480
and I think that's going to blow up on us.

00:32:58.500 --> 00:32:58.960
And,

00:32:59.060 --> 00:32:59.340
uh,

00:32:59.340 --> 00:33:00.780
especially if you're working in teams,

00:33:00.920 --> 00:33:03.840
a bunch of anti patterns to watch out for.

00:33:03.920 --> 00:33:09.160
And the top one is about inflicting unreviewed code on your collaborators.

00:33:09.560 --> 00:33:12.460
This anti pattern is common and deeply frustrating,

00:33:12.460 --> 00:33:15.700
both in open source and I'm dealing with it at work myself.

00:33:16.140 --> 00:33:18.620
Don't file pull requests with code.

00:33:18.700 --> 00:33:19.980
You haven't reviewed yourself.

00:33:20.220 --> 00:33:25.760
I'm tired of reviewing reams and reams and reams of code that I'm know that

00:33:25.760 --> 00:33:27.440
nobody actually read that.

00:33:27.700 --> 00:33:28.280
And why,

00:33:28.420 --> 00:33:30.120
so why did they expect me to read it?

00:33:30.300 --> 00:33:31.220
So anyway,

00:33:31.780 --> 00:33:33.080
a great resource here.

00:33:33.260 --> 00:33:33.860
I love the,

00:33:33.880 --> 00:33:34.300
um,

00:33:34.360 --> 00:33:34.680
the,

00:33:34.860 --> 00:33:35.680
uh,

00:33:35.900 --> 00:33:36.980
the cheat sheet on red,

00:33:37.040 --> 00:33:37.180
green,

00:33:37.220 --> 00:33:39.140
your refactor is pretty great also.

00:33:39.400 --> 00:33:39.700
Um,

00:33:39.840 --> 00:33:42.800
and approach to highlight that since the testing is kind of my thing.

00:33:42.800 --> 00:33:43.020
Right.

00:33:43.660 --> 00:33:44.060
Um,

00:33:44.060 --> 00:33:45.940
and this is the,

00:33:46.080 --> 00:33:49.960
all he has tested it and the phrase use red slash,

00:33:49.960 --> 00:33:50.300
green.

00:33:50.420 --> 00:33:51.100
So use red,

00:33:51.180 --> 00:33:57.040
green TDD is a pleasingly succinct way to get better results out of your coding agent.

00:33:57.040 --> 00:34:03.420
So you can tell your coding agent to do this and it will know to write a test first and,

00:34:03.420 --> 00:34:04.340
and,

00:34:04.400 --> 00:34:04.700
um,

00:34:05.080 --> 00:34:05.420
test,

00:34:05.520 --> 00:34:05.840
you know,

00:34:05.840 --> 00:34:07.200
make changes until it's green.

00:34:07.200 --> 00:34:10.540
What's interesting is normally we think of TDD is red,

00:34:10.600 --> 00:34:11.380
green refactor,

00:34:11.800 --> 00:34:12.700
the refactor part.

00:34:12.940 --> 00:34:14.080
That's when you need to get involved.

00:34:14.280 --> 00:34:16.320
So you can have the agent do the red,

00:34:16.380 --> 00:34:17.700
green part come,

00:34:17.840 --> 00:34:21.140
which is come up with a test that describes what you want to do,

00:34:21.140 --> 00:34:24.480
write code until you have code that does that.

00:34:24.660 --> 00:34:27.880
Now you go and review that code and you can talk to the aid.

00:34:27.940 --> 00:34:29.920
You don't have to necessarily change it.

00:34:29.960 --> 00:34:31.020
You can talk to the agent and go,

00:34:31.020 --> 00:34:32.820
this part of the code is weird.

00:34:32.820 --> 00:34:34.440
Can we change it to a different pattern?

00:34:34.440 --> 00:34:34.800
Or,

00:34:34.800 --> 00:34:35.300
um,

00:34:35.300 --> 00:34:36.800
is there some way to clean this up?

00:34:37.040 --> 00:34:41.060
And I've had really good results with that actually to just say,

00:34:41.140 --> 00:34:42.740
kind of good,

00:34:42.820 --> 00:34:43.660
but this part,

00:34:43.820 --> 00:34:45.020
why did we do that?

00:34:45.020 --> 00:34:48.640
And it's surprising to me to have the agent come back and say,

00:34:48.640 --> 00:34:49.160
Oh yeah,

00:34:49.180 --> 00:34:49.800
that's weird.

00:34:49.800 --> 00:34:51.660
And change it to what I would expect.

00:34:51.980 --> 00:34:52.120
Like,

00:34:52.120 --> 00:34:53.700
why didn't it just do that in the first place?

00:34:53.880 --> 00:34:55.180
But it doesn't.

00:34:55.300 --> 00:34:55.620
Um,

00:34:55.680 --> 00:34:56.040
so,

00:34:56.040 --> 00:34:57.500
and maybe it will in,

00:34:57.680 --> 00:35:00.280
in the future and the future might be next week.

00:35:00.280 --> 00:35:00.820
Who knows?

00:35:01.260 --> 00:35:01.580
Um,

00:35:01.620 --> 00:35:02.920
but for right now,

00:35:02.920 --> 00:35:04.880
these are great engineering pattern,

00:35:05.320 --> 00:35:06.360
great things to watch.

00:35:06.360 --> 00:35:07.140
So thanks Simon.

00:35:07.380 --> 00:35:09.160
And I trust him to like,

00:35:09.200 --> 00:35:10.000
keep these up to date.

00:35:10.000 --> 00:35:11.120
So anyway,

00:35:11.500 --> 00:35:12.500
yeah,

00:35:12.500 --> 00:35:13.460
this looks super interesting.

00:35:13.580 --> 00:35:14.560
I definitely want to check it out.

00:35:15.660 --> 00:35:17.960
I've already spread this around to,

00:35:17.960 --> 00:35:18.920
to work.

00:35:19.080 --> 00:35:22.320
And especially the people that have sent me code reviews that I'm like,

00:35:22.420 --> 00:35:23.540
you didn't read this.

00:35:24.540 --> 00:35:25.800
I know you didn't.

00:35:27.140 --> 00:35:27.580
So.

00:35:30.140 --> 00:35:34.220
I think that's part of the pushback as well as like people are lazy or they

00:35:34.220 --> 00:35:35.060
don't know what they're doing.

00:35:35.060 --> 00:35:35.700
And they just,

00:35:36.140 --> 00:35:39.080
here's 2000 lines of code that fixes what I was asking for.

00:35:39.140 --> 00:35:39.400
You're like,

00:35:39.500 --> 00:35:40.300
no,

00:35:40.880 --> 00:35:41.320
go away.

00:35:41.480 --> 00:35:41.580
Yeah.

00:35:43.560 --> 00:35:44.780
Where they spend some time.

00:35:44.840 --> 00:35:45.020
You're like,

00:35:45.080 --> 00:35:45.340
actually,

00:35:45.440 --> 00:35:47.720
can you narrow this down to a 10 line change?

00:35:47.960 --> 00:35:48.840
This is all I want.

00:35:48.920 --> 00:35:50.080
Please don't go do other things.

00:35:50.080 --> 00:35:52.820
Like just help me understand this and why this needs to change.

00:35:52.820 --> 00:35:53.160
And then,

00:35:53.720 --> 00:35:55.160
you know,

00:35:55.160 --> 00:35:58.660
I think we're still learning how all this stuff works.

00:35:59.880 --> 00:36:02.480
And there are engineering practices,

00:36:02.900 --> 00:36:03.660
but it's so,

00:36:04.020 --> 00:36:06.000
the stakes are so low for getting started.

00:36:06.380 --> 00:36:06.740
You know,

00:36:06.740 --> 00:36:07.200
normally you're like,

00:36:07.260 --> 00:36:07.380
okay,

00:36:07.380 --> 00:36:08.960
we're going to set up our build tool chain.

00:36:08.960 --> 00:36:11.740
And then we're going to learn the language and the syntax and the

00:36:11.740 --> 00:36:12.820
structures and the keywords.

00:36:12.820 --> 00:36:13.520
And now it's just like,

00:36:13.780 --> 00:36:15.840
I'll just use regular English to just tell it stuff.

00:36:15.880 --> 00:36:16.860
And it'll probably figure it out.

00:36:16.900 --> 00:36:17.020
Right.

00:36:17.060 --> 00:36:17.400
That's,

00:36:17.780 --> 00:36:21.040
that gives the sense that I don't need to learn this as a skill,

00:36:21.200 --> 00:36:22.040
but you do.

00:36:23.220 --> 00:36:23.620
Yeah.

00:36:23.740 --> 00:36:27.380
I also think that we're getting a lot of advice about how to utilize

00:36:27.380 --> 00:36:32.440
agents from startups and startups have a different field.

00:36:32.620 --> 00:36:35.560
There are startups are greenfield.

00:36:35.560 --> 00:36:36.360
For the most part,

00:36:36.440 --> 00:36:37.700
they're writing new code.

00:36:38.000 --> 00:36:43.020
Whereas a lot of software jobs are maintaining existing code bases that

00:36:43.020 --> 00:36:44.860
have been around for decades,

00:36:45.240 --> 00:36:45.900
possibly,

00:36:46.080 --> 00:36:46.940
or at least years.

00:36:47.760 --> 00:36:47.860
And,

00:36:47.960 --> 00:36:52.760
and you can't just not care what goes into it.

00:36:52.940 --> 00:36:53.140
Yeah.

00:36:53.500 --> 00:36:54.300
It's a,

00:36:54.560 --> 00:36:57.680
you've been handed this thing that is making your company money.

00:36:57.860 --> 00:37:01.460
You can't make it worse just because the agent decided to rewrite

00:37:01.460 --> 00:37:01.800
everything.

00:37:01.800 --> 00:37:02.140
So,

00:37:02.480 --> 00:37:02.640
yeah.

00:37:03.220 --> 00:37:03.500
Yeah.

00:37:04.000 --> 00:37:04.360
Anyway,

00:37:04.360 --> 00:37:05.980
for sure.

00:37:06.780 --> 00:37:07.220
Well,

00:37:08.060 --> 00:37:08.740
do we have any extras?

00:37:08.880 --> 00:37:09.740
I got a few extras.

00:37:10.120 --> 00:37:10.840
Why don't you go first?

00:37:11.420 --> 00:37:11.760
Okay.

00:37:12.040 --> 00:37:12.420
Um,

00:37:12.480 --> 00:37:13.420
a couple ones.

00:37:13.540 --> 00:37:13.720
This,

00:37:13.840 --> 00:37:14.000
uh,

00:37:14.000 --> 00:37:15.480
the first one comes from John Hagen.

00:37:15.640 --> 00:37:18.260
Thanks for mentioning this because I almost made this a,

00:37:18.260 --> 00:37:19.720
a top level story,

00:37:19.720 --> 00:37:22.860
but there's not much to say about it other than this is awesome.

00:37:23.400 --> 00:37:23.760
Um,

00:37:23.820 --> 00:37:25.700
upgrading Python versions with uv.

00:37:26.180 --> 00:37:27.320
So if you,

00:37:27.440 --> 00:37:27.960
do you,

00:37:28.080 --> 00:37:28.240
you,

00:37:28.360 --> 00:37:28.900
we know,

00:37:28.980 --> 00:37:31.200
know that if to get all these new features,

00:37:31.200 --> 00:37:33.020
any new features from uv,

00:37:33.020 --> 00:37:35.040
you have to say uv self update.

00:37:35.480 --> 00:37:35.800
Um,

00:37:36.000 --> 00:37:36.320
I think,

00:37:36.400 --> 00:37:36.840
is that right?

00:37:37.440 --> 00:37:38.320
I think self update.

00:37:38.480 --> 00:37:38.600
Yeah.

00:37:38.680 --> 00:37:38.920
Um,

00:37:38.980 --> 00:37:40.060
UV self update.

00:37:40.560 --> 00:37:40.780
Yep.

00:37:41.200 --> 00:37:41.520
Um,

00:37:41.660 --> 00:37:43.600
but after you've done that,

00:37:43.640 --> 00:37:47.400
now you can say uv Python upgrade.

00:37:47.400 --> 00:37:49.520
You can give it a specific one.

00:37:49.560 --> 00:37:50.580
So like for instance,

00:37:50.620 --> 00:37:51.380
if you say uv,

00:37:51.720 --> 00:37:52.180
uh,

00:37:52.260 --> 00:37:53.940
UV Python upgrade 312,

00:37:54.080 --> 00:37:56.300
it updates 312 to the,

00:37:56.300 --> 00:37:56.840
uh,

00:37:56.840 --> 00:37:57.380
the latest,

00:37:57.380 --> 00:37:57.720
uh,

00:37:57.720 --> 00:37:58.060
version,

00:37:58.260 --> 00:37:59.540
the latest dot release,

00:37:59.760 --> 00:38:00.540
um,

00:38:00.640 --> 00:38:01.320
which is cool.

00:38:01.540 --> 00:38:03.320
But if you leave that off,

00:38:03.360 --> 00:38:04.520
which that's what I do,

00:38:04.520 --> 00:38:05.060
uh,

00:38:05.060 --> 00:38:06.800
it just looks at all of the,

00:38:07.020 --> 00:38:10.820
all of the Python versions that you have installed on your computer through UV

00:38:10.820 --> 00:38:13.280
and updates them to all to the,

00:38:13.400 --> 00:38:15.020
to the most recent,

00:38:15.020 --> 00:38:16.340
like bug fix release.

00:38:16.760 --> 00:38:17.040
Um,

00:38:17.440 --> 00:38:18.540
and what,

00:38:18.640 --> 00:38:18.920
like,

00:38:19.160 --> 00:38:19.580
why not?

00:38:19.620 --> 00:38:20.820
We should be doing that all the time.

00:38:20.900 --> 00:38:22.900
I'm going to set this up as a cron job or something.

00:38:22.960 --> 00:38:23.340
I don't know.

00:38:23.800 --> 00:38:24.120
Um,

00:38:24.980 --> 00:38:25.500
so that's cool.

00:38:26.680 --> 00:38:27.080
And,

00:38:27.140 --> 00:38:27.320
uh,

00:38:27.320 --> 00:38:27.520
yeah.

00:38:27.520 --> 00:38:29.620
So thanks uv making things easier.

00:38:30.380 --> 00:38:30.840
Once again,

00:38:30.840 --> 00:38:31.180
awesome.

00:38:31.180 --> 00:38:31.800
Awesome job.

00:38:31.900 --> 00:38:34.660
I've already incorporated it into my little updater scripts that I run

00:38:34.660 --> 00:38:35.200
periodically.

00:38:36.100 --> 00:38:36.480
Uh,

00:38:36.520 --> 00:38:37.560
next is also,

00:38:37.560 --> 00:38:38.020
uh,

00:38:38.020 --> 00:38:40.080
something that's suggested by a reader.

00:38:40.080 --> 00:38:42.640
And I understand New York times magazine is,

00:38:42.640 --> 00:38:43.880
um,

00:38:43.880 --> 00:38:45.260
is behind a paywall.

00:38:45.440 --> 00:38:45.760
Uh,

00:38:45.760 --> 00:38:46.120
but,

00:38:46.300 --> 00:38:46.620
um,

00:38:46.700 --> 00:38:49.220
but for some reason I was able to read this fine.

00:38:49.600 --> 00:38:49.860
Maybe,

00:38:50.240 --> 00:38:50.640
I don't know.

00:38:50.760 --> 00:38:51.080
I have,

00:38:51.160 --> 00:38:53.740
I do have a New York times newspaper subscription.

00:38:53.740 --> 00:38:54.780
So maybe that's it.

00:38:54.880 --> 00:38:55.100
Anyway,

00:38:55.100 --> 00:38:56.240
uh,

00:38:56.640 --> 00:38:58.160
coding after coders,

00:38:58.260 --> 00:38:59.580
the end of computer programming,

00:38:59.580 --> 00:39:00.440
as we know it,

00:39:00.580 --> 00:39:04.520
this is a description of basically talking about whether or not,

00:39:04.520 --> 00:39:05.120
like,

00:39:05.200 --> 00:39:09.460
it's not just whether or not like AI is the end of coding,

00:39:09.460 --> 00:39:10.060
uh,

00:39:10.200 --> 00:39:10.660
jobs.

00:39:10.660 --> 00:39:11.620
I don't,

00:39:11.880 --> 00:39:12.140
you know,

00:39:12.140 --> 00:39:13.140
we don't think it is.

00:39:13.380 --> 00:39:13.700
Um,

00:39:13.800 --> 00:39:14.120
the,

00:39:14.240 --> 00:39:16.120
the conclusion here is it's not,

00:39:16.200 --> 00:39:17.240
but it's also more about that.

00:39:17.280 --> 00:39:18.080
It's more than that.

00:39:18.100 --> 00:39:20.920
It's talking about basically kind of some different,

00:39:20.920 --> 00:39:21.640
different life,

00:39:21.800 --> 00:39:22.820
like different changes.

00:39:22.820 --> 00:39:23.960
And it also talks about,

00:39:23.960 --> 00:39:24.960
um,

00:39:24.960 --> 00:39:29.360
I believe it talked about the different differences between percent of,

00:39:29.360 --> 00:39:29.700
uh,

00:39:30.200 --> 00:39:30.700
uh,

00:39:31.340 --> 00:39:35.960
improve percent of efficiency improvement of greenfield versus legacy code.

00:39:35.960 --> 00:39:38.900
Whereas like a lot of startups say they're a hundred,

00:39:39.180 --> 00:39:40.320
a hundred times faster,

00:39:40.320 --> 00:39:41.160
but,

00:39:41.160 --> 00:39:41.580
uh,

00:39:41.580 --> 00:39:44.320
Amazon has said it's on average 10% faster,

00:39:44.320 --> 00:39:46.220
but that's not nothing to get.

00:39:46.360 --> 00:39:48.580
You should still get excited about 10% faster,

00:39:48.580 --> 00:39:48.880
but,

00:39:48.880 --> 00:39:49.680
um,

00:39:49.680 --> 00:39:50.580
but don't expect,

00:39:50.580 --> 00:39:50.820
uh,

00:39:50.820 --> 00:39:53.680
make people maintaining your old code to be a hundred times faster.

00:39:54.060 --> 00:39:54.500
Uh,

00:39:54.500 --> 00:39:56.300
the reason why it was passed to me was,

00:39:56.420 --> 00:39:56.660
um,

00:39:56.720 --> 00:39:58.360
was because there's this great line.

00:39:58.360 --> 00:39:58.820
If I get,

00:39:58.940 --> 00:39:59.760
see if I can find it.

00:40:00.240 --> 00:40:00.640
pytest,

00:40:01.040 --> 00:40:01.580
uh,

00:40:01.640 --> 00:40:04.940
pushing code that fails pytest is unacceptable and embarrassing.

00:40:04.940 --> 00:40:06.420
Apparently this is a,

00:40:06.520 --> 00:40:07.360
um,

00:40:07.580 --> 00:40:07.760
a,

00:40:07.940 --> 00:40:08.780
like a,

00:40:08.780 --> 00:40:09.080
a,

00:40:09.180 --> 00:40:11.540
an instruction that somebody has in their,

00:40:11.540 --> 00:40:11.960
um,

00:40:12.060 --> 00:40:15.440
markdown files to instruct Claude to,

00:40:15.620 --> 00:40:15.780
um,

00:40:16.000 --> 00:40:19.840
to always run the pytest and be embarrassed if they don't.

00:40:20.300 --> 00:40:21.280
I love it.

00:40:21.360 --> 00:40:21.900
This is good.

00:40:22.340 --> 00:40:22.520
Um,

00:40:22.760 --> 00:40:23.320
but anyway,

00:40:23.420 --> 00:40:24.060
uh,

00:40:24.220 --> 00:40:24.920
those are my extras.

00:40:25.060 --> 00:40:25.580
I actually,

00:40:25.700 --> 00:40:26.540
I think this is a,

00:40:26.540 --> 00:40:29.640
a well-written article for somebody that doesn't understand.

00:40:30.520 --> 00:40:31.540
Apparently this part,

00:40:31.620 --> 00:40:31.820
this,

00:40:31.940 --> 00:40:32.160
the,

00:40:32.160 --> 00:40:33.120
the author was,

00:40:33.120 --> 00:40:35.580
has been covering the tech world for a while.

00:40:35.580 --> 00:40:36.880
So nice.

00:40:38.480 --> 00:40:40.780
And also pytest got into the New York times.

00:40:42.040 --> 00:40:42.480
Yeah,

00:40:42.480 --> 00:40:43.040
that's pretty cool.

00:40:43.740 --> 00:40:43.860
Hey,

00:40:44.320 --> 00:40:45.500
what you got extra for us.

00:40:45.600 --> 00:40:46.160
All right.

00:40:46.200 --> 00:40:46.600
Well,

00:40:47.080 --> 00:40:47.940
I've got a few,

00:40:48.060 --> 00:40:48.280
uh,

00:40:48.280 --> 00:40:49.560
let's start with talk by then training,

00:40:49.560 --> 00:40:50.480
uh,

00:40:50.680 --> 00:40:52.600
by per request from one of the users.

00:40:52.600 --> 00:40:52.840
They said,

00:40:52.900 --> 00:40:52.980
Hey,

00:40:53.040 --> 00:40:54.560
I would be really great if I could,

00:40:54.880 --> 00:40:56.300
when I log into my account,

00:40:56.400 --> 00:40:57.160
have more information.

00:40:57.160 --> 00:40:57.520
So I,

00:40:57.580 --> 00:41:00.700
I updated the people who have accounts there.

00:41:00.700 --> 00:41:03.980
If you go log into your account,

00:41:04.060 --> 00:41:06.740
it will show you all the courses you are actively learning.

00:41:06.920 --> 00:41:09.180
I have 48 of them.

00:41:09.820 --> 00:41:10.180
Uh,

00:41:10.220 --> 00:41:11.340
I haven't finished a bunch of them.

00:41:11.460 --> 00:41:12.280
People might be like,

00:41:12.300 --> 00:41:12.560
Michael,

00:41:13.060 --> 00:41:14.680
you have courses on the website.

00:41:14.780 --> 00:41:16.600
You haven't finished by the time it gets to the website.

00:41:16.680 --> 00:41:18.680
I've watched the videos two to three times.

00:41:18.680 --> 00:41:24.140
I don't have to watch them a fourth time in sequence and like have the system record me watching them.

00:41:24.340 --> 00:41:24.940
So no,

00:41:25.000 --> 00:41:25.580
they're not all done,

00:41:25.640 --> 00:41:27.980
but it'll show you things like the ones you're working on.

00:41:27.980 --> 00:41:30.640
And how far are you through and when did you last watch it?

00:41:30.680 --> 00:41:31.520
And when did you start?

00:41:31.620 --> 00:41:36.980
Apparently this is things like if you're submitting this as a training evidence for your employer,

00:41:37.680 --> 00:41:38.540
knowing when you started,

00:41:38.620 --> 00:41:40.320
when you finished and so on and,

00:41:40.320 --> 00:41:41.460
or whatever,

00:41:41.560 --> 00:41:42.100
how far you are.

00:41:42.440 --> 00:41:43.320
There's also a whole bunch.

00:41:43.340 --> 00:41:44.440
It shows you completed ones.

00:41:44.520 --> 00:41:48.060
I'm going to be generating certificates for people.

00:41:48.220 --> 00:41:48.500
I'm just,

00:41:49.160 --> 00:41:51.220
it's easy enough for me to make PDF downloads,

00:41:51.220 --> 00:41:52.760
but I want to make stuff that you could say,

00:41:52.840 --> 00:41:55.700
post to your LinkedIn profile as an accomplishment,

00:41:55.700 --> 00:41:56.680
you know,

00:41:56.740 --> 00:42:04.360
like I've done the FastAPI course at talk Python as part of your like LinkedIn record in other places.

00:42:04.440 --> 00:42:05.300
You can put those kinds of things.

00:42:05.440 --> 00:42:07.380
So it's not as simple as just a PDF,

00:42:07.380 --> 00:42:09.620
but hopefully stuff like that comes.

00:42:09.680 --> 00:42:09.880
Anyway,

00:42:09.940 --> 00:42:10.740
this was fun to build.

00:42:11.460 --> 00:42:12.620
I think it looks really neat.

00:42:12.900 --> 00:42:13.760
I think it's,

00:42:13.860 --> 00:42:16.420
especially if somebody is buying the bundle,

00:42:16.580 --> 00:42:23.100
they have access to a ton of courses and they might not remember like what course was I taking last month?

00:42:23.100 --> 00:42:23.500
Exactly.

00:42:23.880 --> 00:42:24.840
You didn't even buy it,

00:42:24.880 --> 00:42:25.380
but you took it.

00:42:25.420 --> 00:42:26.500
Then you forgot which one you're doing.

00:42:26.580 --> 00:42:27.620
This totally solves that problem.

00:42:27.740 --> 00:42:27.840
Yeah.

00:42:28.300 --> 00:42:28.520
Yeah,

00:42:28.620 --> 00:42:28.900
exactly.

00:42:29.000 --> 00:42:29.120
Cool.

00:42:29.600 --> 00:42:29.740
Yeah.

00:42:29.740 --> 00:42:31.320
That's what the request was like.

00:42:31.540 --> 00:42:32.820
I know I took a course.

00:42:32.900 --> 00:42:35.120
I don't remember which one I was working on in which order would,

00:42:35.260 --> 00:42:35.420
you know,

00:42:35.460 --> 00:42:36.640
help me get back to that.

00:42:37.740 --> 00:42:38.440
And then of course,

00:42:38.440 --> 00:42:38.940
when you're in,

00:42:39.020 --> 00:42:39.500
in a course,

00:42:39.540 --> 00:42:40.440
it has a resume button.

00:42:40.440 --> 00:42:42.620
So you just click that to presume where you left off,

00:42:42.700 --> 00:42:45.240
but it doesn't have a cross cutting resume.

00:42:45.400 --> 00:42:45.800
You know what I mean?

00:42:46.420 --> 00:42:48.880
I do like how you split it up so that if,

00:42:49.040 --> 00:42:49.460
like you said,

00:42:49.460 --> 00:42:49.800
if someone,

00:42:49.960 --> 00:42:52.920
if I took the whole course and there's something I want to go back and review,

00:42:53.020 --> 00:42:55.380
I can just look through and go and watch those videos.

00:42:55.980 --> 00:42:57.020
It's labeled well.

00:42:57.320 --> 00:42:57.380
So.

00:42:57.620 --> 00:42:57.740
Yeah.

00:42:57.780 --> 00:42:58.220
Thanks a bunch.

00:42:58.980 --> 00:42:59.500
All right.

00:42:59.500 --> 00:43:08.060
I talked about using latency to increase security for supplying chain stuff,

00:43:08.060 --> 00:43:08.740
right?

00:43:08.740 --> 00:43:08.940
Like,

00:43:09.060 --> 00:43:09.240
Hey,

00:43:09.260 --> 00:43:10.280
if I do a pip,

00:43:10.500 --> 00:43:13.800
a uv pip update or upgrade sort of thing,

00:43:13.800 --> 00:43:17.820
or similarly with sync and add and so on,

00:43:18.640 --> 00:43:20.540
just doing like an exclude newer than,

00:43:21.280 --> 00:43:22.860
or whatever,

00:43:23.520 --> 00:43:26.180
give it seven days or a week or however you do it.

00:43:26.180 --> 00:43:30.640
There's this article by Andrew Nespen that says package managers need to chill.

00:43:31.920 --> 00:43:32.760
And right at the top,

00:43:32.800 --> 00:43:35.320
we have this post requested by Seth Larson,

00:43:35.600 --> 00:43:38.220
the security guy at the PSF.

00:43:38.540 --> 00:43:39.940
So yeah.

00:43:40.240 --> 00:43:40.640
Anyway,

00:43:40.660 --> 00:43:41.740
it talks about all the different,

00:43:42.300 --> 00:43:46.660
how you make your dependency manager tool chill.

00:43:46.820 --> 00:43:48.100
Like uv has an exclude newer,

00:43:48.240 --> 00:43:49.280
which I've been using.

00:43:49.900 --> 00:43:51.140
And it's mostly awesome,

00:43:51.380 --> 00:43:54.620
except for when there's a vulnerability that appears in one and you get a

00:43:54.620 --> 00:43:55.900
notification that you've got to fix it.

00:43:56.200 --> 00:43:58.320
But it just came out the fix.

00:43:58.460 --> 00:43:59.700
So you don't want to exclude it.

00:44:00.980 --> 00:44:02.080
But in general,

00:44:02.300 --> 00:44:02.680
it's,

00:44:02.680 --> 00:44:02.900
it's,

00:44:02.960 --> 00:44:05.360
I think a better thing than,

00:44:05.440 --> 00:44:05.980
than not.

00:44:06.660 --> 00:44:06.860
Why?

00:44:07.100 --> 00:44:07.380
Like,

00:44:07.880 --> 00:44:08.600
remind me why,

00:44:08.700 --> 00:44:10.260
why would you want to exclude newer stuff?

00:44:10.400 --> 00:44:11.960
Because for popular packages,

00:44:11.960 --> 00:44:16.200
if somebody uploads a virus inside the package,

00:44:16.200 --> 00:44:21.780
like they take over the build chain or they fish the person who created it,

00:44:21.780 --> 00:44:22.660
like let's take shared it.

00:44:22.660 --> 00:44:23.680
They fish Dan,

00:44:23.840 --> 00:44:31.260
they get access to his GitHub and they install a subtle thing that downloads some rootkit or whatever,

00:44:31.680 --> 00:44:33.880
info stealer to your account.

00:44:33.880 --> 00:44:36.640
That usually gets found within the first couple days.

00:44:36.640 --> 00:44:40.620
And if you're always just going update,

00:44:40.740 --> 00:44:40.980
update,

00:44:41.080 --> 00:44:41.400
update,

00:44:41.560 --> 00:44:42.240
give me the latest,

00:44:42.340 --> 00:44:43.000
give me the latest,

00:44:43.200 --> 00:44:43.460
you know,

00:44:43.460 --> 00:44:47.160
the chances that you hit that are pretty high,

00:44:47.160 --> 00:44:47.420
right?

00:44:47.420 --> 00:44:49.320
Because they won't get found in the first hour.

00:44:49.320 --> 00:44:50.920
Even if it's found in the first hour,

00:44:51.000 --> 00:44:54.760
will people be able to react and communicate within the first hour to deal with it?

00:44:54.760 --> 00:44:55.040
You know,

00:44:55.140 --> 00:44:56.860
but if you just say,

00:44:56.960 --> 00:44:57.560
give it a week,

00:44:57.560 --> 00:45:00.380
like probably most of the popular ones,

00:45:00.460 --> 00:45:01.700
if there was something wrong,

00:45:01.740 --> 00:45:02.880
it would have been found out by then.

00:45:03.560 --> 00:45:04.400
But okay.

00:45:04.480 --> 00:45:10.940
What if it got found out and got fixed and the week boundaries there.

00:45:10.940 --> 00:45:17.040
And I like upload the week old one that has the bug or do they remove it completely from

00:45:17.040 --> 00:45:17.480
if there,

00:45:17.540 --> 00:45:18.220
if there was a virus,

00:45:18.280 --> 00:45:19.180
they remove it from pipe.

00:45:19.180 --> 00:45:19.420
Yeah.

00:45:20.000 --> 00:45:20.260
Okay.

00:45:20.480 --> 00:45:21.300
It's not even there.

00:45:21.300 --> 00:45:22.880
Even if somebody picks an old one.

00:45:23.000 --> 00:45:23.320
Exactly.

00:45:23.500 --> 00:45:25.900
I knew that I was just sort of playing along.

00:45:26.080 --> 00:45:26.360
Yeah.

00:45:26.360 --> 00:45:26.560
Yeah.

00:45:26.920 --> 00:45:27.120
Yeah.

00:45:27.120 --> 00:45:27.320
Yeah.

00:45:27.800 --> 00:45:28.160
Exactly.

00:45:28.260 --> 00:45:28.440
Yeah.

00:45:29.360 --> 00:45:33.100
So basically just more people singing the same message,

00:45:33.180 --> 00:45:34.800
but this is a nice cross technology.

00:45:34.900 --> 00:45:35.480
Are you in.net?

00:45:35.540 --> 00:45:36.020
Are you in Ruby?

00:45:36.120 --> 00:45:36.680
Are you in JavaScript?

00:45:36.840 --> 00:45:37.760
Here's how you make it chill.

00:45:38.980 --> 00:45:39.340
Okay.

00:45:39.460 --> 00:45:40.880
So back to AI.

00:45:41.040 --> 00:45:41.500
Real quick.

00:45:42.240 --> 00:45:47.220
Paul Everett and I did this video debate,

00:45:47.360 --> 00:45:48.060
although it was not,

00:45:48.060 --> 00:45:49.220
not that much of a debate,

00:45:49.300 --> 00:45:51.000
but it was more of a conversation,

00:45:51.220 --> 00:45:54.940
but in kind of debate format about will AI kill open source,

00:45:55.700 --> 00:45:57.720
not the licensing part of it,

00:45:57.780 --> 00:46:00.720
but just will it make open source unnecessary?

00:46:01.060 --> 00:46:03.320
Will it just stop using open source and so on?

00:46:03.480 --> 00:46:04.220
We don't think so,

00:46:04.260 --> 00:46:07.420
but we had a really nice chat and did a little quick writeup,

00:46:07.420 --> 00:46:09.360
but mostly the writeup links to the video.

00:46:09.640 --> 00:46:10.420
So check out the video.

00:46:10.940 --> 00:46:11.380
Okay.

00:46:12.100 --> 00:46:15.380
I also did a writeup called always activate the VE and V,

00:46:15.740 --> 00:46:16.280
a shell script.

00:46:16.280 --> 00:46:17.760
So I talked about this before,

00:46:17.760 --> 00:46:18.180
I believe.

00:46:19.320 --> 00:46:20.280
This is not the thing.

00:46:20.380 --> 00:46:22.140
This is the lead into the thing I want to talk about.

00:46:22.640 --> 00:46:28.560
And so as I change directories around my computer with just the terminal,

00:46:28.800 --> 00:46:32.420
it automatically finds and activates virtual environments.

00:46:32.420 --> 00:46:33.740
But there's like,

00:46:33.740 --> 00:46:34.860
there's like,

00:46:34.860 --> 00:46:36.140
this was a thing in dirt,

00:46:36.140 --> 00:46:36.800
dirt inf.

00:46:38.020 --> 00:46:38.620
They said,

00:46:38.680 --> 00:46:38.760
well,

00:46:38.760 --> 00:46:39.500
we can't do this.

00:46:39.720 --> 00:46:49.580
What if somebody maliciously sends some kind of virus and like commits a virus called VE and V into the repo?

00:46:49.580 --> 00:46:52.020
And like it runs the activate script.

00:46:52.020 --> 00:46:53.920
What if that activate script is malicious?

00:46:53.920 --> 00:46:54.420
You know,

00:46:54.420 --> 00:46:55.060
that kind of thing.

00:46:55.060 --> 00:47:00.280
So with some nice feedback from Scott H,

00:47:00.500 --> 00:47:04.260
I made a much more secure version that whitelist them.

00:47:04.260 --> 00:47:04.840
And if you're,

00:47:04.900 --> 00:47:05.480
it's not whitelisted,

00:47:05.600 --> 00:47:05.780
it says,

00:47:05.840 --> 00:47:05.920
Hey,

00:47:05.980 --> 00:47:06.280
do you,

00:47:06.360 --> 00:47:09.140
do you really trust this thing or do you not?

00:47:09.180 --> 00:47:10.760
Cause you might just open up a folder and go,

00:47:10.820 --> 00:47:11.280
Oh my gosh,

00:47:11.820 --> 00:47:16.260
there was a virtual indirect virtual environment somewhere and it activated and ran something that I didn't know was going to happen.

00:47:16.260 --> 00:47:16.480
Right.

00:47:17.040 --> 00:47:19.420
So all that I think is super polished and really nice.

00:47:19.420 --> 00:47:19.740
And I'm,

00:47:19.740 --> 00:47:20.260
I'm loving it.

00:47:20.320 --> 00:47:21.020
So here's the news.

00:47:22.600 --> 00:47:26.640
Viraj Kenwande or Kenwande said,

00:47:26.640 --> 00:47:36.660
I wrote the antidote for ZSH plugin management and I ran across Michael's secure aware virtual environment activator script,

00:47:36.800 --> 00:47:37.600
which was pretty awesome.

00:47:37.780 --> 00:47:41.680
So this is now a Z shell plugin or Oh my Z,

00:47:41.820 --> 00:47:43.260
just Z shell plugin,

00:47:43.640 --> 00:47:46.440
a ZSH safe V and V auto is what it's called,

00:47:46.520 --> 00:47:47.420
which I thought was pretty awesome.

00:47:48.020 --> 00:47:48.760
That's pretty cool.

00:47:49.500 --> 00:47:49.940
Yeah.

00:47:49.960 --> 00:47:50.200
Yeah.

00:47:51.100 --> 00:47:51.640
All right.

00:47:51.640 --> 00:47:52.560
That's it for my extras.

00:47:53.540 --> 00:47:53.980
Cool.

00:47:55.320 --> 00:47:56.220
We each got a joke,

00:47:56.300 --> 00:47:56.440
right?

00:47:57.220 --> 00:47:57.580
Uh,

00:47:57.660 --> 00:47:58.080
yeah,

00:47:58.160 --> 00:47:59.440
I took mine down though.

00:47:59.640 --> 00:48:00.000
Uh,

00:48:00.000 --> 00:48:03.480
so I'm going to have to rely on you to bring it into your thing.

00:48:03.660 --> 00:48:03.740
So,

00:48:04.060 --> 00:48:04.360
all right,

00:48:04.360 --> 00:48:04.860
I'll find it.

00:48:04.940 --> 00:48:05.220
No worries.

00:48:05.700 --> 00:48:07.140
So this,

00:48:07.240 --> 00:48:11.040
this one is so good and it follows this AI theme that we've been going.

00:48:11.560 --> 00:48:17.540
Remember the stack overflow keyboard and this is exactly the same vibe as the stack overflow keyboard.

00:48:17.640 --> 00:48:25.520
The stack overflow keyboard was like the coders keyboard and it just had a control and a C and a V for the joke of just copy and pasting from stack overflow.

00:48:26.060 --> 00:48:26.300
Yeah.

00:48:26.300 --> 00:48:26.620
Well,

00:48:26.620 --> 00:48:28.400
if you've done anything with cloud code,

00:48:28.740 --> 00:48:32.640
it often asks permissions to make changes and it says,

00:48:32.800 --> 00:48:34.040
do you want to allow this once?

00:48:34.280 --> 00:48:35.280
Allow this always?

00:48:35.380 --> 00:48:36.860
Or do you want to reject this change?

00:48:37.360 --> 00:48:41.440
And so it's the super fancy Apple looking keyboard that just says allow once,

00:48:42.200 --> 00:48:43.340
always allow or reject.

00:48:43.340 --> 00:48:45.360
So this is funny on its own.

00:48:45.420 --> 00:48:46.580
You all have to check out the picture.

00:48:47.480 --> 00:48:48.720
I put it in the show notes.

00:48:48.840 --> 00:48:51.200
It may or may not show up in your podcast player.

00:48:51.680 --> 00:48:52.340
I don't know.

00:48:52.400 --> 00:48:52.840
Maybe I can,

00:48:52.900 --> 00:48:53.620
I'll just make it the,

00:48:53.620 --> 00:48:54.480
the poster art.

00:48:54.480 --> 00:48:55.480
Um,

00:48:55.480 --> 00:48:57.240
so,

00:48:57.360 --> 00:48:59.120
but also there's,

00:48:59.120 --> 00:49:00.160
there's two,

00:49:00.320 --> 00:49:01.060
there's two,

00:49:01.140 --> 00:49:01.820
too many buttons.

00:49:01.820 --> 00:49:04.060
I think you just all need allow always.

00:49:04.060 --> 00:49:05.020
I know.

00:49:05.160 --> 00:49:05.520
Well,

00:49:05.580 --> 00:49:05.860
let's,

00:49:06.060 --> 00:49:08.180
let's review the comments because,

00:49:08.380 --> 00:49:09.060
oh my gosh,

00:49:09.080 --> 00:49:09.640
they're so good.

00:49:09.680 --> 00:49:11.220
There's 223 comments.

00:49:11.980 --> 00:49:12.120
Yeah,

00:49:12.200 --> 00:49:12.580
exactly.

00:49:12.780 --> 00:49:14.580
Issue says waste of two buttons.

00:49:14.840 --> 00:49:15.800
I truly productive.

00:49:15.800 --> 00:49:17.880
I should only have allow all.

00:49:17.880 --> 00:49:19.160
Um,

00:49:19.960 --> 00:49:20.380
did it,

00:49:20.380 --> 00:49:22.560
did it get somebody?

00:49:22.960 --> 00:49:23.700
This is like the,

00:49:23.940 --> 00:49:26.240
remember the joke last week that was like,

00:49:26.280 --> 00:49:28.340
so you're new to a sarcasm.

00:49:28.340 --> 00:49:30.560
The person that looks like an AI generated image.

00:49:30.700 --> 00:49:30.980
Yeah,

00:49:31.080 --> 00:49:31.460
exactly.

00:49:31.620 --> 00:49:31.900
It didn't.

00:49:32.040 --> 00:49:32.440
Obviously.

00:49:34.580 --> 00:49:37.260
And there's the secret button dangerously skip permissions.

00:49:37.740 --> 00:49:40.000
Somebody added it to their stream deck for real,

00:49:40.080 --> 00:49:41.140
that it actually allows it.

00:49:41.780 --> 00:49:42.220
Yeah.

00:49:42.400 --> 00:49:43.180
So Matt says too,

00:49:43.240 --> 00:49:43.840
too many buttons.

00:49:44.740 --> 00:49:46.020
But if we go down,

00:49:46.240 --> 00:49:47.020
oh my gosh,

00:49:47.020 --> 00:49:48.140
there's,

00:49:48.240 --> 00:49:48.480
um,

00:49:48.640 --> 00:49:48.940
there's,

00:49:49.060 --> 00:49:49.540
there's,

00:49:49.660 --> 00:49:50.880
this is the one,

00:49:51.100 --> 00:49:52.120
the actual one,

00:49:52.200 --> 00:49:52.400
Brian,

00:49:52.540 --> 00:49:53.020
there's,

00:49:53.120 --> 00:49:54.880
there's a used version.

00:49:54.880 --> 00:49:56.880
It says update after day one,

00:49:56.960 --> 00:49:58.920
it shows the same picture,

00:49:58.920 --> 00:50:01.840
but the allow always is like cracked and smash.

00:50:01.840 --> 00:50:02.360
And just like,

00:50:02.360 --> 00:50:03.940
it's just been hit like brutally.

00:50:04.220 --> 00:50:04.840
Just use.

00:50:05.000 --> 00:50:05.360
Yes.

00:50:06.600 --> 00:50:07.040
Oh,

00:50:07.140 --> 00:50:09.040
this is really good.

00:50:09.780 --> 00:50:11.160
And so someone says,

00:50:11.200 --> 00:50:11.920
you got to be safe.

00:50:11.960 --> 00:50:14.820
And they create a little like Rube Goldberg machine that just like

00:50:14.820 --> 00:50:16.700
automates hitting allow once.

00:50:16.700 --> 00:50:17.320
But forever.

00:50:17.740 --> 00:50:18.100
Yeah.

00:50:18.120 --> 00:50:19.160
Just a little bobber,

00:50:19.480 --> 00:50:22.120
bobber thing that just hits it all the time.

00:50:22.220 --> 00:50:22.600
That's funny.

00:50:22.780 --> 00:50:23.040
Yeah.

00:50:23.120 --> 00:50:23.760
Devin says,

00:50:23.840 --> 00:50:23.980
no,

00:50:24.020 --> 00:50:24.120
no,

00:50:24.120 --> 00:50:24.300
no,

00:50:24.300 --> 00:50:24.920
we need the,

00:50:24.960 --> 00:50:25.280
you know,

00:50:25.340 --> 00:50:26.080
Claude code.

00:50:26.140 --> 00:50:26.440
We'll say,

00:50:26.520 --> 00:50:26.820
we're going to,

00:50:26.900 --> 00:50:28.360
I got to ask you a few questions.

00:50:28.740 --> 00:50:29.780
Here's three options.

00:50:29.860 --> 00:50:30.380
Do you want one,

00:50:30.460 --> 00:50:30.920
two or three,

00:50:30.980 --> 00:50:33.040
or sometimes there's four or you got to choose other.

00:50:33.040 --> 00:50:35.400
So there's one that has like a second row that says one,

00:50:35.460 --> 00:50:35.520
two,

00:50:35.580 --> 00:50:35.660
three,

00:50:35.740 --> 00:50:36.220
four other.

00:50:37.980 --> 00:50:39.320
I would actually use that.

00:50:39.960 --> 00:50:40.680
I know.

00:50:40.780 --> 00:50:41.460
It's so good.

00:50:41.520 --> 00:50:43.240
Another one has like the three,

00:50:43.360 --> 00:50:44.200
the allow once.

00:50:44.280 --> 00:50:45.200
I'll always reject it.

00:50:45.200 --> 00:50:47.400
It has a microphone button to dictate to it.

00:50:47.600 --> 00:50:49.060
These are so good.

00:50:49.300 --> 00:50:50.820
You got to look at the comments.

00:50:51.740 --> 00:50:52.480
That's funny.

00:50:53.480 --> 00:50:53.920
Anyway,

00:50:54.200 --> 00:50:55.660
that's good.

00:50:55.660 --> 00:50:56.020
Yeah.

00:50:56.100 --> 00:50:56.460
Yeah.

00:50:56.480 --> 00:50:57.080
That's my joke.

00:50:57.540 --> 00:51:01.480
But my favorite one of it is where it's like crushed with like after day one.

00:51:02.840 --> 00:51:03.240
Yeah.

00:51:04.160 --> 00:51:04.560
So,

00:51:04.560 --> 00:51:05.720
well,

00:51:05.800 --> 00:51:05.960
I'll,

00:51:06.080 --> 00:51:06.460
uh,

00:51:06.460 --> 00:51:07.400
let me try to get mine up.

00:51:07.600 --> 00:51:08.140
Let's see.

00:51:09.200 --> 00:51:11.040
I can pull up for you if you don't have it yet.

00:51:11.060 --> 00:51:11.260
Okay.

00:51:11.720 --> 00:51:11.940
Yeah.

00:51:11.940 --> 00:51:13.680
Just go ahead and pull that link up or something.

00:51:15.060 --> 00:51:15.780
Or the picture.

00:51:18.820 --> 00:51:19.220
Uh,

00:51:19.420 --> 00:51:19.940
so,

00:51:20.100 --> 00:51:20.320
uh,

00:51:20.320 --> 00:51:23.840
this was submitted with something else submitted by Paul Cutler,

00:51:23.980 --> 00:51:24.700
uh,

00:51:24.700 --> 00:51:26.240
has some news about AI too.

00:51:26.820 --> 00:51:27.140
Um,

00:51:27.640 --> 00:51:28.040
uh,

00:51:28.040 --> 00:51:28.740
are you getting it?

00:51:28.800 --> 00:51:29.280
You want me to,

00:51:29.500 --> 00:51:30.120
I get it?

00:51:30.160 --> 00:51:30.660
It's just slow.

00:51:31.340 --> 00:51:31.780
Okay.

00:51:31.840 --> 00:51:32.760
It's just slow loading.

00:51:32.880 --> 00:51:33.320
There we go.

00:51:35.880 --> 00:51:36.280
So,

00:51:36.380 --> 00:51:36.800
uh,

00:51:36.800 --> 00:51:38.220
set this over on,

00:51:38.220 --> 00:51:38.540
uh,

00:51:38.540 --> 00:51:39.180
Mastodon,

00:51:39.180 --> 00:51:40.140
um,

00:51:40.960 --> 00:51:42.200
Paul Cutler today.

00:51:42.200 --> 00:51:47.380
It was mandated at work that we install cloud code because as they said,

00:51:47.460 --> 00:51:51.020
it has built in PowerPoint creation capabilities.

00:51:52.540 --> 00:51:53.780
What a reason.

00:51:53.780 --> 00:51:54.700
FML.

00:51:55.700 --> 00:51:56.140
Yeah.

00:51:57.360 --> 00:51:57.660
Uh,

00:51:57.660 --> 00:52:02.940
cause you know what's coming next hour long meetings with lots of PowerPoint.

00:52:03.280 --> 00:52:03.760
You know,

00:52:03.820 --> 00:52:05.520
I thought this was super funny at first,

00:52:05.520 --> 00:52:08.980
but also like it drives me kind of nuts with it.

00:52:08.980 --> 00:52:09.160
Cause,

00:52:09.240 --> 00:52:09.520
because,

00:52:09.680 --> 00:52:09.860
you know,

00:52:09.860 --> 00:52:10.540
I'm a coder.

00:52:10.660 --> 00:52:12.640
So if I have to write a PowerPoint presentation,

00:52:12.640 --> 00:52:13.460
it's unusual.

00:52:13.980 --> 00:52:14.420
So,

00:52:14.940 --> 00:52:15.240
um,

00:52:15.400 --> 00:52:19.700
this probably is a good idea that I could save some time and not waste time on

00:52:19.700 --> 00:52:20.400
creating PowerPoint.

00:52:20.400 --> 00:52:20.840
So,

00:52:20.840 --> 00:52:21.280
yeah,

00:52:21.360 --> 00:52:21.740
no kidding.

00:52:21.860 --> 00:52:21.980
Well,

00:52:21.980 --> 00:52:22.360
it's actually,

00:52:22.440 --> 00:52:22.760
it was a,

00:52:22.840 --> 00:52:24.900
it's a pretty neat integration.

00:52:24.900 --> 00:52:26.640
It's not just that it knows how to do PowerPoint,

00:52:26.640 --> 00:52:27.120
but it,

00:52:27.520 --> 00:52:31.000
if you open up the cloud desktop app,

00:52:31.060 --> 00:52:32.340
the same one that does cowork,

00:52:32.340 --> 00:52:35.340
it has a little,

00:52:35.460 --> 00:52:38.940
what's new button and you click it and it says install into PowerPoint.

00:52:38.940 --> 00:52:44.560
And it actually adds like a cloud section inside of your PowerPoint presentation.

00:52:44.560 --> 00:52:46.860
Why?

00:52:47.480 --> 00:52:49.560
So you could like highlight a picture and say,

00:52:49.620 --> 00:52:51.980
could we get a different picture for this or highlight the text?

00:52:52.020 --> 00:52:52.500
And could you,

00:52:52.640 --> 00:52:54.380
could you animate this in from the left?

00:52:54.840 --> 00:52:55.240
Oh,

00:52:55.320 --> 00:52:57.780
like not while you're presenting though?

00:52:58.160 --> 00:52:58.280
Like,

00:52:58.480 --> 00:52:58.740
no,

00:52:58.800 --> 00:52:59.900
it's during the building time.

00:53:00.020 --> 00:53:00.380
Okay.

00:53:00.540 --> 00:53:00.760
Yeah.

00:53:00.760 --> 00:53:01.320
That makes more sense.

00:53:01.320 --> 00:53:01.400
No,

00:53:01.440 --> 00:53:03.400
you got like format picture animation tab,

00:53:03.400 --> 00:53:04.680
and then you've got Claude now.

00:53:05.160 --> 00:53:05.560
Yeah.

00:53:05.940 --> 00:53:06.700
It's actually pretty,

00:53:06.780 --> 00:53:10.120
as opposed to just read my PowerPoint file and do this,

00:53:10.180 --> 00:53:10.480
you know,

00:53:10.900 --> 00:53:12.860
sorry,

00:53:12.940 --> 00:53:13.120
Paul,

00:53:13.120 --> 00:53:15.640
I want it to be during the presentation.

00:53:15.640 --> 00:53:17.200
So when you're presenting and go,

00:53:17.320 --> 00:53:17.880
Hey,

00:53:17.900 --> 00:53:18.200
Claude,

00:53:18.280 --> 00:53:22.440
does anybody in the audience stopped at Starbucks before they got here?

00:53:23.740 --> 00:53:25.980
I forgot what I'm talking about.

00:53:26.020 --> 00:53:26.240
Claude,

00:53:26.300 --> 00:53:27.820
please tell the audience what this means.

00:53:29.980 --> 00:53:30.460
Yeah.

00:53:30.700 --> 00:53:30.980
Anyway.

00:53:31.460 --> 00:53:31.700
Yeah.

00:53:32.400 --> 00:53:32.840
Awesome.

00:53:33.140 --> 00:53:33.340
Well,

00:53:33.520 --> 00:53:35.740
fun talking with you as always.

00:53:36.000 --> 00:53:37.940
And I don't know if we need to,

00:53:37.940 --> 00:53:38.340
to,

00:53:38.340 --> 00:53:43.020
to change the name of the podcast to like Claude bites.

00:53:43.120 --> 00:53:43.640
Um,

00:53:43.740 --> 00:53:44.040
or,

00:53:44.040 --> 00:53:44.100
or,

00:53:44.100 --> 00:53:46.180
or how we,

00:53:46.180 --> 00:53:46.880
I don't think so,

00:53:47.100 --> 00:53:49.880
but I mean,

00:53:49.940 --> 00:53:50.360
honestly,

00:53:50.360 --> 00:53:51.260
it's,

00:53:51.400 --> 00:53:52.720
it's a good point,

00:53:52.720 --> 00:53:57.760
but as a meta comment for the audience out there,

00:53:57.760 --> 00:54:05.500
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:54:05.940 --> 00:54:06.340
Yeah.

00:54:06.400 --> 00:54:08.380
But we obviously realize that there's plenty of stuff.

00:54:08.380 --> 00:54:11.280
That's not really AI at all.

00:54:12.780 --> 00:54:13.620
At the same time,

00:54:13.640 --> 00:54:14.880
it's transforming the industry.

00:54:14.880 --> 00:54:16.840
Like basically like the web,

00:54:17.400 --> 00:54:19.520
when the web came around and it's like,

00:54:19.520 --> 00:54:20.220
well,

00:54:20.220 --> 00:54:20.820
now we have the web,

00:54:20.880 --> 00:54:22.340
but we don't talk about it because it's,

00:54:22.480 --> 00:54:23.160
you know,

00:54:23.160 --> 00:54:23.560
I don't know.

00:54:23.620 --> 00:54:23.820
It's,

00:54:23.820 --> 00:54:24.240
it's tough.

00:54:24.300 --> 00:54:24.780
It's a balance.

00:54:25.440 --> 00:54:25.840
Also,

00:54:25.960 --> 00:54:30.160
I just am aware that there's people that care about Python,

00:54:30.160 --> 00:54:32.880
but also they have to care about this right now,

00:54:32.920 --> 00:54:34.060
whether they want to or not.

00:54:34.120 --> 00:54:36.580
So it's something I'm willing to cover as well.

00:54:36.940 --> 00:54:37.060
So,

00:54:37.400 --> 00:54:37.540
yeah.

00:54:37.620 --> 00:54:37.780
Yeah.

00:54:38.400 --> 00:54:38.960
And it's just,

00:54:39.080 --> 00:54:39.560
and it's wild.

00:54:39.760 --> 00:54:41.120
And may we live in interesting times.

00:54:42.400 --> 00:54:42.800
Bye.

00:54:42.840 --> 00:54:43.000
Later,

00:54:43.040 --> 00:54:43.180
Brian.

00:54:43.180 --> 00:54:43.240
Bye.

00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:43.240


00:54:43.240 --> 00:54:44.240
Bye.
