WEBVTT

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

00:00:05.200 --> 00:00:09.300
This is episode 397, recorded August 20th.

00:00:09.300 --> 00:00:10.440
And I am Brian Okken.

00:00:10.440 --> 00:00:11.700
And I am Michael Kennedy.

00:00:11.700 --> 00:00:16.840
This show, this episode is sponsored by us, so check out our stuff, our courses and training and everything.

00:00:16.840 --> 00:00:19.140
Links in the show notes, of course.

00:00:19.140 --> 00:00:23.440
You can connect with us on Mastodon or Fosstodon.

00:00:23.440 --> 00:00:29.340
We're at mkennedy, at brianaukin, at Python Bytes, but you can find all of those in the show notes as well.

00:00:29.340 --> 00:00:36.320
Also, you can go to pythonbytes.fm/live if you want to join us in the studio audience.

00:00:36.320 --> 00:00:45.760
And finally, we have some exciting news about the handcrafted artisanal show notes in email form.

00:00:45.760 --> 00:00:53.440
Our email friends of the show list has reached a milestone and we've already sent out prizes, which is awesome.

00:00:53.440 --> 00:00:54.660
Yes, check your mail.

00:00:54.660 --> 00:00:56.360
You may be a lucky winner.

00:00:56.360 --> 00:01:02.700
I know two folks have already redeemed some courses over at Talk Python and over on your platform, right?

00:01:02.700 --> 00:01:03.160
Yep.

00:01:03.160 --> 00:01:04.640
You may already be a wiener.

00:01:04.640 --> 00:01:05.940
So check your email.

00:01:05.940 --> 00:01:07.980
What do you got for us, Michael?

00:01:07.980 --> 00:01:11.480
I've been waiting and waiting to talk about this.

00:01:11.480 --> 00:01:13.920
So let's talk about Pi Awaitable.

00:01:15.180 --> 00:01:17.400
It was bad, but it had to be done.

00:01:17.400 --> 00:01:17.960
You know what I mean?

00:01:17.960 --> 00:01:19.720
So Pi Awaitable.

00:01:19.720 --> 00:01:26.480
This is something I feel like probably not a ton of people are going to be using, but the concurrency

00:01:26.480 --> 00:01:28.580
models in Python are only increasing.

00:01:28.580 --> 00:01:31.540
The use of async and await is only increasing.

00:01:32.080 --> 00:01:42.860
And people writing code, people writing code in B and Rust and other languages to basically create lower, lower level faster bits is increasing.

00:01:42.860 --> 00:01:51.960
And so I put this out there to help those of you who are saying, maybe I want to rewrite the section in C or integrate with this other bit of code in C.

00:01:52.200 --> 00:02:00.320
So this is a project called Pi Awaitable, which is really for people writing code in C, C extensions for Python.

00:02:00.320 --> 00:02:00.680
Okay.

00:02:00.680 --> 00:02:01.240
Okay.

00:02:01.240 --> 00:02:04.520
And interestingly, it comes from Peter.

00:02:04.520 --> 00:02:08.820
Last name is Birma.

00:02:08.820 --> 00:02:09.480
Peter Birma.

00:02:09.480 --> 00:02:12.100
And if you check out his website, it's pretty interesting, actually.

00:02:12.100 --> 00:02:14.280
Hey, I'm Peter, software engineer from the United States.

00:02:14.280 --> 00:02:15.680
I'm 16 years old.

00:02:15.680 --> 00:02:16.240
Oh, wow.

00:02:16.240 --> 00:02:16.680
I've been writing.

00:02:16.680 --> 00:02:18.940
I've been coding since I was nine.

00:02:18.940 --> 00:02:21.040
And this is just one of my many projects.

00:02:21.160 --> 00:02:27.640
So there's a bunch of projects you can see that, like the pointers.py joke that was going around a while ago.

00:02:27.640 --> 00:02:28.340
He did that and stuff.

00:02:28.340 --> 00:02:30.380
Anyway, so that's kind of interesting and impressive.

00:02:30.380 --> 00:02:39.140
And so this is a library that lets you create code in C that can accept an async Python function.

00:02:39.140 --> 00:02:50.960
So if you write async def in Python, right, and create some function that uses async and await, and you pass it off to the C layer, well, that used to be kind of tricky.

00:02:51.120 --> 00:02:54.460
This used to be, this was suggested as a PEP.

00:02:54.460 --> 00:03:02.480
If you check it out, I don't know if it got far enough to have a number, but there's like the whole PEP write up of what is the value of this?

00:03:02.480 --> 00:03:03.280
Why does it exist?

00:03:03.280 --> 00:03:03.960
How do you use it?

00:03:03.960 --> 00:03:04.800
How should it be added?

00:03:04.800 --> 00:03:18.900
And from what I gather, what I understand is that since this thing only uses the public ABI, the public interface of the C API, it doesn't necessarily have to be part of CPython.

00:03:19.100 --> 00:03:20.800
It could just be a third party library.

00:03:20.800 --> 00:03:21.980
So here it is.

00:03:21.980 --> 00:03:24.620
And here's how you, here it goes, Brian.

00:03:24.620 --> 00:03:26.660
This will, this will connect with you, I think.

00:03:26.660 --> 00:03:29.220
Hash include pyawaitable.h.

00:03:29.220 --> 00:03:30.000
Here we go.

00:03:30.000 --> 00:03:43.340
Here's a function that takes a Python coroutine function or an async def type of function, uses this library to create something that can be awaited on it.

00:03:43.380 --> 00:03:44.120
And then it returns it.

00:03:44.120 --> 00:03:50.480
So then that basically turns the C function into an async, something that can be awaited from Python.

00:03:50.480 --> 00:03:51.100
Okay.

00:03:51.100 --> 00:03:55.500
So the C function is the thing that you're waiting for completion of?

00:03:55.500 --> 00:03:56.020
Yes.

00:03:56.020 --> 00:04:06.580
So here's a C extension written with this library that itself is effectively an async def function that you just await as if it was a native Python one.

00:04:06.580 --> 00:04:07.000
Okay.

00:04:07.000 --> 00:04:08.240
In the event loop and all that kind of stuff.

00:04:08.240 --> 00:04:14.580
And it can coordinate with other async things like your own ones or the built-in, you know, async io.sleep or whatever.

00:04:14.580 --> 00:04:15.900
That's pretty cool.

00:04:15.900 --> 00:04:16.320
Yeah.

00:04:16.320 --> 00:04:16.640
Pretty cool?

00:04:16.640 --> 00:04:17.060
Yeah.

00:04:17.060 --> 00:04:22.600
So I'm pretty short and sweet and pretty focused, so I'm not going to say much more about it, but check it out.

00:04:22.600 --> 00:04:28.620
It's pretty new, but, you know, it seems not super advanced in terms of what it does.

00:04:28.620 --> 00:04:34.260
So you can, if you're doing a lot of C and async programming, you can check it out and see what you think of it and use it and contribute.

00:04:34.260 --> 00:04:34.840
Nice.

00:04:34.840 --> 00:04:36.040
All right.

00:04:36.200 --> 00:04:39.320
Well, I want to show you something pretty.

00:04:39.320 --> 00:04:41.340
So look at this plot.

00:04:41.340 --> 00:04:42.380
This is amazing.

00:04:42.380 --> 00:04:46.660
So this is just a coal production since 1900.

00:04:46.660 --> 00:04:48.560
So why am I showing this?

00:04:48.560 --> 00:04:50.640
Because it looks like it came out of a magazine or something.

00:04:50.640 --> 00:05:00.640
You've got like these call outs with, it's a stacked plot, but it's got like the colors are all, instead of doing like a key,

00:05:00.640 --> 00:05:06.160
there's, they're, they're listed as colored names in, in one of the descriptions.

00:05:06.160 --> 00:05:07.160
This is great.

00:05:07.160 --> 00:05:09.080
So anyway, I like this plot.

00:05:09.080 --> 00:05:10.960
I want to do something like this.

00:05:10.960 --> 00:05:15.880
And luckily there's an article called annotated area charts with plot line.

00:05:15.880 --> 00:05:18.380
Plot line is an open source Python library.

00:05:18.380 --> 00:05:22.400
And, and this is just a good walks.

00:05:22.400 --> 00:05:27.840
There's a tutorial that walks you through doing this, this wonderful, very professional looking plot.

00:05:28.480 --> 00:05:31.200
And, and it's not something that doesn't even look that complicated.

00:05:31.200 --> 00:05:38.360
Anyway, so going through this looks, looks pretty fun to, to try to do some, some fancy plots like this.

00:05:38.360 --> 00:05:42.400
Maybe make, make my job, make me look more professional at my job.

00:05:42.400 --> 00:05:48.120
You know, one of the, so it uses, it uses plot line, which I hadn't heard of.

00:05:48.120 --> 00:05:52.760
And plot line is, it's based on GG plot two.

00:05:53.180 --> 00:05:57.900
And it says plot line is an implementation of a grammar of graphics.

00:05:57.900 --> 00:06:01.980
I did not know the GG and GG plot was grammar of graphics.

00:06:01.980 --> 00:06:03.720
That's cool.

00:06:03.720 --> 00:06:05.100
I learned that today.

00:06:05.100 --> 00:06:05.720
So that's cool.

00:06:05.720 --> 00:06:08.620
Anyway, I'm like, well, wait a second.

00:06:08.620 --> 00:06:10.180
Is this, is this open source?

00:06:10.180 --> 00:06:12.900
Yeah, it's all, it's all on, on GitHub.

00:06:12.900 --> 00:06:15.220
So, and MIT licensed.

00:06:15.220 --> 00:06:20.880
So I feel safe with, with this talk about licenses a lot lately and it, and I am paying more attention

00:06:20.880 --> 00:06:22.380
to the licenses that I use.

00:06:22.380 --> 00:06:27.900
So, anyway, just a fairly quick shout out to this wonderful, oh, who wrote it?

00:06:27.900 --> 00:06:30.260
It was Nicola Renni.

00:06:30.260 --> 00:06:32.180
And great looking blog too.

00:06:32.180 --> 00:06:36.600
But anyway, just had to make really beautiful plots with plot line.

00:06:36.600 --> 00:06:40.560
That's a nice looking blog and very nice looking presentation.

00:06:40.560 --> 00:06:42.800
So plot, plot nine is new to me.

00:06:42.800 --> 00:06:43.740
So good to know.

00:06:43.740 --> 00:06:46.200
Right on to the next one.

00:06:46.200 --> 00:06:48.480
We have Delta base.

00:06:48.480 --> 00:06:55.360
So Brian, I'm sure you've heard of SQLite, the embedded database that you can just point at

00:06:55.360 --> 00:06:56.180
a file and run.

00:06:56.180 --> 00:06:59.540
So Delta base is kind of like that, but broader, I guess.

00:06:59.540 --> 00:07:05.220
It's a lightweight comprehensive solution for managing data, Delta tables built on Polars

00:07:05.220 --> 00:07:06.200
and Delta Lake.

00:07:06.200 --> 00:07:06.780
All right.

00:07:06.780 --> 00:07:09.820
So some, some definitions for this makes sense.

00:07:09.820 --> 00:07:14.580
So Polars is a data frame framework, very much like pandas.

00:07:14.580 --> 00:07:19.880
I actually had a guy who created it on talk Python quite a while ago when it came out.

00:07:19.880 --> 00:07:27.140
And the idea is one, it's super fast, but two, the way that you work with it is a so-called

00:07:27.140 --> 00:07:28.260
fluent API.

00:07:28.580 --> 00:07:33.780
Scrolling for an example, not finding one, a fluent API that has deferred execution.

00:07:33.780 --> 00:07:37.520
So when you work with Panda, you might say, do this filter and then transform this and

00:07:37.520 --> 00:07:39.040
then multiply that thing by something.

00:07:39.040 --> 00:07:43.720
It just does every one of those steps and then processes it together with Polars.

00:07:43.720 --> 00:07:46.140
It says, okay, I see what you're doing.

00:07:46.140 --> 00:07:48.180
And first you told me to multiply.

00:07:48.180 --> 00:07:49.820
And then you told me to filter.

00:07:49.920 --> 00:07:54.060
But if I filter and then multiply, I'll be multiplying way fewer things potentially.

00:07:54.060 --> 00:07:54.540
Right.

00:07:54.540 --> 00:07:56.280
So that's kind of the big difference.

00:07:56.280 --> 00:07:57.500
Anyway, super cool.

00:07:57.500 --> 00:07:58.500
Built on Rust.

00:07:58.500 --> 00:08:01.820
So obviously it's got some pizzazz behind it.

00:08:02.020 --> 00:08:06.080
So are you saying that you can write it in a fluent way that makes sense to you, but it'll

00:08:06.080 --> 00:08:08.100
rearrange it if it makes sense to Polar?

00:08:08.100 --> 00:08:08.240
Yeah.

00:08:08.240 --> 00:08:10.380
It has like a query optimizer type of deal.

00:08:10.380 --> 00:08:15.560
It's not quite a query because you're not writing a query, but it has a deferred execution and

00:08:15.560 --> 00:08:16.800
it takes into consideration.

00:08:16.800 --> 00:08:22.340
If I remember this correctly, it takes into account all the different steps because it doesn't

00:08:22.340 --> 00:08:24.900
actually execute until you give it like the command.

00:08:24.900 --> 00:08:27.560
And so it's built up all these steps that it can do.

00:08:27.560 --> 00:08:29.160
And so it can make decisions about that.

00:08:29.160 --> 00:08:30.080
Oh, that's cool.

00:08:30.080 --> 00:08:30.560
Okay.

00:08:30.560 --> 00:08:30.860
Yeah.

00:08:30.860 --> 00:08:31.460
Which is really cool.

00:08:31.460 --> 00:08:33.440
But in other ways, it's very similar to pandas.

00:08:33.440 --> 00:08:37.240
Not trying to be a copy of it, but that's, you know, it's kind of plays the same space.

00:08:37.240 --> 00:08:37.840
All right.

00:08:37.840 --> 00:08:38.940
So that's one thing.

00:08:38.940 --> 00:08:41.380
The other is Delta Lake.

00:08:41.380 --> 00:08:45.700
This is an implementation of Delta Lake, I guess.

00:08:45.700 --> 00:08:50.700
And with a space, rather than with a space, without a space.

00:08:50.700 --> 00:08:51.620
Oh, that clears it up.

00:08:51.620 --> 00:08:51.940
Totally.

00:08:52.100 --> 00:08:52.460
Oh, yeah.

00:08:52.460 --> 00:08:53.940
So absolutely.

00:08:53.940 --> 00:09:01.520
So this is a format, actually, that allows you to talk with computational engines such

00:09:01.520 --> 00:09:07.640
as Spark, Hive, Snowflake, but also things like DuckDB and others.

00:09:07.640 --> 00:09:09.440
And you can just point it at a local file.

00:09:09.440 --> 00:09:10.740
You don't even have to have a server.

00:09:10.740 --> 00:09:11.060
Okay.

00:09:11.060 --> 00:09:17.800
So this is a pretty cool looking library that lets you basically, you know, it's optimized

00:09:17.800 --> 00:09:21.600
for doing upserts and all sorts of things like that.

00:09:21.860 --> 00:09:24.820
efficient versioning and so on.

00:09:24.820 --> 00:09:29.640
So you just pointed at some path if you want, sort of the SQLite experience.

00:09:29.640 --> 00:09:32.180
And then you say, here's a table.

00:09:32.180 --> 00:09:34.120
It has a primary key with its name.

00:09:34.120 --> 00:09:36.740
And here is a bunch of data I want you to put into it.

00:09:36.740 --> 00:09:44.280
And notice that there is no, here's my SQL create statement and my table schema and all

00:09:44.280 --> 00:09:45.060
of those things.

00:09:45.060 --> 00:09:45.400
Right?

00:09:45.460 --> 00:09:46.260
Like, where is that?

00:09:46.260 --> 00:09:47.640
Doesn't exist, does it?

00:09:47.640 --> 00:09:51.000
So you just say, I'm going to commit this thing.

00:09:51.240 --> 00:09:54.940
Also, if you go, you can do select statements against it, right?

00:09:54.940 --> 00:09:56.880
Query statement, SQL statements against it.

00:09:56.880 --> 00:10:01.020
You go and look at the docs, which I did.

00:10:01.020 --> 00:10:01.500
Here we go.

00:10:01.500 --> 00:10:03.880
Which are a bit of a work in progress here.

00:10:03.880 --> 00:10:08.920
However, if you go and check out the docs, it shows you, for example, under connecting that

00:10:08.920 --> 00:10:13.980
you can connect to just a path, but you could also connect to an S3 bucket.

00:10:13.980 --> 00:10:21.660
You can connect to some kind of Azure data lake container or Google cloud storage, or as

00:10:21.660 --> 00:10:22.660
you saw, a big query.

00:10:22.660 --> 00:10:24.400
So this is pretty interesting, right?

00:10:24.400 --> 00:10:27.900
Just change your connection string and you get these different data tables.

00:10:27.900 --> 00:10:28.440
Neat.

00:10:28.440 --> 00:10:29.120
Data lakes rather.

00:10:29.120 --> 00:10:29.420
Yeah.

00:10:29.700 --> 00:10:31.560
So that's what I have for people.

00:10:31.560 --> 00:10:36.000
If they're doing this kind of stuff, you know, this is something kind of a wrapper around

00:10:36.000 --> 00:10:36.480
those things.

00:10:36.480 --> 00:10:41.300
Also not super popular, but I don't know, this week I kind of felt like shining a light on

00:10:41.300 --> 00:10:44.000
things that were new and could maybe catch on with folks.

00:10:44.000 --> 00:10:44.600
Yeah.

00:10:44.600 --> 00:10:46.100
It looks fun.

00:10:46.100 --> 00:10:46.580
Yes.

00:10:46.580 --> 00:10:50.620
Also fun videos, I think.

00:10:50.620 --> 00:10:59.480
So I wanted to highlight a blog post on the PyCon blog at blog spot, which still just cracks

00:10:59.480 --> 00:10:59.880
me up.

00:10:59.880 --> 00:11:07.720
But anyway, it's PyCon US 2024 recap and recording release, which I was confused by.

00:11:07.720 --> 00:11:11.500
I would have thought a recording release was something you had to sign to make sure that

00:11:11.500 --> 00:11:13.220
your video was releasable.

00:11:13.220 --> 00:11:19.580
But it's no, we just wanted to say that the videos from PyCon are out and I'll take a look

00:11:19.580 --> 00:11:20.300
at those in a second.

00:11:20.560 --> 00:11:27.760
One of the highlights that they noticed was that there were a lot of people showing up.

00:11:27.760 --> 00:11:31.520
There was a total attendance of 2,991.

00:11:31.520 --> 00:11:37.100
That's 2,551 in person and 440 online.

00:11:37.100 --> 00:11:38.600
So that's pretty cool.

00:11:38.600 --> 00:11:39.880
I was just curious.

00:11:39.880 --> 00:11:40.800
I looked.

00:11:40.800 --> 00:11:49.940
Michael reminded me that if you go to look at PyCon on Wikipedia, it has a list of years of

00:11:49.940 --> 00:11:50.400
attendees.

00:11:50.400 --> 00:11:58.260
I think it was like a hotel or something.

00:11:58.260 --> 00:11:58.860
Yeah.

00:11:58.860 --> 00:12:04.700
And then I started going in Portland and we were at over 3,000 in Portland.

00:12:05.640 --> 00:12:08.520
And then Cleveland was over 3,000 as well.

00:12:08.520 --> 00:12:11.760
And then the pandemic hit and it went down quite a ways.

00:12:11.760 --> 00:12:15.280
But we're back to better numbers.

00:12:15.280 --> 00:12:17.200
2022 was 1,700.

00:12:17.200 --> 00:12:22.000
2023 now is over, was 2,100.

00:12:22.000 --> 00:12:24.980
And now we're up to 2,500-ish in person.

00:12:24.980 --> 00:12:26.240
Let's say it's going better.

00:12:26.960 --> 00:12:28.180
I think I'm not.

00:12:28.180 --> 00:12:34.360
If I'd be totally up for going possibly next year, but I'm totally going to hit Long Beach

00:12:34.360 --> 00:12:35.240
in 2026.

00:12:35.240 --> 00:12:36.080
That sounds great.

00:12:36.080 --> 00:12:37.560
Oh, yeah.

00:12:37.560 --> 00:12:39.080
I'm definitely going to Long Beach.

00:12:39.080 --> 00:12:39.560
Yeah.

00:12:39.560 --> 00:12:40.960
Bring on some SoCal.

00:12:40.960 --> 00:12:41.520
Let's do it.

00:12:41.740 --> 00:12:41.980
Okay.

00:12:41.980 --> 00:12:46.340
So they also announced in this announcement that there's a, where is it?

00:12:46.340 --> 00:12:47.120
Somewhere in there.

00:12:47.120 --> 00:12:49.600
It has a link to the YouTube thing.

00:12:49.600 --> 00:12:52.220
So you can find the link there, but you can also see it in our show notes.

00:12:52.220 --> 00:12:56.540
So if you go to PyCon US at YouTube, all the videos are now up.

00:12:56.540 --> 00:13:00.420
And my favorite way to get them is to just hop over to the playlist.

00:13:00.420 --> 00:13:06.540
You can go to the, there's a 2024 thing, but underneath it, you can see the full playlist.

00:13:06.540 --> 00:13:12.780
And I like that one because I can see all of the names of the, of the videos.

00:13:12.780 --> 00:13:15.540
So you don't just hit play on the playlist and just binge.

00:13:15.540 --> 00:13:17.800
No, no way.

00:13:17.800 --> 00:13:23.820
But so if you, if you just hit the playlist though, if you start it, you can pause it.

00:13:23.820 --> 00:13:29.060
But then all the little, all the playlist is over on the side, but you can't see the

00:13:29.060 --> 00:13:29.600
titles.

00:13:29.600 --> 00:13:30.220
Yeah.

00:13:30.220 --> 00:13:30.480
Yeah.

00:13:30.480 --> 00:13:30.640
Yeah.

00:13:30.640 --> 00:13:31.760
So I agree with you.

00:13:31.760 --> 00:13:34.040
This is the same way as I do the same way.

00:13:34.040 --> 00:13:39.280
Anyway, I've already got queued up and you can search, you can search easier with this,

00:13:39.280 --> 00:13:40.740
this way as well.

00:13:40.740 --> 00:13:41.420
I'll go away.

00:13:41.420 --> 00:13:46.020
And so I already queued up a search for test stuff, of course.

00:13:46.020 --> 00:13:50.180
And I've got queued up pipe, pipe test for unit testers by Paul Gansel.

00:13:50.180 --> 00:13:51.660
And then this one looks pretty good.

00:13:51.720 --> 00:13:54.860
Testing data pipelines with the Emotish Swain.

00:13:54.860 --> 00:13:56.100
So yeah, it does look cool.

00:13:56.100 --> 00:13:58.160
Anyway, lots of stuff to check out.

00:13:58.160 --> 00:13:58.700
Awesome.

00:13:58.700 --> 00:13:59.260
Awesome.

00:13:59.260 --> 00:14:00.520
That's all we got for that.

00:14:00.520 --> 00:14:01.520
That's all we got.

00:14:01.520 --> 00:14:03.220
Those are all of our main items.

00:14:03.220 --> 00:14:04.240
Yeah.

00:14:04.240 --> 00:14:05.700
Got any extras?

00:14:05.700 --> 00:14:06.520
I do.

00:14:06.520 --> 00:14:09.320
I have, I have multiple.

00:14:09.320 --> 00:14:12.240
I have a couple of things I want to talk about actually.

00:14:12.240 --> 00:14:14.560
One, I just impromptu added here.

00:14:14.560 --> 00:14:19.360
So I've been, one of the things, one of the things I've been working on, Brian, is trying

00:14:19.360 --> 00:14:26.060
to do like a little bit less being not distracted by my phone, but just pulled in by my phone

00:14:26.060 --> 00:14:28.100
and other digital things.

00:14:28.100 --> 00:14:28.400
Right.

00:14:28.400 --> 00:14:33.480
You go, you're like, oh, I got a notification for a text from someone or my music stopped.

00:14:33.480 --> 00:14:34.500
Why the heck did it stop?

00:14:34.500 --> 00:14:35.340
Happy AirPods.

00:14:35.340 --> 00:14:37.680
I got to go back and like, find it and make it go again.

00:14:37.680 --> 00:14:39.280
Because I paused it for three minutes.

00:14:39.280 --> 00:14:40.460
So it must have killed the app.

00:14:40.460 --> 00:14:41.380
Like that makes sense.

00:14:41.380 --> 00:14:42.020
You know what?

00:14:42.020 --> 00:14:43.140
Super computer in your pocket.

00:14:43.140 --> 00:14:47.620
So you go and open it up and you're like, oh wait, that has a little dot or that has a

00:14:47.620 --> 00:14:49.440
little like badge of three on red.

00:14:49.440 --> 00:14:49.920
What is that?

00:14:49.920 --> 00:14:51.840
And then you start scrolling and then you're over there.

00:14:51.840 --> 00:14:58.040
And then, you know, it just, there's just this like pressure or this sort of gravity

00:14:58.040 --> 00:14:59.920
of, of that thing being around.

00:14:59.920 --> 00:15:03.460
So I am taking an attempt and I would love to hear your thoughts on this.

00:15:03.540 --> 00:15:09.040
So making an attempt to make my home screen feel less, more, less like a black hole

00:15:09.040 --> 00:15:11.620
that sucks me in and more like a, I've come here for a purpose.

00:15:11.620 --> 00:15:13.620
Let me do the thing and then go on.

00:15:13.620 --> 00:15:19.880
I would, I looked at maybe getting an Android phone, like a really option to have like a

00:15:19.880 --> 00:15:23.560
real dumb interface, like the nothing phone would be really cool or something like that.

00:15:23.560 --> 00:15:28.160
But with my Apple watch and all my other things, basically I have to just throw that thing

00:15:28.160 --> 00:15:31.940
in the trash if I switched to Android, which is really unfortunate, but I'm like, all right,

00:15:31.940 --> 00:15:32.900
well, I'll stick with my iPhone.

00:15:33.200 --> 00:15:35.920
So I'm, I started using this thing called dumb phone.

00:15:35.920 --> 00:15:36.600
Have you heard of this?

00:15:36.600 --> 00:15:37.200
No.

00:15:37.200 --> 00:15:44.600
So what it does is it uses some weird tricks to take over your home screen on iPhone.

00:15:44.600 --> 00:15:48.160
And it just has a really, really simple display.

00:15:48.160 --> 00:15:52.260
Like the phone, instead of being an icon, it's just the word phone, your messages, instead

00:15:52.260 --> 00:15:56.580
of being the green thing with the, like the three in red is just the word messages and so on.

00:15:56.800 --> 00:15:57.300
Okay.

00:15:57.300 --> 00:16:00.480
And so for example, here's a, I'll link to it.

00:16:00.480 --> 00:16:01.480
I'll link to it.

00:16:01.480 --> 00:16:01.480
I'll link to it.

00:16:01.480 --> 00:16:02.480
I'll link to it.

00:16:02.480 --> 00:16:04.160
It's a screenshot of my iPhone 13 mini.

00:16:04.160 --> 00:16:08.460
It just says web bone messages, maps, weather, and photos on a gray white text on a gray background.

00:16:08.460 --> 00:16:09.580
And you can swipe it over.

00:16:09.580 --> 00:16:13.620
Like the next one I think is videos, podcast news, something like that.

00:16:13.620 --> 00:16:17.020
You know, and the ones like productivity, like mail and calendar.

00:16:17.020 --> 00:16:17.620
Okay.

00:16:17.620 --> 00:16:20.840
If you still want, you still wrote where you're at Mac, you can, you can pull down, you can

00:16:20.840 --> 00:16:24.640
search, or you can even keep swiping until you get past this.

00:16:24.640 --> 00:16:29.700
Anyway, this, I'm trying this and people, if they want to try to go down this path so far,

00:16:29.700 --> 00:16:30.340
I'm liking it.

00:16:30.340 --> 00:16:32.200
I've been messing with my phone.

00:16:32.200 --> 00:16:33.320
It's been effective.

00:16:33.320 --> 00:16:35.400
I've been like stuck in my phone less.

00:16:35.400 --> 00:16:37.380
I'm not a person like, oh, I can't have my phone with me.

00:16:37.380 --> 00:16:38.440
I have it with me all the time.

00:16:38.440 --> 00:16:43.140
But when I go and like check my messages, I don't end up somewhere else as often, let's say.

00:16:43.560 --> 00:16:49.100
So I did, I just like took, I've just got a handful of things like those sorts of things

00:16:49.100 --> 00:16:54.200
on my home screen, but I just have a few on my, on the first screen and everything else

00:16:54.200 --> 00:16:55.300
is on some other page.

00:16:55.300 --> 00:16:56.760
Yeah, that makes sense.

00:16:56.760 --> 00:17:00.400
So that I can just see my, and then I have a background picture of my lovely wife there

00:17:00.400 --> 00:17:00.980
so I can see.

00:17:00.980 --> 00:17:03.560
Yeah, I did have to give it my background.

00:17:03.560 --> 00:17:06.920
I guess I could put a background, but it wouldn't look right because the way this thing works.

00:17:06.920 --> 00:17:09.480
Also, I took off all of the badges.

00:17:10.300 --> 00:17:15.060
The, the only thing that I, the only thing that gets a little number that

00:17:15.060 --> 00:17:21.140
I still left was the phone messages because I actually don't check that very much.

00:17:21.140 --> 00:17:22.780
So I'd like to see if there's a message.

00:17:22.780 --> 00:17:24.520
Not, not actual.

00:17:24.520 --> 00:17:25.100
Oh yeah.

00:17:25.100 --> 00:17:29.280
Actual messages and, you know, phone, like somebody left a voicemail.

00:17:29.280 --> 00:17:31.560
Like who does that anymore anyway?

00:17:31.560 --> 00:17:34.440
But, but at the same time, I don't answer my phone.

00:17:34.440 --> 00:17:39.340
So if, if I don't recognize it, so the doctor might leave it messages anyway.

00:17:39.340 --> 00:17:40.060
Yeah, exactly.

00:17:40.060 --> 00:17:42.980
But I'll be curious to see how long you can deal with that.

00:17:42.980 --> 00:17:48.020
You could also just get a cheap phone, but you know, maybe you can, but that's hard to

00:17:48.020 --> 00:17:48.400
do now.

00:17:48.400 --> 00:17:49.300
It's super.

00:17:49.300 --> 00:17:54.800
Well, it's like, okay, well, I also want to have, you know, a nice GPS if I'm somewhere

00:17:54.800 --> 00:17:59.000
and I want to have CarPlay in my car because I have like a big display that's like a beautiful

00:17:59.000 --> 00:18:00.180
screen while I'm driving.

00:18:00.180 --> 00:18:01.720
And yeah, it's like.

00:18:01.720 --> 00:18:05.800
And occasionally you're stuck somewhere and you want to read something or whatever.

00:18:06.020 --> 00:18:06.180
Yeah.

00:18:06.180 --> 00:18:06.360
Yeah.

00:18:06.360 --> 00:18:06.440
Yeah.

00:18:06.440 --> 00:18:07.220
I'm not trying to not use.

00:18:07.220 --> 00:18:11.360
I'm just trying to like, when I open and I look at it, I don't want it to be a black hole.

00:18:11.360 --> 00:18:15.080
And right now, oddly, it's like a very dark gray, not black, but.

00:18:15.200 --> 00:18:15.800
It's a gray hole.

00:18:15.800 --> 00:18:16.920
It's a gray hole.

00:18:16.920 --> 00:18:18.140
That has no interest to me.

00:18:18.140 --> 00:18:19.000
Okay.

00:18:19.000 --> 00:18:19.520
I will see.

00:18:19.520 --> 00:18:20.680
I'll report back.

00:18:20.680 --> 00:18:21.440
I'll report back.

00:18:21.440 --> 00:18:23.940
Either I give up or I do that.

00:18:23.940 --> 00:18:24.940
And then one more thing.

00:18:24.940 --> 00:18:29.820
We're coming up on the last time for the Code in a Castle.

00:18:29.980 --> 00:18:35.560
So if you want to come to Italy with me and talk about Python and databases and APIs and

00:18:35.560 --> 00:18:39.560
all sorts of fun stuff, got a couple of weeks to sign up.

00:18:39.560 --> 00:18:43.280
So codeinacastle.com and I hope to see you there.

00:18:43.280 --> 00:18:43.880
Nice.

00:18:43.880 --> 00:18:44.380
Cool.

00:18:44.380 --> 00:18:50.280
The extra I've got is I want to say, hey, I finally got the new course done.

00:18:50.280 --> 00:18:52.180
So Hello pytest is available.

00:18:52.180 --> 00:18:54.780
I got to figure out how to take this away.

00:18:54.780 --> 00:18:56.740
It says 16 lessons, but it's not.

00:18:56.740 --> 00:18:57.580
It's 12 lessons.

00:18:58.280 --> 00:19:04.260
Some of the things, it's like counting the intro and the source code as lessons.

00:19:04.260 --> 00:19:05.320
Those aren't really lessons.

00:19:05.320 --> 00:19:05.740
Anyway.

00:19:05.740 --> 00:19:10.160
So 16 lessons under 90 minutes, I think.

00:19:10.160 --> 00:19:13.800
Slightly under 90 minutes, including the intro and outro.

00:19:13.800 --> 00:19:15.660
So there are only a few minutes of video there.

00:19:15.660 --> 00:19:17.680
But check it out.

00:19:17.680 --> 00:19:26.240
You can have full, the full content, table of contents is there at courses.pythontest.com.

00:19:26.620 --> 00:19:27.820
And yeah, loved it.

00:19:27.820 --> 00:19:29.420
Loved to hear what people think.

00:19:29.420 --> 00:19:32.160
And I'm going to just stick it with 10 bucks for a while.

00:19:32.160 --> 00:19:35.900
I've had a lot of great feedback that said that's about, that's a cool price point.

00:19:35.900 --> 00:19:37.660
So I'm going to leave it for a while.

00:19:37.660 --> 00:19:38.300
Awesome.

00:19:38.300 --> 00:19:38.820
Anyway.

00:19:38.820 --> 00:19:39.560
And congratulations.

00:19:39.560 --> 00:19:40.500
That's a big deal.

00:19:40.500 --> 00:19:41.120
Thanks.

00:19:41.120 --> 00:19:44.780
And I'm kind of, we talked about this a little bit.

00:19:44.780 --> 00:19:46.900
I used Camtasia to record this.

00:19:46.900 --> 00:19:54.420
And I'm going to, I think I'm going to try to try working with OBS Studio a little bit.

00:19:54.420 --> 00:19:55.300
Yeah, you definitely should.

00:19:55.300 --> 00:20:01.020
There's some stuff I love about Camtasia though that OBS doesn't seem like it does.

00:20:01.020 --> 00:20:03.540
Let's talk after.

00:20:03.540 --> 00:20:04.000
Yeah.

00:20:04.000 --> 00:20:04.620
Let's talk after.

00:20:04.620 --> 00:20:05.500
There's some really neat stuff.

00:20:05.580 --> 00:20:07.540
I know you have a little mini stream deck as well.

00:20:07.540 --> 00:20:11.920
And that's really awesome for like swapping up the views while you're doing recording and stuff.

00:20:11.920 --> 00:20:12.220
So.

00:20:12.220 --> 00:20:12.660
Yeah.

00:20:12.660 --> 00:20:13.120
Yeah.

00:20:13.120 --> 00:20:13.520
Cool.

00:20:13.520 --> 00:20:15.620
Well, do you have anything funny for us?

00:20:15.620 --> 00:20:17.220
I will let you be the judge.

00:20:17.300 --> 00:20:19.040
I have philosophy for us.

00:20:19.040 --> 00:20:19.540
Okay.

00:20:19.540 --> 00:20:24.400
So previously we've talked about the Tau of programming and I want to come back to the Tau of programming.

00:20:24.400 --> 00:20:31.140
And this is like a parody, ancient philosophy, sort of Eastern philosophy, sort of thing here.

00:20:31.140 --> 00:20:35.500
So this one is 4.3 from the Tau.

00:20:35.500 --> 00:20:35.820
Okay.

00:20:35.820 --> 00:20:36.440
Okay.

00:20:36.440 --> 00:20:39.780
A master was explaining the nature of Tau to one of his novices.

00:20:39.780 --> 00:20:44.580
The Tau is embodied in all software, regardless of how insignificant, said the master.

00:20:44.800 --> 00:20:47.320
Is the Tau in a handheld calculator?

00:20:47.320 --> 00:20:48.180
Asked the novice.

00:20:48.180 --> 00:20:50.340
It is, came the reply.

00:20:50.340 --> 00:20:51.920
Is the Tau in a video game?

00:20:51.920 --> 00:20:52.960
Continued the novice.

00:20:52.960 --> 00:20:55.560
It is even in a video game, said the master.

00:20:55.560 --> 00:20:58.480
Is the Tau in the DOS or a personal computer?

00:20:58.480 --> 00:21:01.060
The master coughed and shifted position slightly.

00:21:01.060 --> 00:21:02.680
The lesson is over for today, he said.

00:21:02.680 --> 00:21:05.380
Yeah.

00:21:05.380 --> 00:21:08.040
Pretty good.

00:21:08.040 --> 00:21:08.580
Yeah.

00:21:08.580 --> 00:21:09.040
Yeah.

00:21:09.040 --> 00:21:09.680
That's good.

00:21:09.680 --> 00:21:14.620
And you can be okay with like joking about DOS.

00:21:14.720 --> 00:21:16.200
Because it doesn't even exist anymore.

00:21:16.200 --> 00:21:16.800
Yeah, exactly.

00:21:16.800 --> 00:21:17.700
Exactly.

00:21:17.700 --> 00:21:19.240
It's not going to hurt anybody.

00:21:19.240 --> 00:21:20.140
Nobody's.

00:21:20.140 --> 00:21:23.600
Except for those three people who are still on their 386 and won't give it up.

00:21:23.600 --> 00:21:26.780
Word perfect is perfect for me.

00:21:26.780 --> 00:21:27.460
I love it.

00:21:27.460 --> 00:21:28.400
Come on.

00:21:28.400 --> 00:21:30.480
I remember getting my 386.

00:21:30.480 --> 00:21:32.080
I'm like, gosh, I don't think I can.

00:21:32.080 --> 00:21:34.520
I don't think I'll need another computer for a really long time.

00:21:34.520 --> 00:21:34.960
I know.

00:21:34.960 --> 00:21:36.960
I got a 486 DX33.

00:21:36.960 --> 00:21:39.640
Not the SX25 megahertz.

00:21:39.640 --> 00:21:41.020
The DX33.

00:21:41.020 --> 00:21:42.240
And it had a turbo button.

00:21:42.240 --> 00:21:43.080
And it was amazing.

00:21:43.080 --> 00:21:44.220
A turbo button.

00:21:44.540 --> 00:21:45.740
Like, why would you turn it off?

00:21:45.740 --> 00:21:50.820
Because if you wanted to play the games written for the 286, they went really fast and you couldn't play them at all.

00:21:50.820 --> 00:21:51.300
It was out of control.

00:21:51.300 --> 00:21:56.800
So if you hit, if you disable turbo, it was more of a slow it down button, but they didn't want to call it that.

00:21:56.800 --> 00:22:01.760
So you could play the ones that just use the frame rate instead of real time or frame.

00:22:01.760 --> 00:22:04.120
Like MechWarrior and stuff, I think was out of control.

00:22:04.120 --> 00:22:08.160
It was like those old record players that you had that speed controls on them.

00:22:08.460 --> 00:22:09.160
Yes, exactly.

00:22:09.160 --> 00:22:10.840
For the small ones or the big ones.

00:22:10.840 --> 00:22:11.020
Yeah.

00:22:11.020 --> 00:22:12.480
45s and whatever.

00:22:12.480 --> 00:22:13.020
Okay.

00:22:13.020 --> 00:22:13.480
Nice.

00:22:13.480 --> 00:22:14.000
Okay.

00:22:14.000 --> 00:22:17.420
Well, thanks again for our wonderful Python bytes.

00:22:17.420 --> 00:22:19.700
And we'll see everybody next week.

00:22:19.700 --> 00:22:20.280
See you later.