Python Bytes - #358 Collecting Shells
Episode Date: October 24, 2023Topics 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)
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.
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.
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
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.
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
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,
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,
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.
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
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.
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,
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.
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
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
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
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
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.
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.
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
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.
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.
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.
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.
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,
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,
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?
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
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
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
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.
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.
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.
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
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,
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.
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.
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.
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
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.
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
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
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?
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.
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,
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.
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
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
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.
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.
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.
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,
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.
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.
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.
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
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.
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,
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
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
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
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
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.
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
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.
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.
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.
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,
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.
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
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.
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.
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,
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
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.
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.
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.
You ain't gonna need it.
You ain't gonna need it.
So keep it simple.
Something stupid.
Indeed.
Anyway.
Well,
thanks.
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.
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.
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.
Bye.