WEBVTT

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

00:00:04.960 --> 00:00:09.700
This is episode 355, recorded October 3rd, 2023.

00:00:09.700 --> 00:00:11.180
And I am Brian Okken.

00:00:11.180 --> 00:00:13.360
And I am Michael Kennedy.

00:00:13.360 --> 00:00:17.220
I almost said the second because I thought we were going to record yesterday and we didn't.

00:00:17.220 --> 00:00:19.000
But I had it off.

00:00:19.000 --> 00:00:20.560
Anyway, welcome everybody.

00:00:20.560 --> 00:00:23.380
It's good to have the show.

00:00:23.380 --> 00:00:34.220
Thank you, everyone, for supporting us through purchasing courses at Talk Python Training or purchasing the pytest course, of course, or supporting us on Patreon.

00:00:34.220 --> 00:00:35.480
We love Patreon supporters.

00:00:35.480 --> 00:00:45.700
And if you want to reach us, reach us through Fosstodon on Mastodon at Michael Kennedy, @brianokken, and at Python Bytes.

00:00:45.700 --> 00:00:50.880
And if you're listening to this, you can also join us live sometimes.

00:00:50.880 --> 00:00:59.500
We usually are at Tuesdays at 11, Tuesdays at 11-ish on Pacific time.

00:00:59.500 --> 00:01:00.940
So join us.

00:01:00.940 --> 00:01:04.160
And you can just go to pythonbytes.fm to see the link.

00:01:04.160 --> 00:01:06.300
But we have some exciting news.

00:01:06.300 --> 00:01:07.780
Yesterday was an exciting day.

00:01:07.780 --> 00:01:09.520
Tell us why.

00:01:09.520 --> 00:01:13.160
We've been waiting a year for this one.

00:01:13.160 --> 00:01:16.520
Python 312 is out.

00:01:16.520 --> 00:01:17.780
Absolutely.

00:01:17.780 --> 00:01:17.920
Absolutely.

00:01:17.920 --> 00:01:19.960
Absolutely big news.

00:01:20.440 --> 00:01:25.620
If you look at how much stuff it's easy to just go, oh, what are there?

00:01:25.620 --> 00:01:30.540
It's like these four new features I care about or something along those lines.

00:01:30.540 --> 00:01:32.300
It's like, okay, well, there's a new Python.

00:01:32.300 --> 00:01:41.200
If you look at the change log, Brian, if you look at the, what's new and you scroll this, I threw this into omnivore.app.

00:01:42.060 --> 00:01:47.480
And it said it's 48 minutes of reading to read the, what's in this release.

00:01:47.480 --> 00:01:47.980
Wow.

00:01:47.980 --> 00:01:49.480
That's a lot.

00:01:49.480 --> 00:01:50.260
That's a lot of stuff.

00:01:50.260 --> 00:01:52.460
That's a lot of good things.

00:01:53.560 --> 00:02:02.560
I think it's, I don't even know how much it's called out in the, what's new, because it's a little tricky to put in the, not new, it's just more.

00:02:03.360 --> 00:02:12.920
But the faster CPython initiative, I think, you know, is going strong for 312 as it was for 11 and it will be for 13.

00:02:13.960 --> 00:02:19.100
So not even covered in the, what's new, I think is Python 312 should just be faster.

00:02:19.100 --> 00:02:20.440
That's really cool.

00:02:20.440 --> 00:02:21.280
Yeah.

00:02:21.280 --> 00:02:30.660
But if you look at the, you know, they kind of, it's really nice, even though it's 48 minutes of reading, they do put the headline items at the front here.

00:02:30.660 --> 00:02:35.820
So there's new type parameter syntax and PEP 695.

00:02:35.820 --> 00:02:38.540
So Brian, how do you like your generics?

00:02:38.540 --> 00:02:42.320
I haven't thought about it actually.

00:02:42.640 --> 00:02:45.900
Or your templates, if you're a C++ guy, they don't call them generics.

00:02:45.900 --> 00:02:49.160
Like C# and Java, they call them generics.

00:02:49.160 --> 00:02:52.200
But C++ calls them templates.

00:02:52.200 --> 00:02:54.820
So, but Python calls them generics.

00:02:54.820 --> 00:02:57.180
We have that, we had it before actually.

00:02:57.180 --> 00:02:59.420
So this is not new, new.

00:02:59.420 --> 00:03:06.680
Like there were ways if I scroll down somewhere in this big long list, there was like a, here's how you do it before.

00:03:06.680 --> 00:03:08.520
And here's how you do it now.

00:03:08.520 --> 00:03:11.980
Honestly, meh.

00:03:12.260 --> 00:03:17.820
I mean, no disrespect to people working on it, but it's just not like a thing that, that I'm going to be focusing.

00:03:17.820 --> 00:03:19.260
It's just not a huge deal to me.

00:03:19.260 --> 00:03:19.440
Right.

00:03:19.440 --> 00:03:21.180
It's not something I feel like I'm going to do a lot of.

00:03:21.180 --> 00:03:22.300
Maybe.

00:03:23.300 --> 00:03:30.000
I feel like most of the places that I would have wanted to use it, it's kind of like the self parameter sort of takes care of that for me.

00:03:30.000 --> 00:03:33.940
But anyway, very exciting for people who do need to use this.

00:03:33.940 --> 00:03:44.000
And if you're building a library, like a package, possibly this will give you a lot of flexibility for extensions and sensibility and whatnot.

00:03:44.000 --> 00:03:45.080
But I don't know.

00:03:45.080 --> 00:03:45.920
What do you think?

00:03:45.920 --> 00:03:46.400
Exciting?

00:03:46.980 --> 00:03:51.520
I think I'm not excited about it yet, but I think I'll be using it probably pretty soon.

00:03:51.520 --> 00:03:52.340
So, yeah.

00:03:52.540 --> 00:03:53.460
Yeah.

00:03:53.460 --> 00:03:55.880
f-strings are all grown up now.

00:03:55.880 --> 00:03:56.340
Oh boy.

00:03:56.340 --> 00:03:57.520
They can do all the Python.

00:03:57.520 --> 00:03:58.680
So f-strings.

00:03:58.680 --> 00:04:06.580
I don't know if people know, but f-strings have their own separate implementation, separate to like regular strings and stuff.

00:04:06.580 --> 00:04:09.020
And a lot of it was done in C.

00:04:09.020 --> 00:04:10.780
They're really wild.

00:04:10.780 --> 00:04:15.580
Because of that, they're somewhat limited in what you can put inside the curly braces.

00:04:15.580 --> 00:04:17.420
There's like different kinds of expressions.

00:04:17.420 --> 00:04:26.720
You can do ternary, like if tests, and you can just say like thing dot upper, you know, as what goes in there.

00:04:26.720 --> 00:04:29.620
But you can't write full Python in f-strings.

00:04:29.620 --> 00:04:36.340
And the most obvious was you couldn't put quotes in the little curly, between the curly braces.

00:04:36.340 --> 00:04:39.560
Or you couldn't put the same quotes that you had on the outside.

00:04:39.560 --> 00:04:40.400
Yeah.

00:04:40.400 --> 00:04:46.500
I'd always be like, okay, this one's getting single quotes because the string is a double quote or vice versa.

00:04:46.500 --> 00:04:47.900
You have to kind of think it out.

00:04:47.900 --> 00:04:52.640
So now it's like a little more free form what can go in there.

00:04:52.640 --> 00:04:59.740
I don't know that's necessarily a recommendation of writing your app inside the F string, but, you know, it gives you more flexibility.

00:04:59.740 --> 00:05:00.360
So there it is.

00:05:00.780 --> 00:05:07.260
I am super psyched about 648, which is a unique per interpreter Gil, Eric Snow.

00:05:07.260 --> 00:05:09.400
Man, you've been on this for a while.

00:05:09.400 --> 00:05:10.420
Congratulations on that.

00:05:10.420 --> 00:05:10.980
This is out.

00:05:10.980 --> 00:05:18.000
So this has mega possibilities to unlocking multi-threaded performance in Python.

00:05:18.000 --> 00:05:23.780
Don't know that it's actually has anything to do with threads yet.

00:05:24.160 --> 00:05:27.040
I think it's way more manual and maybe even just at the C level.

00:05:27.040 --> 00:05:28.540
Yeah.

00:05:28.540 --> 00:05:32.880
It said that the PEP says it's at the C API right now.

00:05:32.880 --> 00:05:37.140
3.13 might have a Python API access to it.

00:05:37.140 --> 00:05:37.900
Yeah.

00:05:38.060 --> 00:05:45.140
I mean, what I would love is like, I'm going to create a thread and I'll pass a flag that says, use your own Gil.

00:05:45.140 --> 00:05:46.260
Yeah.

00:05:46.260 --> 00:05:53.960
Or I'm going to create a thread pool executor and say for every thread that you create, get a new Gil.

00:05:53.960 --> 00:05:57.220
That means full on parallelism in Python.

00:05:57.220 --> 00:05:59.980
I mean, I'm sitting here on my.

00:06:00.340 --> 00:06:06.620
Well, what we're talking about then is, is basically forking off a new interpreter from Python.

00:06:06.620 --> 00:06:07.180
Yes.

00:06:07.180 --> 00:06:10.500
In a sense, but without a new process.

00:06:10.500 --> 00:06:11.400
Okay.

00:06:11.400 --> 00:06:11.840
Right.

00:06:11.840 --> 00:06:12.360
Yeah.

00:06:12.360 --> 00:06:13.060
So.

00:06:13.060 --> 00:06:15.260
Why not?

00:06:15.260 --> 00:06:17.620
You can't, I don't believe you can share.

00:06:17.620 --> 00:06:20.620
Maybe you can share data directly.

00:06:20.620 --> 00:06:24.240
I don't, I don't think, I don't think you can share it directly because it would have to share the Gil.

00:06:24.740 --> 00:06:31.040
So I think you've got to like serialize the data over, but you can get better performance if you don't have to start a bunch of processes.

00:06:31.040 --> 00:06:31.560
Yeah.

00:06:31.560 --> 00:06:32.080
Potentially.

00:06:32.080 --> 00:06:33.680
And do some message passing.

00:06:33.680 --> 00:06:39.600
But you know, here on my M2 pro mini, I have 10 cores and all the Python I want to write.

00:06:39.600 --> 00:06:44.480
I'm only going to ever be able to do one cores worth of work for computational things.

00:06:44.480 --> 00:06:51.160
Unless I go crazy with like the no Gil Cython or write some C code or, you know, things like that.

00:06:51.160 --> 00:06:51.300
Right.

00:06:51.340 --> 00:06:56.960
So this, this has the possibility to take advantage of, of, you know, modern hardware, right?

00:06:56.960 --> 00:06:57.460
Very exciting.

00:06:57.460 --> 00:06:59.580
Low impact monitoring.

00:06:59.580 --> 00:07:07.880
So if you want to like hook into events, for like profiling, debugging type of stuff, you can do that with less.

00:07:07.880 --> 00:07:10.860
Heisen bug effects.

00:07:10.860 --> 00:07:19.240
And also one of the big things that came in 3.11 was, did you mean type of recommendations for, we couldn't import request.

00:07:19.620 --> 00:07:21.500
Did you mean requests plural?

00:07:21.500 --> 00:07:23.160
Things like that.

00:07:23.160 --> 00:07:23.400
Right.

00:07:23.400 --> 00:07:25.680
And so that's further improved.

00:07:25.680 --> 00:07:35.700
There's a buffer protocol, which allows direct access to memory of things like byte arrays and other low level items that you don't have to like go through the Python level.

00:07:35.700 --> 00:07:39.120
You just go, give me the direct access to the memory.

00:07:39.120 --> 00:07:39.800
That's kind of cool.

00:07:40.240 --> 00:07:40.500
Nice.

00:07:40.500 --> 00:07:41.240
Good to embed it.

00:07:41.240 --> 00:07:45.860
You can have, yeah, I bet path, path, path, path, path, path, path.

00:07:45.860 --> 00:07:47.660
It can be subclassed.

00:07:47.660 --> 00:07:48.600
That's kind of cool.

00:07:48.600 --> 00:07:51.100
Hey, OS module gets windows things.

00:07:51.100 --> 00:07:51.840
That's nice.

00:07:51.840 --> 00:07:52.980
Let's see.

00:07:53.660 --> 00:07:58.040
There's a command line interface that adds a SQLite three module.

00:07:58.040 --> 00:08:02.620
So, you know, you can do like Python dash M HTTP server or something along those lines.

00:08:02.620 --> 00:08:05.560
You can do that for SQLite now as well, which is kind of neat.

00:08:07.040 --> 00:08:08.900
Yeah, this is exciting.

00:08:08.900 --> 00:08:15.440
Async IO has some improvements with benchmarks showing up to a 75% speed improvement in certain areas.

00:08:15.440 --> 00:08:18.620
I'm sure not generally, but yeah.

00:08:18.620 --> 00:08:19.700
Bunch of other things.

00:08:19.700 --> 00:08:23.140
There's also some security updates, some API.

00:08:23.140 --> 00:08:27.000
There's performance improvements with comprehension inlining.

00:08:27.000 --> 00:08:30.240
And there's a Linux performance profiler.

00:08:30.240 --> 00:08:32.360
Yeah.

00:08:32.360 --> 00:08:34.120
Bunch of different things.

00:08:34.120 --> 00:08:36.980
And that's pretty much the highlights.

00:08:36.980 --> 00:08:42.080
I mean, there's some binning, some culling of the standard library.

00:08:42.080 --> 00:08:50.500
Like there was an async chat example implementation type of thing in the standard library.

00:08:50.500 --> 00:08:52.400
So it's not anymore.

00:08:52.400 --> 00:08:53.180
Good.

00:08:53.180 --> 00:08:55.800
Yeah.

00:08:55.800 --> 00:08:56.840
So that's not there.

00:08:57.360 --> 00:09:02.320
But generally, you can look at some of the things that were deprecated or removed.

00:09:02.320 --> 00:09:05.940
But yeah, that pretty much covers a few more type things.

00:09:05.940 --> 00:09:08.640
And that's your new Python.

00:09:08.640 --> 00:09:10.460
Awesome.

00:09:10.460 --> 00:09:11.980
Are you excited?

00:09:11.980 --> 00:09:13.700
How long till you switch to it?

00:09:13.700 --> 00:09:15.540
I'm working on it right now, man.

00:09:15.540 --> 00:09:16.680
Are you?

00:09:16.680 --> 00:09:17.200
Yeah.

00:09:17.200 --> 00:09:19.120
So, yeah.

00:09:19.120 --> 00:09:20.720
Wait a sec.

00:09:20.720 --> 00:09:25.080
I'm going to tell you a story.

00:09:25.840 --> 00:09:26.840
Okay.

00:09:26.840 --> 00:09:26.880
Okay.

00:09:26.880 --> 00:09:26.900
Okay.

00:09:26.900 --> 00:09:35.720
So yesterday, so I have been, I've been slowly becoming one of the, one of the maintainers for a plugin called pytest Repeat.

00:09:37.140 --> 00:09:40.880
And it, so it hadn't been tested.

00:09:40.880 --> 00:09:44.200
It hadn't, it had been tested up through 3.9, I believe.

00:09:44.200 --> 00:09:49.680
So, so I wanted to, but it worked fine on the newer Pythons.

00:09:49.680 --> 00:09:51.360
But I just wanted to make sure it was updated.

00:09:51.480 --> 00:09:59.760
So I did some things like move the, move the continuous integration to GitHub Actions.

00:09:59.760 --> 00:10:02.220
It was on Travis before.

00:10:02.220 --> 00:10:03.440
So I moved it to GitHub Actions.

00:10:03.860 --> 00:10:04.760
And so 3.12 is out.

00:10:04.760 --> 00:10:08.040
I wanted to, to update the test to 3.12, right?

00:10:08.040 --> 00:10:10.020
So this is using Tox.

00:10:10.020 --> 00:10:19.700
And so I just went through and updated the Tox Any file to add 3.12.

00:10:19.700 --> 00:10:21.140
I installed it on my machine.

00:10:21.140 --> 00:10:23.080
What's the problem?

00:10:24.080 --> 00:10:30.680
Ran it and created a new virtual environment, installed Tox, whatever, and ran it and it blew up.

00:10:30.680 --> 00:10:32.240
Oh no.

00:10:32.240 --> 00:10:32.860
Yeah.

00:10:32.860 --> 00:10:42.520
It, what, what happened is I got this, Python attribute error module package util has no attribute importer.

00:10:42.520 --> 00:10:44.220
Did you mean zip importer?

00:10:44.220 --> 00:10:45.980
I'm like, I didn't mean any of that stuff.

00:10:45.980 --> 00:10:48.660
So no idea.

00:10:48.660 --> 00:10:51.940
so I'm like trying to figure this out.

00:10:51.940 --> 00:10:55.060
Like clearly other people are releasing it 3.12.

00:10:55.060 --> 00:10:57.280
They've surely have come up with this.

00:10:57.280 --> 00:11:01.380
I dug through a long, I was researching a ton on this.

00:11:01.380 --> 00:11:09.220
and, basically I thought there's something weird going on between pip and Tox and Python 3.12.

00:11:09.220 --> 00:11:13.380
Cause I knew that the imp, imp, imp, importer thing was deprecated.

00:11:13.380 --> 00:11:17.600
I don't know what it is, but I knew it was deprecated and it was taken out in 3.12, I think.

00:11:17.600 --> 00:11:19.820
So it's not there.

00:11:20.240 --> 00:11:23.200
and no, mostly you don't have to care about it.

00:11:23.200 --> 00:11:25.480
except for I ran into this.

00:11:25.480 --> 00:11:26.480
So what was happening?

00:11:26.480 --> 00:11:27.760
I didn't know.

00:11:27.760 --> 00:11:29.640
So I did come up with a fix though.

00:11:29.640 --> 00:11:32.980
And I found out this morning what the, what really was going on.

00:11:32.980 --> 00:11:35.680
So it's a long story, but I'll try to make it quick.

00:11:36.120 --> 00:11:44.180
the, the fix I came up with was there was a, in, in, talks in a, you can say download equals true.

00:11:44.180 --> 00:11:50.240
So when it creates a virtual environment, it creates the, it updates to the latest Pip.

00:11:50.240 --> 00:11:56.160
So what was happening was, but without that I was using an older Pip, but I don't know.

00:11:56.240 --> 00:11:58.800
I didn't know why, why was it using an older Pip?

00:11:58.800 --> 00:12:01.360
that's the part where I didn't know why.

00:12:01.360 --> 00:12:03.860
So this fixed it, but it's kind of a bandaid.

00:12:03.860 --> 00:12:05.700
It's a little bit of an ugly bandaid.

00:12:05.700 --> 00:12:07.940
So what's the real fix?

00:12:08.540 --> 00:12:13.860
The real fix is, talks uses a package called virtual end.

00:12:13.860 --> 00:12:16.520
So that's not the built-in V envy.

00:12:16.520 --> 00:12:19.680
It's, it's the third party package, virtual end.

00:12:19.680 --> 00:12:23.780
And virtual end has some cool features.

00:12:23.780 --> 00:12:32.800
One of the things it does is it keeps a, a little cache of, third party packages to, to store, to load up.

00:12:32.800 --> 00:12:34.880
And it doesn't update them all the time.

00:12:34.880 --> 00:12:37.960
It does it like, I don't know, every 14 days or something like that.

00:12:38.240 --> 00:12:45.120
It, it, it's a kind of a slow update thing and it makes things run faster because you don't have to keep downloading all the time.

00:12:45.120 --> 00:12:47.240
But I had an old pip cached.

00:12:47.240 --> 00:12:58.420
So the real fix was, I went through and I probably didn't have to do the reset, but I called virtual end with reset app data.

00:12:58.420 --> 00:13:01.180
and then did an upgrade.

00:13:01.180 --> 00:13:04.860
And I probably could have just done the upgrade upgrade embed wheels.

00:13:05.040 --> 00:13:09.520
And it updated my pip cat cached pip to the latest.

00:13:09.520 --> 00:13:10.100
Anyway.

00:13:10.100 --> 00:13:14.160
So I'm going to, I wrote this article about how I patched it.

00:13:14.280 --> 00:13:23.000
I'm going to update it today to say, the real fix is to clean out your, your virtual end pip cash or virtual end of cash.

00:13:23.000 --> 00:13:27.220
So yes, I'm working on updating to three 12.

00:13:28.960 --> 00:13:30.360
So nice.

00:13:30.360 --> 00:13:30.840
Also.

00:13:30.840 --> 00:13:31.420
Yeah, that's cool.

00:13:31.420 --> 00:13:33.480
Have to shout out to, Juergen.

00:13:33.480 --> 00:13:35.160
I don't know how to pronounce his last name.

00:13:35.160 --> 00:13:36.020
G M A C H.

00:13:36.020 --> 00:13:40.380
Juergen helped me, to debug the problem today.

00:13:40.380 --> 00:13:41.220
So that was awesome.

00:13:41.220 --> 00:13:43.440
Excellent.

00:13:43.440 --> 00:13:44.840
one more shout out.

00:13:44.840 --> 00:13:50.800
Henry Schreiner says the buffer protocol that I described is not new, but the pure Python version of it.

00:13:51.000 --> 00:13:51.920
312 is.

00:13:51.920 --> 00:13:53.900
Oh, okay.

00:13:53.900 --> 00:13:54.840
Excellent.

00:13:54.840 --> 00:13:57.780
All right.

00:13:57.780 --> 00:13:58.800
Over to you.

00:13:58.800 --> 00:14:01.000
oh, I just did this.

00:14:01.000 --> 00:14:06.160
do we want to, this, this, this is my, I thought that was just a follow up to my topic.

00:14:06.160 --> 00:14:06.660
This is your topic.

00:14:06.660 --> 00:14:06.960
Okay.

00:14:06.960 --> 00:14:07.380
Excellent.

00:14:07.380 --> 00:14:07.840
Yeah.

00:14:07.840 --> 00:14:08.000
Yeah.

00:14:08.000 --> 00:14:08.120
Cool.

00:14:08.120 --> 00:14:08.800
All right.

00:14:09.400 --> 00:14:14.260
Let's talk about the president by talking a bit about the past.

00:14:14.260 --> 00:14:16.780
So very exciting news.

00:14:16.780 --> 00:14:21.660
The, the Python developers survey results are out.

00:14:21.660 --> 00:14:27.820
It's slightly confusing in that it says the Python developer survey, 2022 results.

00:14:27.820 --> 00:14:28.960
Like, wait a minute.

00:14:28.960 --> 00:14:30.720
It's September, 2023.

00:14:30.720 --> 00:14:36.620
Is this last year's one or the, no, this is the one that just came out on the PSF blog.

00:14:36.620 --> 00:14:48.640
They just on PyFound, they just announced like, these are finally put together, analyze a report from the 20, the end of 2022 is now out.

00:14:48.640 --> 00:14:49.700
So very exciting.

00:14:49.700 --> 00:14:50.680
And also new.

00:14:50.680 --> 00:14:56.340
I did a video on YouTube actually, where I had a first reaction to it.

00:14:56.340 --> 00:14:58.300
So this is an 18 and a half minute video.

00:14:58.300 --> 00:14:58.900
I'll link to it.

00:14:58.900 --> 00:15:00.600
You can check it out if you want to go deep.

00:15:00.600 --> 00:15:03.780
And because this video exists, we'll just kind of skim it, Brian.

00:15:03.840 --> 00:15:11.300
We won't go over too much of it, but I basically didn't open up or read the survey results until I hit record for this video.

00:15:11.300 --> 00:15:12.300
And then I just dove into it.

00:15:12.300 --> 00:15:12.700
So that's fun.

00:15:12.700 --> 00:15:15.860
People can, can check that out if they want, but let's see.

00:15:15.860 --> 00:15:17.000
We can hit some of the highlights.

00:15:18.160 --> 00:15:23.800
general Python usage, 85% of the people who Python, Python primarily that way.

00:15:23.800 --> 00:15:29.360
So it's not like a second language, you know, but it's mainly what they do, which is pretty cool.

00:15:29.360 --> 00:15:31.660
There's a lot of these that add to over a hundred.

00:15:31.660 --> 00:15:34.540
So, take it for what it is.

00:15:34.720 --> 00:15:46.600
There's also like a little gray, like a light gray and a dark gray, I don't know word or legend.

00:15:46.600 --> 00:15:50.120
And that will, they often overlay these things to show them side by side.

00:15:50.120 --> 00:15:56.500
So for example, it says Python usage with what other language, like if you're not, if you're going to use another language, what do you also use?

00:15:56.500 --> 00:16:00.380
In addition to Python, primarily being Python being the main language.

00:16:00.380 --> 00:16:06.760
And it has like, this one is the prior year and this year again, with the offset by one a little bit.

00:16:06.760 --> 00:16:09.380
So guess what the top three are?

00:16:09.380 --> 00:16:11.960
JavaScript, HTML and CSS.

00:16:11.960 --> 00:16:12.920
Are those languages?

00:16:12.920 --> 00:16:14.880
No, no.

00:16:14.880 --> 00:16:15.880
Can you make it?

00:16:15.880 --> 00:16:18.800
Here's a rule for what is a language in my mind?

00:16:18.800 --> 00:16:19.180
Probably.

00:16:19.180 --> 00:16:23.340
Can I make a thing that runs on its own from that set of syntax?

00:16:23.340 --> 00:16:24.140
JavaScript.

00:16:24.140 --> 00:16:24.700
Yes.

00:16:24.700 --> 00:16:25.620
C++.

00:16:25.620 --> 00:16:26.020
Yes.

00:16:26.020 --> 00:16:26.340
Java.

00:16:26.340 --> 00:16:26.660
Yes.

00:16:26.660 --> 00:16:27.540
Type script.

00:16:27.540 --> 00:16:28.060
Yes.

00:16:28.060 --> 00:16:28.740
CSS.

00:16:28.740 --> 00:16:29.260
No.

00:16:29.840 --> 00:16:43.020
But nonetheless, the reason I make that distinction is it's like, it's a, it's, I feel like it's a trade off of like, I do Java or I do Python or I could choose one or the other, but they're not.

00:16:43.020 --> 00:16:45.460
If it's not interchangeable, I'm not sure.

00:16:45.460 --> 00:16:45.800
I don't know.

00:16:45.800 --> 00:16:46.940
It's somewhat interesting, but.

00:16:46.940 --> 00:16:49.460
I'm, I'm on the fence.

00:16:49.460 --> 00:16:55.220
It's, they've got, they're both complicated enough that I think it takes training to learn it.

00:16:55.220 --> 00:17:04.340
So when, I mean, I wouldn't think, I wouldn't think of like any files as a language, but so they're a lot, they're a lot more complex than any file or something.

00:17:04.340 --> 00:17:05.640
True.

00:17:05.640 --> 00:17:06.100
All right.

00:17:06.720 --> 00:17:08.980
So I think I go on that every year.

00:17:08.980 --> 00:17:17.460
So the top, top three languages used along with Python, three of the four, cause there's a combo.

00:17:17.460 --> 00:17:19.100
I don't know.

00:17:19.100 --> 00:17:24.360
I would really call it separate language, but anyway, JavaScript, HTML, CSS combined and SQL.

00:17:24.360 --> 00:17:30.600
And those basically that block tells you, guess what people build web apps with Python, right?

00:17:30.600 --> 00:17:32.920
That's what it says here.

00:17:32.920 --> 00:17:39.020
And web apps are often five, six, seven different languages, which is partly why the web is hard.

00:17:39.020 --> 00:17:39.300
Right.

00:17:39.300 --> 00:17:41.520
But there's that.

00:17:41.520 --> 00:17:44.020
And then a bash and shell.

00:17:44.020 --> 00:17:47.820
I mean, that kind of speaks to the DevOps automation side of things.

00:17:47.820 --> 00:17:51.100
And then CC++ Brian, you're kind of down in that realm.

00:17:51.100 --> 00:17:51.360
Right.

00:17:51.360 --> 00:17:51.760
Yeah.

00:17:51.760 --> 00:17:53.300
That's most of the half my time.

00:17:53.300 --> 00:17:56.520
And that's interesting that that's that large still.

00:17:56.520 --> 00:17:57.880
So that's cool.

00:17:57.880 --> 00:17:58.240
Yeah.

00:17:58.240 --> 00:18:02.780
I think another thing you would want to consider here, if you like, look at this is a TypeScript

00:18:02.780 --> 00:18:03.920
and JavaScript.

00:18:03.920 --> 00:18:05.280
Those should be the same.

00:18:05.280 --> 00:18:12.240
If you say HTML slash JS, HTML slash CSS, you should say JavaScript slash TypeScript, which

00:18:12.240 --> 00:18:14.860
bumps that up even higher.

00:18:14.860 --> 00:18:15.200
Right.

00:18:15.200 --> 00:18:18.160
Because TypeScript is just like a better JavaScript.

00:18:18.160 --> 00:18:19.280
All right.

00:18:19.280 --> 00:18:20.220
Let's go.

00:18:20.760 --> 00:18:26.380
If you're going to do data science, most people use SQL as their first language that they're

00:18:26.380 --> 00:18:26.880
going to do.

00:18:26.880 --> 00:18:28.820
And yeah, that's interesting.

00:18:28.820 --> 00:18:30.380
Let's see.

00:18:30.380 --> 00:18:33.260
Some of these things are about like, how do you do work?

00:18:33.260 --> 00:18:35.660
I think it's interesting.

00:18:35.660 --> 00:18:36.360
This one here.

00:18:36.360 --> 00:18:38.460
What do you use Python for the most?

00:18:38.460 --> 00:18:39.620
Web development.

00:18:39.620 --> 00:18:45.400
Number one, data analysis and machine learning, which is kind of like the data science block.

00:18:45.400 --> 00:18:49.020
And then other whole bunch of other.

00:18:49.020 --> 00:18:57.700
And I think I kind of think of Python as having a one third, one third, one third kind of partitioning

00:18:57.700 --> 00:19:06.140
where the web development, API development stuff, service functions, all those things live in one

00:19:06.140 --> 00:19:08.260
third, and then data science lives in another third.

00:19:08.260 --> 00:19:12.760
And then there's like the catch all block of everything else.

00:19:12.760 --> 00:19:20.880
So this kind of says that maybe the web development side is a little smaller, but the random section is a little bit bigger.

00:19:21.380 --> 00:19:23.980
But roughly, I think that's a good rule of thumb.

00:19:23.980 --> 00:19:25.100
Yeah.

00:19:25.100 --> 00:19:26.600
Yeah.

00:19:26.600 --> 00:19:34.540
And I think finally, legacy Python has been vanquished.

00:19:34.540 --> 00:19:37.040
It's been vanquished for three years now.

00:19:37.040 --> 00:19:39.040
Python three versus Python two.

00:19:39.040 --> 00:19:43.540
Basically, it's Python three.

00:19:43.540 --> 00:19:45.860
That's like 94, 95%.

00:19:45.860 --> 00:19:47.940
Ironically, it went down a little bit.

00:19:49.460 --> 00:19:51.620
Python two made a bit of a comeback this year.

00:19:51.620 --> 00:19:52.340
Just barely.

00:19:52.340 --> 00:19:52.700
That's interesting.

00:19:52.700 --> 00:20:01.820
It's probably within the variability of the number of people and the type of people that responded to the survey more than it is a real trend.

00:20:01.820 --> 00:20:06.360
It's probably like, you know, plus or minus one or two, like plus or minus one would account for that just to be flat.

00:20:06.360 --> 00:20:07.860
Yeah, that's true.

00:20:07.860 --> 00:20:10.640
Anyway, it's like 95%.

00:20:10.640 --> 00:20:14.700
And that last 5%, they're never changing.

00:20:14.700 --> 00:20:17.120
You know what I mean?

00:20:17.280 --> 00:20:19.440
That's like the 2 million lines of Python two.

00:20:19.440 --> 00:20:22.020
It runs the trading system.

00:20:22.020 --> 00:20:23.300
You don't touch it.

00:20:23.300 --> 00:20:24.460
Like that kind of thing, right?

00:20:24.460 --> 00:20:25.180
Well, yeah.

00:20:25.180 --> 00:20:32.480
And I know some people that have frameworks built up on top with an embedded Python interpreter that it has Python two inside of it.

00:20:33.040 --> 00:20:43.400
And you'd have to completely change the whole architecture to rip it out and put three in there, which I say just throw the whole thing away and start over.

00:20:43.400 --> 00:20:47.160
But anyway, I know that.

00:20:47.160 --> 00:20:48.280
I'm going to do the big rewrite.

00:20:48.280 --> 00:20:49.820
I'm going to do the big rewrite.

00:20:49.820 --> 00:20:52.280
That's actually an incredible joke.

00:20:52.880 --> 00:20:53.640
It's not a joke.

00:20:53.640 --> 00:20:54.840
It's a parody video.

00:20:54.840 --> 00:20:57.200
It's like a music video song.

00:20:57.200 --> 00:20:58.300
I'm going to do the big rewrite.

00:20:58.300 --> 00:20:59.460
Maybe I'll put it in the show notes.

00:20:59.460 --> 00:21:01.940
It's not the joke for this week, but boy, it should be.

00:21:01.940 --> 00:21:02.320
It's good.

00:21:02.320 --> 00:21:05.400
All right.

00:21:05.400 --> 00:21:05.740
Let's see.

00:21:05.740 --> 00:21:08.040
I think that's...

00:21:08.040 --> 00:21:09.940
I'll probably leave it at that.

00:21:10.040 --> 00:21:14.540
I'll let people look through here, but like you mentioned, virtual EMV, that's number one there.

00:21:14.540 --> 00:21:15.120
What do you want to cover?

00:21:15.120 --> 00:21:16.900
Unit testing frameworks.

00:21:16.900 --> 00:21:19.800
Oh, is that a question here?

00:21:19.800 --> 00:21:20.220
Let's see.

00:21:20.220 --> 00:21:21.960
Just kidding.

00:21:21.960 --> 00:21:26.220
So, yeah, 51% by test.

00:21:26.220 --> 00:21:26.560
Yay!

00:21:26.560 --> 00:21:30.860
Coming in second, 35% none.

00:21:30.860 --> 00:21:32.920
This is a problem, people.

00:21:32.920 --> 00:21:36.380
Yeah.

00:21:36.380 --> 00:21:38.220
The second most popular framework.

00:21:38.220 --> 00:21:39.000
Is none.

00:21:39.620 --> 00:21:40.420
The third is unit test.

00:21:40.420 --> 00:21:40.960
Is to not ask the question.

00:21:40.960 --> 00:21:47.380
And I think unit test is largely there because you don't want dependencies, right?

00:21:47.380 --> 00:21:50.660
If you've got a whole bit of code that's only standard library,

00:21:50.660 --> 00:21:53.780
and you want to have a couple tests for it,

00:21:53.780 --> 00:21:56.660
that makes a lot of sense to just not add a dependency potentially.

00:21:56.660 --> 00:22:01.440
Well, so, and I also got to talk with the JetBrains and PSF

00:22:01.440 --> 00:22:04.500
and have them change this question because unit testing framework,

00:22:04.500 --> 00:22:06.720
I think you mean automated testing framework.

00:22:07.900 --> 00:22:12.440
because it might not be a unit test and people get confused by that maybe.

00:22:12.440 --> 00:22:14.140
I don't know.

00:22:14.140 --> 00:22:15.400
Yeah, potentially.

00:22:15.400 --> 00:22:16.800
All right.

00:22:20.740 --> 00:22:21.180
Okay.

00:22:21.180 --> 00:22:21.240
Okay.

00:22:21.240 --> 00:22:22.240
So what's next?

00:22:22.240 --> 00:22:24.120
I'm just-

00:22:24.120 --> 00:22:27.280
There's some interesting comments out in the live chat here about like-

00:22:27.280 --> 00:22:28.220
Oh, yeah.

00:22:28.220 --> 00:22:29.660
We'll not be in a build system.

00:22:29.660 --> 00:22:32.320
Tox is not a unit testing framework.

00:22:32.320 --> 00:22:32.820
Yeah.

00:22:32.820 --> 00:22:33.320
Yeah.

00:22:33.320 --> 00:22:33.580
Yeah.

00:22:33.580 --> 00:22:33.920
Yeah.

00:22:33.920 --> 00:22:38.460
Does Turing complete make CSS a language?

00:22:38.460 --> 00:22:41.960
Is CSS Turing complete?

00:22:41.960 --> 00:22:44.000
If it is, then yeah, totally.

00:22:44.000 --> 00:22:45.660
I think it does.

00:22:45.660 --> 00:22:48.960
But I don't remember what Turing means anymore.

00:22:48.960 --> 00:22:51.240
specifically.

00:22:51.240 --> 00:22:52.740
I mean, I kind of do it.

00:22:52.740 --> 00:22:53.240
Yeah.

00:22:53.240 --> 00:22:53.540
Yeah.

00:22:53.540 --> 00:22:58.240
My rule of thumb is, can I make a thing that runs with that?

00:22:58.240 --> 00:23:00.280
I don't know.

00:23:00.280 --> 00:23:03.080
But that's the Michael rule.

00:23:03.080 --> 00:23:04.140
The Michael rule.

00:23:04.140 --> 00:23:04.600
But anyway.

00:23:04.600 --> 00:23:05.520
Yeah.

00:23:05.520 --> 00:23:07.220
On to the next one for you.

00:23:07.660 --> 00:23:11.500
The next is brought to us by Henry Schreiner, who is in the audience.

00:23:11.500 --> 00:23:12.060
Hey, Henry.

00:23:12.060 --> 00:23:16.780
Thanks for putting this together and also letting us know about it.

00:23:16.780 --> 00:23:20.940
So, we've got the scientific Python development guide.

00:23:20.940 --> 00:23:23.860
This is a, this is a big guy.

00:23:23.860 --> 00:23:25.940
So this is really cool, actually.

00:23:25.940 --> 00:23:31.780
So this is, I'm, we're going to post both the announcement post and a link

00:23:31.780 --> 00:23:37.640
to the guide, but it's both the same place, blog scientific python.org.

00:23:37.640 --> 00:23:41.040
And then there's a learn scientific python.org.

00:23:41.040 --> 00:23:44.020
So this is, pretty awesome.

00:23:44.020 --> 00:23:46.340
It's very comprehensive too.

00:23:46.340 --> 00:23:49.020
So this may have, this must've taken a while to put together.

00:23:49.020 --> 00:23:55.540
So you've got, basically like, how to use, how to develop in Python, for scientific

00:23:55.540 --> 00:23:56.060
people.

00:23:56.060 --> 00:23:57.940
and it's pretty comprehensive.

00:23:57.940 --> 00:24:02.700
I, didn't go through too much, but I was like, let's look at some of the tutorials

00:24:02.700 --> 00:24:05.660
to see what we got and, intro to development.

00:24:05.660 --> 00:24:06.460
That's nice.

00:24:06.460 --> 00:24:06.980
Um,

00:24:06.980 --> 00:24:11.980
I was curious what they were doing for packaging because it's kind of one of those things I

00:24:11.980 --> 00:24:12.320
follow.

00:24:12.320 --> 00:24:18.340
and, the packaging tutorial is pretty great.

00:24:18.340 --> 00:24:21.420
it touches on a whole bunch of stuff.

00:24:21.420 --> 00:24:26.300
some, at first it's just talking about how to use package, how to use Python packages,

00:24:26.300 --> 00:24:32.500
but then it, it's got a packaging guide, where, there's two forms of packaging.

00:24:32.500 --> 00:24:36.560
You've got simple packaging and I'm glad they split this up because they, if you just have

00:24:36.560 --> 00:24:41.160
a bunch of Python stuff, you're sharing, you just need simple packaging goes through hatchling,

00:24:41.160 --> 00:24:45.280
flit core PDM backend, which I haven't played with, but set up tools.

00:24:45.420 --> 00:24:47.420
I've used, three of the four so far.

00:24:47.420 --> 00:24:56.780
and, and I like that it highlighted that, really, if you click through all of the project table stuff

00:24:56.780 --> 00:24:57.980
just stays the same.

00:24:57.980 --> 00:25:02.860
and mostly what changes is you just change the build system, settings.

00:25:02.860 --> 00:25:03.880
Pretty awesome.

00:25:03.880 --> 00:25:09.340
and then, but for scientific, you kind of have some complicated stuff too.

00:25:09.340 --> 00:25:10.280
So this is great.

00:25:10.280 --> 00:25:17.400
You've, we've got descriptions on how to, how to do packaged Python packages with C plus

00:25:17.400 --> 00:25:26.360
plus and Fortran and C and, there's CMake, there's Mason and our rust with cargo,

00:25:26.600 --> 00:25:29.940
with mature in, and then ends in scones.

00:25:29.940 --> 00:25:33.680
I haven't played with that, but a really great stuff.

00:25:33.680 --> 00:25:37.260
And then it even, it talks about classic packaging, but don't do that.

00:25:37.260 --> 00:25:40.040
Stick with the compiled packaging or simple packaging.

00:25:40.040 --> 00:25:41.140
That's, that's what you want.

00:25:41.140 --> 00:25:42.780
this is a great writeup.

00:25:42.780 --> 00:25:43.780
So thanks Henry.

00:25:43.780 --> 00:25:47.100
And probably lots of other people, working in this too.

00:25:47.100 --> 00:25:49.900
But if you wrote it, if you wrote it all yourself, I'm pretty impressed.

00:25:49.900 --> 00:25:51.560
But anyway, pretty cool.

00:25:51.560 --> 00:25:54.440
Yeah, that's a good one.

00:25:55.280 --> 00:25:56.060
Then this time.

00:25:56.060 --> 00:25:59.140
Learning how to package up these, your packages is really cool.

00:25:59.140 --> 00:26:02.580
Also, you know, doing things like entry points.

00:26:02.580 --> 00:26:06.640
So you basically, once you pipX install something, it becomes a command line.

00:26:06.640 --> 00:26:07.720
Oh yeah.

00:26:07.720 --> 00:26:10.120
Capability is really awesome as well.

00:26:10.120 --> 00:26:14.120
There's a lot of neat things about packaging that I think not everyone is like, well, I don't

00:26:14.120 --> 00:26:17.200
want to put it into PyPI and have it open source.

00:26:17.300 --> 00:26:20.720
Oh, maybe there's other interesting aspects still sharing it internally.

00:26:20.720 --> 00:26:22.360
Nice.

00:26:22.360 --> 00:26:23.220
I hadn't checked out.

00:26:23.220 --> 00:26:28.780
this is kind of daring to do it on live, but I checked out the test, section and

00:26:28.780 --> 00:26:29.280
yay.

00:26:29.280 --> 00:26:30.500
They talk about pytest.

00:26:30.500 --> 00:26:31.500
So cool.

00:26:31.500 --> 00:26:34.100
I don't check with their pytest guys, but good job guys.

00:26:34.100 --> 00:26:35.320
Just suggest none.

00:26:35.320 --> 00:26:35.420
None.

00:26:35.420 --> 00:26:36.460
The none from none.

00:26:36.460 --> 00:26:38.980
We suggest not testing.

00:26:38.980 --> 00:26:39.340
Yeah.

00:26:39.340 --> 00:26:43.860
So the world's simplest way to write tests.

00:26:43.860 --> 00:26:44.320
No.

00:26:44.320 --> 00:26:44.940
Yeah.

00:26:44.940 --> 00:26:47.360
Oh, what about extras?

00:26:47.360 --> 00:26:48.560
You feel an extra?

00:26:49.160 --> 00:26:51.000
I am feeling extra.

00:26:51.000 --> 00:26:54.340
do you want me to cover mine while I'm already up?

00:26:54.340 --> 00:26:55.820
Yeah, go for it.

00:26:55.820 --> 00:27:00.640
just to just, I was going to like do this extra attribute thing as an extra, but decided

00:27:00.640 --> 00:27:01.600
to just run with it.

00:27:01.600 --> 00:27:07.940
the, quick extra is, I'm continuing to work on the course.

00:27:07.940 --> 00:27:10.180
Chapter eight is up configuration files.

00:27:10.180 --> 00:27:12.260
It's a short one, but please don't skip it.

00:27:12.260 --> 00:27:15.420
It's it will mess you up if you don't understand this.

00:27:15.420 --> 00:27:18.680
So just a few minutes to cover, cover some configuration.

00:27:18.680 --> 00:27:25.300
and one of the questions I always get is what are the dundra net files mean within

00:27:25.300 --> 00:27:28.100
a, in the test directory.

00:27:28.100 --> 00:27:31.040
And I'm going to keep it a secret.

00:27:31.040 --> 00:27:32.140
You got to watch the course.

00:27:32.140 --> 00:27:35.480
but it's, it's, it's, it's, they're good things.

00:27:35.480 --> 00:27:37.620
And you're making good progress on this.

00:27:37.620 --> 00:27:38.980
I am.

00:27:38.980 --> 00:27:39.860
And it's a blast.

00:27:39.860 --> 00:27:41.680
And I'm getting great feedback from people.

00:27:41.680 --> 00:27:46.960
Some, some people from, PyBytes, are, reviewing it and giving me feedback.

00:27:46.960 --> 00:27:48.140
Some people from JetBrains.

00:27:48.140 --> 00:27:51.680
it's been, it's been a really good, good community there.

00:27:51.680 --> 00:27:53.420
So cool.

00:27:53.420 --> 00:27:54.740
How about extras from you?

00:27:54.740 --> 00:28:05.280
Well, I have some Mastodon extras and I came across Mona M O N A app, which is a really cool,

00:28:05.280 --> 00:28:09.320
um, really cool client for Mastodon.

00:28:09.320 --> 00:28:11.600
I believe this is Mac only.

00:28:11.600 --> 00:28:19.320
optimized for voiced over optimized for Mac native design, iPhone, iPad, and Mac.

00:28:19.320 --> 00:28:23.980
So sorry for people not on that one, but if you're on these, this is really, really nice.

00:28:23.980 --> 00:28:24.760
I tried ivory.

00:28:24.760 --> 00:28:29.100
I know you and I spoke about it like a couple of weeks ago, maybe off air, but ivory drives

00:28:29.100 --> 00:28:29.580
me crazy.

00:28:29.580 --> 00:28:31.380
It's like the big recommendation everyone has.

00:28:31.400 --> 00:28:32.460
And this is super nice.

00:28:32.460 --> 00:28:37.320
It has a free version or you can pay like $15 once forever.

00:28:37.320 --> 00:28:39.960
And then you have it, which is kind of nice.

00:28:39.960 --> 00:28:41.060
So people can check that out.

00:28:41.060 --> 00:28:42.080
I think I'm going to move to that.

00:28:42.080 --> 00:28:47.320
Another thing that we talked about the other day, Brian is, why are these like weird

00:28:47.320 --> 00:28:49.220
domains so expensive, right?

00:28:49.220 --> 00:28:54.960
Like we have Python bytes.fm and to renew Python bytes out of is $170 a year.

00:28:54.960 --> 00:28:57.020
I'm like, why, why don't we just go with.com?

00:28:57.020 --> 00:28:57.960
Like what were we thinking?

00:28:57.960 --> 00:28:59.840
Come on people should have just done.com.

00:28:59.840 --> 00:29:04.340
But you know, when we came up with Python bytes and we started it, the.fm was all the rage

00:29:04.340 --> 00:29:05.760
for all the, all the podcasts.

00:29:05.760 --> 00:29:07.800
So, there it is.

00:29:07.800 --> 00:29:13.020
And it's not a huge deal, but like we were talking about, where does that money go?

00:29:13.020 --> 00:29:16.960
And the biggest winner of these is the.ai, right?

00:29:18.240 --> 00:29:21.960
There's so many.ai domains these days, right?

00:29:21.960 --> 00:29:23.160
With all the AI startups.

00:29:23.160 --> 00:29:33.720
And it turns out that the island of in Anguilla is a tiny British territory with around 16,000

00:29:33.720 --> 00:29:37.000
inhabitants, but its domain name is.ai.

00:29:37.000 --> 00:29:43.140
And so the software developer who manages the domain told Bloomberg, it could generate $30

00:29:43.140 --> 00:29:49.280
million for this 10% of the GDP of this tiny island because of the.ai domain.

00:29:49.280 --> 00:29:52.680
Anyway, I just thought, I thought that was interesting.

00:29:52.680 --> 00:29:54.340
And I just throw this in as an extra.

00:29:54.340 --> 00:29:55.760
What's the.fm?

00:29:55.760 --> 00:29:56.140
Do you know?

00:29:56.140 --> 00:29:58.140
I don't know.

00:29:58.140 --> 00:29:59.440
Actually, that's a really good question.

00:29:59.440 --> 00:30:02.080
Okay.

00:30:02.080 --> 00:30:03.220
On to the next one.

00:30:03.220 --> 00:30:05.440
yeah.

00:30:05.440 --> 00:30:06.020
Vivaldi.

00:30:06.020 --> 00:30:07.500
We're both Vivaldi fans.

00:30:07.500 --> 00:30:10.660
And I really like a lot of things about Vivaldi.

00:30:10.780 --> 00:30:14.320
It got a lot faster on the desktop recently, which is super cool.

00:30:14.320 --> 00:30:16.520
So now it's super, super fast.

00:30:16.520 --> 00:30:19.900
Not the kind of thing you can demonstrate well over screen sharing.

00:30:19.900 --> 00:30:23.000
Cause the latency of the screen sharing outweighs the.

00:30:23.000 --> 00:30:23.720
Yeah.

00:30:23.720 --> 00:30:27.340
That, but it has not been on iOS.

00:30:27.340 --> 00:30:30.880
And now finally, finally, finally it is out on iOS.

00:30:30.880 --> 00:30:31.360
How exciting.

00:30:31.360 --> 00:30:32.860
Yeah.

00:30:32.860 --> 00:30:34.620
I've just downloaded it recently.

00:30:34.620 --> 00:30:35.500
I'm loving it.

00:30:35.500 --> 00:30:36.760
Yeah.

00:30:36.760 --> 00:30:38.240
So five days ago it came out.

00:30:38.400 --> 00:30:43.260
I've had it on my Android phone and I'm just like, oh, why don't I have this on my iPhone?

00:30:43.260 --> 00:30:44.740
This is in my, in my iPad.

00:30:44.740 --> 00:30:45.520
It makes me sad.

00:30:45.520 --> 00:30:49.560
And I know people say, Michael, Apple's evil.

00:30:49.560 --> 00:30:54.940
This is really just web kit wrapped in a Vivaldi shell.

00:30:54.940 --> 00:30:56.060
And yes, I know.

00:30:56.060 --> 00:30:56.380
I know.

00:30:56.380 --> 00:30:57.660
Thank you for letting me know again.

00:30:57.660 --> 00:30:58.680
I know that.

00:30:58.680 --> 00:30:59.260
Is it?

00:30:59.460 --> 00:31:05.160
However, it's still really nice that if I open up Vivaldi, I could say, carry on where

00:31:05.160 --> 00:31:06.460
I was on my other machine.

00:31:06.460 --> 00:31:11.840
Show me the history from my Mac or from my windows machine or from my other, right?

00:31:11.840 --> 00:31:13.300
The synchronizing is awesome.

00:31:13.300 --> 00:31:17.620
And the ad blocking is like next level.

00:31:17.840 --> 00:31:22.040
So if you go over here and you go to the ad blocking section, you can say block.

00:31:22.040 --> 00:31:23.840
Trackers and ads.

00:31:23.840 --> 00:31:24.260
Yes.

00:31:24.260 --> 00:31:24.680
That's cool.

00:31:24.680 --> 00:31:26.100
But you can actually go through.

00:31:26.100 --> 00:31:31.020
And check off a whole bunch of additional sources for tracking and blocking.

00:31:31.020 --> 00:31:35.860
So you can say, I want the easy list and I want ads from, allow action partners.

00:31:35.860 --> 00:31:36.880
You can uncheck that if you want.

00:31:37.180 --> 00:31:42.480
You want the ABP anti circum, circumvention list and a whole bunch of others.

00:31:42.480 --> 00:31:46.940
And you can even add, if you run like a pie hole, you can even add your own blocking list

00:31:46.940 --> 00:31:49.100
or ads and stuff.

00:31:49.100 --> 00:31:53.060
So like super, super cool sync plus ad blocking.

00:31:53.060 --> 00:31:54.960
I know it's web kid.

00:31:54.960 --> 00:31:58.180
I wish it weren't, but you know, it's better than not.

00:31:58.180 --> 00:31:59.780
So there it is.

00:31:59.780 --> 00:32:01.460
Yeah.

00:32:01.460 --> 00:32:06.720
but I mean, it isn't really, I'm, I'm not, I don't really care what the,

00:32:07.300 --> 00:32:10.720
maybe I should, but I don't really care what the rendering engine is and all that stuff.

00:32:10.720 --> 00:32:15.880
It's the who's, who's taking the data and sharing it with who is the part that I really care about.

00:32:15.880 --> 00:32:16.960
Yeah.

00:32:16.960 --> 00:32:17.860
I, of course.

00:32:17.860 --> 00:32:19.340
And this, this checks that box, right?

00:32:19.340 --> 00:32:19.620
Yeah.

00:32:19.620 --> 00:32:24.500
I do hate when you go to a place and goes, you need to have Chrome to have the best experience.

00:32:24.500 --> 00:32:27.860
You're like, there's no way I can have Chrome on this device.

00:32:27.860 --> 00:32:28.480
You know what I mean?

00:32:28.480 --> 00:32:34.800
I, I have a, I, brought in a guy to interview once because I was intrigued that his

00:32:34.800 --> 00:32:39.880
website said, his personal website said best if viewed with Netscape Navigator.

00:32:39.880 --> 00:32:41.340
And that's awesome.

00:32:41.340 --> 00:32:41.840
Oh, I love it.

00:32:41.840 --> 00:32:50.140
so I love that little, and it even had like the animated little globe thing

00:32:50.140 --> 00:32:50.780
that was going on.

00:32:50.780 --> 00:32:51.140
Oh yeah.

00:32:51.140 --> 00:32:53.900
The little, like the little, like a ship's Jane.

00:32:53.900 --> 00:32:54.820
Well, I remember that.

00:32:54.820 --> 00:32:55.060
Yeah.

00:32:55.060 --> 00:32:55.480
Oh my God.

00:32:55.480 --> 00:32:55.860
Those were good.

00:32:55.860 --> 00:32:56.360
Yeah.

00:32:56.360 --> 00:32:57.660
It was great.

00:32:57.660 --> 00:32:58.760
Yeah.

00:32:58.760 --> 00:33:03.280
David out in the audience says federated States of Micronesia.

00:33:03.280 --> 00:33:04.340
Apparently that's what.

00:33:04.340 --> 00:33:05.060
FM is.

00:33:05.060 --> 00:33:06.860
Yes, exactly.

00:33:06.860 --> 00:33:07.620
Nice.

00:33:07.620 --> 00:33:08.360
Thanks, David.

00:33:08.360 --> 00:33:11.720
I love having guests here helping us out.

00:33:12.440 --> 00:33:13.280
I know it's awesome.

00:33:13.280 --> 00:33:14.880
Our audience is excellent.

00:33:14.880 --> 00:33:16.380
All right.

00:33:16.380 --> 00:33:17.160
You ready for a joke?

00:33:17.160 --> 00:33:18.080
Those are all my extras.

00:33:18.080 --> 00:33:19.280
I am ready for a joke.

00:33:19.280 --> 00:33:21.400
All right.

00:33:21.400 --> 00:33:22.300
Let me set the stage.

00:33:22.300 --> 00:33:26.080
So there was the JFK speech, right?

00:33:26.080 --> 00:33:28.420
About going to the moon in the early sixties.

00:33:28.420 --> 00:33:35.560
And it was like, you know, Sir Edmund Hillary was asked, why did he climb Everest?

00:33:35.840 --> 00:33:40.200
He said it because it was there and the moon is there and the stars are there.

00:33:40.200 --> 00:33:41.820
We're going to climb it.

00:33:41.820 --> 00:33:44.400
Not because it is easy, but because it is hard.

00:33:44.400 --> 00:33:44.680
Right?

00:33:44.680 --> 00:33:45.160
Like that.

00:33:45.160 --> 00:33:46.040
Something like that.

00:33:46.040 --> 00:33:46.340
Yeah.

00:33:46.340 --> 00:33:46.780
Yeah.

00:33:46.780 --> 00:33:47.920
I'll do that again.

00:33:47.920 --> 00:33:48.580
That was fun.

00:33:48.580 --> 00:33:49.060
No.

00:33:49.060 --> 00:33:51.240
We do these.

00:33:51.240 --> 00:33:55.380
We choose to do these things and the others, not because they're easy, but because they're

00:33:55.380 --> 00:33:55.680
hard.

00:33:55.680 --> 00:33:57.680
No, the joke is, this is the software one.

00:33:57.680 --> 00:34:01.700
We do this not because it is easy, but because we thought it would be easy.

00:34:01.700 --> 00:34:02.340
Exactly.

00:34:02.340 --> 00:34:05.140
Dang it.

00:34:05.180 --> 00:34:07.820
Why is it still three months and we're rewriting this section?

00:34:07.820 --> 00:34:09.240
It was supposed to take a week.

00:34:09.240 --> 00:34:11.120
What a bad idea.

00:34:11.120 --> 00:34:16.700
Do this not because it's easy, but because we thought it'd be easy.

00:34:16.700 --> 00:34:18.460
Yeah.

00:34:18.460 --> 00:34:19.500
Okay.

00:34:19.500 --> 00:34:27.340
So David shares with us, there's the old school.am domain for Armenia.am instead of FM.

00:34:27.340 --> 00:34:30.780
Should we get, should we retire the FM and go like talk radio AM?

00:34:31.120 --> 00:34:36.700
We could put like a phonography type of filter on our voices and make it sound like staticky

00:34:36.700 --> 00:34:38.100
and tinny.

00:34:38.100 --> 00:34:43.340
Would it be great is to, yeah, do a filter and have like both, have the AM and FM versions

00:34:43.340 --> 00:34:46.900
and have it sound like it's going through any speaker.

00:34:47.900 --> 00:34:52.020
simulate going through a tunnel and have it get like real staticky and then come back just

00:34:52.020 --> 00:34:52.620
periodically.

00:34:52.620 --> 00:34:53.060
Right.

00:34:53.060 --> 00:34:53.560
Why not?

00:34:53.560 --> 00:34:54.020
Yeah.

00:34:54.020 --> 00:34:57.060
It filter the high end and low end.

00:34:57.060 --> 00:34:59.180
So there's just like the mid range and that's it.

00:34:59.180 --> 00:34:59.820
Mm-hmm.

00:34:59.820 --> 00:35:00.140
So.

00:35:00.140 --> 00:35:01.200
I love it.

00:35:01.200 --> 00:35:02.760
I love it.

00:35:02.760 --> 00:35:05.900
Because with the AM, you have to have the bad car speakers also.

00:35:06.660 --> 00:35:07.000
Oh yeah.

00:35:07.000 --> 00:35:07.960
Anyway.

00:35:07.960 --> 00:35:10.920
Nice.

00:35:10.920 --> 00:35:11.880
Cool.

00:35:11.880 --> 00:35:15.200
Well, thanks again for a wonderful episode.

