#472: Monorepos
About the show
Sponsored by us! Support our work through:
- Our courses at Talk Python Training
- The Complete pytest Course
- Patreon Supporters Connect with the hosts
- Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)
- Brian: @brianokken@fosstodon.org / @brianokken.bsky.social
- Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.
Brian #1: Setting up a Python monorepo with uv workspaces
- Dennis Traub
- The 3 things
- Give the Root a Distinct Name
- Use workspace = true for Inter-Package Deps
- Use importlib Mode for pytest
Michael #2: cattrs: Flexible Object Serialization and Validation
- cattrs is a Swiss Army knife for (un)structuring and validating data in Python.
- A natural alternative/follow on from DataClass Wizard
- Converts to ←→ from dictionaries
- cattrs also focuses on functional composition and not coupling your data model to its serialization and validation rules.
- When you’re handed unstructured data (by your network, file system, database, …), cattrs helps to convert this data into trustworthy structured data.
- Batteries Included: cattrs comes with pre-configured converters for a number of serialization libraries, including JSON (standard library, orjson, UltraJSON), msgpack, cbor2, bson, PyYAML, tomlkit and msgspec (supports only JSON at this time).
Brian #3: Learning to program in the AI age
- Jose Blanca
- “I teach a couple of introductory Python courses and I've been thinking about which advice to give to my students, that are studying how to program for the first time. I have collected my ideas in these blog posts”
- Why learning to program is as useful as ever, even with powerful AI tools available.
- How to use AI as a tutor rather than a shortcut, and why practice remains the key to real understanding.
- What the real learning objectives are: mental models, managing complexity, and thinking like a software developer.
Michael #4: VS Code extension for FastAPI and friends
- Enhances the FastAPI development experience in Visual Studio Code
- Path Operation Explorer: Provides a hierarchical tree view of all FastAPI routes in your application.
- Search for routes: Use the Command Palette and quickly search for routes by path, method, or name.
- CodeLens links appear above HTTP client calls like client.get('/items'), letting you jump directly to the matching route definition.
- Deploy your application directly to FastAPI Cloud from the status bar with zero config.
- View real-time logs from your FastAPI Cloud deployed applications directly within VS Code.
- Install from Marketplace.
Extras
Brian:
- Guido van Rossum interviews key Python developers from the first 25 years
- IntelliJ IDEA: The Documentary | An origin story video
- Cursor Joined the ACP Registry and Is Now Live in Your JetBrains IDE
- What hyper-personal software looks like
- I’m doing in-person training again (limited scope):
Joke: Saas is dead
Episode Transcript
Collapse transcript
00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly
00:04 to your earbuds. This is episode 472, recorded March 9th, 2026. Incredible. My name is Michael
00:13 Kennedy. And I'm Brian Okken. And this episode is brought to you by us. We have a bunch of
00:18 different courses, books, links are at the top of the show. I actually have some other things that
00:23 I'm going to talk about at the end of this show, Brian. Yet another thing. I have two new things,
00:27 but I only want to talk about one thing at a time. So this week gets, well, the one that I
00:32 picked for this week. Yeah. Follow us on socials, Brian, me and the show. We all have different
00:37 social media accounts you can follow and keep up with all the things that we're talking about,
00:41 or, you know, send us recommendations. We appreciate that. We always enjoy getting cool
00:46 ideas from other people. Helps a lot, right? We say, I didn't know. I don't think one of these
00:50 exists and someone will send us a message. Yes, they exist. And here are four of them. Like,
00:53 oh, thanks. We'll talk about those later. Sign up to the newsletter, get notified about
00:57 all the stuff that we're up to, but mostly we're sending out detailed, extra enriched
01:03 information about what we talked about in the show, not just show notes over email. So people
01:08 are finding that really valuable and Brian's sending those out. So that's great. And with that,
01:12 I guess, what's our first item, Brian? Oh yeah. So let's, actually, I've got a thing that I'm working
01:18 on at work that involves a project that really should be set up as a monorepo.
01:26 So, I mean, it's not, we're really, we don't really do monorepo things, but I guess it's a
01:32 project that, that has one repository and a bunch of different, like Python projects inside of it.
01:38 So I was looking for, for help with that. And I ran across this article called,
01:44 three things I wish I knew before setting up a uv workspace. And it is really about setting up a
01:52 uv workspace to deal with monorepos. And I actually don't really know. Anyway, so workspaces are a
01:59 thing that, that uv can deal with. And, but there's some, some tricks that I guess weren't obvious.
02:05 There weren't obvious to me. So there's just a few that I want to cover. One is to give the
02:10 root a distinct name. So you've got a top level PI, you've got an application, you've got,
02:16 or your repo, there's going to be a top level PI project.toml to handle all of the, to cover
02:22 everything. And then each of your sub packages will have its own PI project.toml. And the trick is
02:30 they've got to have the workspace names have to be different to make this all work. And so it might be
02:38 obvious. It might like in the example, they've got my app as the core project, but then the workspace
02:43 is my app also. It can't be that you run into a, a name conflict. So, and that's in the names show up
02:52 in a thing you've got member. There's an example of what the workspace looks like and that you have to
02:59 set up a different top level name. So project name has to be different. So maybe obvious, but I would
03:06 not, it's wasn't obvious to me. So thanks for that help. The other part, which the, one of the other
03:13 tricky bits is in order for uv to deal with this. Okay. The top level one, is it the top one? If
03:21 workspace packages depend on each other, you got to do a couple of things. You have a normal dependency
03:28 declaration and a tool.uv.sources entry telling uv to resolve it locally. So a project will have a
03:36 dependency. It's going to have its own name. It's going to have a dependency and that dependency,
03:41 if it's internal, you have to, in below say, you know, look, also look for uv sources in this workspace.
03:47 So it doesn't go out to PyPI or whatever to try to find those dependencies. And yeah, I would not
03:54 have even thought that that's built into uv. So that's cool. Didn't know that was there. The third bit
04:00 that was to use import lib mode for pytest. And that's kind of one of the reasons why I wanted
04:08 to pick this because I'm not sure what they're talking about here. Apparently there's an issue.
04:14 The issue is if you've got like something like the same test name, like test helpers in multiple
04:19 projects, that's if you, if you don't, if you have unique file names, it's fine. But if you might not,
04:26 and, and, you know, as projects grow, you don't want to like restrict people's file name choice.
04:31 We'll go ahead and do this, but I don't, the, there's like a couple of methods. There's the use,
04:37 the import lib method, and then there's putting dunder and nets in your test directory. And the,
04:44 the comment here is that this is, there's a silent bug with that. I wasn't familiar with this. So I'm,
04:49 it's a homework for me for next week is to research this, to try to figure out
04:53 what the deal is with this import lib versus dunder and net and how that behaves. So I'm going to,
04:59 I'm going to work on that this week. So that's, that's my, my two cents there.
05:04 What an interesting idea these monorepos are, huh?
05:08 Yeah. Well, I mean, I'm, I was first resistant. I'm like, why not just split it up? But there's a
05:13 lot of times where, I mean, for us, for me, that it's really that all the label can be one label for
05:19 everything, for everything that's together. If you branch, it's all to branch together.
05:25 Merges are all together, all of that. And that's hard to do without a monorepos.
05:29 Yeah, it definitely is. Definitely is. I just want to throw in real quick that I
05:33 interviewed Yarek and Mark from the Airflow team.
05:38 Okay.
05:38 About monorepos with uv and Prec. So that's episode 540. And I think that's a couple of weeks,
05:44 a couple of weeks out on the official Talk Python channel, but it's on the live stream YouTube
05:49 version, because that usually precedes things by a few weeks.
05:52 Cool. I'll have to check it out.
05:54 As we record them and then let them out. So Airflow has something insane, like over a hundred
05:58 sub projects or packages and dependencies across them and stuff. And they actually worked with uv,
06:04 I believe, to like help set up that workspace feature and functionality and so on. So pretty cool.
06:09 Yeah.
06:10 All right. I want to, I want to carry on from last week. So last week we talked about
06:14 Data Class Wizard. So now I want to talk about C adders. So you probably know adders from Hennig,
06:20 but what about C adders? So C adders is actually, it works with adders and data classes and its job
06:28 is to take and do very similar serialization and validation that you would find in Pydantic,
06:34 but have it as a separate library. And so one of the things that I'm realizing as I sort of go
06:42 through these examples. And when I chose my raw queries plus data classes pattern that we talked
06:49 about last week, I think it was last week, recently, that I really was valuing the fact that the data
06:54 classes themselves were just that data classes. And maybe they got their own computed properties or
07:00 something, but they don't, they were not in charge of serialization, deserialization, validation,
07:04 but things like Data Class Wizards and C adders, or just your data access layer, all those can have
07:10 really rich, you know, conversions, parsing, validation, et cetera, without actually being part
07:17 of your object hierarchy and your class, right? So you can choose those things separately. And this is
07:21 right along those lines. So it's super cool. I can import structure and unstructure, which is
07:28 to and from different types, but maybe dictionaries is the best mental model. And so I can say just parse
07:34 one of these things as a class C, which you defined as a data class or an adders class or something like
07:41 that. And what you get out is one of those parsed and validated, right? Or you can unstructure it and
07:46 becomes a dictionary. Okay. So that's pretty neat, but it's not just, it's not just adders. Also works
07:54 on data classes and let's see, there's a bunch of different types of validation. Let me see if I can
08:00 find it here in our example. So it does things like a message spec, message pack. It does YAML,
08:10 JSON, obviously. So there's a bunch of these different serialization libraries that you might
08:15 adopt, right? So it's really cool that you can do all different types of serialization and so on.
08:20 And I think it's, yeah, I think it's really cool. You can set up hooks to help transform values and
08:25 validate values through just basically decorators, which is kind of cool. Yeah. So more or less,
08:32 like, do you want a really nice structured way to serialize classes without making it part of the
08:37 object hierarchy and check out see adders. That's really cool. Yeah. Yeah. It's I really like see
08:42 adders, especially for projects that like not reaching for a Pydantic seems like a natural thing to do
08:48 with web stuff. But there's a lot of other times where you want similar sorts of data validation
08:54 and other things that are like, like not web related. Yeah. This will work for web stuff too,
09:00 of course. But yeah. Neat. Yeah. I think it's really cool to have that control. Like for example,
09:05 the, what I talked about was if you use Pydantic, it's awesome that it serializes data before it gets
09:11 into your database, but it re validates that data when it comes out of your database. Why are you
09:16 validating data that's just stored in your database? You don't need to do that. It just happens to be,
09:20 well, that's how Pydantic works. You load it with data. It validates it. Great. Right. So I,
09:24 that's what I think is neat about this separation, the sort of orthogonality of your validation and
09:30 conversion layer and your class structure. Cause you can validate on the way in, but not on the way
09:34 out if that's how you like it. You know what I mean? Yeah. That makes sense. Definitely. Cool.
09:39 Yeah. Cool. Well, if I were to learn about this, what would you suggest?
09:42 well, probably not AI. I don't know. nice transition attempt though. Thanks.
09:50 So, I want to cover a, listener suggestion. somebody, wrote in and said, Hey,
09:57 we've been talking partially sometimes about, AI and LLMs and using agentic coding and stuff.
10:05 this is from Jose Blanca. there's a few blog posts around, how do you utilize AI for
10:11 learning to program? And, that's kind of an awesome topic. It's something I've been thinking
10:16 about too, is, is for people like even, you know, people, my daughter's age and stuff want,
10:22 wanting to learn how to code or really anybody wanting to learn how to code. A lot of things like
10:27 why, why would you want to learn how to code if there's a powerful AI tools already? how,
10:32 like if you, if you're convinced that you do want to learn how to code, how could you use AI as a
10:36 tutor rather than a shortcut and, and keep practicing? It's, you know, one of those key
10:42 points is practice remains a key to real understanding. And then, you know, what,
10:46 what should you learn? and I kind of love how we broke this down. So I'll read like the
10:51 summaries of like, you know, why, why, of course, how and what, going through,
10:56 there's just a few blog posts altogether, and really formatted nicely and put up. So,
11:02 why would you learn for occasional programmer or a professional programmer or just for fun?
11:07 There's lots of reasons, to want to learn how to program still. and one of them,
11:13 one of the things he brought up as like an occasional programmer is somebody that's doing something else.
11:18 Like they have a discipline such as biology, physics, whatever, something other than coding.
11:22 And, but they need to, to code. One of the reasons to learn how to code is even if you want to drive
11:29 it with AI is learning what kinds of problems that computers can solve easily or the right kinds of
11:35 things. And, and with, with, with learning programming, you also learn how to break problems
11:40 down into smaller pieces and stuff. There's a lot of stuff you learn with coding, that you,
11:45 that it's one of the few places that is practical that to learn how to do those sorts of things,
11:50 breaking down problems. So lots of great reasons to, to do it for the why part. Um,
11:55 how I love this is, not using AI to solve your exercise problems, because you know,
12:02 you're not learning then, but, you could, you could do that and then look at what they're
12:08 coming up with, but you can also use AI to, to, to ask you things to describe to an agent,
12:15 like what, what level of coding you're at and could they come up with some programming problems
12:19 for you? I never thought about that of like getting a coding, coding problems from them.
12:23 and then, yeah. and then a caveat that there's limits to this and, and, to making
12:29 people aware of, of, of the problem, some of the problems that we're aware of, like, hallucinations
12:35 or dreaming up, dreaming up different things. so, but there X, I do think that,
12:42 that you can use AI as a teacher, a side teacher to generate tasks, debug things that you're having
12:48 trouble with that your code doesn't work. Why is it not working? way back when, when I was
12:52 learning how to code, it was, you did just bang your head out against the table, I guess. Um,
12:58 and, look at all the syntax, but having, having AI helps a lot, getting hints, reviewing your
13:04 code, explaining what different things do. Lots of great stuff that LLMs can help you with. And then,
13:08 the, what is really great. Don't skip this part. If you're going to look at these blog posts,
13:13 because, what you should do, you know, let's see, you know, what you should work on. What
13:20 is the, what, what are the real learning objectives, mental models, managing complexity,
13:24 and thinking like a software developer. these are all great things to, to focus on, depending
13:30 on where you are in your career and how, where you, you know, where you were at. So anyway, this is,
13:35 and also just what good code looks like. Somebody new to coding doesn't really know what
13:40 good code looks like until they, you know, it's good to, good to learn that sort of stuff. So,
13:45 anyway, good job, Jose. I like, I like this. Yeah. Very nice. It's going to be a challenge.
13:50 I think it's so tempting to just press the easy button and go, okay, what's the answer or make it
13:54 work. But those of us who are willing to say, this is not working, help me understand what's wrong.
14:01 What are the other ways in which I could do it? I see you did it that way. Why did you do it that
14:06 way? Was my way not right? Like AI is actually really good at having those conversations.
14:10 Yeah. And I think there's, there's some real gems. There's some opportunity here. There's
14:16 a lot of, a lot of people, a lot of our youth, are not choosing CS right now. And I think that's
14:21 fair, but even if you use, I think there's still room for people to get CS degrees,
14:27 but there's also a lot of room for people to, and with AI, a lot of, it's a lot easier for somebody
14:33 in another field to add it. Like if, if you're in biology, you're probably going to learn some
14:37 coding anyway. But if you're like a history major or a doctor, like medical research or something,
14:45 maybe not, but with, with AI's help, you can probably learn how to code also,
14:50 and you'll be unstoppable when you get out of college. Yeah, absolutely. All right. It's an
14:54 incredible tool. It's an incredible tool. I a hundred percent agree. All right. Let's talk
14:59 about other incredible tools, FastAPI. So Savannah Ostrowski points out, says, Hey, how are you? Are
15:05 you using FastAPI? I'm reading from her LinkedIn post, of course. So good news. They have released
15:10 an official FastAPI extension for VS Code on the marketplaces. So if you drop over there, there's the
15:18 GitHub version and the marketplace version, I guess they kind of show you more or less the same thing,
15:24 kind of like PyPI. Like the read me just shows up in both places. I was like, do I really need this?
15:28 I'm not sure if I need this. Maybe I need this, but if you look at it, it's doing some really cool
15:32 things. GitHub anyway, like for example, I can switch over to FastAPI and it shows all of
15:40 the different, what is it grouped by here? Does it actually group by router? Like, you know,
15:45 how you can break up your routes into organizations by router, or is it just by URL? Anyway, you can see
15:50 like slash items and under slash items. It says there's a get items. There's a get items ID.
15:55 There's a post items put to the ID. And it actually shows you the function name. You can jump from this.
16:01 So really quickly you can navigate around basically by the URL structure of your site. What do you think
16:07 of that? That's pretty cool. Yeah. I think it looks really handy. You can also search for routes so you
16:13 can hit command shift command P I think, or maybe just command P pull up the command palette. And if
16:19 you type sub strings of the URLs or the routes really more accurately, maybe type items, it'll show
16:25 you all the things, all the URLs that involve items and you can select them out there and jump to like
16:31 get slash items or whatever. That's pretty neat. it has code lens for test client calls. So if you
16:38 have a test client calling that URL and you could hover over it, I think that's how it works. You
16:43 can hover over it and it'll actually take you to the server side. So that's pretty wild. Kind of like
16:48 the get lens. If you hover over, it'll say who it was committed by and click on it takes you to
16:52 commit. And then you can also deploy to FastAPI cloud. You're not familiar with that. That's like
16:57 the hosted super simple way to publish your code over to the internet somehow, wherever that goes,
17:04 you just FastAPI deploy and then off it goes. And if it's a FastAPI app, it often can even figure
17:11 out how to run it without you doing anything, which is really sweet. So that's great. So you can do that
17:15 straight from the extension there as well. And you can also view the logs of your application running
17:20 on FastAPI cloud in the terminal of your local VS Code. Yeah. Anyway. So if you are a FastAPI fan,
17:29 especially for using FastAPI cloud also had those folks on talk Python, which is out in the main
17:34 feed just a few weeks ago. So very fun to dig into that. But if you're a FastAPI person, regardless
17:40 of how you cloud checking out the extension for VS Code and presumably cursor windsurf, et cetera,
17:46 anti-gravity, you know, all the things. Nice. Yeah. I like it. Well, I think that is it for
17:51 all of our, our things, right? Yeah. Just some extras left. You got any?
17:55 Yeah. So just noticed this yesterday actually is was that Guido Van Rossum has has a homepage
18:05 on github.io and he started some interviews. So if you, if you look down blog posts, there's
18:11 interviews with key Python developers for the first 25 years. It's a new series that he's doing.
18:17 he's got Thomas Witters and Brett Cannon so far. And, at the preface for Thomas's
18:25 interview talks about what he wants, what he's doing here. apparently during the, the,
18:31 the recent, documentary that we had around Python, we talked about, there was some,
18:37 some people talking about, like, there's a bunch of old timers that were not part of that. And also,
18:42 you know, trying to, they weren't mentioned in the film, but probably are worth talking to.
18:46 And so he decided to do some interviews himself, from his perspective of things that needed
18:52 to be part of Python history, which is cool. And also that he likes, he likes, doing these
18:58 interviews and just releasing a text form instead of, instead of as a, like a podcast or something.
19:03 And actually, I think it's completely valid. It's, it's fine. It's good. but the format's
19:09 nice. there's some interesting information. I kind of skimmed through both Thomas and Brett's
19:15 interview and, I'm excited that he's doing this. So I'd like, keep it up.
19:20 Yeah. That's pretty cool. I know a lot of people, I'm not amongst them, so I'm not going to rant it,
19:25 but a lot of people are like, why, if I just want to learn how to do a thing, do I have to watch a 15
19:30 minute video that is, should have been a five minute video in the first place. And I just want
19:35 to skim the article and jump to it. I like to watch videos and listen to things, but I know a lot of
19:41 people are just rather read it. There's room for both, right? That's right. But our listeners should
19:45 not stop listening. They should definitely, definitely. They should definitely keep listening.
19:50 All right. Carrying on here. I got a speak. You mentioned the documentary for the Python one,
19:55 the really nice one that Cult Repo did. Well, they just released one on IntelliJ, the documentary,
20:02 an origin story, which is a 40 minute documentary on IntelliJ, which is kind of the foundation of
20:10 PyCharm as well. Right. So very relevant to PyCharm fans. So people should check that out. That's
20:15 really nice. Cool. I'm looking forward to that. Yeah. It's so easy to go on YouTube and just get
20:19 junk, but here's some really nice things. And keeping with the PyCharm theme, right, we did VS Code and
20:25 Curse earlier. So PyCharm. Apparently in PyCharm, they have the agent client protocol. And I don't
20:33 know all the different organizations involved in this, but this is just completely new to me. I
20:37 didn't realize what this was, but this is actually really neat. I'll tell you why in just a second.
20:42 So what it does is if you've got some kind of agentic programming tool, like QuadCode or something,
20:49 you can then just go to this and say, I would like anything that supports agent client protocol
20:54 allows that agent to do agentic coding in your editor. It's a little bit like the language server
21:00 allows all these different things to basically integrate with ty and Pyrefly and other stuff.
21:07 Right. Pretty cool. So if you scroll down here, the agents on ACP are Juni, Gemini, CLI, Google
21:14 Copilot, GitHub Copilot, Codex, Cursor, Cursor, what? Cursor. I thought that was an editor. Kimi,
21:23 Quinn, OpenCode, Klein, some of these I've mentioned before, but the noise, the announcement here is that
21:29 Cursor joined the ACP registry and Cursor is now available in PyCharm. Cool. So that's interesting,
21:35 right? Yeah. I mean, I don't even, I don't even know what to say, but luckily there's a video down
21:42 here that says, Oh, you could just watch this and it'll actually show you if you go along,
21:47 you just go in here and basically find and install Cursor and then your agentic coding section. One
21:53 of the things you can pick is Cursor. If I go far enough, it'll show you like once it's set up,
21:57 you can pick your agent source, like Cursor or Gemini wrote, and then you pick your agent mode and
22:02 thinking or planning and your actual model and so on. Isn't that wild?
22:06 Yeah. It's pretty cool.
22:07 Yeah. So I'm pretty, pretty happy to see that. That looks really cool. Okay. One more thing.
22:11 I wrote an R. Go ahead.
22:12 So one of the things I'm hoping is like that might be a way for, so one of the cool things
22:17 about Cursor that I've been trying out is the, one of the models is Composer, which is a cursor
22:24 specific model. And, and it's like, for instance, it's one of the best models for doing pytest code.
22:31 So that I've found, so it's possible that people, and you, you know, out for other people to be able
22:37 to use it then if you're, even if you're not using Cursor. So.
22:40 Yeah, exactly. So now you can run Composer 1.5 or whatever the latest one is at your time.
22:46 Right. Excited by Charm. Yeah. Pretty sweet. Okay. One article for me really quick. I wrote an article
22:51 called what hyper personal software looks like. So a lot of people say, well, if agenda coding is so
22:58 good, why aren't we seeing a ton of different pieces of software just overwhelming us with different
23:03 new apps? I think that's actually going to happen, but I think there's a lag, but I think what we have
23:08 a lot of, and what's going to be interesting is this hyper personal software. That is like something
23:13 that you make for yourself and you don't ever have an intention of sharing. You're just like, I just
23:18 want this agent. You make this and then you have it. Right. So for me, the example I gave is I'm a big
23:22 fan of start page. People probably know these days, that's what I've been using, but start page
23:26 started putting ads on their search results. And if they had just been like little ads at the
23:33 top, I would have actually looked to click them to support them and so on. But I have a 40 inch
23:38 monitor on that. It's like 11 K it's, you know, 5,000 by 2000, something pixels on that screen.
23:45 My browser still does not have a single organic search results on above the fold. There's so many
23:52 ads and I'm like, that is just this, what is this? So I told Claude, Hey Claude, I need a browser
23:58 extension. Here's what we're going to do. We're going to go here. Here's the HTML. I need to get
24:01 rid of these sponsored links from search from start page. So I typed in the description. I gave
24:06 it some example, HTML and I hit go and walked away to like make breakfast. Came back. It had
24:10 something that almost worked. I had to give it a little like, ah, you remove too much. Tell it a
24:14 few times. But now I have a browser extension that gives me just the organic results, nothing else.
24:19 And I have no intention of sharing it. It's just my own browser extension that just runs on my
24:22 computer and I'm happy with it. I'm not published in the store, nothing. And I think we're going to see
24:27 a lot of like a lot of things like that. And I think also people should explore those ideas
24:32 because they're really fun. They're super low stakes. Like if my search results get screwed
24:36 up, I'll just turn off the extension. I don't care. Yeah. Yeah. So anyway, I think there's going to be
24:40 this, this wave of hyper-personal software and here's an example. Yeah. I think that, that idea is
24:47 going to show up in our joke later. It's absolutely going to show up on our joke and it's going to show up
24:52 my next item in the very, very most tangential way. So I'm actually trying something new, Brian.
24:57 And this is for people out there who have companies, I would really love them to pay attention to this
25:02 part. So I'm, I've done a lot of training. I don't know if people know, I've taught over 100 week long
25:08 courses around the world before I started doing the podcast and stuff. Like when I was doing training,
25:13 which is a crazy amount of courses to give like professional development type stuff. So I am going to
25:18 put my shingle back up for that just on very limited way to help people adopt agentic engineering
25:25 practices for their software team. Cool. Not training in general, but if you're, if you've got a Python
25:30 team, especially, and you're like, wow, we're just not really having a lot of success with using AI for
25:36 coding or our team is afraid of it, or they don't know how to do it. Reach out to me, set up a discovery
25:42 call and we'll have a quick chat and I'd love to come. It's been three or four days, one day teaching,
25:47 one day like coding along with your engineers and then like some more follow-up stuff to help them
25:52 really get this kind of stuff going. Oh, that's great. Cause yeah, a lot of people, a lot of teams
25:57 are getting demands from above. Hey, you should be using coding agents, but how? But how, and then how
26:04 do you not end up with a bunch of slop or a bunch of bugs or mouth, you know, like code not following
26:09 your practices. I really dialed that in over the last year and I think I'd, I'd love to share that with
26:14 people. So cool. Nice. Thanks. That's, that's out there. People can find it on my personal website.
26:19 All right. And you're right. All of this leads in perfectly to our joke, doesn't it? So are you
26:24 ready? Yeah. All right. So this comes to us, this is on Reddit. It looks like it actually came off of,
26:30 I don't know, off of X or whatever. It doesn't matter. So there's been this crazy open claw.
26:35 It was like molt, there was claw bot and then molt bot. There's like all these variations that it went
26:41 through. But open claw is this thing that you can set up and you just give it access to your email,
26:46 your calendar, your credit card, everything. And it can just, you could just send it jobs and it'll
26:50 just go crazy sometimes in really, really bad ways. But it is kind of supposed to be this thing that
26:55 just runs and does a bunch of agentic stuff without your work. Right. So you've heard that AI means that
27:01 SaaS, like hosted software created by other people that you subscribe to, SaaS is dead. So here's,
27:07 here's this quote or this message from Johan that says, SaaS is dead. Open claw replaced all my
27:14 subscriptions. Went from $480 a month on tools to $1,245 a month on API costs plus 15 hours a week
27:22 fixing my YAML files. Adapt or be left behind losers. That's so awesome. It's so much of the
27:31 zeitgeist, isn't it? Yeah. It's got 2000 upvotes as well on Reddit, but the comments are good.
27:36 Okay. Solid math, solid work. If I, if I were you, I would spend the next 200 hours crafting a
27:42 premium info product that sells this magic method you've unearthed. Someone says, I must admit,
27:48 it's kind of funny, but it doesn't say they misspelled. It says, I must admin. It's kind
27:54 of funny. And it says, please update the YAML file. So you don't misspell, misspell admin again.
27:58 Oh, that's good. And then there's a really good one. Let me see if I can find it.
28:04 This person over here says, SaaS is hardly dead. Kind of foolish to think every business will try
28:10 to roll their own suddenly to find out and find that you don't have the skill to fully conceptualize,
28:14 blah, blah, blah, blah, blah, blah, blah. Then somebody's, somebody says nude irony, huh?
28:20 Yeah. Cause they just took it literally like, Oh my God, I can't believe he's trying to adopt this.
28:27 This is not going to work.
28:30 Yeah. That's funny.
28:31 All right. Let's leave it there. New to, new to irony, huh?
28:34 Yeah.
28:36 The opposites are frankly.
28:37 Yeah. Anyway, that's really funny. I'm, I definitely think that's a good choice.
28:41 Just spend all your time fixing the claw bot.
28:45 All right.
28:45 And I went from a 540 to like over a thousand API costs. That's hilarious.
28:51 Exactly. Exactly. I don't know about you, but I've got three broken agents over there.
28:55 So I got to get going. I'll talk to you later.
28:57 All right. Bye.
28:57 All right. Bye.



