WEBVTT
00:00:00.000 -->
00:00:08.300Hey, everybody. Hey, Michael. It's great to be back. So we kick it off.
00:00:09.140 -->
00:00:11.120Let's kick it off. Let's do it.
00:00:12.480 -->
00:00:17.880Hello, and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
00:00:18.400 -->
00:00:25.320This is episode 473, recorded March 16th, 2026. And I am Brian Okken.
00:00:25.740 -->
00:00:26.960And I'm Michael Kennedy.
00:00:26.960 -->
00:00:33.720And as often lately, this episode is sponsored by you and us.
00:00:34.060 -->
00:00:40.340For everybody that supports the show through Patreon or through mostly through a lot of our offerings,
00:00:40.420 -->
00:00:47.560like the courses at Talk Python Training and PythonTest.com and books.
00:00:47.720 -->
00:00:53.140We'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.300Anyway, thanks a lot for everybody supporting us.
00:00:56.300 -->
00:01:03.220It 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.480pythonbytes.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.560So 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.120You also can watch the show if you'd like, either real time or after the fact.
00:01:26.400 -->
00:01:30.720You can join us at pythonbytes.fm/live and be part of the audience.
00:01:30.720 -->
00:01:39.220And 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.780That's fun.
00:01:39.780 -->
00:01:51.520Anyway, 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.520But 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.140And 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.500So with that, what do we have to start with?
00:02:15.500 -->
00:02:19.720Well, I've got a doozy, as they say.
00:02:19.940 -->
00:02:20.400A doozy.
00:02:20.480 -->
00:02:22.980And this one comes to us from Ian Lessing.
00:02:23.100 -->
00:02:27.040So thank you for sending it in to your point about sending us ideas about the show.
00:02:27.240 -->
00:02:30.520This one somehow missed my radar, but shouldn't have.
00:02:31.160 -->
00:02:34.840So, yeah, it's a big one.
00:02:35.740 -->
00:02:40.680So this, you probably have seen char debt as in character debt.
00:02:40.800 -->
00:02:41.840Maybe it's care debt.
00:02:42.060 -->
00:02:42.380I don't know.
00:02:42.380 -->
00:02:44.700I'm always, you know, sidebar.
00:02:45.500 -->
00:02:52.080It's always funny to think about abbreviations like lib or lib.
00:02:53.180 -->
00:02:56.980You know, it's, if you pronounce it L-I-B, I think it goes lib.
00:02:57.080 -->
00:02:59.580But if it's an abbreviation of library, shouldn't it be lib?
00:02:59.820 -->
00:03:00.300I don't know.
00:03:00.600 -->
00:03:00.920So anyway.
00:03:01.040 -->
00:03:01.900No, because that's weird.
00:03:02.420 -->
00:03:03.220I know it is weird.
00:03:03.220 -->
00:03:17.240So, 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.920So I think this alone makes it interesting because there's something happening with this project.
00:03:23.920 -->
00:03:30.460And 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.500Like, I don't want you to, but you can't.
00:03:32.500 -->
00:03:34.100So here's the headline.
00:03:34.740 -->
00:03:40.340Care debt, does the care debt dispute shows how AI will kill software licensing, argues Bruce Perens.
00:03:41.300 -->
00:03:41.600Perens.
00:03:42.540 -->
00:03:44.900And subtitles comes from the register.
00:03:45.060 -->
00:03:49.920Alarm bells are ringing in the open source community, but commercial licensing is also at risk.
00:03:49.920 -->
00:03:52.520So, told you it's a doozy.
00:03:52.640 -->
00:03:53.400What is going on?
00:03:53.720 -->
00:04:02.960So 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.160It was LGPL, and he released it under MIT.
00:04:09.520 -->
00:04:16.860In 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.580License, which almost all the stuff that I do is MIT as well.
00:04:20.640 -->
00:04:24.720I just want people to just, I'd rather have people just have access to do whatever.
00:04:24.940 -->
00:04:30.860Like, 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.400Like, nothing I'm doing is that important, you know?
00:04:34.080 -->
00:04:40.900Yeah, 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.820Yes.
00:04:42.480 -->
00:04:42.920So.
00:04:42.920 -->
00:04:49.300And look, if it's okay, I was not familiar with what this is.
00:04:49.440 -->
00:04:50.640I still don't quite get.
00:04:50.740 -->
00:04:52.420What does Caradet do?
00:04:52.980 -->
00:04:59.280So it is a character detection library that's used by millions of projects.
00:04:59.380 -->
00:04:59.700Let me see.
00:04:59.780 -->
00:05:02.680It has 130 million downloads a month.
00:05:03.360 -->
00:05:06.480So it's used by a lot of things.
00:05:07.920 -->
00:05:08.360Okay.
00:05:08.580 -->
00:05:09.720Character encoding detector.
00:05:09.720 -->
00:05:10.820Yes, yeah, exactly.
00:05:11.000 -->
00:05:13.220Like, UTF, I think, you know.
00:05:13.300 -->
00:05:18.020Is 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.040Yeah, okay.
00:05:19.040 -->
00:05:19.880So it takes a guess, right?
00:05:20.380 -->
00:05:20.580Right.
00:05:20.880 -->
00:05:22.620You're getting bytes and you're not really sure.
00:05:22.760 -->
00:05:24.580It's like, wasn't declared or whatever.
00:05:24.580 -->
00:05:29.100So previously this was an LGPL project.
00:05:30.240 -->
00:05:34.600Dan Blanchard wanted two things from what I can read between the lines.
00:05:35.120 -->
00:05:36.400Putting words into their mouth.
00:05:37.440 -->
00:05:43.300One, wanted to dramatically improve this library to make it better.
00:05:44.160 -->
00:05:44.520Check.
00:05:44.800 -->
00:05:45.800You'll see he did that.
00:05:45.800 -->
00:05:53.020Two, wanted to set the stage such that this can just be part of Python.
00:05:53.260 -->
00:05:55.040Like, could this just be part of the standard library?
00:05:55.900 -->
00:06:01.160So previously, like, there's this move to say we should have less in Python.
00:06:01.320 -->
00:06:01.940And I agree.
00:06:02.060 -->
00:06:06.600But detecting whether or not something is Unicode or ASCII or whatever,
00:06:07.620 -->
00:06:08.920maybe that does belong in the library.
00:06:09.020 -->
00:06:09.860Anyway, that was the goal.
00:06:09.900 -->
00:06:10.800It's like, could we put it in there?
00:06:10.800 -->
00:06:12.340Well, LGPL says no.
00:06:13.140 -->
00:06:15.700It would change the license of Python, I believe.
00:06:16.660 -->
00:06:16.860Right?
00:06:17.100 -->
00:06:20.140So as long as it's a GPL-based license,
00:06:20.600 -->
00:06:23.200you can't move this library into the standard library.
00:06:23.740 -->
00:06:26.860I don't know if the core developers or even if Dan is a core developer
00:06:26.860 -->
00:06:28.380was interested in this.
00:06:28.760 -->
00:06:31.220But that was one of the goals, right?
00:06:31.620 -->
00:06:33.960So no problem.
00:06:33.960 -->
00:06:34.800We're going to change it.
00:06:34.940 -->
00:06:38.400Well, an individual claiming to be Mark Pilgrim
00:06:38.400 -->
00:06:42.020because you can't verify people on the internet for sure.
00:06:42.380 -->
00:06:44.080The original created the library.
00:06:44.420 -->
00:06:47.440So it's a little bit like Flask where Armin Roeneker created it
00:06:47.440 -->
00:06:49.340and then now David Lord maintains it.
00:06:49.800 -->
00:06:51.680And David Lord gets to do whatever he wants with it.
00:06:51.720 -->
00:06:53.780It's his project now as the maintainer.
00:06:54.980 -->
00:06:59.540But I'm sure Armin still has influence over the community's opinion
00:06:59.540 -->
00:07:02.600if he were to take a strong position one way or the other, right?
00:07:03.180 -->
00:07:05.440Neither of them chimed into this as far as I know.
00:07:05.700 -->
00:07:06.480I don't think.
00:07:06.580 -->
00:07:07.180Maybe Armin did.
00:07:07.240 -->
00:07:07.720I can't remember.
00:07:07.720 -->
00:07:10.220But there's a lot of chat about it.
00:07:10.240 -->
00:07:12.340I still think it's kind of like giving somebody a puppy
00:07:12.340 -->
00:07:15.800and then telling them what they have to, where they have to take it,
00:07:15.980 -->
00:07:17.200what vet they have to take it to.
00:07:17.620 -->
00:07:18.200Yes, exactly.
00:07:18.300 -->
00:07:18.780Yeah, exactly.
00:07:19.400 -->
00:07:24.040I'm leaning on the side of Dan Blanchard here, just setting the state.
00:07:24.120 -->
00:07:27.160I have a slight, there's a lot of complexity in this.
00:07:27.300 -->
00:07:30.100So I'm not like totally just saying this is how it is.
00:07:30.240 -->
00:07:32.800But let's keep setting the stage.
00:07:32.940 -->
00:07:35.300So Mark says, you can't do that.
00:07:35.300 -->
00:07:37.720You can't change an LPGL.
00:07:38.600 -->
00:07:39.760I believe that's the typo.
00:07:39.920 -->
00:07:41.800LGPL license requirement.
00:07:42.020 -->
00:07:44.780It requires that the license remain unchanged.
00:07:45.780 -->
00:07:50.020License code, when modified, must be released under the same GPL license.
00:07:50.020 -->
00:07:58.020But I get that when somebody gets it from the source, they make a change.
00:07:58.100 -->
00:07:59.880It must be released under the same license.
00:08:00.500 -->
00:08:05.040As the owner of the project, I thought you could change the license on Nuco.
00:08:05.040 -->
00:08:06.640I don't know.
00:08:08.080 -->
00:08:11.520It's your software, effectively.
00:08:11.880 -->
00:08:15.860If you want to change the license of it, I don't know.
00:08:16.760 -->
00:08:20.380This is a little bit of shaky ground here to say that you can't change the license.
00:08:20.380 -->
00:08:23.660As the owner of the license, you know what I mean?
00:08:24.000 -->
00:08:27.400Anyone else in the world should not, they have to follow what I just read.
00:08:27.480 -->
00:08:29.280But as the owner of the license, is that true?
00:08:30.360 -->
00:08:32.400Well, so here's what Dan did.
00:08:32.500 -->
00:08:36.640Dan said, here's what, I'm going to create a new better version.
00:08:37.100 -->
00:08:41.820I'm going to rewrite this entire project from scratch, not using any of its source code,
00:08:41.820 -->
00:08:46.420and re-release it into the same package channel as the old one.
00:08:47.320 -->
00:08:47.420Okay?
00:08:48.780 -->
00:08:55.080Now, 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.500And one of the challenges is, if you know how it works, your idea,
00:08:59.680 -->
00:09:05.080it's like hard to do a fresh from scratch rewrite if it's burned into your mind,
00:09:05.220 -->
00:09:06.700how it works, you know what I mean?
00:09:07.420 -->
00:09:11.640So what he did is he just gave the specification to Claude.
00:09:11.640 -->
00:09:14.780And said, Claude, write this so that the test pass.
00:09:16.060 -->
00:09:17.260And Claude wrote it.
00:09:17.580 -->
00:09:20.340And it wrote it extremely differently.
00:09:20.960 -->
00:09:27.680There's a plagiarism detection algorithm.
00:09:28.700 -->
00:09:30.860So it's probably more for English, but whatever.
00:09:31.420 -->
00:09:35.840It said it is only 1% similar to version 6.
00:09:35.840 -->
00:09:38.040Version 7 is only 1% similar to version 6.
00:09:38.040 -->
00:09:43.660So that means it's pretty different.
00:09:44.260 -->
00:09:47.080Dan also said it's like structurally the files are not named the same.
00:09:47.180 -->
00:09:48.400They're not organized the same.
00:09:48.540 -->
00:09:50.900It is basically not at all the same thing.
00:09:51.040 -->
00:09:51.280Nothing.
00:09:51.860 -->
00:09:57.500The 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.880And so they believe there's nothing here.
00:10:03.300 -->
00:10:04.680This is a new project.
00:10:05.540 -->
00:10:07.580This is what gets the MIT license.
00:10:08.260 -->
00:10:11.080Now, to be clear, this is a mega improvement.
00:10:11.360 -->
00:10:16.820It results in a 48 times improvement in detection speed.
00:10:16.820 -->
00:10:20.780It now supports multi-threading for Python T.
00:10:21.520 -->
00:10:24.520So you can do free-threaded Python and it supports that.
00:10:24.840 -->
00:10:27.760There's a lot of benefits to this new version.
00:10:28.160 -->
00:10:32.780So I don't think anyone is saying you've messed up the library.
00:10:33.160 -->
00:10:35.740It's like clearly a better library.
00:10:35.740 -->
00:10:46.280It'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.940You know what I mean?
00:10:47.740 -->
00:10:47.880Yeah.
00:10:49.780 -->
00:10:54.800So 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.540I'd never been paid to work on this and I have a full-time job, you know?
00:10:59.780 -->
00:11:05.120Software 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.580And a long-time open source developer, I'm also curious how this is going to shake out.
00:11:11.000 -->
00:11:11.400Yeah.
00:11:12.200 -->
00:11:19.380But 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.440Claude gave me the ability to do this in roughly five days.
00:11:24.660 -->
00:11:25.060Right?
00:11:25.400 -->
00:11:27.760So I think this is also really interesting.
00:11:28.460 -->
00:11:29.760But why change the license?
00:11:30.600 -->
00:11:32.860Because he wants to put it into Python.
00:11:34.200 -->
00:11:34.820Oh, okay.
00:11:35.860 -->
00:11:36.080Yeah.
00:11:37.360 -->
00:11:41.760Or 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.980I don't really know.
00:11:43.340 -->
00:11:48.940But 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.300And 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.740That's kind of what I would expect that he wanted to say as well.
00:12:01.740 -->
00:12:14.660Now, 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.660There's so much.
00:12:18.660 -->
00:12:19.340Why?
00:12:19.340 -->
00:12:20.720So much.
00:12:20.980 -->
00:12:22.680There is so much going on here.
00:12:23.060 -->
00:12:23.500I don't know.
00:12:23.560 -->
00:12:30.780Because 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.820And 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.100So I don't know.
00:12:40.180 -->
00:12:41.740I'm telling you, there's a lot of...
00:12:41.740 -->
00:12:49.340This may be the bigger issue is there's issue 327 fired by, I think, Mark Pilgrim.
00:12:49.440 -->
00:12:50.400Hi, I'm Mark Pilgrim.
00:12:50.800 -->
00:12:53.240The title is No Right to Relicense This Project.
00:12:53.480 -->
00:12:54.740And it's absolutely...
00:12:56.740 -->
00:12:59.080Toxic is the word.
00:12:59.340 -->
00:13:00.360So I don't know.
00:13:00.460 -->
00:13:02.040It's very interesting here.
00:13:02.780 -->
00:13:04.920I mean, version 6 is still there.
00:13:04.920 -->
00:13:09.140People 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.540I 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.380I mean, how many people actually care that much about character detection?
00:13:25.400 -->
00:13:26.200You know what I mean?
00:13:26.240 -->
00:13:27.220I mean, it's a utility.
00:13:27.220 -->
00:13:27.860Apparently a lot of people.
00:13:28.140 -->
00:13:28.980I know a lot of...
00:13:28.980 -->
00:13:29.640It's extreme.
00:13:29.800 -->
00:13:30.640This is like...
00:13:30.640 -->
00:13:33.560There are just pages of stuff to go through on all of this.
00:13:33.740 -->
00:13:34.720Like page after page.
00:13:34.880 -->
00:13:36.060It's crazy.
00:13:36.760 -->
00:13:37.260So...
00:13:37.260 -->
00:13:38.120Okay.
00:13:38.120 -->
00:13:40.080I understand the sensitivity of it.
00:13:40.620 -->
00:13:41.780I forgot my popcorn.
00:13:42.280 -->
00:13:42.780I know.
00:13:43.080 -->
00:13:43.620I know.
00:13:45.040 -->
00:13:53.600And I get it that AI ingesting the world's work and then turning that into automation.
00:13:54.460 -->
00:13:56.900I'm not even sure where that sits legally.
00:13:58.520 -->
00:14:01.020At the time, it felt like a lot of theft.
00:14:01.120 -->
00:14:02.680I'm not sure if it's a good trade-off or not.
00:14:04.120 -->
00:14:06.740I don't care how that relates to this project, though.
00:14:06.740 -->
00:14:07.740Okay.
00:14:08.740 -->
00:14:10.040So let me add in one more detail.
00:14:10.100 -->
00:14:11.160Like I said, there's a lot going on here.
00:14:11.240 -->
00:14:13.560We'll wrap this up pretty soon, but it's a super interesting discussion.
00:14:14.100 -->
00:14:15.160I think...
00:14:15.160 -->
00:14:17.420So one of the reasons that said...
00:14:17.420 -->
00:14:18.580She said, well, I did it with Claude Code.
00:14:18.660 -->
00:14:19.460They said, well, it doesn't matter.
00:14:19.540 -->
00:14:20.800Claude Code trained on GitHub.
00:14:21.140 -->
00:14:23.840Therefore, it trained on the original source code of Caradet.
00:14:26.340 -->
00:14:29.160Therefore, it's not a clean room reimplementation.
00:14:29.160 -->
00:14:31.160So I asked...
00:14:31.160 -->
00:14:36.980But 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.280As 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.700Yes, you're a human being that gets to interact in the world.
00:14:46.820 -->
00:14:47.260Yeah, exactly.
00:14:47.880 -->
00:14:52.580It'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.900So I can never, ever create a picture of a tree again because I looked at it, right?
00:14:57.000 -->
00:14:57.320Yeah.
00:14:57.680 -->
00:14:59.120That's why I said I'm on the side of...
00:14:59.120 -->
00:15:01.340I feel like I'm on Dan's side here.
00:15:02.140 -->
00:15:02.720So I...
00:15:02.720 -->
00:15:03.700Let me look.
00:15:03.800 -->
00:15:04.920So I wrote a little...
00:15:04.920 -->
00:15:05.420I didn't write.
00:15:05.620 -->
00:15:11.040I asked Cloud for some research on like, well, what is the legal precedence of this?
00:15:11.040 -->
00:15:12.340Here's the situation.
00:15:13.200 -->
00:15:18.860At least in the US, are there rules, rulings that have come down previously?
00:15:18.860 -->
00:15:28.860So 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.440I can't remember who.
00:15:30.500 -->
00:15:41.020They 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.140and built an exact tool for legal research.
00:15:43.460 -->
00:15:45.520That turned out to be a violation.
00:15:46.700 -->
00:15:47.720But the exists...
00:15:47.720 -->
00:15:48.900This is interesting.
00:15:49.020 -->
00:15:52.340The existing copyright framework requires two things to prove infringement.
00:15:52.520 -->
00:15:53.840Access to the original work.
00:15:54.360 -->
00:15:54.620Check.
00:15:54.840 -->
00:15:57.080Cloud did have access to the original work.
00:15:57.360 -->
00:15:59.900And substantial similarity in output.
00:16:00.460 -->
00:16:00.720No.
00:16:00.980 -->
00:16:01.720Not even close.
00:16:02.100 -->
00:16:03.860Not even 1%.
00:16:03.860 -->
00:16:09.060I know it's at 1.3%, but that was like structure of argpars.
00:16:09.060 -->
00:16:09.960You know what I mean?
00:16:10.100 -->
00:16:11.760That's argparse structure.
00:16:11.900 -->
00:16:14.040That's not chardet structure, effectively.
00:16:15.280 -->
00:16:18.720So I think this strongly fails.
00:16:19.240 -->
00:16:23.940Those are the two criteria that you have to have to prove similarity.
00:16:23.940 -->
00:16:25.720Hmm.
00:16:26.580 -->
00:16:26.840Hmm.
00:16:27.260 -->
00:16:29.580But there's other stuff.
00:16:30.420 -->
00:16:35.940The emerging judicial consensus is that developing...
00:16:36.580 -->
00:16:42.200Is developing that training a general purpose AI model is highly transformative, therefore is free use.
00:16:42.200 -->
00:16:45.500But there were some specific examples where it wasn't.
00:16:46.100 -->
00:16:46.200The copyright...
00:16:46.720 -->
00:16:55.360The 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.100And 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.640Period.
00:17:09.080 -->
00:17:09.820You know what I mean?
00:17:10.080 -->
00:17:12.820And I don't know how that's going to shake out, but it's so far down.
00:17:12.920 -->
00:17:14.960I mean, let's take, like, the extreme case.
00:17:15.040 -->
00:17:16.080And you go, well, you know what?
00:17:16.260 -->
00:17:20.620All the current models have been trained on licensed stuff.
00:17:20.620 -->
00:17:24.140So let's just, like, not really just start over.
00:17:24.320 -->
00:17:26.540It's going to cost a ton of money to retrain a model.
00:17:27.440 -->
00:17:30.260But do it right.
00:17:30.760 -->
00:17:31.540Yeah, that's true.
00:17:31.540 -->
00:17:34.260Only train on the stuff that's available license-wise.
00:17:34.820 -->
00:17:35.180Right.
00:17:35.260 -->
00:17:37.460You could just look and say, is it a GPL license?
00:17:37.560 -->
00:17:38.320We're not trading on that.
00:17:38.380 -->
00:17:39.360Is it an MIT license?
00:17:39.560 -->
00:17:40.060It's on.
00:17:40.280 -->
00:17:40.700You know what I mean?
00:17:40.760 -->
00:17:40.900Yeah.
00:17:40.900 -->
00:17:44.320There's probably plenty of information still out there to build out your models.
00:17:46.320 -->
00:17:48.320Anyway, it's pretty wild.
00:17:48.320 -->
00:17:50.900I think people can have a look.
00:17:51.620 -->
00:17:56.640I would certainly say the folks who took the time to comment are very much against this.
00:17:56.940 -->
00:17:58.960There's a lot of toxicity.
00:17:59.380 -->
00:18:05.420And 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.320And they're not fun.
00:18:07.580 -->
00:18:14.100But I'm – I kind of – I think Dan has a point here.
00:18:14.100 -->
00:18:19.740However, this could all be solved if he just said, okay, version 7 is char.2, new project.
00:18:20.880 -->
00:18:22.560And just put like a strong warning.
00:18:22.700 -->
00:18:28.060Like we will never change char.1 ever again except for security patches.
00:18:28.700 -->
00:18:30.840And then all the things that depend upon it, go fine.
00:18:30.900 -->
00:18:31.760We'll just take this one.
00:18:31.860 -->
00:18:35.360Like I want 48 times faster and multi-threaded sounds better to me.
00:18:35.420 -->
00:18:36.060Let's just do that.
00:18:36.060 -->
00:18:45.040Yeah, 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.720Yeah.
00:18:46.320 -->
00:18:47.560And we don't want that either.
00:18:47.900 -->
00:18:48.780So, yeah.
00:18:49.160 -->
00:18:49.540Yeah.
00:18:50.100 -->
00:18:56.900I certainly – I think this debate has far, far outgrown character encoding concerns.
00:18:57.160 -->
00:18:59.540It's its own special lightning rod, like I said.
00:19:00.080 -->
00:19:00.320Yeah.
00:19:00.820 -->
00:19:01.280All right.
00:19:01.740 -->
00:19:02.120Over to you.
00:19:02.120 -->
00:19:11.640Can 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.640Well, it's not a small tool, but it's quick to cover.
00:19:17.700 -->
00:19:18.640Refined GitHub.
00:19:19.120 -->
00:19:20.980And this is awesome.
00:19:21.220 -->
00:19:22.240I didn't know about this.
00:19:22.640 -->
00:19:26.580So, this is a web page or website?
00:19:27.660 -->
00:19:29.140A web browser plug-in.
00:19:29.140 -->
00:19:29.800Browser extension.
00:19:30.300 -->
00:19:31.200Browser extension.
00:19:31.200 -->
00:19:32.040Thank you.
00:19:32.780 -->
00:19:36.000That does some cool stuff if you work with GitHub a lot.
00:19:36.500 -->
00:19:42.400And I, you know, looking through this, I'm like, what's wrong with GitHub right now?
00:19:42.700 -->
00:19:44.440Well, there's a bunch of stuff.
00:19:44.540 -->
00:19:46.540The highlights, there's some highlights at the top.
00:19:47.120 -->
00:19:49.080Makes white space characters visible.
00:19:49.820 -->
00:19:50.820That's cool.
00:19:51.040 -->
00:19:56.260So, I mean, that's cool enough to get this, but there's a lot more coming.
00:19:56.260 -->
00:20:01.720Tells 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.460That's kind of neat.
00:20:04.260 -->
00:20:08.920The – shows how far behind a PR head branch is.
00:20:09.080 -->
00:20:10.960Tells you its base commit.
00:20:11.080 -->
00:20:12.040There's a bunch of stuff here.
00:20:12.040 -->
00:20:18.040I'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.240But they put fire beside things that you might care about.
00:20:21.720 -->
00:20:25.340Like, adds a build CI status icon next to the repo name.
00:20:25.700 -->
00:20:26.280Love that.
00:20:27.160 -->
00:20:30.020Adds a link back to the PR that ran the workflow.
00:20:30.020 -->
00:20:31.060Oh, that's cool.
00:20:32.540 -->
00:20:37.840The – this one, I installed it just for this one feature.
00:20:38.680 -->
00:20:42.660Enables tab and shift tab for indentation in comment fields.
00:20:43.320 -->
00:20:48.320Because, 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.540I just want to put a tab in the field.
00:20:51.880 -->
00:20:52.360Anyway.
00:20:52.600 -->
00:20:52.760Yeah.
00:20:53.380 -->
00:20:54.200So –
00:20:54.200 -->
00:20:55.860For Python people, it might not matter that much.
00:20:55.860 -->
00:21:00.040But if you're doing C++ or something, you don't want to mix spaces and titles.
00:21:00.040 -->
00:21:00.240Well, I still hit tab.
00:21:00.400 -->
00:21:03.640I just – I just expect it to add four spaces.
00:21:04.120 -->
00:21:05.660But anyway.
00:21:07.820 -->
00:21:08.500Let's see.
00:21:08.580 -->
00:21:10.220Auto resize the commit field.
00:21:11.320 -->
00:21:12.460Add reaction –
00:21:12.460 -->
00:21:16.200Add reaction avatars showing who reacted to a comment.
00:21:16.280 -->
00:21:16.840That's interesting.
00:21:17.500 -->
00:21:22.500The other one that I want to highlight just to – because I think it's cool.
00:21:22.500 -->
00:21:25.780It highlights the most useful comment in an issue.
00:21:26.500 -->
00:21:30.860So it'll – you know, if there's a lot of people talking about a comment or whatever,
00:21:31.140 -->
00:21:32.500it'll, you know, highlight that.
00:21:32.600 -->
00:21:33.540So, you know, just scroll around.
00:21:34.980 -->
00:21:36.960And actually, I haven't really noticed.
00:21:37.200 -->
00:21:38.640I've turned this on.
00:21:39.120 -->
00:21:41.220And it just sort of stays out of the way.
00:21:41.320 -->
00:21:44.760There's just more features and more – it's just a nicer experience.
00:21:45.080 -->
00:21:46.280So, yeah.
00:21:46.460 -->
00:21:46.920Kudos to them.
00:21:46.920 -->
00:21:50.560Yeah, this is an absolutely mega-sized browser extension.
00:21:50.700 -->
00:21:55.640And what's notable about it is it doesn't dramatically shift.
00:21:58.380 -->
00:22:02.120It doesn't dramatically change how much – oh, hold on.
00:22:02.160 -->
00:22:03.120My dog is going crazy.
00:22:03.200 -->
00:22:03.800One second, Brian.
00:22:03.800 -->
00:22:17.020I'm sorry.
00:22:17.080 -->
00:22:17.760She snuck in there.
00:22:17.800 -->
00:22:18.960We'll have to edit that out, huh?
00:22:18.960 -->
00:22:28.640So 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.400But there's like 100 little changes, right?
00:22:30.800 -->
00:22:31.260Yeah.
00:22:31.260 -->
00:22:35.680So, yeah.
00:22:35.820 -->
00:22:39.140Anyway, I'm always nervous to install browser extensions.
00:22:39.300 -->
00:22:42.480I have maybe five or six that I really love from places I trust.
00:22:42.760 -->
00:22:43.900But go to the top.
00:22:43.940 -->
00:22:45.300See how many stars this has.
00:22:48.480 -->
00:22:49.44030,000.
00:22:49.820 -->
00:22:52.720Yeah, you know, at that level, I think it's all right.
00:22:52.800 -->
00:22:55.200It's probably totally trustworthy, right?
00:22:58.120 -->
00:23:01.040So let's – yeah, you know, I think it's good.
00:23:01.040 -->
00:23:01.740I think it's good.
00:23:01.820 -->
00:23:03.420I would probably install it.
00:23:04.480 -->
00:23:06.880I've got to look and see if it will inspire me.
00:23:08.600 -->
00:23:09.040But –
00:23:09.040 -->
00:23:11.800Yeah, I don't know.
00:23:13.920 -->
00:23:17.840I'll play with it for a while, see if my entire computer blows up.
00:23:18.880 -->
00:23:21.700Yeah, if your computer gets –
00:23:21.700 -->
00:23:22.620It's also been around for a while.
00:23:22.700 -->
00:23:24.200It looks like nine years or so.
00:23:24.720 -->
00:23:25.080Wow.
00:23:25.800 -->
00:23:26.140Really?
00:23:26.220 -->
00:23:26.580No kidding.
00:23:27.180 -->
00:23:30.900Well, at least in the front top, there's the –
00:23:31.040 -->
00:23:34.220the editor config is nine years ago.
00:23:34.300 -->
00:23:36.640So at least there's some commits from nine years ago.
00:23:36.660 -->
00:23:36.800Yeah, yeah.
00:23:36.960 -->
00:23:37.320Exactly.
00:23:37.500 -->
00:23:38.500I would imagine it is.
00:23:38.880 -->
00:23:40.000Yeah, that's very wild.
00:23:40.420 -->
00:23:40.760Awesome.
00:23:40.920 -->
00:23:41.120Okay.
00:23:42.320 -->
00:23:45.260Let's move on to talk about databases,
00:23:45.480 -->
00:23:46.540and in particular, Postgres.
00:23:47.000 -->
00:23:50.500So this project I want to talk about,
00:23:50.560 -->
00:23:51.560I want to feature everyone across,
00:23:51.660 -->
00:23:52.940and I think it's been around for a little while,
00:23:52.940 -->
00:23:54.800but it's called PGDog.
00:23:56.220 -->
00:23:56.480Okay?
00:23:57.220 -->
00:23:58.100And what it is,
00:23:58.260 -->
00:24:01.480is it's a performance-enhancing layer for Postgres.
00:24:01.620 -->
00:24:04.100So if you're using –
00:24:04.100 -->
00:24:06.500maybe you're using MySQL –
00:24:06.500 -->
00:24:07.340not MySQL –
00:24:07.340 -->
00:24:09.220using SQLite in dev,
00:24:09.220 -->
00:24:09.960but then in production,
00:24:10.160 -->
00:24:11.200you're using Postgres, right?
00:24:11.240 -->
00:24:11.980Something like that.
00:24:11.980 -->
00:24:16.220And it's starting to outgrow its performance.
00:24:16.780 -->
00:24:16.880Okay?
00:24:17.040 -->
00:24:20.360So either it needs better uptime,
00:24:21.400 -->
00:24:23.240the database is getting too large
00:24:23.240 -->
00:24:24.100or something like that.
00:24:25.840 -->
00:24:27.400Postgres doesn't have certain features
00:24:27.400 -->
00:24:29.220like connection pooling
00:24:29.220 -->
00:24:32.160and other stuff that could be better high performance.
00:24:32.540 -->
00:24:32.660Right?
00:24:32.700 -->
00:24:34.320So you don't have to reconnect as much.
00:24:35.140 -->
00:24:37.180This thing handles a whole bunch of those.
00:24:37.500 -->
00:24:41.000So if we go down here to their repo,
00:24:41.200 -->
00:24:42.500it, by the way, has 4,000 stars,
00:24:42.700 -->
00:24:48.580and its age is a year, two years, it looks like.
00:24:49.180 -->
00:24:51.540Last year is probably its most recent things.
00:24:52.060 -->
00:24:54.380So there's been other projects like this as well.
00:24:54.580 -->
00:24:55.440For example,
00:24:57.960 -->
00:25:00.220PG Bouncer is a friend,
00:25:00.220 -->
00:25:03.160a colleague,
00:25:03.620 -->
00:25:04.720a software, I guess,
00:25:04.760 -->
00:25:05.960another thing that does the same thing.
00:25:06.440 -->
00:25:07.220So what this is,
00:25:07.260 -->
00:25:09.220is it's a proxy for scaling Postgres.
00:25:09.440 -->
00:25:10.700And it does connection pooling,
00:25:10.860 -->
00:25:12.940load balancing for queries,
00:25:13.120 -->
00:25:15.480and it does sharding of databases,
00:25:15.860 -->
00:25:16.440which sounds bad,
00:25:16.500 -->
00:25:17.940but is actually a potentially good thing.
00:25:18.460 -->
00:25:22.780So you just create a toml file to set it up,
00:25:22.840 -->
00:25:23.860and then off it goes.
00:25:23.960 -->
00:25:24.940I got a bunch of notes here
00:25:24.940 -->
00:25:25.620for all these little things
00:25:25.620 -->
00:25:26.300that kind of spread around.
00:25:26.300 -->
00:25:30.560So let me look here.
00:25:33.480 -->
00:25:34.540So for starters,
00:25:34.720 -->
00:25:37.840it's a load balancer across Postgres.
00:25:38.100 -->
00:25:39.660So you can run Postgres
00:25:39.660 -->
00:25:43.840in a replica network configuration.
00:25:44.000 -->
00:25:46.100So I can have a Postgres database,
00:25:46.580 -->
00:25:47.220but then I can have,
00:25:47.300 -->
00:25:47.620let's say,
00:25:47.720 -->
00:25:49.300four other Postgres databases
00:25:49.300 -->
00:25:52.120that are all copies of that same data,
00:25:52.160 -->
00:25:53.100and they stay in sync.
00:25:53.620 -->
00:25:53.840Okay?
00:25:53.840 -->
00:25:55.740And from a read perspective,
00:25:55.740 -->
00:25:57.420you could read from all five of them
00:25:57.420 -->
00:25:59.060if they all have the same data, right?
00:25:59.380 -->
00:26:01.820And that basically 5Xs your database
00:26:01.820 -->
00:26:05.140query performance, right?
00:26:05.780 -->
00:26:06.040Okay.
00:26:06.160 -->
00:26:08.000Just by simply sending them
00:26:08.000 -->
00:26:08.880to different machines
00:26:08.880 -->
00:26:11.320with exactly the same data
00:26:11.320 -->
00:26:12.320in the same database, yeah?
00:26:13.240 -->
00:26:15.600But the problem is the consistency, right?
00:26:15.640 -->
00:26:16.720So it knows which one
00:26:16.720 -->
00:26:17.840is the primary database,
00:26:17.940 -->
00:26:20.020and it can do writing to that
00:26:20.020 -->
00:26:21.420and make sure that it propagates
00:26:21.420 -->
00:26:23.800to the others before it tells you
00:26:23.800 -->
00:26:24.420that it's committed,
00:26:24.560 -->
00:26:27.220which is kind of the magic of replicas.
00:26:27.320 -->
00:26:28.220Because if you write to it
00:26:28.220 -->
00:26:29.680and then immediately do another read,
00:26:29.940 -->
00:26:31.460but it happens to have gone to,
00:26:31.900 -->
00:26:33.100this time it's round robin
00:26:33.100 -->
00:26:35.660to a different database server,
00:26:35.860 -->
00:26:36.640that's bad,
00:26:36.680 -->
00:26:38.280because it might not be there, right?
00:26:38.320 -->
00:26:39.440Like, I saved the database,
00:26:39.540 -->
00:26:40.040I queried,
00:26:40.100 -->
00:26:40.720and it wasn't there,
00:26:40.740 -->
00:26:42.120and I went to test why it wasn't there,
00:26:42.180 -->
00:26:42.680then it was there.
00:26:42.720 -->
00:26:43.200I don't get it,
00:26:43.220 -->
00:26:44.800what is going on with the world, right?
00:26:45.220 -->
00:26:46.480So you want it to definitely
00:26:46.480 -->
00:26:48.280manage that kind of stuff.
00:26:48.280 -->
00:26:49.400It also does health checks,
00:26:50.680 -->
00:26:54.700and you've got this read primary
00:26:54.700 -->
00:26:57.620replica configuration
00:26:57.620 -->
00:26:58.360that I'm talking about.
00:26:58.580 -->
00:26:59.980If one of them goes down,
00:27:00.160 -->
00:27:04.000it will just take it out of its rotation,
00:27:04.260 -->
00:27:05.400and if it's the primary one,
00:27:05.460 -->
00:27:07.580it'll pick another primary, I believe.
00:27:08.560 -->
00:27:10.780So it has a single endpoint behavior,
00:27:10.880 -->
00:27:11.540which I talked about,
00:27:11.660 -->
00:27:14.980so it understands the Postgres structure,
00:27:14.980 -->
00:27:17.560like the, basically, T-SQL,
00:27:18.860 -->
00:27:19.660and so it updates,
00:27:19.820 -->
00:27:20.820it knows if it sees an update
00:27:20.820 -->
00:27:22.380or insert or create table
00:27:22.380 -->
00:27:23.020and things like that,
00:27:23.060 -->
00:27:24.240and sends that to the primary,
00:27:24.980 -->
00:27:26.540and then leaves the other ones
00:27:26.540 -->
00:27:28.180chilling to do their thing.
00:27:28.500 -->
00:27:30.060It has the failover I talked about,
00:27:30.140 -->
00:27:31.120and it has sharding,
00:27:31.420 -->
00:27:32.420which is really cool,
00:27:32.480 -->
00:27:33.500and it does a bunch of stuff
00:27:33.500 -->
00:27:34.920to manage and keep that in sync.
00:27:35.460 -->
00:27:38.180You can even have different sets,
00:27:38.580 -->
00:27:40.120different clusters of database,
00:27:40.240 -->
00:27:41.420and say keep this one in sync
00:27:41.420 -->
00:27:41.960with that one.
00:27:41.960 -->
00:27:43.780So, for example,
00:27:43.920 -->
00:27:47.040imagine you've got an e-commerce site,
00:27:47.600 -->
00:27:51.180and it's starting to go too slow.
00:27:51.320 -->
00:27:53.820People do a request for,
00:27:54.700 -->
00:27:55.040I don't know,
00:27:55.220 -->
00:27:56.580let me give you an example
00:27:56.580 -->
00:27:59.080that probably resonates more with people,
00:27:59.640 -->
00:28:03.040a health provider database.
00:28:03.180 -->
00:28:03.940I don't know about yours,
00:28:04.020 -->
00:28:06.560but whenever I go to figure out something
00:28:06.560 -->
00:28:07.740with my next doctor appointment
00:28:07.740 -->
00:28:08.040or something,
00:28:08.180 -->
00:28:10.760it's like the page slowly loads in,
00:28:10.760 -->
00:28:11.520and then it spins,
00:28:11.620 -->
00:28:12.440it says checking records,
00:28:12.600 -->
00:28:13.220checking records,
00:28:13.400 -->
00:28:13.980checking records,
00:28:14.060 -->
00:28:15.240and like five seconds later,
00:28:15.380 -->
00:28:16.560chunk will come in and more of it,
00:28:16.560 -->
00:28:18.240and like what is going on with this?
00:28:18.320 -->
00:28:20.040Why is this so slow, you know?
00:28:21.900 -->
00:28:24.040And there's probably just some huge database
00:28:24.040 -->
00:28:28.100with a bunch of insane joins
00:28:28.100 -->
00:28:30.880and weird queries and stuff
00:28:30.880 -->
00:28:31.580just to tell me
00:28:31.580 -->
00:28:32.980that my appointment is at 10 o'clock.
00:28:32.980 -->
00:28:35.200So what you could do is you could say,
00:28:35.280 -->
00:28:37.000okay, your health record ID
00:28:37.000 -->
00:28:38.800is going to be the shard key,
00:28:39.060 -->
00:28:41.440and we're going to have 20 different servers,
00:28:42.440 -->
00:28:43.840right, running our cloud setup.
00:28:43.840 -->
00:28:48.700And for that,
00:28:49.000 -->
00:28:51.100we're going to somehow determine
00:28:51.100 -->
00:28:52.140which database it goes.
00:28:52.240 -->
00:28:53.960So maybe we're going to say,
00:28:54.100 -->
00:28:58.080take the hash of the health ID
00:28:58.080 -->
00:28:59.460and use the first two letters
00:28:59.460 -->
00:29:01.660to figure out which database it actually goes in.
00:29:01.740 -->
00:29:08.440So like AA through B, whatever, right,
00:29:08.940 -->
00:29:10.480goes to the first database server,
00:29:10.560 -->
00:29:11.480and the second, the third, the fourth,
00:29:11.480 -->
00:29:11.940and so on.
00:29:12.000 -->
00:29:12.960So when you do a query,
00:29:13.420 -->
00:29:15.260you say, I want the thing for this user.
00:29:15.380 -->
00:29:16.340It just goes, okay, great.
00:29:16.400 -->
00:29:18.920Well, that means I only query that one server.
00:29:19.620 -->
00:29:22.340Instead of trying to query the 100 million records,
00:29:22.340 -->
00:29:24.580you query, what did I say, 25s?
00:29:24.600 -->
00:29:25.560You query 4 million,
00:29:25.860 -->
00:29:27.480which is way, way faster, right,
00:29:27.560 -->
00:29:28.820on any given server.
00:29:29.280 -->
00:29:31.100So that's a really cool aspect
00:29:31.100 -->
00:29:32.820and one of its main features
00:29:32.820 -->
00:29:34.560is the sharding capability.
00:29:35.720 -->
00:29:36.200Okay.
00:29:36.880 -->
00:29:37.880So pretty neat.
00:29:38.860 -->
00:29:39.260Pretty neat.
00:29:39.540 -->
00:29:41.200Well, but if you're really trying to find out
00:29:41.200 -->
00:29:42.880like a health information,
00:29:43.340 -->
00:29:45.280it might, the hash might be the problem.
00:29:45.440 -->
00:29:46.900Stop doing hash, man.
00:29:48.740 -->
00:29:51.700I don't know why these systems are so bad.
00:29:52.380 -->
00:29:53.100They're so bad.
00:29:54.660 -->
00:29:55.420Bad joke.
00:29:55.880 -->
00:29:56.080Sorry.
00:29:56.220 -->
00:29:56.440Yes.
00:29:56.660 -->
00:29:57.780Yeah, that's true.
00:29:59.400 -->
00:30:00.280I get it now.
00:30:00.340 -->
00:30:01.040I get it.
00:30:02.200 -->
00:30:02.580All right.
00:30:02.620 -->
00:30:02.920Awesome.
00:30:03.060 -->
00:30:03.480Over to you.
00:30:04.220 -->
00:30:04.480Okay.
00:30:04.480 -->
00:30:06.240Well, I,
00:30:06.540 -->
00:30:10.920this is partly a public service announcement.
00:30:11.340 -->
00:30:11.980Maybe.
00:30:13.140 -->
00:30:14.000This is,
00:30:14.440 -->
00:30:16.220I want to cover Simon Wilson.
00:30:16.540 -->
00:30:19.000So we know Simon Wilson's been playing with AI
00:30:19.000 -->
00:30:21.140and agents and stuff since like,
00:30:21.520 -->
00:30:23.160since they came out or something.
00:30:23.160 -->
00:30:25.740And I appreciate all of Simon's work.
00:30:26.840 -->
00:30:27.320And,
00:30:27.320 -->
00:30:31.280and I've been watching here and there and it just like,
00:30:31.660 -->
00:30:37.020learning from him and not having to do all the experimentation that he's doing,
00:30:37.020 -->
00:30:39.060but he's really great at explaining it.
00:30:39.060 -->
00:30:40.160So what I want to,
00:30:40.380 -->
00:30:48.300he'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.500And this is a series of blog posts,
00:30:51.500 -->
00:30:55.900but they're fairly concise and short and it's really good writing as well.
00:30:56.900 -->
00:30:57.420There,
00:30:57.780 -->
00:30:59.220and I think anybody,
00:30:59.480 -->
00:30:59.940especially,
00:31:00.560 -->
00:31:00.780well,
00:31:01.160 -->
00:31:03.580it might be useful for really everybody,
00:31:03.780 -->
00:31:05.220but especially people with teams,
00:31:05.220 -->
00:31:09.100it'd be good to make sure that everybody's kind of on a good.
00:31:09.800 -->
00:31:10.980I think there's the,
00:31:10.980 -->
00:31:12.200the information here is right.
00:31:12.300 -->
00:31:12.980Good for everybody.
00:31:13.120 -->
00:31:18.460So there's principles getting started like some intro on how,
00:31:18.580 -->
00:31:22.060how agents work and testing and QA.
00:31:22.060 -->
00:31:23.800There's just three posts about that,
00:31:23.860 -->
00:31:25.940which I love understanding code,
00:31:26.080 -->
00:31:30.120using it to walk through using agents to walk through code and stuff.
00:31:31.000 -->
00:31:34.920Even these are didn't notice these when I was looking at this,
00:31:34.920 -->
00:31:35.520the other day,
00:31:36.180 -->
00:31:38.520an appendix of prompts I use that might be interesting,
00:31:38.780 -->
00:31:43.280but also GIF animation tool using WebAssembly and GIF,
00:31:43.360 -->
00:31:45.880GIF sickle annotated prompts.
00:31:46.540 -->
00:31:47.760That might be fun,
00:31:47.840 -->
00:31:50.220but maybe not appropriate for everybody.
00:31:50.360 -->
00:31:50.920But,
00:31:51.000 -->
00:31:53.100but the,
00:31:53.100 -->
00:31:53.420the,
00:31:53.520 -->
00:31:53.800the,
00:31:53.800 -->
00:31:54.120the,
00:31:54.120 -->
00:31:57.960the one that I love right here is anti patterns.
00:31:57.960 -->
00:31:59.400So in principles,
00:31:59.400 -->
00:32:00.620there's some anti patterns.
00:32:00.740 -->
00:32:01.180Well,
00:32:01.500 -->
00:32:02.640everything,
00:32:02.800 -->
00:32:03.920everything in the principles,
00:32:04.080 -->
00:32:04.860definitely go read.
00:32:04.920 -->
00:32:05.780Uh,
00:32:05.980 -->
00:32:07.240the writing code is cheap.
00:32:07.240 -->
00:32:07.580Now.
00:32:07.700 -->
00:32:10.120What is agentic engineering hoard things?
00:32:10.180 -->
00:32:10.520You know,
00:32:10.580 -->
00:32:11.040basically,
00:32:11.040 -->
00:32:11.540um,
00:32:11.680 -->
00:32:12.580not basic,
00:32:12.580 -->
00:32:15.720but like keeping track of like he,
00:32:16.020 -->
00:32:17.260for instance,
00:32:17.320 -->
00:32:18.920I'm making tools and doing snippets,
00:32:18.980 -->
00:32:19.820doing little tools,
00:32:20.380 -->
00:32:21.340having those available,
00:32:21.340 -->
00:32:23.200not only for you to remember,
00:32:23.200 -->
00:32:25.560but you can also tell an agent to say,
00:32:25.620 -->
00:32:26.180Hey,
00:32:26.300 -->
00:32:26.540um,
00:32:26.540 -->
00:32:28.480I already kind of solved this over here in this project.
00:32:28.480 -->
00:32:29.400So use that,
00:32:29.400 -->
00:32:30.620but apply it to this,
00:32:30.620 -->
00:32:31.240this,
00:32:31.240 -->
00:32:32.240this other project here.
00:32:32.880 -->
00:32:34.360Super cool idea.
00:32:35.000 -->
00:32:35.320Um,
00:32:35.400 -->
00:32:36.080and also,
00:32:36.280 -->
00:32:37.200uh,
00:32:37.560 -->
00:32:37.820the,
00:32:38.020 -->
00:32:40.560these two AI should help us produce better code.
00:32:40.560 -->
00:32:41.200So if the,
00:32:41.360 -->
00:32:43.300if you're having AI producer code,
00:32:43.400 -->
00:32:45.860I think it should be better code than you should,
00:32:46.020 -->
00:32:47.760than you would produce by yourself.
00:32:48.520 -->
00:32:49.500Not worse.
00:32:49.660 -->
00:32:50.160Uh,
00:32:50.160 -->
00:32:51.340I don't like this,
00:32:51.480 -->
00:32:55.160this notion of produce of people not reading their code at all.
00:32:55.160 -->
00:32:55.640Um,
00:32:55.640 -->
00:32:58.480and I think that's going to blow up on us.
00:32:58.500 -->
00:32:58.960And,
00:32:59.060 -->
00:32:59.340uh,
00:32:59.340 -->
00:33:00.780especially if you're working in teams,
00:33:00.920 -->
00:33:03.840a bunch of anti patterns to watch out for.
00:33:03.920 -->
00:33:09.160And the top one is about inflicting unreviewed code on your collaborators.
00:33:09.560 -->
00:33:12.460This anti pattern is common and deeply frustrating,
00:33:12.460 -->
00:33:15.700both in open source and I'm dealing with it at work myself.
00:33:16.140 -->
00:33:18.620Don't file pull requests with code.
00:33:18.700 -->
00:33:19.980You haven't reviewed yourself.
00:33:20.220 -->
00:33:25.760I'm tired of reviewing reams and reams and reams of code that I'm know that
00:33:25.760 -->
00:33:27.440nobody actually read that.
00:33:27.700 -->
00:33:28.280And why,
00:33:28.420 -->
00:33:30.120so why did they expect me to read it?
00:33:30.300 -->
00:33:31.220So anyway,
00:33:31.780 -->
00:33:33.080a great resource here.
00:33:33.260 -->
00:33:33.860I love the,
00:33:33.880 -->
00:33:34.300um,
00:33:34.360 -->
00:33:34.680the,
00:33:34.860 -->
00:33:35.680uh,
00:33:35.900 -->
00:33:36.980the cheat sheet on red,
00:33:37.040 -->
00:33:37.180green,
00:33:37.220 -->
00:33:39.140your refactor is pretty great also.
00:33:39.400 -->
00:33:39.700Um,
00:33:39.840 -->
00:33:42.800and approach to highlight that since the testing is kind of my thing.
00:33:42.800 -->
00:33:43.020Right.
00:33:43.660 -->
00:33:44.060Um,
00:33:44.060 -->
00:33:45.940and this is the,
00:33:46.080 -->
00:33:49.960all he has tested it and the phrase use red slash,
00:33:49.960 -->
00:33:50.300green.
00:33:50.420 -->
00:33:51.100So use red,
00:33:51.180 -->
00:33:57.040green TDD is a pleasingly succinct way to get better results out of your coding agent.
00:33:57.040 -->
00:34:03.420So 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.340and,
00:34:04.400 -->
00:34:04.700um,
00:34:05.080 -->
00:34:05.420test,
00:34:05.520 -->
00:34:05.840you know,
00:34:05.840 -->
00:34:07.200make changes until it's green.
00:34:07.200 -->
00:34:10.540What's interesting is normally we think of TDD is red,
00:34:10.600 -->
00:34:11.380green refactor,
00:34:11.800 -->
00:34:12.700the refactor part.
00:34:12.940 -->
00:34:14.080That's when you need to get involved.
00:34:14.280 -->
00:34:16.320So you can have the agent do the red,
00:34:16.380 -->
00:34:17.700green part come,
00:34:17.840 -->
00:34:21.140which is come up with a test that describes what you want to do,
00:34:21.140 -->
00:34:24.480write code until you have code that does that.
00:34:24.660 -->
00:34:27.880Now you go and review that code and you can talk to the aid.
00:34:27.940 -->
00:34:29.920You don't have to necessarily change it.
00:34:29.960 -->
00:34:31.020You can talk to the agent and go,
00:34:31.020 -->
00:34:32.820this part of the code is weird.
00:34:32.820 -->
00:34:34.440Can we change it to a different pattern?
00:34:34.440 -->
00:34:34.800Or,
00:34:34.800 -->
00:34:35.300um,
00:34:35.300 -->
00:34:36.800is there some way to clean this up?
00:34:37.040 -->
00:34:41.060And I've had really good results with that actually to just say,
00:34:41.140 -->
00:34:42.740kind of good,
00:34:42.820 -->
00:34:43.660but this part,
00:34:43.820 -->
00:34:45.020why did we do that?
00:34:45.020 -->
00:34:48.640And it's surprising to me to have the agent come back and say,
00:34:48.640 -->
00:34:49.160Oh yeah,
00:34:49.180 -->
00:34:49.800that's weird.
00:34:49.800 -->
00:34:51.660And change it to what I would expect.
00:34:51.980 -->
00:34:52.120Like,
00:34:52.120 -->
00:34:53.700why didn't it just do that in the first place?
00:34:53.880 -->
00:34:55.180But it doesn't.
00:34:55.300 -->
00:34:55.620Um,
00:34:55.680 -->
00:34:56.040so,
00:34:56.040 -->
00:34:57.500and maybe it will in,
00:34:57.680 -->
00:35:00.280in the future and the future might be next week.
00:35:00.280 -->
00:35:00.820Who knows?
00:35:01.260 -->
00:35:01.580Um,
00:35:01.620 -->
00:35:02.920but for right now,
00:35:02.920 -->
00:35:04.880these are great engineering pattern,
00:35:05.320 -->
00:35:06.360great things to watch.
00:35:06.360 -->
00:35:07.140So thanks Simon.
00:35:07.380 -->
00:35:09.160And I trust him to like,
00:35:09.200 -->
00:35:10.000keep these up to date.
00:35:10.000 -->
00:35:11.120So anyway,
00:35:11.500 -->
00:35:12.500yeah,
00:35:12.500 -->
00:35:13.460this looks super interesting.
00:35:13.580 -->
00:35:14.560I definitely want to check it out.
00:35:15.660 -->
00:35:17.960I've already spread this around to,
00:35:17.960 -->
00:35:18.920to work.
00:35:19.080 -->
00:35:22.320And especially the people that have sent me code reviews that I'm like,
00:35:22.420 -->
00:35:23.540you didn't read this.
00:35:24.540 -->
00:35:25.800I know you didn't.
00:35:27.140 -->
00:35:27.580So.
00:35:30.140 -->
00:35:34.220I think that's part of the pushback as well as like people are lazy or they
00:35:34.220 -->
00:35:35.060don't know what they're doing.
00:35:35.060 -->
00:35:35.700And they just,
00:35:36.140 -->
00:35:39.080here's 2000 lines of code that fixes what I was asking for.
00:35:39.140 -->
00:35:39.400You're like,
00:35:39.500 -->
00:35:40.300no,
00:35:40.880 -->
00:35:41.320go away.
00:35:41.480 -->
00:35:41.580Yeah.
00:35:43.560 -->
00:35:44.780Where they spend some time.
00:35:44.840 -->
00:35:45.020You're like,
00:35:45.080 -->
00:35:45.340actually,
00:35:45.440 -->
00:35:47.720can you narrow this down to a 10 line change?
00:35:47.960 -->
00:35:48.840This is all I want.
00:35:48.920 -->
00:35:50.080Please don't go do other things.
00:35:50.080 -->
00:35:52.820Like just help me understand this and why this needs to change.
00:35:52.820 -->
00:35:53.160And then,
00:35:53.720 -->
00:35:55.160you know,
00:35:55.160 -->
00:35:58.660I think we're still learning how all this stuff works.
00:35:59.880 -->
00:36:02.480And there are engineering practices,
00:36:02.900 -->
00:36:03.660but it's so,
00:36:04.020 -->
00:36:06.000the stakes are so low for getting started.
00:36:06.380 -->
00:36:06.740You know,
00:36:06.740 -->
00:36:07.200normally you're like,
00:36:07.260 -->
00:36:07.380okay,
00:36:07.380 -->
00:36:08.960we're going to set up our build tool chain.
00:36:08.960 -->
00:36:11.740And then we're going to learn the language and the syntax and the
00:36:11.740 -->
00:36:12.820structures and the keywords.
00:36:12.820 -->
00:36:13.520And now it's just like,
00:36:13.780 -->
00:36:15.840I'll just use regular English to just tell it stuff.
00:36:15.880 -->
00:36:16.860And it'll probably figure it out.
00:36:16.900 -->
00:36:17.020Right.
00:36:17.060 -->
00:36:17.400That's,
00:36:17.780 -->
00:36:21.040that gives the sense that I don't need to learn this as a skill,
00:36:21.200 -->
00:36:22.040but you do.
00:36:23.220 -->
00:36:23.620Yeah.
00:36:23.740 -->
00:36:27.380I also think that we're getting a lot of advice about how to utilize
00:36:27.380 -->
00:36:32.440agents from startups and startups have a different field.
00:36:32.620 -->
00:36:35.560There are startups are greenfield.
00:36:35.560 -->
00:36:36.360For the most part,
00:36:36.440 -->
00:36:37.700they're writing new code.
00:36:38.000 -->
00:36:43.020Whereas a lot of software jobs are maintaining existing code bases that
00:36:43.020 -->
00:36:44.860have been around for decades,
00:36:45.240 -->
00:36:45.900possibly,
00:36:46.080 -->
00:36:46.940or at least years.
00:36:47.760 -->
00:36:47.860And,
00:36:47.960 -->
00:36:52.760and you can't just not care what goes into it.
00:36:52.940 -->
00:36:53.140Yeah.
00:36:53.500 -->
00:36:54.300It's a,
00:36:54.560 -->
00:36:57.680you've been handed this thing that is making your company money.
00:36:57.860 -->
00:37:01.460You can't make it worse just because the agent decided to rewrite
00:37:01.460 -->
00:37:01.800everything.
00:37:01.800 -->
00:37:02.140So,
00:37:02.480 -->
00:37:02.640yeah.
00:37:03.220 -->
00:37:03.500Yeah.
00:37:04.000 -->
00:37:04.360Anyway,
00:37:04.360 -->
00:37:05.980for sure.
00:37:06.780 -->
00:37:07.220Well,
00:37:08.060 -->
00:37:08.740do we have any extras?
00:37:08.880 -->
00:37:09.740I got a few extras.
00:37:10.120 -->
00:37:10.840Why don't you go first?
00:37:11.420 -->
00:37:11.760Okay.
00:37:12.040 -->
00:37:12.420Um,
00:37:12.480 -->
00:37:13.420a couple ones.
00:37:13.540 -->
00:37:13.720This,
00:37:13.840 -->
00:37:14.000uh,
00:37:14.000 -->
00:37:15.480the first one comes from John Hagen.
00:37:15.640 -->
00:37:18.260Thanks for mentioning this because I almost made this a,
00:37:18.260 -->
00:37:19.720a top level story,
00:37:19.720 -->
00:37:22.860but there's not much to say about it other than this is awesome.
00:37:23.400 -->
00:37:23.760Um,
00:37:23.820 -->
00:37:25.700upgrading Python versions with uv.
00:37:26.180 -->
00:37:27.320So if you,
00:37:27.440 -->
00:37:27.960do you,
00:37:28.080 -->
00:37:28.240you,
00:37:28.360 -->
00:37:28.900we know,
00:37:28.980 -->
00:37:31.200know that if to get all these new features,
00:37:31.200 -->
00:37:33.020any new features from uv,
00:37:33.020 -->
00:37:35.040you have to say uv self update.
00:37:35.480 -->
00:37:35.800Um,
00:37:36.000 -->
00:37:36.320I think,
00:37:36.400 -->
00:37:36.840is that right?
00:37:37.440 -->
00:37:38.320I think self update.
00:37:38.480 -->
00:37:38.600Yeah.
00:37:38.680 -->
00:37:38.920Um,
00:37:38.980 -->
00:37:40.060UV self update.
00:37:40.560 -->
00:37:40.780Yep.
00:37:41.200 -->
00:37:41.520Um,
00:37:41.660 -->
00:37:43.600but after you've done that,
00:37:43.640 -->
00:37:47.400now you can say uv Python upgrade.
00:37:47.400 -->
00:37:49.520You can give it a specific one.
00:37:49.560 -->
00:37:50.580So like for instance,
00:37:50.620 -->
00:37:51.380if you say uv,
00:37:51.720 -->
00:37:52.180uh,
00:37:52.260 -->
00:37:53.940UV Python upgrade 312,
00:37:54.080 -->
00:37:56.300it updates 312 to the,
00:37:56.300 -->
00:37:56.840uh,
00:37:56.840 -->
00:37:57.380the latest,
00:37:57.380 -->
00:37:57.720uh,
00:37:57.720 -->
00:37:58.060version,
00:37:58.260 -->
00:37:59.540the latest dot release,
00:37:59.760 -->
00:38:00.540um,
00:38:00.640 -->
00:38:01.320which is cool.
00:38:01.540 -->
00:38:03.320But if you leave that off,
00:38:03.360 -->
00:38:04.520which that's what I do,
00:38:04.520 -->
00:38:05.060uh,
00:38:05.060 -->
00:38:06.800it just looks at all of the,
00:38:07.020 -->
00:38:10.820all of the Python versions that you have installed on your computer through UV
00:38:10.820 -->
00:38:13.280and updates them to all to the,
00:38:13.400 -->
00:38:15.020to the most recent,
00:38:15.020 -->
00:38:16.340like bug fix release.
00:38:16.760 -->
00:38:17.040Um,
00:38:17.440 -->
00:38:18.540and what,
00:38:18.640 -->
00:38:18.920like,
00:38:19.160 -->
00:38:19.580why not?
00:38:19.620 -->
00:38:20.820We should be doing that all the time.
00:38:20.900 -->
00:38:22.900I'm going to set this up as a cron job or something.
00:38:22.960 -->
00:38:23.340I don't know.
00:38:23.800 -->
00:38:24.120Um,
00:38:24.980 -->
00:38:25.500so that's cool.
00:38:26.680 -->
00:38:27.080And,
00:38:27.140 -->
00:38:27.320uh,
00:38:27.320 -->
00:38:27.520yeah.
00:38:27.520 -->
00:38:29.620So thanks uv making things easier.
00:38:30.380 -->
00:38:30.840Once again,
00:38:30.840 -->
00:38:31.180awesome.
00:38:31.180 -->
00:38:31.800Awesome job.
00:38:31.900 -->
00:38:34.660I've already incorporated it into my little updater scripts that I run
00:38:34.660 -->
00:38:35.200periodically.
00:38:36.100 -->
00:38:36.480Uh,
00:38:36.520 -->
00:38:37.560next is also,
00:38:37.560 -->
00:38:38.020uh,
00:38:38.020 -->
00:38:40.080something that's suggested by a reader.
00:38:40.080 -->
00:38:42.640And I understand New York times magazine is,
00:38:42.640 -->
00:38:43.880um,
00:38:43.880 -->
00:38:45.260is behind a paywall.
00:38:45.440 -->
00:38:45.760Uh,
00:38:45.760 -->
00:38:46.120but,
00:38:46.300 -->
00:38:46.620um,
00:38:46.700 -->
00:38:49.220but for some reason I was able to read this fine.
00:38:49.600 -->
00:38:49.860Maybe,
00:38:50.240 -->
00:38:50.640I don't know.
00:38:50.760 -->
00:38:51.080I have,
00:38:51.160 -->
00:38:53.740I do have a New York times newspaper subscription.
00:38:53.740 -->
00:38:54.780So maybe that's it.
00:38:54.880 -->
00:38:55.100Anyway,
00:38:55.100 -->
00:38:56.240uh,
00:38:56.640 -->
00:38:58.160coding after coders,
00:38:58.260 -->
00:38:59.580the end of computer programming,
00:38:59.580 -->
00:39:00.440as we know it,
00:39:00.580 -->
00:39:04.520this is a description of basically talking about whether or not,
00:39:04.520 -->
00:39:05.120like,
00:39:05.200 -->
00:39:09.460it's not just whether or not like AI is the end of coding,
00:39:09.460 -->
00:39:10.060uh,
00:39:10.200 -->
00:39:10.660jobs.
00:39:10.660 -->
00:39:11.620I don't,
00:39:11.880 -->
00:39:12.140you know,
00:39:12.140 -->
00:39:13.140we don't think it is.
00:39:13.380 -->
00:39:13.700Um,
00:39:13.800 -->
00:39:14.120the,
00:39:14.240 -->
00:39:16.120the conclusion here is it's not,
00:39:16.200 -->
00:39:17.240but it's also more about that.
00:39:17.280 -->
00:39:18.080It's more than that.
00:39:18.100 -->
00:39:20.920It's talking about basically kind of some different,
00:39:20.920 -->
00:39:21.640different life,
00:39:21.800 -->
00:39:22.820like different changes.
00:39:22.820 -->
00:39:23.960And it also talks about,
00:39:23.960 -->
00:39:24.960um,
00:39:24.960 -->
00:39:29.360I believe it talked about the different differences between percent of,
00:39:29.360 -->
00:39:29.700uh,
00:39:30.200 -->
00:39:30.700uh,
00:39:31.340 -->
00:39:35.960improve percent of efficiency improvement of greenfield versus legacy code.
00:39:35.960 -->
00:39:38.900Whereas like a lot of startups say they're a hundred,
00:39:39.180 -->
00:39:40.320a hundred times faster,
00:39:40.320 -->
00:39:41.160but,
00:39:41.160 -->
00:39:41.580uh,
00:39:41.580 -->
00:39:44.320Amazon has said it's on average 10% faster,
00:39:44.320 -->
00:39:46.220but that's not nothing to get.
00:39:46.360 -->
00:39:48.580You should still get excited about 10% faster,
00:39:48.580 -->
00:39:48.880but,
00:39:48.880 -->
00:39:49.680um,
00:39:49.680 -->
00:39:50.580but don't expect,
00:39:50.580 -->
00:39:50.820uh,
00:39:50.820 -->
00:39:53.680make people maintaining your old code to be a hundred times faster.
00:39:54.060 -->
00:39:54.500Uh,
00:39:54.500 -->
00:39:56.300the reason why it was passed to me was,
00:39:56.420 -->
00:39:56.660um,
00:39:56.720 -->
00:39:58.360was because there's this great line.
00:39:58.360 -->
00:39:58.820If I get,
00:39:58.940 -->
00:39:59.760see if I can find it.
00:40:00.240 -->
00:40:00.640pytest,
00:40:01.040 -->
00:40:01.580uh,
00:40:01.640 -->
00:40:04.940pushing code that fails pytest is unacceptable and embarrassing.
00:40:04.940 -->
00:40:06.420Apparently this is a,
00:40:06.520 -->
00:40:07.360um,
00:40:07.580 -->
00:40:07.760a,
00:40:07.940 -->
00:40:08.780like a,
00:40:08.780 -->
00:40:09.080a,
00:40:09.180 -->
00:40:11.540an instruction that somebody has in their,
00:40:11.540 -->
00:40:11.960um,
00:40:12.060 -->
00:40:15.440markdown files to instruct Claude to,
00:40:15.620 -->
00:40:15.780um,
00:40:16.000 -->
00:40:19.840to always run the pytest and be embarrassed if they don't.
00:40:20.300 -->
00:40:21.280I love it.
00:40:21.360 -->
00:40:21.900This is good.
00:40:22.340 -->
00:40:22.520Um,
00:40:22.760 -->
00:40:23.320but anyway,
00:40:23.420 -->
00:40:24.060uh,
00:40:24.220 -->
00:40:24.920those are my extras.
00:40:25.060 -->
00:40:25.580I actually,
00:40:25.700 -->
00:40:26.540I think this is a,
00:40:26.540 -->
00:40:29.640a well-written article for somebody that doesn't understand.
00:40:30.520 -->
00:40:31.540Apparently this part,
00:40:31.620 -->
00:40:31.820this,
00:40:31.940 -->
00:40:32.160the,
00:40:32.160 -->
00:40:33.120the author was,
00:40:33.120 -->
00:40:35.580has been covering the tech world for a while.
00:40:35.580 -->
00:40:36.880So nice.
00:40:38.480 -->
00:40:40.780And also pytest got into the New York times.
00:40:42.040 -->
00:40:42.480Yeah,
00:40:42.480 -->
00:40:43.040that's pretty cool.
00:40:43.740 -->
00:40:43.860Hey,
00:40:44.320 -->
00:40:45.500what you got extra for us.
00:40:45.600 -->
00:40:46.160All right.
00:40:46.200 -->
00:40:46.600Well,
00:40:47.080 -->
00:40:47.940I've got a few,
00:40:48.060 -->
00:40:48.280uh,
00:40:48.280 -->
00:40:49.560let's start with talk by then training,
00:40:49.560 -->
00:40:50.480uh,
00:40:50.680 -->
00:40:52.600by per request from one of the users.
00:40:52.600 -->
00:40:52.840They said,
00:40:52.900 -->
00:40:52.980Hey,
00:40:53.040 -->
00:40:54.560I would be really great if I could,
00:40:54.880 -->
00:40:56.300when I log into my account,
00:40:56.400 -->
00:40:57.160have more information.
00:40:57.160 -->
00:40:57.520So I,
00:40:57.580 -->
00:41:00.700I updated the people who have accounts there.
00:41:00.700 -->
00:41:03.980If you go log into your account,
00:41:04.060 -->
00:41:06.740it will show you all the courses you are actively learning.
00:41:06.920 -->
00:41:09.180I have 48 of them.
00:41:09.820 -->
00:41:10.180Uh,
00:41:10.220 -->
00:41:11.340I haven't finished a bunch of them.
00:41:11.460 -->
00:41:12.280People might be like,
00:41:12.300 -->
00:41:12.560Michael,
00:41:13.060 -->
00:41:14.680you have courses on the website.
00:41:14.780 -->
00:41:16.600You haven't finished by the time it gets to the website.
00:41:16.680 -->
00:41:18.680I've watched the videos two to three times.
00:41:18.680 -->
00:41:24.140I 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.940So no,
00:41:25.000 -->
00:41:25.580they're not all done,
00:41:25.640 -->
00:41:27.980but it'll show you things like the ones you're working on.
00:41:27.980 -->
00:41:30.640And how far are you through and when did you last watch it?
00:41:30.680 -->
00:41:31.520And when did you start?
00:41:31.620 -->
00:41:36.980Apparently this is things like if you're submitting this as a training evidence for your employer,
00:41:37.680 -->
00:41:38.540knowing when you started,
00:41:38.620 -->
00:41:40.320when you finished and so on and,
00:41:40.320 -->
00:41:41.460or whatever,
00:41:41.560 -->
00:41:42.100how far you are.
00:41:42.440 -->
00:41:43.320There's also a whole bunch.
00:41:43.340 -->
00:41:44.440It shows you completed ones.
00:41:44.520 -->
00:41:48.060I'm going to be generating certificates for people.
00:41:48.220 -->
00:41:48.500I'm just,
00:41:49.160 -->
00:41:51.220it's easy enough for me to make PDF downloads,
00:41:51.220 -->
00:41:52.760but I want to make stuff that you could say,
00:41:52.840 -->
00:41:55.700post to your LinkedIn profile as an accomplishment,
00:41:55.700 -->
00:41:56.680you know,
00:41:56.740 -->
00:42:04.360like 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.300You can put those kinds of things.
00:42:05.440 -->
00:42:07.380So it's not as simple as just a PDF,
00:42:07.380 -->
00:42:09.620but hopefully stuff like that comes.
00:42:09.680 -->
00:42:09.880Anyway,
00:42:09.940 -->
00:42:10.740this was fun to build.
00:42:11.460 -->
00:42:12.620I think it looks really neat.
00:42:12.900 -->
00:42:13.760I think it's,
00:42:13.860 -->
00:42:16.420especially if somebody is buying the bundle,
00:42:16.580 -->
00:42:23.100they 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.500Exactly.
00:42:23.880 -->
00:42:24.840You didn't even buy it,
00:42:24.880 -->
00:42:25.380but you took it.
00:42:25.420 -->
00:42:26.500Then you forgot which one you're doing.
00:42:26.580 -->
00:42:27.620This totally solves that problem.
00:42:27.740 -->
00:42:27.840Yeah.
00:42:28.300 -->
00:42:28.520Yeah,
00:42:28.620 -->
00:42:28.900exactly.
00:42:29.000 -->
00:42:29.120Cool.
00:42:29.600 -->
00:42:29.740Yeah.
00:42:29.740 -->
00:42:31.320That's what the request was like.
00:42:31.540 -->
00:42:32.820I know I took a course.
00:42:32.900 -->
00:42:35.120I don't remember which one I was working on in which order would,
00:42:35.260 -->
00:42:35.420you know,
00:42:35.460 -->
00:42:36.640help me get back to that.
00:42:37.740 -->
00:42:38.440And then of course,
00:42:38.440 -->
00:42:38.940when you're in,
00:42:39.020 -->
00:42:39.500in a course,
00:42:39.540 -->
00:42:40.440it has a resume button.
00:42:40.440 -->
00:42:42.620So you just click that to presume where you left off,
00:42:42.700 -->
00:42:45.240but it doesn't have a cross cutting resume.
00:42:45.400 -->
00:42:45.800You know what I mean?
00:42:46.420 -->
00:42:48.880I do like how you split it up so that if,
00:42:49.040 -->
00:42:49.460like you said,
00:42:49.460 -->
00:42:49.800if someone,
00:42:49.960 -->
00:42:52.920if I took the whole course and there's something I want to go back and review,
00:42:53.020 -->
00:42:55.380I can just look through and go and watch those videos.
00:42:55.980 -->
00:42:57.020It's labeled well.
00:42:57.320 -->
00:42:57.380So.
00:42:57.620 -->
00:42:57.740Yeah.
00:42:57.780 -->
00:42:58.220Thanks a bunch.
00:42:58.980 -->
00:42:59.500All right.
00:42:59.500 -->
00:43:08.060I talked about using latency to increase security for supplying chain stuff,
00:43:08.060 -->
00:43:08.740right?
00:43:08.740 -->
00:43:08.940Like,
00:43:09.060 -->
00:43:09.240Hey,
00:43:09.260 -->
00:43:10.280if I do a pip,
00:43:10.500 -->
00:43:13.800a uv pip update or upgrade sort of thing,
00:43:13.800 -->
00:43:17.820or similarly with sync and add and so on,
00:43:18.640 -->
00:43:20.540just doing like an exclude newer than,
00:43:21.280 -->
00:43:22.860or whatever,
00:43:23.520 -->
00:43:26.180give it seven days or a week or however you do it.
00:43:26.180 -->
00:43:30.640There's this article by Andrew Nespen that says package managers need to chill.
00:43:31.920 -->
00:43:32.760And right at the top,
00:43:32.800 -->
00:43:35.320we have this post requested by Seth Larson,
00:43:35.600 -->
00:43:38.220the security guy at the PSF.
00:43:38.540 -->
00:43:39.940So yeah.
00:43:40.240 -->
00:43:40.640Anyway,
00:43:40.660 -->
00:43:41.740it talks about all the different,
00:43:42.300 -->
00:43:46.660how you make your dependency manager tool chill.
00:43:46.820 -->
00:43:48.100Like uv has an exclude newer,
00:43:48.240 -->
00:43:49.280which I've been using.
00:43:49.900 -->
00:43:51.140And it's mostly awesome,
00:43:51.380 -->
00:43:54.620except for when there's a vulnerability that appears in one and you get a
00:43:54.620 -->
00:43:55.900notification that you've got to fix it.
00:43:56.200 -->
00:43:58.320But it just came out the fix.
00:43:58.460 -->
00:43:59.700So you don't want to exclude it.
00:44:00.980 -->
00:44:02.080But in general,
00:44:02.300 -->
00:44:02.680it's,
00:44:02.680 -->
00:44:02.900it's,
00:44:02.960 -->
00:44:05.360I think a better thing than,
00:44:05.440 -->
00:44:05.980than not.
00:44:06.660 -->
00:44:06.860Why?
00:44:07.100 -->
00:44:07.380Like,
00:44:07.880 -->
00:44:08.600remind me why,
00:44:08.700 -->
00:44:10.260why would you want to exclude newer stuff?
00:44:10.400 -->
00:44:11.960Because for popular packages,
00:44:11.960 -->
00:44:16.200if somebody uploads a virus inside the package,
00:44:16.200 -->
00:44:21.780like they take over the build chain or they fish the person who created it,
00:44:21.780 -->
00:44:22.660like let's take shared it.
00:44:22.660 -->
00:44:23.680They fish Dan,
00:44:23.840 -->
00:44:31.260they get access to his GitHub and they install a subtle thing that downloads some rootkit or whatever,
00:44:31.680 -->
00:44:33.880info stealer to your account.
00:44:33.880 -->
00:44:36.640That usually gets found within the first couple days.
00:44:36.640 -->
00:44:40.620And if you're always just going update,
00:44:40.740 -->
00:44:40.980update,
00:44:41.080 -->
00:44:41.400update,
00:44:41.560 -->
00:44:42.240give me the latest,
00:44:42.340 -->
00:44:43.000give me the latest,
00:44:43.200 -->
00:44:43.460you know,
00:44:43.460 -->
00:44:47.160the chances that you hit that are pretty high,
00:44:47.160 -->
00:44:47.420right?
00:44:47.420 -->
00:44:49.320Because they won't get found in the first hour.
00:44:49.320 -->
00:44:50.920Even if it's found in the first hour,
00:44:51.000 -->
00:44:54.760will people be able to react and communicate within the first hour to deal with it?
00:44:54.760 -->
00:44:55.040You know,
00:44:55.140 -->
00:44:56.860but if you just say,
00:44:56.960 -->
00:44:57.560give it a week,
00:44:57.560 -->
00:45:00.380like probably most of the popular ones,
00:45:00.460 -->
00:45:01.700if there was something wrong,
00:45:01.740 -->
00:45:02.880it would have been found out by then.
00:45:03.560 -->
00:45:04.400But okay.
00:45:04.480 -->
00:45:10.940What if it got found out and got fixed and the week boundaries there.
00:45:10.940 -->
00:45:17.040And 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.480if there,
00:45:17.540 -->
00:45:18.220if there was a virus,
00:45:18.280 -->
00:45:19.180they remove it from pipe.
00:45:19.180 -->
00:45:19.420Yeah.
00:45:20.000 -->
00:45:20.260Okay.
00:45:20.480 -->
00:45:21.300It's not even there.
00:45:21.300 -->
00:45:22.880Even if somebody picks an old one.
00:45:23.000 -->
00:45:23.320Exactly.
00:45:23.500 -->
00:45:25.900I knew that I was just sort of playing along.
00:45:26.080 -->
00:45:26.360Yeah.
00:45:26.360 -->
00:45:26.560Yeah.
00:45:26.920 -->
00:45:27.120Yeah.
00:45:27.120 -->
00:45:27.320Yeah.
00:45:27.800 -->
00:45:28.160Exactly.
00:45:28.260 -->
00:45:28.440Yeah.
00:45:29.360 -->
00:45:33.100So basically just more people singing the same message,
00:45:33.180 -->
00:45:34.800but this is a nice cross technology.
00:45:34.900 -->
00:45:35.480Are you in.net?
00:45:35.540 -->
00:45:36.020Are you in Ruby?
00:45:36.120 -->
00:45:36.680Are you in JavaScript?
00:45:36.840 -->
00:45:37.760Here's how you make it chill.
00:45:38.980 -->
00:45:39.340Okay.
00:45:39.460 -->
00:45:40.880So back to AI.
00:45:41.040 -->
00:45:41.500Real quick.
00:45:42.240 -->
00:45:47.220Paul Everett and I did this video debate,
00:45:47.360 -->
00:45:48.060although it was not,
00:45:48.060 -->
00:45:49.220not that much of a debate,
00:45:49.300 -->
00:45:51.000but it was more of a conversation,
00:45:51.220 -->
00:45:54.940but in kind of debate format about will AI kill open source,
00:45:55.700 -->
00:45:57.720not the licensing part of it,
00:45:57.780 -->
00:46:00.720but just will it make open source unnecessary?
00:46:01.060 -->
00:46:03.320Will it just stop using open source and so on?
00:46:03.480 -->
00:46:04.220We don't think so,
00:46:04.260 -->
00:46:07.420but we had a really nice chat and did a little quick writeup,
00:46:07.420 -->
00:46:09.360but mostly the writeup links to the video.
00:46:09.640 -->
00:46:10.420So check out the video.
00:46:10.940 -->
00:46:11.380Okay.
00:46:12.100 -->
00:46:15.380I also did a writeup called always activate the VE and V,
00:46:15.740 -->
00:46:16.280a shell script.
00:46:16.280 -->
00:46:17.760So I talked about this before,
00:46:17.760 -->
00:46:18.180I believe.
00:46:19.320 -->
00:46:20.280This is not the thing.
00:46:20.380 -->
00:46:22.140This is the lead into the thing I want to talk about.
00:46:22.640 -->
00:46:28.560And so as I change directories around my computer with just the terminal,
00:46:28.800 -->
00:46:32.420it automatically finds and activates virtual environments.
00:46:32.420 -->
00:46:33.740But there's like,
00:46:33.740 -->
00:46:34.860there's like,
00:46:34.860 -->
00:46:36.140this was a thing in dirt,
00:46:36.140 -->
00:46:36.800dirt inf.
00:46:38.020 -->
00:46:38.620They said,
00:46:38.680 -->
00:46:38.760well,
00:46:38.760 -->
00:46:39.500we can't do this.
00:46:39.720 -->
00:46:49.580What 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.020And like it runs the activate script.
00:46:52.020 -->
00:46:53.920What if that activate script is malicious?
00:46:53.920 -->
00:46:54.420You know,
00:46:54.420 -->
00:46:55.060that kind of thing.
00:46:55.060 -->
00:47:00.280So with some nice feedback from Scott H,
00:47:00.500 -->
00:47:04.260I made a much more secure version that whitelist them.
00:47:04.260 -->
00:47:04.840And if you're,
00:47:04.900 -->
00:47:05.480it's not whitelisted,
00:47:05.600 -->
00:47:05.780it says,
00:47:05.840 -->
00:47:05.920Hey,
00:47:05.980 -->
00:47:06.280do you,
00:47:06.360 -->
00:47:09.140do you really trust this thing or do you not?
00:47:09.180 -->
00:47:10.760Cause you might just open up a folder and go,
00:47:10.820 -->
00:47:11.280Oh my gosh,
00:47:11.820 -->
00:47:16.260there 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.480Right.
00:47:17.040 -->
00:47:19.420So all that I think is super polished and really nice.
00:47:19.420 -->
00:47:19.740And I'm,
00:47:19.740 -->
00:47:20.260I'm loving it.
00:47:20.320 -->
00:47:21.020So here's the news.
00:47:22.600 -->
00:47:26.640Viraj Kenwande or Kenwande said,
00:47:26.640 -->
00:47:36.660I 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.600which was pretty awesome.
00:47:37.780 -->
00:47:41.680So this is now a Z shell plugin or Oh my Z,
00:47:41.820 -->
00:47:43.260just Z shell plugin,
00:47:43.640 -->
00:47:46.440a ZSH safe V and V auto is what it's called,
00:47:46.520 -->
00:47:47.420which I thought was pretty awesome.
00:47:48.020 -->
00:47:48.760That's pretty cool.
00:47:49.500 -->
00:47:49.940Yeah.
00:47:49.960 -->
00:47:50.200Yeah.
00:47:51.100 -->
00:47:51.640All right.
00:47:51.640 -->
00:47:52.560That's it for my extras.
00:47:53.540 -->
00:47:53.980Cool.
00:47:55.320 -->
00:47:56.220We each got a joke,
00:47:56.300 -->
00:47:56.440right?
00:47:57.220 -->
00:47:57.580Uh,
00:47:57.660 -->
00:47:58.080yeah,
00:47:58.160 -->
00:47:59.440I took mine down though.
00:47:59.640 -->
00:48:00.000Uh,
00:48:00.000 -->
00:48:03.480so I'm going to have to rely on you to bring it into your thing.
00:48:03.660 -->
00:48:03.740So,
00:48:04.060 -->
00:48:04.360all right,
00:48:04.360 -->
00:48:04.860I'll find it.
00:48:04.940 -->
00:48:05.220No worries.
00:48:05.700 -->
00:48:07.140So this,
00:48:07.240 -->
00:48:11.040this one is so good and it follows this AI theme that we've been going.
00:48:11.560 -->
00:48:17.540Remember the stack overflow keyboard and this is exactly the same vibe as the stack overflow keyboard.
00:48:17.640 -->
00:48:25.520The 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.300Yeah.
00:48:26.300 -->
00:48:26.620Well,
00:48:26.620 -->
00:48:28.400if you've done anything with cloud code,
00:48:28.740 -->
00:48:32.640it often asks permissions to make changes and it says,
00:48:32.800 -->
00:48:34.040do you want to allow this once?
00:48:34.280 -->
00:48:35.280Allow this always?
00:48:35.380 -->
00:48:36.860Or do you want to reject this change?
00:48:37.360 -->
00:48:41.440And so it's the super fancy Apple looking keyboard that just says allow once,
00:48:42.200 -->
00:48:43.340always allow or reject.
00:48:43.340 -->
00:48:45.360So this is funny on its own.
00:48:45.420 -->
00:48:46.580You all have to check out the picture.
00:48:47.480 -->
00:48:48.720I put it in the show notes.
00:48:48.840 -->
00:48:51.200It may or may not show up in your podcast player.
00:48:51.680 -->
00:48:52.340I don't know.
00:48:52.400 -->
00:48:52.840Maybe I can,
00:48:52.900 -->
00:48:53.620I'll just make it the,
00:48:53.620 -->
00:48:54.480the poster art.
00:48:54.480 -->
00:48:55.480Um,
00:48:55.480 -->
00:48:57.240so,
00:48:57.360 -->
00:48:59.120but also there's,
00:48:59.120 -->
00:49:00.160there's two,
00:49:00.320 -->
00:49:01.060there's two,
00:49:01.140 -->
00:49:01.820too many buttons.
00:49:01.820 -->
00:49:04.060I think you just all need allow always.
00:49:04.060 -->
00:49:05.020I know.
00:49:05.160 -->
00:49:05.520Well,
00:49:05.580 -->
00:49:05.860let's,
00:49:06.060 -->
00:49:08.180let's review the comments because,
00:49:08.380 -->
00:49:09.060oh my gosh,
00:49:09.080 -->
00:49:09.640they're so good.
00:49:09.680 -->
00:49:11.220There's 223 comments.
00:49:11.980 -->
00:49:12.120Yeah,
00:49:12.200 -->
00:49:12.580exactly.
00:49:12.780 -->
00:49:14.580Issue says waste of two buttons.
00:49:14.840 -->
00:49:15.800I truly productive.
00:49:15.800 -->
00:49:17.880I should only have allow all.
00:49:17.880 -->
00:49:19.160Um,
00:49:19.960 -->
00:49:20.380did it,
00:49:20.380 -->
00:49:22.560did it get somebody?
00:49:22.960 -->
00:49:23.700This is like the,
00:49:23.940 -->
00:49:26.240remember the joke last week that was like,
00:49:26.280 -->
00:49:28.340so you're new to a sarcasm.
00:49:28.340 -->
00:49:30.560The person that looks like an AI generated image.
00:49:30.700 -->
00:49:30.980Yeah,
00:49:31.080 -->
00:49:31.460exactly.
00:49:31.620 -->
00:49:31.900It didn't.
00:49:32.040 -->
00:49:32.440Obviously.
00:49:34.580 -->
00:49:37.260And there's the secret button dangerously skip permissions.
00:49:37.740 -->
00:49:40.000Somebody added it to their stream deck for real,
00:49:40.080 -->
00:49:41.140that it actually allows it.
00:49:41.780 -->
00:49:42.220Yeah.
00:49:42.400 -->
00:49:43.180So Matt says too,
00:49:43.240 -->
00:49:43.840too many buttons.
00:49:44.740 -->
00:49:46.020But if we go down,
00:49:46.240 -->
00:49:47.020oh my gosh,
00:49:47.020 -->
00:49:48.140there's,
00:49:48.240 -->
00:49:48.480um,
00:49:48.640 -->
00:49:48.940there's,
00:49:49.060 -->
00:49:49.540there's,
00:49:49.660 -->
00:49:50.880this is the one,
00:49:51.100 -->
00:49:52.120the actual one,
00:49:52.200 -->
00:49:52.400Brian,
00:49:52.540 -->
00:49:53.020there's,
00:49:53.120 -->
00:49:54.880there's a used version.
00:49:54.880 -->
00:49:56.880It says update after day one,
00:49:56.960 -->
00:49:58.920it shows the same picture,
00:49:58.920 -->
00:50:01.840but the allow always is like cracked and smash.
00:50:01.840 -->
00:50:02.360And just like,
00:50:02.360 -->
00:50:03.940it's just been hit like brutally.
00:50:04.220 -->
00:50:04.840Just use.
00:50:05.000 -->
00:50:05.360Yes.
00:50:06.600 -->
00:50:07.040Oh,
00:50:07.140 -->
00:50:09.040this is really good.
00:50:09.780 -->
00:50:11.160And so someone says,
00:50:11.200 -->
00:50:11.920you got to be safe.
00:50:11.960 -->
00:50:14.820And they create a little like Rube Goldberg machine that just like
00:50:14.820 -->
00:50:16.700automates hitting allow once.
00:50:16.700 -->
00:50:17.320But forever.
00:50:17.740 -->
00:50:18.100Yeah.
00:50:18.120 -->
00:50:19.160Just a little bobber,
00:50:19.480 -->
00:50:22.120bobber thing that just hits it all the time.
00:50:22.220 -->
00:50:22.600That's funny.
00:50:22.780 -->
00:50:23.040Yeah.
00:50:23.120 -->
00:50:23.760Devin says,
00:50:23.840 -->
00:50:23.980no,
00:50:24.020 -->
00:50:24.120no,
00:50:24.120 -->
00:50:24.300no,
00:50:24.300 -->
00:50:24.920we need the,
00:50:24.960 -->
00:50:25.280you know,
00:50:25.340 -->
00:50:26.080Claude code.
00:50:26.140 -->
00:50:26.440We'll say,
00:50:26.520 -->
00:50:26.820we're going to,
00:50:26.900 -->
00:50:28.360I got to ask you a few questions.
00:50:28.740 -->
00:50:29.780Here's three options.
00:50:29.860 -->
00:50:30.380Do you want one,
00:50:30.460 -->
00:50:30.920two or three,
00:50:30.980 -->
00:50:33.040or sometimes there's four or you got to choose other.
00:50:33.040 -->
00:50:35.400So there's one that has like a second row that says one,
00:50:35.460 -->
00:50:35.520two,
00:50:35.580 -->
00:50:35.660three,
00:50:35.740 -->
00:50:36.220four other.
00:50:37.980 -->
00:50:39.320I would actually use that.
00:50:39.960 -->
00:50:40.680I know.
00:50:40.780 -->
00:50:41.460It's so good.
00:50:41.520 -->
00:50:43.240Another one has like the three,
00:50:43.360 -->
00:50:44.200the allow once.
00:50:44.280 -->
00:50:45.200I'll always reject it.
00:50:45.200 -->
00:50:47.400It has a microphone button to dictate to it.
00:50:47.600 -->
00:50:49.060These are so good.
00:50:49.300 -->
00:50:50.820You got to look at the comments.
00:50:51.740 -->
00:50:52.480That's funny.
00:50:53.480 -->
00:50:53.920Anyway,
00:50:54.200 -->
00:50:55.660that's good.
00:50:55.660 -->
00:50:56.020Yeah.
00:50:56.100 -->
00:50:56.460Yeah.
00:50:56.480 -->
00:50:57.080That's my joke.
00:50:57.540 -->
00:51:01.480But my favorite one of it is where it's like crushed with like after day one.
00:51:02.840 -->
00:51:03.240Yeah.
00:51:04.160 -->
00:51:04.560So,
00:51:04.560 -->
00:51:05.720well,
00:51:05.800 -->
00:51:05.960I'll,
00:51:06.080 -->
00:51:06.460uh,
00:51:06.460 -->
00:51:07.400let me try to get mine up.
00:51:07.600 -->
00:51:08.140Let's see.
00:51:09.200 -->
00:51:11.040I can pull up for you if you don't have it yet.
00:51:11.060 -->
00:51:11.260Okay.
00:51:11.720 -->
00:51:11.940Yeah.
00:51:11.940 -->
00:51:13.680Just go ahead and pull that link up or something.
00:51:15.060 -->
00:51:15.780Or the picture.
00:51:18.820 -->
00:51:19.220Uh,
00:51:19.420 -->
00:51:19.940so,
00:51:20.100 -->
00:51:20.320uh,
00:51:20.320 -->
00:51:23.840this was submitted with something else submitted by Paul Cutler,
00:51:23.980 -->
00:51:24.700uh,
00:51:24.700 -->
00:51:26.240has some news about AI too.
00:51:26.820 -->
00:51:27.140Um,
00:51:27.640 -->
00:51:28.040uh,
00:51:28.040 -->
00:51:28.740are you getting it?
00:51:28.800 -->
00:51:29.280You want me to,
00:51:29.500 -->
00:51:30.120I get it?
00:51:30.160 -->
00:51:30.660It's just slow.
00:51:31.340 -->
00:51:31.780Okay.
00:51:31.840 -->
00:51:32.760It's just slow loading.
00:51:32.880 -->
00:51:33.320There we go.
00:51:35.880 -->
00:51:36.280So,
00:51:36.380 -->
00:51:36.800uh,
00:51:36.800 -->
00:51:38.220set this over on,
00:51:38.220 -->
00:51:38.540uh,
00:51:38.540 -->
00:51:39.180Mastodon,
00:51:39.180 -->
00:51:40.140um,
00:51:40.960 -->
00:51:42.200Paul Cutler today.
00:51:42.200 -->
00:51:47.380It was mandated at work that we install cloud code because as they said,
00:51:47.460 -->
00:51:51.020it has built in PowerPoint creation capabilities.
00:51:52.540 -->
00:51:53.780What a reason.
00:51:53.780 -->
00:51:54.700FML.
00:51:55.700 -->
00:51:56.140Yeah.
00:51:57.360 -->
00:51:57.660Uh,
00:51:57.660 -->
00:52:02.940cause you know what's coming next hour long meetings with lots of PowerPoint.
00:52:03.280 -->
00:52:03.760You know,
00:52:03.820 -->
00:52:05.520I thought this was super funny at first,
00:52:05.520 -->
00:52:08.980but also like it drives me kind of nuts with it.
00:52:08.980 -->
00:52:09.160Cause,
00:52:09.240 -->
00:52:09.520because,
00:52:09.680 -->
00:52:09.860you know,
00:52:09.860 -->
00:52:10.540I'm a coder.
00:52:10.660 -->
00:52:12.640So if I have to write a PowerPoint presentation,
00:52:12.640 -->
00:52:13.460it's unusual.
00:52:13.980 -->
00:52:14.420So,
00:52:14.940 -->
00:52:15.240um,
00:52:15.400 -->
00:52:19.700this probably is a good idea that I could save some time and not waste time on
00:52:19.700 -->
00:52:20.400creating PowerPoint.
00:52:20.400 -->
00:52:20.840So,
00:52:20.840 -->
00:52:21.280yeah,
00:52:21.360 -->
00:52:21.740no kidding.
00:52:21.860 -->
00:52:21.980Well,
00:52:21.980 -->
00:52:22.360it's actually,
00:52:22.440 -->
00:52:22.760it was a,
00:52:22.840 -->
00:52:24.900it's a pretty neat integration.
00:52:24.900 -->
00:52:26.640It's not just that it knows how to do PowerPoint,
00:52:26.640 -->
00:52:27.120but it,
00:52:27.520 -->
00:52:31.000if you open up the cloud desktop app,
00:52:31.060 -->
00:52:32.340the same one that does cowork,
00:52:32.340 -->
00:52:35.340it has a little,
00:52:35.460 -->
00:52:38.940what's new button and you click it and it says install into PowerPoint.
00:52:38.940 -->
00:52:44.560And it actually adds like a cloud section inside of your PowerPoint presentation.
00:52:44.560 -->
00:52:46.860Why?
00:52:47.480 -->
00:52:49.560So you could like highlight a picture and say,
00:52:49.620 -->
00:52:51.980could we get a different picture for this or highlight the text?
00:52:52.020 -->
00:52:52.500And could you,
00:52:52.640 -->
00:52:54.380could you animate this in from the left?
00:52:54.840 -->
00:52:55.240Oh,
00:52:55.320 -->
00:52:57.780like not while you're presenting though?
00:52:58.160 -->
00:52:58.280Like,
00:52:58.480 -->
00:52:58.740no,
00:52:58.800 -->
00:52:59.900it's during the building time.
00:53:00.020 -->
00:53:00.380Okay.
00:53:00.540 -->
00:53:00.760Yeah.
00:53:00.760 -->
00:53:01.320That makes more sense.
00:53:01.320 -->
00:53:01.400No,
00:53:01.440 -->
00:53:03.400you got like format picture animation tab,
00:53:03.400 -->
00:53:04.680and then you've got Claude now.
00:53:05.160 -->
00:53:05.560Yeah.
00:53:05.940 -->
00:53:06.700It's actually pretty,
00:53:06.780 -->
00:53:10.120as opposed to just read my PowerPoint file and do this,
00:53:10.180 -->
00:53:10.480you know,
00:53:10.900 -->
00:53:12.860sorry,
00:53:12.940 -->
00:53:13.120Paul,
00:53:13.120 -->
00:53:15.640I want it to be during the presentation.
00:53:15.640 -->
00:53:17.200So when you're presenting and go,
00:53:17.320 -->
00:53:17.880Hey,
00:53:17.900 -->
00:53:18.200Claude,
00:53:18.280 -->
00:53:22.440does anybody in the audience stopped at Starbucks before they got here?
00:53:23.740 -->
00:53:25.980I forgot what I'm talking about.
00:53:26.020 -->
00:53:26.240Claude,
00:53:26.300 -->
00:53:27.820please tell the audience what this means.
00:53:29.980 -->
00:53:30.460Yeah.
00:53:30.700 -->
00:53:30.980Anyway.
00:53:31.460 -->
00:53:31.700Yeah.
00:53:32.400 -->
00:53:32.840Awesome.
00:53:33.140 -->
00:53:33.340Well,
00:53:33.520 -->
00:53:35.740fun talking with you as always.
00:53:36.000 -->
00:53:37.940And I don't know if we need to,
00:53:37.940 -->
00:53:38.340to,
00:53:38.340 -->
00:53:43.020to change the name of the podcast to like Claude bites.
00:53:43.120 -->
00:53:43.640Um,
00:53:43.740 -->
00:53:44.040or,
00:53:44.040 -->
00:53:44.100or,
00:53:44.100 -->
00:53:46.180or how we,
00:53:46.180 -->
00:53:46.880I don't think so,
00:53:47.100 -->
00:53:49.880but I mean,
00:53:49.940 -->
00:53:50.360honestly,
00:53:50.360 -->
00:53:51.260it's,
00:53:51.400 -->
00:53:52.720it's a good point,
00:53:52.720 -->
00:53:57.760but as a meta comment for the audience out there,
00:53:57.760 -->
00:54:05.500it'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.340Yeah.
00:54:06.400 -->
00:54:08.380But we obviously realize that there's plenty of stuff.
00:54:08.380 -->
00:54:11.280That's not really AI at all.
00:54:12.780 -->
00:54:13.620At the same time,
00:54:13.640 -->
00:54:14.880it's transforming the industry.
00:54:14.880 -->
00:54:16.840Like basically like the web,
00:54:17.400 -->
00:54:19.520when the web came around and it's like,
00:54:19.520 -->
00:54:20.220well,
00:54:20.220 -->
00:54:20.820now we have the web,
00:54:20.880 -->
00:54:22.340but we don't talk about it because it's,
00:54:22.480 -->
00:54:23.160you know,
00:54:23.160 -->
00:54:23.560I don't know.
00:54:23.620 -->
00:54:23.820It's,
00:54:23.820 -->
00:54:24.240it's tough.
00:54:24.300 -->
00:54:24.780It's a balance.
00:54:25.440 -->
00:54:25.840Also,
00:54:25.960 -->
00:54:30.160I just am aware that there's people that care about Python,
00:54:30.160 -->
00:54:32.880but also they have to care about this right now,
00:54:32.920 -->
00:54:34.060whether they want to or not.
00:54:34.120 -->
00:54:36.580So it's something I'm willing to cover as well.
00:54:36.940 -->
00:54:37.060So,
00:54:37.400 -->
00:54:37.540yeah.
00:54:37.620 -->
00:54:37.780Yeah.
00:54:38.400 -->
00:54:38.960And it's just,
00:54:39.080 -->
00:54:39.560and it's wild.
00:54:39.760 -->
00:54:41.120And may we live in interesting times.
00:54:42.400 -->
00:54:42.800Bye.
00:54:42.840 -->
00:54:43.000Later,
00:54:43.040 -->
00:54:43.180Brian.
00:54:43.180 -->
00:54:43.240Bye.
00:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:43.24000:54:43.240 -->
00:54:44.240Bye.