Python Bytes - #409 We've moved to Hetzner write-up

Episode Date: November 14, 2024

Topics 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)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 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.
Starting point is 00:00:33 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.
Starting point is 00:01:04 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.
Starting point is 00:01:22 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.
Starting point is 00:02:09 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.
Starting point is 00:02:49 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.
Starting point is 00:03:07 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.
Starting point is 00:03:29 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
Starting point is 00:04:11 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
Starting point is 00:04:52 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
Starting point is 00:05:40 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
Starting point is 00:06:28 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,
Starting point is 00:06:58 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.
Starting point is 00:07:15 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.
Starting point is 00:07:37 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
Starting point is 00:08:13 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
Starting point is 00:08:49 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
Starting point is 00:09:05 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
Starting point is 00:09:32 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.
Starting point is 00:09:48 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.
Starting point is 00:10:03 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.
Starting point is 00:10:31 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
Starting point is 00:10:58 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.
Starting point is 00:11:17 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
Starting point is 00:11:45 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.
Starting point is 00:12:11 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.
Starting point is 00:12:26 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
Starting point is 00:12:59 $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.
Starting point is 00:13:37 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,
Starting point is 00:14:10 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,
Starting point is 00:14:36 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.
Starting point is 00:15:04 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.
Starting point is 00:15:19 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.
Starting point is 00:15:40 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.
Starting point is 00:16:09 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.
Starting point is 00:16:31 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.
Starting point is 00:16:46 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.
Starting point is 00:17:33 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.
Starting point is 00:18:11 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
Starting point is 00:18:35 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
Starting point is 00:19:12 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.
Starting point is 00:19:53 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.
Starting point is 00:20:09 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.
Starting point is 00:20:42 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.
Starting point is 00:21:15 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.
Starting point is 00:21:51 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.
Starting point is 00:22:10 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.
Starting point is 00:22:33 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.
Starting point is 00:22:56 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.
Starting point is 00:23:33 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
Starting point is 00:24:04 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.
Starting point is 00:24:59 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,
Starting point is 00:25:16 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.
Starting point is 00:25:35 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
Starting point is 00:26:06 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
Starting point is 00:26:24 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,
Starting point is 00:26:55 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,
Starting point is 00:27:18 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
Starting point is 00:27:46 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.
Starting point is 00:28:40 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.
Starting point is 00:29:07 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.
Starting point is 00:30:07 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.
Starting point is 00:30:23 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,
Starting point is 00:30:42 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
Starting point is 00:31:26 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
Starting point is 00:32:05 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.
Starting point is 00:32:50 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.
Starting point is 00:33:04 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.
Starting point is 00:33:17 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.
Starting point is 00:33:28 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.
Starting point is 00:33:42 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.
Starting point is 00:34:18 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.
Starting point is 00:34:36 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.
Starting point is 00:34:58 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.
Starting point is 00:35:06 Bye everyone.

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