Python Bytes - #409 We've moved to Hetzner write-up
Episode Date: November 14, 2024Topics covered in this episode: terminal-tree posting: The API client that lives in your terminal Extra, extra, extra UV does everything or enough that I'm not sure what else it needs to do Extras ...Joke Watch on YouTube About the show Sponsored by: ScoutAPM - Django Application Performance Monitoring Codeium - Free AI Code Completion & Chat 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: terminal-tree An experimental filesystem navigator for the terminal, built with Textual Tested in macOS only at this point. Chances are very high it works on Linux. Slightly lower chance (but non-zero) that it works on Windows. Can confirm it works on Linux Brian #2: posting: The API client that lives in your terminal Also uses Textual From Darren Burns Interesting that the installation instructions recommends using uv: uv tool install --python 3.12 posting Very cool. Great docs. Beautiful. keyboard centric, but also usable with a mouse. “Fly through your API workflow with an approachable yet powerful keyboard-centric interface. Run it locally or over SSH on remote machines and containers. Save your requests in a readable and version-control friendly format.” Able to save multiple environments Great colors Allows scripting to run Python code before and after requests to prepare headers, set variables, etc. Michael #3: Extra, extra, extra spaCy course swag give-away, enter for free New essay: Opposite of Cloud Native is? News: We've moved to Hetzner New package: Introducing chameleon-flask package New release: Listmonk Python client TIOBE Update PEP 750 – Template Strings Canary email Left Omnivore, for Pocket, left Pocket for, …, landed on Instapaper Supports direct import from Omnivore and Pocket Though Hoarder is compelling Trying out Zen Browser Wasn’t a fan of Arc (especially now) but the news turned me on to Zen Brian #4: UV does everything or enough that I'm not sure what else it needs to do Jeff Triplett “UV feels like one of those old infomercials where it solves everything, which is where we have landed in the Python world.” “My favorite feature is that UV can now bootstrap a project to run on a machine that does not previously have Python installed, along with installing any packages your application might require.” Partial list (see Jeff’s post for his complete list) uv pip install replaces pip install uv venv replaces python -m venv uv run, uv tool run, and uv tool install replaces pipx uv build - Build your Python package for pypi uv publish - Upload your Python package to pypi, replacing twine and flit publish Extras Brian: Coverage.py originally was just one file Trying out BlueSky brianokken.bsky.social Not because of Taylor Swift, but nice. There are a lot of Python people there. Joke: How programmers sleep
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 409, recorded November 13th, 2024.
And I'm Brian Ocken.
And I'm Michael Kennedy.
And this episode, we've got a couple sponsors, Scout APM and Codium.
Thank you both of them, and listen to their spots later in the show.
If you'd like to connect with us, connect on
Fostedon.org. We're M. Kennedy, Brian Ocken, and Python Bytes, but any Mastodon client gets to us.
And now also Blue Sky. So I'm trying out Blue Sky, so we'll drop a link to that as well.
And if you'd like to listen, if you're listening to this in a podcast player, you can join
us live sometime on YouTube at PythonBytes.fm slash live.
And no need to jot down notes while you're listening, because you can just sign up to
be a friend of the show and sign up for our newsletter.
And we will send all the links to you into your inbox every week.
That's right.
The bytes come to you.
You don't have to come to them.
Yeah, exactly.
So I like to, I think we should jump into the terminal this week a little bit.
Yeah.
What do you think?
We absolutely should jump into the terminal.
And I just want to point out, I got a lot of stuff to cover.
I'm on my third cup of coffee and it's 730 in the morning.
Let's go.
We'll start with something from will
mccougan it's been a while since we spoke about rich and textual but the drought is over folks
the drought is over this is something i saw will throw out as a proof of concept okay have you seen
this brian uh no so it's pretty cool imagine if you will as i have actually been if you will, as I have actually been. If you will.
Imagine, if you will, that you are SSH'd into your server for a lot of the recent days,
working on something.
You know, you've got tree, which is a command that will show sort of a hierarchical view of things.
But wouldn't it be nice if there was something kind of graphical that you could use to explore and interact with the file system a little bit like Mac Finder or something like Windows Explorer well that is what this
terminal tree is so the idea here is oh that didn't like that it so the idea is
that you run this in the shell and it gives you a tree-like view of here we go that's a better one
gives you a tree-like view that you can explore with your keyboard it also says mouse i don't
think that works on linux but it works it seems to work on mac os anyway maybe with your mouse
certainly with your keyboard that you can sort of open up the tree and go around you find a file
you can hit p to preview it in a little side tab thing,
like side by side with the tree.
You can jump from different roots of this tree
by just hitting G and then typing directory slash apps, enter.
And then you're just exploring
whatever your apps folder is or whatever.
What do you think?
I think this looks pretty nice, actually.
Pretty great.
Yeah, I was using it over SSH and it's pretty nice.
Now to be clear, it is a, where does it say this?
I don't know, Will says.
I don't know if this will become a standalone tool or
folded back into textual or nothing.
But if you're interested, fork it, play with it, let me know.
The one thing I was talking to Will about when I saw this was,
wow, wouldn't it be cool to be able to specify a starting
directory? Like create me a tree of this place, but right now it just jumps into your home directory.
Then you got to navigate from there. Also hat tip to, Hey, let's run this using UV with a zero
install, zero download. There's, you don't even download textual or this file or anything. You
just run UVX from the git repo and you specify
a python version i suppose you could probably drop that actually and then the dash q so it doesn't
output all the hey we're creating rich environment all that oh nice right that's the terminal tree is
the entry point to this package so yeah i think if you're looking for a quick way to explore
your your file system over ssh this is pretty nice. Or even in the terminal on
your own machine, although I find that some people I'm sure would love that. It's not how I roll. I
just use Finder or an IDE or whatever it is that I'm working with there. But over SSH, this is
handy. Nice. Cool. I actually love all the terminal apps or the textual apps. Yeah, there's a lot of good ones.
Yeah.
I feel like we might be heading in that direction again.
Yeah, so another recent find around textual is this beautiful API client called Posting.
And I got this from Darren Burns.
And actually, it's his project um jaron burn and
isn't isn't he part of the textual team uh i think so if not my memory is serving me incorrectly but
okay so um so this is a gorgeous uh client and it's uh it's a open source terminal app and it's
all color coded and you've got um colorization for the output on the left hand
side you've got collections which is cool um you can hide that as well but different ways like if
you're jumping to different apis like if you're trying different apis out you can have them up in
different collections but i i started this quickly i'm like right before this morning i'm like we i
should try this so i'll give it a shot and went down
and said get started and similar to like you said the the top uh installation instructions were
to use uv tool um so that's a uv tool is is and i'm using it now uh on lots of things i think it's
a little easier than pipx so that's um so I'm using. So UV tool install Python 312
posting and posting will get you started with this. And I really loved I'm just going to go
back to the main homepage because it has a lot of the stuff I wanted to talk about. It's a beautiful
interface. You you you I was trying it out with the mouse. Actually, I'm on a Mac and using the
mouse worked great i
tried some of the keyboard shortcuts too there's keyboard shortcuts at the bottom and then the
documentation has more that you can just show you how to jump around so you it does is designed to
have some quick workflows to walk work for work around um like testing a testing an ap and it works over since it's termed textual works over SSH it
saves stuff so when you interact with it it saves all of your interactions and
you can save it to a file and it's a version control friendly file so it's
something you can diff and stuff if you want to do it a couple times and see how
things are different one of the things I loved about this
is when I've tested APIs before, sometimes I've
got a whole bunch of header stuff
that I need to stuff into an API to just get it working.
So manual things like, oh, I forget that other one,
that manual stuff that you can jump around and manually
fill things out is a little difficult.
But this one has the ability.
Are we thinking Postman?
Yeah, stuff like that.
And it's great for things that you
don't have to fill in a bunch of header stuff for a post
or for a query.
But if you do, this will work great,
because it's got scripting capabilities,
where you can run some Python code before and after,
or and or after a request
to prepare the headers, set variables and stuff to get your post ready.
And this is just excellent.
I'm going to be using this all the time.
The colors are gorgeous.
Love the syntax highlighting.
It's configurable.
The key maps, you can even customize the key binding
if the ones
that they've chosen for you don't work that right that's pretty cool but just an excellent little um
command thing for or a terminal application for testing your apis yeah uh this is one of the
more full featured textual apps i've seen this is great yeah so we get from uh from liz in the audience um i love this thing
i've been wanting to replace postman for a while nice so yeah i was just in postman today but i
don't want to tell you about postman brian i want to talk about scout let me tell you real quick
about scout apm they're big supporters of python, so we appreciate that very much. So if you are tired
of spending hours trying to find the root cause of issues impacting your performance, then you owe it
to yourself to check out Scout APM. They're a leading Python application performance monitoring
tool, APM, that helps you identify and solve performance abnormalities faster and easier.
Scout APM ties bottlenecks such as memory leaks,
slow database queries, background jobs,
and the dreaded N plus one queries
that you can end up if you do lazy loading in your ORM,
and then you say, oh no, why is it so slow?
Why are you doing 200 database queries
for what should be one?
So you can find out things like that.
And it links it back directly to source code
so you can spend less time in the debugger
and healing logs and just
finding the problems and moving on and you'll love it because it's built for developers by developers
it makes it easy to get set up seriously you can do it in less than four minutes so that's awesome
and the best part is the pricing is straight forward you only pay for the data that you use
with no hidden overage fees or per seat pricing. And I just learned this, Brian.
They also have,
they provide the pro version for free
to all open source projects.
So if you're an open source maintainer
and you want to have Scout APM for that project,
just shoot them a message
or something on their pricing page about that.
So you can start your free trial
and get instant insights today.
Visit pythonbytes.fm slash Scout.
The link is in your podcast player show notes as well.
And please use that link.
Don't just search for them
because otherwise they don't think you came from us
and then they'd stop supporting the show.
So please use our link pythonbytes.fm slash scout.
Check them out.
It really supports the show.
All right.
Next up, Brian.
It's good I had a lot of coffee
because there was almost a first
after eight years, nine years, eight years of the show. How long has it been going on? We just had
our birthday last week, by the way. After that, we've never had a straight run of extra, extra,
extra as all of the topics. I almost have too many topics that I had to have two extra, extra extras,
but they're quick.
So, okay, ready?
All right, here we go.
First of all, we have our getting started with NLP and Spacey in Jupyter Notebooks course.
This one is awesome. If you do anything with Spacey, then or anything with text and you want to parse it with Python, Spacey is a great option.
Vincent Orberdam, who used to work at Explosion,
actually wrote this course.
So why am I telling you about that?
Because over at Google Forms here,
we're doing a spaCy swag giveaway.
So they have a spaCy course with illustrated how-to books
and all sorts of other cool things
that you can get around spaCy.
So Enus Montani gave us some codes to give away for people who are interested in that.
So I put a link.
All you gotta do is give us your name and email so that we can find you
and give you the code if you want.
So check that out.
Links in the show notes, obviously.
A couple of articles I wrote, Brian, maybe three.
I w I've been writing a lot last week.
One is I wrote something opposite of cloud native is
trying a little bit of a pushback against how many managed services can you have? Well,
let's use Kubernetes. Oh, and it's with Kubernetes, it's hard to see the logs. So we're
going to need log aggregation. And then with log aggregation, we need some log monitoring. And then
like, you know, on and on, it just like builds until you've got this super complicated thing.
And so this article
is kind of an homage to like could we just go back to something simple that will work for like tons
of people i think so i'm proposing the idea of stack native like just enough technology to make
what you need your web app or your api or whatever to run not something that'll tie you so deeply
into all the hyperscale clouds that you end up with a $100,000
bill, but no idea how to move away from it.
Okay.
I almost read this as one of my topics.
This is a great article.
Did you?
Oh, thank you so much.
That's awesome.
Yeah.
This is a really, really fun one.
Related.
I also wrote, and I talked about it last time, but I wrote this up that we, Python Bytes,
TalkPython, TalkPython Training, all the APIs, et cetera, et cetera, in like a broad sense, have moved to Hetzner.
Remember, I talked about how Hetzner was really interesting and appealing.
And, hey, I took the plunge, bought us a, I splurged, Brian.
I went for the big VM, the big machine.
Okay.
Eight virtual CPUs, 16 gigs for a whopping $25 a month.
That is $112 at DigitalOcean, $205 at AWS, and $320 a month on Azure. Same
machine. Okay. And if you look, the performance, people are saying, well, it was probably cheaper
because it's like from 20 years ago or something. CPU performance, 1.2 times faster than DigitalOcean's
$112 version. And the bandwidth is eight times more, one gigabit bandwidth versus two for 25 bucks.
So anyway, this is really, really excellent. And talked a lot about that. So another thing I did
is I created, I was on vacation for four days, long weekend. So I decided to create a package
for Chameleon and Flask. chameleon, the web templating language
flask, you know, a flask is usually uses Jen's ginger.
I don't like ginger very much.
I think it's too much Python and not enough pure web, not like view or other things where
you just have little attributes chameleon is like, then I like it a lot.
Plus I have a whole ton of chameleon templates.
I don't want to mess with, but I want to do some Flask things with some of that base. So I created a package that if you just put a decorator onto either a async or a regular
non-synchronous view method in Flask, it will, when you return a dictionary, it'll use that
dictionary to render the chameleon template.
It's pretty awesome.
That's neat.
And if anyone wants a really cool example, there's some of these that have existed before,
but they were super, they were super simplistic, like, okay, so technically, the chameleon engine is set up,
but then you have to do every view, you've got to do all the manual steps to actually render it,
or it only works with synchronous functions and not async. So here's a decorator that looks and
sees if it's decorating asynchronous or asynchronous function and creates a different wrapper behavior.
So the wrapper itself is async or not async,
depending on which it covers here.
So if people are trying to write something,
regardless of whether it's web or not,
that can handle both sync and async,
here's a little example for them.
All right.
Next, also released a new version of ListMonk,
the email API client for Python.
I have this guy's name, Ron. Thank you. Ron Hudson did a bunch of work
adding new features to that. So that is out. Also...
You're still on Spoonver. What's up with that? Well, it's only been out a couple days.
I feel like I should give it a week. I'm just now rewriting.
I've been doing a bunch of work the last day to use that to convert something into Flask.
I'll talk more about that later.
And there's been like little tiny issues.
I want to get it a little bit more.
I want to test it for a week before I give it a non-zero.
Come on.
Okay.
Okay.
That's fine.
Okay.
Yeah.
Oh, and Ron is out in the audience.
Hey, Ron.
Awesome. Thank you, man. Thanks for the help. Okay. So on here to TOB, we all know the TOB, TOB index. There was big news. Hey,
Python's number one. Hooray. In this other way, right? We just talked about GitHub last week and
TOB. This is not news that Python is number one, but it was updated for year over year in November.
And I just noticed, look at the numbers here. Python is not just number one over C++,
then over Java, over C.
It's over two times as popular
and has a almost 9% year over year growth.
Whereas number two, C++ has 0.3% and Java's 1%
and C is negative 3%, C sharp has negative 3%.
So not only is it number one, it's double
and is growing many times faster than anything else on the list, including Rust.
That's amazing.
So I'm not sure if we should really bet our careers on these toy languages yet, but, you know, you guys do you.
Okay.
I'm betting my career on it, baby.
A little late.
So update on PEP 750 being spearheaded by Paul Everett and others.
I just talked about Jinja versus Chameleon.
Yeah.
But these are all external packages that have their own parsers,
their own behaviors.
And wouldn't it be nice if Python itself had a type of a template language?
Maybe.
Sure.
Maybe.
Well, I mean, we have F strings.
We do have F strings.
But when you're doing things in, say, I want to create the content of an HTML page in memory as part of some action, right?
A lot of people say, well, I guess we could run, like, set up the Jinja engine or whatever.
So this PEP 750, which is in draft mode currently, targeting 3.14, is trying to bring some modern version
that's like F-strings into Python. So this is interesting coming along. Progress is happening
there. Cool. Switched over to Canary email, Brian. I got so sick of Spark and all of their,
hey, we're only focused on building AI features, even though chameleons or canary says it's your AI email copilot, they actually seem to be
working on features that are not just AI, even though that's what their landing
page seems to say.
So that's, that's an interesting experiment I'm running, but not as
interesting as a couple others that are coming up.
Omnivore.
Remember I told you they're shutting down and deleting everybody's account?
Yeah. All right. So I thought, well, let me go back to Pocket. Pocket supports Firefox because it's owned by Mozilla. That's kind of cool. And I had a paid account to them. So that's
great. And then I realized that Pocket kind of represents everything that's wrong with Mozilla
on a broader scale. And it made me sad. So for example, I told you I took this four day trip. I'd like to take some things and take it with me and maybe read it on the
plane or at the beach or wherever.
Yeah.
Pocket has been around for 10 years.
They were acquired by Mozilla in 2017, I believe it was.
They don't even support offline mode.
You can't even read the text offline like an ebook.
It's, It's like acquired
in 2017, put on the shelf, worked on other random things that have nothing to do with
Firefox or other things they're selling, right? Anyway, made me sad. Went through a whole
bunch of different other things. Back at Instapaper, Instapaper is actually really great. The only
thing it's not great at is read it to me, which is what Omnivore was so perfect at,
but you know what
they're dead so i will not speak of them ever again anyway instapaper is actually pretty awesome
these days so i know a lot of people are talking to me on mastodon and other places that's where
it's at about so it's other people are saying they like it or don't like it well no one really
mentioned instapaper one way or the other but there's good links there's readwise there's like
a bunch of other premium paid ones that are just they're not that great but they're expensive like
a hundred dollars a year expensive so I don't know I tried them Instapaper's weren't so I started
you I used Instapaper a long time ago and I don't remember why I stopped but I don't remember why I
stopped either but well I know why I switched to Om omnivore because it was awesome but it's gone so say love you anyway onward and upward if you are
feeling the open source self-hosted world there's hoarder i mean who doesn't want to be a hoarder
brian but this is really awesome it's kind of a save your links and notes and articles and then
let locally running ai tag them and group them and And this thing, you just, it's a Docker run open source.
It's pretty awesome, but I do not need more self-hosted things to babysit and
back up, so not messing with it.
That's a bit, but people, they really want, this is, it looks pretty neat.
All right.
We're getting close to the end.
I promise.
Yeah.
This last one.
So have you heard about the arc browser?
No super minimalist wrapper around Chrome, like Vivaldi, but it's all about reimagining the web.
And you don't even see the address bar.
You just hit a command palette and then you type the address you want.
And it's just magic.
And well, if you wanted to, I don't know, take the most extreme caricature of a Silicon Valley bro.
The person running ARK is that.
There's some amazing videos in a cringy way.
So they made ARK, and it became incredibly popular amongst the people who liked it.
It was going really, really, the adoption was going very fast.
And they decided, we want to build a browser that's really based in AI, and you don't even need to tell it what you want to do. It just browses the
web for you. You're just with it. Like, seriously, that's their new project. And they're kind of like,
yeah, we're done with this Arc thing. We're going to go build something that browses the web for
you. So a bunch of people are like, ah, what is that? Well, it turns out that someone, some group
was working on this thing called the Zen browser. Now, I knocked on Mozilla before.
This is based on Firefox, and it's awesome.
Okay.
Okay, so this is a super minimalist wrapper that gives you a really clean, nice, just let me see the web.
You know, Chrome was called Chrome because it literally maybe should be anti-Chrome.
It took away the window Chrome, all the junk that used to be around all the toolbars and buttons and everything.
And it minimalized it. But this is, you know, the next version of that. And it's, it's super neat.
So in fact, that's what I'm running right here. And you can see all the, all the things you can
see the little tab bar on the side, but you don't even have to have that there. And isn't this nice?
Sure. It's cool. Yeah. So anyway, I'm giving this a try. It's quite promising.
The people working on it are releasing versions a couple times a week.
So it says alpha, but it's working pretty well.
So anyway.
I do want to shout out like one of the features of the ARC browser is that whenever you look at a picture of an animal, you see two.
Yeah, exactly.
Of course, because how else are they going to go on the ARC?
Yeah.
They're not allowed in if there's just one picture of them.
Yeah, that's pretty good.
Okay, so I recommend zen-browser.app.
It's pretty awesome.
Right now, it doesn't have a built-in ad blocker.
And if you go to a site that's got a bunch of ads
and you somehow block them with, say, DNS or whatever,
it'll leave big gaping holes, as did ARC,
unlike Vivaldi, which takes them away.
But I talked to the Zen browser people, and they said that they are very soon releasing a feature that cleans up the pages.
So it's not just pages with holes where these would be ads, but a clean page.
So anyway, if you're wondering about that, that is coming.
I'm still pretty happy with Vivaldi.
I know.
Go for it.
I'm experimenting, but I'm also still a big fan of Vivaldi.
So this does have the drawbacks that Firefox itself has in the sense that certain pages don't behave as well based on Firefox, right?
Because it's really Firefox at the core or Gecko or whatever they call the rendering engine these days.
Okay.
All right.
Over to you for your final item.
Yeah.
So for my final item, I wanted to talk about UV.
We actually talked about UV twice at the beginning of the show, talking about how UV install or UV tool install works like PIPX.
But there's an article from Jeff Triplett saying UV does everything or enough that I'm not sure what else it needs to do.
This is a great title because that's how I feel.
I mean, UV is, it's kind of refreshing that I need to forget about a lot of things.
These other projects are still great,
but it solves so many problems.
I'm just going to read here.
UV feels like one of those old infomercials
where it solves everything,
which is where we have landed in the Python world, like slices, dices, Julian's. So I've had several discussions with friends about
UV. And even when we talk about it during my weekly-ish office hours, the list has grown.
And it starts to sound like not just what can it do, but when it's a shorter list to say what it
cannot do. So let's just come up with some, he when it's a shorter list to say what it cannot do.
So let's just come up with some, he has a list of things that I think are great of how it's
replaced things. So UV pip install replaces pip install. Um, not completely, but yes. Uh, yeah.
Um, I am now using that almost exclusively UV V N V replaces the Python dash Mv and v um and uh i'm using that wherever i can so yep using that
uh uv pip compile replaces pip tools compile pips uv pip sync replaces pip tool sync uh uv run
replaces pip x uv tool run it replaces pic backs and like we talked before, UV tool install does the installation of tools as well.
UV Python, actually, we covered that on the show, but I haven't really been using that very much because I use virtual environments.
And a virtual environment just installs Python for me if it's not there.
So that's what I've been doing.
Yeah, it's super awesome.
I don't find I use it very much locally,
but I do use it in Docker when I got to get Python into a Docker image.
It's a nice way to do that, yeah.
Cool.
UVBuild, which was new to me,
or I forgot about it,
will build your package for PyPI
and UVPublish publishes it.
I just, you know, I told you I published those two packages,
the chameleon-flask and then the list monk one.
Yeah.
Both of those, UV build, UV publish.
Perfect.
And what I find is I'm using these like on new packages.
I'll do UV, I'll do build and publish
until I get the workflows going.
Because after a package is, you know,
around for a little bit,
then I do a GitHub workflow you know around for a little bit then i do a github
workflow that um that will just do a build and publish on uh with a version when i push a version
that does that for me so nice so there's that um and then uh we talked about this uh github actions
you uh with uh setup uv is there astral has a a setup UV for bringing UV into GitHub actions to make that
faster.
And then there's a Docker thing,
bringing UV and Python to Docker.
Have you used this?
Have we talked about this?
No,
I believe it uses multi-layer Docker builds where you have a build image
and then you have the destination image and it gets that one and it copies
it into the actual running image but i have a base image that just does the curl
install and it barely ever updates so it just it's fine for me to just do it that way i didn't
mess with this and so i i liked the idea where poetry was going a while ago with um with trying
to um have like kind of a unified project feel
to have these project files.
But I wasn't ready for it then.
But now that I've converted everything
to pyproject.toml,
having that as my project file makes sense.
And UV has add, remove, sync, and lock
that do things that are project related.
So adding a dependency to a project,
removing, so it'll add to a PyProject.toml,
remove, sync.
And I'm actually finding I'm using this a lot.
So I'll create a,
so I'll clone a project,
create a virtual environment,
and do uvsync,
and it installs everything that's
in the, in the, in the project Tom or requirements file suite. So if you think is awesome. Yeah.
So then he talks about what does it, what does it not do? And it doesn't run custom
scripts defined in your project Tom. Oh, okay. There's a few things that doesn't do doesn't
manage bumper and bump versions like
bumper there's so many plays that people do versions that you know I do you do you have
a bumper sort of a thing that you use Michael because I I used to I used to choose a couple
but but they were more complex I mean it was just an extra thing and i thought yeah all it's doing is make changing
a number for me i can just do that exactly no not really i have one that sort of keeps track of how
many deploys or push to productions i have for certain things but it's kind of meaningless you
know so short answer no i love the last item uv doesn't replace Python, nor should it.
But I don't even feel bad that I'm using UV in all the places where I can, because why not?
I am your father.
No, I don't feel bad about it either.
I love it. It's revolutionary in how quick it does things and how comprehensively it does it,
especially getting Python versions on Chain Machine and creating virtual environments with different versions of Python.
It's glorious.
Yeah.
All right.
Before we get to our extras, are there any other extras?
No other extras, except for we have an extra sponsor I'd love to tell people about.
This portion of Python Bytes is brought to you by Codium, the AI tool of choice for professional software developers.
That's C-O-D-E-I-U-M.
Codium removes tedium from your development through a suite of state-of-the-art AI capabilities available with extensions in all of your favorite IDEs. Thank you. enterprise customers, including multiple regulated Fortune 500 companies in completely
self-hosted air gap deployments. Join over a million developers and use Codium for free
forever. Once you see the value, then it's time to ask your company to consider a free trial
of the enterprise plan. To learn more about Codium and get started today for free,
visit pythonbytes.fm slash Codium. That is pythonbytes.fm slash C-O-D-E-I-U-M.
Don't forget the E.
Or just click the link in your podcast player's show notes.
Thank you to Codium for supporting Pythonbytes.
Absolutely.
So no extras.
I got an extra.
Wait, you got extras.
I have no extras because I am still out of breath from covering all the extra extras.
Yeah, the extras.
So I wanted to just, there's a little article from Ned B the extra extras. Yeah, the extras. So I wanted to just,
there's a little article from Ned Batchelder,
Covers.py originally.
And it's, what I thought was,
I always wondered why it's called Covers.py.
Is it because it's like all the stuff on PyPI is Python.
So why.py?
Well, it used to be one line of code or one file,
not one line of code,
but it was originally a single
file. So the coverage.py name was literal. It was a name of a file and it had only 350 lines of code.
And it was written by Gareth Rees in 2001. And Ned started maintaining it in 2004. So a few years
later, and he still will tell you, I didn't invent coverage.py. I'm
just maintaining it, but he's maintained it for all but three years. And, uh, and now it's, uh,
20,000 lines of code and about a hundred files. So it's, and it's, uh, got twice the amount of
C code as it originally had. And, uh, it's almost 20 years later. ned's still still pushing the ball forward so we appreciate
that ned and that's why it's called coverage.py so that was it yeah very cool the other extra 20
years trying 20 years on a project yeah that's awesome and uh we couldn't ask for a better
maintainer for this project so ned's awesome um the other thing is there's been some news lately about people wanting to shift from what used to be Twitter and now is X.
And a lot of people are going to Blue Sky.
I'm trying it out myself.
So if you're over on Blue Sky, connect with me.
And we'll play with it a bit, see if we want to do something else for the podcast or not.
All right, cool. You might drag me over there. I'm not there yet. On the Mastodon. a bit see see if we want to do something else for the podcast or not but all right cool you
might drag me over there i'm not there yet but um so the mastodon definitely also one of the things
i i was going to try to find this article but i can't i can't find it uh there was a article
saying that like a year ago there were or even just a few months ago there were like so many
millions of people on blue sky but none of them were very active. Like there weren't, there were like, like me, I had an
account, but it wasn't there very much because, and it sort of feeds on itself, right? It's a
network effect. If there, if you, if you talk and nobody says anything back to you, it's not fun,
but now it's, it's got a huge growth. Even Taylor Swift said she's switching over to Blue Sky.
But there's a lot of Python people there now too.
And it's not just an echo chamber.
The people are actually hanging out and replying and stuff.
So it's getting fun there.
So just letting you know.
Awesome.
And that was my extra, really.
Go follow Brian in the sky.
Yeah.
All right, ready for a joke?
I am very ready.
I am.
Also, a quick shout out to the Momentum extension, which gives you a cool little homepage with all sorts of fun stuff if you want.
Oh, that's on your new Zen thing?
Yeah, but you can get that in Vivaldi.
You can get that wherever.
Yeah.
Okay.
Yeah.
Very neat.
And a bunch of cool little hot links.
But that's not funny.
No.
Sleeping is funny.
How about how programmers sleep? We talked about the, how they sit in chairs last time.
We're we're, we're down to the basics here, Brian.
Okay.
But I think, I think many of us will relate to this.
So there's a picture of a programmer cat sleeping earthquake, still asleep.
Thunderstorm still asleep.
Alien attack.
Pew pew.
Still asleep.
Remembers how to fix that error on line 56 boom shoots out
of ed three in the morning but i can fix it yes definitely
liz says i'm in that picture and i don't like it
okay sort of related i gotta tell this story last Last night, I was writing up an article on,
not an article, I was explaining to some of my sponsors
that how some requirements cannot be implemented.
And I listed out the reasons why the implementation
is not possible.
And then at the end, I'm like, either we don't do this
or we move the database out of one of the objects.
Well, we can move.
That's fine.
Oh, it's possible?
Yeah.
So sleep or writing it down helped to figure out.
Yeah.
Or even just going for a walk or something.
I would do that a lot when I get stuck.
When I was earlier in my career, I'm like, it's time for a walk around the building.
I'll be back in 10 minutes.
And also, yeah, I'm babysitting a kitten right now and he's not letting me sleep.
So he might be sleeping through a thunderstorm, but I'm not sleeping through the kitten.
So anyway.
Very meta.
I think we got to leave it there.
What do you think?
Yeah.
Let's, let's stop talking.
Thanks again, Michael, for a wonderful episode.
Bye.
Yeah.
Thanks always.
Bye everyone.