Python Bytes - #415 Just put the fries in the bag bro

Episode Date: December 23, 2024

Topics covered in this episode: dbos-transact-py Typed Python in 2024: Well adopted, yet usability challenges persist RightTyper Lazy self-installing Python scripts with uv Extras Joke Watch on Yo...uTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training The Complete pytest Course Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky) Brian: @brianokken@fosstodon.org / @brianokken.bsky.social Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: dbos-transact-py DBOS Transact is a Python library providing ultra-lightweight durable execution. Durable execution means your program is resilient to any failure. If it is ever interrupted or crashes, all your workflows will automatically resume from the last completed step. Under the hood, DBOS Transact works by storing your program's execution state (which workflows are currently executing and which steps they've completed) in a Postgres database. Incredibly fast, for example 25x faster than AWS Step Functions. Brian #2: Typed Python in 2024: Well adopted, yet usability challenges persist Aaron Pollack on Engineering at Meta blog “Overall findings 88% of respondents “Always” or “Often” use Types in their Python code. IDE tooling, documentation, and catching bugs are drivers for the high adoption of types in survey responses, The usability of types and ability to express complex patterns still are challenges that leave some code unchecked. Latency in tooling and lack of types in popular libraries are limiting the effectiveness of type checkers. Inconsistency in type check implementations and poor discoverability of the documentation create friction in onboarding types into a project and seeking help when using the tools. “ Notes Seems to be a different survey than the 2023 (current) dev survey. Diff time frame and results. July 29 - Oct 8, 2024 Michael #3: RightTyper A fast and efficient type assistant for Python, including tensor shape inference Brian #4: Lazy self-installing Python scripts with uv Trey Hunner Creating your own ~/bin full of single-file command line scripts is common for *nix folks, still powerful but underutilized on Mac, and trickier but still useful on Windows. Python has been difficult in the past to use for standalone scripts if you need dependencies, but that’s no longer the case with uv. Trey walks through user scripts (*nix and Mac) Using #! for scripts that don’thave dependencies Using #! with uv run --script and /// script for dependencies Discussion about how uv handles that. Extras Brian: Courses at pythontest.com If you live in a place (or are in a place in your life) where these prices are too much, let me know. I had a recent request and I really appreciate it. Michael: Python 3.14 update released Top episodes of 2024 at Talk Python Universal check for updates macOS: Settings > Keyboard > Keyboard shortcuts > App shortcuts > + Then add shortcut for single app, ^U and the menu title. Joke: Python with rizz

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 415 recorded December 23rd, 2024. And I am Brian Ocken. And I'm Michael Kennedy. And we're excited that today's episode is sponsored by us. So check out TalkPythonTraining and PythonTest.com where we have courses there. And also, thank you to Patreon supporters. If you'd like to connect with the show and talk with us or give us suggestions to go on the show, look for the links in the show notes for all of the Mastodon or Blue Sky links.
Starting point is 00:00:36 We check those, and we're on both of those. You think it's a little disingenuous that we have Blue Sky, even though we live in Oregon and it's winter, and we haven't seen a Blue Sky for a very long time hey i saw a blue sky like three days ago four maybe it was a couple weeks ago okay we have them once in a while um and if you're listening to this on in your podcast player um thank you and share it with friend and also um occasionally may be fun to switch over and watch us live. So go to pythonbytes.fm slash live,
Starting point is 00:01:09 and you can see when we're going to record next. Except for on weird days like today where I contacted Michael and said, hey, can we record early? So we did. Well, it's Christmas Eve Eve, which makes the schedule a little wacky. Yeah.
Starting point is 00:01:25 And while we're on that, Brian, this is our last episode of the year. Next episode, we'll just put a little season's greeting or something. And so people have to appreciate this one for all of 2024, right? Because this is it. Yeah. Yeah. And I really had a fun this year. So I'm grateful for everybody to stick around.
Starting point is 00:01:43 Stick it around and listen. Yeah, I am too. And the final thing I want to say is um if you haven't already why don't you head over to python bytes.fm and click on newsletter and sign up for the newsletter so that you can get all of the links that we talk about in the show and some commentary around it and some notes just direct delivered right to your inbox so that would be nice. Everyone needs some artisanal notes. Artisanal notes, yes. Fresh Oregon artisanal made in Oregon.
Starting point is 00:02:10 Probably still dripping wet. Maybe a little moss on it. Yeah, exactly. Well, why don't you take it off with the first topic, Michael. All right, let's do it. So I would like to talk about durable software. Honestly, this is something I don't hear a ton of in the Python space. So I thought I'd shine a little light.
Starting point is 00:02:31 Both projects that I'm highlighting today for the main topics on my end are sub 500 GitHub stars. So they're used by people, but they're not major projects. But I think they could be really useful. And so I'm kind of shining a light on, on some up and coming ones, let's say. So the first one is D B O S transact pi. And the, the H two is ultra light, durable execution in Python. So what the heck does that mean? What is durable? Like does it have try except somewhere? No more than that way,
Starting point is 00:03:02 way more than just error handling. So what you do, imagine Brian, that you've got some long running process. Like one step of this process is I want to wait until a file shows up in this directory. And then when it does, we're going to process it, save it over here. Some other system, maybe you don't have direct conversation, like direct connections with does some things processes that gives you a response then you take on the next like it's like a long running uh it's not just going to happen all at once right and also it has to keep going you know if it's long running and you've got to restart your server or you want to deploy a new version of the app or there's even a bunch of stuff if you're doing ap style things where the worker processes periodically get
Starting point is 00:03:46 restarted for memory in case they get hung up just to keep them sort of fresh, right? So there's all sorts of reasons your long running thing might get shut down in the middle. So that's what this thing handles. So you write a Python function, you give it a workflow decorator, and then it calls a bunch of sub functions to do its steps. And they decorated with at step and then what happens is when this runs each step before and then basically what workflow is happening what step is running what data was passed into it is serialized into postgres right and so if it crashes it just goes oh well what workflows i have going oh i see these and this one is at step five and here's the status. So just run step five again and off it goes. Okay. Isn't that cool? That's really cool. It's not something I totally need all the time. You know, it's not
Starting point is 00:04:33 something I feel like is a real common thing, but if you were doing like a lot of email, I'm sitting on an email process, right? I'm, I'm managing myself, which no, I'm not, but well, I guess with less mucking sort of indirectly with the self-hosted thing. Anyway, you know, you're contacting a bunch of things, or you're calling a bunch of APIs, or you're uploading a bunch of files over an API, like over S3 or something. And the thing goes down, you know, you could do this to just go, all right, well, where was I? Pick it up and keep going. So let's see. It says, all you need to do is use a Postgres database to connect to it. There's no need for a workflow server, which is cool. And apparently there's this thing called AWS step functions, because of course there are at AWS. If there's
Starting point is 00:05:14 any sort of possible type of programming or execution, there's a AWS service for it. Anyway, it says it's 25 times faster than that, which I guess is good. More cool features. Scheduled jobs. Run your workflows exactly once per time interval. So on job sort of deal. Exactly once event processing. Use workflows to process incoming events. For example, a Kafka topic exactly once. That's pretty cool. In observability, all workflows are automatically emit open telemetry traces. So you can So anything that integrates with open telemetry, which is a bunch of the different systems out there, like air monitoring and sentry type things, plug that in. That's pretty cool. So it clearly works on the cloud. Could it work as a local thing as well?
Starting point is 00:05:58 Yeah, it just needs a Postgres database. So if you could run a Postgres database or if you could run Docker, then you could just run the Postgres image locally, and it's the same port, same connection stream. Cool. Yeah, there you go. Over to you. I was just thinking about, like, recently you mentioned going through and redoing
Starting point is 00:06:17 a lot of the transcripts. Could it possibly do something like this, if it ever dies, to restart it? Yeah, exactly. If you're doing or video file processing, if you want, that's super common.
Starting point is 00:06:30 You know, I want to run conversions for these files, but it's going to take two days. The audience says, that sounds interesting. I've been trying to adopt Airflow for a particular set of scheduled jobs I have,
Starting point is 00:06:41 but it's super complicated to set up. Yeah. Very cool. I want to talk about a survey a little bit that i didn't know about and i'm still a little confused with uh there's a there's an article on engineering at meta uh called typed python in 2024 well adopted yet usability challenges persist um but um and i'll get into the topic a little bit, but I was a little confused by the survey. It says, this summer, JetBrains, Meta, and Microsoft collaborated to conduct a comprehensive survey on the state of Python typing. And perhaps I just missed that, or it wasn't the results were
Starting point is 00:07:18 announced, or maybe this is the announcement. Because this is not the JetBrains developer survey. This is something else. This is a survey that happened through July through October, beginning of October, I guess. Anyway, so back to the topic at hand. So the idea is 10 years after the introduction of PEP484, I can't believe it's been 10 years, We surveyed the current state of Python type systems and the tools developers are using. And like I said, it was a JetBrains meta Microsoft thing. So the findings, 88% of respondents always or often use types in their Python code.
Starting point is 00:08:00 The IDE tooling documentation catching bugs are drivers for the high adoption of types in survey responses. So, and we'll get to the, there's a couple other things in here too, but I wanted to highlight this because like catching bugs, that's what I thought people would use this for, using PyP, you know, other tools to, to check for type errors. Um, but I think that the big, the big wins are in documentation and IDE tooling. Um, I, I started using it for documentation primarily, uh, to document how somebody should use a method, um, to, and I think it's super helpful to say, yeah, it's going to be a list of strings that you're going to pass in here. It just helps to understand how especially for non obvious things. Is it going to be a tuple is a list, I guess it doesn't matter. It's an iterable.
Starting point is 00:08:56 But that's really helpful. Then the IDE tooling came out came along and started making it a lot easier just to to have type hints and everything work right um when using you now i don't have to hop over to another screen or another like find the definition of a function to find out what's in there i can get type hints to help me and the um the pop-up dialogues whatever uh what the code what are those things called um anyway um the ones where it's in a separate file? Yeah, well, like if you start typing a function and you hit print and the IDE tells you.
Starting point is 00:09:31 Oh, autocomplete. Yeah, autocomplete stuff. It's really helpful to be able to know, oh, yeah, it's going to go in here. I wish that there was a way to shorten it because some stuff has so many, I'm using all the time, and there's so many arguments that it's like'm using all the time and there's there's so
Starting point is 00:09:45 many arguments that it's like this big giant blob thing and it's not helpful but anyway but decrease your font size or even maybe or just like yeah just uh the standard library stuff that i'm using all the time don't keep popping that up uh i don't need type hints for print just saying um so uh or i need type hints i just don't need that pop-up anyway um so interesting survey the uh the one of the interesting things here was that people were using it even for personal stuff just personal projects 66 percent of respondents said they use still use uh type hints always or often. And 78% of professionals, it makes sense
Starting point is 00:10:28 it'd be more with your work code than personal code. But I'm finding that myself. I'm using it even for personal stuff, using type hints. So a little bit of interesting things on which IDs are people using. It's a little different from the developer survey. But maybe they had a different set of lists that people
Starting point is 00:10:48 could choose from. So mostly VS Code, PyCharm up there, plus Emacs and NeoVim. Emacs or NeoVim and other. But the developer survey had mostly what, oh, IDE was VS Code, PyCharm, Vim,
Starting point is 00:11:03 Jupyter Notebooks. Anyway. So it had probably just more selection or something. I think there were many options in the PSF one. Yeah. The PyCharm was the same, but VS Code was smaller. Interesting. Yeah. It's a different audience as well. Who knows?
Starting point is 00:11:18 Yeah. Anyway, so the real takeaways here, for, for me as a trainer and other people that try to teach people is I think we need to do a better job at teaching. Um, some of the reasons why people are not using types, um, and are what we've got not required for my project, lack of familiarity. They're too complex and, uh, it's hard hard to hard to use or set up and push back from co-workers or co-maintainers is uh the is like 50 50 people anyway um oh wow it's not percent because the top is 150 so i'm not sure what's going on here um so that's otherwise known as 33%? 34, I don't know.
Starting point is 00:12:06 But what I found is that I always run into something that's complex, like a PyTest fixture. I don't know. I still don't know how to type those correctly. But you can do type hints for most things, and if you run into complex stuff, just don't worry about it, move on. That's my recommendation. There's, you can jump, go down that rabbit hole and try to try to do things. But I think that that's something that people
Starting point is 00:12:36 with train when training, we teach people how to use type hints in simple things like this, if it's an int, do this. uh i think it's important to maybe say hey sometimes it's complex um just like there's there's ways to do that but you also don't need to worry about it uh people can look up the docs for that um i do appreciate the uh the addition of not having to import like capital list and capital uh you know whatever the other ones yeah like dict and yeah and all them yeah yeah and you can just do lowercase list and dict and stuff like that now yeah which is better that's 310 and above yeah so anyway uh some interesting information here on the on typing so nice awesome well you know what i think we just more typing. Let's just, it's all typing all to close out 2024.
Starting point is 00:13:27 So I would like to talk about write typer. Okay. R-I-G-H-T typer. A fast and efficient type assistant for Python, including tensor shape interfaces and data science thingies. So what the heck is this? So you're saying, Ryan, that a lot of developers will
Starting point is 00:13:45 write types when they write their functions. But if you adopt a code base and it doesn't have typing, or you have some colleague who utterly resists it, resists adding types, like I will not do this. But as a group, you've decided, yeah, we're doing it. And somehow that person still works there. You could use this thing, right? So this would be good for old projects, just untyped projects, whatever. You know, a lot of examples of projects that didn't have typing were things that traditionally supported 2 and 3,
Starting point is 00:14:15 Python 2 and 3, right? And like, well, we can't have types because we want to support Python 2. And now they're like, you know what? Take a hike, Python 2. Maybe it's time to add types to them, right? So that's what this thing could do. So what you do is you run your Python program.
Starting point is 00:14:30 You say like Python 3-m writetyper. And then you can even do it via testing. I've never seen a nested dash m. I love it. Okay. So Python dash m writetyper dash m pytest dash continue on collect. All right. You could do that.
Starting point is 00:14:44 And what it will do in this case is it'll run all of your tests and it'll look at the data exchanged for each function. And then it will create the signatures of those functions with typing automatically. Oh, wow. Yeah. So it efficiently computes type annotation coverage
Starting point is 00:15:00 for files and directories and it infers shapes of annotations for data science thingies. Like I said, NumPy, JAX, PyTorch, et cetera. Compatible with JAX typing, BearType, and TypeGuard. We've covered BearType and TypeGuard, both awesome. JAX typing, don't know JAX. Apparently, there are some other tools like MonkeyType and PyAnnotate.
Starting point is 00:15:20 But if you look at the timing performance, it's pretty good. So it's like significantly faster than some of these tools. Right. So near zero overhead. So you can kind of run it on a complicated app and so on. Okay. This looks great. Yeah.
Starting point is 00:15:33 And you can run a particular script. And then what it'll do is it'll output, I believe, a separate file. And it says, look, you just had def barnacle took an x but no that that x is a colon numpy dot nd array and this function returns an nd array right yeah that's cool or if you want to have it annotate bear type remember bear type will verify that it's actually right at runtime you can have it do that sort of deal or even if you have a partially annotated but not entirely annotated thing it will annotate that as well. Yeah.
Starting point is 00:16:06 So you can specify the output top files, whether or not over to out, overwrite your files. Obviously the assumption would be that that is in source control. You've committed it. You run this and override it. Then you look at the diff and you decide, I think that would be the best way to use it. Right. That way you can view the diff and go, looks good.
Starting point is 00:16:23 Accept that change. Looks good. Accept that change. I don't know about that one, accept that change. Looks good, accept that change. I don't know about that one. Skip that change. You know, like that kind of deal. Anyway, I think this is pretty awesome and it could be real helpful for people.
Starting point is 00:16:33 It's kind of one of those tools you don't use often. It's like Fluent or one of these other upgrade things. It's like, well, I ran it once. I got the old code to the new code. Now I just work new code style. But at the same time, that's real serious drudgery that you could avoid yeah now i gotta try it on my uh my code base is partly
Starting point is 00:16:51 like i said i sometimes trip up on fixtures and maybe it'll tell me what i bet it'll tell you i don't know what to put for fixtures either but it'll probably discover it yeah yeah christian now in the audience points out faster than monkey type smiley um oh this is neat i'm looking forward to playing with that cool indeed all right um it's getting to the end of the year i'm feeling a little lazy are you no tell us more no i'm not um but uh but maybe trey hunter is so trey hunter wrote a blog post called lazy self-installing python scripts with uv and i think that time is right for us to go back to using our own personal scripts more because it's now so much easier with with uv and python so um i used i mean i i thought about this i used to have my own bin a home directory bin directory full of a whole bunch of little scripts i got a
Starting point is 00:17:43 min i got a tilde bin come on now yeah tilde bin um so i've got uh i actually to be honest i haven't done this much lately because it's not trivial with python um and i don't really write a lot of bash anymore or anything uh i mean a little bit but um nothing i keep want to keep around anyway but that's a there's a lot of everyday python everyday tasks that um that maybe maybe would help to to code up with python and it's easier now so uh trey walks through it starts out with uh talking about how you can how you do this with uh just creating a file um in a bin directory it has to be in your path your path. So I don't remember if he talks about that or not, but you have to possibly modify your.zhrc or your bashrc or something
Starting point is 00:18:31 to get your home directory bin in your path. But after it's there, you can stick a file in there and change the permissions on it, the execute bit. Oh, yeah, and then make sure that it's a directory in your path variable. And then you can just run it whenever you want from any directory. There's slight differences. The pound bang, I don't know what you call this thing. Shebang.
Starting point is 00:19:00 Shebang, the shebang at the top. He has an example of just using user bin env python3, and that works fine for things without dependencies. So just a little Python script, which is actually still pretty useful. It's interesting, the example, though, he says his script, like myscript.py, but then he has an example of bin zero that just prints out 80 zeros,
Starting point is 00:19:27 which is kind of cool. But that, that really wouldn't be zero.py. That would just be zero. So you just take off the.py so that you can just type it. So the problem that he wants to talk about in this is with dependencies. And he has an example that uses that he uses. He normalizes audio of a given video file with the FFM peg and and great tool. But yeah, it's something you have to install. So or it depends. The script depends on the FFM peg normalize and the FFM peg utility. So how do you deal with this? He said he used to be using pipx,
Starting point is 00:20:06 but now UV makes it super easy. You don't have to, it doesn't even have to be installed to write the script. You use the shebang again, but instead of Python, you call dash S or dash capital S UV run and dash dash script. And then you have these three slashes with script in there,
Starting point is 00:20:27 and then three slashes at the end, all in comments. But then you can require which Python, so you can say requires Python, and dependencies. And it looks like there's a bunch of, I wonder how much of the pyproject.toml syntax goes in here. But this is very toml-like. But you've got your dependencies there, and it just runs it.
Starting point is 00:20:47 Yeah. And by the way, not only does it install the dependencies when you run it, if they're not there, it will install Python if Python 3.12 is not there. Yeah. And it checks it. Say you haven't run something for a few weeks and it's not the correct versions anymore or they somebody's taking something down it'll check it and get the right thing and it happens so fast that you don't have to worry about it if you're connected with a connection but uh the so i tried this this morning and i was thrilled to see the it says like reading that it's it's the output of your script but then it also says uh readingline script metadata from, and then it has the title of the script.
Starting point is 00:21:29 And I have a lot of scripts that I pipe the output to stuff. So I was hoping that I wanted to, I'm like, what's going to mess up my output? It doesn't. This reading inline stuff comes out on standard error. And can I add one more command flag okay what trey is suggesting here you go back up to the env dash uh uv command yeah with the capital s just add a dash lowercase q and all that goes away it's the same output so what's the dash dash is that just script or something i guess i've never used it i just tell it to run the script so i don't know what the dash test is the dash q will get rid of get rid of that it'll get rid of the the management
Starting point is 00:22:10 output of uv yeah because i don't really care about that yeah like you don't want that not in this i think if you're trying to this is really nice because it's a super simple way to long as somebody has uv that's all you need to start distributing utilities to them. But you don't want them necessarily to see the startup info. I might. I think I'll probably leave it on so that I can see what it's pulling from and when it updates things or something. If it has to install something, it'll output that. But it doesn't mess up the output. Like I said, it's going to standard error. So if your pipe's standard out to something else, it'll output that but then but it doesn't mess up the output like i said it's it's going to standard error so if your pipe standard out to something else it'll still work fine so
Starting point is 00:22:49 um anyway cool to very nice to write up like how to use command line utilities now with python so yeah you've got uv tool install for the packages with entry points all sorts of nice stuff yeah uv everywhere all right those are our items um i've only got one extra that i want to talk about do you have any yeah go first i got a couple okay um this is pretty quick i really appreciate i forget what this is called um so anyway i've got uh the complete pytorch course of of course i've split it up somebody people can buy it in payments if they want but it's it's like 59 bucks so on python test.com there's also uh the the new discord community is going really great um it's a one-time admission just to help with the costs of everything um and then uh a really quick hello pytrace course anyway i've priced these where i
Starting point is 00:23:42 think they're completely reasonable for people however you might not live have a software engineering job and live in oregon um or the u.s so i was really thrilled the other day somebody from india just got out of college uh doesn't have a job yet but is or maybe they have a starter job but they're they looked at this wherever they live and they said this is too much for me. Can I get a discount? I don't have like the regional pricing set up. So I really parity, they pricing parity. That's it. So I really appreciate that. So if you can find me on LinkedIn or, or a blue sky or mastered on and just ask or, and, and I'll, I'll work with you. So just, I appreciate people reaching out. That's it.
Starting point is 00:24:26 Excellent. All right. I have a couple here. Let's go through them quick. Over to blue sky. We've got Hugo VK says, hey, Python 3.14 Alpha 3 is out. And it's got the links to the what's new and so on. And reasons I don't understand,
Starting point is 00:24:43 picture's a very delicious looking cake, which I'm here for. Anyway, people can check that out. That was from a couple of days ago. Yeah, maybe a week, quite a week ago, five days ago. So the testing of Python 3.14 continues. Remember, I believe there's supposed to be seven total releases before it goes to beta
Starting point is 00:25:02 and gets kind of locked down-ish. So you got that it's not cake it's pi 3.14 oh my gosh how did i miss it how did i miss it all right one thing that drives me crazy if you're a mac person is there's almost always a command you can hit for settings that is the same command comma any app you want the settings for command comma unless it's just disrespecting its own self has no self-respect command comma will bring up whatever settings it has web browser word editor whatever that's but check for update is all over the map some apps automatically check for updates some they'll only tell you there's an update if you check for it firefox and zen browser only do it if you pull the about screen and show it, then it'll tell you.
Starting point is 00:25:45 But on Vivaldi, if you pull the about screen, it won't tell you if there's an update. Like it's all annoying. So I went through and I added a check for update hotkey. So this is kind of a cool trick. I thought people would appreciate it. If you go to Mac OS, you go to settings, you go to keyboard, you go to keyboard shortcuts, then you go to app shortcuts and pick out individual apps and say, I want this menu, whatever the menu text is, as long as case sensitive spaces, everything is super annoying. You can't edit it. So get it right. Is it capital four, check for updates or lowercase four, check for updates. You got to get that right. But then you can just say control you and then you can go or whatever you want to pick. And then if you just like in any app, if you set up the ones you cared about checking,
Starting point is 00:26:26 you can just hit check for updates and it pulls it up. It's kind of nice. I'm just still blown away that I never knew that command comma was the settings thing. Almost every app will command comma will do what you're looking for. Okay. Yeah, yeah.
Starting point is 00:26:39 But there's no update equivalent. So control U now is for my computer. Okay. So I got Firefox, OBS, VS code, Zen browser, source tree, like source trees, one of those that it'll go months without telling you there's an update. But if you check, there's almost always an update. All right, on to the next thing. What do we got next? Oh, I just wanted to talk about something really kind of fun and interesting on talk Python. I got two things on talk Python real quick here. But this is a fun
Starting point is 00:27:02 web more more not not so much a talk Python thing, just like a fun web design thinking about URLs. So check this out, Brian. We can go to any, any episode here. So Peter Wang, it was on and Peter Wang is super fun. If you look at that episode page, you can see there's a thumbnail, like a social media image of that, which is also the YouTube thumbnail, right? Yeah. And let me see if I can make this wider so you can see it's going to be small.
Starting point is 00:27:28 But up here, if I just type.jpg on the end of the URL, I get the thumbnail. And if I just type VTT, which is WebVTT transcripts, I get the transcripts. Oh, cool. Isn't that fun? Yeah. I would encourage people to think more about like, instead of having a bunch of different ways to get things, just, you know, think about like resource. I don't know what you call it.
Starting point is 00:27:49 It's a little bit rest-ish, but I think it's neat. Like maybe if I had a JSON representation, I could just put.json on the end and it would represent the data of the podcast as JSON. I don't really know what I would put there. But anyway, I thought I just want to encourage people. You can play that at TalkPython, but encourage people to just think about
Starting point is 00:28:06 making cool little URL API interactivity bits that way. I like it. Yeah, thanks. All right. Next, I did a mega write-up. You can see that on the TalkPython blog, TalkPython.fm slash blog, 16 minutes reading time it suggests for this.
Starting point is 00:28:22 I wrote up a in-depth analysis of the top TalkPy Python episodes, top five, and I even did a little Jupyter notebook action to come up with where are they on the scale and how does that compare against the average number of downloads. Number one is awesome text tricks with NLP and Spacey with Vincent Wormerdum. Number two, this one really surprised me. It was so popular. Being a developer with ADHD with Chris Branding. Awesome episode. I didn't expect to be popular.
Starting point is 00:28:49 Version APIs with Stanislav. Handers and Beyond with Wes McKinney. That's not surprising. And the State of Flask and Palance with David Lord. So those are the top five. But like just super detailed dive into like what was covered, what was important and stuff. So I did that Sunday. Yeah, Sunday morning. The house was quiet. were chilling so i'm gonna write well with um
Starting point is 00:29:10 i mean it's a 16 minute read with everybody with adhd i don't think anybody's gonna read the whole thing yeah maybe the people who are served by that podcast we're not now you can always listen to the episodes but it like highlights what was covered no i think that's cool um yeah neat yeah thanks okay now we're down i'm oh wait no one more thing since we talked about i wasn't originally going to point this out but since we talked about typing so much and you talked about teaching and typing i have a four and a half hour course called rock solid python and type hints and tools so over at doc python i'll put that link in the show notes and people can check that out this is one of my absolute favorite courses of all of our 50 or so courses. And it's a good one.
Starting point is 00:29:49 This type of stuff is really neat. Okay. Are you ready for the joke? I am. This one, if you've heard of lolcode, some of these like joke languages, this is one of them. But it's a little bit more Python oriented, I guess I'll say. Let me see if I can zoom in for making it a little legible. So we come down here and there's a table chart.
Starting point is 00:30:10 So it's like an alternative language. So if you want to write Python-like code, but you don't like it, so you've got like return. Instead of writing return, you can say it's given. And if you want to say plus one, it says Riz. So this is called Python with Riz or no, that's not exactly that's it's that's it's description. PyGat. And I'm not in this world very much. It kind of goes off a lot of like Twitch stream type of terminology. So you've got print instead of print you gap for true. You get Aurora
Starting point is 00:30:44 for false. It's cooked. You bop instead of death. gap for true you get aurora for false it's cooked you bop instead of def and then for while loops it's let him cook just let him cook so for example a while true would be let him cook aurora um import is gay glaze let's see uh if lf else's chat is this real yo chat only in ohio okay that's funny oh glass is skibbity i actually get that reference but break is just put the fries in the bag bro uh raise is crash out okay and then assert i love assert assert is sus yeah it's pretty oh oh sus i think we should add the language maybe yeah so this is pretty good yeah okay let's see all right so now let's look at an example okay so we've got here we've got here on the left we've got glaze numpy ah np lock in
Starting point is 00:31:42 random glaze choice and then skibbity rize-risley in plos pass, I guess. Anyway, DukeDennis equals zero says, let him cook, Aurora. Just let him cook. And chat, is it real cooked? Crash out error. Only in Ohio. Just put it in the fries, bro. Just put the fries in the bag, bro.
Starting point is 00:32:02 This is good. I think it really runs. I'm pretty sure well i think that we we should have like a conversion that you can take a take some code and convert it to this yeah yeah like a transpiler sort of yeah yeah just an upgrader like a two to three but a pie to pie to gap skibbity rizzler pluh just. Just put the fries in the bag, bro. That might be my favorite. Or let him cook.
Starting point is 00:32:30 Just let him cook. Chat, is this real? This is good. Crash out. Crash out. All right. Well, are you ready to crash out on this episode? I am.
Starting point is 00:32:39 Just put them in the fries, bro. Put the fries in the bag, bro. Indeed. Well, awesome. All right. Well, thanks, everybody, for a wonderful 2024. them in the fries but put the fries in the bag bro indeed well awesome all right well uh thanks everybody for uh for a wonderful 2024 and we're gonna um like we said we'll have a short thank you episode next week possibly and possibly and then but we'll see everybody in 2025 bye y'all

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