Python Bytes - #478 Iodine tablets and potable water

Episode Date: May 4, 2026

Topics covered in this episode: profiling-explorer Reverting the incremental GC in Python 3.14 and 3.15 VSCode AI Co-author defaults to on, then off django freeze Extras Joke Watch on YouTube Abo...ut the show Sponsored by us! Support our work through: Our courses at Talk Python Training The Complete pytest Course Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky) Brian: @brianokken@fosstodon.org / @brianokken.bsky.social Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Brian #1: profiling-explorer Adam Johnson And intro post Python: introducing profiling-explorer “profiling-explorer is a tool for exploring profiling data from Python’s built-in profilers, which are stored in pstats files. ” Features Dark mode Click the calls, internal ms, or cumulative ms column headers to sort by that column. Use the search box to filter by filename or function name. Hover by a filename + line number pair to reveal the copy button, which copies the location to your clipboard for faster opening. Click the callers or callees links on the right of a row (not pictured above) to see the callers or callees of that function. Michael #2: Reverting the incremental GC in Python 3.14 and 3.15 Python 3.14 shipped with a new incremental garbage collector, but production reports of severe memory pressure (Neil Schemenauer measured up to 5× peak RSS on pathological cyclic workloads) have pushed the core team and Steering Council to revert it in both 3.14 and 3.15 - returning to the 3.13-era generational GC. This is the second time the inc GC has been pulled back: it was also reverted right before 3.13.0 final, and it shipped in 3.14 without going through the PEP process. The tradeoff is real: Neil's benchmarks showed max GC pause times of 1.3ms with inc GC versus 26ms with the generational one - great for latency-sensitive apps, terrible for memory-constrained ones. Release manager Hugo van Kemenade will ship 3.14.5 early with the revert, and Gregory Smith floated the idea of a 3.14.5rc1 - the first patch-release RC since 3.9.2 back in 2021. Tim Peters spent the thread doing live forensics on Windows, running a toy deque program that should cap at 1GB and watching it balloon to 15.6GB on a 16GB machine - and discovered the gen0 collector effectively never fires under the new scheme. Tim's bigger meta-point: CPython has a chronic shortage of real-world GC benchmarks, pyperformance has "basically no interesting" cyclic workloads, and users almost never share real data - so core devs keep flying blind on changes like this. Django maintainer Adam Johnson published a blog post mid-thread documenting a real memory "leak" in Django's migration system caused by inc GC, with a manual gc.collect() workaround - the listener-facing receipt that this wasn't just theoretical. If the inc GC comes back for 3.16, it'll go through a proper PEP, and the discussion is already shifting toward keeping both collectors available via a startup flag - which Neil and Sergey Miryanov have both prototyped. Brian #3: VSCode AI Co-author defaults to on, then off VSCode merges Enabling ai co author by default - 3 week ago Ton’s of “why would you do this” and related comments VSCode merges Change default for git.addAICoAuthor to off - yesterday Take-away, don’t rely on default, set addAICoAuthor to off yourself Michael #4: django freeze Convert your dynamic django site to a static one with one line of code. Just run python manage.py generate_static_site :) Features Generate the static version of your Django site, optionally compressed .zip file Generate/download the static site using urls (only superuser and staff) Follow sitemap.xml urls Follow internal links founded in each page Follow redirects Report invalid/broken urls Selectively include/exclude media and static files Custom base url (very useful if the static site will run in a specific folder different by the document-root) Convert urls to relative urls (very useful if the static site will run offline or in an unknown folder different by the document-root) Prevent local directory index Extras Brian: Thinking Less, Trusting More: GenAI’s Impacts on Students’ Cognitive Habits Michael: Vercel breached, employee to blame Introducing the new Talk Python web player GitHub uptime (a couple of views 1, 2) Joke: Friends in tech

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 478. I am Michael Kennedy. And I'm Brian Akin. This episode is recorded on May 4, 2006, brought to you by us and all the things we're doing. Sure, we'll mention something during the show somehow. I've got a few cool updates to discuss. If you want to connect with us on social media, maybe submit a topic that you think we should pay attention to. Check us out on all the social medias. You can find us on the show page, episode page.
Starting point is 00:00:34 Pretty much everyone has a link to all the things there. Sign up for the newsletter. It adds way more than just show notes or, hey, we published an episode. It's got a bunch of cool extra information that we put in there. So check that out. And with that, Brian, I think we should get started. What's your first topic? I'm going to talk about profiling Explorer.
Starting point is 00:00:54 So this is a Profiling Explorer is a tool. from Adam Johnson of lots of things Django and Git related fame. So Adam, so how did I see this? I don't know. Oh, yeah. He had a blog article that he released last month that somehow I just found out, read today, introducing profiling Explorer. Actually, I picked it up yesterday.
Starting point is 00:01:21 Anyway, so this is kind of fun. This is a, says I've ended another package. Wait, anyway. So what do we have here? We have a way to profile. We have lots of ways to profile Python code. But this takes like the output of the profiler or the C profiler and pops it into a table that you can interact with.
Starting point is 00:01:46 So this lovely table that also has dark mode. He shows it in light mode, but it also has dark mode. It's got all the normal stuff you'd think of. for profiling, you've got the cumulative time, the percentage of your time in a certain place, and the number of calls that go to this place or this thing. But you can filter, and the filter's kind of cool. So you can click on the calls or the internal time
Starting point is 00:02:15 or cumulative time column headers to sort by that, which that's where I usually start is certain by the percentage of time spent somewhere. Anyway, then you can also do, there's a search box, so you can filter on, like if you, like even if you grab all of the time, but you're really looking at a subcomponent that you're working on, you can just look at that and see where it's small. So like that's often, the time where I'm often grabbing, looking at the profiling documentation is how do I filter down to just the thing I want to care about? And sometimes it's easier just to grab it all. And then just using this, you could filter in exactly what you want. So yeah, and there's a hover features and caller and collies. And I guess look through the article to figure out what this is all about.
Starting point is 00:03:08 But it looks really slick. I haven't tried yet, but I'm going to probably this week. So it looks fun. And profiling is certainly finding a needle in a haystack. So all the UI, all the search you can get, it's very good. Yeah. And there's like profiling often has like a, there's some people that like like the flame graphs. I've never gotten the flame graphs to have work in my brain.
Starting point is 00:03:29 I just don't get them. So, um, so something like a table works for me. I like this. Yeah. I really like the call hierarchy type of thing. Almost the call call stack, but it's split if it takes different branches that you see in like Pite Charm and stuff. Yeah. That works for me.
Starting point is 00:03:45 But still those things can be too noisy. So very cool. Yeah. Nice. Nice. Now, let's bump over and talk about reverting the incremental G.C. in Python. Like, what? So this is a, I don't know who just, I think just the core developers and steering council as a group decided on this, but the post is by Hugo Van Commande. And it's just entitled, Reverting the Incremental GC in Python 314 and 315, which is pretty wild. And this is on discuss.com.org. And so there's a bunch of back and forth.
Starting point is 00:04:19 here. So let me give you some of the highlights, okay? So Python 314 shipped with an new incremental garbage collector. So I believe the way it worked previously is when a garbage collection happened. And maybe I should point out why garbage collections happen. So Python is a little weird in that it has two types of memory management. Both of them automatic. You don't worry about them. But they're two ways of managing memory and they happen in different scenarios. Okay. So the primary by far away that memory management happens is by reference counting you get a variable it has one reference you pass to a function now it has two references that function puts it into a list but then returns it goes up to three and then back to two you throw away the list and then the variable
Starting point is 00:05:02 it's away reference count hit zero delete right reference counting works great it's super fast it's immediate except it does not work great when you have a cycle right i've got something two objects that point to each other for some reason, all of a sudden, their reference counts never hit zero, memory goes through the roof, your toast. So what we're talking about is the thing, the garbage collector that doesn't use reference counting, but actually traverses all of the references, and then looks for those cycles that are abandoned, but themselves never went to zero and collects it. Okay, so there was a new incremental garbage collector added that the way it worked now is you would have different generations. Those generations would run that when it was time for a collection,
Starting point is 00:05:46 entire app stopped, garbage collection was checked. These cycles were checked, and then the app carried on. So the incremental one tries to improve latency, say, like, look, we don't have to stop the program entirely. We're going to do a little bit of garbage collection, a little bit of more running, a little bit more garbage collection and so on. Of course, the picture of garbage could change over that period, right? Anyway, that was added, but it turns out production reports started to come in for severe
Starting point is 00:06:12 memory pressure. Neil measured up to five times peak memory on pathological cyclic workloads. And cyclic is the important part because that's actually where GC actually does anything. It actually makes, you know, actually does the cleanup. And that pushed the core team and steering council to revert it. It's in 314,
Starting point is 00:06:31 but it's going to be taken out of 314. And it's going to not actually make it to 350, which is pretty extreme, I think, right? It takes a lot to get something into Python. But once it's in, it's rarely taken out. So this is actually the second time.
Starting point is 00:06:43 the incremental GC has been pulled back. It was reverted right before 313 first came out. As they were like, oh, is that quite ready? And then it got into 314 without going through the PEP process. So this is a bit of the tricky stuff. However, the benefit was real. So like they were trying to reduce latency. So with the incremental one, the max GC plus times
Starting point is 00:07:02 for one example was one millisecond versus 26 milliseconds with the old one. So that's great, except for it was just blowing up the memory usage of things that cared more about memory and like that. less about latency. And a lot of places we run Python care more about memory than they care about very, very small pauses. You know, think like APIs and web apps and anything that runs on a server or in the cloud, memory is probably the most expensive resource, right? So that's not great. So Hugo decided we're going to ship 3145 early with the revert and Gregory Smith floated the idea
Starting point is 00:07:35 of a 314.5 RC1, a release candidate for a shipping version of Python, which would be interesting. And then Tim Peters jumped into thread, doing a bunch of live forensics on Windows, running a toy DQ program that should cap it one gigabyte, and it used up to 15.6 gigs on a 16 gig machine. So that's not great. And this is really bad. He discovered that Gen Zero collections effectively never fired under this new collector.
Starting point is 00:08:04 That's the one that gets most of them, and it's the cheapest to run, so that's a big problem. Anyway, this might sound bad, But Tim points out that C Python has had a chronic shortage of real-world GC benchmarks. High-performance, the test suite that they run Python on for performance considerations, it has basically no interesting cyclic workloads, and users almost never share real data, so core devs keep flying blind. And circling back to your previous topic, right, is Adam Johnson published a blog post
Starting point is 00:08:37 along the thread of a real memory leak in Django migration systems caused by the incremental. with where you have to call GC collect manually to fix it. All right. So it may or may not come back for 316. If it does, it was going to be restarted through the pet process. So a lot going on here. That's crazy, right? Well, yeah, but I also hope that, I mean, Tim's comment is, like, we kind of flew past
Starting point is 00:09:00 it, but it's really, it's really important that the cyclic workload, having some of those in a benchmark is important. But if you can come up with a pathological way where it doesn't work as well, it shouldn't crash. It shouldn't be like credit. Like even an incremental should eventually go, you know what? We need to shut down and clean things up if necessary, I think. But we also need to have a benchmark that's more realistic. And it's hard to tell what realistic is because we're doing, Python's being used for everything from, you know, from particle physics to web.
Starting point is 00:09:40 pages. So who knows? I have a suggestion for them. I agree with you. I have a suggestion. One of the areas this shows up very often is in ORMs. Oh, yeah. Right. So imagine I've got a user and maybe a course and then a user activity, right? So if I go run a query, you can set a database for all those things at RM. Maybe the user activity has a user ID, but it also has a like reverse, lazy loaded back to the user itself and back to the course itself. But the users holding onto their activity because they've got a list of activities, which was also lazy loaded.
Starting point is 00:10:20 And you tell SQL Alchemy or something. Like, we're going to do eager loading on all these things. It does create tons of cycles just by doing database queries. I've seen that kind of stuff. Yeah. Where the GC makes a difference on my web apps that actually do a lot of database things. So maybe they could come up with like a real interesting
Starting point is 00:10:35 web app database query sort of example and just use put SQL, static SQLite database that's in there and integrate that. I mean, I'm sure there's a hesitancy to say, well, the way you run Pi performance is you're gonna fire up this database and this Redis queue and then you're gonna like, you know, like the infrastructure doesn't make any sense,
Starting point is 00:10:54 but you could do it with SQLite. I think you could, you could come up with some interesting useful examples that have tons of data because just fill the database, you know? Yeah, anyway. Interesting. I think it's worth considering. It is worth considering.
Starting point is 00:11:06 Oh, I gotta hop over my next topic. Nick, this is, oh, speaking of discussion, so this is just, I guess, I guess I'm just like passing along a discussion. I was amused to, to read about. So this is a few, I, it changed today, yesterday, the topic changed. So I was surprised to find out that Microsoft and VS code enabled AI co-author by default. So, and I'm like, what, really? So I read a little bit more about this. And really it's, so you can, you can do get commits and stuff that have,
Starting point is 00:11:47 whether or not you've, you know, whether or not AI contributed to the code. And instead, you used to be able to just like, say, it used to be only of like, get, or your AI is actually committing. But, but, you know, Copilot wants to get credit if they're doing a lot of work, I guess. I don't know. But so there's a flag that you can set. That's the Git. Ad AI co-author configuration.
Starting point is 00:12:17 And it was started with off and they default it. They changed it to default of all. And it isn't all the time. But if there's something in here that tries to detect whether or not you used any, any of the code was contributed by an AI workflow or anything. And I'm not sure about all the details, but people freaked out, basically. Because like, I was like, even if I, even if I run like a copilot to try to figure out something, I may have rejected everything or something.
Starting point is 00:12:51 And, or maybe my code looks like something that the, I don't know, how does it detect it? I'm not sure. And I don't think that's right. Basically, I just don't think it's right. Well, I was about to talk about that. And then I noticed that I was reading the comments this morning and found out that there was a follow-up. And the follow-up was just yesterday. Changed the default back to off.
Starting point is 00:13:15 So, and then it devolved. They closed the comments. Even in one day, they closed the comments because basically the comments turned into, why are you even using VS code? You should use VI or, you know, Emacs or what are the other, some of the others and stuff. So anyway, I use a lot of editors, not a lot, a couple, but VS code is one of them. And I was the, I think the main takeaway from this is, I don't trust them. I'm going to go in my settings and go ahead and whatever this.
Starting point is 00:13:48 Now I can't find it. The setting, which was like, whatever. Oh, here it is. The ad AI co-author, I'm going to just go ahead and set that to off in my settings file. because I don't trust them to turn it back on later. Anyway, I think this is crazy. First of all, let me defend the people who say VS code where folks are saying you should use VEM or EMAX.
Starting point is 00:14:13 I feel like a lot of those editors encourage bad design practices, right, whereas proper IDE-like things are a little bit better. So I think that that's fair. I don't think they should take that personally. But this AI co-author stuff is just a, so that was kind of put the defense up before we start hacking on them. So I think this is the first time hearing this, Brian, this is garbage. Now, I haven't noticed this because I don't use copilot because I have more respect for my work time and just use Claude code in some kind of VS environment with the extension, to be clear. And I also hate it if Claude does it.
Starting point is 00:14:51 But every now and then Claude does it and it drives me crazy, if I ask it for a computer, commit message. It'll sometimes give me a bunch of stuff and then co-authored by Claude Code. And you're like at mention their GitHub username or whatever and like delete, delete, delete, delete the thing out of there. I've never seen this. So where does it show up? Does it, is it like behind the scenes or does it show up? The most commonplace I've seen it is in pull request, but I've also seen it in commit messages. So let's just say it's a pull request, okay? So you might go. I've not used it in the message though? Yes. Yes. So I've not used it co-author like I've co-pilot like I just said, but I've gone to Claude and I've said, hey, you know, there's a bunch of stuff going on here and I kind of forgot all the details that changed. Like, wouldn't it be a little more thorough if I said, hey, Claude, look at all the pending changes on this branch since I've
Starting point is 00:15:42 branched it and give me a nice summary and overview of actually what's changed instead of the stuff that I just intended to change, maybe something else. You know, like maybe I ran the linter and it changed a bunch of stuff when I really only changed one line. But I would like to talk about, you know, whatever, something like that. It will say, here's the title, here's the description that you put, and it'll say, all of it's describing, and the bottom, it'll have a last single sentence paragraph that says, co-authored by Claude Code at Anthropic or at Claude or something like that. That's lame.
Starting point is 00:16:13 I'm like, screw this. So then I'll delete that, which is fine. But you can also just say, Claude, create a pull request on GitHub for me. And it'll do that beautifully. But you know what shows up with the bottom of that pull request description? Co-authored by Claude. So Claude doesn't do as often, but it sounds like, you know, Microsoft has gone absolutely bonkers over AI in everything. And I think that is a huge mistake.
Starting point is 00:16:36 I think they have 40 different products named copilot that are actually different things like in Office 365 copilot, Windows co-pilot on GitHub, go pilot and VS code. You don't mean there's just like there was a mandate that everybody, you know, a few years ago, 2023 or something like that. Like every team that builds something at Microsoft needs to have some form of AI in it. And those were all independent projects and initiatives. And the adoption isn't that great. So this to me feels like a poor attempt, a bad attempt at kind of trying to growth hacking co-pilot back into the conversation. Yeah, maybe.
Starting point is 00:17:15 Yeah, I think like early days of Hotmail, which is completely forgotten. But one of it's really the things that was kind of a secret to a success is common now, but it wasn't then. Every email you sent was sent by Hotmail. Get your own one gigabyte free web email. And every single email had a link back to it. And people go, oh, you can have web email. That's cool.
Starting point is 00:17:35 And like that was, and I feel like it's that. Social media stuff too. People would be like, you know, this post written on Mona on iPhone or something like that. Yes, yes, exactly. Yeah, there's a lot of that. So I think it's got a strong ick factor. I just checked my default VS code, which I don't know, whatever it was, but it had this on, and so I just turned it off. And I'm going to go do a thorough
Starting point is 00:17:57 cleansing. But I think it's a tree falls in the forest, but no one there's a here sort of example for me, because I don't use copilot. So if I did, it would put the marking on, the co, the co-attribution on it, but I'm not going to use it. So it's not a problem. See, I actually don't get the copilot hate because I'm using it, but I've been using it from the start. And it's just like mostly code completion and and a you can open a window to to open AI chat if you want but um the whatever settings I have are not intrusive they were they were intrusive for a while and I did something and then not that bad anymore and the comments the the suggested comments don't get in the way and and I'm I appreciate it and the and I do
Starting point is 00:18:46 use VS code but I also use VIM mode um so I It's basically a big wrapper around VIM as far as like I'm using it. I do like the other thing I really like about it is the integration with Git so that I can find out all the stuff I've changed and use do diffs easy and stuff. So I do like it. And also there's a lot of people using cursor and you can't hate on VS code and like cursor because they're the same thing. So they're not exactly the same thing, but it's a fork.
Starting point is 00:19:18 So anyway. 100%. I turn off the auto complete for all those tools. I don't like them. So my view into this world is just the agents. You know, it's been, let's move on to the next topic, Brian. It's been, you wouldn't know it. We had literally a heat advisory.
Starting point is 00:19:34 It was almost 90 degrees yesterday. It was terrible. Boy, was it freezing in Django Land. Let me tell you. So I want to talk about something called Django Freeze. And I think this is a super cool project. It doesn't have very much attention. It's only got 117 stars.
Starting point is 00:19:50 and 16 Forks. It's the kind of project that's really low risk, like really low risk, but has a ton of benefits. So the ideal of Django Freeze is I've written a Django app, and I'm thinking about how do I deploy it. Maybe it's driving its content from the database, like it's got a, it's like e-coma store, and it's got, here's all your categories, and here's the products you're selling and so on. Those come out of the database, but maybe they change infrequently or whatever. So you could use Django Freeze to just convert a static HTML version of your site and deploy that somewhere, have all the categories, have all the products, have all the little backlinks and all that kind of things that you might have, whatever your app does.
Starting point is 00:20:28 But the deployment and operation, the DevOps side is static files, which is incredible. Oh, cool. It's good for operational, like your static files can't go down unless just your server doesn't work anymore, you know? Like, there's very few things that can go wrong. You know, it's not like you're going to, well, I ran out of memory or there's, I don't now, like some kind of issue between the caching and, like, just all the issues you have running real websites.
Starting point is 00:20:52 Like with static sites, they're so delightful. Put them up. As long as the servers online, things are good, you know? And you can host them for free in many places. So if you've got a Django site and you think, really, it kind of could be a static site, but I like to work in Django. I don't want to work in Hugo or something like that where it's foreign or weird. Hugo is really weird, even though it's good.
Starting point is 00:21:10 You could just write in one of, write in Python, write in your favorite web framework, but then turn it into a static site. And I really think this is a cool idea. It's sort of a peer of flask freeze, I think is the name. Yeah, I think it's flask freeze. What do you think? Cool, right? Yeah, one of the things I think, one of the places where I'm actually thinking of using this, I'll try it out, is like a SaaS, for instance.
Starting point is 00:21:34 You've got the actual application that needs to be Django or whatever, you know, let's say you've written it in Django. And you want your sales site? You know, you've got two sites. You've got the actual application, and then you have your sales site. If they look really close, then the transition's really easy.
Starting point is 00:21:55 So you could have a lot of your blog content or whatever on the static side. You're trying to hit lots of random traffic and then flip over to your application. And the user won't notice that much of a difference because it's the same look and stuff. Yeah, that's a perfect use case. or like the docs for your SaaS.
Starting point is 00:22:17 You know, if you're like user manual, all that stuff, just all be static, static, static. Yeah, that's pretty cool. I'll give you one more example. I talk to David Flood from the Harvard sort of humanities enablement team, I guess is a simple way to put it. And he and his team go around sort of like on internal consultants or whatever for different researchers who are not really programmers or web people and help them set up websites
Starting point is 00:22:44 portals, data management, data exploration, et cetera. And one of the areas that he talked to a lot about is what happens if you create something like a Django site or anything else as part of a grant, a three-year research project, but then the grant is over. You're paying $100 a month to host the Django site. But now who's going to pay for that, right? You don't want to pay for it because you don't have any grant money left. But if you don't, it's going to go away, which is a big hassle.
Starting point is 00:23:11 Yeah, that'd be cool to just be able to convert it to a, static. It's not going to update anymore and it can be something you can reference and stuff. Yeah, exactly. So you've got this project that needed a dynamic site for a long time, but then all of a sudden it no longer is supported or whatever, but you don't want it to vanish from the internet. So hit it with one of these, you know, convert to static sites. I think it's a really cool idea. Yeah, it is cool. Indeed. You know what else is cool? Extras are cool. Yeah. I'll let you go next on the extras. Okay. I need, like, you like, It's accidentally unshared, so I'll share it just in.
Starting point is 00:23:48 I'll be just a second, and here we go. All right, so this is, we were thinking about AI a lot. I know a lot of you have kids out there, or maybe you are, going to college or high school or something like that. And if you are, thanks for listening. That's awesome. Anyway, I ran across this article this morning. It's called Thinking Less, Trusting More, Gen AIs Impact on Students' Cognitive Habits.
Starting point is 00:24:14 And actually, this isn't an article. This is an abstract from a study from Oregon State University. And, like, actually, the top, there's, like, an objective and a method and result at the top. But it's rather, it's not too hard to decipher the results looking at this, but it's still in, like, you know, it's a scientific paper speak. So if you, pardon to fly by, the best way to read this is to go all the way down to the bottom. Oh, not all the way to the references, but there's a conclusion. And this is actually interesting. I think it's really interesting about students using AI and stuff.
Starting point is 00:24:54 So I'll just read out the little bit here. If routine reliance on Gen. I don't remember what formative years, and I don't remember what formative years are, but whatever, changes students' willingness to engage in effortful thinking. Many may enter professional life without having developed the intellectual habits that earlier generations develop. through practice. Yet this need not be inevitable. Cognitive, the cognitive of debt,
Starting point is 00:25:21 anyway, basically, the use of AI and the way AI is designed, like things like chat, GPT and stuff, need to be modified so that both learning environments and Gen. AI systems are modified to preserve human agency
Starting point is 00:25:38 and support genuine complementarity. I didn't know that was a word. Generally, division of cognitive labor between both human and AI contributions should be meaningful set up so that neither is displaced. Basically, you need to, and I kind of agree. I think even when using like Claude and stuff like that, I think that you can get them to ask you, you can say, hey, do this task, and if you run into issues, ask me about it.
Starting point is 00:26:11 I think that should be the default. I think it should default to, even if you don't want to get interrupted, just like, you know, you want it to have like flow mode and just like get stuff done. It should pull out points and say, hey, these are some of the decisions I made. Could you review this spot, this spot, this spot? And what do you think of that? And we could change it if necessary. And I think there's minor tweaks that could be done with a lot of these interfaces to keep people thinking. And this is about high school or about students.
Starting point is 00:26:41 I don't know what age of students it is. But I think it's relevant for coders also because it's really easier for coders to slip into trusting the bots to let it happen. And I am all for getting things done faster, but we need to keep people thinking about the problems and thinking about stuff. So anyway, that's my answer. I have a couple of thoughts. So I totally agree that this is a very, very, very serious danger. I just think back to myself, if I had a magic box when I was working on a history paper and I could just say, help me with this. I really don't remember. I don't want to read the 30-page paper.
Starting point is 00:27:16 And I think it can seriously stunt your growth as a student. And I honestly think one of the important skills in life is just to learn to keep going. Go, you find a problem, like, oh, that's hard. Or I can't figure this out. Like, a huge skill is just learning to keep trying until you do figure it out. And if you have a magic box that gives you the answer, and you're, especially if you're young, like, I mean, that's really, really rough. Yeah. You can use these things as really amazing tutors, though. You can say, I saw you did this.
Starting point is 00:27:48 That's new to me. Why did you do this? Let's explore this idea. But I really doubt many students are using that. Like, once they get an answer, probably good. Yeah. Well, and like, there's ways to, you can, like I said also, there's ways to use AI tools now to that work the way they should.
Starting point is 00:28:07 like in education, you could say, here's my rubric. It's on this. Here's my ideas about what I think I should put. But I'm just not sure which part of the paper I should put this information. Like basically using it to be, I'm stuck, just get me unstuck. Don't do everything for me, but just get me unstuck. And those are great ways to use this. So anyway.
Starting point is 00:28:33 Indeed. Indeed. Now, final final thought before we move off this really quick. There's a lot of EM dashes in this. I'm pretty sure that this entire abstract was written with AI, or at least rewritten with I. Like, just on that page, there's three or four EM dashes. But I'm not against the EM dash,
Starting point is 00:28:50 but that is such a new thing that AI seemed to have brought into the mix. Right, but there's what the, um, what the grammarly has been used commonly forever for a long time. And I don't think that like that grammarly counts as an evil thing. I don't either. So, but also there's way more M-Dashes in, in, like, research papers than there are normal papers. That is true. And honestly, that's probably how they got into AI, but still.
Starting point is 00:29:18 Probably. I'm still thinking, I'm still thinking, perhaps. I got a couple things. Some of these are a little, this is a little bit older. It's 14 days ago because it came out right after we recorded her last episode and then we skipped a week. So it's not that new, but it's already the spoders. Just the first four words of this announcement bother me. AI cloud company, Versel.
Starting point is 00:29:39 Wait, no, this is a cloud company that hosts infrastructure, but they probably wanted to raise more money. So now they're an AI cloud company, not just a cloud company, whatever. Let's just start from after that. Versel is breached after an employee grants an AI tool unrestricted to Google workspace. Unrestricted access to Google workspace. Hacker seeks $2 million for stolen data. So I've got to go through it a little bit more,
Starting point is 00:30:01 but basically someone was using Agentic AI and gave it access to the production Google workspace, which stored a bunch of data and probably wikis and stuff like that. And then somehow they installed something bad that then used the AI, which used that access. I don't know exactly the details, but why I bring it up, if you're using Versal, you might want to rotate your keys, change your password, stuff like that. I don't think the hacker is seeking the money, though. Yes, because they stole the data from them and they'll say, I'm going to release it to the world if you don't pay me.
Starting point is 00:30:33 It's like a ransomware sort of thing. Okay, yeah, yeah, yeah. Okay, got it. Note the EM dash, okay. I mean, this is the reason, there's just another warning for everyone, like you gotta be really careful with your dev machines, which are often for a lot of us,
Starting point is 00:30:48 also our personal computers, you know, like the whole, what was the password manager? Not one password, not Pitt Warden. Last pass, last pass got hacked, not because of an AI thing, but because one of the devs had a home network, had a Plex server so they could stream their pirated stuff to their, just to watch, right? But then they want to do that while they were out while they're traveling.
Starting point is 00:31:12 So they put it on the internet. It got hacked. And then it laterally moved through their home network to get to their computer, which then got all the API keys and on and on it goes. So anyway, just another little warning. And if you use Verseld, maybe a double warning. All right, that was kind of sad. I'll give you a good one, Brian.
Starting point is 00:31:26 Check this out. This is very relevant. So I went and I was just thinking, I'm like, really, want a better experience for people over at Talk Python. And I'm doing a crazy amount of stuff with transcripts. Like, I'll talk about it next week, probably. But for weeks, I've been working on making transcripts better, more with the courses than with the podcast.
Starting point is 00:31:47 But still, it applies to both. And I'm like, it would be really nice if there was a better playback experience on the web. Like, imagine this. You come to the website, Python bytes or Talk Python, whatever. We've got really nice search. And I've talked about the work I've done on the Python byte search, which I think. think is really cool, some of the ways you can search and jump around. But maybe you find some of the interesting from 200 episodes ago.
Starting point is 00:32:09 Maybe you could get that on your podcast player, but you got to like scroll back and like, how, you know, does your player cut off episodes older? And like, it's just not great. You might just want to watch it on the, listen to it on the web, right? Yeah. So you search for it, you click, you start going. Maybe you could have a better experience than just the default playback, you know, audio tag that for some reason browsers think doesn't deserve much love or interest.
Starting point is 00:32:31 They're crappy. They look like they're from, you know, real player in 95, but whatever. So I went and I created a really nice playback experience where, let me just jump over. I'll link to the blog post here. But come in here, it's got nice little access to all the pieces, but it's got a player. If you click it, it expands out with like little seek stuff around. It shows the transcripts as it's playing, like right alongside the player. You can like change the speed.
Starting point is 00:32:59 It's got hot keys. All sorts. And that's slick. Oh, yeah. And thanks for doing the speed thing, too, because I'd never listen at 1X. Yeah, yeah. So Python Bites go over here. I've got the same deal. I just didn't write a blog post about it because I did talk Python first. But look at it. Oh, very cool. Isn't that nice? So people out there listening, if you're like, I'm just kind of exploring our content. I mean, we've got a lot of years. How many years? What was our first episode? Let me just look really quick, Brian. What was our very first episode? It was 2016. That's 10 years. years of content. We've got a great search engine and transcripts on top of that.
Starting point is 00:33:36 And so if you're exploring that, you know, just use the player. I think it's really, really cool. We've been doing this for 10 years, almost. I know. Damn, you're old. Too, weird how, like, some people can get old and others in the same time frame. Just don't, right, right? Yeah.
Starting point is 00:33:50 Yeah. Well, I guess, so you'll, this is funny because if you're watching this, you'll know it that I'm the one with gray hair, not Michael. But you got more hair, so I think it even, out so thank you Pat says last pass reminds me why I was stumbling long okay a couple more things real quick a combination stuff and this last item I both want to give a little bit a little bit of sympathy to GitHub and then also kind of bash on him a little bit so GitHub has been as we do you know as I think it's fair like it isn't that balance I think you just got to say if
Starting point is 00:34:25 there's two sides you got to present them both equally but there's there's a little bit of nuance here. So I don't know if you've noticed, but GitHub has been a little janky lately. And not in just the GitHub actions, which have been taking a lot of heat, but just of time at all. Like, I couldn't, I couldn't search the other day a little while before then, like issues were not accessible. I didn't experience this, but people had their pull request just disappear. How frustrating would that be to do some work? Submit a pull request and it just goes into the ether. You're like, are you serious? So here's the supportive angle. They did this post over on the GitHub blog called an update. on GitHub availability.
Starting point is 00:35:01 They have a graph that says, things are hard for us. We're trying. They're doing a couple of things. I believe they're reworking GitHub from being a monolith into being a bunch of microservices. And I usually hate on microservices,
Starting point is 00:35:13 but something like GitHub with all these different moving parts and different levels of traffic and load on them seems. Like you might well, maybe we should just scale up the issues bit like a ton, but not so much just listing the repos or whatever. So apparently they're going through, they're like, oh, we need something like 10x more capacity than we had a couple years ago. And during that time, they're like, actually, no, maybe 30x more. So it's a lot.
Starting point is 00:35:40 And if you look at the graphs, if you look at the graphs, they're nothing but like nearly vertical in the amount of traffic and new repos and commits. And one of the main drivers of this is people, especially a lot of new people who are not programmers, are like, hey, Claude, create me a project. Where do I save my project? Oh, you put it on GitHub. You know what I mean? And so just the amount of traffic amplified by AI to GitHub is over the top. All right. So that explains.
Starting point is 00:36:05 You know, maybe if we could charge like 50 cents, if they charge like 50 cents a month, just something small, just but anything, like a dime a month, a lot of that would go away. That's really interesting. I would totally pay a dime a month. I think I pay $30 a month a GitHub. I wouldn't mind paying $30 and $0.30.10. Wouldn't make a difference. Anyway, no, I think that's a very interesting point, actually. Okay, so there's that.
Starting point is 00:36:28 This is GitHub's response. Did you know that there's a missing GitHub status page? Yes, there is. If you go back to the previous one, somewhere do they talk about their uptime? How could it exist if it's missing? So is there a status? Yeah, so if you go to GitHub status page, it says, oh, Git operations are up, up, web hooks are up, up, up, and it talks about like, it doesn't aggregate it,
Starting point is 00:36:50 but it's like 99.5 sort of uptime. But then there's another page, which ironically, is hosted on GitHub.io. I love it. It's like its own thing. And it man, it basically does other types of checks. And it's like, you know, 84% of time. That is actually pretty abysible. Yeah. And it just has graphs. And it actually breaks out pull requests and all these things. And here you look and you see kind of similar a number. It's like the Git operations are this. We have a hoax are this. But I think it says if any of these are down, then there's, you don't call it up. You know what I mean? Whereas the other one goes, if some of it is up, it's up.
Starting point is 00:37:26 not all of it you don't like issues right now do you I don't know exactly the breakdown there but I just thought this missing GitHub status page was really interesting yeah they should do better I mean I know that we're all
Starting point is 00:37:39 a lot of us are using it for free but but also we've paid for it with all of our intellectual property yeah exactly I mean that's and attention right the reason that there's not a mass exodus to something newer shinier is because
Starting point is 00:37:56 this is where most of the people are. I know there is something of an exodus, but not a mass exodus, right? Yeah. You get benefits from being in GitHub. Okay. I think all of these conversations about these AI things and stuff
Starting point is 00:38:09 and others perfectly lead into this joke. This is probably one of my favorite jokes. At least of the year. Have you looked at it yet? No. Okay, perfect. Okay. So I found this on X.
Starting point is 00:38:21 And I'm programming humor. I guess it could also be on Reddit. Like they broadcast that multiple places. So this is like two different perspectives from society. And it's talking about copilot, but it could be chat, GPT, it could be clod, whatever. Friends outside of tech, lull, co-pilot is dumb. Friends in tech, I just bought iodine tablets. I have made an offer on land upstate.
Starting point is 00:38:41 My supplies of antibiotics and potable water are sufficient. But I need to set up hydroponics to make it through the first few years. That just perfectly sum it up. Yeah. It's like, people are like, this. is a dumb thing look it made this it made this thing longer like I'm almost done stockpiling we're ready to build the bunker I know what it's coming I can see it it's so bad yeah I'm I've just like I've just I know that I'm dependent on
Starting point is 00:39:08 society if society collapses just I hope I'm one of the first to get hit because I don't want to live through an apocalypse just I really don't either I'm not a survivalist yeah so well stuck up on your I died tablet ID ID tablets in your potable water. Oh my God, it's so bad. So I've got, I've got a friend that like, they've got like a group of friends that have a place like in Southern Oregon that they know they can hole up in and stuff. If anything happens. And I said, oh, okay. So do you make sure that you always have a full tank of gas? So if anything happens, you can make it there? Oh, no. Well, how are you going to get there? You're going to walk to
Starting point is 00:39:52 Southern Oregon. Anyway. So. Yeah. Good point. There's a lot of moving pieces and the one you didn't see coming might be the one that takes you. I hope he doesn't listen to this up, this podcast. But I hope everybody else does. Yes, exactly. Well, everyone, hope your supplies are ready. And thank you for listening. Thank you. Bye. Thanks everybody. Bye.

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