Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

#472: Monorepos

Published Mon, Mar 9, 2026, recorded Mon, Mar 9, 2026
Watch this episode on YouTube
Play on YouTube
Watch the live stream replay

About the show

Sponsored by us! Support our work through:

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:

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.


Want to go deeper? Check our projects