Python Bytes - #471 The ORM pattern of 2026?

Episode Date: March 2, 2026

Topics covered in this episode: Raw+DC: The ORM pattern of 2026? pytest-check releases Dataclass Wizard SQLiteo - “native macOS SQLite browser built for normal people” Extras Joke Watch on You...Tube 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. Michael #1: Raw+DC: The ORM pattern of 2026? ORMs/ODMs provide great support and abstractions for developers They are not the native language of agentic AI Raw queries are trained 100x+ more than standard ORMs Using raw queries at the data access optimizes for AI coding Returning some sort of object mapped to the data optimizes for type safety and devs Brian #2: pytest-check releases 3 merged pull requests 8 closed issues at one point got to 0 PR’s and 1 enhancement request Now back to 2 issues and 1 PR, but activity means it’s still alive and being used. so cool Check out changelog for all mods A lot of changes around supporting mypy I’ve decided to NOT have the examples be fully --strict as I find it reduces readability See tox.ini for explanation But src is --strict clean now, so user tests can be --strict clean. Michael #3: Dataclass Wizard Simple, elegant wizarding tools for Python’s dataclasses. Features 🚀 Fast — code-generated loaders and dumpers 🪶 Lightweight — pure Python, minimal dependencies 🧠 Typed — powered by Python type hints 🧙 Flexible — JSON, YAML, TOML, and environment variables 🧪 Reliable — battle-tested with extensive test coverage No Inheritance Needed Brian #4: SQLiteo - “native macOS SQLite browser built for normal people” Adam Hill This is a fun tool, built by someone I trust. That trust part is something I’m thinking about a lot in these days of dev+agent built tools Some notes on my thoughts when evaluating I know mac rules around installing .dmg files not from the apple store are picky. And I like that But I’m ok with the override when something comes from a dev I trust The contributors are all Adam I’m still not sure how I feel about letting agents do commits in repos There’s “AGENTS” folder and markdown files in the project for agents, so Ad Extras Michael: PyTV Python Unplugged This Week IBM Crashes 11% in 4 Hours - $24 Billion Wiped Out After Anthropic's Claude Code Threatens the Entire COBOL Consulting Industry Loving my 40” ultrawide monitor more every day Updatest for updating all the mac things Ice has Thawed out (mac menubar app) Joke: House is read-only!

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 471, recorded March 2nd, 2026. It just still sounds weird. And I am Brian Akin. I am Michael Kennedy. And this episode is sponsored by all of you guys and us. So everybody that helps send some money our way through taking a course at Talk Python Training or a Pytest course at PythonTest.com. or reads one of our books or also Patreon supporters.
Starting point is 00:00:34 Thank you, Patreon supporters. If you would like to send out, we get a lot of, we do a lot of research ourselves, but we also get a lot of tips from other people. So if you'd like to have feedback, if you disagree with something or want to add to the conversation, go ahead and connect with us on Blue Sky, Mastodon. I think that's it.
Starting point is 00:00:54 Or just at Pythonbytes.fm, there's a contact form there. You can also subscribe to the, actually one of the best ways is you can go over to pythonbytes.fm and subscribe to the email list. And when you get an email, then you'll know our email address and then you can just send us stuff through there. That gets to us. Also, if you'd like to join the show live, that's fun. Go ahead over to pythonbites.fm slash live and you can find out how to watch the show live. With that, let's kick it off with the first topic, Michael.
Starting point is 00:01:28 Let's do it. So this first topic is an article that I wrote, more of a design pattern that I would like to advocate for. Okay. Now, you see, Brian, I have this friend, his name is Claude. He's really good at writing code, but he gets super distracted. Cloud code. So I've been thinking a lot about what does agentic programming and people leveraging these tools mean for like design patterns and architecture. I'm a big fan of thinking about architecture and so on. So I wrote this up. It got super popular on Reddit and I thought I would share it here as well. You know, and popular in the sense that lots of comments, lots of upboats, but also a lot of like mean comments because it's Reddit. So that's how it goes. But good comments too. First of, I want to put this out as a disclaimer.
Starting point is 00:02:16 As you think about this, don't try to adjudicate whether or not people should be using AI for coding. Don't try to adjudicate whether AI coding should exist, whether it is bad or good. It exists. People are using it. If that's true, what should we do as an industry? How should we move forward? How should we think about this, right?
Starting point is 00:02:37 Are there things that would make that better or worse? You yourself can decide you're not using it. But as an industry, I think it's pretty clear that it's being highly adopted. So that's kind of the goal that I had when I wrote this article. Yeah. And so the title is Raw Plus DC. as in raw database queries and DC is in data classes. And the subtitle is the ORM pattern of 2026 question mark.
Starting point is 00:03:02 And I'm putting that out there because I think this is a pattern that is much, much more aligned to way AI coding works. Why do people like ORMs? And technically for this, I used what's called an ODM and object document mapper because I was using the example I extracted it from was written against MongoDB. But whatever, like it's immaterial, whether it's Mongo or Post. or SQLite. People, developers love ORMs and ODMs because they provide type safety, especially with
Starting point is 00:03:31 document databases. They constrain what can and cannot go into the database, right? You've got to match the class and then the class goes into the database. You don't just stick dictionaries in there, which is otherwise the case. They prevent SQL injection or Mongo query injection because they always, by the way, they work, use parameterized queries. They're a nice abstraction. Also, for developers, they provide really good IDE auto completion.
Starting point is 00:03:57 So I have a function. I give it a type, or even the type is just discovered through type inference, that it returns this class. When I get one back and I say, thing from the database, dot, it gives me a list of all the stuff I can do in the database. All these things are awesome, right? Yeah. But here's the thing.
Starting point is 00:04:12 I ran to this literally this morning working on this project that I've not yet released, but we'll talk about pretty soon. These AI tools are trained so much more on raw queries than they are on any particular ORM. So, for example, I was using Beanie on this project. Beanie is downloaded 1.4 million times a month, which actually is really impressive. So Beanie is the ODM for talking to MongoDB. The underlying library that lets you talk in the native query syntax is downloaded 74 million times per month. That's 53 times more.
Starting point is 00:04:45 And there's other libraries we're talking directly to Mongo as well, right? So there's like 50, 75 times more bits of code out there that are actually just talking directly to the database than using this particular ORM. Okay. And that's true for SQL as well. Like for just sticking with Mongo, right, Pi Mongo is the Python version of this. But there's also people doing the native query syntax in Node, Deno, Bun, Php, dotnet, whatever, right? Like all these other languages. So if you actually do that sort of cross product, it's probably a thousand times more that AIs see raw database queries than they see any particular ORM, even if that ORM is popular, right?
Starting point is 00:05:27 Because it's for a technology and then it's sliced down into who uses that ORM rather than across all programming. The other thing is, I don't know. What about? Yeah. So these ORMs go unmaintained. I mean, Django ORM probably won't go unmaintained. But they come and they go and sort of their popularity. So for example, Beanie, it had only like three releases in the entire year of 2025.
Starting point is 00:05:51 Its last release was four months ago to close some minor issue. And it's got a bunch, like almost 100 open issues. Even though it's downloaded over a million times a month, it's kind of gone unmaintained. And before that I was using Mongo Engine, which was way more unmaintained than Beanie. Like Beanie was the exciting new one, right? And so what do I have to do if this changes? If I decide that it's too unmaintained, I have to completely rewrite it in a different. ORM. But if it was written in a regular, just straight query syntax, that doesn't change, right?
Starting point is 00:06:17 That's been identical for SQL since the databases came out, identical for Mongo, since Mongo came out, I mean they add to it a little bit, right? Like if they add a feature or something, but generally, it's going to be the same. So I don't have to worry about that. These things are going on to sing. Go ahead. I want to interject a little bit. Throughout Django, I was going to comment that Jango might be an outlier there in that a lot of, I know there are people that use UR.S. other ORMs or raw SQL with Django. But I think it's probably a lion's share of the Django users
Starting point is 00:06:50 that use the Django ORM. And I don't think that's going away anytime soon. I totally 100% agree with you. But what if you decide you want to change your project to a different web framework? Well, I would probably say the same argument is that you could probably switch to this raw SQL plus data classes from Django.
Starting point is 00:07:13 the Django worm because I there's a ton of Django stuff out there. I'm pretty sure that the models are trained on lots of Django. Yeah, they're pretty well trained. So this, this maintained argument is not go for everything, but it definitely, it's definitely another angle, right? Yeah. And also, I think that you probably touched on this already, but just one less dependency is one less thing you have to keep up on. Yes, absolutely. It's one, one for your, and it's not usually just one dependency, right? It's like, this thing depends. on four others, which depend on three, and now there's a CVE and one of them, you're like, ah, man. Okay, so let's, but, but there's reasons people who like these ORMs. I'm a huge
Starting point is 00:07:53 fan of ORMs because they give you back classes that are great. So my proposed way of working is create a nice data access layer, put functions in there that are very clear like create user, update password, whatever, and then inside let, let it be raw queries, let Claude write however Claude wants. But when stuff comes out of there, it has to return some kind of class. So I propose data classes. Okay. And I think data classes are pretty interesting here. For a couple of reasons. One, they're typed, right? They look like, you can tell them use slots. That's good for memory and performance. They're typed just like if used Piedantic or if you use any ORM generally. So that's really good. They're also built into no dependencies, as you point out. And they're
Starting point is 00:08:37 very, very lightweight, which is great. Now, they have types. safety in the terms of like type checking type safety. But they don't have runtime type safety, like say PIDANIC, right? Yeah. So if you want, another very reasonable option would be to do a Pydantic plus raw data, raw queries. I didn't use PIDANIC because this means every query that comes
Starting point is 00:08:57 back from the database gets validated. And there's a whole bunch of machinery that runs when you're reading from the database. But if the data in the database is wrong, it's already too late. Doesn't matter if your classes, it's too bad. It's like, no, it's saved. It's too bad.
Starting point is 00:09:10 It's too late. And so maybe on the outside layer, you could use Pidandic, but in the data access layer, you could use something lighter. That was my, that's my take. When I posted this on Reddit, people probably like 50 times like, well, why aren't you just using Pynandig? Like, well, Panic is great. It doesn't have to be used for everything.
Starting point is 00:09:25 So anyway, I'm going to follow up with one more thing that's pretty cool around that. But yeah, so if you look at performance really quick here as well, I did a nice graph of a bunch of different things, what's like a thousand reads look like? What does a thousand writes and so on? And this graph is based on doing just raw queries without any class component, because that's really the foundational. Like they all have to do that, right? So how much overhead does each style add? And it's not exactly perfect because this raw data class style can't be faster than writing itself.
Starting point is 00:10:00 In a lot of places, it's literally the same code. So it's just like fluctuations in the machine. But if you look at, say, Beanie, which is based on Pyndenic. So there's more or less just Piedantic. What would Piedantic look like in this model? It's a lot of times pretty close, but sometimes it's like five times slower. If you look at Mongo Engine, which is another one, 15 times slower, 10 times slower, it's a big difference. It's quite a big difference.
Starting point is 00:10:24 So this style is actually almost native speed. There's just a few times where like the serialization maybe doubles the time to read, say, a thousand or 100 orders or something like that. But barely. Anyway, I think it's pretty interesting. What do you think? Yeah, I think that one of the things, one of the reasons to go with an ORM was speed of development because a lot of people don't know SQL queries that well.
Starting point is 00:10:49 But their SQL queries is a good SQL query is not that hard to, well, they can be. But generally, they can be easy. They can be decent to read, trying to figure out how to write it might be tricky. So that's where I think your argument of around using AI agents and stuff. to help with this, they're going to know how to write a decent one. And you can probably, even if it's ugly, you might be able to say, can you like clean that up so it's easier to read? Yeah, or explain it to me.
Starting point is 00:11:18 Yeah. But anyway, I think it's valid. It's definitely valid. I think it's more valid now than it has been in the last couple decades. So, yeah. Yeah. Just this morning, I asked Claude to do this thing with Beanie. I said, oh, it would be way better if I just use a projection.
Starting point is 00:11:35 And for projections in Beanie, you have to. to create a subclass and use a different class and then use that. And it's like, oh, I could just use dictionaries. Then it crashed. Oh, I don't think I can do that. Let me try the aggregation pipeline through Beanie and that didn't work. I'm just like, could you just do it directly? And it's like, oh, yeah, that works.
Starting point is 00:11:51 It's just, you know, it's kind of a little bit clunky. One other thing that was really popular in the conversation about this article was what Kiva Burb is asking is, what about migrations? Not relevant to ODMs, but certainly relevant to ORMs. You do what everyone else does if you write straight SQL. write your migrations yourself. But the thing is, like my assumption is this pattern is most adapted to agentic coding. If you're just doing raw straight coding yourself, stick with ORMs. That'll handle it. But if you're doing a genetic, like, Claude code can write a heck of an migration. It doesn't care. It's going to be great at that. Yeah. I guess I've just sort
Starting point is 00:12:25 of leaned on migrations a lot. And I actually don't really know what they do under the hood. Yeah, I mean, what are migrations? They are basically, they are a statically, generated, like pre-generated SQL script that says, add this field, change this field, change this type, copy these things. It's a set of SQL steps for transforming the schema of the database. And typically the way migrations work
Starting point is 00:12:50 is it looks at the old version of the class and the new version in the class and goes, what do I got to do to write the SQL to make one go from one to the other? You can just ask Cloud to do that. I also really like that you're the comment about have a data access layer, because I think that that's a good idea.
Starting point is 00:13:06 even if you are using an ORM. Yeah, thanks. All right, well, that is plenty on that. I mean, you should definitely test your code if you're going to take on this way of programming. Yeah, nice transition. I've been spending some time in the last week, cleaning up, giving some love to PITES check.
Starting point is 00:13:24 So PITES check is a little plug-in. I wrote a really long time ago, many, many years ago. But I had the last, what, the last release before recently was in November, I think. So, yeah, October, November, something like that. So I've decided to spend some time getting it back up to date. And I did, I like all that, the stuff on GitHub, the, the activity, pulse activities thing. So there's been three merged poll requests.
Starting point is 00:13:56 Sorry to everybody for taking so long, but it was only, I guess I only annoyed three people. And there is, yeah, I closed a bunch of issues, eight closed issues. Now, I did get to the point where I had only one enhancement request and no actual issues and no pull requests. That, you know, that doesn't, that doesn't last very long for projects that are being used. And I hadn't checked the little stats thing recently. And it's used by almost 1.3-ish thousand projects. That's fun. Anyway, I just wanted to bring it up that that's,
Starting point is 00:14:35 That's still in a live project, and I'm going to keep it up. I'm still having fun with it. I still use it every day. So that's one of the reasons. The changes, there's been a, there's not a lot of extra features. There was a support for raises parameter in the, when you're doing X fail. That works now, which that's really kind of a bug fix, but it was an extra feature. So that was a pull request, so thank you.
Starting point is 00:15:03 But a lot of, some documentation. things that, and I've been noticing this at work too, if you have a new feature and you don't document it, it's like invisible work. Why did you do that work? So I added some documentation to things. But a lot of it was around my pie, because a lot of people are using my type checkers and using pie test.
Starting point is 00:15:23 Check. So I updated a lot of stuff, but I have a, I guess I've got a question or kind of an open thing. I was going to try to make it like strict compatible, but I don't think I like it. So with strict compatible, you have to do things like return none and have a lot of extra decorations.
Starting point is 00:15:46 It's a test. We know that Pytest tests return none. They have to. I think this is overkill most of the time. So for most of, I think it's cleaner just to not show that. These are supposed to be examples of how to use it, how to use a tool.
Starting point is 00:16:02 I think it's fine. to not have a lot of that stuff. So I still do type checking on the examples, but I'm not doing strict. So anyway, that's my two cents on that, I guess. I think it's fine to not have type safe or type clean types, clean, strict type checking results on example code. I think it can be too much.
Starting point is 00:16:25 I think it has certainly a value, but there's plenty of times where it's just too much. And these type checkers can definitely get out of control. Like I had something similar with Flask or I had a Flask view method and the I had a custom decorator and the custom decorator didn't declare its types in a way that it was identical to this really complicated, you know, app at app dot get sort of signature. And I got these huge crazy warnings saying this function has a mismatch on the signature. I'm like, it's called by Flask. No one calls this function. I don't care about expressing what its signature.
Starting point is 00:16:58 It works fine. Just leave it alone. You know what I mean? Yeah. And it can go way too far. There's some things that I need to, also things I need to look at, because like for an example, for a test, doing something like assert 1 equals 2 makes sense. You know that's going to fail. That's a great example, I think. But like the my pipe says that that's an error. And because what, int constants aren't comparable? I can't remember the error, but it's weird. Yeah. Interesting. Yeah, it can be over.
Starting point is 00:17:30 That last one or two percent is just, it's folly. That's what I say. So anyway, thanks to everybody. And yeah, if you don't, this isn't a dead project. So yeah. Yeah, it looks awesome. And over a thousand projects using that's pretty good. Yeah, and some of those have lots of stars.
Starting point is 00:17:49 Nice. Transitive stars are piling up. Feel it. Anyway, okay. What you got next? What I got next is I want to talk about what something I learned through that whole discussion around that raw plus DC design pattern that I talked about. Somebody somebody said, look, you are so close, but where's your validation? I'm like, you know what?
Starting point is 00:18:11 I'm not really sure I need runtime validation when I'm reading from the database. Maybe writing to it. Maybe. But anyway, I learned about a couple of really cool tools that you can use. So for data classes, there's this thing called the data class wizard. Ooh, a wizard has a cool wizard hat. It's simple, elegant wizarding tools for Python's data classes. So this is actually a super neat project here.
Starting point is 00:18:32 So and fun docs, behold, the power of data class wizard. So what you can do, there's different ways you can use it. You can use it through what are called mix-ins, which are like they add some functionality, you know, through inheritance. Some, you know, maybe like a from JSON function, something like that. But also, um, lets you specify other interesting things. Like, I didn't even know you could do this in the class definition, but basically pass configuration values to a class, the class constructor for the type, I guess. Anyway, uh, you can say, hey, I have a regular data class, but in fact, I would like it to
Starting point is 00:19:09 be unconcerned with the case of the inbound data. So somebody, this isn't say C sharp and they write Pascal case things, right, like lowercase, then uppercase second bit or you know camel case type of things like we do for classes for their fields but I want to express them as you know snake case is active tupa with underscores and not capital a capital t sort of thing you can just say oh that doesn't matter and if I ever dump it out put it back out in camel case because that's what the people who are working with this API want so this data class wizard is like a it's like data classes but it has that type of functionality to it right cool which is super cool because my example
Starting point is 00:19:49 I said, oh, you just got to write a from JSON function that like turns it into. They're like, why would you write that? You could use the wizard. Like, because I didn't know about the wizard. Tell me about this thing. But there's other ways to use it as well. You can have just a regular data class and mix in the JSON wizard mix in. So then you get to and from JSON, kind of like I just described.
Starting point is 00:20:08 This is super cool. You can have a, an ENV wizard. So I can then have a data class that derives from ENV wizard. And then it reads, as you just instantiated, it reads from the environment variable. That's neat, right? Yeah. So you just have a config file and has all these variables and you just say, guess what?
Starting point is 00:20:25 Those come out of my environment or doctor variables or whatever. And yeah, pretty neat. They've got the JSON wizard, the list wizard, because sometimes you get a set of JSON and it starts as a list instead of curly braces and then it's hard to parse.
Starting point is 00:20:41 So files, Toml and YAML. You can also get ones that'll read and write Toml and YAML. Data classes are basically naturally know that type. And if you just keep going, it says you don't have to use inheritance either. You can just create standard data classes, even hierarchical data classes like here as an A class, which has a list of B types. And those are also data classes. And then you can just use the
Starting point is 00:21:06 from dict from data class wizard. Say it's this type and here's the dictionary and then boom. It's like a little factory method sort of thing. Oh, that's especially great if the classes come from somebody else. Exactly. And it also does really interesting parsing. I can't remember where it is in their documentation, but it does coercion of types. I don't know exactly how they refer to it there. But if I've got, say, I have a list of integers like Pidantic. It does or at least used to do. Like one and then the quote two is the second entry. And it knows it's supposed to be an end. It'll turn that into an end and stuff. So it kind of brings a lot of what Pydantic offers to data classes, but only when you want them. Cool. You're like in this place, I want to parse it and validate it, but not other times. You know what I mean? Stuff like that. So anyway, I present to you the data class wizard.
Starting point is 00:21:54 It's pretty cool. Yeah. And hopefully it stays maintained. Okay, that's a good question. Let's go to the GitHub. It says 3.14, I think, tested at least. Yeah, okay. Two months ago, it had an update.
Starting point is 00:22:07 It only has two open pull requests, so that's pretty good. It doesn't have 200. Yeah, anyway. Yeah, pretty neat. I'm liking. I haven't really had a chance to use it because I just learned about it, but I like the idea of it a lot. Yeah, that looks fun. I have got another project that is in a similar boat that I haven't. I haven't really traded that much. I downloaded it and installed it. And what it is is SQL Liteo, SQL Liteo. SQL Liteo. I think it's got to be SQL IDio. That's the fun of synunciation. SQL IDO. So this is a new little toy from Adam Hill.
Starting point is 00:22:46 And I noticed, I can't remember where I think I saw a social media post on it or something. Anyway, it's a macOS SQLite browser built for normal people, apparently. So, but it looks good. It looks in with the little, all the emojis, I'm thinking, wow, I think he used maybe some agents to help build it. And that's kind of what I want to talk about. But I do like, it does look good. The, oops, air loading page. I don't know.
Starting point is 00:23:16 I can't look at the overview pictures that much more. But it looks like a very nice interface to, you know, look at your SQLite databases on Mac. So that's cool. So why am I bringing this up? I'm bringing it up kind of because there was a caveat with installing it. And it said, it's a, it's, you guys, download the DMG and then you drag that to your app folder or just double click it and then you start querying. But there is it's not verified. So it's not through the app store. It doesn't have a developer certificate yet. So why why am I okay with like trying this out? Well, I think it trust is a big thing. I trust Adam Hill. I've seen a lot of his work. I've seen him comment on stuff. He works on open source projects. And so there's some inherent trust there.
Starting point is 00:24:10 If you don't know who Adam Hill is, you don't have that, of course. But there's other things I was looking at. So I was looking at the source code a little bit. And he's openly saying there's agents there. There's an agent's file or something talking about. Yeah, interesting. It looks like it's built with Gemini. Because there's not a clod.md.md, but there's a Gemini.md.
Starting point is 00:24:33 Yeah, and that's just pointing to his agent at MD file. And then there's, there's like some other stuff on, like there's a directory with some to-do list ideas and stuff. And I think, I think just being like not hiding it, I think is good. And also another thing I checked out is the contributor because there's, I don't, so all the contributors are him. So I, I'm thinking that even if like there's a bunch of code written by agents, he's at least looking at it enough. And I don't know. I'm still on the fence. I don't know how I feel about people giving agents control of commits on a project or not.
Starting point is 00:25:14 I'm not here for it. I'm not here for it. You're not? No. But like what I would, if I would was, what would I be okay with having somebody do the stuff and then commit themselves? Because you would assume that they're looking at it. But what if you just do that on a branch? If you had the agent working on a branch commit and stuff, you could always just throw it away.
Starting point is 00:25:36 And if you're happy with it, you can merge it. I don't know how it's different. Yeah, I hear you. I certainly the branch makes it better, a feature branch or something, exploration branch. But it would still show up as a contributor in the history. So that's, I guess that's where I'm going with that. Yeah, by default, if you ask Claude to create a GitHub message, it'll put, like a co-contributor. at Claude.
Starting point is 00:26:00 Yeah. So I still, I'm not, I'm still not sure how I feel about all that, but, but I do, there's, there's other things. So I'm thinking, I trust the developer. I trust that I look at the contributor list and I look at some of the commits. What else am I looking at? I'm looking to make sure that there's tests, even though I can't read a Swift test very well. I don't know.
Starting point is 00:26:22 I mean, there's at least some testing going on. So, yeah. So that, I guess that's where I'm, I'm at. with some of these things. And I bring this up partly because I review a lot of projects, you know, for this, for this podcast, looking at projects. And if it looks like there are signs like a bunch of emojis, that's not necessarily bad, but it's a sign that somebody had agents help them with it.
Starting point is 00:26:46 And actually, a lot of people are really bad at writing readmees. So I'm okay with people having help writing readmees. But I'm looking for tests. I'm looking for the contributor things. I'm looking for a lot of stuff. And trusting the developers are big things still, I think. Yeah, 100%. With that command book, my app for managing long-running terminal like commands,
Starting point is 00:27:10 I had to go through the same thing, had to get it digitally signed. Both the app bundle itself is digitally signed, and then you have to go through a separate process to digitally sign the DMG as well, which is an utter pain for sure. So it is a hassle. But if you have an Apple developer account, it's not too bad. It's way less bad than iOS and App Store review and those kinds of things. It's just running it through like a series of tools.
Starting point is 00:27:34 So if Adam Hill, if you're out there listening, you want a quick bit of help, happy to help you get over that last hump there. Okay. Cool. It does say yet, so I think he's planning on it. I know. It's just, it's brutal. But here's another thing.
Starting point is 00:27:47 I ask, I ask, Claude, I'm all right, Claude, you got to help me. I'm lost here. I do not know how to notarize this thing. It's what it's called. And like, do I have to notarize the DMG as well? And how do I pack it? And I'm like, okay, here's a big long list of steps I got to set up. And I got like, it was pretty helpful, actually.
Starting point is 00:28:04 And that another thing, I guess a little bit of a tangent or right away from the trust thing, I think this seems like a tool that Adam wanted. And because of agents, he found time in his schedule to build it. And we wouldn't, without it, we probably wouldn't have this tool as something we can look at. Now trying to get people to stay maintaining projects that they can open source in a few hours over the time is a different story. But anyway, I guess enough on that. I guess.
Starting point is 00:28:35 I do think we're entering an entirely different era of highly personalized software. I made this for me because I could do it in an hour and exactly it solves my problem. Maybe it's interested in you, but it's not built to be general. It's built for me. Yeah. Yeah, there's going to be some of that. But why open source it at that point? Yeah.
Starting point is 00:28:53 Anyway. Well, that would be extra work, wouldn't it? Yeah, do we have any extras? I do. Do you got any while your screens up? Yeah, sure. I'll do. And it's all on the same sort of topic.
Starting point is 00:29:03 So an article on htmx.org blog called Yes and from Carson Gross. This says, I teach computer science at Montana University, Montana State University, and father of three sons. And he gets the question, given AI, should I still consider being a computer programmer or I would translate that into is a CS degree still worth it. And his response is yes and. And I do, it's a great article. I enjoy reading it.
Starting point is 00:29:36 The top level thing is programming is fundamentally problem solving using computers and learning to control complexity while solving these problems. I would say that that's computer science. But that's and then a bunch of other stuff. I think it's experience helps even and background knowledge helps even if you're using AI to help. Then that's the same kind of a similar sentiment over on Simon Willisons blog, hoard the things you know how to do. One of his recommendations here is a big part of a big part of the skill building software is understanding what is possible and what isn't and having at least a rough idea of how those things can be accomplished.
Starting point is 00:30:19 And this helps with directing agents. you wouldn't ask it to do things that you know is going to be a completely ridiculous. I mean, an agent might go off and do something dumb, but if you ask it to, you do have to have experience to know what dumb is and what it possible is, I guess. Yeah, I agree with Carson that yes and I think. Basically, the short version is I believe Jevin's paradox is real and that we're going to have more software rather than no software developers. And we need people to oversee and guide and make decisions and tradeoffs about that, right? It's very hard for AI to make proper tradeoffs. Like, yes, I know I could, yes, I know I could make this an app, but my company doesn't have a culture of putting apps out.
Starting point is 00:31:05 And we actually have this other back-in system. You know what I mean? There's just like all this information that it doesn't know. Or like in our industry, here's how we do this. And I don't know, there's just a bunch of stuff that humans can bring plus the ability to break it down into small. smaller problems and then give that to an AI, you're way more likely to be successful than just like, hey, guess what, I need a CRM, build that, I'll be back by lunch. Like, you're going to get some form of something, but it's, again, it's not highly personalized.
Starting point is 00:31:31 It's just super generic. And if that's all you want, just go get a CMS from like some SaaS and you're done. Yeah. I think one of the really interesting things is like, why do we build software at all? You know, there's this term software engineer, right? How well it applies, I don't know. But a lot of times, especially in the early days of like talking about architecture and engineering, it was all tied back to like, well, how do civil engineers do it?
Starting point is 00:31:50 And they have all these formalities of how they work. And maybe that should be brought into computer engineering and programming and software engineering and so on. There's a really big difference. Civil engineers built a bridge 50 times because there are 50 places the bridge need to be built. If you build a piece of software that solves the same problem once, like you just run it again.
Starting point is 00:32:11 You copy it and run it. You build new software because you're solving a problem that in some way has never been solved before. So there's a difference. There's like this, the part where it's never been solved before, that's where the human brings in the stuff to the AI and the AI goes, well, there's all these Lego blocks that we already know, like, all right, put those together, but for this.
Starting point is 00:32:28 I think that's what software engineering is going to become. Yeah, I mean, I think it has become that already. And electrical engineering has been that way for a long time. So yeah. I mean, already with like packages on Pi Pi and things like that, it's kind of like that, but like with AI, it's instead of, I need an off library so I can build a login page. like I make a login page now click that together with it you know it's just like another level up but that doesn't mean that people necessarily go away I hope not at least for another 20 years
Starting point is 00:32:56 yeah give it till Brian and I retire then I just kidding all I got some fun extras as well okay so first of all how would you like to unplug your python and get a bit of an MTV vibe but it's I love this yeah it's so fun so our friends at JetBrains and a bunch of our friends who are speaking at this conference, but are not necessarily edge up brains, are putting on a free online Python conference, the best Python straight to your living room. I feel like Max Headroom should kick off the keynote, honestly, don't you?
Starting point is 00:33:26 I love Max Headroom, yeah. I know I did too. But there's a bunch of great people speaking here. Carol Willing, Sarah Boyce, Marlene, Gina, Carlton, a lot of folks we know. And so, yeah, check this out. It's a free online conference. And is it this week?
Starting point is 00:33:43 When is it? Let me look. It must have a date, surely. I know. I think it is this week. Yeah, March 4th. So we're recording on March 2nd. That would be Wednesday. So everybody be on top of your listening to the show or miss out. Okay. So that's one. Quick shout out to that. Next is, is AI a fad and a bubble? Or is it an actual thing with real value that's going to change the world? Yes. So remember, we talked about the SaaSpocalypse where, like, some of the legal companies and other stuff where, like, their stock went way down. because Anthropic published 13 markdown files. Well, IBM, IBM, big blue stock crashes 11% because Anthropic released some kind of markdown file that helps convert Cobold. Because Anthropic threatens the Cobald Empire. I think there's a lot of interesting stuff here. I think Cobalt is a very interesting analogy
Starting point is 00:34:33 for pre-and-post-agentic written code. I can see in 20 years are like, that's some pre-AI code. We need some humans that know how to type still to come in here and look at this. I think there's going to be that kind of like, difference as we go on and so I don't know I just wanted to throw that out there as an interesting read for folks yeah the language stuff is is an interesting
Starting point is 00:34:52 thing with with with things like Anthropic around I am less scared of looking at code based code basis like Swift or Cobol I haven't looked at Cobol but but I wouldn't be afraid now it might be a hundred percent yeah so you need like 20 percent the capability you used to need to to get something done or to get like I don't understand this explain it to me like okay now it makes sense whereas before just like I don't understand it well especially if you're ready to test for it so you write it like maybe there's a bug in some cobal code and you say and you you're ready to test for it and you and now the agent you can kind of trust the agent to fix it you'll
Starting point is 00:35:27 do code review of course but yeah yeah okay quick update I'm absolutely in love with my 40 inch curved monitor that I told people about for I when I first got it I was little wigged out by how big and rappy around it is it took some getting used to but this like five 5K monitor that is so giant is absolutely perfect for all the type of work we do these days. Next up, update est, update est, not ist. I tried to search for it. Update ist, IST, no, it's EST. So here's a really cool macOS bit of software.
Starting point is 00:36:00 And what you do is you just install it and it looks for all different kinds of apps that are out of date on your system. It looks for auto updating apps. It looks for stuff from the app store. It looks at home brew. It looks at CLI tools, and it manages all of them. So you go, oh, look, this thing's actually that has been depending on. It's actually out of date. Let me push the button.
Starting point is 00:36:20 And super cool. It's got a really nice UI. It costs, it has money, but very little. It costs $13 once for your entire life. So anyway, it seems pretty fair to me. So very cool app. Also, Swift UI app, I believe, like Adam Hills. Wait, how do you update it, though?
Starting point is 00:36:36 Oh, my God. I believe it does auto update. Okay. If it doesn't, that would be deeply bad. I think it uses the same thing that CommandBook uses, which is called Sparkle, which is one of the most common ways you do it. And actually, it looks at all the Sparkle update feeds of all the apps installed on your system too, which is cool. Okay. People may have heard of Bartender, which is another Mac app that's cool, like compresses all the little widget thingies you got at the top.
Starting point is 00:36:58 On the right by the clock, I love all those things. So I go way overboard and I needed something to manage it, especially on small, like, recording screens. So I had Bartender. They got bought in like a sort of underhanded way. like they got sold but then nobody said they were sold for like months it was like they wouldn't announce anyway it was weird so a lot of people moved to open source stuff so there's a one called ice for the mac menu bar but it had its last updates like six months ago and it's clearly abandoned so you got ice well what if it gets stuck and frozen you got a thawed out so now there's a popular one called thaw
Starting point is 00:37:32 a fork of ice the menu bar manager so anyway here's a free open source menu bar manager for mac That's pretty cool following that weird chain of events over the last couple years. I don't even remember what I have. On this computer, I still have ice running because I haven't had a chance to update it. I just learned about this this week, but it's getting thawed. It's getting thawed out when I get done on this recording. Getting thawed. Yeah, I'll have something that minimizes it, but I can't remember what it is.
Starting point is 00:38:01 Yeah. Okay. Well, shall we make a joke? Yeah, something funny. I know you got kids. I have kids. Anyone out there who has kids, well, maybe roommates as well, but especially kids. Like, they're so messy. This joke will appreciate it. This is like a programmer take on that situation. And the title of the joke is, the house is read only. Okay? The house is read only.
Starting point is 00:38:25 So here's a woman named Kelly on X that posted. It says, I have cleaned the house. The house is now read only. Please do not edit the house. Yes. Yes. Kids, I just put the dishes in the dishwasher. Why is the seek full of dishes again? I just went up to the back to clean up the other stuff. I came back in and now it's messy again. I can't take it anymore. The house is read only.
Starting point is 00:38:49 It's so good. I need this for my mother-in-law. Yeah. If you don't pay the mortgage, you don't get to put holes in the walls. Just saying. Yeah, houses read only. Please do not edit the house. Nice.
Starting point is 00:39:03 That's funny. Yeah. It's been. crazy week outside of programming so I'm trying to concentrate a program escape to the well-known world of structured text let's go anyway it was a fun episode thanks everybody for showing up and we'll see y'all next week yeah thank you bye

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.