WEBVTT

00:00:00.001 --> 00:00:05.360
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.360 --> 00:00:10.380
This is episode 331, recorded April 11th, 2023.

00:00:10.380 --> 00:00:11.840
And I'm Brian Okken.

00:00:11.840 --> 00:00:13.020
And I'm Michael Kennedy.

00:00:13.020 --> 00:00:18.620
So I want to thank everybody that's showing up on the live stream and watches it on YouTube as well.

00:00:18.620 --> 00:00:22.860
I know a lot of people just listen to the audio, which is great. Thank you.

00:00:22.860 --> 00:00:27.240
But sometimes it's nice to pop over and join the chat.

00:00:27.520 --> 00:00:33.380
We usually record it Tuesdays at 11 Pacific time.

00:00:33.380 --> 00:00:34.940
So if you can catch it, great.

00:00:34.940 --> 00:00:37.520
If not, we enjoy your presence anyway.

00:00:37.520 --> 00:00:41.840
I also want to thank InfluxDB for sponsoring this episode.

00:00:41.840 --> 00:00:44.040
We'll hear more about them later in the show.

00:00:44.040 --> 00:00:46.840
But first, what do you got for us, Michael?

00:00:46.840 --> 00:00:48.360
How about we make an application?

00:00:48.360 --> 00:00:51.160
Yeah, let's do it.

00:00:51.160 --> 00:00:51.920
Let's do it.

00:00:51.920 --> 00:01:06.900
So this one was actually thrown out just in passing over on Talk Python when I had that panel about sort of the direction of packaging and Python in general.

00:01:06.900 --> 00:01:09.220
Like we've got all these different choices.

00:01:09.220 --> 00:01:10.280
We've got poetry.

00:01:10.280 --> 00:01:11.220
We've got PipDMV.

00:01:11.220 --> 00:01:12.440
We've got Hatch.

00:01:12.440 --> 00:01:13.800
We've got straight Pip.

00:01:13.800 --> 00:01:14.340
We've got PipDual.

00:01:14.420 --> 00:01:16.460
So I had a bunch of folks on the show to talk about that.

00:01:16.460 --> 00:01:21.040
And Paul mentioned like, oh, MakeApp is something that I'm really dreaming about right now.

00:01:21.040 --> 00:01:24.640
That might be a nice way to think about how we work with packages.

00:01:25.320 --> 00:01:36.260
And so Felix Ingram noticed this maybe more than even that I did while we were watching or while he's listening and thought, you know, maybe I should talk a bit more about this.

00:01:36.260 --> 00:01:40.040
So I didn't I wasn't really aware of this before I dug into it.

00:01:40.040 --> 00:01:45.860
But MakeApp, it's a little bit like cookie cutter and those kinds of things.

00:01:45.860 --> 00:01:52.520
But it'll guide you through creating your application as well as helping you test certain things.

00:01:52.520 --> 00:02:00.500
Like, for example, if I want to create some Python package having to do with secure, I can't call it secure because guess what?

00:02:00.500 --> 00:02:03.020
That's already taken on PyPI as a package.

00:02:03.020 --> 00:02:05.520
So I'm never going to be able to publish that.

00:02:05.520 --> 00:02:06.460
I'm going to have to rename it.

00:02:06.460 --> 00:02:09.060
I might find that out later along the way.

00:02:09.060 --> 00:02:16.520
So MakeApp will do things like check to see that the thing you're trying to create could be uploaded to PyPI if you later chose to do so.

00:02:16.520 --> 00:02:16.920
Right.

00:02:16.920 --> 00:02:26.880
And also with a quick point out, Felix said, hey, look, here's where you can link to it over onto the Talk Python transcript page.

00:02:26.880 --> 00:02:34.940
And it has every paragraph, I guess, more or less, has its own little link that you can link to and play and hear what it's talking about.

00:02:34.940 --> 00:02:37.180
And I don't think we have that on ours.

00:02:37.180 --> 00:02:38.620
And I'm wondering how much people care.

00:02:38.620 --> 00:02:40.560
Like, that's work that Michael has to do.

00:02:40.560 --> 00:02:41.940
But a bunch of people are like, yes, please.

00:02:41.940 --> 00:02:42.760
Then let me know.

00:02:42.760 --> 00:02:45.080
Anyway, that's how they shared it with me.

00:02:45.080 --> 00:02:46.280
And I figured out what we're talking about.

00:02:46.280 --> 00:02:53.020
So this is an app that simplifies creating applications, rolling them out and publishing them.

00:02:53.020 --> 00:02:58.140
And what it does is it will make a skeleton for your new application in one command.

00:02:58.140 --> 00:03:00.060
That's kind of the cookie cutter equivalent.

00:03:00.060 --> 00:03:04.560
Although there's absolutely fewer templates or project types, right?

00:03:04.560 --> 00:03:08.600
There's like five or six project types instead of five or 6,000 for a cookie cutter.

00:03:08.600 --> 00:03:10.400
So that's a consideration there.

00:03:10.400 --> 00:03:14.440
But then it'll automatically create a Git repository for you.

00:03:14.440 --> 00:03:18.740
I'm guessing just locally and you've got to link it to GitHub or wherever.

00:03:18.740 --> 00:03:22.800
As I said, it'll check whether the application name is available on PyPI.

00:03:22.800 --> 00:03:25.180
You pick your layout.

00:03:25.180 --> 00:03:29.680
And then it also allows you to sort of manage your app over time.

00:03:29.680 --> 00:03:36.320
So you can easily add entries like here's a new item or here's a breaking change to your changelog.

00:03:36.320 --> 00:03:37.100
Oh, cool.

00:03:37.100 --> 00:03:39.160
It'll publish your application.

00:03:39.160 --> 00:03:44.440
You know, push to source control, push to PyPI, those kinds of things in a single command.

00:03:44.440 --> 00:03:45.420
I don't know if I'd use that.

00:03:45.420 --> 00:03:48.060
I think I kind of just am always pushing to GitHub.

00:03:48.060 --> 00:03:51.140
I don't really wait until I'm ready to publish something.

00:03:51.420 --> 00:03:52.840
Like I'm pushing like stuff.

00:03:52.840 --> 00:03:54.660
I always kind of feel bad.

00:03:54.660 --> 00:03:57.820
I think GitHub try like, why does this person commit so often?

00:03:57.820 --> 00:03:58.980
But it's just like, you know what?

00:03:58.980 --> 00:04:00.300
I'm done with this little thing.

00:04:00.300 --> 00:04:01.180
I want to save it.

00:04:01.180 --> 00:04:02.300
What if I'm on my other computer?

00:04:02.300 --> 00:04:04.580
I don't want to have to try to remember how to get it back.

00:04:04.580 --> 00:04:06.680
Anyway, that's a cool feature.

00:04:06.680 --> 00:04:07.520
I'm not sure I would use.

00:04:07.520 --> 00:04:11.120
So when you create a new one, you say make app new and you give it a name.

00:04:11.120 --> 00:04:14.680
You give it a location and other things like what is the name or what's the author?

00:04:15.080 --> 00:04:19.080
And you can also take things like the author, which you would put on the CLI.

00:04:19.080 --> 00:04:21.660
You can put that into a config file and say, you know what?

00:04:21.660 --> 00:04:22.460
It's me.

00:04:22.460 --> 00:04:23.380
It's always me.

00:04:23.380 --> 00:04:27.480
When I'm logged into this user profile, my name is still the same as it was before.

00:04:27.480 --> 00:04:27.780
Right.

00:04:27.780 --> 00:04:29.580
So don't ask me about that.

00:04:29.580 --> 00:04:29.920
Right.

00:04:29.920 --> 00:04:31.700
So that's kind of cool that you can do that.

00:04:31.700 --> 00:04:39.240
It'll create templates for things like a click powered app, something based on pytest.

00:04:39.240 --> 00:04:41.880
It'll let you create a pytest plugin project.

00:04:41.880 --> 00:04:44.520
That's intended to be a pytest thing.

00:04:44.680 --> 00:04:48.860
Django web app or this thing called Web Scaff, which is also a scaffolding thing for web

00:04:48.860 --> 00:04:49.100
apps.

00:04:49.100 --> 00:04:54.500
And then when you're ready to publish it, you say make app release and that'll bump a version

00:04:54.500 --> 00:04:57.960
or you can say make app release increment the major version.

00:04:57.960 --> 00:05:00.400
Like that's a major change that you want to make.

00:05:00.400 --> 00:05:00.640
Right.

00:05:00.640 --> 00:05:05.500
So this automatically bump the version number, tag it in source control, push the source

00:05:05.500 --> 00:05:12.900
and the tag up to GitHub or GitLab or wherever you're acting on and publish it to PyPI all

00:05:12.900 --> 00:05:14.140
in one fail swoop.

00:05:14.280 --> 00:05:17.140
Then again, if you want to make changes, you can say make app change.

00:05:17.140 --> 00:05:22.180
And then you put the text of that change and it'll put that into changelog in the right

00:05:22.180 --> 00:05:22.540
place.

00:05:22.540 --> 00:05:28.140
So you put like quote like here, it's plus new change command implemented or whatever.

00:05:28.140 --> 00:05:33.200
And it has certain prefixes like plus for a new feature edition, exclamation mark for important

00:05:33.200 --> 00:05:37.920
change, minus for a deprecation or star for some minor change.

00:05:37.920 --> 00:05:38.300
Right.

00:05:38.300 --> 00:05:38.860
Pretty cool.

00:05:38.860 --> 00:05:43.740
And then on top of that, you it comes with autocomplete in your shell.

00:05:44.000 --> 00:05:48.660
So if you're using bash or oh my z shell or something like that and you want to hit tab and have

00:05:48.660 --> 00:05:53.800
it know about make app, what are its commands right after that, then you can put something

00:05:53.800 --> 00:05:59.260
into your profile, your RC file, and it will activate the autocomplete, which is cool.

00:05:59.260 --> 00:05:59.940
That's cool.

00:05:59.940 --> 00:06:00.480
Yeah.

00:06:00.480 --> 00:06:01.900
Anyway, so people can check this out.

00:06:01.900 --> 00:06:06.440
Comes lightly recommended from that episode.

00:06:06.440 --> 00:06:07.660
But yeah, pretty cool.

00:06:07.660 --> 00:06:08.380
It looks interesting.

00:06:08.380 --> 00:06:08.880
Worth all.

00:06:08.880 --> 00:06:09.500
Nice.

00:06:10.120 --> 00:06:19.680
Well, one of the things I've been thinking about and looking forward to is Python 312, actually.

00:06:19.680 --> 00:06:25.440
So 312 is not here yet, but it is kind of here, right?

00:06:25.440 --> 00:06:28.960
So it's a yearly development cycle.

00:06:28.960 --> 00:06:29.760
Python's on.

00:06:29.760 --> 00:06:31.860
Where are we at right now?

00:06:31.860 --> 00:06:35.940
Well, we just had, so we just passed Alpha 7.

00:06:35.940 --> 00:06:39.900
So Alpha 7 was released recently.

00:06:39.900 --> 00:06:41.860
I don't think it was right on the list.

00:06:41.860 --> 00:06:42.400
That many days ago, yeah.

00:06:42.400 --> 00:06:42.940
Yeah.

00:06:42.940 --> 00:06:44.280
But yeah.

00:06:44.280 --> 00:06:47.640
So 312 Alpha 7.

00:06:47.640 --> 00:06:52.640
And it's nice that they've published the schedule, the expected schedule.

00:06:52.640 --> 00:06:57.860
So we've got up through a couple more months of four or five months.

00:06:57.860 --> 00:06:59.420
Bad at math.

00:06:59.420 --> 00:07:02.760
And this early in the morning of betas.

00:07:03.040 --> 00:07:08.080
And then candidate releases and then the final in October, which is awesome.

00:07:08.080 --> 00:07:12.000
So why am I bringing this up?

00:07:12.000 --> 00:07:14.260
I'm bringing it up because a couple things happened recently.

00:07:14.260 --> 00:07:20.080
So the Alpha 7, if we took the release notes, there's some fun stuff in here.

00:07:20.080 --> 00:07:22.540
And I'm not sure when this came in.

00:07:22.540 --> 00:07:30.120
But the thing that I really am looking forward to in 312 is, well, there's some stuff that isn't really mentioned here.

00:07:30.120 --> 00:07:33.400
But I think we're going to get more speed improvements, which I'm pretty excited about.

00:07:33.400 --> 00:07:41.580
But there's some cool stuff with, oh, this is just the major new features.

00:07:41.580 --> 00:07:45.100
We've got even more improved error messages, which are great.

00:07:45.200 --> 00:07:47.060
And that's one of the things I wanted to talk about.

00:07:47.060 --> 00:07:48.260
A whole bunch of great stuff.

00:07:48.260 --> 00:07:51.440
But these are pretty cool.

00:07:51.440 --> 00:07:57.780
Also, invalid backslash escape sequences now worn for syntax warning and deprecation warning.

00:07:57.780 --> 00:07:58.660
That's kind of neat.

00:07:59.720 --> 00:08:07.780
So in the What's New article for 312, this does have some examples of the new error messages.

00:08:07.780 --> 00:08:10.140
So these are really kind of neat things.

00:08:10.140 --> 00:08:20.460
Like if you just kind of use SysVersionInfo, but if you forgot to import it, there's some new error logs of, did you forget to import Sys?

00:08:20.460 --> 00:08:22.020
So did you forget to import?

00:08:22.020 --> 00:08:23.820
Those are nice error messages.

00:08:23.820 --> 00:08:36.200
There's another one from like if you're using a variable within a class that's not around, maybe it's a self variable that you forgot.

00:08:36.200 --> 00:08:37.340
There's self member variables.

00:08:37.340 --> 00:08:40.660
So there's a did you mean self.black.

00:08:40.660 --> 00:08:43.040
Nice example.

00:08:43.040 --> 00:08:50.880
Syntax error from, and I've done this a lot, of import from messing this up.

00:08:50.880 --> 00:08:53.600
So it's import something from this other thing.

00:08:53.600 --> 00:08:54.540
It's not that.

00:08:54.540 --> 00:08:57.900
You're supposed to say from something, import something.

00:08:57.900 --> 00:09:02.540
And the syntax error now says, did you mean to use this instead?

00:09:02.540 --> 00:09:09.620
Which also, I don't know, to me begs the question of like, can't you just figure it out if you know what I meant?

00:09:09.620 --> 00:09:10.640
But anyway.

00:09:10.640 --> 00:09:15.440
Yeah, some other like import error messages, some cleanup.

00:09:15.440 --> 00:09:20.040
More specific error messages, always exciting.

00:09:20.040 --> 00:09:24.180
The other, there's always new exciting things in new versions.

00:09:24.180 --> 00:09:24.940
One of the.

00:09:24.940 --> 00:09:29.340
Off of that bit, I just want to bring a little audience feedback.

00:09:29.340 --> 00:09:34.080
Sean Tibor from Teaching Python out there says, hooray for better error messages.

00:09:34.080 --> 00:09:39.640
And Pamela Fox says, yay, I've already been benefiting from 3.11 error message improvements.

00:09:39.640 --> 00:09:44.100
Some of which requested my, I requested myself in the Python forum.

00:09:44.100 --> 00:09:45.420
Tell Pablo what you need.

00:09:45.420 --> 00:09:47.040
Yes, I think this is really great.

00:09:47.040 --> 00:09:53.180
It's certainly getting nice to have those, especially for people getting started in Python to be less confused.

00:09:53.180 --> 00:09:53.760
Yeah.

00:09:53.760 --> 00:10:00.900
And I'm finding myself just, I'm in a hurry more often than I guess I'm always in more of a hurry, getting stuff done.

00:10:01.100 --> 00:10:04.820
And if the error message can help me solve something quicker.

00:10:04.820 --> 00:10:06.860
That's a, that's a nice win.

00:10:06.860 --> 00:10:09.480
So just one of the announcements that came out recently.

00:10:09.480 --> 00:10:12.000
So I was, this is like tight schedule.

00:10:12.000 --> 00:10:13.800
So we've only got, we're on alpha seven.

00:10:13.800 --> 00:10:16.120
We've got no more alphas.

00:10:16.120 --> 00:10:17.460
We've got some betas coming.

00:10:17.720 --> 00:10:23.800
But I thought we were no new feet, no new features beyond the beta one.

00:10:23.800 --> 00:10:34.980
And one of the new features that I don't see so far, but it's supposedly coming in is, is this, this per, per interpreter Gil, PEP 684.

00:10:34.980 --> 00:10:37.740
It's a 312.

00:10:37.740 --> 00:10:39.160
It just got approved.

00:10:39.540 --> 00:10:42.560
And it's, I'm pretty, I think I'm excited about it.

00:10:42.560 --> 00:10:43.320
I'm not sure.

00:10:43.320 --> 00:10:47.120
I'm, I don't know if you know much about it, Michael, but it says here.

00:10:47.120 --> 00:10:47.620
Okay.

00:10:47.620 --> 00:10:50.120
So I'm just going to quickly summarize the abstract.

00:10:50.120 --> 00:10:56.160
So, CPath on users, can run multiple interpreters, interpreters in the same process.

00:10:56.160 --> 00:11:01.320
however, interpreters in the same process always shared the same global state.

00:11:01.320 --> 00:11:05.220
And so one Gil, it is a source of bugs.

00:11:05.220 --> 00:11:15.160
so, and, with a growing impact as more people use the feature, furthermore sufficient isolation would facilitate true multicore parallelism.

00:11:15.160 --> 00:11:17.900
Ooh, I like multicore parallelism.

00:11:17.900 --> 00:11:20.560
so I think we want this.

00:11:20.560 --> 00:11:23.320
And, so there's outlines in the proposal.

00:11:23.320 --> 00:11:30.680
So we're going to have, they're moving the data surrounding the Gil into the per interpreter data.

00:11:30.680 --> 00:11:33.780
and I think I'm excited about it.

00:11:33.780 --> 00:11:39.600
But then, then later on it does say, there's a, there's a reference to like for how do we teach this?

00:11:39.600 --> 00:11:44.220
and it mentions, oh, I think I lost the link.

00:11:44.220 --> 00:11:49.480
Oh, this is an advanced feature meant for a narrow set of users of the C API.

00:11:49.480 --> 00:11:55.680
So I'm not sure how this will affect normal people, in the future, but it still thinks a good thing.

00:11:55.680 --> 00:11:56.840
Do you have any idea, Michael?

00:11:56.840 --> 00:11:57.920
I have no idea.

00:11:58.040 --> 00:11:58.240
Yeah.

00:11:58.240 --> 00:12:01.280
I think that the trick is how do you start a new interpreter?

00:12:01.280 --> 00:12:11.700
And what I am, what I would imagine might come out of this is there might be right now in Python, we can create threads and we can create multiprocessing and we can do asyncio, right?

00:12:11.700 --> 00:12:12.200
Yeah.

00:12:12.200 --> 00:12:14.580
asyncio, it's just one thread.

00:12:14.580 --> 00:12:16.100
It doesn't do any of that.

00:12:16.360 --> 00:12:29.520
So kind of put that to a side, it's, it doesn't really fall into the same realm, but with threading versus multiprocessing, it's always been this trade-off of like, well, I really just want to run more than one thing at a time.

00:12:29.520 --> 00:12:31.960
And, you know, like I've got 32 cores.

00:12:31.960 --> 00:12:33.260
Why can I only use one of them?

00:12:33.260 --> 00:12:35.060
I have this work I want to do.

00:12:35.060 --> 00:12:45.820
And this might be interesting for, you as a data scientist or a scientist or somebody doing computational work, say on like hardware devices, a lot.

00:12:46.120 --> 00:12:52.520
But then it also could be interesting for web consumer, web developers and APIs and stuff, right?

00:12:52.520 --> 00:12:59.640
Like those threads might be, you know, you're still blocked on the GIL on the server side for each process that you spin off.

00:12:59.640 --> 00:13:08.380
And that's why we have a bunch of worker processes that run, like you have eight worker processes already in a copy of your entire app consuming all that memory, right?

00:13:08.380 --> 00:13:09.980
That's the, why do you do that?

00:13:09.980 --> 00:13:15.100
Well, because you don't want to be subjected to the GIL for among other reasons, but that's a primary reason.

00:13:15.100 --> 00:13:18.860
Cause you can't really do it in parallel, but if you had a bunch of processes that are independent.

00:13:18.860 --> 00:13:30.460
So I can certainly see there might be some kind of API or something in the future where when you create a thread, you can say, and this thread lives inside this process, but I want more isolation.

00:13:30.460 --> 00:13:35.080
Like interpreter isolation equals true when you create the thread or whatever.

00:13:35.080 --> 00:13:38.660
And then, then when you run that work, there's two things that happen.

00:13:38.660 --> 00:13:43.640
One, it should run in true parallel form, but let the OS, it'll be an OS thread.

00:13:43.640 --> 00:13:49.040
The OS will schedule that on its own course, but then you also will have to actually care about lock.

00:13:49.040 --> 00:13:53.380
Like other languages like C and C# and stuff, you do parallels.

00:13:53.380 --> 00:13:54.860
And you're all about, okay, when do I lock this?

00:13:54.860 --> 00:13:55.500
How do I lock that?

00:13:55.500 --> 00:13:56.080
How do I unlock it?

00:13:56.080 --> 00:13:56.900
What about a deadlock?

00:13:56.900 --> 00:13:59.940
And then Python, you're like, eh, kind of the GIL will help us a lot.

00:13:59.940 --> 00:14:01.040
Like that's gone, right?

00:14:01.100 --> 00:14:07.340
And so it kind of levels up the difficulty of thread safety because there's more of a chance that these things run in parallel.

00:14:07.340 --> 00:14:07.880
So anyway.

00:14:07.880 --> 00:14:19.320
So we had, so I think the gist around it is there were a lot of people that were, or a lot, there are some people that are trying to utilize the multi-interpreter or sub-interpreter systems.

00:14:19.320 --> 00:14:26.300
And they were running into problems because of this, the GIL is global sort of a thing.

00:14:27.520 --> 00:14:36.800
And so push, it's not just the gill, but there's other things involved with this PEP that push more of the data around the per-interpreter thing into isolation.

00:14:36.800 --> 00:14:40.660
So it's increased isolation of the per-interpreter stuff, including the GIL.

00:14:41.840 --> 00:14:52.840
And those kind of people, like it says, maintainers of any extension module that created isolated interpreters, they'll now be able to utilize this better.

00:14:52.840 --> 00:14:56.100
So there's some people making some cool things that'll continue.

00:14:56.100 --> 00:14:56.820
So yay.

00:14:56.820 --> 00:14:57.320
Anyway.

00:14:57.320 --> 00:14:59.200
I'm very excited for this.

00:14:59.200 --> 00:15:00.440
I'm excited for this.

00:15:00.440 --> 00:15:01.700
I'm excited for the no-gil Python.

00:15:01.700 --> 00:15:05.000
I think it's one of these sort of chicken and egg type issues.

00:15:05.000 --> 00:15:07.240
Be like, ah, I don't really need the threading stuff.

00:15:07.240 --> 00:15:09.980
I don't really use it because it's Python.

00:15:09.980 --> 00:15:12.260
And a lot of people are like, well, there's no point in trying it.

00:15:12.260 --> 00:15:19.900
So there's just not like a culture of really leveraging the hardware outside of these very specialized C APIs or certain Rust scenarios.

00:15:19.900 --> 00:15:22.420
But then when you do see them, you're like, oh, it's like 50 times faster.

00:15:22.420 --> 00:15:27.140
Like, hmm, wouldn't it be kind of nice to go 50 times faster sometimes if you might need it?

00:15:27.140 --> 00:15:32.580
Or use half as much RAM on a server because you don't need to scale out as much for the gill?

00:15:32.580 --> 00:15:41.980
But like you said, in other languages, we have to freak out about locks or using a message queue system for different processes instead.

00:15:41.980 --> 00:15:44.020
And we don't have to deal with that now.

00:15:44.020 --> 00:15:48.480
So I think it's good that we're taking slow steps towards it.

00:15:48.480 --> 00:15:49.360
So it's good.

00:15:49.360 --> 00:15:49.760
Anyway.

00:15:50.520 --> 00:15:52.740
Yeah, no, I think this is good.

00:15:52.740 --> 00:15:54.500
I talked to Eric Snow about it long ago.

00:15:54.500 --> 00:16:00.140
It sounds like it's created better data isolation within the CPython source code anyway.

00:16:00.140 --> 00:16:06.400
There's a bunch of global shared variables that weren't really meant to be shared, but they were because there's really only one thing.

00:16:06.400 --> 00:16:10.740
And this refactoring, I think, has also made it a little bit better inside.

00:16:10.740 --> 00:16:11.300
Yeah.

00:16:11.300 --> 00:16:11.780
Okay.

00:16:11.780 --> 00:16:12.240
Cool.

00:16:12.240 --> 00:16:13.260
All right.

00:16:13.260 --> 00:16:14.680
Do you know what else is cool?

00:16:14.680 --> 00:16:16.360
Databases.

00:16:16.800 --> 00:16:17.120
Yeah.

00:16:17.120 --> 00:16:18.420
Databases are great.

00:16:18.420 --> 00:16:22.040
And we want to thank InfluxDB for sponsoring this episode.

00:16:22.040 --> 00:16:30.620
InfluxDB is a database purpose built for handling time series data at massive scale for real-time analytics.

00:16:30.620 --> 00:16:38.220
Developers can ingest, store, and analyze all types of time series data, metrics, events, traces in a single platform.

00:16:38.220 --> 00:16:40.620
So, dear listener, let me ask you a question.

00:16:41.040 --> 00:16:47.340
How would boundless cardinality and lightning-fast SQL queries impact the way you develop real-time applications?

00:16:47.340 --> 00:16:59.180
InfluxDB processes large time series data sets and provides low-latency SQL queries, making it a go-to choice for developers building real-time applications and seeking crucial insights.

00:16:59.180 --> 00:17:09.420
For developer efficiency, InfluxDB helps you create IoT, analytics, and cloud applications using time-stamped data rapidly and at scale.

00:17:09.420 --> 00:17:15.900
It's designed to ingest billions of data points in real-time with unlimited cardinality.

00:17:15.900 --> 00:17:24.520
InfluxDB streamlines building once and deploying across various products and environments from the edge on-premise and to the cloud.

00:17:24.520 --> 00:17:28.440
Try it for free at pythonbytes.fm/influxDB.

00:17:28.440 --> 00:17:30.580
The link is also in your show notes.

00:17:30.580 --> 00:17:32.820
Thanks, Influx, for supporting the show.

00:17:32.820 --> 00:17:33.660
Very, very awesome.

00:17:33.660 --> 00:17:34.680
Thank you for supporting the show.

00:17:34.680 --> 00:17:41.820
Now, Brian, you live in the future in this world of Python 3.12.

00:17:41.820 --> 00:17:42.320
Yeah.

00:17:42.320 --> 00:17:49.080
I live in the present, as in just a few days ago, Python 3.11.3 was released.

00:17:49.080 --> 00:17:49.660
How about that?

00:17:49.660 --> 00:17:50.400
Oh, cool.

00:17:50.400 --> 00:17:50.780
Yeah.

00:17:50.780 --> 00:17:51.380
I don't know.

00:17:51.380 --> 00:17:55.800
My feelings a lot of times when it's one of these point releases, maybe it's worth upgrading.

00:17:55.800 --> 00:17:57.540
Sometimes there's something cool in there.

00:17:57.540 --> 00:17:58.380
Sometimes not.

00:17:58.380 --> 00:18:02.340
This one, you probably want to get in there and check it out.

00:18:02.340 --> 00:18:08.600
Because number one, and this is not very common in the Python world, that there's a security update.

00:18:09.600 --> 00:18:17.800
So they updated the underlying OpenSSL version for Windows and macOS to 1.1.1 T.

00:18:17.800 --> 00:18:20.880
And we talked about like semantic version and calendar version.

00:18:20.880 --> 00:18:29.200
This one's the T versioning style to address, let's see, 1, 2, and 3 CVEs.

00:18:29.280 --> 00:18:32.960
And if you go pop over there to read a bit about that, it says severity high.

00:18:32.960 --> 00:18:34.260
Okay.

00:18:34.260 --> 00:18:36.700
That doesn't sound absolutely incredible.

00:18:36.700 --> 00:18:38.120
Another one is moderate.

00:18:38.120 --> 00:18:40.440
And another one is moderate, right?

00:18:40.440 --> 00:18:43.360
So those are probably worth paying attention to then.

00:18:43.360 --> 00:18:49.360
So that's, I just realized like 20 minutes ago that actually, I know it came out last week,

00:18:49.360 --> 00:18:51.420
but I just noticed it this little bit ago.

00:18:51.420 --> 00:18:55.900
And because of the security stuff, I decided I'm kicking out something I was going to cover before

00:18:55.900 --> 00:18:56.960
and putting this one in here.

00:18:56.960 --> 00:18:58.360
So that's pretty important.

00:18:58.360 --> 00:18:58.940
Yeah.

00:18:58.940 --> 00:19:01.060
I just want to be a little timely on that.

00:19:01.060 --> 00:19:03.620
So there's also some other things, you know, there's always a few things like,

00:19:03.620 --> 00:19:07.060
I wonder if that, that might be causing a problem.

00:19:07.060 --> 00:19:13.800
For example, stack top value on tracing entries to avoid corruption on the garbage collection.

00:19:13.800 --> 00:19:18.200
I'm like, I don't know that I do that, but maybe things that I use do that.

00:19:18.200 --> 00:19:20.900
And I don't want a corrupted garbage collector, right?

00:19:20.920 --> 00:19:21.740
That would be bad.

00:19:21.740 --> 00:19:24.900
Who knows if, like, if it lose, if it leaks data that's bad,

00:19:24.900 --> 00:19:28.820
but if it goes and collect something that's not bad, that's really going to be a problem.

00:19:28.820 --> 00:19:36.220
Overflow when creating very large dictionaries causes a crash when deallocating nested filter objects.

00:19:36.220 --> 00:19:39.280
Seg fault from a race condition during garbage collection.

00:19:39.280 --> 00:19:39.860
All right.

00:19:39.860 --> 00:19:41.580
So there's enough stuff in here that I'm like, you know what?

00:19:41.580 --> 00:19:42.980
This thing's getting an update.

00:19:42.980 --> 00:19:43.580
All right.

00:19:43.580 --> 00:19:45.500
So those are the cores and built in.

00:19:45.500 --> 00:19:49.040
And then there's a bunch of things, a bunch of improvements to the standard library.

00:19:49.720 --> 00:19:51.820
People can check out, right?

00:19:51.820 --> 00:19:57.900
So it's just always interesting how much, how many things get changed, even though you think,

00:19:57.900 --> 00:20:02.960
like, eh, standard library is kind of static and fixed, but, like, fixed dunder weak ref descriptor

00:20:02.960 --> 00:20:05.000
generation for custom data classes.

00:20:05.000 --> 00:20:12.460
And, you know, for binary mode, file hook compressed doesn't set the encoding, even if the value is none,

00:20:12.460 --> 00:20:13.220
and so on.

00:20:13.320 --> 00:20:15.500
So just a bunch of little things getting fixed.

00:20:15.500 --> 00:20:19.640
But the reason I put it to the top of the list is the security stuff.

00:20:19.640 --> 00:20:20.120
Yeah.

00:20:20.120 --> 00:20:25.640
One of the security things that's interesting to me, I haven't looked into that yet, is that subprocess,

00:20:25.640 --> 00:20:26.720
Popen thing.

00:20:26.720 --> 00:20:35.820
A lot of people use Python to coordinate other activities on, you know, like DevOps and systems

00:20:35.820 --> 00:20:37.240
admin and stuff like that.

00:20:37.840 --> 00:20:42.360
So security patches around that, you probably should pay attention to.

00:20:42.360 --> 00:20:43.540
So that's pretty interesting.

00:20:43.540 --> 00:20:44.760
Absolutely.

00:20:44.760 --> 00:20:45.940
Yeah.

00:20:45.940 --> 00:20:47.960
Specifically for Windows users, right?

00:20:47.960 --> 00:20:54.200
So now it uses a safer approach to find cmd.exd when launching with shell equals true.

00:20:54.200 --> 00:20:54.980
Yeah.

00:20:54.980 --> 00:20:59.580
And I can't imagine, like, I didn't even think that if you found the wrong command, you'd be

00:20:59.580 --> 00:21:01.760
passing all your stuff to the wrong shell.

00:21:02.020 --> 00:21:04.600
Some evil cmd?

00:21:04.600 --> 00:21:05.140
Yeah.

00:21:05.140 --> 00:21:06.420
Yikes.

00:21:06.420 --> 00:21:06.600
Yeah.

00:21:06.600 --> 00:21:06.880
Okay.

00:21:06.880 --> 00:21:08.440
Cool.

00:21:08.440 --> 00:21:08.780
All right.

00:21:08.780 --> 00:21:10.160
Well, that's that one.

00:21:10.160 --> 00:21:10.920
What's your last?

00:21:10.920 --> 00:21:18.460
I want to do something fun because I'm looking forward to PyCon coming up right pretty soon.

00:21:18.460 --> 00:21:19.860
Are you pretty excited about that?

00:21:19.860 --> 00:21:22.040
I am excited.

00:21:22.040 --> 00:21:27.360
I think it's approaching faster than I'm ready to prepare for being there for all that time

00:21:27.360 --> 00:21:28.680
and getting the most out of it.

00:21:28.680 --> 00:21:29.660
But yeah, I'm excited.

00:21:30.040 --> 00:21:30.180
Yeah.

00:21:30.180 --> 00:21:32.500
So there's an article.

00:21:32.500 --> 00:21:33.240
Who's this?

00:21:33.240 --> 00:21:37.580
By Sebastian Witowski, How to Make a Great Conference Talk.

00:21:37.580 --> 00:21:39.520
And I kind of like this.

00:21:39.520 --> 00:21:41.680
There's some really great advice in here.

00:21:41.680 --> 00:21:44.160
So I know it's kind of late.

00:21:44.160 --> 00:21:48.160
A lot of people that are speaking about people speak at all sorts of conferences, though.

00:21:48.160 --> 00:21:49.060
So it's good.

00:21:49.060 --> 00:21:52.980
But if you're speaking at PyCon, there's a couple of things I want to highlight.

00:21:52.980 --> 00:21:55.320
You probably already have your slides set up, hopefully.

00:21:56.200 --> 00:21:57.980
And no, you've already been accepted.

00:21:57.980 --> 00:22:00.040
So you don't need to worry.

00:22:00.040 --> 00:22:04.320
You can maybe skip the benefits of speaking at a conference.

00:22:04.320 --> 00:22:06.360
But I highly recommend people try.

00:22:07.180 --> 00:22:13.120
I think there's benefits of even submitting and trying to get an idea together, even if you

00:22:13.120 --> 00:22:15.180
don't present it, because it's nice.

00:22:15.180 --> 00:22:21.660
Anyway, then there's call for proposals, research preparation slides.

00:22:21.660 --> 00:22:23.560
There's a whole bunch of stuff in here that's great.

00:22:23.640 --> 00:22:25.180
I want to skip to the end.

00:22:25.180 --> 00:22:29.980
So you're in the middle of maybe trying to do rehearsing.

00:22:29.980 --> 00:22:36.500
So I say skip to this part, the live demos part and rehearsing and what to do on the day

00:22:36.500 --> 00:22:39.420
of the presentation and make sure you review these, because these are great.

00:22:39.420 --> 00:22:45.420
And the greatest advice I've ever seen for live demos is, do you really need a demo?

00:22:47.420 --> 00:22:53.060
We've probably all, I don't know if anybody's, anybody that's tried to do a live demo has

00:22:53.060 --> 00:22:55.120
had one not go as they expected.

00:22:55.120 --> 00:22:58.320
Even if it turned out okay, it's a stressful thing.

00:22:58.320 --> 00:23:04.120
So especially if you are new to presenting, I would say skip the live demo.

00:23:04.120 --> 00:23:06.740
It's cool when it works, when it doesn't.

00:23:06.740 --> 00:23:14.180
The other thing is, if you're going to do it anyway, and something goes wrong, the Python

00:23:14.180 --> 00:23:17.400
people in the audience are not going to heckle you or anything like that.

00:23:17.400 --> 00:23:20.900
We're a nice bunch of people and we've all had it happen to us.

00:23:20.900 --> 00:23:26.100
So you're not going to, you shouldn't feel too embarrassed, but prepare for it.

00:23:26.100 --> 00:23:28.500
Prepare for, what are you going to do if the wifi goes out?

00:23:28.500 --> 00:23:29.480
Things like that.

00:23:29.480 --> 00:23:36.180
So, and also, and also I just don't do them anymore because, because, because they've always

00:23:36.180 --> 00:23:36.980
gone wrong for me.

00:23:36.980 --> 00:23:37.300
Okay.

00:23:37.300 --> 00:23:39.980
Moving on at the very least practice them.

00:23:39.980 --> 00:23:41.440
Rehearsing.

00:23:41.440 --> 00:23:45.880
I see a lot of people and I used to be like this to forget to rehearse.

00:23:45.880 --> 00:23:48.440
The rehearsing is the most important part.

00:23:48.440 --> 00:23:56.200
And I can't remember where it is in here, but it's good advice of taking, practicing the

00:23:56.200 --> 00:24:00.420
first five minutes, making sure you've like got the five minutes, first five minutes, last

00:24:00.420 --> 00:24:01.740
five minutes memorized.

00:24:01.740 --> 00:24:07.140
You can like, you can like, you know exactly what you're going to say because it's hard.

00:24:07.140 --> 00:24:11.000
If you think you kind of know what you're going to say, when you get up there, it's blank

00:24:11.000 --> 00:24:11.340
page.

00:24:11.340 --> 00:24:12.700
You have to, how do you start?

00:24:12.700 --> 00:24:16.100
So knowing how to start and knowing how to finish is a, is a good thing.

00:24:16.100 --> 00:24:18.540
I, so practice.

00:24:18.540 --> 00:24:24.320
And I also see, I've seen people practice quietly and I've done this before in your head, practicing

00:24:24.320 --> 00:24:24.860
in your head.

00:24:24.860 --> 00:24:25.520
Doesn't count.

00:24:25.520 --> 00:24:27.680
Do it out loud and do it standing.

00:24:27.680 --> 00:24:29.120
You're going to be standing at a conference.

00:24:29.120 --> 00:24:30.520
So don't sit and practice it.

00:24:30.520 --> 00:24:32.520
Stand up and practice it.

00:24:32.520 --> 00:24:35.100
I was at the lot at, Pike Cascades.

00:24:35.100 --> 00:24:38.780
I was in the hotel room and what did I use for a standing desk?

00:24:38.780 --> 00:24:43.160
The ironing board, the ironing work where it's great in a hotel for, for your standing

00:24:43.160 --> 00:24:44.140
desk to practice it.

00:24:44.140 --> 00:24:45.900
Anyway, practice your, your talk.

00:24:45.900 --> 00:24:47.720
And I take one of these.

00:24:47.720 --> 00:24:49.480
So I'm going to have a link in this.

00:24:49.480 --> 00:24:53.980
I'm going to take, take a look at this in a second, but, one of these, time

00:24:53.980 --> 00:24:54.460
timers.

00:24:54.460 --> 00:24:58.600
So, there it's 36 bucks for a little tiny timer.

00:24:58.720 --> 00:24:59.580
So what's the big deal?

00:24:59.580 --> 00:25:03.560
you can visually see what's going on and I love these things.

00:25:03.560 --> 00:25:05.520
and I, that's what I used to practice with.

00:25:05.520 --> 00:25:11.380
and to, and the other comment in here was to, pay attention to where you are in your

00:25:11.380 --> 00:25:13.480
slides at different points, which is a great idea.

00:25:13.480 --> 00:25:19.160
Like at 15 minutes or 10 minutes, 20 minutes, whatever, where are you approximately in your

00:25:19.160 --> 00:25:19.560
slides?

00:25:19.560 --> 00:25:24.760
The reason for that is while you're doing your presentation, if you're at the 10 minute mark

00:25:24.760 --> 00:25:28.580
and you're already halfway through your talk, slow down a little bit.

00:25:28.580 --> 00:25:31.940
If you're at the 10 minute mark and you've only gone through the first three slides,

00:25:31.940 --> 00:25:34.640
you're going to have to speed up a little bit or else you're not going to get into it.

00:25:34.640 --> 00:25:35.480
Or skip something.

00:25:35.480 --> 00:25:37.460
Or, yeah, or skip something.

00:25:37.460 --> 00:25:40.800
know what you're going to skip, but practice it.

00:25:40.800 --> 00:25:43.660
and then some great advice for day of the presentation.

00:25:43.660 --> 00:25:45.960
don't drink too much water or your coffee.

00:25:45.960 --> 00:25:50.340
You're going to want to, but don't, because, but drink, drink some, make sure you're

00:25:50.340 --> 00:25:55.700
hydrated, but not too hydrated because you know, so anyway, some great advice here,

00:25:55.700 --> 00:25:58.700
uh, packing checklist, make sure you have extra chargers.

00:25:58.700 --> 00:26:03.780
I, I've got like the little dongle thing because conferences usually have whatever you need to

00:26:03.780 --> 00:26:05.480
hook up to, but I don't trust that.

00:26:05.480 --> 00:26:13.200
So I make sure that my laptop can get to the HDMI, can get to, yeah, whatever it

00:26:13.200 --> 00:26:15.840
needs to, extra charger if you've got one.

00:26:15.840 --> 00:26:17.020
So just prepare.

00:26:17.020 --> 00:26:17.540
Yeah.

00:26:17.540 --> 00:26:18.340
It's a good article.

00:26:18.340 --> 00:26:20.080
Sebastian's a great presenter.

00:26:20.280 --> 00:26:22.060
So yeah, he's done a bunch.

00:26:22.060 --> 00:26:25.140
I, I also have some thoughts.

00:26:25.140 --> 00:26:29.800
I would say regarding the live demo part, I'm, I'm on board with Marco.

00:26:29.800 --> 00:26:35.100
Like I think not that one, this one that I find talks with live demos.

00:26:35.100 --> 00:26:37.000
He says more exciting.

00:26:37.000 --> 00:26:38.880
I say more, more real, right?

00:26:38.920 --> 00:26:43.160
Like if, and I think it applies an important role.

00:26:43.160 --> 00:26:45.540
Like there's certain things you show picture, picture, picture.

00:26:45.540 --> 00:26:46.860
You're like, Oh, that's cool.

00:26:46.860 --> 00:26:48.440
But I bet that's really hard.

00:26:48.440 --> 00:26:52.980
But if you show, actually there's these three lines that I wrote in a minute in front of

00:26:52.980 --> 00:26:53.160
you.

00:26:53.160 --> 00:26:56.020
And now the thing happens like, Oh, that's totally approachable.

00:26:56.020 --> 00:26:56.440
I could do it.

00:26:56.440 --> 00:26:58.580
And I think it just sets a different tone.

00:26:58.580 --> 00:27:00.440
I don't think every talk has to have it.

00:27:00.440 --> 00:27:05.680
Like, there's storytelling talks and like big picture talks and like those don't need

00:27:05.680 --> 00:27:05.800
it.

00:27:05.800 --> 00:27:11.220
But if you're trying to talk about as focused technology, I think it's almost table stakes.

00:27:11.220 --> 00:27:13.620
So I disagree a bit with Sebastian on that.

00:27:13.620 --> 00:27:14.060
Okay.

00:27:14.060 --> 00:27:20.980
However, I, that said you can go into it with a blank file and get confused.

00:27:20.980 --> 00:27:22.600
You can get distracted.

00:27:22.600 --> 00:27:23.580
You can make mistakes.

00:27:23.580 --> 00:27:24.560
You can forget things.

00:27:24.560 --> 00:27:27.540
So two things leave a lot.

00:27:27.540 --> 00:27:29.580
If you do do it, leave lots of breadcrumbs.

00:27:29.580 --> 00:27:33.540
Like maybe put a comment, like here, I want to create a flask app here.

00:27:33.540 --> 00:27:37.120
I want to make a view that responds to this URL.

00:27:37.120 --> 00:27:41.680
And like, it might be hard to remember, do all the steps, but if you see, make the flask

00:27:41.680 --> 00:27:43.560
app, you're like, Oh, I don't remember how to do that.

00:27:43.560 --> 00:27:49.520
Create a view that call it responds to this URL with like the actual variable passing thing.

00:27:49.520 --> 00:27:50.380
And Oh, okay.

00:27:50.380 --> 00:27:51.080
Well, that's easy.

00:27:51.080 --> 00:27:51.540
We'll drop that.

00:27:51.540 --> 00:27:51.720
Right.

00:27:51.720 --> 00:27:54.520
Like you can make it hard on yourself or easy on yourself.

00:27:54.520 --> 00:27:57.740
And then second, have a backup.

00:27:58.460 --> 00:28:02.780
Pample says at, at his research lab, they were actually saying, keep a spare laptop.

00:28:02.780 --> 00:28:07.240
I don't know necessarily about that, but I would at least have a finished version that

00:28:07.240 --> 00:28:08.100
you're like, Oh my gosh.

00:28:08.100 --> 00:28:09.600
Well, let me pull this up and show you.

00:28:09.600 --> 00:28:11.700
Then we'll talk like some kind of fallback.

00:28:11.700 --> 00:28:11.920
Right.

00:28:11.920 --> 00:28:14.820
There's like levels of live demo.

00:28:14.820 --> 00:28:20.360
Do I say file new project and we write a thousand lines or do I strategically highlight the important

00:28:20.360 --> 00:28:24.680
bits and not distract people with like oil and get potentially lost?

00:28:24.680 --> 00:28:24.900
Right.

00:28:24.900 --> 00:28:25.260
I don't know.

00:28:25.260 --> 00:28:30.140
So I think one of the, one of the halfway betweens is to script your demo.

00:28:30.140 --> 00:28:35.520
And there's a tool that the Sebastian links to called demo magic.

00:28:35.520 --> 00:28:42.580
And what you do with this is basically you, you have these commands of a PEI or PE and, and

00:28:42.580 --> 00:28:44.840
other things and wait for prompts and whatever.

00:28:45.040 --> 00:28:50.200
And these, what happens is you, you're demo, it looks like you're demoing, but all you're

00:28:50.200 --> 00:28:52.620
doing is hitting enter to go to the next thing.

00:28:52.620 --> 00:28:58.660
and, and then people can see in real time what it looks like, but they don't have to wait

00:28:58.660 --> 00:29:00.760
for you to type it just sort of, you know, yeah.

00:29:00.760 --> 00:29:02.720
It kind of types it out as if it's doing.

00:29:02.720 --> 00:29:02.980
Yeah.

00:29:02.980 --> 00:29:03.340
Absolutely.

00:29:03.340 --> 00:29:03.560
Yeah.

00:29:03.560 --> 00:29:04.760
So this is kind of nice.

00:29:04.760 --> 00:29:10.480
I also, one of the things of all conference advice, Sebastian does talk about this,

00:29:10.480 --> 00:29:11.380
but keep it in mind.

00:29:11.500 --> 00:29:12.940
This is what works for him.

00:29:12.940 --> 00:29:18.460
I disagree with some of it and, and you disagree with some of it and be, it's okay if you disagree

00:29:18.460 --> 00:29:20.320
with it because it works different for everybody.

00:29:20.320 --> 00:29:26.800
like one of the exam, one of his advice, pieces of advice also is to write out your talk

00:29:26.800 --> 00:29:28.500
before you write your slides.

00:29:28.500 --> 00:29:29.820
I never do that.

00:29:29.820 --> 00:29:32.360
because I'm writing my slides in Markdown.

00:29:32.360 --> 00:29:37.700
I'm thinking about what I'm going to show while I'm, while I'm talking and while I'm thinking

00:29:37.700 --> 00:29:38.580
about the topic.

00:29:38.680 --> 00:29:42.880
So my, my slides really are kind of outlining to begin with.

00:29:42.880 --> 00:29:47.340
And, and then I, you know, I can put junk in there and cut it out, whatever.

00:29:47.340 --> 00:29:52.860
also a code, I don't know how to do, and it says you should be able to do your talk without

00:29:52.860 --> 00:29:53.340
slides.

00:29:53.340 --> 00:29:55.680
I just, I don't think that's true.

00:29:55.680 --> 00:30:00.620
This is a, for, for the kind of demo or kind of stuff I'm doing, there's a lot of code I'm

00:30:00.620 --> 00:30:01.040
showing.

00:30:01.040 --> 00:30:03.100
I'm not going to describe that code.

00:30:03.100 --> 00:30:07.780
If the slides don't work, I don't know what I would do if my slides didn't work, but anyway.

00:30:08.460 --> 00:30:09.040
So, yeah.

00:30:09.040 --> 00:30:13.600
One, one other, piece of advice that I want to emphasize is Sean out there says,

00:30:13.600 --> 00:30:16.020
I always take three slow breaths before I start talking.

00:30:16.020 --> 00:30:18.340
Try to talk slow and smooth for the first minute.

00:30:18.340 --> 00:30:19.540
That's really good advice.

00:30:19.540 --> 00:30:25.940
And you know, we, your body reacts to stressful situations like this in weird ways, right?

00:30:25.940 --> 00:30:28.960
Like you think your body's like, you're going to be eaten by a bear.

00:30:28.960 --> 00:30:33.260
If you like say something wrong, like, no, you won't be eaten by a bear, but you know,

00:30:33.260 --> 00:30:34.580
you, your heart does race.

00:30:34.660 --> 00:30:37.840
And a lot of times, especially when you're new, it's easy to perceive that as like, oh

00:30:37.840 --> 00:30:38.880
my gosh, I'm so nervous.

00:30:38.880 --> 00:30:39.900
I hope I don't screw up.

00:30:39.900 --> 00:30:46.060
But an equal interpretation, viable interpretation that would be, I'm really excited.

00:30:46.060 --> 00:30:51.680
Like my body's going like really those butterflies in my stomach are like, I am psyched to do

00:30:51.680 --> 00:30:51.920
this.

00:30:51.920 --> 00:30:55.260
And so I just convinced myself rightly or wrongly kind of lie to myself.

00:30:55.260 --> 00:30:59.340
Like, well, if you feel nervous, that's because you're getting excited and you're just about

00:30:59.340 --> 00:31:00.200
to do something awesome.

00:31:00.200 --> 00:31:01.620
So, you know, get ready for it.

00:31:01.620 --> 00:31:01.820
Right.

00:31:01.860 --> 00:31:03.420
Rather than, oh my gosh, I'm nervous.

00:31:03.420 --> 00:31:04.360
I'm going to make a mistake.

00:31:04.360 --> 00:31:06.700
So I think it's okay to lie to yourself in that regard.

00:31:06.700 --> 00:31:11.480
I also, I've been like, I don't want to go over.

00:31:11.480 --> 00:31:14.480
I don't think anybody's going to be mad if you go under.

00:31:14.480 --> 00:31:19.780
So I, my personal, I personally, if it's 25 minute talk, I practice it in 20 minutes.

00:31:19.780 --> 00:31:20.540
Absolutely.

00:31:20.540 --> 00:31:21.980
It's easy to expand.

00:31:21.980 --> 00:31:23.560
It's hard to shrink in real time.

00:31:23.560 --> 00:31:27.460
And also if you, if you're done early, nobody's going to complain about that.

00:31:27.720 --> 00:31:32.040
But also, also if something goes wrong at the beginning and you have trouble with your,

00:31:32.040 --> 00:31:36.160
the, the video setup, you're still, you still have enough time to finish it.

00:31:36.160 --> 00:31:37.700
So I think that's cool.

00:31:37.700 --> 00:31:41.700
The other, the other thing is pauses within.

00:31:41.700 --> 00:31:47.360
I just keep, I just talk constantly and I don't, I have to remind myself if I'm showing something

00:31:47.360 --> 00:31:51.940
that I think is going to be shocking, let people take a second to be shocked by it.

00:31:51.940 --> 00:31:57.700
And if I, and if people laugh, take a moment and let them laugh before you move on.

00:31:57.700 --> 00:31:58.480
on to the next thing.

00:31:58.480 --> 00:31:59.340
So yeah.

00:31:59.340 --> 00:31:59.820
Yeah.

00:31:59.820 --> 00:32:00.300
I embrace it.

00:32:00.300 --> 00:32:00.880
Absolutely.

00:32:00.880 --> 00:32:01.340
Very good.

00:32:01.340 --> 00:32:01.820
Cool.

00:32:01.820 --> 00:32:03.020
And good article, Sebastian.

00:32:03.020 --> 00:32:03.460
Okay.

00:32:03.460 --> 00:32:05.440
Well, those are our topics.

00:32:05.440 --> 00:32:06.940
Do you have anything extra for us?

00:32:06.940 --> 00:32:08.280
I sure do.

00:32:08.280 --> 00:32:09.220
I got a few things.

00:32:09.220 --> 00:32:16.000
I finally got that CDN Python web apps that fly with CDN's course published and online.

00:32:16.000 --> 00:32:20.220
Like I said that I would, but now I officially have it up so people can go check that out.

00:32:20.220 --> 00:32:20.880
It's super fun.

00:32:20.880 --> 00:32:24.940
Speaking of releases, Django 4.2 was released last week.

00:32:24.940 --> 00:32:27.620
Also a one day before Python 3.11.3.

00:32:27.620 --> 00:32:35.520
Major highlights include Psycho PG version three support, comments on columns and tables, support

00:32:35.520 --> 00:32:40.000
for asynchronous streaming responses and async interfaces related to managers and models.

00:32:40.000 --> 00:32:42.620
So you can go check that out.

00:32:42.620 --> 00:32:44.020
If you're doing the Django.

00:32:44.020 --> 00:32:46.360
Also, it's a LTS release.

00:32:46.360 --> 00:32:46.760
So.

00:32:46.760 --> 00:32:47.980
Oh yeah.

00:32:47.980 --> 00:32:48.700
That's important.

00:32:48.700 --> 00:32:49.100
Yeah.

00:32:49.100 --> 00:32:53.760
It has been designated a long-term support LTS release, which means it will be around

00:32:53.760 --> 00:32:54.260
for three years.

00:32:54.260 --> 00:32:54.720
All right.

00:32:54.720 --> 00:32:55.540
That's it for my extras.

00:32:55.540 --> 00:32:56.300
You?

00:32:56.300 --> 00:32:58.300
No, no extras this time.

00:32:58.300 --> 00:32:59.340
Oh, I forgot.

00:32:59.340 --> 00:33:00.500
I realized that I forgot.

00:33:00.500 --> 00:33:02.200
There's a lamp in the background.

00:33:02.200 --> 00:33:02.760
That's new.

00:33:03.840 --> 00:33:11.220
I had a big Easter party and the lamp got moved in here to save space in the rest of the house.

00:33:11.220 --> 00:33:12.040
I forgot to move that.

00:33:12.040 --> 00:33:14.260
Because why wouldn't you cram it into your office?

00:33:14.260 --> 00:33:15.280
Why not?

00:33:15.280 --> 00:33:20.820
I had a lovely experience where we had to remodel the inside of our garage, basically do a bunch

00:33:20.820 --> 00:33:21.520
of drywall and stuff.

00:33:21.520 --> 00:33:22.660
And so everything had to come out.

00:33:22.660 --> 00:33:26.660
So pretty much the entire garage moved up into my office into a mountain of junk behind me.

00:33:26.660 --> 00:33:27.620
It was awesome for a while.

00:33:27.620 --> 00:33:29.380
I'm very glad to have that mostly gone.

00:33:29.380 --> 00:33:29.780
Yeah.

00:33:30.780 --> 00:33:32.360
Well, how about a joke?

00:33:32.360 --> 00:33:33.100
Yeah.

00:33:33.100 --> 00:33:34.100
All right, then.

00:33:34.100 --> 00:33:36.040
This one comes from Programming Humor.

00:33:36.040 --> 00:33:42.480
And we are in this time of a thousand flowers blooming AI revolution.

00:33:42.480 --> 00:33:43.840
See where it goes.

00:33:43.840 --> 00:33:48.740
You know, we've got ChatGPT, got MidJourney, got StableDiffusion.

00:33:48.740 --> 00:33:53.680
And it seems like everyone is plugging AI into their tools.

00:33:53.680 --> 00:33:57.660
And email, copywriting, all those, there's a bunch of things.

00:33:57.780 --> 00:34:03.240
Like Notion, for example, you can get an AI plugged in to help you write your app, right?

00:34:03.240 --> 00:34:05.920
And so here, this is like two views.

00:34:05.920 --> 00:34:09.880
People send an email to each other, a couple of coworkers on one side, a couple on the other.

00:34:09.880 --> 00:34:12.000
And they don't know about each other, right?

00:34:12.000 --> 00:34:15.240
The first one is just one bullet point.

00:34:15.240 --> 00:34:17.280
You could see like a dot and a line.

00:34:17.280 --> 00:34:18.320
There's like one line.

00:34:18.320 --> 00:34:20.920
And this person's bragging to their coworker.

00:34:20.920 --> 00:34:23.960
AI turns this single bullet point into a long email.

00:34:24.060 --> 00:34:25.220
So I can pretend I wrote it.

00:34:25.220 --> 00:34:26.040
Boom, send.

00:34:26.040 --> 00:34:29.600
The person who receives it is talking happily to their coworker.

00:34:29.600 --> 00:34:32.740
He says, AI makes a single bullet point out of this long email.

00:34:32.740 --> 00:34:34.260
So I can pretend I read it.

00:34:34.260 --> 00:34:38.000
Oh, here we are.

00:34:38.000 --> 00:34:38.880
Yeah.

00:34:38.880 --> 00:34:41.340
When you talk about stuff getting sent over, how does that work?

00:34:41.340 --> 00:34:43.220
Well, first you connect over TCP.

00:34:43.220 --> 00:34:44.500
And then there's DNS.

00:34:45.120 --> 00:34:46.460
And then there's TLS.

00:34:46.460 --> 00:34:48.440
And then there's the HTTP layer.

00:34:48.440 --> 00:34:52.400
And now there's like this AI translation layer that rewrites it.

00:34:52.400 --> 00:34:56.020
But it's kind of the opposite of efficiency.

00:34:56.020 --> 00:35:01.500
Instead of sending the single bullet point, it expands it to a whole paragraph, sends it,

00:35:01.500 --> 00:35:02.640
and then shrinks it back down.

00:35:02.640 --> 00:35:04.080
It's the opposite of compression.

00:35:04.080 --> 00:35:06.140
AI is kind of freaking me out.

00:35:06.140 --> 00:35:08.840
I hope that I still have a job five years from now.

00:35:08.840 --> 00:35:10.860
But anyway.

00:35:11.460 --> 00:35:14.320
Well, we'll ask ChatGPT about that later.

00:35:14.320 --> 00:35:15.400
Yeah.

00:35:15.400 --> 00:35:16.420
At some point.

00:35:16.420 --> 00:35:18.660
And you know more about this than I do.

00:35:18.660 --> 00:35:25.880
So at some point, you're going to be like, can I get an AI, Brian, to host the podcast with me?

00:35:25.880 --> 00:35:26.880
Yeah.

00:35:26.880 --> 00:35:31.320
I'm already digging my bunker for when Skynet activates, as Sean says.

00:35:31.320 --> 00:35:32.940
Yeah.

00:35:32.940 --> 00:35:34.380
Anyway.

00:35:34.380 --> 00:35:35.400
Start growing carrots.

00:35:35.400 --> 00:35:36.800
Yeah, exactly.

00:35:36.800 --> 00:35:38.040
Find some goats.

00:35:38.040 --> 00:35:41.360
No, actually, I'm going to go right to it.

00:35:41.360 --> 00:35:42.740
Go back to writing by that code.

00:35:42.740 --> 00:35:44.120
But as always.

00:35:44.120 --> 00:35:45.860
ChatGPT, make me a goat.

00:35:45.860 --> 00:35:49.780
How do I start a goat farm and live off grid?

00:35:49.780 --> 00:35:51.360
Fantastic.

00:35:51.360 --> 00:35:51.660
All right.

00:35:51.660 --> 00:35:53.020
Well, Brian, thanks, as always.

00:35:53.020 --> 00:35:53.720
Thanks.

00:35:53.720 --> 00:35:54.620
Talk to you later.

00:35:54.620 --> 00:35:55.060
Bye.

00:35:55.060 --> 00:35:55.500
Bye.

00:35:55.500 --> 00:35:56.760
And thanks to everyone out in the audience.

