Python Bytes - #463 2025 is @wrapped

Episode Date: December 22, 2025

Topics covered in this episode: Has the cost of building software just dropped 90%? More on Deprecation Warnings How FOSS Won and Why It Matters Should I be looking for a GitHub alternative? Extras... Joke Watch on YouTube 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 10am 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. HEADS UP: We are taking next week off, happy holiday everyone. Michael #1: Has the cost of building software just dropped 90%? by Martin Alderson Agentic coding tools are collapsing “implementation time,” so the cost curve of shipping software may be shifting sharply Recent programming advancements haven’t been that great of a true benefit: Cloud, TDD, microservices, complex frontends, Kubernetes, etc. Agentic AI’s big savings are not just code generation, but coordination overhead reduction (fewer handoffs, fewer meetings, fewer blocks). Thinking, product clarity, and domain decisions stay hard, while typing and scaffolding get cheap. Is it the end of software dev? Not really, see Jevons paradox: when production gets cheaper, total demand can rise rather than spending simply falling. (Historically: the efficiency of coal use led to the increased consumption of coal) Pushes back on “only good for greenfield” by arguing agents also help with legacy code comprehension and bug-fixing. I 100% agree. #Legacy code for the win. Brian #2: More on Deprecation Warnings How are people ignoring them? yep, it’s right in the Python docs: -W ignore::DeprecationWarning Don’t do that! Perhaps the docs should give the example of emitting them only once -W once::::DeprecationWarning See also <code>-X dev</code> mode , which sets -W default and some other runtime checks Don’t use warn, use the <code>@warnings.deprecated</code> decorator instead Thanks John Hagen for pointing this out Emits a warning It’s understood by type checkers, so editors visually warn you You can pass in your own custom UserWarning with category mypy also has a command line option and setting for this --enable-error-code deprecated or in [tool.mypy] enable_error_code = ["deprecated"] My recommendation Use @deprecated with your own custom warning and test with pytest -W error Michael #3: How FOSS Won and Why It Matters by Thomas Depierre Companies are not cheap, companies optimize cost control. They do this by making purchasing slow and painful. FOSS is/was a major unlock hack to skip procurement, legal, etc. Example is months to start using a paid “Add to calendar” widget! It “works both ways”: the same bypass lowers the barrier for maintainers too, no need for a legal entity, lawyers, liability insurance, or sales motion. Proposals that “fix FOSS” by reintroducing supply-chain style controls (he name-checks SBOMs and mandated processes) risk being rejected or gamed, because they restore the very friction FOSS sidesteps. Brian #4: Should I be looking for a GitHub alternative? Pricing changes for GitHub Actions The self-hosted runner pricing change caused a kerfuffle. It’s has been postponed But… if you were to look around, maybe pay attention to These 4 GitHub alternatives are just as good—or better Codeburg, BitBucket, GitLab, Gitea And a new-ish entry, Tangled Extras Brian: End of year sale for The Complete pytest Course Use code XMAS2025 for 50% off before Dec 31 Writing work on Lean TDD book on hold for holidays Will pick up again in January Michael: PyCharm has better Ruff support now out of the box, via Daniel Molnar This is from the release notes of 2025.3: "PyCharm 2025.3 expands its LSP integration with support for Ruff, ty, Pyright, and Pyrefly.” If you check out the LSP section it will land you on this page and you can go to Ruff. The Ruff doc site was also updated. Previously it was only available external tools and a third party plugin, this feels like a big step. Fun quote I saw on ExTwitter: May your bug tracker be forever empty. Joke: Try/Catch/Stack Overflow Create a super annoying linkedin profile - From Tim Kellogg, submitted by archtoad

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

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