Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #315: Some Stickers!

Return to episode page view on github
Recorded on Tuesday, Dec 20, 2022.

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 Hawkins. I'm Michael Kennedy It is almost the end of the year. You guys you ready for Christmas and everything?

00:17 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? Let's go. Let's talk some Jupyter server So this is an announcement by Zack Saylor, and it says, "Jupyter Server 2.0 is released." Now we know what Jupyter is, we know what Jupyter Notebooks are, we know what JupyterLab is.

00:38 Well, Jupyter Server is the core web server that powers those things, right?

00:43 So when you pull up a JupyterLab or a Jupyter Notebook, you're talking to a server.

00:48 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 a bunch of data that you log into it.

01:00 It runs locally on that, right?

01:01 So the core of Jupyter in a lot of ways.

01:05 So 2.0, that's a big deal, right?

01:07 - I think so.

01:08 Means new features, right?

01:09 - Open source, when something goes from one major version to another, that's usually a pretty big deal.

01:14 So let's hit some of the highlights.

01:16 So one of them is a new identity API.

01:19 One of the farther looking out features of Jupyter server that they're hoping to bring is like a Google Docs like experience.

01:28 So real-time collaboration experiences.

01:31 There are some, I'm making them better.

01:33 And around this, having multiple people working on a single notebook, you need to have a good way to work with identity.

01:41 So there's a new identity API in Jupyter Server that makes it possible.

01:45 It is configurable, luggable.

01:48 You can even swap out your own identity provider to authenticate users with any provider.

01:53 So within your organization, you could do single sign-on, all those types of fun things.

01:58 - Oh, neat.

01:59 - Yeah.

02:00 Related to that, you have authorization.

02:02 So once you know who you are, what can you do?

02:05 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.

02:15 Or maybe you can read that notebook and not write to it.

02:18 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.

02:26 And so that's pretty cool.

02:27 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 JSON based event driven system over here.

02:41 So a lot of cool things that should be coming.

02:44 So it's like a foundational piece so that they can add more events, more interactivity and so on.

02:49 There's a new kernel WebSocket API.

02:51 It ships with its own kernel manager.

02:53 I suspect most people are not messing with that, but it's down in the guts.

02:57 In JupyterLab, you can open up a terminal.

02:59 Now this terminal service is a server extension and it can be optionally disabled because it's an extension, which is cool.

03:06 And Brian, the last one for you.

03:08 They say, "As we work to increase our test coverage to 80%," major thank you to Steve Sylvester, "we built a handy set of pytest fixtures that can benefit Jupyter developers and extension authors.

03:19 - That's pretty cool. - That's sweet.

03:20 Yeah, we released pytest Jupyter, bunch of fixtures and other pytest goodies for Jupyter core libraries and extensions.

03:26 - That's nice.

03:27 I'm actually gonna 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.

03:34 So I'll reach out to them.

03:35 - Yeah, I think that'd be great too.

03:37 All right, well, there you have it.

03:38 The core of Jupyter got a little bit better.

03:40 - Nice.

03:41 Well, what do we, I'm next.

03:44 So I guess- - Well, you got next.

03:46 What do I got?

03:48 I actually, so last week, it was just last week actually, time flies.

03:53 We were talking about automatically converting stuff, like having other programs convert your Python code, modify your code, and all the different ways you can do that.

04:04 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.

04:17 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.

04:22 So thank you, Christian Klaus and Brian Skin and others for reaching out and letting me know.

04:29 First one, actually the main thing I wanted to talk about was a thing called any to toml.

04:34 So this is a project that takes, it converts, it attempts to convert any files or CFG files to TOML.

04:43 They say it's experimental.

04:45 So what is, I thought I was looking at setup.py files.

04:49 Well, actually a lot of like large projects are not just setup.py.

04:54 They've moved a lot of the settings from setup.py to setup.cfg.

04:58 So this is still helpful.

05:00 This isn't gonna, I don't think I can grab your setup.py file if that's the only thing you're using.

05:05 But if you're using setup.cfg, maybe this will help.

05:08 converts to a TOML file and it says it's experimental, but that's all right.

05:14 So it's kind of fun.

05:15 There's like a couple versions of it.

05:17 One of the versions is light and it's got light, L-I-T-E and full and the light version has less calories.

05:26 No, the light version creates a TOML file, but the full version will try to get your comments over too.

05:35 So convert your comments into TOML compliant comments.

05:38 That's pretty neat.

05:39 So I would, I'd definitely try that.

05:41 What did I, I didn't, I don't think I tried this.

05:45 I didn't try this, but it looks pretty fun.

05:47 So a way to automatically change that.

05:50 So be fun to grab that.

05:53 And I've heard from people that, that they have used this to convert their project, at least the initial batch.

05:59 But at least Christian mentioned that they needed to clean it up a bit afterwards.

06:06 One of the tools they used was a thing called PyProject-format.

06:12 What this does is, and I did try this, it's pretty neat.

06:15 It takes like if you got any PyProject.toml file, and it converts it to a known way to set it up.

06:26 >> It's like black for project files.

06:29 >> Kind of, yeah. But one of the things with the toml syntax is you can have 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?

06:41 If you're working with lots of projects, it'd be really nice if the authors were in a similar place, and the dependencies were in a similar place, because they could be all over the place.

06:52 It's easier to find them if they're in the right place and formatted the same.

06:58 Who really cares how it's formatted as long as it looks good and it's proper.

07:03 I think this is a neat idea.

07:05 I traded on a couple of my projects and it worked okay.

07:09 So, and I wanna like put that in the asterisk.

07:13 So you do you wanna check what you get afterwards?

07:15 Is one of the things it did, which I didn't expect it to, was it replaced, it took the name of my project and replaced dashes with underscores.

07:24 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 that is where it shows up on PyPI and everywhere else, it can have a dash in it.

07:38 Traditionally, and I was using it on a pytest plugin, traditionally, we do have dashes.

07:42 We say pytest dash something.

07:44 It needs to stay a dash, don't translate it.

07:47 >> You want it to be pytest_check?

07:49 >> Yeah. No, I don't want it to be that.

07:52 I did submit an issue.

07:55 I'm sure it's a minor thing, but at least I know it's there, so to check it out.

07:59 A neat tool to auto-format it.

08:02 A couple of other tools that were neat, validate pyproject.

08:08 Oh, just a moment. Can you still see me?

08:10 >> Yeah.

08:11 >> Sorry.

08:11 >> Seems fine.

08:12 >> Something happened on my computer.

08:14 Anyway, it just validates to make sure everything's fine.

08:20 I ran it on a couple of projects and nothing happened.

08:22 I'm like, "Oh, it must be good." So I inserted some errors just to see what would happen.

08:28 It's pretty terse.

08:30 It pretty much just says like there's an error on this line at this column or something.

08:34 And so it's still helpful.

08:37 You can go count and figure out where the project might be, but kind of a neat validator.

08:43 But for validation, and I'm not sure what I was checking, but it says it's JSON schema definition defined driven.

08:50 So you could probably check it out.

08:51 >> Interesting.

08:53 It probably converts it to JSON and then runs through JSON schema or something like that.

08:57 >> Oh, you think so?

08:58 Maybe.

08:58 >> Yeah, probably.

08:59 >> Might. One of the things I wanted to bring up when validating TOML files and projects is don't forget TOX.

09:09 Using TOX to go ahead and what the default of TOX, you can use it for lots of stuff, but the default works great for me for this, which is to take your project, build it, put it in a virtual environment and install it there.

09:24 You'll catch things like you forgot to specify dependency or missing dependencies or you forgot some code or something like that.

09:34 You'll catch it if you test it.

09:35 So test your projects.

09:37 >> Absolutely.

09:38 Yeah, those are a bunch of great little tools.

09:40 I didn't know about hardly any of them.

09:42 I'm going to do more with pyproject.toml.

09:44 It's nice. Hatch and hatchling and pyproject.toml.

09:48 >> Yeah, Hatch is fun.

09:50 So Hatch and hatchling.

09:51 >> It sure is. All right.

09:53 Well, quick word from our sponsor before we move on, do you think?

09:57 Yeah, it sounds great.

09:58 So this episode of Python Bytes is brought to you by Microsoft for Startups.

10:03 Starting a business is hard.

10:05 By some estimates, over 90% of startups will go out of business within the first year.

10:09 With this in mind, Microsoft for Startups set out to understand what startups need to be successful and create a digital platform to help overcome those challenges.

10:19 And it's Microsoft for Startups Founders Hub.

10:22 Founders Hub provides all founders at any stage with free resources to help solve startup challenges.

10:28 The platform provides technology benefits, access to expert guidance, and skilling resources, mentorship, and networking connections, and so much more.

10:36 Unlike others in the industry, Microsoft for Startup, Founders Hub, doesn't require startups to be investor-backed or third-party validated to participate.

10:45 Founders Hub is truly open to all.

10:47 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.

10:55 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.

11:05 Through Microsoft for Startup Founders Hub, becoming a founder is no longer about who you know.

11:10 You'll have access to their mentorship network, giving you access to a pool of hundreds of mentors across a range of disciplines, across areas like idea validation, fundraising, management, coaching, sales, marketing, as well as specific technical stress points.

11:25 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. To join the program, visit pythonbytes.fm/foundershub2022, or of course, go to your show notes for this episode and click the link there.

11:47 >> Indeed. Thanks to Microsoft for supporting our show.

11:50 Very cool program. All right.

11:51 Let's talk about the Cloud.

11:54 We're going to round this whole episode out with a little bit of talk about the Cloud as well.

11:58 Specifically though, serverless and functions.

12:02 Brian, have you done anything with functions like AWS Lambda, or DigitalOcean, or any of those Azure functions?

12:10 >> Not for a while. I played with it when I learned about them, but I haven't done anything lately.

12:14 >> 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 more willing to put time and energy into it.

12:25 But something that requires interaction from many, many different geographical locations. And one thing that's really cool about Lambda and serverless, these functions as 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 geo locations 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 want 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 and item potency and many leading best practices easier.

13:16 And it is all based on Python.

13:19 So you can just write your Python code and start working with this API.

13:23 This one came to us from, let me make sure I got this right, via Mark Pender.

13:28 So thanks Mark for sending this in.

13:30 It also happens to be available in Java, TypeScript and .NET.

13:35 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?

13:46 'Cause if you're on a serverless thing and something you want to keep track of some sort of logging or performance, you know, those things are super transient.

13:56 They don't have a hard drive where you append to the log or anything like that, right?

14:00 So having that kind of setup would be great.

14:03 Use a Pydantic for data parsing.

14:05 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.

14:13 So it's got tracing, which includes decorators and utilities to trace Lambda functions, both synchronous and asynchronous, there you go.

14:20 Structured logging, metrics that asynchronously go up to CloudWatch, remember this is AWS.

14:27 Event handlers for putting stuff over into GraphQL.

14:32 You can build your own middleware, like something that runs before and after the request.

14:36 That's really, really handy.

14:38 like only certain types of clients should be able to call this over the web.

14:42 Batch processing, typing validation, a bunch of other stuff, parsing, streaming.

14:46 So you can actually set it up to, instead of loading some massive dataset into your function, you can just stream that data in and process it as it goes.

14:54 So there's tutorials and there's some example applications.

14:58 There's a serverless shopping cart, a serverless airline.

15:01 That's a pretty big one.

15:02 Serverless e-commerce platform and some graph.

15:06 a serverless, just let me just say this and think, it's not a joke, it's serious, serverless GraphQL nanny booking API.

15:12 (laughs)

15:14 There it is. - Sure.

15:15 - Sure, why not? - Nice.

15:16 - So anyway, if people are doing serverless, especially if they're doing AWS Lambda, this might be cool.

15:22 John, she in the audience points out that Zappa works great for quickly and deploying Flask apps as, yeah.

15:29 So if you look at AWS, Zappo Lambda Flask, that's probably a sufficient search.

15:36 Right, that's a pretty cool project.

15:38 I believe we covered that way, way back in the day.

15:41 So basically it turns your Flask routes into serverless function calls as well.

15:45 So anyway, here's some nice tools.

15:48 I suspect you could probably put those together as well.

15:50 Right, like your tracing and logging, you could probably still put inside of Zappo, but I haven't tried that combination.

15:56 - Cool, neat.

15:57 Well, I'm looking forward to whatever secret project.

16:00 - There's like a 17 and a half percent chance that actually comes to first, 'cause it's got a lot of operational overhead.

16:06 I'm not sure I want to like put myself on pager duty.

16:10 - Yeah, okay.

16:11 - I do wanna hear what you got next.

16:12 - Well, I wanted to--

16:13 - Our friend Bob is on the screen, so.

16:14 - Yeah, so I wanted to talk about Bob Bilderboss, and actually his GitHub profile.

16:22 Several people have done things like this.

16:25 So we're looking at Bob's GitHub profile.

16:29 And one of the things you see that's different than the default is you see, you see some stuff at the top, like the latest PyBytes articles and latest Python tips and even latest Boston on toots.

16:43 So that's kind of neat, but how did he do this?

16:46 Well, luckily he's got a link at the bottom that says how to create a self updating GitHub readme.

16:52 And we did talk about this way back in 2020, Simon Willis had a blog post about that.

16:58 And so we'll link to the episode and Simon's also.

17:01 And Bob actually says he was inspired by both Simon and I think Brett Cannon as well has updated README.

17:09 But I really like this article.

17:10 So it's just a little short thing saying, hey, I started doing updating my profile, GitHub profile with some tools.

17:19 And then he just published all the tools.

17:21 So that's pretty awesome.

17:23 First of all, he's got a script.

17:24 So the script that runs, of course he has it up on GitHub as well.

17:28 And it just goes through and collects all of this data for him.

17:32 And the script's pretty easy to read.

17:34 You know, not terrible.

17:36 Go through and it has links to where he's getting the information.

17:40 And then all of it is used to fill out, all that data is used to fill out a template, which he also published the template.

17:47 It's a markdown file that he uses for that.

17:52 And then all of it's pulled together with a GitHub action.

17:56 >> Wait, go back for just a second there.

17:57 It looks like it's a markdown file that has Jinja template language in it.

18:02 So hit it with Jinja and it generates the final markdown.

18:07 I think that's pretty cool.

18:08 So, yeah, how's it about to look?

18:10 I didn't look exactly where the template's being used in the code.

18:14 Yeah, I don't see it either.

18:15 But it's, you know, you can put, you don't have to have well-formed HTML for Jinja to run.

18:20 You can just jam it against anything.

18:22 For example, the RSS feed for Python bytes is generated using just like an XML template with markup language in it like this.

18:31 Yeah, it does look like he's using Jinja template itself out of the Jinja2 project to render it.

18:39 So yeah, cool.

18:40 Nice.

18:41 And then the whole thing is run by GitHub Action and it auto commits.

18:46 So using another project that GitHub auto commit.

18:50 But the whole thing's pulled together and runs whenever, so once a day.

18:55 And when does it run?

18:56 Well, it's a cron job.

18:57 So I had to use my handy decoder 'cause I can never remember that stuff.

19:01 crontab.guru.

19:03 It's 8.45 in the morning.

19:05 It goes off and runs this.

19:07 So kind of neat.

19:09 I wanted to try this.

19:10 So I highlighted it again because it's been on my to-do list since 2020.

19:15 I haven't done it yet.

19:16 One of the things that I'm hoping it will do is it'll highlight that I haven't posted any articles recently and it'll get me off my rump and write some more, 'cause I wanna write some.

19:26 - Yeah, yeah, yeah.

19:27 You'll have to take on the philosophy that I did as well.

19:30 Like, you know what?

19:31 Two paragraphs, that's a perfectly fine blog post.

19:34 - Yeah, definitely.

19:35 I learned something.

19:36 And also the today I learned sort of thing as well.

19:41 - Yeah, that was very popular.

19:42 That's quite a nice one.

19:45 - That's all of our normal items now.

19:47 - It is, you got any, well, let me go through my extras first since I got a follow up for this one.

19:53 I got a few, I know that we both do.

19:55 So you talked about crontab.guru, right?

19:58 People haven't seen this before.

20:00 I just learned about this, that 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.

20:10 It says every minute past hour five, if you just say star five, star, star, star, for example, or if you put with this like star over 20, every 20 minutes, you know, past every minute past the 20th hour, or like there's weird syntax here, but there's this cool little site that you referenced to show how it works.

20:33 - Yeah, I was curious if you could do like just day of the week and not, and like no Sunday, Saturday and Sunday, how you would do that.

20:39 - Yeah, probably.

20:42 Yeah, there's 20 star now.

20:45 Anyway, there's a whole bunch of different things a little bit of a description on how this works.

20:49 >> Yeah.

20:50 >> Way more interesting than I knew.

20:52 All right. Let me tell you about a few things real quick.

20:54 I've been playing with Canary Mail.

20:56 Canary Mail is like a mail client like Spike or Outlook or whatever.

21:01 One of the Thunderbird, one of the client-side rich e-mail clients.

21:05 >> Okay.

21:06 >> But this thing just added an AI capability called Inbox Copilot, which is a lot like GitHub Copilot.

21:14 So you just go to it and you just say, Hey there, email, write me a message that says this. So for example, you could just say like if you got a message asking if you're gonna be able to make the some 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 just say, tell them, you know, apologize, 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.

21:46 So I'm gonna try to start playing with this a little bit more, we'll see how it goes.

21:50 I already had the app, it just came with this co-pilot thing.

21:53 I'm like, okay, that's pretty interesting.

21:54 So people can check that out.

21:55 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.

22:06 All right, next one is, this is a tweet from the Python package index itself.

22:12 And the status is, or the message is, Python 3.11 delivers.

22:16 Check this out, Brian.

22:17 So they show some kind of analytics, real-time performance graph of the G-Unicorn, the Python worker processes that power PyPI from Python 3.10 and when they upgraded to 3.11.

22:32 It's pretty striking, huh?

22:33 - Yeah, totally.

22:34 That just went down in load drastically.

22:37 - If you look at it, yeah, I mean, it dropped at least 50% of usage there.

22:40 And then if you, this is a pretty zoomed-in picture.

22:43 someone else, Dustin Ingram, it was tweeted, well, you should see it over time more like, bam, there's this huge jump in the middle.

22:51 This is when they restarted it.

22:53 You know, whenever you restart the app, it doesn't have like all of its caches and all that stuff warmed up.

22:58 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.

23:08 So anyway, there's like this kind of like, ouch, you restarted us.

23:11 It hurts type of thing.

23:13 But then after that, it really, really drops.

23:16 I mean, at least 50 percent or 2x more for 3.10 than 3.11.

23:21 So that's really massive.

23:23 >> That's pretty cool.

23:24 >> Anyway, so 3.11 delivers, people can check that out.

23:27 There's a lot of traffic on pypi.org, 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, like all the robots of the world are just hammering this thing.

23:42 Yeah.

23:43 Yep.

23:44 Yep.

23:45 All right.

23:46 So that's a good one.

23:47 I was just in Las Vegas this weekend.

23:48 That was fun.

23:49 Thanks for rubbing it in.

23:50 It's such a good time.

23:51 Went to see the Blue Man Group and we went to see Cirque du Soleil and we had breakfast at like a beautiful brunch.

23:59 They even had a, you know how some places have a, like a little omelet factory where you can have some eggs or whatever.

24:06 And you tell them they had a donut, one of those as well.

24:08 So they'll make custom donuts for you on the spot.

24:10 It was outrageous.

24:11 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.

24:20 First trip since I'd tried all those tools and it worked pretty fabulously actually 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 find a way to link back to that episode.

24:37 Able to monitor the Michael Kennedy empire from remote.

24:41 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. That's what my empire is about is right. Email.

24:52 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've mentioned are working on creating this thing called Overture Maps Foundation.

25:13 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.

25:23 That's pretty cool, right? So if you want to do anything with mapping, that might be getting a lot better.

25:27 >> Yeah. I haven't seen the word TomTom in a long time.

25:31 >> I know. I actually had my hands on a TomTom device this summer. It was insane.

25:35 All right. Last one before we get to our joke.

25:38 I decided my laptop that had zero stickers on it was boring.

25:42 So I went completely bonkers, got a completely, I went to Redbubble, ordered an insane number of stickers and put on my laptop.

25:50 What do you think of this thing, Brian?

25:51 Put the link in the picture in the show notes.

25:53 >> I like the laptop opening and closing tags.

25:57 >> It's got a bracket laptop at the top of the laptop, and it's got a bracket slash laptop at the bottom.

26:03 >> Yeah, you got Python bytes there.

26:04 It's nice. I got to get you a testing code sticker.

26:07 Yeah, get in there, we'll find a spot.

26:09 I replaced the Mac icon with a terminal icon.

26:12 So it's pretty good.

26:13 Yeah.

26:13 Anyway, that was a lot of fun.

26:14 Okay, but that's it for my extras.

26:16 How about yours?

26:17 I had a few extras.

26:18 So I just don't have a lot to add to these, but I'd noticed it's kind of interesting.

26:24 So GitHub, I think this was on December 15th, announced that they're able to check for security leaks.

26:32 And I'm linking to an article that they can check your GitHub repos for security leaks, like secrets and stuff.

26:42 Apparently, that's how a lot of secrets get leaked, is people actually merge request a bunch of secrets or something.

26:49 It's cool that it's there.

26:53 It says you have to turn it on.

26:54 I went to check one of my repos and it looked like it was already on.

26:58 May as well check it anyway.

27:00 I wanted to shout out to Julia Evans.

27:04 Did I get that right? Julia Evans.

27:06 She's written a whole bunch of great stuff to help programmers, but she just released Pocket Guide to Debugging.

27:11 I was pretty intrigued by this.

27:13 One of the things that highlighted was asking for help and writing a tiny program that reproduces the problem.

27:21 Those are two things that I really encourage people to do before they waste too much time.

27:25 I might throw some money away because those are really great free tips.

27:29 >> Yeah, that's cool.

27:31 I found this Python Easter eggs repository.

27:36 Not all of these work anymore, so I tried the first one, import hello on Python 3.11, doesn't seem to work, but a bunch of these others are really pretty fun.

27:44 Import this, of course, is there.

27:46 One of the things that I think I knew about at one point, but I forgot about, was the from future import, berry as fluffle.

27:56 This was a joke from 2009, that's still in Python 3.11, that it's like a joke from Barry Warsaw and Brett Cannon.

28:08 If you do that, it removes the not equal, like the bang equal sign with less than, greater than for not equal.

28:21 The joke being if Barry was the dictator for life, he would change it. Anyway, it's funny.

28:26 FLFL stands for Friendly Language Uncle for Life.

28:30 - And there's even a PEP for it.

28:32 So you can read about the PEP 401 with this.

28:37 Anyway, just a few extras.

28:39 - It could have been our joke.

28:40 It could have been our joke section.

28:42 - It could have been our joke section.

28:43 But we have another joke, don't we?

28:44 - We do.

28:45 So I told you we'd wrap this up with some stuff about the cloud.

28:48 So here's a nice little conversation a father and a daughter are having.

28:53 They're out walking in a park, looking up at the sky, and they see a cloud in a mostly empty sky.

28:58 And the kid says, "Dad, what are clouds made of?" The dad looks down and clearly says, "Linux servers mostly." (laughing)

29:06 That's good, right?

29:07 - Yeah, that's good.

29:08 - Even when they're serverless, they're probably still Linux things running and Docker running and a Kubernetes cluster running on Linux.

29:15 - Serverless is a hilarious word.

29:17 It just means you don't know where the server is.

29:19 - Yeah, it's like, server's not my problem.

29:21 - Yeah.

29:22 (laughing)

29:23 Well, this show is not a problem.

29:25 It was a lot of fun.

29:26 - It was a lot of fun.

29:27 Thanks so much for joining us and showing up again.

29:31 And thanks everybody in the audience.

29:32 - Yeah, absolutely.

29:33 Hey, before we go, I have one quick more announcement, really, really quickly.

29:36 Next week, for those of you who are kind enough to drop in and join us live, we're not doing a live show.

29:42 We're gonna do a crossover episode with Talk Python and vice versa.

29:46 Python bites on Talk Python.

29:48 And Brian, we're gonna be on vacation.

29:50 So I'll see you in January.

29:51 All right.

29:52 Talk to everybody in January.

29:53 Yeah, so happy new year, everyone.

Back to show page