Python Bytes - #315 Some Stickers!

Episode Date: December 20, 2022

Topics covered in this episode: Jupyter Server 2.0 is released! Converting to pyproject.toml aws-lambda-powertools-python How to create a self updating GitHub Readme Extras Joke See the full sho...w notes for this episode on the website at pythonbytes.fm/315

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 315, recorded December 20, 2022, almost the end of the year. I am Brian Ocken. I'm Michael Kennedy. It is almost the end of the year. Are you guys, you ready for Christmas and everything? Yeah, starting to think about Christmas, maybe try to do some skiing. You know, it's getting cold and it's snowing in the mountains around here, so yeah, getting there. Why don't you kick us off with our first story?'s go let's talk some jupiter server so this
Starting point is 00:00:29 is a an announcement by zach sailor and it says jupiter server 2.0 is released and we know what jupiter is we know what jupiter notebooks are we know what jupiter lab is well jupiter server is the core web server that powers those things right so? So when you pull up a JupyterLab or Jupyter Notebook, you're talking to a server. Oftentimes that's a local host little thing running, but other times it's a centralized server that's set up for like students or a research group, or it's set up on a supercomputer near a bunch of data that, you know, you log into it. It runs locally on that, right? So the core of Jupyter in a lot of ways. So 2.0, that's a big deal, right? I think so. It means new features, right?
Starting point is 00:01:09 Open source, when something goes from one major version to another, that's usually a pretty big deal. So let's hit some of the highlights. So one of them is a new identity API. One of the farther looking out features of Jupyter server that they're hoping to bring is like a Google Docs like experience. So real time collaboration experiences, there are some making them better. And around this, having multiple people working on single notebook, you need to have a good way to work with identity. So there's a new identity API in Jupyter server that makes it possible. It is configurable, pluggable. You can even swap out your own identity provider to authenticate users with any provider. So within your organization, you could do single sign on, all those types of
Starting point is 00:01:57 fun things. Yeah. Related to that, you have authorization. So once you know who you are, what can you do? Enabling collaboration on a notebook shouldn't just mean you have authorization. So once you know who you are, what can you do? Enabling collaboration on a notebook shouldn't just mean you have access to everything on the server or nothing on the server, but you maybe have access to these notebooks, but not those notebooks. Or maybe you can read that notebook and not write to it. So there's this new authorization API that allows you to share certain notebooks with certain people, even if they have access to the server. So that's pretty cool. Again, with the collaboration stuff, there's a new event system API coming along and they created this package called Jupyter Events that allows for
Starting point is 00:02:37 JSON based event driven system over here. So a lot of cool things that should be coming. So it's like a foundational piece so that they can add more, more events, more interactivity, and so on. There's a new kernel WebSocket API. It ships with its own kernel manager. I suspect most people are not messing with that, but it's down in the guts. In JupyterLab, you can open up a terminal. Now, this terminal service is a server extension, and it can be optionally disabled because it's an extension, which is cool. And Brian, the last one for you. They say, as we work to increase our test coverage to 80%,
Starting point is 00:03:11 major thank you to Steve Sylvester, we built a handy set of PyTest fixtures that can benefit Jupyter developers and extension authors. That's pretty cool. Yeah, we released PyTest Jupyter, a bunch of fixtures and other PyTest goodies for Jupyter core libraries and extensions. That's nice.
Starting point is 00:03:26 I'm actually going to check this out. And I think it'd be cool to get one of those folks on to Test and Code to talk about it. So I'll reach out to them. Yeah, I think that'd be great, too. All right, well, there you have it. The core of Jupyter got a little bit better. Nice. Well, what do we...
Starting point is 00:03:43 I'm next. So I guess... Well, you got next what do i got uh i i actually so last week we were it was just last week actually uh time flies we were talking about automatically converting stuff like having having other programs convert your python code modify your code and all the different ways you can do that. And one of the things I said was, it'd be cool if we had some ways to convert from setup.py to setup.cfg, or from setup systems to pyproject.toml. And so of course, lots of people reached out to me and said, there's already some ways that you should take a look at. So thank you, Christian Klaus and Brian Skin and others for reaching out and letting me know.
Starting point is 00:04:28 First one, actually, the main thing I wanted to talk about was a thing called Any to Tommel. So this is a project that takes, it converts, it attempts to convert Any files or CFG files to Tommel. They say it's experimental. So what is I thought I was looking at setup.py files? Well, actually, a lot of like large projects are not just setup.py, they've moved a lot of the settings from setup.py to setup.cfg. So this is still helpful. This isn't going to, I don't think I can grab your setup.py file if that's the only thing you're using.
Starting point is 00:05:08 But if you're using setup.cfg, maybe this will help. It converts to a tomo file. And it says it's experimental, but that's all right. So it's kind of fun. There's like a couple versions of it. One of the versions, it's light and it's got light, L-I-T-E and full. And the light version has less calories. Uh, no, um, the light version set creates a, uh, Tomo file, but the full version will try to get your comments over to, so convert your comments into Tomo compliant comments. That's pretty neat. So I
Starting point is 00:05:39 would, I definitely try that. Um, uh, what did I, I didn't, I don't think I tried this. I didn't try this, but it looks pretty fun. So a way to automatically change that. So be fun to grab that. And I've heard from people that, that they have used this to convert their project, at least the initial batch. But at least Christian mentioned that they needed to clean it up a bit afterwards. So one of the tools they used was a thing called PyProject-Format. And what this does is, and I did try this, it's pretty neat. It takes like if you got any PyProject.toml file and it converts it to a known way to set to set it up so uh it's like black
Starting point is 00:06:28 for project files kind of yeah but one of the things with like the pipe the toml syntax is you can have like you know like in any file you can have things in any order you want and it's still valid but are you going to be able to find it there i mean if you're working with lots of projects it'd be really nice if like the the the authors was in a similar place, uh, and the dependencies were in a similar place because they could be like all over the place and you, it is easier to find them if they're in the right place and formatted the same. And, and I mean, who really cares how much, how it's formatted as long as it looks good. Um, and it's proper.'s proper so um i think this is a neat idea i tried it on a couple of my projects and it and it worked okay so and i and i want to like put that in the asterisk
Starting point is 00:07:12 so you want to check what you get afterwards because one of the things it did which i didn't expect it to was it um it replaced it took the name of my project and replaced dashes with underscores and and i know that like a library, you can't have a dash in the thing you're importing, but the name of the project where it shows up on PyPI and everywhere else, it can have a dash in it. And traditionally,
Starting point is 00:07:39 and I was using it on a PyTest plugin, traditionally we do have dashes. We say PyTest dash something. So it needs to stay a dash doesn't don't translate it so that was a little to be pytest underscore check yeah no i don't want it to be that um so i did uh submit an issue i'm sure it's a minor thing but at least you know at least i know it's there um so to check it out so a neat tool to for auto format it and a couple other tools that were kind of neat. Um, pipe,
Starting point is 00:08:06 uh, validate pipe project. Um, Ooh, just a moment. You still see me. Okay. Yeah.
Starting point is 00:08:11 Sorry. It's fine. Something, something happened on my computer. Anyway, uh, the, it,
Starting point is 00:08:16 it's a, it just validates to make sure everything's fine. Uh, and I ran it on a couple of projects and nothing happened. I'm like, Oh, it must be good. So I,
Starting point is 00:08:24 I inserted some errors, uh, just to see what would happen. And it's pretty terse. It pretty much just says like there's an error on this line at this column or something. And so it was still helpful. You can go count and figure out where the project might be. But kind of a neat validator. But for validation, and I'm not sure what all it's checking, but it says it's JSON schema definition defined, driven. So you could probably check it
Starting point is 00:08:51 out. It probably converts it to JSON and then runs through JSON schema or something like that. Oh, you think so? Maybe. Yeah, probably. Might. One of the things that I wanted to bring up when validating toml files and projects is don't forget talks so um using talks to uh go ahead and in what what the default of talks you can do use it for lots of stuff but the default works great for me for this which is say to take your project build it put it put it in a virtual environment and install it there. And you'll catch things like you forgot to specify a dependency or, you know, missing dependencies or you forgot some code or something like that. You'll catch it if you test it. So test your projects.
Starting point is 00:09:37 Absolutely. Yeah, those are a bunch of great little tools. I didn't know about hardly any of them. I'm starting to do more with PyProject.toml. It's nice. Hatch and Hatchling and PyProject.toml. It's nice. Hatch and hatchling and pyproject.toml. Oh, yeah. Hatch is fun.
Starting point is 00:09:50 So hatch and hatchling. It sure is. All right. Well, quick word from our sponsor before we move on, do you think? Yeah, it sounds great. So this episode of Python Bytes is brought to you by Microsoft for Startups. Starting a business is hard. By some estimates, over 90% of startups will go out of business within the first year. With this in mind,
Starting point is 00:10:10 Microsoft for Startups set out to understand what startups need to be successful and create a digital platform to help overcome those challenges. And it's Microsoft for Startups Founders Hub. Founders Hub provides all founders at any stage with free resources to help solve startup challenges. The platform provides technology benefits, access to expert guidance, and skilling resources, mentorship and networking connections, and so much more. Unlike others in the industry, Microsoft for Startup Founders Hub doesn't require startups to be investor backed or third or third-party validated to participate. Founders Hub is truly open to all.
Starting point is 00:10:48 So what do you get? You get to speed up development with free access to GitHub and Microsoft Cloud with the ability to unlock credits over time. And to help your startup innovate, Founders Hub is partnering with innovative companies like OpenAI, a global leader in AI research, and deployment to provide exclusive benefits and discounts. Through Microsoft for Startup Founders Hub, becoming a founder is no longer about who you know. You'll have access to their mentorship network, giving you access to a pool of hundreds
Starting point is 00:11:14 of mentors across a range of disciplines, across areas like idea validation, fundraising, management, coaching, sales, marketing, as well as specific technical stress points. You'll be able to book a one-on-one meeting with the mentors, many of whom are former founders themselves. Make your ideas a reality today with the critical support you'll get from Microsoft for Startup Founders Hub.
Starting point is 00:11:36 To join the program, visit pythonbytes.fm slash foundershub2022, or of course, go to your show notes for this episode and click the link there. Indeed. Thanks to Microsoft for supporting our show. Very cool program. All right. Let's talk about the cloud. We're going to round this whole episode out with a little bit of talk about the cloud as well. Specifically, though, serverless and functions. Brian, have you done anything with functions like AWS Lambda or DigitalOcean or any of those Azure functions? Not for a while.
Starting point is 00:12:10 I played with it when I learned about them, but I haven't done anything lately. Yeah, they're neat. I've been thinking about this project. I'm not even close to committing to it and not going to give away too many details until I'm more willing to put time and energy into it. But something that requires interaction from many, many different geographical locations.
Starting point is 00:12:30 And one thing that's really cool about Lambda and serverless, these functions, is you only pay while they're running. And so if you want to say, I want to have 20 different locations in which I can, like geolocations throughout the world, I could do certain things, but I'm not going to do them very often. Well, having a bunch of functions, many of them on these different parts of the cloud would be really awesome. And if you're working with AWS Lambda, there's certain APIs for doing this, obviously that AWS puts out. But what if you were a Python developer and you wanted to use Python? So I present to you AWS Lambda Power Tools Python, a suite of utilities for AWS Lambda functions that makes distributed tracing, structured logging, custom metrics, and item potency,
Starting point is 00:13:14 and many leading best practices easier. And it is all based on Python. So you can just write your Python code and start working with this API. This one came to us from, let me make sure I get this right, via Mark Pender. So thanks Mark for sending this in.
Starting point is 00:13:30 It also happens to be available in Java, TypeScript and.NET. But you come down and look at the features, there's all sorts of different bits of Python code and classes or modules that you can use that do things like distributed tracing, right? Because if you're on a serverless thing and something you want to, you know, keep track of sort of logging or performance, you know, those things are super transient. They don't have
Starting point is 00:13:57 a hard drive where you append to the log or anything like that, right? So having that kind of setup would be great. Use pydantic for data parsing but there's just a bunch of built-in parts of this library that you can use within your functions your serverless functions to make it better so it's got tracing which includes decorators and utilities to trace lambda functions both synchronous and asynchronous there you go structured logging metrics that asynchronously go up to CloudWatch. Remember, this is AWS. Event handlers for putting stuff over into GraphQL.
Starting point is 00:14:32 You can build your own middleware, like something that runs before and after the request. That's really, really handy. Like only certain types of clients should be able to call this over the web. Batch processing, typing, validation, a bunch of other stuff, parsing, streaming. So you can actually set it up to sort of loading some massive data set into your function. You can just stream that data in and process it as it goes.
Starting point is 00:14:54 So there's some tutorials and there's some example applications. There's a serverless shopping cart, a serverless airline. That's a pretty big one. Serverless e-commerce platform and some graph serverless. Just let me just say that isn't the, it's not a joke. That's a pretty big one. Serverless e-commerce platform and some graph. Serverless, let me just say this. It's not a joke, it's serious. Serverless GraphQL nanny booking API. There it is. Sure, why not?
Starting point is 00:15:16 Anyway, if people are doing serverless, especially if they're doing AWS Lambda, this might be cool. John, the audience points out that Zappa works great for quickly and deploying Flask apps as, yeah. So if you look at AWS, Zappa, Lambda, Flask, that's probably a sufficient search, right? That's a pretty cool project.
Starting point is 00:15:38 I believe we covered that way, way back in the day. So basically it turns your Flask routes into serverless function calls as well. So anyway, here's in the day. So basically it turns your Flask routes into serverless function calls as well. So anyway, here's some nice tools. I suspect you could probably put those together as well, right? Like your tracing and logging, you could probably still put inside of Zappo, but I haven't tried that combination.
Starting point is 00:15:56 Cool, neat. Well, I'm looking forward to whatever secret project. There's like a 17 and a half percent chance that that actually comes to fruition because it's got a lot of operational overhead. I'm not sure I want to put myself on pager duty. Yeah. I do want to hear what you got next.
Starting point is 00:16:12 Well, I wanted to talk. My friend Bob is on the screen. Yeah. So I wanted to talk about Bob Elderboss and actually his GitHub profile. Several people have done things like this. So we're looking at Bob's GitHub profile, several people have done things like this. So we're looking at Bob's GitHub profile. And one of the things you see that's different than the default
Starting point is 00:16:32 is you see some stuff at the top, like the latest PyBytes articles and latest Python tips and even latest Fosted on toots. So that's kind of neat. But how did he do this? Well, luckily he's got a link at the bottom that says how to create a self-updating GitHub README.
Starting point is 00:16:52 And we did talk about this way back in 2020. Simon Willison had a blog post about that. And so we'll link to the episode and Simon's also. And Bob actually says he was inspired by both Simon and I think Brett Cannon as well has an updated readme. But I really like this article. So it's just a little short thing saying, hey, I started doing updating my profile,
Starting point is 00:17:16 GitHub profile with some tools. And then he just published all the tools. So that's pretty awesome. First of all, he's got a script. So the script that runs, of course he has it up on github as well um and it's it just goes through and collects all of this data for him and and the script's pretty easy to read um you know not terrible uh go through and it has links to where he's getting the information and then uh then all of it is used to fill out all that data is used to fill out a template,
Starting point is 00:17:45 which he also published the template. It's a Markdown file that, yeah, he uses for that. And then all of it's pulled together with a GitHub action. Wait, wait, go back for just a second there. It looks like it's a Markdown file that has Jinja template language in it. So hit it with Jinja, and it generates the final markdown, I think.
Starting point is 00:18:08 Yeah, so how's it supposed to look? I didn't look exactly where the template's being used in the code, but... Yeah, I don't see it either. But you don't have to have well-formed HTML for Jinja to run. You can just jam it against anything. For example, the RSS feed for Python Bytes
Starting point is 00:18:25 is generated using just like an XML template with markup language in it like this. Yeah, it does look like he's using Jinja template itself out of the Jinja 2 project to render it. Yeah, cool. Nice. And then the whole thing is run by a GitHub action and it auto commits.
Starting point is 00:18:46 So using another project that GitHub auto commit. But the whole thing's pulled together and runs whenever. So once a day. And when does it run? Well, it's a cron job. So I had to use my handy decoder because I can never remember that stuff. Cron tab dot guru. It's 845 in the morning.
Starting point is 00:19:05 It goes off and runs this. So kind of neat. I wanted to try this. So I highlighted it again because it's been on my to-do list since 2020. I haven't done it yet. One of the things that I'm hoping it will do is it'll highlight that I haven't posted
Starting point is 00:19:21 any articles recently and it'll get me off my rump and write some more because I want to write. Yeah, yeah, yeah. You'll have to take on the philosophy that I did as well. Like, you know what? Two paragraphs, that's a perfectly fine blog post.
Starting point is 00:19:34 Yeah, definitely. I learned something and also the today I learned sort of thing as well. So yeah, that was very popular. Well, that's quite a nice one. That's all of our normal items now. It is. You got any, well, let me, let me go through my extras first, since I got a follow-up for this one. I got a few extras. I know that we both do.
Starting point is 00:19:55 So you talked about crontab.guru, right? People haven't seen this before. I just learned about this, that there's, there's this funky syntax for cron jobs, but there's this site crontab.guru that lets you put in like, well, I want a five there. It says every minute past hour five. If you just say star five, star, star, star, for example. Or if you put like star over 20, every 20 minutes, you know past every minute past the 20th hour or like there's there's weird syntax here but there's this cool little site that you referenced uh oh wow yeah yeah i was curious if you could do like uh just day of the week and not and like no sun saturday and sunday how you do that yeah um probably probably yeah there's
Starting point is 00:20:42 20 star now anyway there's there's a 20 star now. Anyway, there's a whole bunch of different things and a little bit of a description on how this works. But way more interesting than I knew. All right, so let me tell you about a few things real quick. I've been playing with Canary Mail. Canary Mail is like a mail client, like Spike or Outlook or whatever. You know, one of the, like Thunderbird,
Starting point is 00:21:03 one of the client side rich email clients okay but this thing just added uh an ai capability called inbox copilot which is a lot like um github copilot and so you just go to it you just say hey there email write me a message that says this so for example you could just see like if you got a message asking if you're going to be able to make the, so meaning you could just say, you type CCC anywhere in your message, it pulls up this little separate window that you talk to the AI and you just say, tell them, you know, apologize.
Starting point is 00:21:35 I'll be late by 20 to 30 minutes traffic. And that's all you say. And it writes like a really nice, formal, like well-written, friendly, not terse message back. So I'm going to try to start playing with this a little bit more. We'll see how it goes. I already had the app. It just came with this Copilot thing.
Starting point is 00:21:53 I'm like, okay, that's pretty interesting. So people can check that out. I don't even know what it costs, just to be clear. Not an ad. This episode is sponsored by Microsoft. But yeah, it's like $20 a year. Not a terribly expensive thing to play with. All right, next one is, this is a tweet from the Python Package Index itself.
Starting point is 00:22:11 And the status is, or the message is, Python 3.11 delivers. Check this out, Brian. So they show some kind of analytics, real-time performance graph of the g-unicorn python worker processes that power pypi on python 3.10 and when they upgraded to 3.11 it's pretty striking huh yeah totally that just went down and in load if you look at it yeah i mean it dropped at least 50 of usage there and then if you um this is a pretty zoomed in picture someone else dustin ingram it was tweeted well you should see it over time more look at bam there's this huge jump in the middle this is when they restarted it you know whenever you restart the app it doesn't have like all of
Starting point is 00:22:56 its caches and all that stuff warmed up and potentially they even maybe had to throw away like redis cache data if they were pickling it because 3.10 and 3.11 didn't, you know, they might not be compatible in a binary way. So anyway, there's like this kind of like, ouch, you restarted us. It hurts type of thing. But then after that, it really, really drops. I mean, at least 50% or 2x more for 3.10 than 3.11. So that's really massive. That's pretty cool.
Starting point is 00:23:24 Anyway, so 3.11 delivers So that's really massive. That's pretty cool. Anyway, so 3.11 delivers. People can check that out. And this is, I mean, there's a lot of traffic on PyPI.org, right? Because it's not just the human browser traffic. It's every time you pip install something, every time you do a Docker build and it runs pip install something,
Starting point is 00:23:38 like all the robots of the world are just hammering this thing, you know? Yeah. Yeah. All right. So that's a good one um i was just in las vegas this weekend that was fun thanks for having it in such a good time went went to see the blue man group and we went to see cirque du soleil and we had breakfast at like a
Starting point is 00:23:58 beautiful brunch they even had a uh you know how some places have a like a little omelet factory where you can have some eggs or whatever? And you tell them they had a donut, one of those as well. So they'll make custom donuts for you on the spot. It was outrageous. Why do I bring this up? Not to rub in whether or not I was in Vegas. But it was my first chance to test out my iPad as my only dev device traveling experience.
Starting point is 00:24:20 Oh, okay. First trip since I'd tried all those tools. And it worked pretty fabulously, actually. I just took my iPad and my ergonomic keyboard so I don't give myself carpal tunnel again. And it worked great. So all those tools we talked about, people, maybe I'll find a way, if people want to know, I'll find a way to link back to that episode. Able to monitor the Michael Kennedy empire from remote. Indeed. Yeah. I even, I busted in and installed some Linux security updates real quick and then dropped back out. It was all good. Tailed some logs. Yeah, it was fine. Mostly I wrote email.
Starting point is 00:24:50 No, that's what my empire is about, is write email. All right. Here's another good one. Linux, Amazon, Meta, and Microsoft want to break the Google Maps monopoly. So apparently Google Maps owns a significant portion of the mapping data and the street view data and so on. But all those groups I mentioned are working on creating this thing called Overture Maps Foundation. And they're going to create an open source, open to everyone set of maps by pulling in some of existing open map data, but also really doubling down on trying to add more information. That's pretty cool, right? So if you want to do anything with mapping, that might be getting a lot better. Yeah. I mean, I haven't seen the word TomTom in a long time. I know. I actually had my hands on a TomTom device
Starting point is 00:25:33 this summer. It was insane. All right. Last one before we get to our joke. I decided my laptop that had zero stickers on it was boring. So I went completely bonkers and got a completely uh i went to redbubble ordered an insane number of stickers and put on my laptop what do you think of this thing brian i'll put the link in the picture in the show notes i like the laptop opening and closing tags um yeah it's got a bracket laptop at the top of the laptop and it's got a bracket slash laptop at the bottom yeah you got python bytes there it's nice i gotta get you a testing code sticker yeah get in there we'll find a spot i replaced the mac icon with a terminal icon so it's pretty good yeah anyway that was a lot of fun okay but that's that's it for my extras how about yours i had a few extras so i want to i just uh don't have a
Starting point is 00:26:20 lot to add to these but i'd noticed it's kind of interesting. So GitHub, I think this was on December 15th, announced that they're able to check for security leaks. And I'm linking to an article that they can check your GitHub repos for security leaks, like secrets and stuff. Apparently, that's how a lot of secrets get leaked is people like you know actually merge request a bunch of secrets or something um uh but the uh uh so it's kind of cool that it's there i went there's some it says you have to turn it on i went to check one of my repos and it looked like it was already on so um i may as well check it anyway so um i wanted to shout out to uh julia Julia Evans to get that right. Julia Evans.
Starting point is 00:27:10 She's written a whole bunch of great stuff to help programmers, but she just released Pocket Guide to Debugging. And I was pretty intrigued by this. One of the one of the things that highlighted was asking for help and writing a tiny program that reproduces the problem. Those are two things that I really encourage people to do before they waste too much time. So I might throw some money away because those are really great free tips. Yeah, that's cool. There's a, I found this, what, Python Easter eggs repository. Not all of these work anymore.
Starting point is 00:27:38 So I tried the first one, the import hello on Python 3.11. It doesn't seem to work. But a bunch of these others are really pretty fun. Import this, of course, is there. One of the things that I think I knew about at one point, but I forgot about was the from future import Barry as Fluffle. So this was a joke from 2009 that's still in Python 3.11
Starting point is 00:28:01 that it's Barry Wars. It's like a joke from barry warsaw and brett cannon um and if you do that it completely it removes the uh not equal like the pound like the the bang equal sign with um uh less than greater than for not equal so the joke being barry was the dictator for life, he would change it. Anyway, it's kind of funny. Fluffle stands for friendly language uncle for life. And there's even a pep for it.
Starting point is 00:28:32 So you can read about the pep 401 with this. Anyway. Nice. Just a few extras. It could have been our joke. That could have been our joke section. That could have been our joke section. But we have another joke, don't we?
Starting point is 00:28:44 We do. So I told you we'd wrap this up with some stuff about the cloud. So here's a nice little conversation a father and a daughter are having. They're out walking in a park and looking up at the sky and they see a cloud, mostly empty sky. And the kid says, Dad, what are clouds made of? The dad looks down and clearly says, Linux servers, mostly. That's good, right? Yeah, that's good.
Starting point is 00:29:08 Even when they're serverless, they're probably still Linux things running in Docker, running on a Kubernetes cluster, running on Linux. Serverless is a hilarious word. It just means you don't know where the server is. Yeah, it's like server's not my problem. Yeah. Well, this show is not a problem. It was a lot of fun. It was a lot of fun.
Starting point is 00:29:27 Thanks so much for joining us and showing up again. And thanks everybody in the audience. Yeah, absolutely. Hey, before we go, I have one quick more announcement really, really quickly. Next week, for those of you who are kind enough to drop in and join us live, we're not doing a live show. We're going to do a crossover episode with TalkPython and vice versa. Python by its own TalkPython. And Brian, we're going to be on vacation.
Starting point is 00:29:50 So I'll see you in January. All right. Talk to everybody in January. Yeah. So happy new year, everyone. See you later. Bye.

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