WEBVTT

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

00:00:04.920 --> 00:00:10.540
This is episode 357, recorded October 17th, and I am Brian Okken.

00:00:10.540 --> 00:00:11.520
And I am Michael Kennedy.

00:00:11.520 --> 00:00:14.400
And our show is sponsored by us.

00:00:14.400 --> 00:00:16.880
Check out Talk Python Training, of course.

00:00:16.880 --> 00:00:21.400
There's wonderful courses from Michael and other people, including myself.

00:00:21.400 --> 00:00:25.340
And Patreon supporters, of course.

00:00:25.340 --> 00:00:26.640
We love Patreon supporters.

00:00:27.780 --> 00:00:30.700
We haven't really talked to him much lately, sending out emails.

00:00:30.700 --> 00:00:31.600
I should do that more.

00:00:31.600 --> 00:00:35.480
And lastly, the complete pytest course.

00:00:35.480 --> 00:00:38.840
Please check it out if you want to learn pytest the fastest way possible.

00:00:38.840 --> 00:00:45.620
And you can connect with us on Mastodon, on Mastodon, on Fosstodon, both of those.

00:00:45.620 --> 00:00:49.180
And Michael's @mkennedy.

00:00:49.180 --> 00:00:50.780
I'm @brianokken.

00:00:50.780 --> 00:00:52.700
And the show is at Python Bytes.

00:00:52.700 --> 00:00:56.800
And you can also listen live if you head over to pythonbytes.fm.

00:00:57.080 --> 00:01:00.500
And you can watch it when we live stream, as we are right now.

00:01:00.500 --> 00:01:01.400
Absolutely.

00:01:01.400 --> 00:01:04.040
So, Michael, let's kick it off with something hot.

00:01:04.040 --> 00:01:05.440
Let's kick it off.

00:01:05.440 --> 00:01:12.000
I want to talk about a couple of, well, something I've learned from Glyph when I was at PyBay.

00:01:12.000 --> 00:01:13.080
Was that last weekend?

00:01:13.080 --> 00:01:13.480
Two weekends?

00:01:13.480 --> 00:01:14.540
Last weekend, I guess.

00:01:14.540 --> 00:01:16.140
Glyph gave a really cool talk.

00:01:16.140 --> 00:01:21.820
Some of the talks are starting to show up on YouTube, but his talk is not there yet.

00:01:21.820 --> 00:01:22.760
Or I would link to it.

00:01:22.760 --> 00:01:30.440
And it was something along the lines of like, how to program your computer with Python, which sounds silly because we're all pretty good Python programmers.

00:01:30.440 --> 00:01:32.720
Like you should think, okay, well, I could do that.

00:01:32.720 --> 00:01:34.880
But this was about, how do I automate stuff?

00:01:34.880 --> 00:01:37.040
How do I plug into things?

00:01:37.040 --> 00:01:48.840
Like how can I automate keynote to extract show notes out to put into another document or PowerPoint or, you know, things along those lines.

00:01:48.840 --> 00:01:55.480
And one of the things that he both created and talked about was this thing called Quick Mac Hotkey.

00:01:55.480 --> 00:02:01.340
Because you might want to have your Python not have a UI you're interacting with, but just be chilling in the background.

00:02:01.340 --> 00:02:03.960
And if you had a certain hotkey, it does the thing, right?

00:02:03.960 --> 00:02:04.440
Yeah.

00:02:04.440 --> 00:02:04.920
Yeah.

00:02:05.020 --> 00:02:07.760
So this Quick Mac Hotkey does that.

00:02:07.760 --> 00:02:10.000
And basically it's super simple to use.

00:02:10.000 --> 00:02:19.140
It's just a set of minimal Python bindings for macOS framework APIs using, what does it use for it to pull this off?

00:02:19.140 --> 00:02:20.740
Look through here.

00:02:20.740 --> 00:02:21.220
Oh yeah.

00:02:21.220 --> 00:02:24.400
Py OBJC, I believe is what it's using.

00:02:24.400 --> 00:02:27.020
So you just super easy to write some code.

00:02:27.020 --> 00:02:30.980
You want to have a function that's called when a keystroke is down.

00:02:31.220 --> 00:02:36.460
You just give it the decorator quick hotkey and you say the virtual key is the X.

00:02:36.460 --> 00:02:39.840
The modifier is command control option.

00:02:39.840 --> 00:02:46.240
So just hit all three of those plus X, you know, something that's most likely not going to interfere with some other behavior.

00:02:46.240 --> 00:02:47.740
And then boom, off it goes.

00:02:47.740 --> 00:02:49.420
And look how simple that code is.

00:02:49.420 --> 00:02:49.900
Isn't that nice?

00:02:49.900 --> 00:02:50.560
Yeah.

00:02:50.560 --> 00:02:51.220
Yeah.

00:02:51.220 --> 00:02:52.200
That's pretty cool.

00:02:52.200 --> 00:02:56.120
Although I don't know if I can find my command control and hotkey at the same time.

00:02:56.120 --> 00:02:57.900
But cool.

00:02:58.200 --> 00:02:58.420
Yeah.

00:02:58.420 --> 00:03:03.180
I use a Windows keyboard, unfortunately, because there's no ergonomic Mac keyboards.

00:03:03.180 --> 00:03:07.240
Like, you know, apparently Apple hates people and they want them to have RSI for the rest of their life.

00:03:07.240 --> 00:03:08.580
But doesn't they only make these?

00:03:08.580 --> 00:03:10.920
Does the window key map to the command key?

00:03:10.920 --> 00:03:11.040
Yeah.

00:03:11.040 --> 00:03:12.820
The window keys is just the command key.

00:03:12.820 --> 00:03:12.980
Yeah.

00:03:12.980 --> 00:03:13.220
Okay.

00:03:13.220 --> 00:03:15.120
So it's nothing too fancy.

00:03:15.120 --> 00:03:16.760
So there's not a lot of depth.

00:03:16.760 --> 00:03:21.440
And we got to dive into this other than how cool is it if you want to just add hotkeys here?

00:03:21.440 --> 00:03:22.180
Yeah.

00:03:22.180 --> 00:03:23.220
So off you go.

00:03:23.520 --> 00:03:23.640
Okay.

00:03:23.640 --> 00:03:26.580
So when you install it, does it just run all the time or something?

00:03:26.580 --> 00:03:29.720
I think whenever your app is running.

00:03:29.720 --> 00:03:30.320
Okay.

00:03:30.320 --> 00:03:32.260
Like, so you can see the last line of this example.

00:03:32.260 --> 00:03:33.820
It says app helper dot run event loop.

00:03:33.820 --> 00:03:34.240
Okay.

00:03:34.240 --> 00:03:37.840
So that's just like set there in the background and just wait for events.

00:03:37.840 --> 00:03:41.540
For example, it's this quick hotkey callback when somebody presses that.

00:03:41.540 --> 00:03:43.960
So one of those, though, could be exit.

00:03:43.960 --> 00:03:46.980
You know, and just, you know, I don't know how you exit the event loop.

00:03:46.980 --> 00:03:49.960
Either raise an exception or just just exit or who knows.

00:03:49.960 --> 00:03:51.400
There's got to be a way to get out of there.

00:03:51.400 --> 00:03:52.260
Reboot your computer.

00:03:52.920 --> 00:03:53.360
Exactly.

00:03:53.360 --> 00:03:54.300
It's like Vim.

00:03:54.300 --> 00:03:55.160
You're just in there.

00:03:55.160 --> 00:03:57.320
Nice.

00:03:57.320 --> 00:03:58.520
All right.

00:03:58.520 --> 00:03:59.020
Over to you.

00:03:59.020 --> 00:04:04.800
Well, I'm going to talk about command lines applications a little bit because Simon Wilson

00:04:04.800 --> 00:04:08.560
had things I've learned about building CLI tools in Python.

00:04:08.560 --> 00:04:12.020
And I really kind of like all the stuff he covered.

00:04:12.020 --> 00:04:13.260
I really like them.

00:04:13.260 --> 00:04:19.440
I mean, this isn't a super in-depth like how to write CLI tools, but some of the things like

00:04:19.440 --> 00:04:25.760
just high level when you're writing command line applications, it's good to be rather consistent

00:04:25.760 --> 00:04:30.460
with other command line applications to make it easy to use because it's going to be used

00:04:30.460 --> 00:04:32.420
by people that like CLIs, right?

00:04:32.780 --> 00:04:36.400
So a couple of options things here.

00:04:36.400 --> 00:04:39.720
Be consistent with the terms.

00:04:39.720 --> 00:04:43.780
Well, you have to kind of understand the terms, but there's commands, there's arguments, there's

00:04:43.780 --> 00:04:47.240
options and flags, and sometimes flags are options.

00:04:47.620 --> 00:04:48.220
Yeah.

00:04:48.220 --> 00:04:48.560
Anyway.

00:04:48.560 --> 00:04:53.120
So commands that have our, he's using CLI applications.

00:04:53.120 --> 00:05:00.700
So the, he actually talks about CLI and also using a cookie cutter template that he lists

00:05:00.700 --> 00:05:08.440
at click app on Simon W on GitHub, but the, or yeah, cookie cutter template to build these,

00:05:08.440 --> 00:05:09.500
which is cool.

00:05:09.500 --> 00:05:13.140
I like typer, which is built on top of CLI.

00:05:13.200 --> 00:05:18.760
So anyway, but these are, these are still good, good advice, like make sure that your

00:05:18.760 --> 00:05:23.880
options, what, you know, what options are and then make sure you have like a short character.

00:05:23.880 --> 00:05:31.600
So if you have --port also include like a dash P as a short version, because people

00:05:31.600 --> 00:05:32.640
are used to that.

00:05:32.640 --> 00:05:40.060
There's a mostly just a lot of description around making sure your flags and options and stuff

00:05:40.060 --> 00:05:40.660
are consistent.

00:05:40.660 --> 00:05:46.620
And I actually think people ought to get used to writing more CLI apps because especially

00:05:46.620 --> 00:05:52.940
for utilities for yourself and for a team, they're great because you'll use it all the

00:05:52.940 --> 00:05:55.280
time and it's, it's, you get used to it.

00:05:55.280 --> 00:05:58.400
It's easier than building a GUI application.

00:05:58.400 --> 00:06:00.480
So consistency is everything.

00:06:00.480 --> 00:06:01.800
Try to be consistent with it.

00:06:01.800 --> 00:06:04.700
One of the great things, the great advice here.

00:06:04.700 --> 00:06:08.100
So is he pay attention to your help message.

00:06:08.100 --> 00:06:16.420
So, a lot of CLI tools like typer and click kind of build a help for you so that it

00:06:16.420 --> 00:06:21.400
prints out like the options and stuff that you can, you can list, which is great, but you

00:06:21.400 --> 00:06:25.920
have to go in and add things like, put examples.

00:06:25.920 --> 00:06:31.640
So example uses of like the entire application or the entire option and how to use it.

00:06:31.820 --> 00:06:37.700
this is extremely helpful and I really appreciate it even just for myself so that,

00:06:37.700 --> 00:06:41.260
um, like six months from now I can remember how to use it, things like that.

00:06:41.260 --> 00:06:42.980
So include options in the help.

00:06:42.980 --> 00:06:48.500
And then the other thing is, the lastly, Oh, examples, examples in help.

00:06:48.500 --> 00:06:51.200
And, there's a couple other things.

00:06:51.200 --> 00:06:55.160
Oh, include the output of your help in your online documentation.

00:06:55.160 --> 00:06:56.980
And there's ways to automate that.

00:06:56.980 --> 00:07:01.760
But I think that's great to just list it because I'm looking for it when I'm looking at the,

00:07:01.760 --> 00:07:03.620
like at the bottom of the read me or something.

00:07:03.620 --> 00:07:11.340
the lastly, is if you have a CLI that's being used by other people, make sure that you

00:07:11.340 --> 00:07:16.240
version it appropriately because, because it is an API.

00:07:16.240 --> 00:07:19.700
A command line interface is, can be used by other programs.

00:07:19.700 --> 00:07:23.860
So treat it as an API, even if the other user is somebody's fingers.

00:07:23.860 --> 00:07:26.860
because if things change, people should know about it.

00:07:26.960 --> 00:07:32.500
So anyway, good, good application or a good article about building command line applications.

00:07:32.500 --> 00:07:36.520
And then his, cool cookie cutter template for click apps.

00:07:36.520 --> 00:07:37.220
It's nice.

00:07:37.220 --> 00:07:37.720
Excellent.

00:07:37.720 --> 00:07:38.160
Yeah.

00:07:38.160 --> 00:07:38.740
Nice work, Simon.

00:07:38.740 --> 00:07:42.320
A couple of pieces of real time followup here.

00:07:42.320 --> 00:07:45.040
One audience is on point today.

00:07:45.040 --> 00:07:50.140
So Kim out there says rich, rich click is also fantastic if you use click.

00:07:50.140 --> 00:07:52.320
And I definitely agree on that.

00:07:52.320 --> 00:07:58.560
So it's like click, but all the help messages and stuff are in color using, you know, rich

00:07:58.560 --> 00:08:01.120
and like little info boxes and stuff.

00:08:01.120 --> 00:08:08.700
And then Rhett who, Rhett, who was on talk Python to talk about programming, Mac apps, macOS apps

00:08:08.700 --> 00:08:16.700
highlights that, you know, this quick hockey thing sounds like a good opportunity for a rumps menu bar app.

00:08:16.700 --> 00:08:17.900
So rumps is awesome.

00:08:17.900 --> 00:08:23.860
I was actually thinking of adding this hockey thing exactly for one of my rumps menu bar apps,

00:08:23.860 --> 00:08:29.900
which is just an unfair level of easy for building a Mac app that just runs in your menu bar.

00:08:29.900 --> 00:08:30.740
Oh, cool.

00:08:30.740 --> 00:08:30.980
Yeah.

00:08:30.980 --> 00:08:32.560
We've talked about that, but it's been a while.

00:08:32.560 --> 00:08:34.640
It has been a while, but you've got it for me.

00:08:34.640 --> 00:08:36.960
I've got to go up and find it and like, make it do the thing.

00:08:36.960 --> 00:08:37.800
I'm like, you know what?

00:08:37.800 --> 00:08:38.660
A hot key.

00:08:38.660 --> 00:08:39.360
Oh yeah.

00:08:39.360 --> 00:08:40.080
Here we go.

00:08:40.080 --> 00:08:42.120
Now it's on now.

00:08:42.120 --> 00:08:43.160
It's going to the next level.

00:08:43.160 --> 00:08:44.220
So yeah.

00:08:44.220 --> 00:08:44.480
Yeah.

00:08:44.480 --> 00:08:45.000
Super cool.

00:08:45.000 --> 00:08:45.380
All right.

00:08:45.380 --> 00:08:47.840
That's not what I want to talk about, but some good real time followup.

00:08:47.840 --> 00:08:49.400
What I want to talk about is warp.

00:08:49.400 --> 00:08:52.720
And this is also an item from PI bay indirectly.

00:08:52.720 --> 00:08:54.640
I ran into Elvis who works there.

00:08:54.640 --> 00:08:56.440
And have you heard of warp Brian?

00:08:56.440 --> 00:08:57.700
No.

00:08:57.700 --> 00:08:59.140
Well, I mean warp speed.

00:08:59.140 --> 00:09:00.100
Yes, I know.

00:09:00.100 --> 00:09:00.980
Okay.

00:09:00.980 --> 00:09:02.320
Got to resist the star Wars references.

00:09:02.320 --> 00:09:04.220
it's, it's super cool.

00:09:04.220 --> 00:09:06.160
So what terminal do you use?

00:09:06.160 --> 00:09:11.060
Like when you go to use the built-in Mac one, do you use iterm two or what's your story?

00:09:11.060 --> 00:09:18.020
Well, I use the built-in Mac one, on Mac and then on windows, I use, the, what?

00:09:18.020 --> 00:09:18.760
The windows terminal.

00:09:18.760 --> 00:09:22.360
Well, that was a good one.

00:09:22.360 --> 00:09:27.640
No, the get bash, get for windows bash comes with bash.

00:09:27.640 --> 00:09:28.540
So I use that.

00:09:28.540 --> 00:09:28.800
Okay.

00:09:28.800 --> 00:09:29.300
Yeah.

00:09:29.300 --> 00:09:32.800
You should check out the windows terminal and then plug the get for bash into it.

00:09:32.800 --> 00:09:36.940
You get like, it behaves better and you can pick from like nine different shells and like

00:09:36.940 --> 00:09:38.700
things that run inside the windows terminal.

00:09:38.700 --> 00:09:43.300
Anyway, windows terminal is awesome, but we don't have windows terminal on Mac, which is

00:09:43.300 --> 00:09:43.740
just fine.

00:09:43.740 --> 00:09:47.720
Cause we have iterm and other things, but I want to tell you about warp because warp is

00:09:47.720 --> 00:09:49.780
a new terminal.

00:09:49.780 --> 00:09:54.760
it's got quite a bit of energy behind it and it's, it's awesome.

00:09:54.760 --> 00:09:58.500
so I think there's 30 people working on this project if I remember correctly, but there's,

00:09:58.500 --> 00:10:04.000
there's a good number of people that are working on building this new terminal based on rust.

00:10:04.000 --> 00:10:07.480
And it even is, programmed in metal shaders.

00:10:07.480 --> 00:10:12.920
Metals are like the open GL direct X Mac equivalent for making it super, super fast.

00:10:12.920 --> 00:10:17.100
But basically like there's a bunch of shortcomings that always drove me crazy about the terminal

00:10:17.100 --> 00:10:19.740
and a lot of things that are pretty nice here.

00:10:19.740 --> 00:10:21.680
So it's a free thing for individuals.

00:10:21.680 --> 00:10:24.940
If you're a company, you got to pay for it if you want to company features.

00:10:24.940 --> 00:10:27.420
but it's, it's worth checking out.

00:10:27.420 --> 00:10:33.780
So for example, if you write something, Brian, like I write, some multi-line command and

00:10:33.780 --> 00:10:36.380
you're like, Oh no, I forgot the quote at the beginning.

00:10:36.380 --> 00:10:41.400
You know, how do you fix it in I term left arrow, left arrow, left arrow, left arrow, left

00:10:41.400 --> 00:10:41.660
arrow.

00:10:41.660 --> 00:10:44.620
Like even home doesn't work, you know, left arrow, left arrow, left arrow.

00:10:44.620 --> 00:10:48.700
You wait and get back there and you type the quote, right arrow, right arrow to get the focus

00:10:48.700 --> 00:10:52.580
back, like clicking where you want to be doesn't work.

00:10:52.580 --> 00:10:53.100
Right.

00:10:53.100 --> 00:10:53.820
For example.

00:10:53.820 --> 00:10:57.640
Well, he's used Vim key bindings and just go there with Vim.

00:10:57.640 --> 00:11:01.380
Do you have Vim key bindings in the mat at the standard terminal?

00:11:01.380 --> 00:11:01.860
Yes.

00:11:01.860 --> 00:11:02.640
Everywhere.

00:11:02.640 --> 00:11:03.020
Yeah.

00:11:03.020 --> 00:11:03.520
Okay.

00:11:03.520 --> 00:11:05.760
All right.

00:11:05.760 --> 00:11:06.440
But awesome.

00:11:06.440 --> 00:11:11.220
Well, so this one, like basically all the, stuff you type at the bottom or wherever you're

00:11:11.220 --> 00:11:15.580
typing is like a full on editor, which also has Vim key bindings.

00:11:15.580 --> 00:11:15.840
Yay.

00:11:15.840 --> 00:11:16.460
Okay.

00:11:16.460 --> 00:11:16.500
Okay.

00:11:16.500 --> 00:11:17.280
No, go ahead.

00:11:17.280 --> 00:11:17.940
Okay.

00:11:17.940 --> 00:11:22.120
you can turn them on if you want, but you can basically click in there and edit pieces.

00:11:22.120 --> 00:11:23.060
Like you can double click.

00:11:23.060 --> 00:11:23.760
It'll select a word.

00:11:23.760 --> 00:11:26.100
You start typing or places that super cool.

00:11:26.100 --> 00:11:32.900
it has like a kind of a new way to like keep your input focused in one area, which is

00:11:32.900 --> 00:11:33.460
really nice.

00:11:33.460 --> 00:11:36.900
So instead of it just being at the bottom of the screen, you can have it like always at the

00:11:36.900 --> 00:11:38.020
top or always at the bottom.

00:11:38.020 --> 00:11:43.180
one of the things that's cool is like it treats the output of every command as,

00:11:43.180 --> 00:11:45.460
a solid as one thing.

00:11:45.460 --> 00:11:51.240
So if I do like an LS and there's like 50 lines and I tail a catalog or something, then there's

00:11:51.240 --> 00:11:52.360
like a thousand lines.

00:11:52.360 --> 00:11:57.400
And then if you want to go back, you can actually just go back by selecting each block of that.

00:11:57.400 --> 00:12:00.400
So go back a thousand lines, go back 50 lines, do a search.

00:12:00.400 --> 00:12:04.520
You can search just that 50 line section from that one command, even though your terminal is

00:12:04.520 --> 00:12:05.080
full of junk.

00:12:05.080 --> 00:12:06.040
Super, super cool.

00:12:06.160 --> 00:12:09.740
it does tons of autocomplete, which is super neat.

00:12:09.740 --> 00:12:12.000
let's see one thing else.

00:12:12.000 --> 00:12:16.800
you can, if you do some kind of command, you're just talking about like Simon asking

00:12:16.800 --> 00:12:19.800
ChatGPT for what does like a command mean.

00:12:19.800 --> 00:12:23.500
So if you said like LS dash one, what does the one mean?

00:12:23.500 --> 00:12:28.440
You know, you hover over the one, it'll like pop up a little documentation for what dash

00:12:28.440 --> 00:12:29.080
one means.

00:12:29.080 --> 00:12:30.560
Oh, that's cool.

00:12:30.560 --> 00:12:30.940
Yeah.

00:12:30.940 --> 00:12:34.840
also as AI built in, if you want, I haven't used that very much, but you could like say

00:12:34.840 --> 00:12:38.600
hash, how do I, you know, write this kind of loop in bash or whatever.

00:12:38.600 --> 00:12:42.400
And it'll, it'll print it out for you, but I don't use that one too much.

00:12:42.400 --> 00:12:44.480
But anyway, super, super cool.

00:12:44.480 --> 00:12:46.300
a lot of interesting things.

00:12:46.300 --> 00:12:52.160
It has the control R history, kind of like, like McFly, which I've talked a lot

00:12:52.160 --> 00:12:53.380
about how cool McFly is.

00:12:53.620 --> 00:12:56.640
So even the single try for a few weeks, really enjoying it so far.

00:12:56.640 --> 00:12:57.240
Cool.

00:12:57.240 --> 00:12:57.980
Love to try.

00:12:57.980 --> 00:13:01.600
So people can check that out and yeah, pretty neat.

00:13:01.600 --> 00:13:05.960
Kim says, we've come a long way from a few years ago when windows terminal and awesome

00:13:05.960 --> 00:13:06.980
is in the same sentence.

00:13:06.980 --> 00:13:10.060
it's, I, yeah, I thought it was a joke also.

00:13:10.060 --> 00:13:15.880
I didn't, I can't believe that you said that, but no windows terminal is it's, I don't

00:13:15.880 --> 00:13:19.160
want to be on Wikipedia, but it is definitely, definitely nice.

00:13:19.260 --> 00:13:24.540
So I'm not on my windows machine and I'm not sharing my terminal anyway, but let's see if

00:13:24.540 --> 00:13:27.120
I can get it to show, hockey.

00:13:27.120 --> 00:13:31.860
So like, and it doesn't really show it great, but you can click on this, like you set what

00:13:31.860 --> 00:13:35.260
the default shell is that you want it to do, but you can click this.

00:13:35.260 --> 00:13:42.760
It'll be like the bash shell, the, power shell, whatever that thing's playing music.

00:13:42.760 --> 00:13:43.400
I can't take it.

00:13:43.400 --> 00:13:45.580
But yeah, anyway, the windows, yeah.

00:13:45.580 --> 00:13:46.320
Check out windows terminal.

00:13:46.320 --> 00:13:46.940
It's actually good.

00:13:46.940 --> 00:13:47.960
And Kim is right.

00:13:47.960 --> 00:13:49.980
We've come a long ways, but yeah.

00:13:49.980 --> 00:13:50.300
Okay.

00:13:50.300 --> 00:13:51.020
All right.

00:13:51.020 --> 00:13:51.540
All right.

00:13:51.540 --> 00:13:52.420
Mm-hmm.

00:13:52.420 --> 00:13:53.940
You convinced me, I think.

00:13:53.940 --> 00:13:54.840
So let's try it.

00:13:54.840 --> 00:13:55.980
Give it a, give it a try.

00:13:55.980 --> 00:13:56.600
Give it a try.

00:13:56.600 --> 00:13:57.140
All right.

00:13:57.140 --> 00:13:57.960
What's your final thing?

00:13:57.960 --> 00:13:59.000
People should check out warp.

00:13:59.000 --> 00:13:59.820
It's, it's pretty neat.

00:13:59.820 --> 00:14:00.500
I will.

00:14:00.500 --> 00:14:00.880
Yeah.

00:14:00.880 --> 00:14:01.860
Oh, hold on.

00:14:01.860 --> 00:14:03.180
One more important thing here.

00:14:03.180 --> 00:14:07.220
Mac only for the moment for people, but they're working on Linux and windows.

00:14:07.220 --> 00:14:10.780
So you can like sign up to get notified if you're not a Mac person.

00:14:10.780 --> 00:14:13.000
So just that caveat for now.

00:14:13.720 --> 00:14:17.860
I, did you, I three, Python 3.7 end of life.

00:14:17.860 --> 00:14:19.660
And I didn't even notice.

00:14:19.660 --> 00:14:20.640
What?

00:14:20.640 --> 00:14:21.760
So.

00:14:21.760 --> 00:14:22.500
That was a good one.

00:14:22.500 --> 00:14:23.780
That was one of the good ones.

00:14:23.780 --> 00:14:24.880
You can trust that one.

00:14:25.060 --> 00:14:29.560
So 3.7 end of life was in June and June 27th.

00:14:29.560 --> 00:14:31.040
no, that was the first release.

00:14:31.040 --> 00:14:32.700
End of, no, end of life also.

00:14:32.700 --> 00:14:33.320
End of life.

00:14:33.320 --> 00:14:34.320
6.27.

00:14:34.320 --> 00:14:34.840
23.

00:14:34.840 --> 00:14:35.580
Interesting.

00:14:35.580 --> 00:14:37.540
But why did I not notice it?

00:14:37.540 --> 00:14:41.840
I didn't notice it because everybody's like three, like you said, 3.7 was one of the good

00:14:41.840 --> 00:14:42.040
ones.

00:14:42.040 --> 00:14:44.000
We got, we have data classes in there.

00:14:44.000 --> 00:14:47.720
f-strings came in 3.6 and they got improved in 3.7.

00:14:47.720 --> 00:14:49.680
And then they, they got improved in 3.10 again.

00:14:49.680 --> 00:14:55.280
and all sorts of stuff, but, but it is something to pay attention to, that

00:14:55.280 --> 00:14:57.860
I had noticed the first notice today.

00:14:57.860 --> 00:15:03.460
I was looking at the, VS Code announcement for the new, what was this?

00:15:03.460 --> 00:15:11.600
Python for Visual Studio Code, October, 2020 release mentions, that, the 3.7 support

00:15:11.600 --> 00:15:16.860
is still, it's still probably works, but they're deprecating 3.7 in support.

00:15:16.860 --> 00:15:23.880
So just to be aware, I was also surprised if it didn't work because what was removed

00:15:23.880 --> 00:15:29.560
in 3.8 that was in 3.7, like syntax wise, not functional wise.

00:15:29.560 --> 00:15:30.980
I, I can't think of anything.

00:15:30.980 --> 00:15:32.240
yeah.

00:15:32.240 --> 00:15:38.440
So I, so there's a couple of projects or several projects that I'm supporting where I support

00:15:38.440 --> 00:15:39.620
down to 3.7.

00:15:39.620 --> 00:15:42.140
I dropped 3.6 a while ago.

00:15:42.140 --> 00:15:46.720
but one of the things that catches me a lot, the remaining thing that catches

00:15:46.720 --> 00:15:50.640
me, is, is annotations and specific.

00:15:50.640 --> 00:15:56.740
I want to cover like if you really want to still support 3.7, or didn't know that it was this

00:15:56.740 --> 00:15:58.660
easy, at least for the code I write.

00:15:58.660 --> 00:16:02.380
The main thing is, is I like to use union types.

00:16:02.380 --> 00:16:05.860
So, like to use this or type for unions.

00:16:05.860 --> 00:16:08.080
And this came in in 3.10.

00:16:08.080 --> 00:16:13.980
However, it, I can't find this documented anywhere, but to get it to work down to 3.7,

00:16:13.980 --> 00:16:18.320
you can do, from futures from future import annotations.

00:16:18.660 --> 00:16:23.140
And we've been used to using the from future for various things for a while, but it looks

00:16:23.140 --> 00:16:27.600
like, like 3.7 might be the end of needing from future for a while.

00:16:27.600 --> 00:16:28.120
I don't know.

00:16:28.120 --> 00:16:31.940
Maybe they'll come up with something else that they're backboarding, but it doesn't look like

00:16:31.940 --> 00:16:36.580
there's anything else right now, up to 3.12 that you need to go back down.

00:16:36.580 --> 00:16:39.720
It's just, just, just annotations so far.

00:16:39.720 --> 00:16:45.040
So, and I guess I want to show a little bit of an example for the annotations.

00:16:45.040 --> 00:16:51.280
So, data for data classes, data classes are awesome because you can type the variable

00:16:51.280 --> 00:16:52.500
that you're in using.

00:16:52.500 --> 00:16:59.440
And, and then I often like to have it be none by default, which, so a string, it's going

00:16:59.440 --> 00:17:00.780
to be a string or it's none.

00:17:00.780 --> 00:17:03.520
So the, or none is easy just to do the, or none.

00:17:03.520 --> 00:17:07.140
And I know you can do optional, but this is just visually more pleasing to me.

00:17:07.140 --> 00:17:13.060
and to get that to work down to 3.7, it's, yeah, it's just the from future important

00:17:13.060 --> 00:17:15.060
annotations and it'll work all the way down to 3.7.

00:17:15.060 --> 00:17:17.100
So it's just what I wanted to mention.

00:17:17.100 --> 00:17:24.660
and, I think that it's also good to be aware, I guess that, that, 3.7 is end

00:17:24.660 --> 00:17:29.700
of life because some of the things you depend on might start dropping support for 3.7.

00:17:29.700 --> 00:17:31.340
It's fair game at this point.

00:17:31.340 --> 00:17:36.900
So, I mean, open source projects, they're a fair game to drop support for, everything

00:17:36.900 --> 00:17:38.660
below 3.12 if they want to.

00:17:38.660 --> 00:17:41.140
No one's, no one signed a contract with anyone here.

00:17:41.140 --> 00:17:42.160
They can do what they want.

00:17:42.160 --> 00:17:42.560
Yeah.

00:17:42.560 --> 00:17:44.680
But it's, it's good to be aware of.

00:17:44.680 --> 00:17:44.900
So.

00:17:44.900 --> 00:17:46.120
It certainly is.

00:17:46.120 --> 00:17:46.880
It certainly is.

00:17:46.880 --> 00:17:48.360
That's a cool graph you got there too.

00:17:48.360 --> 00:17:48.960
Yeah.

00:17:48.960 --> 00:17:49.180
Yeah.

00:17:49.180 --> 00:17:50.320
Is that in the, is that in the show notes?

00:17:50.320 --> 00:17:50.880
Yeah.

00:17:50.880 --> 00:17:54.800
It's from devguide.python.org, with the versions.

00:17:54.800 --> 00:17:55.820
yeah.

00:17:55.820 --> 00:18:00.060
Christian Lederman says, walrus was introduced in 3.8.

00:18:00.060 --> 00:18:03.900
I don't know if you can do a from future import walrus.

00:18:04.040 --> 00:18:06.200
I don't think so, but it's too bad.

00:18:06.200 --> 00:18:09.980
If you do, you have to do an emoji, not the actual word walrus, but you got to put the

00:18:09.980 --> 00:18:11.820
emoji of a walrus and then it'll work.

00:18:11.820 --> 00:18:14.700
Well, I'm waiting for like emoji operators.

00:18:14.700 --> 00:18:17.440
so that'd be fun to have.

00:18:17.440 --> 00:18:17.880
Yeah.

00:18:18.140 --> 00:18:22.020
Have to put not just can put, but you have to put emojis in your code.

00:18:22.020 --> 00:18:25.800
So what happens when the cat raises its paw against an integer?

00:18:25.800 --> 00:18:27.720
Oh, let me tell you, that one's really awesome.

00:18:27.720 --> 00:18:28.300
Yeah.

00:18:28.300 --> 00:18:29.600
yeah.

00:18:29.600 --> 00:18:33.780
Some of those conversations like, Christian was saying that I think we're like, or I was

00:18:33.780 --> 00:18:37.160
saying, you know, what is in three, seven, that's not in three, eight.

00:18:37.360 --> 00:18:38.480
And those are all true.

00:18:38.480 --> 00:18:43.020
All those things like there are new things, but if you wrote three, seven code and then

00:18:43.020 --> 00:18:46.540
ran it against three, eight, it should still validate in my pie.

00:18:46.540 --> 00:18:49.060
It should still work in Python, right?

00:18:49.060 --> 00:18:54.520
There's no thing that was in three, seven that because my pie is not supporting it, it'll say,

00:18:54.520 --> 00:18:58.200
well, that used to work and it doesn't work anymore because Python is pretty awesome and

00:18:58.200 --> 00:18:58.900
stable like that.

00:18:59.020 --> 00:19:03.600
There might have been, there was one point, I think it was in three, nine though, where

00:19:03.600 --> 00:19:10.260
like the asyncio co-routine decorator was removed that caused all sorts of drama for me because

00:19:10.260 --> 00:19:12.880
some library I was using didn't use the word async.

00:19:12.880 --> 00:19:17.520
They just used the decorators, but even that a decorator should still validate in my pie with

00:19:17.520 --> 00:19:18.100
that context.

00:19:18.100 --> 00:19:18.300
Right.

00:19:18.300 --> 00:19:24.560
So, yeah, I guess I want to, I'll, maybe I'll revisit my opinion of, supporting three,

00:19:24.560 --> 00:19:28.860
eight or three, seven because, so we, we, we can use the wall.

00:19:28.900 --> 00:19:33.760
Wallruss operator in three, eight, but Henry Schreiner also noticed that notes that,

00:19:33.760 --> 00:19:40.540
uh, the equal for f-strings so that you can say, like X equal and it'll print the

00:19:40.540 --> 00:19:41.040
X equal.

00:19:41.040 --> 00:19:42.620
That's super handy.

00:19:42.620 --> 00:19:43.880
yeah, it's good for debugging.

00:19:43.880 --> 00:19:44.420
Yeah.

00:19:44.420 --> 00:19:48.920
And just having, having that stuff in your, in your code, like that'd be great.

00:19:48.920 --> 00:19:49.360
So.

00:19:49.360 --> 00:19:49.840
Yeah.

00:19:49.840 --> 00:19:52.640
And these things are super small and subtle, like the wallruss operator.

00:19:52.640 --> 00:19:56.500
I take, I took the website down with the wallruss operator once I said, I told that story

00:19:56.500 --> 00:19:56.840
before.

00:19:56.840 --> 00:19:57.420
Yeah.

00:19:57.780 --> 00:20:01.660
Like not even the main website, just, it was in a little utility, but it got parsed

00:20:01.660 --> 00:20:03.860
by the route finding thing and killed it.

00:20:03.860 --> 00:20:04.340
All right.

00:20:04.340 --> 00:20:05.540
Well, that's it for items, huh?

00:20:05.540 --> 00:20:06.620
Yeah, it is.

00:20:06.620 --> 00:20:07.280
Awesome.

00:20:07.280 --> 00:20:07.880
Extras.

00:20:07.880 --> 00:20:10.900
I got a couple since I got my screen up.

00:20:10.900 --> 00:20:16.440
just one of the examples I showed was from a new plugin that I just released, called

00:20:16.440 --> 00:20:17.560
pytest Paramscope.

00:20:17.560 --> 00:20:24.060
and this allows you to, for parameterized fixtures or for parameterized tests to have

00:20:24.060 --> 00:20:29.400
a startup, a startup that goes, a setup that happens before all the parameters and a teardown

00:20:29.400 --> 00:20:30.420
that happens at the end.

00:20:30.420 --> 00:20:36.480
It's still, the API is up, there's a warning here because there's the API might change

00:20:36.480 --> 00:20:41.040
with respect to teardown, working on yield, yield functions for that.

00:20:41.600 --> 00:20:44.600
I also, I was going to cover this as a full thing.

00:20:44.600 --> 00:20:45.140
Oh yeah.

00:20:45.140 --> 00:20:46.540
This is just sort of how you use it.

00:20:46.540 --> 00:20:48.080
You get like a setup and teardown.

00:20:48.080 --> 00:20:50.500
Oh no, this is, this is how I want to do it.

00:20:50.500 --> 00:20:52.880
This is the change that I might do of adding yield.

00:20:52.880 --> 00:21:00.540
So anyway, Simon Wilson, wrote a article called, stop defining people.

00:21:00.540 --> 00:21:01.880
No, not Simon Wilson.

00:21:01.880 --> 00:21:03.880
Sorry, Josh Simmons.

00:21:03.880 --> 00:21:09.160
sorry, Josh, wrote an article called, stop defining people by what they

00:21:09.160 --> 00:21:10.040
are not.

00:21:10.040 --> 00:21:15.100
and he was referring to non-code contributors and I kind of agree.

00:21:15.100 --> 00:21:16.620
So I wanted to highlight this article.

00:21:16.620 --> 00:21:18.180
This is, this is great.

00:21:18.320 --> 00:21:24.620
Just basically saying all contributions are awesome and trying to, and elevating code

00:21:24.620 --> 00:21:29.360
contributor contributors above non-code contributors is just not right.

00:21:29.360 --> 00:21:30.200
So don't do that.

00:21:30.200 --> 00:21:36.960
also it's just referring, I mean, if somebody only writes, just mostly helps with your

00:21:36.960 --> 00:21:39.540
test code, you don't have to call them.

00:21:39.540 --> 00:21:42.300
I mean, you can say somebody that's contributing test code.

00:21:42.300 --> 00:21:44.160
You don't have to say, oh, that's non-code.

00:21:44.160 --> 00:21:45.580
Well, that's, that's still code.

00:21:45.660 --> 00:21:46.800
But anyway, you know what I mean?

00:21:46.800 --> 00:21:50.040
people helping with documentation is great help.

00:21:50.040 --> 00:21:52.660
People helping with writing tutorials is great help.

00:21:52.660 --> 00:21:53.700
Everything is good.

00:21:53.700 --> 00:21:58.480
So anyway, sometimes it's more important to have a good example so people can get started

00:21:58.480 --> 00:21:58.900
quickly.

00:21:58.900 --> 00:21:59.700
Oh yeah.

00:21:59.700 --> 00:22:02.780
And like enjoy the project rather than like one more feature, you know?

00:22:02.780 --> 00:22:03.240
Yeah.

00:22:03.240 --> 00:22:09.040
And also things like, cleaning, triaging issues and answering questions and keeping,

00:22:09.040 --> 00:22:13.560
you know, making sure that all the issues are closed when their things get fixed and all

00:22:13.560 --> 00:22:15.860
that sort of stuff is, is it's tons of work.

00:22:15.860 --> 00:22:16.960
So it's great help.

00:22:16.960 --> 00:22:18.440
So yeah, absolutely.

00:22:18.440 --> 00:22:19.300
Do you have any extras?

00:22:19.300 --> 00:22:21.480
I got a couple quick ones here.

00:22:21.480 --> 00:22:26.460
So open AI has released the beta version of their Python SDK.

00:22:26.460 --> 00:22:27.780
It's pretty exciting.

00:22:27.780 --> 00:22:35.160
So if you don't want to implement your own raw HTTP JSON parsing and hope that you got everything

00:22:35.160 --> 00:22:38.520
right, you can just go there, start calling the functions that they write for you.

00:22:38.600 --> 00:22:40.780
And it should be going nicely.

00:22:40.780 --> 00:22:43.520
So it's still in beta, but people can check that out.

00:22:43.520 --> 00:22:44.080
That's pretty awesome.

00:22:44.080 --> 00:22:45.560
I think, was it here?

00:22:45.560 --> 00:22:46.520
I can't remember somewhere.

00:22:46.520 --> 00:22:47.400
No, it wasn't here.

00:22:47.400 --> 00:22:48.480
Maybe it was on the linked article.

00:22:48.480 --> 00:22:52.780
There was somewhere where there's a bunch of people whinging, like, why can't people just

00:22:52.780 --> 00:22:53.580
call HTTP?

00:22:53.580 --> 00:22:54.760
They're so lazy.

00:22:54.760 --> 00:22:56.060
They want a library for it.

00:22:56.060 --> 00:22:56.640
Like, you know what?

00:22:56.640 --> 00:23:00.200
Maybe like let somebody else handle the evolution of that API.

00:23:00.200 --> 00:23:04.280
You just call a stable Python set of functions and not worry about that.

00:23:04.280 --> 00:23:05.280
Wouldn't call that lazy.

00:23:05.400 --> 00:23:08.140
I would call that PyPI and call it awesome.

00:23:08.140 --> 00:23:10.860
Anyway, so people are into open AI.

00:23:10.860 --> 00:23:12.320
What do you need Python for?

00:23:12.320 --> 00:23:15.180
Just call the raw C API.

00:23:15.180 --> 00:23:16.120
Exactly.

00:23:16.120 --> 00:23:20.160
Can I just do this with like a bunch of bash scripts and some curl?

00:23:20.160 --> 00:23:20.640
Let's go.

00:23:20.640 --> 00:23:21.180
All right.

00:23:21.180 --> 00:23:27.100
So, sad news here is ChatGPT.

00:23:27.100 --> 00:23:27.560
Oh, no.

00:23:27.560 --> 00:23:28.460
Stack Overflow.

00:23:28.460 --> 00:23:30.820
Probably because partly of ChatGPT.

00:23:30.820 --> 00:23:32.240
Get that in order right there.

00:23:32.240 --> 00:23:36.100
Stack Overflow is laying off 28% of their staff.

00:23:36.100 --> 00:23:37.360
It's kind of surprising, huh?

00:23:37.360 --> 00:23:37.920
Yeah.

00:23:37.920 --> 00:23:41.560
Which turns out to be 100 to 200 people.

00:23:41.560 --> 00:23:42.420
Like a lot of people.

00:23:42.420 --> 00:23:44.880
Not like they had four people and they laid one of them off.

00:23:44.880 --> 00:23:50.140
But it was really important.

00:23:50.140 --> 00:23:52.280
What exactly would you say you do here?

00:23:52.280 --> 00:23:52.820
No.

00:23:52.820 --> 00:23:57.320
I didn't know that Stack Overflow had so many people working for them, though.

00:23:57.320 --> 00:23:57.860
I know.

00:23:57.860 --> 00:24:04.680
It was founded just by Joel Spolsky and Coding Horror Guy, whose name I don't remember.

00:24:04.680 --> 00:24:05.020
Anyway.

00:24:05.020 --> 00:24:06.980
But yeah, it's growing to be super, super big.

00:24:06.980 --> 00:24:11.860
And I don't know, I always sometimes wonder, like, do you really need a thousand people to run that website?

00:24:11.860 --> 00:24:14.200
I mean, maybe, but maybe you just don't.

00:24:14.200 --> 00:24:16.400
Anyway, that's a whole different discussion.

00:24:16.400 --> 00:24:25.520
But so there's some interesting conversation saying maybe this is because of ChatGPT and Google Copilot and all these other things.

00:24:25.520 --> 00:24:31.820
Like, instead of going to Stack Overflow to go, how do I connect this type of thing to that type of database?

00:24:31.820 --> 00:24:38.080
You can just ask your coding assistant or your chat buddy and you'll get a great example.

00:24:38.080 --> 00:24:40.060
Oftentimes more specific, right?

00:24:40.060 --> 00:24:42.180
Like, yeah, but I'm using this version.

00:24:42.180 --> 00:24:44.680
Oh, well, if it's that version, you've got to pass this argument too.

00:24:44.680 --> 00:24:45.020
Right.

00:24:45.020 --> 00:24:45.420
Thanks.

00:24:45.420 --> 00:24:46.060
Got it.

00:24:46.060 --> 00:24:46.540
You know?

00:24:46.540 --> 00:24:49.220
So this is pretty interesting.

00:24:49.920 --> 00:24:57.980
Kind of odd or weird, like six months ago, Stack Overflow wrote a blog post that said, what's different about these layoffs in the tech industry?

00:24:57.980 --> 00:24:58.700
Not us.

00:24:58.700 --> 00:24:59.280
We're fine.

00:24:59.280 --> 00:25:00.160
Everyone else.

00:25:00.160 --> 00:25:05.500
And then, you know, six months later, you know, go back and read your own article, sadly.

00:25:05.500 --> 00:25:09.700
So that's an interesting thing to be aware of, I guess.

00:25:09.700 --> 00:25:10.200
Yeah.

00:25:10.200 --> 00:25:19.700
Yuri Silovanov just pointed out or posted on the XT that UVloop18 is here with Python 2nd.

00:25:19.700 --> 00:25:21.020
Python 3.12 support.

00:25:21.020 --> 00:25:27.680
So I was trying to use 3.12 on a couple of the Talk Python things and the websites are like, nope.

00:25:27.680 --> 00:25:29.120
UV loop, no.

00:25:29.120 --> 00:25:35.980
aiohttp, definitely not going to work on Python 3.12, which is, I think aiohttp still doesn't work.

00:25:35.980 --> 00:25:45.400
And sadly, some rummy dependency that I have is like using that library, which itself is not being upgraded to 3.12, at least as of like a few days ago.

00:25:45.400 --> 00:25:48.520
So this gets me halfway there, the two things that wouldn't install.

00:25:48.520 --> 00:25:49.500
One more to go.

00:25:49.680 --> 00:25:51.000
Hanging in there for aiohttp.

00:25:51.000 --> 00:25:51.600
Come on now.

00:25:51.600 --> 00:25:52.020
Yeah.

00:25:52.020 --> 00:25:52.980
Good news nonetheless.

00:25:52.980 --> 00:25:54.200
Thanks, Yuri, for doing that.

00:25:54.200 --> 00:25:57.880
Oh, and thanks, Kim, for reminding us that it was Jeff Atwood.

00:25:57.880 --> 00:25:59.160
Yes, of course it was.

00:25:59.160 --> 00:25:59.720
Thank you, Kim.

00:25:59.720 --> 00:26:01.560
That's the guy that went by Coding Horror.

00:26:01.560 --> 00:26:06.120
That's what happens when you have too popular of a nickname that you've given yourself, like Coding Horror.

00:26:06.120 --> 00:26:06.640
Yeah.

00:26:06.640 --> 00:26:07.020
In your blog.

00:26:07.020 --> 00:26:07.540
Yeah.

00:26:07.540 --> 00:26:10.820
Plus that logo or icon that he's got.

00:26:10.820 --> 00:26:12.500
I can just see it in my head.

00:26:12.500 --> 00:26:13.100
Yeah, too.

00:26:13.100 --> 00:26:13.640
I can't.

00:26:13.640 --> 00:26:14.520
Like the hair on fire.

00:26:14.520 --> 00:26:14.860
Yeah.

00:26:14.860 --> 00:26:15.700
Developer picture.

00:26:15.700 --> 00:26:15.940
Yep.

00:26:15.940 --> 00:26:16.360
Yeah.

00:26:16.600 --> 00:26:16.840
All right.

00:26:16.840 --> 00:26:18.640
Those are all my extras that I got for now.

00:26:18.640 --> 00:26:20.120
Yeah.

00:26:20.120 --> 00:26:21.000
Ready for a joke?

00:26:21.000 --> 00:26:21.860
I am.

00:26:21.860 --> 00:26:24.160
We might even have two jokes, but we'll see about that.

00:26:24.160 --> 00:26:25.380
Yeah, I've got one I wanted to share also.

00:26:25.380 --> 00:26:26.020
All right.

00:26:26.200 --> 00:26:30.900
So this one comes from Command Line Magic, but was pointed out to us by Lizzie.

00:26:30.900 --> 00:26:32.660
I said, I love it.

00:26:32.660 --> 00:26:33.220
Hey, I'm Kennedy.

00:26:33.220 --> 00:26:34.160
Maybe for the show.

00:26:34.160 --> 00:26:39.860
And the Command Line Magic says, I've always read that global variables are bad.

00:26:39.860 --> 00:26:41.340
So this is the Star Trek thing.

00:26:41.340 --> 00:26:42.460
And can I make it bigger?

00:26:42.460 --> 00:26:42.720
Yes.

00:26:42.720 --> 00:26:49.220
The Star Trek thing shows, I can't remember this character's name, this woman scientist on a shuttle.

00:26:49.420 --> 00:26:50.640
This is all from Star Trek.

00:26:50.640 --> 00:26:57.060
And they're like going right through the near the edge of the sun to do some studying.

00:26:57.060 --> 00:27:01.380
And she wants to be real careful to make sure that, you know, this ship doesn't melt.

00:27:01.380 --> 00:27:05.740
So she says, computer, notify me if temperatures get too hot.

00:27:05.740 --> 00:27:06.540
Beep, beep.

00:27:06.540 --> 00:27:08.460
Please define hot, says the computer.

00:27:08.460 --> 00:27:10.320
Let's say 1.9 million Kelvin.

00:27:10.320 --> 00:27:10.840
Okay.

00:27:10.840 --> 00:27:11.280
Fair.

00:27:11.420 --> 00:27:18.500
Later, Captain Picard is at the like the little food making thing, you know, that materializes food.

00:27:18.500 --> 00:27:20.840
It says, tea, Earl Grey, hot.

00:27:20.840 --> 00:27:22.080
It just melts.

00:27:22.080 --> 00:27:26.920
It just like, yeah, sets it at 1.9 million Kelvin in his captain's quarters.

00:27:26.920 --> 00:27:28.320
Yeah, that's awesome.

00:27:28.320 --> 00:27:29.300
Isn't that good?

00:27:29.300 --> 00:27:30.620
Yeah, I like it.

00:27:30.620 --> 00:27:31.260
Yeah.

00:27:31.260 --> 00:27:31.880
A little too hot.

00:27:31.880 --> 00:27:32.400
Somebody should test this.

00:27:32.400 --> 00:27:33.180
Yeah, a little too hot.

00:27:33.180 --> 00:27:35.080
Maybe that tea was real hot.

00:27:35.080 --> 00:27:35.520
Yeah.

00:27:35.520 --> 00:27:36.360
All right.

00:27:36.360 --> 00:27:36.920
What's your joke?

00:27:36.920 --> 00:27:42.740
So my daughter shared this with me and I just like, I haven't stopped giggling about

00:27:42.740 --> 00:27:42.920
it.

00:27:42.920 --> 00:27:46.420
So did you, have you, you've been to the Oregon Zoo, right?

00:27:46.420 --> 00:27:46.900
Yes.

00:27:46.900 --> 00:27:47.340
Yeah.

00:27:47.340 --> 00:27:49.640
Did you, do you know there's a new exhibit there?

00:27:49.640 --> 00:27:51.140
Ah, no.

00:27:51.140 --> 00:27:53.040
It's just a baguette in a cage.

00:27:53.040 --> 00:27:53.740
Oh.

00:27:53.740 --> 00:27:55.100
It's bred in captivity.

00:27:55.100 --> 00:27:56.960
Oh my gosh.

00:27:56.960 --> 00:27:58.220
Bred in captivity.

00:27:58.220 --> 00:27:59.920
Yeah.

00:27:59.920 --> 00:28:00.840
That's hard to do.

00:28:00.840 --> 00:28:04.000
You know, a lot of times you try, but it just doesn't happen, does it?

00:28:04.000 --> 00:28:04.960
I guess they pulled it off.

00:28:04.960 --> 00:28:05.360
Yeah.

00:28:05.360 --> 00:28:06.740
Awesome.

00:28:06.740 --> 00:28:06.820
So.

00:28:06.820 --> 00:28:08.800
This bad, bad dad joke.

00:28:08.800 --> 00:28:10.820
Those are very bad dad jokes.

00:28:10.820 --> 00:28:12.680
But I was just thinking about going to the zoo.

00:28:12.680 --> 00:28:14.540
I haven't been there since maybe a year.

00:28:14.540 --> 00:28:16.580
I was thinking about taking my daughter back there.

00:28:16.580 --> 00:28:16.780
So.

00:28:16.780 --> 00:28:20.500
What's weird is we, we almost always go to zoo lights.

00:28:20.500 --> 00:28:21.140
So.

00:28:21.140 --> 00:28:21.360
Yeah.

00:28:21.360 --> 00:28:27.060
But I, so I see a lot of animals, but they're all in, they're all in lights instead of actual,

00:28:27.060 --> 00:28:28.200
the actual animals.

00:28:28.200 --> 00:28:28.700
Exactly.

00:28:28.700 --> 00:28:29.720
We need to go.

00:28:29.720 --> 00:28:30.080
Yeah.

00:28:30.080 --> 00:28:34.020
Just put them on the wall and have them flashing for Christmas.

00:28:34.020 --> 00:28:34.520
That's right.

00:28:34.520 --> 00:28:34.860
Yeah.

00:28:34.860 --> 00:28:36.700
I actually, I really appreciate.

00:28:36.700 --> 00:28:45.040
During COVID, they like started doing the drive-through zoo lights and they still do it like partway.

00:28:45.040 --> 00:28:48.020
So you can do drive through for a couple of days or something.

00:28:48.020 --> 00:28:48.820
And then they switched.

00:28:48.820 --> 00:28:49.160
Okay.

00:28:49.160 --> 00:28:49.800
The walking.

00:28:49.800 --> 00:28:51.020
I like driving through.

00:28:51.020 --> 00:28:51.480
It's nice.

00:28:51.480 --> 00:28:51.880
So.

00:28:51.880 --> 00:28:52.260
Yeah.

00:28:52.260 --> 00:28:52.880
It was nice.

00:28:52.880 --> 00:28:53.680
Definitely nice.

00:28:53.680 --> 00:28:54.660
All right.

00:28:54.660 --> 00:28:56.500
Well, we're coming up on the end of the year.

00:28:56.500 --> 00:28:58.980
So we'll have to get a report on the zoo lights.

00:28:58.980 --> 00:28:59.540
Yeah.

00:28:59.540 --> 00:29:00.500
All right.

00:29:00.500 --> 00:29:02.220
And the bread and captivity bread.

00:29:02.220 --> 00:29:02.600
Bread.

00:29:02.600 --> 00:29:03.080
Bread.

00:29:03.720 --> 00:29:04.160
Bye.

00:29:04.160 --> 00:29:04.920
All right.

