Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 331, recorded April 11th, 2023.
And I'm Brian Okken.
And I'm Michael Kennedy.
So I want to thank everybody that's showing up on the live stream and watches it on YouTube as well.
I know a lot of people just listen to the audio, which is great. Thank you.
But sometimes it's nice to pop over and join the chat.
We usually record it Tuesdays at 11 Pacific time.
So if you can catch it, great.
If not, we enjoy your presence anyway.
I also want to thank InfluxDB for sponsoring this episode.
We'll hear more about them later in the show.
But first, what do you got for us, Michael?
How about we make an application?
Yeah, let's do it.
Let's do it.
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.
Like we've got all these different choices.
We've got poetry.
We've got PipDMV.
We've got Hatch.
We've got straight Pip.
We've got PipDual.
So I had a bunch of folks on the show to talk about that.
And Paul mentioned like, oh, MakeApp is something that I'm really dreaming about right now.
That might be a nice way to think about how we work with packages.
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.
So I didn't I wasn't really aware of this before I dug into it.
But MakeApp, it's a little bit like cookie cutter and those kinds of things.
But it'll guide you through creating your application as well as helping you test certain things.
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?
That's already taken on PyPI as a package.
So I'm never going to be able to publish that.
I'm going to have to rename it.
I might find that out later along the way.
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.
Right.
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.
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.
And I don't think we have that on ours.
And I'm wondering how much people care.
Like, that's work that Michael has to do.
But a bunch of people are like, yes, please.
Then let me know.
Anyway, that's how they shared it with me.
And I figured out what we're talking about.
So this is an app that simplifies creating applications, rolling them out and publishing them.
And what it does is it will make a skeleton for your new application in one command.
That's kind of the cookie cutter equivalent.
Although there's absolutely fewer templates or project types, right?
There's like five or six project types instead of five or 6,000 for a cookie cutter.
So that's a consideration there.
But then it'll automatically create a Git repository for you.
I'm guessing just locally and you've got to link it to GitHub or wherever.
As I said, it'll check whether the application name is available on PyPI.
You pick your layout.
And then it also allows you to sort of manage your app over time.
So you can easily add entries like here's a new item or here's a breaking change to your changelog.
Oh, cool.
It'll publish your application.
You know, push to source control, push to PyPI, those kinds of things in a single command.
I don't know if I'd use that.
I think I kind of just am always pushing to GitHub.
I don't really wait until I'm ready to publish something.
Like I'm pushing like stuff.
I always kind of feel bad.
I think GitHub try like, why does this person commit so often?
But it's just like, you know what?
I'm done with this little thing.
I want to save it.
What if I'm on my other computer?
I don't want to have to try to remember how to get it back.
Anyway, that's a cool feature.
I'm not sure I would use.
So when you create a new one, you say make app new and you give it a name.
You give it a location and other things like what is the name or what's the author?
And you can also take things like the author, which you would put on the CLI.
You can put that into a config file and say, you know what?
It's me.
It's always me.
When I'm logged into this user profile, my name is still the same as it was before.
Right.
So don't ask me about that.
Right.
So that's kind of cool that you can do that.
It'll create templates for things like a click powered app, something based on pytest.
It'll let you create a pytest plugin project.
That's intended to be a pytest thing.
Django web app or this thing called Web Scaff, which is also a scaffolding thing for web
apps.
And then when you're ready to publish it, you say make app release and that'll bump a version
or you can say make app release increment the major version.
Like that's a major change that you want to make.
Right.
So this automatically bump the version number, tag it in source control, push the source
and the tag up to GitHub or GitLab or wherever you're acting on and publish it to PyPI all
in one fail swoop.
Then again, if you want to make changes, you can say make app change.
And then you put the text of that change and it'll put that into changelog in the right
place.
So you put like quote like here, it's plus new change command implemented or whatever.
And it has certain prefixes like plus for a new feature edition, exclamation mark for important
change, minus for a deprecation or star for some minor change.
Right.
Pretty cool.
And then on top of that, you it comes with autocomplete in your shell.
So if you're using bash or oh my z shell or something like that and you want to hit tab and have
it know about make app, what are its commands right after that, then you can put something
into your profile, your RC file, and it will activate the autocomplete, which is cool.
That's cool.
Yeah.
Anyway, so people can check this out.
Comes lightly recommended from that episode.
But yeah, pretty cool.
It looks interesting.
Worth all.
Nice.
Well, one of the things I've been thinking about and looking forward to is Python 312, actually.
So 312 is not here yet, but it is kind of here, right?
So it's a yearly development cycle.
Python's on.
Where are we at right now?
Well, we just had, so we just passed Alpha 7.
So Alpha 7 was released recently.
I don't think it was right on the list.
That many days ago, yeah.
Yeah.
But yeah.
So 312 Alpha 7.
And it's nice that they've published the schedule, the expected schedule.
So we've got up through a couple more months of four or five months.
Bad at math.
And this early in the morning of betas.
And then candidate releases and then the final in October, which is awesome.
So why am I bringing this up?
I'm bringing it up because a couple things happened recently.
So the Alpha 7, if we took the release notes, there's some fun stuff in here.
And I'm not sure when this came in.
But the thing that I really am looking forward to in 312 is, well, there's some stuff that isn't really mentioned here.
But I think we're going to get more speed improvements, which I'm pretty excited about.
But there's some cool stuff with, oh, this is just the major new features.
We've got even more improved error messages, which are great.
And that's one of the things I wanted to talk about.
A whole bunch of great stuff.
But these are pretty cool.
Also, invalid backslash escape sequences now worn for syntax warning and deprecation warning.
That's kind of neat.
So in the What's New article for 312, this does have some examples of the new error messages.
So these are really kind of neat things.
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?
So did you forget to import?
Those are nice error messages.
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.
There's self member variables.
So there's a did you mean self.black.
Nice example.
Syntax error from, and I've done this a lot, of import from messing this up.
So it's import something from this other thing.
It's not that.
You're supposed to say from something, import something.
And the syntax error now says, did you mean to use this instead?
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?
But anyway.
Yeah, some other like import error messages, some cleanup.
More specific error messages, always exciting.
The other, there's always new exciting things in new versions.
One of the.
Off of that bit, I just want to bring a little audience feedback.
Sean Tibor from Teaching Python out there says, hooray for better error messages.
And Pamela Fox says, yay, I've already been benefiting from 3.11 error message improvements.
Some of which requested my, I requested myself in the Python forum.
Tell Pablo what you need.
Yes, I think this is really great.
It's certainly getting nice to have those, especially for people getting started in Python to be less confused.
Yeah.
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.
And if the error message can help me solve something quicker.
That's a, that's a nice win.
So just one of the announcements that came out recently.
So I was, this is like tight schedule.
So we've only got, we're on alpha seven.
We've got no more alphas.
We've got some betas coming.
But I thought we were no new feet, no new features beyond the beta one.
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.
It's a 312.
It just got approved.
And it's, I'm pretty, I think I'm excited about it.
I'm not sure.
I'm, I don't know if you know much about it, Michael, but it says here.
Okay.
So I'm just going to quickly summarize the abstract.
So, CPath on users, can run multiple interpreters, interpreters in the same process.
however, interpreters in the same process always shared the same global state.
And so one Gil, it is a source of bugs.
so, and, with a growing impact as more people use the feature, furthermore sufficient isolation would facilitate true multicore parallelism.
Ooh, I like multicore parallelism.
so I think we want this.
And, so there's outlines in the proposal.
So we're going to have, they're moving the data surrounding the Gil into the per interpreter data.
and I think I'm excited about it.
But then, then later on it does say, there's a, there's a reference to like for how do we teach this?
and it mentions, oh, I think I lost the link.
Oh, this is an advanced feature meant for a narrow set of users of the C API.
So I'm not sure how this will affect normal people, in the future, but it still thinks a good thing.
Do you have any idea, Michael?
I have no idea.
Yeah.
I think that the trick is how do you start a new interpreter?
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?
Yeah.
asyncio, it's just one thread.
It doesn't do any of that.
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.
And, you know, like I've got 32 cores.
Why can I only use one of them?
I have this work I want to do.
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.
But then it also could be interesting for web consumer, web developers and APIs and stuff, right?
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.
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?
That's the, why do you do that?
Well, because you don't want to be subjected to the GIL for among other reasons, but that's a primary reason.
Cause you can't really do it in parallel, but if you had a bunch of processes that are independent.
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.
Like interpreter isolation equals true when you create the thread or whatever.
And then, then when you run that work, there's two things that happen.
One, it should run in true parallel form, but let the OS, it'll be an OS thread.
The OS will schedule that on its own course, but then you also will have to actually care about lock.
Like other languages like C and C# and stuff, you do parallels.
And you're all about, okay, when do I lock this?
How do I lock that?
How do I unlock it?
What about a deadlock?
And then Python, you're like, eh, kind of the GIL will help us a lot.
Like that's gone, right?
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.
So anyway.
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.
And they were running into problems because of this, the GIL is global sort of a thing.
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.
So it's increased isolation of the per-interpreter stuff, including the GIL.
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.
So there's some people making some cool things that'll continue.
So yay.
Anyway.
I'm very excited for this.
I'm excited for this.
I'm excited for the no-gil Python.
I think it's one of these sort of chicken and egg type issues.
Be like, ah, I don't really need the threading stuff.
I don't really use it because it's Python.
And a lot of people are like, well, there's no point in trying it.
So there's just not like a culture of really leveraging the hardware outside of these very specialized C APIs or certain Rust scenarios.
But then when you do see them, you're like, oh, it's like 50 times faster.
Like, hmm, wouldn't it be kind of nice to go 50 times faster sometimes if you might need it?
Or use half as much RAM on a server because you don't need to scale out as much for the gill?
But like you said, in other languages, we have to freak out about locks or using a message queue system for different processes instead.
And we don't have to deal with that now.
So I think it's good that we're taking slow steps towards it.
So it's good.
Anyway.
Yeah, no, I think this is good.
I talked to Eric Snow about it long ago.
It sounds like it's created better data isolation within the CPython source code anyway.
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.
And this refactoring, I think, has also made it a little bit better inside.
Yeah.
Okay.
Cool.
All right.
Do you know what else is cool?
Databases.
Yeah.
Databases are great.
And we want to thank InfluxDB for sponsoring this episode.
InfluxDB is a database purpose built for handling time series data at massive scale for real-time analytics.
Developers can ingest, store, and analyze all types of time series data, metrics, events, traces in a single platform.
So, dear listener, let me ask you a question.
How would boundless cardinality and lightning-fast SQL queries impact the way you develop real-time applications?
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.
For developer efficiency, InfluxDB helps you create IoT, analytics, and cloud applications using time-stamped data rapidly and at scale.
It's designed to ingest billions of data points in real-time with unlimited cardinality.
InfluxDB streamlines building once and deploying across various products and environments from the edge on-premise and to the cloud.
Try it for free at pythonbytes.fm/influxDB.
The link is also in your show notes.
Thanks, Influx, for supporting the show.
Very, very awesome.
Thank you for supporting the show.
Now, Brian, you live in the future in this world of Python 3.12.
Yeah.
I live in the present, as in just a few days ago, Python 3.11.3 was released.
How about that?
Oh, cool.
Yeah.
I don't know.
My feelings a lot of times when it's one of these point releases, maybe it's worth upgrading.
Sometimes there's something cool in there.
Sometimes not.
This one, you probably want to get in there and check it out.
Because number one, and this is not very common in the Python world, that there's a security update.
So they updated the underlying OpenSSL version for Windows and macOS to 1.1.1 T.
And we talked about like semantic version and calendar version.
This one's the T versioning style to address, let's see, 1, 2, and 3 CVEs.
And if you go pop over there to read a bit about that, it says severity high.
Okay.
That doesn't sound absolutely incredible.
Another one is moderate.
And another one is moderate, right?
So those are probably worth paying attention to then.
So that's, I just realized like 20 minutes ago that actually, I know it came out last week,
but I just noticed it this little bit ago.
And because of the security stuff, I decided I'm kicking out something I was going to cover before
and putting this one in here.
So that's pretty important.
Yeah.
I just want to be a little timely on that.
So there's also some other things, you know, there's always a few things like,
I wonder if that, that might be causing a problem.
For example, stack top value on tracing entries to avoid corruption on the garbage collection.
I'm like, I don't know that I do that, but maybe things that I use do that.
And I don't want a corrupted garbage collector, right?
That would be bad.
Who knows if, like, if it lose, if it leaks data that's bad,
but if it goes and collect something that's not bad, that's really going to be a problem.
Overflow when creating very large dictionaries causes a crash when deallocating nested filter objects.
Seg fault from a race condition during garbage collection.
All right.
So there's enough stuff in here that I'm like, you know what?
This thing's getting an update.
All right.
So those are the cores and built in.
And then there's a bunch of things, a bunch of improvements to the standard library.
People can check out, right?
So it's just always interesting how much, how many things get changed, even though you think,
like, eh, standard library is kind of static and fixed, but, like, fixed dunder weak ref descriptor
generation for custom data classes.
And, you know, for binary mode, file hook compressed doesn't set the encoding, even if the value is none,
and so on.
So just a bunch of little things getting fixed.
But the reason I put it to the top of the list is the security stuff.
Yeah.
One of the security things that's interesting to me, I haven't looked into that yet, is that subprocess,
Popen thing.
A lot of people use Python to coordinate other activities on, you know, like DevOps and systems
admin and stuff like that.
So security patches around that, you probably should pay attention to.
So that's pretty interesting.
Absolutely.
Yeah.
Specifically for Windows users, right?
So now it uses a safer approach to find cmd.exd when launching with shell equals true.
Yeah.
And I can't imagine, like, I didn't even think that if you found the wrong command, you'd be
passing all your stuff to the wrong shell.
Some evil cmd?
Yeah.
Yikes.
Yeah.
Okay.
Cool.
All right.
Well, that's that one.
What's your last?
I want to do something fun because I'm looking forward to PyCon coming up right pretty soon.
Are you pretty excited about that?
I am excited.
I think it's approaching faster than I'm ready to prepare for being there for all that time
and getting the most out of it.
But yeah, I'm excited.
Yeah.
So there's an article.
Who's this?
By Sebastian Witowski, How to Make a Great Conference Talk.
And I kind of like this.
There's some really great advice in here.
So I know it's kind of late.
A lot of people that are speaking about people speak at all sorts of conferences, though.
So it's good.
But if you're speaking at PyCon, there's a couple of things I want to highlight.
You probably already have your slides set up, hopefully.
And no, you've already been accepted.
So you don't need to worry.
You can maybe skip the benefits of speaking at a conference.
But I highly recommend people try.
I think there's benefits of even submitting and trying to get an idea together, even if you
don't present it, because it's nice.
Anyway, then there's call for proposals, research preparation slides.
There's a whole bunch of stuff in here that's great.
I want to skip to the end.
So you're in the middle of maybe trying to do rehearsing.
So I say skip to this part, the live demos part and rehearsing and what to do on the day
of the presentation and make sure you review these, because these are great.
And the greatest advice I've ever seen for live demos is, do you really need a demo?
We've probably all, I don't know if anybody's, anybody that's tried to do a live demo has
had one not go as they expected.
Even if it turned out okay, it's a stressful thing.
So especially if you are new to presenting, I would say skip the live demo.
It's cool when it works, when it doesn't.
The other thing is, if you're going to do it anyway, and something goes wrong, the Python
people in the audience are not going to heckle you or anything like that.
We're a nice bunch of people and we've all had it happen to us.
So you're not going to, you shouldn't feel too embarrassed, but prepare for it.
Prepare for, what are you going to do if the wifi goes out?
Things like that.
So, and also, and also I just don't do them anymore because, because, because they've always
gone wrong for me.
Okay.
Moving on at the very least practice them.
Rehearsing.
I see a lot of people and I used to be like this to forget to rehearse.
The rehearsing is the most important part.
And I can't remember where it is in here, but it's good advice of taking, practicing the
first five minutes, making sure you've like got the five minutes, first five minutes, last
five minutes memorized.
You can like, you can like, you know exactly what you're going to say because it's hard.
If you think you kind of know what you're going to say, when you get up there, it's blank
page.
You have to, how do you start?
So knowing how to start and knowing how to finish is a, is a good thing.
I, so practice.
And I also see, I've seen people practice quietly and I've done this before in your head, practicing
in your head.
Doesn't count.
Do it out loud and do it standing.
You're going to be standing at a conference.
So don't sit and practice it.
Stand up and practice it.
I was at the lot at, Pike Cascades.
I was in the hotel room and what did I use for a standing desk?
The ironing board, the ironing work where it's great in a hotel for, for your standing
desk to practice it.
Anyway, practice your, your talk.
And I take one of these.
So I'm going to have a link in this.
I'm going to take, take a look at this in a second, but, one of these, time
timers.
So, there it's 36 bucks for a little tiny timer.
So what's the big deal?
you can visually see what's going on and I love these things.
and I, that's what I used to practice with.
and to, and the other comment in here was to, pay attention to where you are in your
slides at different points, which is a great idea.
Like at 15 minutes or 10 minutes, 20 minutes, whatever, where are you approximately in your
slides?
The reason for that is while you're doing your presentation, if you're at the 10 minute mark
and you're already halfway through your talk, slow down a little bit.
If you're at the 10 minute mark and you've only gone through the first three slides,
you're going to have to speed up a little bit or else you're not going to get into it.
Or skip something.
Or, yeah, or skip something.
know what you're going to skip, but practice it.
and then some great advice for day of the presentation.
don't drink too much water or your coffee.
You're going to want to, but don't, because, but drink, drink some, make sure you're
hydrated, but not too hydrated because you know, so anyway, some great advice here,
uh, packing checklist, make sure you have extra chargers.
I, I've got like the little dongle thing because conferences usually have whatever you need to
hook up to, but I don't trust that.
So I make sure that my laptop can get to the HDMI, can get to, yeah, whatever it
needs to, extra charger if you've got one.
So just prepare.
Yeah.
It's a good article.
Sebastian's a great presenter.
So yeah, he's done a bunch.
I, I also have some thoughts.
I would say regarding the live demo part, I'm, I'm on board with Marco.
Like I think not that one, this one that I find talks with live demos.
He says more exciting.
I say more, more real, right?
Like if, and I think it applies an important role.
Like there's certain things you show picture, picture, picture.
You're like, Oh, that's cool.
But I bet that's really hard.
But if you show, actually there's these three lines that I wrote in a minute in front of
you.
And now the thing happens like, Oh, that's totally approachable.
I could do it.
And I think it just sets a different tone.
I don't think every talk has to have it.
Like, there's storytelling talks and like big picture talks and like those don't need
it.
But if you're trying to talk about as focused technology, I think it's almost table stakes.
So I disagree a bit with Sebastian on that.
Okay.
However, I, that said you can go into it with a blank file and get confused.
You can get distracted.
You can make mistakes.
You can forget things.
So two things leave a lot.
If you do do it, leave lots of breadcrumbs.
Like maybe put a comment, like here, I want to create a flask app here.
I want to make a view that responds to this URL.
And like, it might be hard to remember, do all the steps, but if you see, make the flask
app, you're like, Oh, I don't remember how to do that.
Create a view that call it responds to this URL with like the actual variable passing thing.
And Oh, okay.
Well, that's easy.
We'll drop that.
Right.
Like you can make it hard on yourself or easy on yourself.
And then second, have a backup.
Pample says at, at his research lab, they were actually saying, keep a spare laptop.
I don't know necessarily about that, but I would at least have a finished version that
you're like, Oh my gosh.
Well, let me pull this up and show you.
Then we'll talk like some kind of fallback.
Right.
There's like levels of live demo.
Do I say file new project and we write a thousand lines or do I strategically highlight the important
bits and not distract people with like oil and get potentially lost?
Right.
I don't know.
So I think one of the, one of the halfway betweens is to script your demo.
And there's a tool that the Sebastian links to called demo magic.
And what you do with this is basically you, you have these commands of a PEI or PE and, and
other things and wait for prompts and whatever.
And these, what happens is you, you're demo, it looks like you're demoing, but all you're
doing is hitting enter to go to the next thing.
and, and then people can see in real time what it looks like, but they don't have to wait
for you to type it just sort of, you know, yeah.
It kind of types it out as if it's doing.
Yeah.
Absolutely.
Yeah.
So this is kind of nice.
I also, one of the things of all conference advice, Sebastian does talk about this,
but keep it in mind.
This is what works for him.
I disagree with some of it and, and you disagree with some of it and be, it's okay if you disagree
with it because it works different for everybody.
like one of the exam, one of his advice, pieces of advice also is to write out your talk
before you write your slides.
I never do that.
because I'm writing my slides in Markdown.
I'm thinking about what I'm going to show while I'm, while I'm talking and while I'm thinking
about the topic.
So my, my slides really are kind of outlining to begin with.
And, and then I, you know, I can put junk in there and cut it out, whatever.
also a code, I don't know how to do, and it says you should be able to do your talk without
slides.
I just, I don't think that's true.
This is a, for, for the kind of demo or kind of stuff I'm doing, there's a lot of code I'm
showing.
I'm not going to describe that code.
If the slides don't work, I don't know what I would do if my slides didn't work, but anyway.
So, yeah.
One, one other, piece of advice that I want to emphasize is Sean out there says,
I always take three slow breaths before I start talking.
Try to talk slow and smooth for the first minute.
That's really good advice.
And you know, we, your body reacts to stressful situations like this in weird ways, right?
Like you think your body's like, you're going to be eaten by a bear.
If you like say something wrong, like, no, you won't be eaten by a bear, but you know,
you, your heart does race.
And a lot of times, especially when you're new, it's easy to perceive that as like, oh
my gosh, I'm so nervous.
I hope I don't screw up.
But an equal interpretation, viable interpretation that would be, I'm really excited.
Like my body's going like really those butterflies in my stomach are like, I am psyched to do
this.
And so I just convinced myself rightly or wrongly kind of lie to myself.
Like, well, if you feel nervous, that's because you're getting excited and you're just about
to do something awesome.
So, you know, get ready for it.
Right.
Rather than, oh my gosh, I'm nervous.
I'm going to make a mistake.
So I think it's okay to lie to yourself in that regard.
I also, I've been like, I don't want to go over.
I don't think anybody's going to be mad if you go under.
So I, my personal, I personally, if it's 25 minute talk, I practice it in 20 minutes.
Absolutely.
It's easy to expand.
It's hard to shrink in real time.
And also if you, if you're done early, nobody's going to complain about that.
But also, also if something goes wrong at the beginning and you have trouble with your,
the, the video setup, you're still, you still have enough time to finish it.
So I think that's cool.
The other, the other thing is pauses within.
I just keep, I just talk constantly and I don't, I have to remind myself if I'm showing something
that I think is going to be shocking, let people take a second to be shocked by it.
And if I, and if people laugh, take a moment and let them laugh before you move on.
on to the next thing.
So yeah.
Yeah.
I embrace it.
Absolutely.
Very good.
Cool.
And good article, Sebastian.
Okay.
Well, those are our topics.
Do you have anything extra for us?
I sure do.
I got a few things.
I finally got that CDN Python web apps that fly with CDN's course published and online.
Like I said that I would, but now I officially have it up so people can go check that out.
It's super fun.
Speaking of releases, Django 4.2 was released last week.
Also a one day before Python 3.11.3.
Major highlights include Psycho PG version three support, comments on columns and tables, support
for asynchronous streaming responses and async interfaces related to managers and models.
So you can go check that out.
If you're doing the Django.
Also, it's a LTS release.
So.
Oh yeah.
That's important.
Yeah.
It has been designated a long-term support LTS release, which means it will be around
for three years.
All right.
That's it for my extras.
You?
No, no extras this time.
Oh, I forgot.
I realized that I forgot.
There's a lamp in the background.
That's new.
I had a big Easter party and the lamp got moved in here to save space in the rest of the house.
I forgot to move that.
Because why wouldn't you cram it into your office?
Why not?
I had a lovely experience where we had to remodel the inside of our garage, basically do a bunch
of drywall and stuff.
And so everything had to come out.
So pretty much the entire garage moved up into my office into a mountain of junk behind me.
It was awesome for a while.
I'm very glad to have that mostly gone.
Yeah.
Well, how about a joke?
Yeah.
All right, then.
This one comes from Programming Humor.
And we are in this time of a thousand flowers blooming AI revolution.
See where it goes.
You know, we've got ChatGPT, got MidJourney, got StableDiffusion.
And it seems like everyone is plugging AI into their tools.
And email, copywriting, all those, there's a bunch of things.
Like Notion, for example, you can get an AI plugged in to help you write your app, right?
And so here, this is like two views.
People send an email to each other, a couple of coworkers on one side, a couple on the other.
And they don't know about each other, right?
The first one is just one bullet point.
You could see like a dot and a line.
There's like one line.
And this person's bragging to their coworker.
AI turns this single bullet point into a long email.
So I can pretend I wrote it.
Boom, send.
The person who receives it is talking happily to their coworker.
He says, AI makes a single bullet point out of this long email.
So I can pretend I read it.
Oh, here we are.
Yeah.
When you talk about stuff getting sent over, how does that work?
Well, first you connect over TCP.
And then there's DNS.
And then there's TLS.
And then there's the HTTP layer.
And now there's like this AI translation layer that rewrites it.
But it's kind of the opposite of efficiency.
Instead of sending the single bullet point, it expands it to a whole paragraph, sends it,
and then shrinks it back down.
It's the opposite of compression.
AI is kind of freaking me out.
I hope that I still have a job five years from now.
But anyway.
Well, we'll ask ChatGPT about that later.
Yeah.
At some point.
And you know more about this than I do.
So at some point, you're going to be like, can I get an AI, Brian, to host the podcast with me?
Yeah.
I'm already digging my bunker for when Skynet activates, as Sean says.
Yeah.
Anyway.
Start growing carrots.
Yeah, exactly.
Find some goats.
No, actually, I'm going to go right to it.
Go back to writing by that code.
But as always.
ChatGPT, make me a goat.
How do I start a goat farm and live off grid?
Fantastic.
All right.
Well, Brian, thanks, as always.
Thanks.
Talk to you later.
Bye.
And thanks to everyone out in the audience.