Python Bytes - #358 Collecting Shells

Episode Date: October 24, 2023

Topics covered in this episode: Django 5.0 beta 1 released git bash, terminals, and Windows Mastering Integration Testing with FastAPI Reuven Learner has been banned for trading in rare animals (Py...thons and Pandas) Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/358

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 358, recorded October 24th, 2023. I'm Michael Kennedy. And I'm Brian Ocken. And this episode is brought to you by us. Check out our courses and thank you to the Patreon support as well. Link right at the top of the show notes. You can connect with us on Fostedon.
Starting point is 00:00:23 Again, links are up there. And if you want to watch live, check us out at pythonbytes.fm slash live. So, Brian, you have a big, big time release to talk about. Want to tell the people? Yeah. So there's been a Django beta one release. Oh, Django, sorry.
Starting point is 00:00:43 Django 5.0 beta one so uh we are now we're now in the 5.0 uh world of django um so we're linking to the to the basically announcement but what what i think is interesting is um oh i didn't see the schedule so let's take a look at the release schedule uh looks like um so we've got the beta now october 23 there should be a release candidate november 20th and the final by december so by the end of the year there'll be a final are you saying we're gonna get django 5 for christmas before to get ready for christmas yeah honey can you help me wrap presents no i gotta play with django. um so i'm pretty excited about this it looks pretty cool cool let's look at some of the some some of what we got there's a release notes uh under
Starting point is 00:01:31 development because it's still just the first beta but um there's some really cool stuff one thing to note i think we we may have uh mentioned this before but i can't remember that django 5 only supports 3 10 11 and 12. so they're that's that's last time we were, but I can't remember that Django five only supports three, 10, 11, and 12. So they're, that's the last time we were talking about, Oh, can't believe we're saying goodbye to three, seven. Yeah. And they're like, you know what? That's we'll go into the future, baby.
Starting point is 00:01:54 Three, 10 and above. Well, you know, and I, I actually think this is decent because there's some fun stuff in three, 10 and above. And I haven't had any issues like upgrading any of the projects I've been maybe minor things. So the last few have been really easy upgrades, I think. But your mileage may vary. There's a note about third party library support for older versions of Django. And mostly it's how to deal with looking for warnings. So you should be, if you don't support older, or if you're planning on not supporting new versions of Python or Django
Starting point is 00:02:32 or whatever, you should put warnings in and then people can run with with warnings on with dash capital W, and the D for deprecation. So to look for deprecated warnings. And that's, that's really kind of a cool thing that a lot of most package maintain maintainers do this so that's pretty great okay so what's new um facet filters in the admin i have no idea what this is i don't know what this is but it sounds neat so that's cool the thing that i really was pretty excited about was the simplified templates for form field rendering so uh you know when you're creating a form, there's a lot of ways to help you create forms. There's extra plugins like Crispy Forms and others,
Starting point is 00:03:12 but this looks great. So look, this is the before picture. This is the before form. There's a lot in that form. This is the after. It's just a few lines of code. It's really great. So for those of you listening, of course,
Starting point is 00:03:29 check out the show notes and you can link, you can see the link for where the release notes are. So just like maybe three or four lines of code versus 20-ish. I mean, it's not terrible, but it's also kind of confusing. So this is just an email form with email and password or sign in form or something. So this is pretty cool email form with email and password or sign in form or something.
Starting point is 00:03:45 So this is pretty cool. Yep, there's more excitement to come, database computed default values. This is actually a pretty big deal, I think. Yeah. Because things like now for a timestamp, well, now on your computer or now on the server or now it's now, you got one server run in the database
Starting point is 00:04:07 and and that um so that'll be like a consistent time across everything but there's a whole go ahead sorry with a lot of these like that that default in the orm that happens on it happens in python which means it happens on the web front end server along with all their times and latencies. So there could be a little mismatch, but if your server, your database servers in a different time zone or something, it could be really out of whack. The other is if you have it set up a default that goes into the schema instead of just in Python, some other tool creates something. It will also take on those defaults, which is, I think, the bigger deal. Okay, cool.
Starting point is 00:04:46 Right? Because if you use some database admin thing, you say insert this and this, but you're not doing it in Python, well, normally database defaults would kick in, but not previously if it was just in Python, right? Yeah, and so if you're using, right, especially if you're using different tools also,
Starting point is 00:05:02 having database defaults is an awesome thing. But plus it saves, it's faster probably. I don't know. It seems like it might be faster. There's also database generated model field. So you can have your database generate fields based on other fields and have that be done in the database. So that's pretty cool.
Starting point is 00:05:23 And they give some examples in here. And then more options for declaring field choices. This hasn't been something I've run into. But apparently, that's the current set. And we have new set, we can do things like integer fields and stuff, I think. Oh, also, there's like a, I don't know, there's a different API for this. And if it's been an issue, hopefully it's not an issue for you anymore. But anyway, and then a bunch of other minor features, but I'm sure there's been tons of bug fixes and everything like that too. So
Starting point is 00:05:51 this is pretty exciting. It's pretty cool that other one, those new types of fields, it looks like it supports string enumerations. Oh, okay. Which is pretty cool. If you go back down to that example there. I'm declaring field choices yeah i think so like see how it says choices metal dot choices so you could have a a gold
Starting point is 00:06:11 silver or bronze all right option and those are the only three string values instead of it's just a string it's like basically a string enumeration type thing which is pretty cool yeah okay yeah neat uh while we're talking about django i want to um go ahead and do it this was going to be an extra but i thought i'd go ahead and call out that uh django the django there's a couple things there's django not django not space which we covered a few episodes ago which is a place where you can kind of with with mentors learn about django learn about how to help maintain django maybe um this how to help maintain Django maybe. This is, Django.space is now accepting applications
Starting point is 00:06:49 for the next contributor mentorship cohort. So, and I think I saw today that it's the, they're accepting applications through mid-November, I think. So not that long though. So get on that and if you would like to do it. And then there's also, they're also doing a survey along with in in collaboration with JetBrains and the Django
Starting point is 00:07:11 Software Foundation so go ahead and if you're a Django person fill out the survey be nice and then when then we get results we can maybe cover it on the episode also so yeah that'd be great all right this next item Brian is inspired by you okay okay so last cover it on the episode also. So yeah, that'd be great. All right. This next item, Brian is inspired by you.
Starting point is 00:07:27 Okay. Okay. So last week we were talking about a windows terminal. We were talking about the get bash CMD thing for windows, whatever the heck. It's it's called the, um, the bash shell that comes with Git when you install it on Windows. And I said, hey, why don't we just add that to the Windows terminal? And you're like, wait, the Windows terminal? The Windows terminal is of course something that Windows 10 or above can get, but you don't have it.
Starting point is 00:07:57 You have to go to the Windows store and install it. And it's pretty awesome. It comes with a bunch of different shells like command prompt, PowerShell, Windows subsystem for Linux, Azure, whatever you got installed down in the subsystem, I suppose. Pretty cool. It even has GPU acceleration for the text rendering, which is kind of cool, you know, motivated by Warp, right? Because they were, they're programming like metal on the GPU for their stuff. So, you know, so are they here on Windows one, but I wanted to talk about adding it because if you just go to the get
Starting point is 00:08:32 bash command prompt command and try to take that and stick it into the Windows shell, it doesn't actually work it, you click Show me the shell. And all it does is launch command prompt in another window with the get bash. I'm like, Oh, that's not doing it. So I found this article called add get bash to windows. And it has this real helpful message at the bottom here, Brian. It says you're seeing this message because add or script blocking software is interfering with this page. Disable any add or script block. It's not interfering. It's blocking malware delivered over retargeting networks.
Starting point is 00:09:02 So I'm helping them with their wording here. And they can correct that later. Anyway, it's a super simple way that just walks through. But basically, it shows you how to go and add a new profile. But most importantly, what the actual thing that is the profile command that you need to add, which is not the same thing as you launch normally. So you just add that. Okay. Pretty that. Okay.
Starting point is 00:09:25 Pretty cool. Yeah. And it shows you, I would even set the icon if you wanted to have the right icon in the dropdown. And finally you can even set it as the default. So if you just open windows terminal, it defaults to the bash from get version. But then of course you get the dropdown. So like, here's what my windows machine looks like. After I set this up, you've got windows, PowerShell command, prompt, Azure Cloud Shell, PowerShell, which is different than Windows PowerShell.
Starting point is 00:09:49 It's the older one, apparently. The developer Command Prompt for VS Visual Studio 2022, PowerShell for the same thing, and the Bash one, which is pretty cool. Isn't that it? Yeah. So if people want to take and make their Windows shells better, here's one more option. And if you're on Mac, you can check out Warp as well, because we talked about that last time. And I have more to say about shells later. So, a funny thing happened between last week and this week.
Starting point is 00:10:15 My laptop died. Oh, no. You didn't try to do this and kill it, did you? No. I'm just kidding. What happened to it? I think the fan was just freaking out or something. Oh, okay so I grabbed a this was a work thing. So I got a new laptop and it came with Windows 11 and this was already installed. So okay. I don't I don't know if it automatically does it or if my IT department did it for me. Yeah, I don't know. It probably is already installed on Windows 11, but not on Windows 10, I don't think. But then when I loaded Windows Bash or Git for Windows,
Starting point is 00:10:50 it just did this, like on Windows 11. It just installed it in the right place. Oh, that's pretty cool. It registered one of these profiles or something, huh? Yeah, yeah. So that was cool. Yeah, excellent. I think, you know,
Starting point is 00:11:02 if you're going to use one of these alternate shells on Windows, you might as well use this nice front-end container thing. And the funny thing was I was worried about it because most of our... I'm used to worrying about operating system changes because of the compile dependencies and stuff. But we're doing all of our compiles in Docker images now. And it's like, oh, I don't actually have to care about that anymore. So that's nice. We're running Windows 7. Who cares?
Starting point is 00:11:29 Wait a minute. I don't know if you can get Windows Docker desktop to run on Windows 7. But, you know, I know that was a joke. You probably cannot. But even if you can, you probably should not. All right. I think that's, yeah, that's the last thing I got to say about that. So if you're on Windows, definitely check out the windows terminal which is a much much nicer
Starting point is 00:11:50 than command prompt and you know plug in your shells and then we can talk more later some other time about like oh my posh which i think i've talked about before well i gotta get i still want to get set up on that so yeah oh it's so much better. Yeah, it's so good. Okay. Well, should we talk about testing a little bit? Yes. Sure. So here's an article from Alex Jacobs, Mastering Integration Testing with FastAPI. And I know it's focused on FastAPI, but it's just kind of a really pretty good walkthrough of different types of testing for a website um or well an api at least and that's and it's it's pretty great so uh first off really quick description of what a integration testing is um and uh it's i've i've had a hard time describing what integration testing is uh to other
Starting point is 00:12:39 people so kudos for them to alex so integration testing involves combining individual units of code and testing them as a group maybe kind of um this type of testing aims to expose faults in interactions between integrated units yes definitely so basically you get to decide how much of the system you're going to put together and um and if there's things that you want don't want to include that's kind of where this article comes in it's um it's challenging to do this especially with web applications so he goes through a lot of common things that you'd want to do which is great so he has a little a little test app which um i think is pretty kind of kind of fun i don't know if he includes the actual source code for the test app
Starting point is 00:13:20 but it's just the uh the the API that he's posting. So it's kind of cool. Anyway, talks about, okay, you're going to have to authenticate for almost all applications. So how do you mock that so that you can get around testing with that? So mocking authentication, talks about that. Testing the login page. Also talks about both testing.
Starting point is 00:13:47 So one of the things that's kind of neat is he's using PyTest, but he talks about how to do this straight in one test and then also how to separate some of the mocking part into a fixture because that's how you'd want to do it if you have multiple tests. And that's pretty cool. So mocking authentication talks about in the test client or within the test client here is his fixture. And then directly in the tests.
Starting point is 00:14:13 So kind of goes through a lot of detail with the authentication part because it's the first time he's talking about mocking. Then also, how about external APIs? So authentication is something you want to like put some mocking around so you can test that thoroughly. External API's definitely because you don't really want to be hitting that a lot. And also you don't have control over what the external API is going to return. So you want to have more control over this.
Starting point is 00:14:37 And so a couple examples here of actually it was kind of kind of really some pretty cool examples around mocking an external API and utilizes something I don't see very often is, oh, I don't know where it was. Oh, when he's creating a fixture for it, he's using indirect parameterization, which is kind of a cool advanced PyTest technique. But he explains it fairly clearly, and it's pretty nice. So, oh, here it is. New, anyway, somewhere, indirect. Indirect, yay, I love seeing indirect, because it's kind of a, it took me a while
Starting point is 00:15:14 to get my head around indirect, but anyway. So, okay, so mocking authentication, mocking an external API, and then something else is, you might want to mock the database because you can possibly fill up your database with, you can use a temporary database or a small one,
Starting point is 00:15:31 but you might want to just mock it also. So talks about mocking MongoDB client or MongoDB database. So anyway, nice discussion of testing a service specifically for FastAPI, but I kind of think this applies to everything, doesn't it? Yeah, I think so.
Starting point is 00:15:49 So anyway. Makes me think of VCR Pi. Yeah. If you're mocking out a call to external APIs, just record it. Play it back. Like, that one was good. We'll just do that. And on a lot of my integration tests, I just talked to MongoDB.
Starting point is 00:16:07 It's fine. So do you, do you set up a, like an extra, an extra database and just, um, fill it in? Because so much of our stuff, so much of the stuff that I have is, um, that the tests are addressing is like kind of static data. You know, it's like, well, here's a list of podcasts or here's a list of courses. And it doesn't necessarily need to know, it doesn't need to depend on what those are. So yeah, anyway, yes, you have to rewind it. Tyler asks of VCR Pi.
Starting point is 00:16:36 You don't have to, but there is a fee if you take it back without rewinding. So yeah. Be kind, rewind. Yeah, be kind. You gotta be a certain age to remember that. Remember that? Like you're like, Oh, I got this new movie and I got to rewind it. They didn't rewind it. You're like, Oh, we're going to wait like two minutes to start watching
Starting point is 00:16:53 this. Did you have one of those extra like fast? We had a, for a couple of years, we had a fast rewinder that you just pop it in and it would just go. And I don't know what fast is, but I remember it would make quite the noise. So maybe it was fast. Yeah. Anyway. Yeah, exactly. Yeah.
Starting point is 00:17:10 So, um, Mojo logic says blockbuster, uh, charges. If you don't do it, that's true. Or your PRS don't get accepted. If you don't rewind your tests either way, you know, let's talk about not getting accepted though, because, oh boy, this is terrible. This is so bad. So this was recommended to us from Pat Decker previously on the show. And it's an article essay by Reuven Lerner, who like us teaches Python and he teaches data science and stuff. And I will tell you the hardest part of our job is not writing courses, not coming up with courses. It's gaining awareness, it
Starting point is 00:17:45 is so difficult to cut through all the noise. And even if you built something awesome for people to actually go, Oh, maybe I'll pay attention to that for, you know, one minute to see if it is awesome. So we all have to try different ways. Some of us start podcasts, others of us do different things. And Reuven said, Hey, look, I'm just going to try to put in some meta, AKA Facebook ads and see if I can get some interest from there. Right. Plenty of people are over there. So he does. And pretty soon it turns out his ad count is canceled. He goes in there and says, you are banned for violating Facebook's policy on advertisement. He's like, I just don't know what I could have done wrong. Like I'm, it's so benign. I'm trying to sell corporate training
Starting point is 00:18:32 to software developers for the most popular language, uh, by some standards in the world. I'm a reputable guy. I've been doing this for a while. It's not a shady business. No band, but there's a way to protest the ban. So he protests the ban. And they said, no, you're definitely banned. In fact, let's see if I can find it. Somewhere. It should be more bold in here, shouldn't it?
Starting point is 00:18:57 Anyway, it says somewhere you're banned for life. Not only is your ad account temporarily banned, you will never, ever advertise on Facebook again. Okay. Why was that, Brian? Because they thought he was selling pandas and pythons. Actual pandas and actual pythons. Okay.
Starting point is 00:19:19 So it's a misunderstanding, right? Let me give you all a glimpse into how big tech works. There's a misunderstanding. They have all these economy of scales they have so many automated systems that even when you protest it doesn't go to a human or when it goes to a human it goes to a human who has a insanely fractional understanding of what advertising is or in examples that i've run into in the app store area for like when I first launched the TalkPython training app for courses. It's been a week being declined at the Google Play Store because there's an app in the Google Play Store called LearnPython. That's its title,
Starting point is 00:20:02 LearnPython. And mine is called Talk Python Courses or something along those lines in the Google Play Store. But in the description, it says, if you get this app, you can learn Python from the experts at Talk Python training and so on, right? Yeah. Violated. You're trying to infringe upon the copyright of Learn Python. That app already exists. Banned. Excuse me? So I wrote back, surely you must misunderstand. I'm not trying to say the title is Learn Python. It's an act that one takes. One learns a subject and the subject happens to be Python. And so with our app, you can learn it. They're like, banned.
Starting point is 00:20:38 ProDESK, banned. I'm like, what is going on here? And so finally i had to just change the subject i said okay what if you were were learning a guitar you wanted to learn music and so with our app you can learn the guitar they're like oh i see the problem now yes you're right that's not the same thing as the title of learn guitar the app but it took a week back and forth and this is exactly the same situation i'm like your one job is to like compare apps and see if they've like you don't even understand the words that are in here right and but where do you go like i i um protest as high as i could and they're like nope banned i'm like this doesn't even make any sense and reuben is in a i would say slightly less bad because if
Starting point is 00:21:21 you're banned from advertising it's kind of like, I can't give this crummy company money to retarget. So it's not like you spent six months on an app and you can't sell it or deliver it. But still, it's the same situation. Like the worst part is he's just put his head in the sand and said, jerks, for a while and then came back like a year or two later. And they have a data retention policy where they threw away all the data after 180 days and so even though he has friends at meta they nobody can help him because they threw away the data that would have proved he was selling python courses not python animals and so he's permanently banned that's it really yes yeah because they they they
Starting point is 00:22:04 won't do it. And it was like a bot that banned him. It's really, really frustrating how some of these things work because like, uh, you know, an elementary school kid could go, yeah, I see those are not the same. These people whose job it is to make that distinction. Don't it's crazy. Yeah. Yeah.
Starting point is 00:22:22 Well, I guess if I ever want to advertise on Facebook, I'm glad that there isn't an animal named PyTest. Yeah. Well, and that you have a rocket, not some kind of animal. David out there points out it's surprisingly crushing to have your app rejected. It really is because you work for months on it and then you think it's ready to launch. And then it's just like, nope, there's absolutely no path forward to even delivering it. It's not like a website you just put on and people can like it or not. Yeah.
Starting point is 00:22:49 But I mean, also, I mean, Reuven, it is as like cutting off an advertising channel is pretty big deal. It is a pretty big deal. So I think, you know, the more the reason I brought this up is I think it shines a light onto just like big tech in general and how kind of it strips the humanity out of a lot of these situations and the person is just, nope. Well, you know, bot says, no, go away. Also a lot of these huge services and huge companies that like they're making tons of money and there's not really a way to talk to somebody about it.
Starting point is 00:23:25 Yeah, think how important your Gmail is, which connects to your Google Docs and everything else and your photos. What if something goes wrong with your personal Gmail? There's no one to talk to. There's no recourse, right? It's just, well, all of your tax documents or whatever you happen to store wherever are,
Starting point is 00:23:42 good luck with that. Yeah, or I mean paypal's been notorious about this too of just like holding funds just yeah yeah we're like we're just holding it for 30 days i but i need it to like do nope there's no there's nobody to talk to but yeah yeah sorry reuben sorry hey well extras i got any extras um i got a couple um do you want to do yours or yeah sure i got my uh yeah sure mine i almost made this an extra extra extra extra episode because here all about it because there's a lot of extras but i'll go quickly so first of all i have spoken about mcfly which is an awesome new ui for state like pretty much all the shells on macOS.
Starting point is 00:24:26 I believe it's restricted to macOS. Like it seems like a lot of these things are, but I love that. And so Nick suggested that I check out Atuin, A-T-U-I-N, making your shell magical with sync, search and backup of your shell history with end-to-end encryption even.
Starting point is 00:24:46 So very, very cool. It's got a really nice UI with like a pop-up that lets you you know search and navigate it'll let you search through like global you know all of the history or contextual based ones like what have I done in this directory before isn't't that cool? It stores whether the thing succeeded or not. So super, super cool. People can check this out. I believe it is pretty cross-platform. I don't think it's, yeah, it's written Rust. I think it works at least probably on Mac and Linux.
Starting point is 00:25:19 This is actually created by Ellie Huxtable. So very nice job, Ellie. And props to her 701 Husqvarna, cool picture of her out riding somewhere. So anyway, yeah, if that sounds interesting, check Etuin or however you say it out. Pretty neat. Nice. Uh, let's see. JupiterCon 2023 had a ton of great talks. There's 86 videos with a surprisingly only 2,400 views across all 86 videos, but we're trying to change that. People should check it out. So all those sessions from JupyterCon 2023 are out
Starting point is 00:25:54 and I'll link to those. And there's many things. Like look at that second one there. Shelly has a JupyterHub PyTest plugin. Nice. Cool. Yeah. Neat. And then, I want to make sure I give credit for this one. Shelly has a Jupiter hub pi test plugin. Nice. Yeah. Yeah.
Starting point is 00:26:05 Neat. And then I'm going to make sure I give credit for this one. He moved, sent in something. This is all, this is the episode on shell. So it's in a thing about, Hey, I talked about warp, right? Um, where warp is really awesome because it lets you treat what you type as a, as an editor. So like I could type something, then double click part of it, it'll select it, I can just start typing and use my mouse, all sorts of things. So you know,
Starting point is 00:26:29 you can do kind of sort of a little bit half of that with Z, Z shell and bash. So if you set it up, right, you can basically get you already mentioned this, Brian, the Vim key bindings, but you can also set up like emacs key bindings, I believe as well on and send over technically directions for this. But I don't know, man, when I look at these things, they're just so, um, the man pages and stuff, they bounce off my brain. Like I just, I look at this, I'm like, just an example, anyone, example, anyone anywhere in here that could just give me an example of what I need to do to make this work. But no, it's just like this parameter affects it in this way. I'm like, great, but what is the one thing I need to just so I get the, you know, anyway. And did you know
Starting point is 00:27:13 ZShell is hosted on SourceForge of, okay. Makes me a little less happy to use ZShell, honestly, just from a. Or not. It's been around a while and there's no churn in it um yeah i know it's true it's the default mac it's probably sufficiently safe but yeah anyway those um thank you timo for sending those in people can check them out if they don't want to deviate from where they are all right carrying on it was a rough weekend brian okay i tell you it was a rough weekend um no it kind of was like i had a little bit of a cold then i got both the covid vaccine and the flu vaccine all at once and so then i was like three times sick but it was also rough in the sense that a really cool feature for the rough or matter came out aka rough black
Starting point is 00:27:58 which is um cool so that was a i think some major version was released skylar who originally told us about this sent in a message like, there's kind of a major release. And the one thing that was holding me back from using it was I talked to Charlie Marsh and he said, hey, we're already working on this. But I'm like, hey, I much prefer using a single quote instead of double quotes. It's like, help us understand why. One of the main reasons is like i have rsi stuff that i got to be careful about i'm fine as long as i'm careful but if i'm not then i'm not yeah so for example if i wanted to type the letter a as a character if i use double quotes it's five
Starting point is 00:28:35 keystrokes if i use single quotes it's three keystrokes right and it's also um you know fewer hands in action just like less wear and tear so'm like, really don't want to switch double quotes like black does. So for a rough formatter added, um, somewhere, I maybe don't have any, I have it in the show notes. You have, you just say, uh, format dot quotes, I equal single. And then instead of going to double quotes, it goes to single quotes, but it also has some exceptions for like doc strings and things like that. So pretty cool. So the other sense in which it was a rough weekend is I
Starting point is 00:29:09 blasted, um, all the, the podcast websites and the training website with rough dash, uh, rough format and formatted like 600 Python files with it. And it took it like a champ and just like rough itself. It's so fast. You go format these 600 or these, I guess one project, probably the biggest one had 350 format, these 350 Python files done. Did it work? What did he do? And it literally just goes straight away. It's awesome.
Starting point is 00:29:36 Nice. Yeah. It's super, super fast. Yeah. Super fast. And okay. So, um, glyph says, Hey, thanks for the quick Mac hotkey shout out last week. And more importantly, my video for that whole talk, which featured that, but like six or
Starting point is 00:29:50 seven other cool things that you should check out is now online. So I'll link it to the video form there. Nice. That was a good one. All right. That's it. Other than a joke, what are your extras? Okay.
Starting point is 00:29:59 Well, I got a couple, um, Ned Batchelder, uh, wrote a post said, where did everybody go? Um, so basically kind of you know post twitter where are people and the and you know we've covered this before i'm i'm like i've tried new things lately um one of the things he talks about is a blue sky and i've tried that i i would i'm not going to try threads because it's because of where it comes from but um i tried blue sky and it's just seems to be empty to me. There's, it's slowly gaining traction.
Starting point is 00:30:30 But one of the things that I, why I bring this up is one of the commenters said, oh, by the way, remember that cert text search now works on Mastodon. And I kind of didn't know about that. So I wanted to make sure that people knew that. And we could play with it here. Oh, and I also wanted to show off a picture of my cats. So this was my bad cat yesterday getting into things. So if you go up and just do search, we can just search for stuff now.
Starting point is 00:30:58 And it's more than just the people you follow. So that's pretty nice. Yeah, that originally was protect people that might go use the search to find people or groups they want to like jump on and start yelling at. So if you can't search for them, you can't find them,
Starting point is 00:31:14 you can't be mean to them. But it really did take away from like, I just, who is talking about this thing? I have no way of knowing, right? Yeah. And so probably positive. It's certainly useful. Yeah, it's useful. It's useful for me to have search. of knowing, right? And so I'd probably positive. It's certainly useful. Yeah, it's useful.
Starting point is 00:31:26 It's useful for me to have search. And hey, look at that. PyCharm and JetBrains are doing a webinar about testing on November 21st. That's cool. I'll definitely have to check that out. So, and the other thing I wanted to bring up is I released, I'm still working on the complete
Starting point is 00:31:44 PyTest course, which is not quite complete yet. But chapter nine was released last week, over the weekend and chapter nine covered coverage. And my use of coverage has changed over the past year or so. So I kind of reflect that. The video is a way updated version of how I use coverage than when I wrote the book.
Starting point is 00:32:06 So that's nice. Awesome. Those are my extras. Glad you're making progress there. That's excellent. Thanks. Before we get to the joke, two comments from Blaze. I used to work at the Google Apps team when it was started.
Starting point is 00:32:18 The goal was to have zero personal interaction, which I can understand that, but it sure leaves you in a lurch when the automation doesn't treat you well, right? And add to end user for the past year. Pretty cool. Like me, no idea how to pronounce it. Jeremy says Python REPL also uses a realign. So anything bash edit, you can do too. So now I have Vim in my Python REPL, which is kind of cool. Okay. Yeah. All right. Ready for a joke. Yeah. Do it. Let's do it. All right. So now I have Vim in my Python rebel, which is kind of cool. Okay. Yeah. All right. Ready for a joke? Yeah. Do it. Let's do it. All right. So this one is visual, but just imagine a normal,
Starting point is 00:32:51 a normal distribution. Okay. And the height is representing code complexity. And can I open this? Yes. And the X, what would be the X axis is representing years or time of programming. Okay. So right in the beginning, when you're brand new, you write super simple code, right? I'm just getting started. I got some for loops, a function maybe. And then as you get a little experience, it goes up in complexity, got object oriented programming everywhere, a little farther design patterns, baby at the peak of the normal distribution you've got abstract interfaces i might need this later and this is what the experts do but but as time goes on you go right back down that slope after like 10 years of programming you're back to like super simple
Starting point is 00:33:38 code it's honestly this really connects with me as kind of a lesson. Yeah, definitely. Yeah. I had a couple of years ago, I had some people at the company asked me to develop a template that people could use to write their test code. So I had a test with one function in it called def test underscore, and it said assert true. That was it. I'm like, okay, here's your template. You don't really need much. Yeah, and also the OOP everywhere. I mean, I remember doing tons of classes.
Starting point is 00:34:11 Now, even with my C++ code, I try to avoid as many classes as I can. Yeah. Because it just gets in the way. This totally looks like my life. Yeah. Yeah, mine too. I think classes are fine, but like deep object hierarchies and trying to make object hierarchies define the whole world is a pretty bad adventure.
Starting point is 00:34:30 Although the worst I do think is that I might need this later. So let's build an abstraction around this concept rather than I'll just refactor it if I actually do. Yeah. And Pat, hey, Pat is out in the audience says less is more. Thank you. Indeed, Pat. I'm a big fan of the term yagany that came up with the extreme program.
Starting point is 00:34:48 You ain't gonna need it. You ain't gonna need it. So keep it simple. Something stupid. Indeed. Anyway. Well, thanks.
Starting point is 00:34:57 All right. Yeah. And I'll try to put this picture as the, the chapter art for this chapter. So glance down at your podcast player and you might see it. Yeah. Nice. Yeah.
Starting point is 00:35:07 Even works in CarPlay. I don't know about Android auto. I haven't both listened to CarPlay. One of our, one of our episodes on Android with Android auto turned on, but I know it works for, for iOS. Okay.
Starting point is 00:35:19 Don't look at your phone when you're driving though. It's true. Yeah, it's true. All right. See you later, Brian. Thank you everyone.
Starting point is 00:35:27 Bye.

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