Brian Okken: Hello and welcome to Python Bytes,
Brian Okken: where we deliver Python news and headlines directly to your earbuds.
Brian Okken: This is episode 463, recorded December 22, 2025.
Brian Okken: I'm Brian Okken.
Brian Okken: And I am Michael Kennedy.
Brian Okken: And this episode is sponsored by us.
Brian Okken: So support us by heading over to Michael's courses,
Brian Okken: my courses, Talk Python Training or python test.com,
Brian Okken: or just go over and see what we got at the pythonbytes.fm.
Brian Okken: Let me add one more thing real quick there, Brian. Sorry to hijack your intro, but hey,
Michael Kennedy: we're coming up on 2026 and it's about time to be scheduling sponsors on the ad calendar for the
Michael Kennedy: next year. So if companies out there, if you're listening, you're like, why does my company not
Michael Kennedy: support Python Bytes and sponsor it? Yes, a fine question you should be taking up with your
Michael Kennedy: marketing team. Have them reach out to me. And right now there's a bunch of openings. We'll see
Michael Kennedy: if they get bought up or not as things go.
Michael Kennedy: But yeah, just send me an email.
Brian Okken: Yeah, actually, that'd be great.
Brian Okken: I'd love to have more sponsors on the show.
Brian Okken: If you want to reach us for sponsoring
Brian Okken: or any other ways,
Brian Okken: there's links on the show page, pythonbytes.fm.
Brian Okken: You can also find links to all of our socials.
Brian Okken: We're at Mastodon and Fosstodon,
Brian Okken: both us individually and the show.
Brian Okken: And also, if you'd like to watch us live,
Brian Okken: you can go to pythonbytes.com/live
Brian Okken: and see what it is and find the links.
Brian Okken: And then as well, while you're there,
Brian Okken: sign up for the mailing list
Brian Okken: so we can send you all the links we talk about
Brian Okken: directly to your inbox.
Brian Okken: Alrighty, oh, one more thing before we get started.
Brian Okken: We are taking, normally we record on Monday mornings
Brian Okken: and we are taking next week off
Brian Okken: and we will be back in 2026.
Michael Kennedy: All right. Kick us off, Michael.
Michael Kennedy: It's end of the year. As you said, we'll be back first week of January.
Michael Kennedy: But it's a little bit of an introspective end of the year is what I want to leave people with.
Michael Kennedy: So people may have noticed I usually cover tools, libraries, or updates to those kinds of things and so on.
Michael Kennedy: But on this episode, I want to cover two articles that I came across recently that I think they'll make you think.
Michael Kennedy: They'll make you really evaluate the situation.
Michael Kennedy: One has to do with agentic coding and one has to do with why open source won and continues to win.
Michael Kennedy: But more importantly, what is one of the really key ingredients?
Michael Kennedy: So as we look towards the future for more sustainability, let's not kill the golden goose by changing that thing.
Michael Kennedy: So the first one is, has the cost of building software just dropped 90 percent?
Michael Kennedy: That's a pretty stark headline, isn't it?
Michael Kennedy: Yeah.
Michael Kennedy: And what are the consequences? Right.
Michael Kennedy: Does that mean, does that mean like, well, you thought it was hard to get a job earlier as a junior and just hang on to your pants now?
Michael Kennedy: Or does it mean something else?
Michael Kennedy: We'll see.
Michael Kennedy: Well, at least we'll see what Martin Alderson said, because that's the article.
Michael Kennedy: He wrote this article and I think it is super insightful and interesting.
Michael Kennedy: So I kind of want to just pull out some highlights and put it out there for you all to think about as you got some downtime.
Michael Kennedy: So the premise is basically that many of the recent programming quote advancements that are like gonna change the world, gonna actually absolutely change the way things work, haven't really.
Michael Kennedy: For example, test-driven development, cloud computing, especially hyperscale clouds, microservices, complex front ends like React and so on, Angular, whatever.
Michael Kennedy: Kubernetes, sure, they're advancements and they help in some way or another for various things,
Michael Kennedy: but they're not bending the curve dramatically on how we write software, how much more we get done,
Michael Kennedy: and so on. Somewhat, but not massively. But they say, let me see if I can find it. Yeah, here we go.
Michael Kennedy: The economics have dramatically changed now with agentic coding. And I agree. I think it really
Michael Kennedy: has. And I know a lot of people are frustrated with AI or they don't want to use AI and so on.
Michael Kennedy: I'm not here to make people do that, but I am here to put on your radar that this is something you're going to have to be paying attention to.
Michael Kennedy: And Martin thinks so as well.
Michael Kennedy: Says in 2026 is going to catch a lot of people off guard.
Michael Kennedy: And I think so too.
Michael Kennedy: So it kind of goes through the history a little bit of like changes, how open source actually made a huge change, how cloud was supposed to make a big change, but it just added a crap ton of complexity.
Michael Kennedy: A lot of other things.
Michael Kennedy: So in a lot of just sort of how complexity has grown over time, instead of these things
Michael Kennedy: making us able to write more software or better software, a lot of times it's just handle
Michael Kennedy: more complex software or kind of doing the same thing.
Michael Kennedy: So where's the 90% savings come from?
Michael Kennedy: So he says, like you, probably I was incredibly skeptical of a lot of AI coding tools at the
Michael Kennedy: beginning of the year, but things are changing fast.
Michael Kennedy: And previously, if I want to, let's say I want to add some small capability to my app.
Michael Kennedy: How do you do it?
Michael Kennedy: Well, you're going to assemble a team of people.
Michael Kennedy: You're going to set up continuous integration.
Michael Kennedy: You're going to build out data access patterns,
Michael Kennedy: and you're going to plan that out in an architecture meeting.
Michael Kennedy: Really, it's just a bunch of crud, but people make a big deal out of it.
Michael Kennedy: So you're going to over-engineer it probably.
Michael Kennedy: And you're going to set up some testing and so on.
Michael Kennedy: And that's just direct labor, right?
Michael Kennedy: You've got all the management.
Michael Kennedy: And one of the things that's really interesting about this article
Michael Kennedy: is the mythical man month aspect of this.
Michael Kennedy: Like, okay, well, that's going to take two weeks.
Michael Kennedy: Well, what if we add four people to it?
Michael Kennedy: Well, it'll take one and a half weeks.
Michael Kennedy: Like, wait, why is that not half a week?
Michael Kennedy: You know, it's like the coordination, the communication,
Michael Kennedy: the in factorial ways in which there can be like blocking
Michael Kennedy: or communication or meetings or coordination and so on.
Michael Kennedy: And so these coding tools have got really, really good.
Michael Kennedy: And as you add one of these coding tools in,
Michael Kennedy: you don't have to have meetings with it.
Michael Kennedy: You don't have to have it working with three other ones of them
Michael Kennedy: so that it can coordinate different skill sets and so on.
Michael Kennedy: And so in a sense, it really lowers the number of connections in that mythical man month,
Michael Kennedy: but still adds a lot of capabilities.
Michael Kennedy: So pretty interesting.
Michael Kennedy: So final takeaway is like on the face of it, this seems like incredibly bad news for the
Michael Kennedy: software development industry.
Michael Kennedy: Indeed.
Michael Kennedy: But a look at history.
Michael Kennedy: Let's see.
Michael Kennedy: So Jevons paradox comes from back in the day when coal usage became super efficient, right?
Michael Kennedy: Instead of just burning it in an open pit or whatever to like heat something, we put it
Michael Kennedy: know the steam engines and it does way more work per you know joule of energy or whatever right
Michael Kennedy: it says look at least this guy martin thinks this applies jevon's paradox also is going to apply to
Michael Kennedy: software that when something becomes cheaper to produce it's not that we just use it less it's
Michael Kennedy: like well we've got five developers but now they're way more efficient so let's get rid of four of them
Michael Kennedy: that's one possible outcome the other is like let's just build five times as much software
Michael Kennedy: as we used to, right?
Michael Kennedy: And so an example is from history
Michael Kennedy: is when coal became way cheaper,
Michael Kennedy: its use skyrocketed,
Michael Kennedy: not cheaper, efficient, right?
Michael Kennedy: Like you didn't need to spend as much coal
Michael Kennedy: to get stuff done.
Michael Kennedy: But in fact, it actually blew up way, way more.
Michael Kennedy: So super interesting.
Michael Kennedy: And I think there's something to that.
Michael Kennedy: I think there's a ton of latent demand for software.
Michael Kennedy: So anyway, there's a whole section on that
Michael Kennedy: that's pretty interesting, I think.
Brian Okken: Yeah, I think there is a lot of,
Brian Okken: I've mixed emotions about this.
Brian Okken: I think there is a lot of light in demand.
Brian Okken: I am dealing with both agent-driven or agent-developed software on a professional basis,
Brian Okken: both from experts and from novices in a company.
Brian Okken: And it's producing five times as much code, but you get five times as much bad code from
Brian Okken: bad developers.
Brian Okken: I'm just saying, there is a, like, let's say we have five times the amount of code or five times the product, you know, do more things.
Brian Okken: That's 5xing your code base that you have to maintain in the future, too.
Brian Okken: And we really haven't figured out how to deal with the increased maintenance cost of this agent-driven software yet.
Brian Okken: Yeah, I agree with that.
Brian Okken: Also, the test-driven development, I think we didn't get the gains out of that because people were teaching it wrong.
Brian Okken: Just kind of a point from my book.
Michael Kennedy: Of course.
Michael Kennedy: But I think also there's a difference between full-on extreme programming and just, hey, let's make sure we have tests for our code.
Brian Okken: Yeah, there's also, should we test our code and should we unit test it?
Brian Okken: And that's the big part that I get.
Brian Okken: But also, can we scroll up to that complexity chart?
Brian Okken: or the little graph,
Brian Okken: I think that AI agents are going to not drive down complexity.
Brian Okken: I think we might get efficiency gains,
Brian Okken: but I don't think,
Brian Okken: I think we're going to get some,
Brian Okken: the complexity is going to go up just like it did with cloud.
Michael Kennedy: You know, what's really interesting about all this discussion,
Michael Kennedy: and I'm not disagreeing with you on this.
Michael Kennedy: I think it's,
Michael Kennedy: if people have the opinion that are just going to like cut,
Michael Kennedy: set these things loose on code bases,
Michael Kennedy: or especially on greenfield projects,
Michael Kennedy: you're going to end up with all sorts of mishmashes of stuff.
Michael Kennedy: Like, oh, this time it decided it wanted to react,
Michael Kennedy: but last time it used Vue.
Michael Kennedy: Like, now I have to know two frameworks.
Michael Kennedy: Like, why am I doing this, right?
Michael Kennedy: Yeah.
Michael Kennedy: There are a bunch of engineering practices and tools
Michael Kennedy: to apply to this stuff to get much more constrained,
Michael Kennedy: uniform output out of it than just letting it go free, right?
Michael Kennedy: And also, to Martin's defense, he says, like, look,
Michael Kennedy: this is not vibe coding.
Michael Kennedy: This is not just letting the thing go.
Michael Kennedy: This is, like, engineer plus...
Michael Kennedy: Working with it.
Michael Kennedy: these tools right like human in the loop all the way and even if we can get like your expert
Brian Okken: engineers at your company to work twice as fat like get twice as much productivity out of them
Brian Okken: and they're going to actually be happier because they're um it's like they've got a second brain
Brian Okken: working with them even 2x like is incredible to get incredible yeah to get your best engineers
Brian Okken: um to get to figure out stuff faster also um even not generating code but even just having stuff
Brian Okken: explain it to you. Like, how does this algorithm work? What should I care about?
Brian Okken: Asking it what tests you should write, asking it where the problem areas might be. Those are
Brian Okken: incredible things that we couldn't do before without trying to pull other people off of their
Michael Kennedy: own projects. So, yeah. Yeah, absolutely. So two more thoughts before we wrap this up quickly.
Michael Kennedy: One down at the bottom here talks about, hold on before I lose track of where I was. Yeah,
Michael Kennedy: Greenfield. Okay. So one objection is just not in a header sort of thing. One objection that I hear
Michael Kennedy: a lot is LLMs are only good at Greenfield projects. And you were kind of talking about that as well,
Michael Kennedy: Brian, but I actually strongly disagree with this based on my experience. And so does Martin,
Michael Kennedy: by the way. Yeah, I do too. So I think when you turn an agentic LLM loose on a Greenfield project,
Michael Kennedy: it just does whatever is popular on the internet that it's done, or it thinks it's trained on or
Michael Kennedy: whatever, when you turn it loose on a greenfield project, if you're careful and you set up the
Michael Kennedy: guidelines, it can follow the same patterns that are already established in the code and use the
Michael Kennedy: same libraries and use the same techniques. And I just used, I spent, I would say probably an hour
Michael Kennedy: coming up with a prompt to do a security review for some of my code, an hour before I started,
Michael Kennedy: even before I try that, working on exactly what I wanted it to do, how I wanted to do it,
Michael Kennedy: how I wanted to go about fixing it.
Michael Kennedy: And I got what looks like top tier security pen testing analysis on a code base.
Michael Kennedy: And I thought that is awesome.
Michael Kennedy: And that's because it was not a greenfield project.
Michael Kennedy: It was thousands and thousands of lines of code that had been around for a long time
Michael Kennedy: with established patterns of solving things.
Michael Kennedy: And it was very, very, very good.
Michael Kennedy: So yeah, I would like to put it on the world that that is when done right.
Michael Kennedy: That is not, I think greenfield projects are less good, not better.
Michael Kennedy: Yeah.
Michael Kennedy: Because they have nothing to go on.
Michael Kennedy: right they just go on whatever they feel like i haven't really done a lot of greenfield on
Brian Okken: stuff i think greenfield for for throwaway code or for just like uh like scripts that you it just has
Brian Okken: to get the job done sort of the internal thing i think those are fine but um oh gosh i had an
Brian Okken: incredible recent experience with just um getting stuck on an algorithm that was too slow and uh
Brian Okken: i spent an hour with an llm uh and an agent um trying to um get it faster and it was like an
Brian Okken: intense hour you know yeah exactly and then i just threw it in a branch and slept on it and
Brian Okken: came back the next day and made spent another hour trying to make sure i understood all of it
Brian Okken: and i and um and tweaking it more there were some non-pythonic things that i got rid of it had
Brian Okken: recursion in there and i'm like let's get rid of that and we actually made it faster than we did
Brian Okken: before so spending a like don't don't stop with it works go a little bit further to make sure that
Brian Okken: you can maintain it in the future it doesn't take that much extra time and you're going to still be
Brian Okken: proud of it and it was an incredible experience and i'm definitely going to do that again so yeah
Michael Kennedy: definitely should be partners like a like a super excited coding buddy not not just a junior you just
Brian Okken: send stuff to and make it go and then i but i also spent some time an hour recently or two
Brian Okken: reviewing some test code from a junior developer and i obviously this stuff was just spit out by a
Brian Okken: agent and um and it didn't make sense and i and so it just took time away for me to review bad code
Brian Okken: and that's going to take away from your experts as well so yeah yeah that's a very good
Brian Okken: Good point.
Brian Okken: It is indeed.
Brian Okken: All right.
Brian Okken: We should have a warning or something about that, Brian.
Brian Okken: A warning, yeah.
Brian Okken: So last episode, we talked about deprecation warnings.
Brian Okken: And I have to admit, I didn't do enough research on that.
Brian Okken: So I'm glad that listeners chimed in.
Brian Okken: We got a couple of listener feedbacks.
Brian Okken: One of them I'm going to credit because we got his email right up here.
Brian Okken: John Hagan mentioned you should totally use from warnings, import deprecated,
Brian Okken: And instead of calling your own, calling warn, use the decorator deprecating.
Brian Okken: And I totally, now after playing with it, totally agree.
Brian Okken: It's awesome.
Brian Okken: So let's back up a little bit.
Brian Okken: We started with this Seth Larson article about deprecations via warnings don't work for Python libraries.
Brian Okken: And I kind of agree after experimenting because I played with it a bit.
Brian Okken: And one of the things that I found out was in, so in the Python documentation, one of the things that's cool.
Brian Okken: somebody mentioned this and I didn't really know about it is development mode.
Brian Okken: So there's dash X dev and you can also set it with a Python dev mode environmental variable.
Brian Okken: And it sets a bunch of stuff, including setting the default warnings to W.
Brian Okken: And the reason why that's important, I'm like, why is that important?
Brian Okken: The reason is important in Seth alludes to it, but doesn't point it out directly,
Brian Okken: is in the dash WR argument for Python, you could say just ignore,
Brian Okken: like ignore all warnings.
Brian Okken: And I think it's just,
Brian Okken: you can either ignore all warnings
Brian Okken: or it even tells you, for example,
Brian Okken: to ignore all your deprecation warnings,
Brian Okken: do this.
Brian Okken: Ouch, I kind of wish they hadn't mentioned that.
Brian Okken: Don't encourage people, come on.
Brian Okken: Don't encourage people.
Brian Okken: Instead of ignore, somebody else,
Brian Okken: and then again, sorry for whoever mentioned this,
Brian Okken: but somebody mentioned just use once.
Brian Okken: Ignore, like dash W once makes any warning
Brian Okken: in your code show up once and not a whole bunch of times.
Brian Okken: And it's the whole bunch of times that I think people turn it off for because it fills up
Brian Okken: your CI logs and everything like that.
Brian Okken: But you really should see it at least once.
Brian Okken: I like the once.
Michael Kennedy: You know what else I like about once?
Michael Kennedy: The W once is the pronunciation is the same as just once.
Brian Okken: That's just once.
Brian Okken: Yeah.
Brian Okken: Okay.
Brian Okken: So I played with it.
Brian Okken: I looked at this deprecation warning thing.
Brian Okken: And we'll link to the documentation in Python as well.
Brian Okken: But you can do it, combine both solutions, which I love.
Brian Okken: So you can just go ahead and declare your own warning and use the deprecated.
Brian Okken: And so I tried this out.
Brian Okken: So what you do is you just say, create your own, just a class and derive it from user warning.
Brian Okken: And you don't have to import anything for this.
Brian Okken: This is just built in.
Brian Okken: It doesn't have to do anything, just a passing class.
Brian Okken: But then if you use this deprecated decorator and pass your new warning category as deprecated,
Brian Okken: and this sounds complicated on the air, it's not.
Brian Okken: We'll do a code example.
Brian Okken: But what you get is this, I had it, warning both.
Brian Okken: Oh, yeah, it's over just right on the same screenshot.
Brian Okken: The cool thing is that mypy and other type checkers, when you use the deprecated, will flag that it's a problem.
Brian Okken: And I was doing it.
Brian Okken: I think PyCharm does the same thing, but I was doing it in VS Code.
Brian Okken: And what happens if you've got this deprecated decorator is that the IDE will just cross it out.
Brian Okken: And they're like, why is this crossed out?
Brian Okken: And if you hover over it, it'll say, oh, this is deprecated.
Brian Okken: Yeah, it's like a strikethrough.
Michael Kennedy: It says, don't use it.
Michael Kennedy: I love it.
Brian Okken: Yeah, it's very visual and it will make you like look at it.
Brian Okken: So I think that instead of just calling more and yeah, please use the deprecated.
Brian Okken: And then I was playing with pytest as well.
Brian Okken: And what did we get?
Brian Okken: I wrote it down in the show notes.
Brian Okken: Yeah, you want to pass in the dash W just like you would for Python.
Brian Okken: If you do dash W error within pytest, at least in one of your tests to find out actually all of the tests.
Brian Okken: So that'll turn.
Brian Okken: Well, even by default, pytest will warn you and do the warnings.
Brian Okken: But if you're in CI, maybe you're not watching those.
Brian Okken: So in CI, having a check for those deprecation warnings with dash W error will flag all those failures.
Brian Okken: So anyway, lots of great information from readers.
Brian Okken: So thank you for listening.
Michael Kennedy: We got, if they read the newsletter you send, they could be readers.
Brian Okken: Yeah, they could be readers.
Michael Kennedy: John pointed out that you can set an environment variable,
Michael Kennedy: and people may be hesitant to just set an environment variable for their computer
Michael Kennedy: to turn Python into dev mode, which makes it slower potentially.
Michael Kennedy: But if you create a virtual environment, which you should be doing,
Michael Kennedy: there's an activation script in that virtual environment,
Michael Kennedy: And you can just go and export that environment variable
Michael Kennedy: set to debug or whatever mode you want to set it to.
Michael Kennedy: - Oh yeah.
Michael Kennedy: - Only when you activate that virtual environment.
Michael Kennedy: So if you're on a particular project,
Michael Kennedy: you're like this one really,
Michael Kennedy: I don't care about speed right now,
Michael Kennedy: I just care about getting things right.
Michael Kennedy: Tweak its virtual environment,
Michael Kennedy: that doesn't have really many knock on effects.
Michael Kennedy: So that's a cool hack I think.
Brian Okken: - Yeah, it's a great place to throw in
Brian Okken: temporary pytest flags as well or any runtime flags.
Brian Okken: - Exactly, it's not just about
Michael Kennedy: This dev thing, like it's like a little shell script basically.
Michael Kennedy: Yeah.
Michael Kennedy: Indeed.
Michael Kennedy: You could do it for open source things, Brian.
Michael Kennedy: I love open source.
Michael Kennedy: So, oh yeah.
Michael Kennedy: So here's another article.
Michael Kennedy: And this one is by Thomas Dupree called How Foss One and Why It Matters.
Michael Kennedy: This is a pretty interesting article.
Michael Kennedy: And what it looks at open source, free and open source software angle from is not just
Michael Kennedy: why do people like writing open source software?
Michael Kennedy: Why do they like it better than having locked away software or having to pay or having bugs you can't fix or black box security issues potentially?
Michael Kennedy: As we've seen lately, open source has its whole supply chain story on that.
Michael Kennedy: That's different in a different way.
Michael Kennedy: But anyway, it really looks at it from why has it won from a company perspective, especially large companies.
Michael Kennedy: Okay.
Brian Okken: Okay.
Michael Kennedy: So it's really interesting.
Michael Kennedy: So it says like, look, why did it win?
Michael Kennedy: Well, people want to pay less.
Michael Kennedy: So paying less, aka free software, that's great, right?
Michael Kennedy: Well, how do companies make more money?
Michael Kennedy: They either make more profit or they have fewer expenses for a fixed level of profit.
Michael Kennedy: So not paying for software is great.
Michael Kennedy: But that's not just open source software.
Michael Kennedy: That's for everything.
Michael Kennedy: And so companies implement what's called cost control.
Michael Kennedy: So business term for making buying things painful, hard, and time consuming as possible.
Michael Kennedy: So employees will either not or hate doing it.
Michael Kennedy: All right.
Michael Kennedy: So an example is like, hey, I need a cool date picker for our site that imagine open source doesn't exist.
Michael Kennedy: Well, someone's going to have to start by creating a ticket to get this date picker.
Michael Kennedy: And then, well, we have to research the various commercial options.
Michael Kennedy: We could go to procurement and have them find it.
Michael Kennedy: But what do they know about date pickers?
Michael Kennedy: So we're going to do that ourself.
Michael Kennedy: We're going to get a report.
Michael Kennedy: We're going to bring it to procurement.
Michael Kennedy: And when we get there, then procurement says, okay, great.
Michael Kennedy: You're going to go with this company? Fine.
Michael Kennedy: So what we're going to do is first we're going to need to set up a vendor agreement with them
Michael Kennedy: because it turns out they're not currently a vendor of ours.
Michael Kennedy: So we have contracts, we have reviews, we have negotiations, all for a stupid date picker, right?
Michael Kennedy: It's just like, what is going on?
Michael Kennedy: And then on top of it, there's all these copyright laws like indemnification of like,
Michael Kennedy: you prove you haven't stolen from another company then to resell this to me in like some other way
Michael Kennedy: of that stuff, it's like eventually you get permission to buy the thing and then you could
Michael Kennedy: start using it. So open source software enters the scene. It says this comes with a pre-agreed,
Michael Kennedy: pre-reviewed license, MIT, Apache, whatever. And so the lawyers are already like, yep,
Michael Kennedy: we know what that is. We know how to deal with that. There's no pain. So there's no
Michael Kennedy: vendor research, vendor approval, contracts, copyright, all that kind of stuff. And so it
Michael Kennedy: really interesting like is this hack to skip around this like make buying stuff at companies
Brian Okken: super hard right so it wasn't always that way though it took a long time for companies to
Brian Okken: realize that open source was fine yes that's for sure i mean they did have to work through it but
Michael Kennedy: i think once they kind of it feels like they had to go through this the same process we're kind of
Michael Kennedy: describing once in a sort of an abstract sense like okay then well now you can just go you know
Michael Kennedy: know what I mean? It says, Hey, look, it also works both ways. If you're a FOSS maintainer,
Michael Kennedy: the miracle of your software passing, bypassing copyright laws and liabilities and procurement
Michael Kennedy: means that you can get your software out there and have people use it pretty easy, right? Because
Michael Kennedy: your stuff is much easier to adopt because it's open source. I mean, I've been on the vendor side
Michael Kennedy: of these negotiations and paperwork and accounting and legal more than once. And it sucks. It sucks.
Michael Kennedy: I mean, look, Hey, people want to put me in as a vendor and buy stuff.
Michael Kennedy: I'm here for it.
Michael Kennedy: But at the same time, it is not fun.
Michael Kennedy: Right.
Michael Kennedy: And there needs to be like, if you're just a hobbyist, like, well, no.
Michael Kennedy: All right.
Michael Kennedy: So the final bit of this article, the final bit of this thought piece is you can't go back.
Michael Kennedy: So if we're trying to solve, if we're trying to solve the sustainability of open source
Michael Kennedy: software, you have to keep in mind the reason, one of the main reasons it's so popular is
Michael Kennedy: it skipped the copyright rule stuff.
Michael Kennedy: It skipped the vendor onboarding and all these things.
Michael Kennedy: So if your solution to fix sustainability is to recreate any of the supply chain framework problem, your solution is dead on arrival.
Michael Kennedy: So I think that's what this is why I wanted to bring up this article.
Michael Kennedy: I put it at the end of the year.
Michael Kennedy: It's kind of like I would love to see more sustainability options for open source.
Michael Kennedy: But I do think that this guy is on to something here.
Michael Kennedy: I do think that Thomas is on to something with his skipping the legal, skipping the procurement.
Michael Kennedy: And if we put it back and say, well, you got to set up a vendor agreement with us again.
Michael Kennedy: And then you're unraveling a lot of the things that made it a really good fit.
Brian Okken: Yeah.
Michael Kennedy: The article does a lot more detailed explanation than I did,
Michael Kennedy: but they're for people to think about.
Brian Okken: I hope this, yeah, I hope we don't go back.
Brian Okken: There are pressures to push it back.
Brian Okken: Like you were saying, there's the projects that just, they can't,
Brian Okken: they know that enterprise is using it and they're not getting paid.
Brian Okken: And that isn't as a bummer.
Brian Okken: And if you're not charging anything, you can't just make it up in volume.
Michael Kennedy: We've tripled our revenue from what it was last year.
Brian Okken: Still zero.
Brian Okken: With things like trying to secure the supply chain, we are, I mean, even open source is part of the supply chain, whether or not you want to believe it is.
Brian Okken: And so there are pressures to, you know, put SBOMs on or the software bill of materials to verify all your subcomponents and all that stuff.
Brian Okken: Python is helping to make that easier for individual maintainers of projects, which is cool.
Brian Okken: But it's still some extra work.
Brian Okken: And I don't think it's fair that maintainers are having to do that work.
Brian Okken: And they don't benefit from it.
Brian Okken: The companies benefit.
Brian Okken: And we do need to find a way to get money to vendors better or money to contributors.
Brian Okken: Yeah, I 100% agree.
Brian Okken: I do.
Michael Kennedy: But yeah.
Michael Kennedy: I don't have a great direct, like force them to do it type of answer.
Michael Kennedy: But yeah.
Michael Kennedy: Hopefully many of them will see like, hey, we benefit from this thing.
Michael Kennedy: If we were a major sponsor of this project,
Michael Kennedy: we could have the ear of the maintainer team
Michael Kennedy: to get the thing that we really want.
Michael Kennedy: I think that's a possibility.
Brian Okken: Yeah, there might also be some like maintenance agreements sort of stuff.
Brian Okken: It's definitely open source,
Brian Okken: but also whoever the main maintainer is,
Brian Okken: is for a small fee promising to look at your defect reports
Brian Okken: or things like that.
Michael Kennedy: Yeah, there's this whole productized consulting sort of thing
Michael Kennedy: I think would be pretty good,
Michael Kennedy: where it's like you're going to pay,
Michael Kennedy: basically I'm going to pay you a retainer
Michael Kennedy: and you have a certain amount of credits you can redeem
Michael Kennedy: that expire at the end of the month
Michael Kennedy: for me to potentially come and do exactly like what you're suggesting.
Michael Kennedy: And if you don't use it, that's fine.
Michael Kennedy: but I'm here at the drop of a hat if you need me, sort of.
Michael Kennedy: Yeah.
Michael Kennedy: You pay me $5,000 a month and I may or may not have to work for you that month,
Michael Kennedy: but you know what, that'd be good.
Brian Okken: But at the very least, or even having lower ones so more people do it
Brian Okken: and to make sure that things are actually stayed maintained
Brian Okken: because there's a lot of stuff that's just done
Brian Okken: and you can't tell whether or not it's really maintained.
Michael Kennedy: Anyway.
Michael Kennedy: Yeah, that's 100%.
Michael Kennedy: 100%.
Michael Kennedy: In fact, you might even want to go and find just a complete,
Michael Kennedy: I don't even put it on GitHub anymore.
Michael Kennedy: That's how much I'm changing my mind about open source.
Brian Okken: Yeah, so this next topic was going to be about looking for GitHub alternatives.
Brian Okken: And so I just left it as the title.
Brian Okken: Should I be looking for GitHub alternatives?
Brian Okken: And why am I talking about that?
Brian Okken: I mean, GitHub's awesome.
Brian Okken: Why would you?
Brian Okken: Anyway, I think it's great.
Brian Okken: I'm still happy with GitHub.
Brian Okken: But they sort of fumbled recently.
Brian Okken: Did you hear about all this, Michael?
Michael Kennedy: yes with the billing oh yes I heard about oh yeah so so what happened what bothers me more even is
Michael Kennedy: the the clear lack of craftsmanship and care around the code that runs these it's like you get janky
Michael Kennedy: code and we're gonna charge you oh and our bug is also gonna sometimes make it run for hours and
Michael Kennedy: then we'll charge you still for that too yeah so there's some pricing changes and the message
Brian Okken: pricing changes and they like released it on December 15th and then they they think and then
Brian Okken: just recently updated it i can't i don't know when the update was on oh the original announcement
Brian Okken: was on the 16th um there's an update to it so they um the gav actions it's way popular than they
Brian Okken: thought it would be and actually like just tons of people just switched from and it happened at a
Brian Okken: similar a lot of times where people were like travis was imploding so people were trying to
Brian Okken: uh leave travis and were like oh you have actions is here let's just use that um that's part of it
Brian Okken: But it also benefited GitHub a lot.
Brian Okken: A lot of projects started using it more.
Brian Okken: However, I get that they have to pay for that compute somehow.
Brian Okken: However, they've said, let's see,
Brian Okken: they're going to have GitHub or hosted runners
Brian Okken: are going to reduce their price by 39%.
Brian Okken: And I actually didn't realize that they were charging
Brian Okken: because apparently I don't use it enough to get billed for it.
Brian Okken: But in the announcement, they also said that you could see the hosted the non hosted runner.
Brian Okken: So like the code that you you've got your own computer set up to run your stuff.
Brian Okken: They were going to charge for that, too.
Brian Okken: Look, I think that's insane.
Brian Okken: It was not a lot.
Brian Okken: It was like two tenths of a cent per minute or something like that.
Brian Okken: But but that's like it's just sitting there waiting for your GitHub runner, your get runner to finish.
Brian Okken: Why would they charge for that?
Brian Okken: Anyway, I don't know.
Brian Okken: There's been a change.
Brian Okken: So we're going to link to the announcement of the pricing change.
Brian Okken: I didn't get too much into the details of the pricing change,
Brian Okken: but it's kind of weird to charge the same amount for both,
Brian Okken: whether or not you're using a hosted runner or your own runner.
Brian Okken: That's weird.
Brian Okken: So they've actually backed off.
Brian Okken: So they're going to postpone the billing for the self-hosted.
Brian Okken: They didn't say they're going to not do it, though.
Brian Okken: It's just postponed.
Michael Kennedy: Yeah, that's weird.
Michael Kennedy: So I get the argument like, wow, we thought we'd have to buy 100 computers and we're on our 100,000th VM.
Michael Kennedy: We've set up this as a little out of control.
Michael Kennedy: That doesn't apply to self-hosted.
Brian Okken: Well, I mean, the actions are still running, so they're not really charging that much for the actions.
Brian Okken: Just the, I mean, all the rest of the stuff is mostly coming for free.
Brian Okken: It's just.
Michael Kennedy: Right, right.
Michael Kennedy: But I mean, if you have a self-hosted GitHub Action runner,
Michael Kennedy: they're not paying for the compute to run it
Michael Kennedy: because you're self-hosting.
Brian Okken: Yeah.
Brian Okken: Like maybe, like, and if they are having to,
Brian Okken: I mean, they have to have something that sits around
Brian Okken: and like waits for it or something.
Brian Okken: I don't know.
Brian Okken: But figure out how to do that way cheaper.
Brian Okken: It should be like super cheap.
Brian Okken: Anyway, because that's like,
Brian Okken: that's one of the reasons why people have their own runner
Brian Okken: is to save on compute.
Michael Kennedy: So yeah, that was weird.
Brian Okken: So I went ahead and like, you know, why not look at other stuff?
Brian Okken: So let's look at some other.
Brian Okken: That's the warning thing.
Brian Okken: Some other alternatives.
Brian Okken: So I found this article.
Brian Okken: I just searched for it.
Brian Okken: There's four GitHub alternatives that are just as good or better.
Brian Okken: And there's some that I hadn't heard of.
Brian Okken: So this is kind of fun.
Brian Okken: I hadn't heard of Codeberg.
Brian Okken: So nonprofit community-led effort that provides Git hosting and other services for free and open source projects.
Brian Okken: Okay, so it's not for private projects or something, but there's a lot here.
Brian Okken: So maybe something to look into.
Brian Okken: But I don't think that GitHub is charging that much for open source either.
Brian Okken: But it's fun to look at some of these alternatives.
Brian Okken: Yeah, I think Codeberg only lets you have open source.
Michael Kennedy: Just only open source.
Michael Kennedy: Yeah, it's like free.
Michael Kennedy: You almost got to apply to a join sort of thing.
Brian Okken: And then Bitbucket.
Brian Okken: I mean, like, I didn't, I guess I forgot it's around.
Michael Kennedy: Sorry, Bitbucket.
Michael Kennedy: I did too.
Michael Kennedy: I use SourceTree all the time, which was, I believe, made sort of as the front end of Bitbucket if you want to desktop thing.
Michael Kennedy: Yeah.
Michael Kennedy: And still, I forgot Bitbucket exists.
Brian Okken: So, Bitbucket, yeah, it's not, oldest established competitor of GitHub.
Brian Okken: I think it predates GitHub.
Brian Okken: I'm not sure.
Brian Okken: But it launched around the same time in 2008.
Brian Okken: it's still maintained it's still there so you can um and the interface is a lot better than it was
Brian Okken: way back in the 2008 9 10 time frame when i was using it but uh bit bucket git lab and actually
Brian Okken: git lab's a solid alternative i use uh git lab at work and um the thing that yeah i like git lab
Brian Okken: uh definitely a an option to look into it uh git ea g g-i-t-e-a haven't heard of this before but
Brian Okken: it's around as well and then while i was looking around for this i also came up came around some
Brian Okken: some comments on socials about tangled it's an alpha it's a new it's a new thing it came out
Brian Okken: this year i think um a uh tightly knit social coding so they're really trying to um and they're
Brian Okken: launching as a lightweight lightweight github repo get repo hosting but the way they're
Brian Okken: dealing with it, I think, is the pipelines and the runs are running. I don't know if they have
Brian Okken: runners in the cloud. I think it looks like they're mainly trying to get you to run your own runners.
Brian Okken: So it's interesting. I could be wrong, but there are definitely some different options around there
Brian Okken: if you really do want to get off GitHub. I like GitLab and GitHub mostly.
Michael Kennedy: I'm always tempted to do some self-hosted thing. I love the idea of it so much.
Michael Kennedy: Yeah.
Michael Kennedy: So I have to talk myself off the ledge periodically.
Michael Kennedy: And if you're doing something just for you,
Michael Kennedy: I think it's cool to pick something based on features, right?
Michael Kennedy: Or some kind of philosophy of the company.
Michael Kennedy: Like this one is only open source, or this one is super privacy,
Michael Kennedy: or this one is European-based or whatever, right?
Michael Kennedy: However, if you're doing open source
Michael Kennedy: and you actually want it to be used by people,
Michael Kennedy: there's no other option than GitHub.
Brian Okken: Well, okay.
Brian Okken: I think if you really want people to interact with it,
Brian Okken: GitHub, and contribute.
Brian Okken: I mean, contributors, yes, exactly.
Brian Okken: And file defects and all that sort of stuff, GitHub.
Brian Okken: But I've seen a lot of projects that a lot of the community
Brian Okken: is just complaining, either complaining
Brian Okken: or asking for features that aren't even part of it.
Brian Okken: So you're doing, basically, if you don't want interact,
Brian Okken: if you want people to use it, it needs to be on PyPI for Python.
Brian Okken: But if you really don't want people to file defects and contribute junk,
Brian Okken: yeah, I think switching to GitLab or something like that totally makes sense.
Brian Okken: Yeah.
Michael Kennedy: I mean, it's like saying, I don't like that Twitter went away,
Michael Kennedy: so I'm going to set up my own private social media
Michael Kennedy: and then invite my friends to join.
Michael Kennedy: They may or may, they probably are not going to come.
Michael Kennedy: If they do, they're probably going to not visit it after three days.
Michael Kennedy: You know what I mean?
Michael Kennedy: It's like, even though these things are awesome in GitHub
Michael Kennedy: as being not ideal in some ways.
Michael Kennedy: Yeah.
Michael Kennedy: The truth of social stuff
Michael Kennedy: is you got to be where the people are.
Michael Kennedy: Otherwise, it's tough to work with.
Michael Kennedy: So anyway, that's mostly a note to myself in the future.
Michael Kennedy: Anyway, okay.
Michael Kennedy: All right.
Michael Kennedy: How are we feeling about extras?
Michael Kennedy: I have a couple extras, but why don't you go?
Michael Kennedy: Okay.
Michael Kennedy: Let's talk about PyCharm for a second.
Michael Kennedy: So I'm a big fan of Ruff.
Michael Kennedy: No doubt about that.
Michael Kennedy: I'm also a fan of Pyrefly,
Michael Kennedy: which I've been using a lot lately,
Michael Kennedy: And ty, which I believe ty just went into beta.
Michael Kennedy: Shouldn't that be one of our items?
Michael Kennedy: I believe it should be.
Michael Kennedy: It probably should.
Michael Kennedy: But ty, the one from Astral, that is sort of the high-performance companion or frenemy of Pyrefly,
Michael Kennedy: they both are now in beta mode.
Michael Kennedy: And with the latest release of PyCharm, it expands its LSP support
Michael Kennedy: so that it has native integration for Ruff, ty, and Pyrefly plus Pyrite.
Michael Kennedy: And this news comes to us from Daniel Muldmer, if I haven't said so.
Michael Kennedy: So thanks, Dean, for sending that in.
Michael Kennedy: And there's actually a whole link, a page which I'll link to about the LSP support and how you turn that on if you want.
Michael Kennedy: So you can have, like, native Ruff integration and so on.
Michael Kennedy: So anyway, shout out.
Michael Kennedy: Shout out to that.
Michael Kennedy: Also, RUF's page has a setup for how to do it in reverse.
Brian Okken: The LSP being for language servers always throws me.
Brian Okken: So I'm like, PyCharm now supports LISP, but that's weird.
Michael Kennedy: I know.
Michael Kennedy: Also, it feels redundant, an LSP server.
Michael Kennedy: It's already a language server.
Michael Kennedy: I guess a language server, protocol server.
Michael Kennedy: Shouldn't it just be a language server?
Michael Kennedy: I don't know.
Michael Kennedy: It's like saying it's an HTTP website or something.
Michael Kennedy: I don't know.
Michael Kennedy: It's HTTP protocol.
Michael Kennedy: Yeah.
Michael Kennedy: Right.
Michael Kennedy: It's an HTTP protocol website that you access with your browser now.
Michael Kennedy: Okay.
Michael Kennedy: Last thing.
Michael Kennedy: I didn't save the link to this, but I thought this was a fun...
Michael Kennedy: I saw this on xTwitter, and it's just like a little sign off,
Michael Kennedy: like sort of wishing you well or like,
Michael Kennedy: take care till next time I see you.
Michael Kennedy: But here's the developer version.
Michael Kennedy: May your bug tracker be forever empty.
Brian Okken: Oh, nice.
Michael Kennedy: Yeah, very nice.
Michael Kennedy: It's a little bit of a play on Hunger Games, I believe.
Michael Kennedy: May the odds be forever in your favor.
Michael Kennedy: You know, that sort of thing.
Brian Okken: Yeah, and like I was saying, if you really
Brian Okken: want your bug tracker to be empty, move it away from GitHub.
Brian Okken: Yep.
Brian Okken: A couple of things, just a reminder to people,
Brian Okken: I am taking this the rest of December off from updates to the lean TDD book,
Brian Okken: but,
Brian Okken: but this is an attempt to explain to people how to actually get productivity
Brian Okken: gains from test driven development.
Brian Okken: But I'll pick it up in January.
Brian Okken: I'm hoping actually to finish the,
Brian Okken: finish the entire first draft in January.
Brian Okken: That's the goal.
Brian Okken: That's a,
Brian Okken: that's an aggressive goal,
Brian Okken: but,
Brian Okken: but I have all the stuff I want to do.
Brian Okken: So we'll see.
Brian Okken: Okay.
Brian Okken: Finally,
Brian Okken: pie,
Brian Okken: the pie test course.
Brian Okken: I just had somebody asked me this morning,
Brian Okken: sent me an email and said, hey, I bought the book.
Brian Okken: Love the Python Testament by this book.
Brian Okken: And I'd like the course.
Brian Okken: Can I get a discount?
Brian Okken: And I just love people that just ask.
Brian Okken: So I gave him a discount, of course,
Brian Okken: but also so you can always email and ask.
Brian Okken: But I also just decided to throw a 50% off sale
Brian Okken: for the Christmas time.
Brian Okken: So last minute Christmas shopping for yourself.
Brian Okken: I'll put this in the show notes,
Brian Okken: But if you use the code Xmas, X-M-A-S 2025,
Brian Okken: I'll give you 50% off.
Michael Kennedy: Very, very nice.
Michael Kennedy: And I'm looking forward to a more efficient
Michael Kennedy: and error-free 2026 Christmas
Michael Kennedy: after Rudolph and team use your discount,
Michael Kennedy: learn test-driven better.
Michael Kennedy: And then, you know, next year round,
Michael Kennedy: their deliveries will be more error-free.
Michael Kennedy: You're doing a service for all the kids.
Michael Kennedy: Yeah.
Michael Kennedy: All right.
Michael Kennedy: We got a couple of funny things.
Michael Kennedy: We do.
Michael Kennedy: One is mine, one is yours.
Michael Kennedy: So what if you have errors in your code?
Michael Kennedy: Well, that's what structured error handling is for.
Michael Kennedy: Exceptions, you know, try, catch, try, accept, depending on your language.
Michael Kennedy: But what do you do when the error happens, Brian?
Michael Kennedy: What do you do when the error happens?
Michael Kennedy: One possibility is to log it.
Michael Kennedy: You've got to already have your login set up.
Michael Kennedy: So, you know, there's a few steps.
Michael Kennedy: I guess you could print it.
Michael Kennedy: That's a bit of a help.
Michael Kennedy: Maybe you just have a beep, play the beep sound when an exception happens.
Michael Kennedy: I don't know.
Michael Kennedy: Well, this person decided to write a simple two-liner.
Michael Kennedy: This is in JavaScript in the example, but it could be just as well.
Michael Kennedy: It says, if I catch an exception, I'm going to create a string that's
Michael Kennedy: HTTP colon slash slash stackoverflow.com slash search question mark Q equals.
Michael Kennedy: And you put the exception message in the end and then you open a browser to that.
Brian Okken: Wow.
Michael Kennedy: Problem solved.
Michael Kennedy: Old school.
Michael Kennedy: That's old school.
Michael Kennedy: I think the modern version is to just call an open AI API.
Brian Okken: Yeah, just ask your agent to run it, catch all exceptions, and fix it for you with PRs.
Michael Kennedy: Exactly.
Michael Kennedy: Yeah, just feel free to go ahead and auto-commit and publish it at production.
Michael Kennedy: I don't need to review it.
Brian Okken: Yeah, but be sure to label it with the prompt for that we discussed last week.
Michael Kennedy: Exactly.
Michael Kennedy: Let's see.
Michael Kennedy: Any good comments?
Michael Kennedy: Is this real?
Michael Kennedy: This is hilarious, whether or not.
Michael Kennedy: This is perfectly fine for local prod as well, as far as I'm concerned, production as in live.
Michael Kennedy: Cutting out the middle, man.
Michael Kennedy: Literally saves a precious three seconds.
Michael Kennedy: 3.531, actually.
Michael Kennedy: Oh, and someone literally did write a ChatGPT alternative in the comments.
Michael Kennedy: Nice.
Michael Kennedy: Yeah, there you go.
Michael Kennedy: Yeah, perfect.
Michael Kennedy: So it even came up with a prompt for you.
Michael Kennedy: Following error, it's occurred in my JavaScript application.
Michael Kennedy: Please write code that resolves this issue.
Michael Kennedy: Respond only with code.
Michael Kennedy: Here's the exception.
Michael Kennedy: Oh, yeah.
Michael Kennedy: Pretty good.
Michael Kennedy: Pretty good stuff.
Michael Kennedy: All right.
Michael Kennedy: This one's for you.
Michael Kennedy: You got it.
Brian Okken: Okay.
Brian Okken: So last week, what did we title our podcast episode?
Brian Okken: Something like LinkedIn something?
Brian Okken: Anyway, somebody responded with, oh, LinkedIn Cringe.
Brian Okken: Somebody called Archtoad said, LinkedIn Cringe made me think of this.
Brian Okken: It's AI blockchain kombucha startup.
Brian Okken: Anyway, this comes from Archtoad referring to a post by Tim Kellogg
Brian Okken: using nano banana prompt, create a super annoying LinkedIn profile, which is amazing.
Brian Okken: So the profile is great.
Brian Okken: The with a with a like a hero image with somebody giving a speech and the on the screen is disrupt
Brian Okken: or die, which is great, great screen capture.
Brian Okken: But the let's see, let's read his profile.
Brian Okken: He's a visionary, 10X growth ninja, chief evangelist at stealth mode, at a stealth mode AI blockchain kombucha startup.
Brian Okken: That's awesome.
Brian Okken: Helping Fortune 500 CEOs maximize human synergy means nothing.
Brian Okken: A TEDx speaker applicant.
Brian Okken: Not even TED, just like a TEDx.
Brian Okken: Yeah, sure, TEDx, which is like the original.
Brian Okken: I applied to speak.
Brian Okken: I didn't get it, but I applied.
Brian Okken: Forbes 30 Under 30 nominee.
Brian Okken: Oh, my gosh.
Brian Okken: A dog dad, coffee addict.
Brian Okken: Why are you still reading this?
Brian Okken: Let's connect.
Brian Okken: About Bryden just doesn't just work.
Brian Okken: Bryden shifts paradigms.
Brian Okken: That's awesome.
Brian Okken: Anyway, really good things I'd like to see in a LinkedIn profile.
Michael Kennedy: This is pretty good.
Michael Kennedy: I didn't realize that this originally came from Nana Banana.
Michael Kennedy: I feel like the challenge is on for the follow-ups.
Michael Kennedy: Yeah.
Michael Kennedy: Pretty amazing.
Brian Okken: Anyway, it's been an amazing run for us and an amazing 2025, I think.
Brian Okken: Things are going good.
Brian Okken: And, I mean, aside from, like, you know, our entire country imploding.
Brian Okken: But, you know, other than that, things have been going pretty good for you and I.
Michael Kennedy: So it's been a, you know, the backhanded compliment curses, may you live in interesting
Michael Kennedy: times while things are interesting.
Michael Kennedy: Definitely interesting.
Michael Kennedy: I do want to say though, thank you to everyone for listening this year, all the years and
Michael Kennedy: here's to 2026.
Brian Okken: Yeah.
Brian Okken: happy holidays and hope everybody has a good new year.
Brian Okken: Yep.
Brian Okken: Bye.
Michael Kennedy: Thanks, Brian.