Python Bytes - #433 Dev in the Arena

Episode Date: May 26, 2025

Topics covered in this episode: git-flight-rules Uravelling t-strings neohtop Introducing Pyrefly: A new type checker and IDE experience for Python Extras Joke Watch on YouTube About the show Sp...onsored by us! Support our work through: Our courses at Talk Python Training The Complete pytest Course Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky) Brian: @brianokken@fosstodon.org / @brianokken.bsky.social Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: git-flight-rules What are "flight rules"? A guide for astronauts (now, programmers using Git) about what to do when things go wrong. Flight Rules are the hard-earned body of knowledge recorded in manuals that list, step-by-step, what to do if X occurs, and why. Essentially, they are extremely detailed, scenario-specific standard operating procedures. [...] NASA has been capturing our missteps, disasters and solutions since the early 1960s, when Mercury-era ground teams first started gathering "lessons learned" into a compendium that now lists thousands of problematic situations, from engine failure to busted hatch handles to computer glitches, and their solutions. Steps for common operations and actions I want to start a local repository What did I just commit? I want to discard specific unstaged changes Restore a deleted file Brian #2: Uravelling t-strings Brett Cannon Article walks through Evaluating the Python expression Applying specified conversions Applying format specs Using an Interpolation class to hold details of replacement fields Using Template class to hold parsed data Plus, you don’t have to have Python 3.14.0b1 to try this out. The end result is very close to an example used in PEP 750, which you do need 3.14.0b1 to try out. See also: I’ve written a pytest version, Unravelling t-strings with pytest, if you want to run all the examples with one file. Michael #3: neohtop Blazing-fast system monitoring for your desktop Features Real-time process monitoring CPU and Memory usage tracking Beautiful, modern UI with dark/light themes Advanced process search and filtering Pin important processes Process management (kill processes) Sort by any column Auto-refresh system stats Brian #4: Introducing Pyrefly: A new type checker and IDE experience for Python From Facebook / Meta Another Python type checker written in Rust Built with IDE integration in mind from the beginning Principles Performance IDE first Inference (inferring types in untyped code) Open source I mistakenly tried this on the project I support with the most horrible abuses of the dynamic nature of Python, pytest-check. It didn’t go well. But perhaps the project is ready for some refactoring. I’d like to try it soon on a more well behaved project. Extras Brian: Python: The Documentary Official Trailer Tim Hopper added Setting up testing with ptyest and uv to his “Python Developer Tooling Handbook” For a more thorough intro on pytest, check out courses.pythontest.com pocket is closing, I’m switching to Raindrop I got one question about code formatting. It’s not highlighted, but otherwise not bad. Michael: New course! Polars for Power Users: Transform Your Data Analysis Game Apache Airflow 3.0 Released Paste 5 Joke: Theodore Roosevelt’s Man in the Arena, but for programming

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bites, where we deliver Python news and headlines directly to your earbuds. This is episode 433, recorded May 26th, 2025. I am Brian Ocken. And I'm Michael Kennedy. And this episode is sponsored by us. So please check out offerings at the courses at Talk Python Training and at PythonTest.com, of course, to learn your PyTest goodies. And also thank you to the Patreon supporters, you rock. If you'd like to connect with us, of course, check out the links in the show notes for both Michael, myself, and the show
Starting point is 00:00:36 at Blue Sky and at Mastodon on Fostedon. And if you'd like to listen to the show, if you listen to the show, thank you. If you'd like to watch it also live, check out pythonbites.fm slash live, usually Monday at 10 a.m. Even when we forget that it's a holiday today. But yeah, also if you'd like to get,
Starting point is 00:00:58 if you're listening to this, you kind of want to check out some of the stuff that we're talking about, but you can't remember the link, sign up for our newsletter on at Python by set FM, really easy to find the link there. And you'll get an email every week with all of the links and everything we talked about plus extra goodies to help you if you help you get up to speed if you want to. So that's wonderful. What do we have to start with Michael? Let's start with a throwback. Okay. to. So that's wonderful. Um, well, what do we get to start with Michael? Let's start with a throwback. Okay. Okay. So did you ever watch the movie fight club?
Starting point is 00:01:31 Brad Pitt, Edward Norton? Yeah. It was, it was a cult classic, right? It was definitely a first rule of fight club. First rule fight club. Don't talk about fight. Second rule of fight club. You do not talk about fight club so what are we doing that what are we talking about because up next are get flight rules fight rules I want to call fight so what are flight rules they're a guide for astronauts or programmers who use get who now do things when stuff goes wrong with Git. So they're hard earned, they're not fight club rules,
Starting point is 00:02:08 they're hard earned body of knowledge, recorded in manuals that like, if this goes on, what do you do? If you stir the tanks and there's an explosion and a lot of the oxygen shoots out of the spaceship, what do you do? And so on, okay? All right?
Starting point is 00:02:24 So this is actually pretty cool. I think this is going to be super helpful for a lot of people. So it talks about, well, what do you do with Git when things go wrong, basically? I mean, source control is awesome until you're like, it says there's a merge conflict and I don't know how to merge it, or I don't
Starting point is 00:02:40 know how to do that correctly. Or I've created the repo here, but I want to push to a different origin there. And how do I do that? So this is like, uh-oh. OK, so it's grouped by sort of category or something, I guess. So repositories. I want to start a local repository.
Starting point is 00:02:56 I want to clone a remote one. These are pretty standard, right? But as you go down, you'll see. I set the wrong remote repository. I want to push to a different origin and so on. There's edit rules, there's staging, and they're pretty interesting. There's discarding changes.
Starting point is 00:03:13 I want to discard specific unstaged changes, or I want to discard all of my untracked files, but not the tracked ones, and so on. Or maybe if I am staging let's see I staged too many edits and I want to break them into a separate commit what do I do I want to unstaged my edits and unstaged my staged right so all these things have sort of here's the scenario rebase emerging I need to update the parent commit of my branch when I'm rebasing or whatever
Starting point is 00:03:45 There's a bunch here like I even called out a few in the show notes I gotta check out the rebasing stuff because that always stresses me. I know me too. One is like what did I just commit? I Want to restore a deleted file? I want to discard a specific and she and stage changes not all of them, just one of them and so on. Isn't this cool? Yeah, this is great. Yeah, well, I think you're letting me stretch the fight rules a bit, but I had to. It was fun.
Starting point is 00:04:15 But I think this will be super helpful. It's sort of how to deal with stuff when, how to deal with Git when Git stuff goes wrong. Oh, and sub modules, man. Oh boy. That's a whole nother. That's a whole nother. That's a whole nother. No, it's good. Okay.
Starting point is 00:04:32 So let's talk about T-strings a little bit. We've already covered T-strings on the show before, I believe they came in with pep750, but they're very new. So to play with them, I think it's just 3.14.0 beta one has them, I don't know if anything before. So I was just playing with them this morning a little bit, but I'm really happy with this article from Brett Cannon,
Starting point is 00:05:00 Unraveling T-strings. And what I really like about it is because I really kind of wanted to play with T strings or just understand them more, but I didn't want to actually require, you know, it'd be great if you didn't have to have the latest 3.14 beta one to do this. And so that's really with this article. So even though T strings come in with the 3.14, this article talks about going through all the details of kind of how T strings work without actually using T strings. So Brett starts out with this idea of like, let's say you've got a, this little converter thing of converting take this function called F yeah, that takes a T string.
Starting point is 00:05:45 But here it says T string, but it's just a variable name. Takes something and returns something. And right off the bat, it's just an identity. And what we want and what he's showing is like with F strings, F strings do a lot of things. Like they can replace variables, they can do what are those formatting stuff. they can do, um, what are those formatting stuff? They can do format specs, specifiers, and then there's conversions. Like this is
Starting point is 00:06:10 a raw string conversion thing. Um, and, uh, and, and so he walks with that, with that, with an example of just, you know, the, if once you pass the SF string into the function, what do you get out? But then he talks about, like, basically, it starts out simple, but then he goes into, well, what if we wanted to pass in the parts, all the different parts passing into our function, and then he passes in, uses, like, the representation or conversions and format specifiers to walks through those. So basically we've walked through so far evaluating Python expressions, applying specified conversions and then format specifiers. And then goes into to like just dives into it further
Starting point is 00:06:57 of like, let's keep track of all this stuff. And then let's, you know, let's make, we've got a lot of stuff we're keeping track of. So let's put some of the things that were like the all of the conversion stuff, we'll put that into a an interpolation class. And, and I was a bit lost here. So I actually walked through all of this. And it was really helpful to actually run the code, like copy it into into into their
Starting point is 00:07:21 walk through it, and then a template class and basically, walking through all the different parts and then at the end he shows you says basically we've just built up something that would be like t-strings even though we don't have t-strings yet and then gave an example of what it would look like what it looks like 3.14 the example in the in the pep 750 is is right there You can run that too. All really good. So if you really want to get a handle,
Starting point is 00:07:47 get your brain around what T strings are, this is a great article. But I was a little frustrated that it was all in like just command, like just files. So I went ahead and rewrote the, all of his examples as Python test or PyTest tests. So you can just have one file and run them all. Also get to show off near at the end because the last example you actually have to have a Python version, Python beta 1, 3.4 beta 1. So I'll show you
Starting point is 00:08:19 to show people how to use skip if to skip that if you don't have that Python version installed. Yeah, that's cool. I really had fun walking through all of this article from Brett, so thanks, Brett, for putting it together. Yeah, very cool. Real-time follow-up. This was not what I was expecting to talk about, but I just had Paul Everett, Jim Baker,
Starting point is 00:08:41 and Dave Peck all on Talk Python just a little bit ago talk about T-strings. So if you wanna dive into the internals with some of the folks that worked on that as well. Keep a list in there. Yeah, that's not my next topic. My next topic is like a hacker version, cyberspace version of H-top, Neo-top, H-top, matrix version. No, Neo-H-top, a blazing fast system
Starting point is 00:09:04 for monitoring your desktop, which I think is super cool. And I'm pretty sure it's cross-platform, a modern cross-platform system monitor built on top of whatever doesn't matter. But Rust is in there somewhere. So we look at the features. It has real-time process monitoring, CPU and memory usage tracking. This is a GUI, by the way, modern UI with dark and light themes. Cool filtering, you can pin processes,
Starting point is 00:09:29 you can kill processes, very nice. So I actually have it running, I'm gonna pull it up here, you can see whatever's happening on my computer right now. Apparently, guess what? The Vivaldi helper for StreamYard is grinding away using 50% CPU. But there's all sorts of cool stuff.
Starting point is 00:09:47 You can get these little informational things here. No, it's the pen. Hit the informational things. It actually shows you stuff like how much CPU and memory is that process using exactly, what is its ID, but also what is its parent ID, has graphs for the memory. Also, what command was used to launch it. I think this is super cool. Oh that's neat. So if you see oh here's a there's this
Starting point is 00:10:10 why is this process running you know it's a sub process but what is it doing it actually shows you then if you go to the parent this is I think even cooler maybe you go to like say Vivaldi in this case and it shows all of the different sub processes that Vivaldi has created and how much CPU they're each using, how much memory they're using, what their IDs are. Isn't that cool? Yeah, actually, I think I might, a lot of these are useful for servers,
Starting point is 00:10:35 but I think I'd use this to restore it on the desktop. Yeah, exactly. I'm thinking this is really nice for the desktop because Windows has Sysinternal stuff. What is it? Sysmon, I think it is, which is incredibly good. It's way better than this. But it's Windows only, right?
Starting point is 00:10:51 And on the Mac, we've got system and iStats menu, rather, which are really nice. But it doesn't give you the look inside the processes quite like this. You also get stuff about network, about storage, about memory, all these things. So I think that's pretty cool. And of course, look, it looks like you can kill things from here. Yes, you can definitely kill them. You can be malicious. Anyway, that's my my item here. If
Starting point is 00:11:16 you want some nice gooey desktop monitoring tools that are cross platform, Check out this Neo H-top thing. It's pretty cool. Rift Top. All right. Where are we at? Remove. OK, next, I think we just talked about TY, or thank you, or Ty, or whatever that was last week or something recently. Yes, we did. Yeah, so Ty was the astral type checker. And so this week, why not do another?
Starting point is 00:11:45 So Pyrefly is a new type checker from, it's from Facebook Meta. So there's an article, a new type checker, yeah, introducing Pyrefly. And one of the things I think is interesting about this, so it talks, I played with it just a little bit. This is also based on Rust, so it's super fast. And the, one of the reasons why they built it apparently,
Starting point is 00:12:10 the principles behind it are performance of course, but also IDE first. So I guess that totally makes sense, but I think a lot of things are built, you know, not like not thinking about the IDE right away, maybe, but this is thinking about the ID right away, maybe. But this is, this is thinking about making sure that integrates with the ID really well and have a command line and an experience command line interface experience as well as good. So IDE first performance inference, having this
Starting point is 00:12:39 work well with Python programs that are not typed yet. They're not annotated at least, but they might still be, you know, have consistent with types, so it infers types. And open source, of course. So this is not a, even though it's from the Facebook engineering group, it's not closed source, open source stuff. So that's good.
Starting point is 00:13:02 There's some talk about what they're gonna do in the future, but really slick-looking website, of course, with a VS Code extension. And I made a mistake, though. So I downloaded this, and I thought, yeah, I just want to run it on one of my projects to see how well. And the project I chose was the PyTestCheck plugin,
Starting point is 00:13:23 and it blew up. It didn't blow up. It worked fine. It just told me a whole bunch of stuff that was wrong that's not really wrong. But since, so I probably shouldn't have chosen the one project that I work on that completely abuses the dynamic nature of Python.
Starting point is 00:13:42 There's a check object. So I do often from PyTest check import check. This check object is both the interface into the system, plus it's a context manager, and it overloads a whole bunch of stuff. So, yeah. Maybe. But having all those warnings might be a hint that maybe I should redesign this. We'll see. Anyway, Pyrefly, another faster type checker. Yeah, neat. Interesting. Yeah, two things that I'd like to add. It's a good find. I was considering covering this as well. Pyrefly is a replacement for the existing Pyre, P-Y-R-E, from Facebook. Okay.
Starting point is 00:14:22 So, or from Meta. So they had had that previously and I guess this is like a rewrite or something like that. And the other thing is comparing it to T-Y, AKA Redknot from Astral. This looks more MyPy-like, which is somewhat the goal of T-Y as well. But T-Y I believe is meant to be more forgiving. So maybe it would scream at you less, right?
Starting point is 00:14:49 It's meant to work on less typed code, I guess. But the other, the main difference that I, I haven't looked in this deeply, so maybe it's in there somewhere. But one of the big deals of TY is in addition to making a type checker that comes with an L um, an LSP, a language server.
Starting point is 00:15:06 And one of the challenges with Pylance, the one built into VS code is when you get to extremely large code bases, basically it falls apart and sometimes can't even keep up or work with it. So like things like your auto-complete or go to definition should start to shut off because the language server can't deal with ginormous amounts of files and so they're trying to build a rust based language server that flies on even millions of lines of code so when you compare TY to Pyrefly they're not exact just like well one is from Facebook and one is from
Starting point is 00:15:42 Astral right they're they're slightly different as well. So do you know if Pyrefly is doing like a replacement language server also? Or are they using, I don't know that either. They do have LSP as one of their tags, but I don't see any more words than that. Let's see. Okay.
Starting point is 00:16:02 On their website they don't. Do you plan to build an LSP? Yes, see a roadmap. Okay. And what does the roadmap say about LSPs? It doesn't appear on it. So you know, it's closed maybe? LSP? Okay. Yeah, I can't tell. It's an infinite scroll thing so it's like sort of hard to get there. I mean you kind of need an LSP to understand it. You need something that parses into something like an abstract syntax tree, then you start asking type-based questions about it, right?
Starting point is 00:16:31 That's how a lot of these work. And one of the frustrating things though, with the limited, I'm looking forward to having some of these Rust-based language servers come online because it's the large projects that I really need all the help with. The smaller projects, I don't really need, I mean, I kind of can get my head around it already, but.
Starting point is 00:16:51 So, anyway. I'm just gonna be using chat to write on my codes, I don't care. No, just kidding. Just kidding, people. Just stick with the vibe. Yes, speaking about stuff running on platforms I worked on, talk about it on training.
Starting point is 00:17:04 Let me tell you about a new course that we have over here. Polars for power users, transforming your data analysis game. So this is a super fun course put together by Christopher Trudeau. And it's, it's super fun. If you want to learn Polars and you know, a little bit of pandas, or you know, tools like Excel and others, it kind of walks you through like, Hey, you know how to do this in other tools, but here's the advantages, here's the different API. Yeah, really fun if you want to get started with Polars or see it compared to various tools like I mentioned.
Starting point is 00:17:38 Definitely worth checking out. 29 bucks, you can get going there and it's three hours, I think. Not a lot of your time, not a lot of your money, but you'll have a nice new skill set at the end. Nice. And let's see what else have we got here. A couple of announcements. Airflow, the workflow framework,
Starting point is 00:17:57 has its biggest release, the most significant release in the project's history. They describe it as Airflow 3.0, builds on two, adding a new service-oriented architecture, modern React-based UI, enhanced security, host of long-quested features such as DAG versioning, directed acyclic graph versioning,
Starting point is 00:18:16 improved backfills, event scheduling, and remote execution. In this case, I guess that's a good version, good thing, a lot of times remote execution's bad, but when you ask for it, it's good. Anyway, if people do Airflow, check it out. It's pretty cool. There's a new one there.
Starting point is 00:18:30 And my last one, this came in just yesterday, I think, is when I first saw it. Paste, Brian, do you use some kind of clipboard manager? Yeah. Other than just the clipboard itself, obviously. Oh, clipboard manager. No, I don't. Okay, so once you start using one of these things, you will never ever want to go back to working without it.
Starting point is 00:18:52 Here's the thing. Have you ever done this? Have you ever gone and said, oh, I need to copy this? And then you go over and accidentally copy something else. Or I don't know about you, but I use Bitwarden for my 2FA stuff. And by default, it has a copy. In addition to pasting the 2FA code, it'll just copy it because sometimes the paste fails. But if I didn't have this clipboard thing and I copied something important and went over and I tried to want to paste it, someone, oh, I got to log in.
Starting point is 00:19:17 I hit my Bitwarden thing. And I'm like, no, it's gone. Where did that go? You go back and find it. This thing called Paste for Mac. I know there's similar things for other platforms, but my recommendation in this little extra is Paste. So super, super nice thing.
Starting point is 00:19:35 They just released FIVO, which is like a big improvement. So what it does is it'll keep track of three months, a year, one month, whatever, of clipboard history. So you can copy three, four things, go back, hit a button, go back, find them, you get little thumbnails of them. Or you can even search, you're like, just I want to see what did I copy. You can just type Firefox, and I'll show you everything you've copied from Firefox in the last month. And you copy from that, or reuse it, or whatever. And it'll like synchronize across Mac and your iPhone
Starting point is 00:20:05 and so on. So super cool thing. Anyway, they just had a big release. Works much nicer. If you only use something like this. I think I would do it in just like five minutes, but you know. Yeah, you can do five minutes.
Starting point is 00:20:14 I mean, you can do, you can change however you want, but I think you'd be surprised. You're like, oh yeah, I know I copied that yesterday. Or I have the same, whenever I'm creating a new Python Bytes stream, I have the same description, but the software won't remember the same description from so I got to copy it or retype a paragraph Right like no, okay So I just hit the the hotkey to pull this up and I type join us and then boom That's the join us to be part of the show and come to the live stream better better than I just paste it
Starting point is 00:20:41 And so from last week, I just get that back in like three keystrokes. Oh nice, okay. So, if you're on Mac OS, check out this pace. They had a new release, super nice. If you're on something else, maybe send us recommendations. We'll give them a shout out or something. All right, those are all my extras, how about you? I got a couple, let's see, where are we at?
Starting point is 00:21:01 So, Python, the documentary, I've gotta look forward to this. There's a trailer out, official trailer for the Python documentary. It's just a couple minutes, but looks like it might be fun. This looks great, Brian. This looks really good.
Starting point is 00:21:16 And I know they did this like joke thing about Guido coming back and the empire strikes back sort of thing and all that. But if you click on cult repo the username of this Yeah, right there and go to their videos and look through it Like if you look at all the things they've done you can see by the way that video I talked about but they have From node.js to Dino and they've got the angular the official documentary and so on They've got a bunch of cool in-depth highly produced Ruby on rails the documentary and so on a They've got a bunch of cool, in-depth, highly produced
Starting point is 00:21:46 Ruby on Rails, the documentary and so on. A lot of programming-based, framework-based documentaries, like really nice storytelling there. So I think that is what's coming with the Python documentary. I'm gonna have to check out life advice from Bjorn Struestrup. So.
Starting point is 00:22:03 Pointers, always use pointers in your life. Never duplicate. Yeah, interesting. Yeah. No, some good stuff there. Okay. So that was one was the documentary. Documentary. Also, quick errata. I mentioned that when I was talking about T-strings, I mentioned like the raw conversion. It wasn't the raw. Henry corrected me. It's the wrapper conversion. Thank you, Henry.
Starting point is 00:22:31 So the next step, so, okay. So the new Python, oh, Tim, Tim Hopper. We covered this already, the Python developer tooling handbook. And one of my comments was, where's the testing? So anyway, he added a testing intro also, setting up testing with PyTest and UV. And actually combining the two is kind of fun to show how you do add PyTest to your dev environment with UV. Pretty fun. Very simple example. A little calculator,
Starting point is 00:23:05 short thing. Add, subtract, multiply testing. So shameless plug. If this isn't enough intro to PyTest that you'd like, I suggest going over to courses.pythontest.com where you can pick up any course you want on PyTest, uh, couple others, I guess, the last thing is, uh, I got the, I've been using pocket for a while to keep track of things I want to read pockets going away. Um, it's a shutting down, I think as of July, July 1st or anyway, I don't know when it's shutting down, but, um, but it's shutting down. So you gotta move off onto, if you're using Pocket, don't use Pocket anymore.
Starting point is 00:23:47 What do you should use instead? Obviously you can check whatever, try out your own things out. I tried a few things and I landed on a Raindrop. So I've been liking Raindrop so far. And somebody, I posted this on social media. Somebody said, well, what does the code look like? Cause sometimes these bookmark sort of apps aren't that great at code highlighting.
Starting point is 00:24:10 And I'll show you an example. This is of Brett's T-string article. Stop bad. So the web view had, this is the normal view had, oh, it doesn't show highlighting this. The other, the other version I had, had, had syntax highlighting on Brett's art Brett's site, but it doesn't show syntax highlighting. It's just code blocks.
Starting point is 00:24:34 So it's not bad. Anyway, I've been enjoying raindrops so far and that is all of my extras. Awesome. Yeah. I started using Raindrop and I love it. I moved all my, I, I went on a journey, Brian. Not only did I started using raindrop and I love it. I moved all my, I went on a journey, Brian. Not only did I start using raindrop, I said, I'm going to go to all my various browsers I've used throughout the years. Firefox, Vivaldi, and others. I'm going to clean up all of their bookmarks because they'll be like, just cruft.
Starting point is 00:25:01 You know what I mean? From like 10 years of something like, nope, nope, nope, nope, nope, nope, nope, nope, keep these 100 or whatever. Then I imported all of those into Raindrop and now I have the extension in all of my browsers so on any computer, any browser, I have all the same history, it's really nice. So I definitely second that. Also-
Starting point is 00:25:20 You're a beast, I just started off clean. I got like three things in there so far. I not only migrated, I cleaned it up. One other option, if you're a self-hosting person, this appeals to me, but I did not do it because I just don't want more things to babysit at the moment. But this thing that used to be called Hoarder,
Starting point is 00:25:37 now named KaraKeep, looks super cool. Looks like it's like a self-hosted, read it later, bookmark service, which is cool Automatically tag your bookmarks with AI and etc. Etc. Looks pretty cool. So hmm. Yeah, but I'm not using it Are you ready for a different kind of joke? Yeah Have you seen this yet? No, okay. Well, here we go So I was sitting around thinking I don't know why I came across this, but I'm like, what if we had like historical quotes that are like well known, but they were reframed
Starting point is 00:26:11 for programmers, right? So I said, I set out to make this just the joke for the show. And then I ended up like, you know what, why don't I just publish this and then we'll still make it the joke for the show. So you know, the Roosevelt's man in the arena speech? I love this speech. I'll read it, it's a little bit long, but not very long. I'll read it for people.
Starting point is 00:26:29 Says, it's not the critic who counts, not the man who points out how the strong man and woman stumbles, or where the doer of deeds could have done them better. The critic belongs to those who are actually in the arena, whose face is marred by dust and sweat and blood, who strives valiantly, who errs, who comes up short and again and again because there is no effort without error
Starting point is 00:26:49 and shortcoming, but who does actually strive to do the deeds, who knows great enthusiasms, great devotions and who spins oneself in a worthy cause, who at best knows in the end the triumph of high achievement and who at the worst if they fail, at least they fail while doing greatly so that their place shall never be with those cold and timid souls who never know either know victory nor defeat right so that's the famous quote what if what if theodore was speaking about programmers so I came up with a couple versions I think these are more fun all right it is not this I kind of gave him title. This is a legacy code warriors
Starting point is 00:27:26 It's first one it says it is not the keyboard warrior of comment threads who elevates the craft But the engineer whose IDE still glows at midnight whose mind is seared by stack trace here graphics and whose resolve endures failed build after failed build the honor rests with those who weighed into legacy code knee-deep in technical debt Emerging grimy, but try and fit with a cleaner architecture or if defeated bear the proud scars of that thought by having fought for elegance Then I'll do the last I'll read the last one just this is good is to the open source maintainers No glory clings to the spectator who counts another's failed build it crown to the open source maintainers No glory clings to the spectator accounts and others failed build it crowns the open source contributor whose pull request is Battlescarred by review whose changelog tells the failures endured and whose merged code becomes the unseen engine of tomorrow's discoveries Yeah, something is yeah something inspiring for people there
Starting point is 00:28:22 You having trouble sleeping? Actually, yes, but this is not a head and summit Something inspiring for people there. You having trouble sleeping? Actually, yes, but this is not evidence of it. No, I like it. Yeah, thanks. All right, well, that's all I got for you, Brian. That's what I got. All right, that's a good wrap it up then.
Starting point is 00:28:37 Indeed, all right, see you later.

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