Python Bytes - #482 Mr. Beast's epidosde

Episode Date: June 1, 2026

Topics covered in this episode: CVE-2026-48710: A Maintainer's Perspective daily-stars-explorer Markdown to pdf with pandoc and typst postman2pytest Extras Joke Watch on YouTube About the show B...rian #1: CVE-2026-48710: A Maintainer's Perspective Marcelo Trylesinski suggested by Lee Luocks Short version: users of Starlette: upgrade to Starlette 1.0.1 security professionals: we can’t treat open source projects like corporations This top link is a Starlette security advisory with the title Missing Host header validation poisons request.url.path, bypassing path-based security checks The CVE apparently caused some negative press targeting starlette. However, “the vulnerability came from the application pattern and the deployment, never from something Starlette intended.” A quote from an OSTIF article: “This bug is a classic “responsibility gap” where if this maintainer didn’t patch, thousands of exposed projects would have to individually secure their projects. In doing this work, they’ve voluntarily taken on the responsibility to protect the ecosystem from long-term systemic harm. As with all open source projects, they owed us nothing and could have left this to be everyone else’s problem and took the extraordinary steps of helping the ecosystem.” Both X40 D-Sec and Ars Technica expected immediate fixes and responses from Starlette. That’s not good. We can do better. Michael #2: daily-stars-explorer Explore the full history of any GitHub repository. 📈 Full Star History - Complete daily star counts for any repo ⏰ Hourly Stars - Hour-by-hour activity with timezone support 🔀 Compare Repos - Side-by-side comparison of any two repositories 📊 Activity Timelines - Commits, PRs, Issues, Forks, Contributors over time 📌 Pin Favorites - Bookmark repos for quick access without retyping 📰 Feed Mentions - See when repos were mentioned on HN, Reddit, YouTube, GitHub 💾 Export Data - Download as CSV or JSON 🌙 Dark Mode - Easy on the eyes Try/use it online at emanuelef.github.io/daily-stars-explorer or install it for yourself. Brian #3: Markdown to pdf with pandoc and typst typst suggestion from Matt Harrison Markdown is awesome Pandoc is great for converting markdown to tons of stuff but for pdf, it goes through LaTeX, which is … yuk (my opinion) Pandoc also can convert to typst And typst creates beautiful pdfs and is way easier (my opinion) to deal with than LaTeX. New tools brew upgrade pandoc brew install typst Now convert pandoc something.md --to typst -o something.typ typst compile something.typ something.pdf Michael #4: postman2pytest via Mikhail Based on postman app Convert Postman Collection v2.1 JSON into executable pytest test suites Postman collections document your API. postman2pytest turns that documentation into executable regression tests that run in CI. No manual rewriting, no drift. Joke: Centering a div

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 episode 482 recorded Monday, June 1st. I'm Michael Kennedy. And I'm Brian Ockin. This episode is brought to you by us and all of the Python things that we're doing. Check out PythonTest.com. Get Brian's multiple courses over there. Even something to do with Lean TDD, if you want to check that out. I hear that an audiobook is underway, which is super cool. And got a couple.
Starting point is 00:00:30 new courses over at Talk Python, especially the new OWASP top 10 security plus agentic AI. Like, how do you take cloud code or something like that plus known, recognized patterns like the OWAS top 10 and make your code safe? That's what that course is about. So check out those kind of things. That's what we're bringing you this week. Also, if you want to connect with us on social, share, show ideas, whatever, you can do so on all the socials. Sign up for the newsletter. We got awesome extras that come in through there. So just do that on the web. website. With that, Brian, I think it might be time. Should we kick it off?
Starting point is 00:01:04 Speaking of security. We have a security issue, but the issue I think is resolved. We just, I'm highlighting an article that's about the maintainer. So this is interesting. So this is the CVE, I'm not going to, let's see, CVE 2026, 487, 10 and maintainer's perspective. So this is from Marcello, Trialis, Trialicent. Cool name. Anyway, this is about a, what, security advisory from Starlet. So even, so there's a, what, isn't Fast API use Starlet, I think? I do believe so, yeah. And a bunch of other stuff too. So even if you don't think that you're using Starlet, you might be using Starlet. So the short version is you probably ought to upgrade to 1.0.1 if you haven't already.
Starting point is 00:01:55 That's one of the versions. If you don't care about the nitty-grady of this, just do that. The other part is an interesting thing about basically that this is an interesting article. It's kind of hard to cover, but I wanted to bring it up because it does, we do have more and more AI things like attack both trying to attack websites and also, so we have to keep up on security updates. But also a lot of these security vulnerability reports against projects. And a lot of these projects like Starlet are not, they're not a commercial enterprise. It's an open source project with volunteer maintainers. So that's really what we're talking about here is a little bit of that.
Starting point is 00:02:37 And also the problem really wasn't with Starlet. And apparently they got some bad press in a couple of places because of a vulnerability. But this, I'm going to read this interesting thing. The vulnerability came from a pattern, an application pattern and the deployment, never from something Starlett intended. And there's a description in the link about what the issue is, and I actually got lost. So it's something about like, yeah, I'm not even going to try to summarize it because I got lost here. But there's one description of the bug. It says from Ostef. I don't know what Ostef is, but an Osteff article. This bug is a classic responsibility gap where this maintainer
Starting point is 00:03:24 didn't pat, where if this maintainer didn't patch, then thousands of exposed projects would have had, would have to individually secure their projects. In doing this work, they've voluntarily taken on the responsibility to protect the ecosystem from long-term systemic harm. As with all open source projects, they owed us nothing and could have left it for everyone else's problem, and took, but they took the extraordinary steps of helping the ecosystem. Please consider donating to gludex which is this um the person that wrote this article uh which is an interesting and i believe the main corner of starlet as well um okay yeah you're right and also um so apparently ours technique uh ours technique i even covered it and we've referenced our articles a lot you know in the past um
Starting point is 00:04:12 sometimes some good stuff but apparently they reached out and said you know uh you know this seems to be as serious do you have any comments uh how severe is it and they didn't they they sent that request out two hours before publication. And since they didn't get a response, they posted that. They asked but didn't get a reply from Starlight. And two hours? Anyway, the article goes on to talk about the burden of triaging, how many security advisories come in, all the work that's involved.
Starting point is 00:04:43 And also that places like Ars Technica and others treat open source projects as if they're a for-profit corporation and expect, like, a PR department and stuff. And there's not. It's just people. So anyway, yeah. Do you have anything else to add to this or just interesting? Yeah, it's just interesting. I don't know. It doesn't look like a super dangerous vulnerability, I don't think, but definitely go out and patch. And it's a 100 to 101 bump. So it's not like you've got to jump a major version. Yeah, definitely patch. But also, I think. I don't know how to get out of this, but because we have a lot of these open source projects that big companies are relying on and they want the reaction times of a paid product.
Starting point is 00:05:31 And they just, yeah. And actually, they could do that by maybe putting the maintainer on a healthy retainer, making the project sustainable and say, look, we'll pay you $2,000 a month and we probably won't ask you anything for a long time. But if we need you, we need you to jump in and we'll then pay you out earlier. I don't know, something like that, right? That would, if you get five companies doing that, I bet you can get some response time out of that.
Starting point is 00:05:52 Yeah, but the ironic reverse thing is, actual paid products are really slow to patch anything. So we actually get usually faster response times from open source projects. So anyway. Indeed, indeed. All right. Let's go and chat a bit about the Daily Stars Explorer.
Starting point is 00:06:11 This is a fun project, Brian. So what this is is a web app that's open source on GitHub. What is it built with? Scrolling. It's built with JavaScript and Go. So, but it doesn't matter because it's not about the internals. It's about the information you get about different projects, including Python ones. So it's an app that you can put in a repository, and it will give you just basically historical information about the stars, sliced and diced in all these statistical ways.
Starting point is 00:06:38 Ooh, neat. So has full star history, hourly stars. You can compare side-by-side repos, activity timelines of like, show me the commits over. over time, which is kind of interesting. You know, favorite them and so on. You can see when the repos were mentioned on Hacker News, Reddit, YouTube, and GitHub, and you download the data for feeding to your AI or feeding to your data science stack. So I think this is pretty cool.
Starting point is 00:07:02 And let's just do this by, let me first find the Flask repo one second. All right, so let's go and open up the little demo. So it's a web app, which means you have to self-host it. However, if you just want to try it out, I think just use the demo and put whatever you want in there. Like, unless you want to save your history and stuff, but let's go over and put Flask in. And it thinks for a moment. The first time you get one in there, I put a repo in there, it takes a minute to download all the data from GitHub. But because I put that in there before, it kind of goes more quickly.
Starting point is 00:07:34 So you can see right now Flask has 71,598 stars. And you could have different themes, of course, for the thing. Candy. It shows you the total stars over time, right? So you've got this graph, this orange line, if you pull it up, is the integral or something like that. And here's the stars per day, right, like 13, 15, whatever. And then the scales are different, right? One goes up to 80,000, another it goes to 30.
Starting point is 00:08:02 But, you know, you take the integral of the top curve, you get the bottom curve. Sum up all the stars. And it's very cool. You can break it down by like over five year, quarterly years a day. You can go and say, I want to transform this by, I want to just look at trend lines, or I want to look at monthly bend stars, or maybe I want to normalize the stars across and have like a little, you know, lines. What else? We've got the running median and week over week growth. Neat, right?
Starting point is 00:08:30 It shows you how old the repository is, 16 years, one month, 26 days, 68 stars the last day. So I did. A lot of times you maybe want to think about what project do I actually want to work on? or base my project upon. And obviously stars are not everything, but it's certainly something. Could we pull up here? Come on now, get away.
Starting point is 00:08:51 You write about this auto hide stuff, right? So where can I find? Yeah, I don't know where to pull up the commits from this one right off top of my head. But anyway, it would be cool to see the commits because that would let you answer some interesting questions as well, right? Like if you see the commits
Starting point is 00:09:07 just come to a stop two years ago, you're like, oh, I see. So where's the work happening? Like, where is it, is it getting this data from in the browser? Or where's, when's the... There's a Go-based web app running on someone's server that these, you know, that they've got up here that I believe. And then it just, it happens over there.
Starting point is 00:09:25 If I pulled up a different one, you would see it. Right. Grind away for maybe 10, 15 seconds. Well, that's a lot of data and a lot of graphs. I'm just the pickiness in me. I'm like, well, what graph doesn't it have? I don't see any candlestick bar graphs. Sorry.
Starting point is 00:09:43 Yeah, I know. It's pretty neat, though, if you're on six floors from repos. It's cool. I haven't seen people include, like, YouTube references before and something like that. Oh, yeah. And there's all this side stuff over here. You can compare. Here's the commits.
Starting point is 00:09:57 So give it a moment. See, now it's grinding because I didn't ask for the commits on Flask earlier today. You can see PRs, issues, forks. Like, that's pretty neat. It's kind of hidden in this little hamburger menu on the left, but if you expand it out. Yeah. But it'll probably take. this should be interesting, I think. I've got some ideas. But I don't know. It'd take maybe 30 seconds. There you go.
Starting point is 00:10:17 So you're all time. You can see there's quite a few commits and trending downward. It's kind of a, honestly, kind of a done product, you know. I don't mean that in a positive or negative way. There's a few things left that I think Flask could do. Primarily, I think one of the, there's probably two things to work on. I think primarily you could work on maybe some performance stuff to make Flass better. And you could unify the true async court. the sort of pseudo-async, regular Flask async functionality. I know David and Phillip are working towards making those just one thing. But, you know, that could be a lot of work right there. That could be happening. But other than that, I kind of feel like Flask is sort of done.
Starting point is 00:10:55 Yeah. Anyway, this is... It's not about Flask's example. It's about the Daily Stars Explorer, which I think is pretty cool. Just to link to us from last week, no project's ever done because you have to test on new Python versions every year. Yeah. And if it's completely good
Starting point is 00:11:10 treat it's done then it starts to get really badly because it's dust and stuff all right exactly it gets free as if they were dead how about something to markdown maybe document it write a book about it yeah so um i like i like a lot of markdown um i use it a lot of all the time i'm actually writing i wrote the uh the python testing with pie test in markdown i'm writing lean tdd in markdown use it for blog posts use it for everything so why what's new about this what's new is I just learned about a tool called Types. I think it's type. It even says how to pronounce it, and I didn't look.
Starting point is 00:11:49 So, T-Y-P-S-T. So I needed a new formatting thing because I'm trying to self-publish Lean T-D-D, and I didn't like the book, the print book versions of output that I have available. So I wanted to customize that. So I reached out to all of our good friend, Matt Harrison, because he self-published and says, said, Matt, what do you use? And he's using types now, so I'm, I checked it, tried to check it out. So the, the gist is that Pandock converts to PDF, but it does it through late law tech,
Starting point is 00:12:24 and I don't really like law tech. And you have to download something extra anyway to get Pandock to convert it. So, and then, but there's types. It's actually quite a pain. It's not just, it's like three or four libraries. They're all, I don't know, they're just, it's weird. It's not great. Okay.
Starting point is 00:12:39 So I'll jump to the punchline is I've got a convert script now that converts Pandock to type, TYP, and I don't know what the official extension is, but I just named it. So you say two types for Pandock. But it's a fairly recent Pandock that there's been updates recently. So you'll want to upgrade your Pandock first. Then convert your markdown, and then take the type TYP output and you do types to compile. and then the output. And I did a little example, so it's just a normal markdown,
Starting point is 00:13:14 and it just converts it to some nice PDF. So there's a whole bunch of... Oh, and it has code. Syntax highlighting as well? Oh, yeah. It does syntax highlighting, and there's so much that it does. It has mathematical symbols. It is a replacement for Lattec, for one, but it's very much simpler.
Starting point is 00:13:33 And I, in like an hour of twiddling with it, I have a fairly decent book template for the new book. And yeah, so I'm pretty happy with it. And I've had this is, and this has been around for a while and I just didn't know about it. So that's why I'm bringing it up. And installing-wise, just brew. For a Mac brew on Windows. There was some other process I did.
Starting point is 00:14:01 But it's so much easier than the Lotech chain to install. So I'm pretty happy. with this tool. So thanks. So I was so happy with it. I did a little blog post to share with people. Excellent. Excellent. That is really interesting. I might start using that because right now I'm doing just straight markdown to Pandock for Talk Python in production. And it's really good for EPUB, but it's kind of janky for PDF and it's kind of janky for Kendall because Kindle can't read it quite right so I have to do like remove a few little niceties for Kindle. Anyway, certainly worth considering. Really? Thanks. Yeah. Oh, I'm not having I haven't, I guess I haven't
Starting point is 00:14:45 tried. I'll have to try that. Try the Kindle. The problem that I run into with Kindle is somehow the way that Pandock is doing code syntax highlighting breaks the display on Kindle because I don't know, there's something about like new lines or spans or something that get treated differently and then like the spacing is really weird. It's it's annoying. Okay. I will definitely... Give it a look and see what it looks like. I'll have to try that. And yeah, so I'll try that probably today.
Starting point is 00:15:14 Yeah. I mean, the books are identical for me, other than the Kindle ones don't have syntax highlighting, which is generally okay because most Kindles are black and white, but I know some are not. Oh, okay. So on black and white, Kindle, it looks okay?
Starting point is 00:15:27 If I compile a separate version, a separate Kindle ePUB that disables syntax highlighting in Pandock, yes. Oh, okay. Yeah. I'll have to look at that. So that was the fix. I'm just like, all right, well, dash, dash, no. Whatever the syntax is, I don't know.
Starting point is 00:15:41 It's been a while since I wrote the alias that just does it, you know? Okay. Yeah, I'll take a look. Hmm. All right. Well, this one, Brian, this should be yours. This should be yours, but no, I got it. This one is mine.
Starting point is 00:15:52 So I want to talk about Postman to Pi Test. Okay. This is a cool project that comes to us from Mikhail, and people might be familiar with the Postman app. I'm a big fan of the Postman app. Postman app. It's pretty neat. Do you use it? Do you know it? Yeah. Yeah. So the way it works is you create these collections that are like groups of different API calls that in aggregate demonstrate or test the some kind of API, right? You can organize them into folders, but also you can do collections and then share these collections with like teammates and like team collections. I did that
Starting point is 00:16:28 notably for the Talk Python Horses app that's in the Mac, not the Mac, the app, the iOS and the Google Play Store. So I need all the APIs that I'm creating for this to be tested, documented, clear. You can do stuff that should pass, stuff that should fail, and so on. So, all right. So if your team uses Postman, then this project here you might like, because it converts Postman collections, which I just described, into executable Python test suite, a Pi-test test suite.
Starting point is 00:16:59 Nice. Yeah. And it's super simple. So all you do is you just say, you know, You install it, probably UV if it says PIP install, but come on now. UV tool install, let's go. So it says Postman to PITEST, dash dash collection, give it some collection. And then you say output this Python test file, and that's it.
Starting point is 00:17:20 And then run Python. That's right. Run Pytest to run it. So that's pretty neat. That will actually set the environment so that things like the base URL, which can vary, you know, depending on configs like dev versus prod or whatever. and then it just runs it through PITES. And what's cool is you could version this test file
Starting point is 00:17:38 and then just rerun this to regenerate it when it's time. Yeah. Yeah. Also, if you did that, if you versioned it, then you could rerun it and do the diffs to see what changed in your collections. Yeah, that's right. Yeah, you could regenerate it and just go,
Starting point is 00:17:54 oh, I see we've got this, this or this API actually changed because now it takes this additional header and that's why the test was failing. I don't know. Something like that. So if, I mean, this is about, big if you use Postman, but I think this is a really handy. And it's just like, hey, I've got this stuff locked into this app and it can run things. It can do test type things. But really, you probably
Starting point is 00:18:13 want it in Pytast land. And this cool little app, this cool little utility does it. So good work, Michael. Yeah. One of the things that he mentioned to us when he shared this project was, which I thought was interesting, is the division of a whole bunch of developers and then that used Postman during development, which is common, right? I think. And then a smaller, like, quality assurance team or part-time person, I think it, I think it was him, that needs to support some of this stuff. And so you have to, you've got the same source. You've got the developers developing what they think is the right thing. And to be able to take that and convert it to something that a smaller test team can maintain and that's a cool model to do that with so one source of truth nice yeah it is it's
Starting point is 00:19:07 almost like treating like a database right yeah yeah do you have extras i have one extra for today and my extra is um that i snuck this in uh for the last last blog post that i shared was actually on testincode.org um so uh i am writing i'm going to start writing there i think a little bit so um i'm linking to new blog, Who Dis? There is not much there yet since I just put it online but I'll link to the other stuff. One of the funny
Starting point is 00:19:39 things that happened to me last night was I went to publish this at testing code.com and I had let it expire because the old podcast was dead. So what happened? I just, I'm like well, somebody else grabbed it. Some
Starting point is 00:19:55 squatter sitting on it now so I just registered.org. That works. And I, the important thing, I could just keep blogging on Python test, but I do want to, I want to use this testing code name as the publisher for Lean TD. So it's self-published through me, but it's kind of, I don't know, it's not fake. It just looks kind of fun to have a different publisher than my name or Amazon or something like that. So that's what I want to do. Anyway, that's my extra. How about something funny?
Starting point is 00:20:24 I think it's time for something funny. Indeed. Let's jump over. So this joke is called centering a div. And it's based on Mr. Beast. Do you know Mr. Beast? No, but yes, yes. I know.
Starting point is 00:20:40 It's certainly not a thing that I would watch on YouTube. However. Sure. No, I would watch Animal Fails. Come on. I really don't watch Mr. Beast. It's kind of annoying to me. But what a phenomenon, right?
Starting point is 00:20:53 So for people who don't know, by this guy, James Jimmy Donaldson, and his net worth from his YouTube projects and beyond, you know, it's $2.6 billion. It's ridiculous. So it basically follows a theme. Like, we're going to put you in some crazy situation. And throughout the situation and at the end, whoever kind of completes it gets some ridiculous amount of money.
Starting point is 00:21:15 Like, hey, we're all going to hang on to a car, like a Tesla. And whoever hangs onto it long enough gets a Tesla. Oh, by the way, the person who doesn't go to the bathroom, the longest, gets an extra $100,000. You know, like ridiculous stuff like that, right? So, queued up, here's the joke, centering a div. Mr. Beast plans to trap a thousand vibe coders in a room without clawed. First person to center a div manually wins $1 million.
Starting point is 00:21:42 It's not fair. Nobody will get it. I know, exactly. It's like, it's impossible. Can't be done. And then down here, one of them is, center horizontally, vertically, or both? Like, oh, oh. Vertically.
Starting point is 00:21:59 It's just impossible now. I don't even know if it's hard anymore, actually. It used to be hard, but I don't know if it is. I think it depends how you write it. Like, if you did a flex box, you know. But if you did old school way, it's a little harder. Yeah. That's sort of funny to think about, though, because the vibe, I don't vibe code,
Starting point is 00:22:19 but I also don't write CSS by hand anymore. I use something else to do. do it for me. So anyway. Funny. Um, one of the things I actually was at a dinner party the other day. And, um, uh, somebody said they wanted to start. They take a lot of videos and I said, oh, cool, can I watch him somewhere? And he's like, well, um, I was going to, I said, you should like throw them up on Instagram or something, uh, whatever. And he's like, well, I'm going to start doing on YouTube because, you know, that Mr. Beast makes like millions of dollars. And one of the
Starting point is 00:22:51 things I, I mean, I don't watch these videos and maybe they're funny. Maybe they're not, I don't know. It's not my thing. But one of the things that's unfortunate is it kind of makes some people believe that they can do that also. And I don't, I think this is a one-off random thing. I think it's, it's just, you know, it was at the right time, right place. It was its own thing. Yeah. And how much did he make for the first three years he was doing it? I don't know. I don't know. I don't know. I lost money. I'm not sure. He would, he would just go up to rain and people give him $1,000 for stuff. I don't know where he got the $1,000 to start this idea with, but. Is that, is that, is that,
Starting point is 00:23:25 how like it started at the beginning was he it was always like this i think so i'm it's you know the beginning i don't know but for a long time it's been like that but it was all used to be like lower scale and it goes enough because my daughter watched him a lot for a while not so much anymore but for a while and so it would kind of be on in the background the mom on the couch whatever you know weird okay whatever yeah but this is his new amazing one trap a thousand vibe coders in a room without claude ask them to do things let's go Yeah, that's funny. It is.
Starting point is 00:23:57 All right. Thanks for the show, Brian. Thanks for everyone for listening. All right. Bye. Bye.

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