Python Bytes - #426 Committing to Formatted Markdown

Episode Date: March 31, 2025

Topics covered in this episode: mdformat pre-commit-uv PEP 758 and 781 Serie: rich git commit graph in your terminal, like magic Extras Joke Watch on YouTube About the show Sponsored by Posit C...onnect Cloud: pythonbytes.fm/connect-cloud 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. Brian #1: mdformat Suggested by Matthias Schöttle Last episode Michael covered blacken-docs, and I mentioned it’d be nice to have an autoformatter for text markdown. Matthias delivered with suggesting mdformat “Mdformat is an opinionated Markdown formatter that can be used to enforce a consistent style in Markdown files.” A python project that can be run on the command line. Uses a style guide I mostly agree with. I’m not a huge fan of numbered list items all being “1.”, but that can be turned off with --number, so I’m happy. Converts underlined headings to #, ##, etc. headings. Lots of other sane conventions. The numbering thing is also sane, I just think it also makes the raw markdown hard to read. Has a plugin system to format code blocks Michael #2: pre-commit-uv via Ben Falk Use uv to create virtual environments and install packages for pre-commit. Brian #3: PEP 758 and 781 PEP 758 – Allow except and except* expressions without parentheses accepted PEP 781 – Make TYPE_CHECKING a built-in constant draft status Also, PEP Index by Category kinda rocks Michael #4: Serie: rich git commit graph in your terminal, like magic While some users prefer to use Git via CLI, they often rely on a GUI or feature-rich TUI to view commit logs. Others may find git log --graph sufficient. Goals Provide a rich git log --graph experience in the terminal. Offer commit graph-centric browsing of Git repositories. Extras Michael: Sunsetting Search? (Startpage) Ruff in or out? Joke: Wishing for wishes

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 426 recorded March 31st, 2021. I'm Michael Kennedy. And I'm Brian Ocken. And this episode is kindly brought to you by Positconnect Cloud. Last time Brian told you all about Positconnect on-prem or your own cloud. And we'll talk about PositConnect cloud, a cool sibling offering, I guess. If you are a social media person,
Starting point is 00:00:30 you can find us on the social media things. You can find us on Macedon and Blue Skies, the two main places we hang out. Those links are in the podcast player show notes right at the top. Also, YouTube, follow us on YouTube. There's the live link in the top that'll take you there Please subscribe if you want to be part of the show that happens
Starting point is 00:00:50 Usually right now mod mod 7 every week Monday at 10 a.m Pacific time time zone changes like daylight savings screw that up a little bit for people. But anyway, that's when it is We're going into summer Brian. I don't know how consistent we're gonna be, but we've been pretty good lately, right? Yeah. I think so. But we're people, we've switched if we need to. Exactly. And if you would like an artisanal,
Starting point is 00:01:13 handcrafted digest of an email form, we send a bunch of information that's not even in the show notes, and Brian sends it out to us, to all of us, including me, every week. And I appreciate that, Brian, that's awesome. You know what else I appreciate? What?
Starting point is 00:01:28 Our audience. When we say stuff, they're like, I know you said you don't know about a thing, but there are several things. Yeah, it's one of the benefits of having a podcast. Like last week, you mentioned, what were you talking about? You were talking about? I was talking about something,
Starting point is 00:01:44 Black and Docs. Yeah, oh no, no, it was black and black and Doc's and it it formatted all sorts of markdown code blocks. Yeah, and I mentioned that That's cool to format the blocks with the code blocks within markdown files But I kind of wanted an auto formatter for markdown itself and one of our listeners Mattias wanted an auto formatter for Markdown itself. And one of our listeners, Matthias, got ahold of us and said, hey, have you guys checked out, let's see, have you checked out MD format? So MD format, so I did check it out this weekend.
Starting point is 00:02:16 MD format is super cool. Actually, I'm kind of in love with it. So it's just like any other auto formatter. You sort of, you can, and it's written in Python. I wasn't necessarily needing it to be written in Python, but it's kind of neat that it is. So you can check it out, see how it's implemented and open source.
Starting point is 00:02:35 But so after you install it, you run MD format on a file. So you just sort of run it, you can run it on a, on give it file names. You can give it a directory and it reformats your Markdown. That's exactly what I wanted. But you have to kind of agree with its style because it is opinionated.
Starting point is 00:02:51 And there is a warning that says, hey, we're gonna, we may change this. So if you really like the style that we're using right now, you might wanna pin it, which is a good idea. So the style, one of the things that I really wanted was the underline headings of Markdown, like you can have on this next line of a, you can write a heading and then on the next line,
Starting point is 00:03:12 you can write like three equal signs or more, or three dashes, and that means a heading or a subheading. And I don't ever use that. I use the pound version. Only animals use the three underscore. Well, I use the- I'm joking, please don't write me, I'm joking. No, I often use the three lines
Starting point is 00:03:32 for like the horizontal line. I do too. Yeah, yeah, I do too. Anyway, so it switches it to the heading style I like. Bulleted lists are kind of cool. They alternate between dashes and asterisks because both of those work. But so like if you have embedded lists, it'll alternate so it looks nice. But I mean, the output is all the same anyway, but it makes it look nice.
Starting point is 00:03:59 And then there's standardization for ordered lists. However, this one tricked me up. I'm like I get it So what they do with ordered lists if you have like one two and three It converts them all to one and that seems weird and there's a reason around it there's a reason is because it reduces the number of get of Get diffs or you know when you when you change a version if you move things around of get diffs or you know when you change a version if you move things around the only thing that'll diff is the thing that you added or the thing you deleted not all the numbering changes. That's nice however it's something I like to be able it's less readable just right off
Starting point is 00:04:37 the bat so there is a flag you can pass it, pass it, dash dash number and it doesn't do that it just re-or it just numbers them consecutively, which actually also kind of nice because if you move things around, instead of having to go through and retype all those numbers, you can just do the empty format with number. So why would you put a one, four, seven, two, three, five? Yeah, well, I mean, you've done that, I'm sure.
Starting point is 00:05:03 Like you're moving things around and now they're wrong done that I'm sure like you're moving moving things around and now they're they're wrong so I'm excited about that. If I was writing in plain and as completely unassisted text editor I might write just one dot one dot one dot and so you have the ability to reorder it however if you're using any sort of tools that understand markdown when you hit enter it will increment that like typora and IA writers and others, right? So it's gonna number it automatically for you and if you want to reorder it then it's broken and so this is really nice. Yeah and then you could of course since it's a command line tool there's
Starting point is 00:05:36 probably a hook already written for commit like a pre-commit hook but you could write your own easily or just use it or use it and put it in CI. So, I like this is already enough and I'm going to use it right away just for this, but it doesn't stop there. You can also mark down, you can convert your code. So, it will handle auto formatting your code blocks also. And for that, it has a plugin system because it doesn't know how you want it formatted. So there's a plugin for black and one for rough
Starting point is 00:06:12 and a bunch of others that you can, so there's a web one so you can like format your JavaScript or CSS or HTML within your, so this is, it's pretty cool that you can have all these different plugins to convert your code blocks also. Anyway, I'm kind of in love with this. I like it a lot. That is very nice. Can you go back to the home page of this thing? I want to point out something interesting here. Okay. Yeah, go to the top. So it
Starting point is 00:06:37 says, here's how you install it. PipX install MD format. You could easily do UV tool install MD format, right Ryan? Yeah, definitely. Let's see the inject. That inject pipx inject MD format, MD format dash GFM, I'm guessing, github marketing format. What does inject do? Yes, I'm like what is that? And so while we were talking I did a little research and what it does is it will add additional packages but to the same virtual environment the dedicated virtual environment that pipx creates for the tool so okay pipx will create a tool for MD format and then also install these other things now I was we talked we
Starting point is 00:07:20 talked to UV up so much and we're gonna come back to it somewhat as well. But as far as I can tell, it doesn't have such a feature. You've gotta create a virtual environment and then install it. You might be able to do a run dash dash with and make a really long complicated thing, but there's no clean. So how about that? Paybacks for the win a little bit,
Starting point is 00:07:40 which is not usually what we're saying. I like paybacks, but that's not normally what we say. Yeah, no, cool. All right. All right. All right, on to the next which is pre-commit UV. I told you that we're coming back to it. Here it is. So despite it having no description, it's in the GitHub repo which they could probably use, the idea is to make, to bring the advantages of UV to pre-commit and get pre-commit hooks. So pre-commit is a project by Anthony Satili and the idea is it's like a multi-language runner happens to be written in Python but
Starting point is 00:08:18 it's not about Python per se that will run pre-commit hooks. So instead of saying well you want to use a pre-commit hook written in Rust, you've got to install and manage Rust and all that, you just kind of like, and do it its way, just pre-commit it, right? Yeah. So that uses pip and it has all the bonuses, but also the drawbacks of using pip.
Starting point is 00:08:37 So you can pipx install pre-commit, and then here we are again, pipx inject pre-commit and then here we are again pipx inject pre-commit dash UV and so then when you When it does it its thing to install and set up a new machine with the pre-commit hooks or updated or whatever It's going to use UV and they did a Go back up look for a second. There's the UV version UV tool install pre-commit with so that's like the inject Yeah, I think that inject yeah I think that that would I think that would do it okay I think that's the way that you could probably pull that off but I think you know maybe maybe that will do it if you
Starting point is 00:09:15 do you and I thought you could only do that with run but if you can do with in the install then you know there you go that's the that's the UV way awesome okay so we've learning stuff, but they're running a timed example of run one thing and then the other says Try pre-commit install hooks. I don't know what the hooks were but some set of hooks and install them with raw pre-commit and then pre-commit UV install hooks and the difference here is with regular pre-commit UV install hooks. And the difference here is with regular pre-commit,
Starting point is 00:09:45 it took 54 seconds plus or minus eight around. With pre-commit UV, it took 41. However, that's the first time you do that on a machine that involves those dependencies, right? If you hit it again, like if pre-commit UV has to build something from source, it's gonna be super cached again, right? So I think, well it does say 10 runs, interesting. But I think it's doing it with like an isolated environment or something like that.
Starting point is 00:10:16 Anyway, if you're already using UV and you use pre-commit hooks, check it out. There's some configuration options you can pass with environment variables and so on. Once installed it will use UV out of the box. However, you can disable that and then require you to run it with I think the dash command. The pre-commit, pre-dash commit dash UV. There you go. Cool. Cool. You know what? Before we move on, I do want to tell people about our sponsor. So let me tell everyone about Posit and Posit Connect Cloud. So this episode is brought to you by the folks over at Posit. They're originally known for building RStudio and Shiny, and they've created a bunch of
Starting point is 00:10:59 tools for the Python community. For example, Shiny for Python. I had Joe Chung on to talk about that. And a whole bunch of infrastructure things for the Python community, for example, Shiny for Python, I had Joe Chung on to talk about that, and a whole bunch of infrastructure things for Team Python. So, I wanna tell you all about PositConnect Cloud, which is a cool cloud-hosted, they manage it, pass that manages your data science platform. So, it simplifies deployment of data applications
Starting point is 00:11:23 and documents, and it might be the most simple way to share your Python content as a data scientist. So all you do, three steps, you put your code into a public or private repo, and then if it's private you can give it access to your private repo, for example. If it's public, obviously don't worry about it. Then you tell PositConnect, you basically point PositConnect Cloud at that repo, and you click deploy. That's it. And it's off and running and it'll clone your code repo, build your
Starting point is 00:11:49 asset, and host it on an online URL that you can share. And best of all, it will update your app, continuous delivery style. So if you push new stuff to the branch that you've told it to publish, it'll just go, ah there's a new version of your data science thing, let me update the one out on the cloud that you've told it to publish. It'll just go, ah, there's a new version of your data science thing. Let me update the one out on the cloud that you're sharing with people at your company or researchers or however you share it. And any GitHub user can create a free
Starting point is 00:12:14 PositConnect cloud account so you don't have to do a trial or anything like that. You can just use it for free and try it out. And if you need fast, lightweight way to share your data science content, try PositConnect Cloud. And as Brian told you last week, if you need these features but you need them private, then you can try the on-prem version PositConnect. So if you work on a data science team or moving fast matters, you owe it to yourself and your organization to check out PositConnect
Starting point is 00:12:41 Cloud. Visit pythonbytes.fm slash connect-cloud. See if it's a good fit., visit PythonBytes.fm slash connect dash cloud. See if it's a good fit. It's PythonBytes.fm slash connect dash cloud. The link is in your podcast player show notes right at the top. Thank you to Posit for supporting PythonBytes. Yes, very much. Thank you. So now I'd like to talk about a couple of PEPs. So these are pretty quick topics, but to talk about a couple of PEPs. So these are pretty quick topics, but there's some changes to the PEPs. So PEP57, no, I got that wrong. PEP758 is allow, accept, and accept star expressions
Starting point is 00:13:16 without parentheses. This was accepted as of, looks like the 14th of March. And so looking through here, and I kind of, I guess I just like, I don't really think about it too much, but if you have a try accept block and the accept can accept a lot, like you shouldn't have just accept with nothing.
Starting point is 00:13:38 You should have accept with which types of exceptions. That's right, you should put pass out there. Try accept pass is the best way. Try accept. No, I'm just kidding out there. Try accept pass is the best way. Try pass, try just skip the accept. Anyway, so the if normally right now if you have several exceptions that are allowed, you put them in parentheses. Now this is just a small little language change that says you don't actually have to put the parentheses there or you won't in the future. And I'm all for this.
Starting point is 00:14:08 This looks great. It seems like in slam dunk, and I'm sure that's why I got it. One of the reasons why it got accepted is that just in the future in Python 3.14 and beyond, you won't need the parentheses. That's really it. Kind of nice. However, you won't need the parentheses. That's really it. Kind of nice.
Starting point is 00:14:27 However, you know, so like four years from now, we can start using this if, because you'll, you know, once you stop supporting all other pythons below three point, you know, whatever, for package. So for package maintainers, this is, this is future news for normal humans. This is news for this year.
Starting point is 00:14:46 So anyway. Yes. Another PEP that is not accepted yet, it's in draft form. I just wanna highlight it because I think it's a good idea. Is PEP 781 make type checking a built-in constant. And the idea around this is I'm noticing as I'm using typing more, is that occasionally I need to, like if you're going to import something, like if I only import
Starting point is 00:15:15 something just so that I can import the type, so that I can put the type of something, you know, the type of a class or a type of a return value or whatever, in a function import or a function statement or whatever, a variable type. I don't really need the type, the import for running, I just need it for type checking because that's to get the type. So there's that, but it does cause some, but if you do that the import like, you know, is running all the time anyway. So, but you always have to, to say like, you know, from typing import type checking, what, to tell whether you're type checking or not, this is just basically just saying that we,
Starting point is 00:15:57 that we won't have to do this anymore. So instead of, uh, uh, or is the, it was the actual spec. Um, yeah. So we'll we'll have like, just have it be a constant is all. So anyway. Yeah, that's great. Part of the built-ins, right? Just you don't have to import it. You can just use it like you can print and others. Yeah.
Starting point is 00:16:15 Yeah, like underscore, dunder, type checking or something. So yeah, anyway. Love it. I think we should have it. It'll be good. Oh, while I was here, though, another thing I want to highlight I think we should have it. It'll be good. Oh, while I was here though, another thing I wanna highlight is I was like looking around, I'm like, well, what else is there?
Starting point is 00:16:30 And there's an index by category here at peps.python.org and it's really kind of great. This is a really well put together web page about how to navigate peps because there's a lot of peps, right? So I was like, well, I'm currently looking for ones that have been accepted. So you can pop down and say accepted PEPs. And then you can look at what the version number, which, which they're, what version
Starting point is 00:16:58 they're coming in, or which they came in and stuff. So really nice, nicely done, easy to navigate website. So good job. That's very nice. Anyway, so that's it for that. I wonder if that's available in a structured data way. Is there like a JSON that represents some data or something? There is an API.
Starting point is 00:17:12 I don't know if it applies to that. I'm sure somebody will tell us. Yeah. Mining point, chat GPT at that table and have it do it. Yeah, JSON metadata. Yes, indeed. All right. On my final item, Siri.
Starting point is 00:17:25 Sorry, anybody's phone who started? I just pronounced the same, S-E-R-I-E. I guess that would be the same. So this is for people who are more terminal-like, but need a better Git experience. So it's a rich Git commit graph in your terminal. So there's a little picture here. Open the image and look at it bigger, I suppose.
Starting point is 00:17:48 But basically, it gives you the entire branch tree and something that you can navigate around and interact with, kind of like rich, and lets you do things like search all branches over the commit log and browse through tags and all kinds of stuff. What do you think, Brian? I love this.
Starting point is 00:18:05 I mean, can you try it right away? Yes, I know. This is so cool. It looks really cool. I totally want to start like, okay, that's cool. Now it's written in Rust, so it's not a Python thing. It is a tool for Python people. Although I feel like we have a certain kinship
Starting point is 00:18:19 with Rust people. It's not really written in Python, but that doesn't matter because you just type the command and you get better understanding of your Python and other code, right? Yeah. So yeah, there's not a whole lot more to say about it. You can install it with homebrew, you can install it via cargo, other ways you can even build it from source.
Starting point is 00:18:34 But yeah, it's a pretty simple tool, but it's super nice. I'll have to check it out. Please be available on Windows. Because that's where I really need it. So yeah, yeah, for work, right? Yeah, yeah, I imagine it is. I mean, Rust is pretty cross platform. Yeah, them fingers.
Starting point is 00:18:51 Try to remember to try it in Windows terminal. Don't do it in CMD dot exe. Don't push your luck. You just have to terminal. Yeah, it's like the much nicer our show full PowerShell is the thing that the shell that runs but Windows Terminal is the app that hosts it and it has much better compatibility like for example rich works a lot better in Windows Terminal than it does in CMD
Starting point is 00:19:13 and so on. Get it from the Microsoft App Store. How am I only learning about this now? It's really nice and you can do like drop downs and say run this tab in PowerShell, run this one in PowerShell run this one and get bash run this one and I don't What you call dos whatever that is I'll report back because yes You let us know I've spent my entire career pretending that I don't or use a Windows machine at work, but yeah yeah, you could even I think open a particular tab as a Windows subsystem for Linux and boot2 type deal. So pretty cool.
Starting point is 00:19:45 Nice. Okay. Tanger. All right. Extras. We're on to our extras if you have extras. I have no extras today. Well, you're lucky that I do. Oh, and before we jump on, Will, who I just released a TalkPython episode about high performance algorithms, algorithms for high performance terminal apps. And we talked a lot about this, says Windows Terminal will be the default in future Windows releases. Good times for terminal users and, in the case of Will,
Starting point is 00:20:10 terminal framework builders, two-way builders. I wonder if you need term colors for Windows Terminal. So anyway, okay. I don't know. I don't know, but let's see what else I have extra I was on, okay, not the picture. So I wrote a blog post, I was just gonna link to the okay, not the picture. So I wrote a blog post I was just gonna link to the place that I'm using but I wrote a blog post called Sunsetting search and Brian
Starting point is 00:20:31 I used to use search so much I've talked about kagi and how much I love kagi and all those things right a couple years ago And I was probably doing a couple thousand searches per month in there. Yeah, I looked last month across my three computers that I use and my multiple browsers on each one and my phone and my iPad, I did 211 searches. How about that? You probably did more, but okay.
Starting point is 00:20:57 Kaggy keeps track in your account because they charge you by it. Oh, okay. So I went and looked at my Kaggy stats and said you did 211. Why is it going down? Because I'm using AI to answer so many of these questions these days. And so many with the pro chat GPT and stuff it's just like I could open up a bunch of tabs and do a research project myself or I could hey go
Starting point is 00:21:19 do some deep research on this and come back to me with references to where you found the answers and summarize it. And anyway I think it's I just thought it was really wild and so I am switching over to something called start page. Have you heard of start page? Yeah I've been using it for the last couple months. I love it. Do you like it? Yeah it doesn't have I'm gonna sound like a like an old guy or something I like that it just gives me search results and doesn't give me AI results at the top. Yeah, yeah, yeah. It's really good. And I super love it. You can go and it's you don't even have to have an account. You can just
Starting point is 00:21:55 basically set it up to like not show all of its ad stuff somewhere. I don't know I was fooling around that. But I think it's great. It's basically private. Like privacy preserving doesn't pass your information on along to to Google. But it's basically the Google index. There's some places that say don't show the ad as an appearance, general, I don't know. Somewhere. It says don't show all the marketing goo. But if you go and search there, it will sort of disintermediate your Google searches I guess and it has like little visits as privately right you know you can say if you do some kind of search like how do I get out of here let's
Starting point is 00:22:33 go back here if I search for like Python podcast or something it'll let you run it in like a little VM iframe that like doesn't even let it know where you came from it's pretty interesting this thing. It's it's pretty interesting this thing Yeah, I think it's pretty interesting. So it's using the Google index though Yes, and the way that it funds itself is it also has ads Yeah, however notice I have no ads in mind because I run an ad blocker and it takes them out So it's even better. See I'm running it with ads and it's just not annoying to me. I'm like, I'm OK with that. Yeah, that's good.
Starting point is 00:23:07 But because they're not tracking it, they're not tracking stuff. So, yeah, I mostly hate the the tracking and the retargeting and all that. Yeah. So, yeah, good. One of the curious things I've got about this is I wonder. So I know that Google sort of a tangent, but I know that Google, like, worsened their search like recent, I don't know, sort of a tangent, but I know that Google worsened their search like recent, I don't know, several years ago, so that people would have to go through more pages
Starting point is 00:23:29 so they see more ads. Yes, terrible. I wonder if that's the case with the, did they do that mucking about in the index so that start pages using the mucked up index or? I wonder. Probably, but it doesn't have as much of that not immediate, like not as much of that not immediate,
Starting point is 00:23:46 like not so much of the answers. So if you did a search on straight Google, you get, and here's a whole bunch of videos, and here's a bunch of Q&A stuff we found. And that's half of it. And then you got the ads, which are a third of it, then way down at the bottom somewhere, you get a little bit of something to start.
Starting point is 00:24:02 And I don't see any of that stuff there. Yeah, or just the AI answer at the top. I think that a lot of that's killing a lot of ad revenue for actual or actually traffic to people that are actually writing about interesting stuff. So I know exactly. Kaggy does have a very interesting approach on whether to put the AI answer at the top and that's if you if your search on Kagi ends in a question mark it'll put an AI answer if the same search without a question mark on the end goes there there's no answer shown. Interesting. Yeah I believe that
Starting point is 00:24:33 start page does have an answer sort of thing but you got to turn it on or something I'm not sure I feel like I've seen it but anyway since I'm not using search so much I thought well let me search around see what else I can find and yeah start start page. It's interesting that you're using that as well. Yeah. Yes, I think it just got turned on by me. I didn't think I found it.
Starting point is 00:24:53 I think Vivaldi turned it on or something, but I don't know. Interesting. Okay. Yeah, I'm a fan. But all right. Cool. Yeah, cool. One final extra, Rhett Turnbull, who's been on Python to talk about building Mac apps with Python,
Starting point is 00:25:09 sent us, so he knows something about building some frameworks and stuff. He says, remember I said, Brian, you can just UV tool install rough, and then you just have rough and don't have to put it into your requirements file or your UV lock or wherever those things go. He says, good advice, however, you might want to actually put it in your virtual environment.
Starting point is 00:25:28 That way it becomes part of your pinned dependencies so that people who are contributing to your project use the same version of Ruff if they don't already have that exact version. And you don't get like flip-flop of git changes because something changed about Ruff itself or the rules defaults or something. Yeah, yeah, I totally agree. And that's one of the fun things that we have in talking about Python
Starting point is 00:25:51 tools and everything for everybody is that the advice for solo developers is different than the advice of people that work on teams. So yeah, teams even being open source teams. Yeah, exactly. Exactly. All right. Shall we make a joke? Sure. Let's see how I did today. This one, I thought of you, Brian, when I wrote this, because I thought this is all about the C developers, or even the C sharp, or C++.
Starting point is 00:26:16 I'm sure there's many other languages that have this. But C in particular came to mind. This has to do with a genie. And this software developer like person comes along and stumbles upon the golden genie shaped little vase or whatever the heck it is. Yeah. And rubs it as you do, out comes a genie says I will grant you three wishes okay but before you can the genie interrupts. The rules are you can't wish for death or life
Starting point is 00:26:45 or make people fall in love and you can't wish for more wishes. That's usually the escape hatch. You have three wishes. Like first wish, I wish for a million wishes. Now let's start. Can't do that. Can't wish for more.
Starting point is 00:26:58 So I can wish for fewer wishes? Why would you wish for that? I think there's a bug in this in this cartoon so I'm gonna fix it. I wish to have negative one wishes. Fine, granted. You have four billion two hundred ninety five thousand nine hundred and sixty seven, sorry, four billion two hundred ninety five million nine hundred sixty seven thousand two hundred and ninety five wishes left. Stack up and underflow. Yeah, it's an unsigned int they were storing it in.
Starting point is 00:27:28 Yeah. Yeah, I think you're right. It has a bug, because the cartoon has 0, and 0 should be valid for any numbering system. It should, but minus 1. And then if you go to the thread a little bit further down in here, there's a lot of pretty good comments of almost no one caught that it needs to be negative like under flow like zero Doesn't under flow people but someone pointed out the hat
Starting point is 00:27:52 Pointed out you need to upgrade it the 64-bit genie. There's some kind of like animated crazier crazy Game with like lightning striking it. That's the 64-bit version. That's funny It would just give you even more negative, more wishes if you underflowed that though. Yeah, so do you remember the first time you hurt, you probably don't, and I don't either, but early on learning these, like the genie
Starting point is 00:28:15 in the lamp stories, I was like thrown because like one, that didn't look like any lamp I had in my house. And why are you rubbing the lamp that seems weird why would somebody do that but guess it comes from a time when you've got more time on your hands and well no yeah well it's also like it's an oil lamp they look different and also it was probably brass and now that I'm an antique dealer we you know You got a policy or something right? Yeah, yeah, yeah
Starting point is 00:28:48 I don't know that I own a single thing this brass I got a lot of crap around my house, but I don't know that any of them are brass, but who knows really? Anyway, I thought that was a pretty good pretty good joke. What do you know? It's good. I like it Yeah, yeah as a as a C person you have to approve except for the bug. Except for the bug. Except for the bug. They didn't they didn't test it. No, they certainly did not test it. We'll come back to that next week somehow. I'm sure. Yeah. All right. Well, thank you, Brian. Thank you everyone for listening and see you all later.

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