Transcript #355: Python 3.12 is Out!
Return to episode page view on github00:00 Hello and welcome to Python Bytes where we deliver Python news and headlines directly to your earbuds.
00:05 This is episode 355, recorded October 3rd, 2023, and I am Brian Okken.
00:11 And I am Michael Kennedy.
00:13 I almost said the second because I thought we were going to record yesterday and we didn't.
00:17 But, cut it off.
00:19 Anyway, welcome everybody.
00:21 Good to have the show.
00:23 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:34 We love Patreon supporters.
00:36 And if you want to reach us, reach us through Fosstodon on Mastodon at @mkennedy, @brianokken, and @pythonbytes.
00:45 And if you're listening to this, you can also join us live sometimes.
00:50 We usually are Tuesdays at 11, Tuesdays at 11 ish on Pacific time.
00:59 So join us and you can just go to pythonbytes.fm to see the link.
01:04 But we have some exciting news.
01:06 Yesterday was exciting day.
01:07 Tell us why.
01:09 We've been waiting a year for this one.
01:13 Python 3.12 is out.
01:16 Absolutely.
01:18 Absolutely big news.
01:20 If you look at how much stuff it's easy to just go, Oh, What are there's like these four new features I care about or something along those lines.
01:30 It's like, okay, well, there's a new Python.
01:32 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 and it said it's 48 minutes of reading to read the what's in this release.
01:47 Wow.
01:48 That's a lot.
01:49 That's a lot of stuff.
01:50 That's a lot of good things.
01:53 I think it's, I don't even know how much it's even called out in the what's new, because it's a little tricky to put in the not new, it's just more, but the faster CPython initiative, I think, you know, is, is going strong for 3.12 as it was for 11 and it will be for 13.
02:13 So not even covered in the what's new, I think is Python 3.12 should just be faster.
02:19 That's really cool.
02:20 Yeah.
02:21 But if you look at the, you know, they kind of have, it's really nice, even though it's 48 minutes of reading, they do put the headline items at the front here.
02:30 So there's new type parameter syntax and PEP six, nine, five.
02:36 So, Brian, how do you like your generics?
02:38 I haven't thought about it actually.
02:42 Or your, your templates.
02:43 If you're a C++ guy, they don't call them generics.
02:45 Like C# and Java, they call them generics, but.
02:50 I, C++ calls them templates.
02:52 so, but I thought it calls them generics.
02:54 We have that.
02:55 We had it before actually.
02:57 So this is not new, new, 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 and here's how you do it now.
03:08 Honestly, meh.
03:11 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.
03:17 It's just not a huge deal to me.
03:19 Right.
03:19 It's not something I feel like I'm going to do a lot of maybe.
03:22 I feel like most of the places that I would have wanted to use it.
03:26 It's kind of like the self parameter sort of takes care of that for me, but anyway, very exciting for people who do it, do need to use this.
03:33 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, but I don't know.
03:45 What do you think?
03:45 Exciting.
03:47 I think I'm not excited about it yet, but I think I'll be using it.
03:50 probably pretty soon.
03:51 So yeah.
03:52 Yeah.
03:53 f-strings are all grown up now.
03:55 Oh boy.
03:56 They can do all the Python.
03:57 So f-strings, I don't know if people know, but f-strings have their own separate implementation, separate to like regular strings and stuff.
04:06 And as a, it's a, a lot of it was done in C.
04:09 Yeah.
04:09 They're really wild.
04:10 because of that, they're somewhat limited in what you can put inside the curly braces.
04:15 There's like different kinds of expressions.
04:17 You can do ternary, like, if tests, and you can just say like thing dot upper, you know, as what goes in there, but you can't write full Python in f-strings.
04:29 >> Well, most, and the most obvious was you couldn't put quotes in the little curly, between the curly braces, or you couldn't put the same quotes that you had on the outside.
04:39 So.
04:40 >> Yeah.
04:40 I, I'd always be like, okay, this, this one's getting single quotes because the string is a double quote or vice versa.
04:46 You'd have to kind of think it out.
04:47 So now it's like a little more freeform.
04:51 What can go in there?
04:52 I don't know.
04:53 That's initially a recommendation of writing your app inside the upstream, but you know, it gives you more flexibility.
04:59 So there it is.
05:00 I am super psyched about 648, which is a unique per interpreter, Gil, Eric Snow.
05:07 Man, you've been on this for a while.
05:09 Congratulations in that this is out.
05:11 So this has mega possibilities to unlocking multi-threaded performance in Python.
05:18 Don't know that it's actually has anything to do with threads yet.
05:24 I think it's way more manual and maybe even just at the C level.
05:27 - Yeah, it said that, the PEP says it's at the C API right now, 3.13 might have a Python API access to it.
05:37 - Yeah, 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.
05:45 Yeah.
05:46 Or I'm going to create a thread pool executor and say for every thread that you create, get a new guilt.
05:54 That means full on parallelism in Python.
05:57 I mean, I'm sitting here on my.
06:00 Well, what we're talking about then is, is basically forking off a new interpreter from Python.
06:06 Yes.
06:08 In a sense, but without a new process.
06:10 Okay.
06:11 Right.
06:11 Yeah.
06:12 So, why not?
06:15 You can't, I don't believe you can share, maybe you can share data directly.
06:20 I don't, I don't think, I don't think you can share it directly cause it would have to share the gill.
06:24 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 potentially and do some message passing.
06:33 But you know, here on my M2 Pro Mini, I have 10 cores and all the Python I want to write, I'm only going to ever be able to do one core's worth of work for computational things unless I go crazy with like the no-gil Cython or write some C code or you know, things like that, right?
06:52 So this has the possibility to take advantage of, you know, modern hardware, right?
06:57 Very exciting.
06:58 low impact monitoring. So if you want to like hook into events for like profiling debugging type of stuff, you can do that with less Heisenberg effects. And also one of the big things that came in three 11 was, did you mean type of recommendations for, we couldn't import request.
07:20 Did you mean requests, plural, things like that. Right. And so that's further improved.
07:27 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.
07:35 You just go give me the direct access to the memory.
07:39 That's kind of cool.
07:40 Nice.
07:41 Good for embedded.
07:42 You can have, yeah, I bet.
07:45 Pathlib.path can be subclassed.
07:47 That's kind of cool.
07:48 Hey, OS module gets Windows things.
07:51 That's nice.
07:52 Let's see.
07:53 There's a command line interface that adds a SQLite 3 module.
07:58 So you know, you can do like Python-M HTTP server or something along those lines.
08:03 You can do that for SQLite now as well, which is kind of neat.
08:07 Yeah, this is exciting.
08:09 AsyncIO has some improvements with benchmarks showing up to a 75% speed improvement in certain areas I'm sure, not generally, but yeah, a bunch of other things.
08:19 There's also some security updates, some API, there's performance improvements with comprehension inlining and there's a Linux performance profiler.
08:30 Yeah, bunch of different things.
08:34 And that's pretty much the highlights.
08:37 I mean, there's some bending, I'm calling up the standard library like there was an async chat example implementation type of thing in the standard library. So it's not anymore. Good. Yeah. So that's not there, but generally you can look at some of the things that were deprecated or removed, but yeah, that pretty much covers a few more type things and that's your new Python.
09:08 Awesome.
09:09 Awesome.
09:10 Are you excited?
09:11 How long until you switch to it?
09:12 I'm working on it right now, man.
09:15 Are you?
09:16 Yeah.
09:17 So, yeah.
09:18 pytest, just a sec.
09:20 I'm going to tell you a story.
09:24 So, yesterday, I have been slowly becoming one of the maintainers for a plugin called pytest Repeat.
09:35 this repeat. And it so it hadn't been tested. It hadn't been tested up through three nine, I believe. So so I wanted to but it worked fine on the newer pythons, but I just wanted to make sure it was updated. So I did some things like move the move the the the continuous integration to get have actions. It was on Travis before. So I moved to get up actions.
10:03 And so 3.12, I wanted to update the test to 3.12, right?
10:08 So this is using Tox.
10:10 And so I just went through and updated the Tox.ini file to add 3.12.
10:19 I installed it on my machine.
10:22 What's the problem?
10:23 Ran it and created a new virtual environment, installed Tox, whatever, and ran it and it blew up.
10:30 - Oh no.
10:32 Yeah, what happened is I got this Python attribute error module package util has no attribute importer.
10:42 Did you mean zip importer?
10:43 I'm like, I didn't mean any of that stuff.
10:46 So no idea.
10:49 So I'm like trying to figure this out.
10:52 Like clearly other people are releasing a 312.
10:55 They surely have come up with this.
10:57 I dug through a long.
10:59 I was researching a ton on this.
11:01 and basically I thought there's something weird going on between pip and talks and Python 312 because I knew that the imp imp importer thing was deprecated.
11:13 I don't know what it is, but I knew it was deprecated and it was taken out in 312 I think.
11:17 So it's not there.
11:19 and no, mostly you don't have to care about it.
11:23 except for I ran into this.
11:25 So what was happening?
11:26 I didn't know.
11:27 So I did come up with a fix, though, and I found out this morning what really was going on.
11:33 So it's a long story, but I'll try to make it quick.
11:36 The fix I came up with was there was in Talks.ini, you can say download equals true.
11:44 So when it creates a virtual environment, it creates the, it updates to the latest PIP.
11:50 So what was happening was, but without that, I was using an older PIP.
11:55 But I don't know, I didn't know why.
11:57 Why was it using an older pip?
11:58 That's the part where I didn't know why.
12:01 So this fixed it, but it's kind of a band-aid.
12:03 It's a little bit of an ugly band-aid.
12:05 So what's the real fix?
12:08 The real fix is, TOXX uses a package called Virtualenv.
12:14 So that's not the built-in VENV, it's the third-party package Virtualenv.
12:20 Virtualenv has some cool features.
12:23 One of the things it does is it keeps a little cache of third-party packages to store to load up.
12:33 It doesn't update them all the time.
12:34 It does it like, I don't know, every 14 days or something like that.
12:38 It's a slow update thing.
12:41 It makes things run faster because you don't have to keep downloading all the time.
12:45 But I had an old pip cached.
12:47 The real fix was I went through, And I probably didn't have to do the reset, but I called virtualenv with reset app data and then did an upgrade.
13:01 I probably could have just done the upgrade, upgrade embed wheels, and it updated my pip, cached pip to the latest.
13:09 Anyway, so I wrote this article about how I patched it.
13:14 I'm gonna update it today to say, the real fix is to clean out your virtualenv pip cache, or virtual and cash. So yes, I'm working on updating to 312. So nice. I'll say that's cool. I have to shout out to Juergen. I don't know how to pronounce his last name. GMACH Juergen helped me debug the problem today. So that was awesome.
13:42 Excellent. One more shout out. Henry Reiner says the buffer protocol that I described is not new, but the pure Python version of it, 3.12 is.
13:52 - Oh, okay.
13:54 - Excellent.
13:55 All right, over to you.
13:58 - Oh, I just did this.
14:01 This is my topic.
14:04 - I thought that was just a follow up to my topic.
14:06 This is your topic, okay, excellent.
14:07 Yeah, yeah, cool.
14:08 All right, let's talk about the present by talking a bit about the past.
14:15 So, very exciting news.
14:16 the Python developers survey results are out.
14:21 It's slightly confusing in that it says the Python developer survey 2022 results.
14:28 Like, wait a minute, it's September 2023.
14:31 Is this last year's one or the, no, this is the one that just came out on the PSF blog.
14:36 They just, on PyFound, they just announced, like, these are finally put together, analyze a report from the end of 2022 is now out.
14:48 So very exciting and also new.
14:51 I did a video on YouTube actually, where I had a first reaction to it.
14:56 So this is a 18 and a half minute video.
14:58 I'll link to it.
14:59 You can check it out if you wanna go deep.
15:01 And because this video exists, we'll just kind of skim it, Brian.
15:03 We won't go over too much of it.
15:05 But I basically didn't open up or read the survey results until I hit record for this video.
15:11 And then I just dove into it.
15:12 So that's fun.
15:13 can, can check that out if they want, but let's see, we can hit some of the highlights, general Python usage, 85% of the people who Python Python primarily that way, so it's not like a second language, you know, but it's mainly what they do, which is pretty cool.
15:29 There's a lot of these that add to over a hundred.
15:31 So, take it for what it is.
15:34 And there's also like a little gray, like a light gray and a dark gray.
15:42 I know word or legend and that will, they often overlay these things to show them side by side.
15:50 So for example, it says Python usage with what other language?
15:53 Like if you're not, you're gonna use another language, what do you also use in addition to Python?
15:58 Primarily being Python being the main language.
16:00 And it has like, this one is the prior year and this year, again, with the offset by one a little bit.
16:07 So guess what the top three are?
16:09 JavaScript, HTML and CSS.
16:12 Are those languages?
16:13 No.
16:13 No.
16:14 Can you make it here's a rule for what is a language in my mind?
16:18 Probably.
16:19 Can I make a thing that runs on its own from that set of syntax?
16:23 JavaScript?
16:24 Yes.
16:24 C++?
16:25 Yes.
16:26 Java?
16:26 Yes.
16:26 TypeScript?
16:27 Yes.
16:28 CSS?
16:28 No, 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 I could choose one or the other, but they're not, if it's not interchangeable, I'm not sure.
16:45 I don't know, it's somewhat interesting, but.
16:48 - I'm on the fence.
16:50 They've got, they're both complicated enough that I think it takes training to learn it.
16:55 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 more complex than any file or something.
17:04 - True, all right.
17:06 So I think I go on that every year.
17:09 So the top, top three languages used along with Python, three of the four, cause there's a combo, I don't know.
17:19 I would really call it a separate language, but anyway, JavaScript, HTML and CSS combined and SQL and those basically that block tells you, guess what people build web apps with Python, right?
17:30 That's what it says here.
17:32 And web apps are often five, six, seven different languages, which is partly why the web is hard, right?
17:39 But there's that.
17:41 And then Bash and Shell, I mean, that kind of speaks to the DevOps, automation side of things.
17:47 And then C/C++, Brian, you're kind of down in that realm, right?
17:51 >> Yeah, that's most of, half my time.
17:53 And that's interesting that that's that large still.
17:56 So it's cool.
17:57 >> Yeah. I think another thing you would want to consider here, if you look at this, is TypeScript and JavaScript.
18:04 Those should be the same.
18:05 If you would say HTML/JS, HTML/CSS, you should say JavaScript/TypeScript, which bumps that up even higher, right?
18:15 Because TypeScript is just like a better JavaScript.
18:18 All right, let's go.
18:20 If you're gonna do data science, most people use SQL as their first language that they're gonna do.
18:27 And yeah, that's interesting.
18:29 Let's see, some of these things are about like, how do you do work?
18:34 I think it's interesting this one here.
18:36 What do you use Python for the most web development?
18:39 Number one, data analysis and machine learning, which is kind of like the data science block and then other whole bunch of other, and I think, I kind of think of Python as having a one-third, one-third, one-third kind of partitioning where the web development, API development stuff, service functions, all those things.
19:04 live in one third and then data science lives in another third.
19:08 And then there's like the catch all block of everything else.
19:12 So this kind of says that maybe the web development side is a little smaller, but the, and the random section is a little bit bigger, but roughly, I think that's a good rule of thumb.
19:24 Yeah.
19:25 Yeah.
19:27 And I think finally legacy Python has been vanquished.
19:34 It's been vanquished for three years now.
19:37 Python three versus Python two, basically.
19:39 it's it's Python three.
19:43 That's like 94, 95%.
19:45 Ironically, it went down a little bit to like Python two made a bit of a comeback this year.
19:53 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.
20:01 It's probably like the plus or minus one or two, like plus or minus one would account for that just to be flat.
20:06 Yeah.
20:07 That's true.
20:07 Anyway, it's, it's like 95%.
20:10 and that last 5%, they're never changing.
20:14 You know what I mean?
20:17 That's like the 2 million lines of Python too.
20:19 It runs the trading system.
20:22 You don't touch it.
20:23 like that kind of thing, right?
20:24 >> Well, yeah, and I know some people that have frameworks built up on top with an embedded Python interpreter that has Python 2 inside of it.
20:32 And you'd have to completely change the whole architecture to rip it out and put the 3 in there, which I say just throw the whole thing away and start over.
20:43 But anyway, I know that happens.
20:47 >> We're going to do the big rewrite.
20:48 We're going to do the big rewrite.
20:49 That's actually an incredible joke.
20:52 Not, it's not a joke at the parody video, like music, video, song.
20:57 Can I do the big rewrite?
20:58 Maybe I'll put it in the show notes.
20:59 And it's not the joke for this week, but boy, it should be.
21:01 It's good.
21:02 All right.
21:05 Let's see.
21:05 I think that's, I'll probably leave it at that.
21:09 Like I let people look through here, but like you mentioned virtual EMV, that's number one there.
21:14 What do you want to cover?
21:15 unit testing frameworks.
21:17 Oh, is that a question here?
21:19 Let's see.
21:20 Just kidding.
21:22 So, yep, 51% by test.
21:26 Yay.
21:27 Coming in second, 35%, none.
21:31 This is a problem, people.
21:34 Yeah.
21:37 Second most popular framework.
21:38 Is none.
21:39 Third is unit test.
21:40 It's to not ask the question.
21:43 And I think unit test is largely there because you don't want dependencies, right?
21:47 If you've got a whole bit of code that's only standard library, and you want to have a couple tests for it, that makes a lot of sense to just not add a dependency potentially.
21:56 >> Well, so, and I also got to talk with the JetBrains and PSF and have them change this question because unit testing framework?
22:04 I think you mean automated testing framework.
22:08 Because it might not be a unit test, and people get confused by that maybe.
22:12 I don't know.
22:14 >> Yeah, potentially.
22:16 All right.
22:17 Okay.
22:18 So what's next?
22:19 There's some interesting comments out in the live chat here about like, "Builds not be in a build system." "TOX is not a unit testing framework." Yeah, yeah, yeah, yeah.
22:35 Does Turing complete make CSS a language?
22:40 Is CSS Turing complete?
22:42 If it is, then yeah, totally.
22:44 I think it does, but I don't remember what Turing means anymore, specifically.
22:51 I mean, I kind of know it.
22:53 >> My rule of thumb is, can I make a thing that runs with that?
22:59 I don't know, but that's the Michael rule.
23:03 Michael rule.
23:04 But anyway, yeah, on to the next one for you.
23:07 >> The next is brought to us by Henry Schreiner, who is in the audience.
23:11 Hey, Henry, thanks for putting this together and also letting us know about it.
23:16 So we've got the Scientific Python Development Guide.
23:21 This is a big guy.
23:23 So this is really cool, actually.
23:26 So this is, we're gonna post both the announcement post and a link to the guide, but it's both at the same place, blog.scientificpython.org, and then there's a learn.scientificpython.org.
23:41 So this is pretty awesome.
23:44 It's very comprehensive too.
23:46 So this may have, this must have taken a while to put together.
23:49 So you've got basically like how to use, how to develop in Python for scientific people.
23:56 And it's pretty comprehensive.
23:58 I didn't go through too much, but I was like, let's look at some of the tutorials to see what we got.
24:04 And intro to development, that's nice.
24:06 I was curious what they were doing for packaging because it's kind of one of those things I follow.
24:13 And the packaging tutorial is pretty great.
24:18 It touches on a whole bunch of stuff.
24:21 At first, it's just talking about how to use package, how to use Python packages, but then it's got a packaging guide where there's two forms of packaging.
24:32 You've got simple packaging, and I'm glad they split this up because if you just have a bunch of Python stuff you're sharing, you just need simple packaging.
24:40 goes through Hatchling, Flitcore, PDM back end, which I haven't played with.
24:44 But Setup Tools, I've used three of the four so far.
24:48 And I like that it highlighted that really, if you click through, all of the project table stuff just stays the same.
24:58 And mostly what changes is you just change the build system settings.
25:03 Pretty awesome.
25:05 But for scientific, you kind of have some complicated stuff, too.
25:09 So this is great.
25:10 We've got descriptions on how to do package, Python packages with C++ and Fortran and C and there's CMake, there's Mazon and Rust with Cargo with Maturin and then Ensconce.
25:30 I haven't played with that, but really great stuff.
25:33 And then it even, it talks about classic packaging, but don't do that.
25:37 Stick with the compiled packaging or simple packaging.
25:40 That's what you want.
25:41 This is a great write-up, so thanks, Henry.
25:43 And probably lots of other people working on this too.
25:47 But if you wrote it all yourself, I'm pretty impressed.
25:50 Anyway, pretty cool.
25:51 - Yeah, that's a good one.
25:55 Learning how to package up these, your packages is really cool.
25:59 Also, doing things like entry points.
26:02 So you basically, once you pipx install something, it becomes a command line.
26:07 >> Oh, yeah.
26:07 >> Capability is really awesome as well.
26:10 There's a lot of neat things about packaging that I think not everyone is like, "Well, I don't want to put it into PyPI and have it open source." Well, maybe there's other interesting aspects still, I'm sharing it internally.
26:21 >> Nice. I hadn't checked out.
26:23 This is daring to do it live, but I checked out the test section and yay, they talk about pytest.
26:31 Well, I haven't checked out their pytest yet, but good job guys.
26:34 >> We didn't just suggest none, the none for a month.
26:36 done, we suggest not testing.
26:39 The world's simplest way to write tests.
26:44 Don't yeah.
26:45 What about extras?
26:47 You feel an extra?
26:48 I am feeling extra.
26:51 Do you want me to cover mine while I'm already up?
26:54 Yeah, go for it.
26:55 Just to just I was going to like do this extra attribute thing is an extra but decided to just run with it.
27:03 The quick extra is, continuing to work on the course, chapter eight is up, configuration files.
27:10 It's a short one, but please don't skip it.
27:13 It will mess you up if you don't understand this.
27:15 So just a few minutes to cover some configuration.
27:19 And one of the questions I always get is, what do the DunderNet files mean within a test directory?
27:27 And I'm gonna keep it a secret.
27:31 You gotta watch the course.
27:32 But it's a, they're good things.
27:36 - And you're making good progress on this.
27:38 - I am, and it's a blast.
27:40 I'm getting great feedback from people.
27:41 Some people from Pie Bites are reviewing it and giving me feedback.
27:47 Some people from JetBrains.
27:48 It's been a really good food community there.
27:51 So how about extras from you?
27:54 - Well, I have some Mastodon extras.
28:00 And I came across Mona, M-O-N-A app, which is a really cool client for Mastodon.
28:08 I believe this is Mac only, yeah.
28:12 Optimized for voiced over, optimized for Mac, native design, iPhone, iPad, and Mac.
28:19 So sorry for people not on that one, but if you're on these, this is really, really nice.
28:24 I tried Ivory, I know you and I spoke about it like a couple weeks ago, maybe off air, but Ivory drives me crazy.
28:29 It's like the big recommendation everyone has.
28:31 And this is super nice.
28:33 It has a free version, or you can pay like $15 once forever, and then you have it, which is kind of nice.
28:39 So people can check that out.
28:41 I think I'm gonna move to that.
28:42 Another thing that we talked about the other day, Brian, is why are these like weird domains so expensive, right?
28:49 Like we have pythonbytes.fm, and to renew pythonbytes.fm is $170 a year.
28:54 I'm like, why don't we just go with .com?
28:57 Like, what were we thinking?
28:58 Come on, people.
28:58 Should have just done dot com, but you know, when we came up with Python bytes and we started it, the data fam was all the rage for all the, all the podcasts.
29:05 So, there it is.
29:07 And it's not a huge deal, but like we were talking about where does that money go?
29:13 And the biggest winner of these is the dot AI, right?
29:16 There's so many dot AI domains these days, right?
29:21 With all the AI startups.
29:23 And it turns out that the island of Anguilla is a tiny British territory with around 16,000 inhabitants, but its domain name is .ai.
29:37 And so the software developer who manages the domain told Bloomberg it could generate $30 million for this 10% of the GDP of this tiny island because of the .ai domain.
29:49 Anyway, I just thought that was interesting And I'll just throw this in as an extra.
29:54 What's the dot FM do you know?
29:56 I don't know.
29:58 Actually, that's a really good question.
29:59 Okay.
30:02 Onto the next one.
30:03 yeah, Vivaldi, we're both Vivaldi fans and I really like a lot of things about Vivaldi.
30:10 It got a lot faster on the desktop recently, which is super cool.
30:14 So now it's super, super fast.
30:16 Not the kind of thing you can demonstrate well over screen sharing because the latency of the screen sharing outweighs the, but it has not been on iOS.
30:27 And now finally, finally, finally it is out on iOS.
30:30 How exciting.
30:31 Yeah.
30:32 I've just downloaded it recently.
30:34 I'm loving it.
30:35 Yeah.
30:36 So five days ago it came out.
30:38 I've had it on my Android phone and I'm just like, ah, why don't I have this on my iPhone, this is in my, in my iPad.
30:44 It makes me sad.
30:46 And I know people say, Michael, Apple's evil.
30:49 This is really just web kit wrapped in a Vivaldi shell.
30:55 And yes, I know.
30:56 I know.
30:56 Thank you for letting me know again.
30:57 I know that.
30:58 Is it?
30:59 However, it's still really nice that if I open up Vivaldi, I could say, carry on where I was on my other machine, show me the history from my Mac or from my windows machine or from my other, right?
31:11 The synchronizing is awesome.
31:13 And the ad blocking is like next level.
31:17 So if you go over here, you go to the ad blocking section, you can say block trackers and ads.
31:23 Yes, that's cool.
31:24 But you can actually go through and check off a whole bunch of additional sources for tracking and blocking.
31:31 So you can say, I want the easy list and I want ads from, allow ads from partners.
31:35 You can uncheck that if you want.
31:37 You want the ABP anti-circumvention list and a whole bunch of others.
31:42 And you can even add, if you run like a pie hole, you can even add your own blocking list or ads and stuff.
31:49 So like super, super cool.
31:51 Sync plus ad blocking.
31:53 I know it's web kid.
31:55 I wish it weren't, but you know, it's better than not.
31:58 So there it is.
31:59 Yeah.
32:01 but I mean, it isn't really, I'm, I'm not, I don't really care what the, maybe I should, but I don't really care what the rendering engine is and all that stuff.
32:11 It's the who's taking the data and sharing it with who is the part that I really care about.
32:16 - Yeah, of course, and this checks that box, right?
32:19 - Yeah.
32:20 - I do hate when you go to a place and it goes, "You need to have Chrome to have the best experience." You're like, "There's no way I can have Chrome "on this device," you know what I mean?
32:29 - I brought in a guy to interview once because I was intrigued that his website said, his personal website said, "Best if viewed with Netscape Navigator," And that's awesome.
32:41 >> Oh, I love it.
32:41 >> [LAUGH] So I love that little, and it even had like the animated little globe thing that was going on.
32:50 >> Yeah, the little, like a ship's steering wheel, remember that?
32:54 >> Yeah. >> My God, those were good times.
32:56 >> Yeah, it was great.
32:57 >> Yeah, David on the audience says, Federated States of Micronesia, apparently.
33:04 >> That's what .fm is.
33:05 >> Yes, exactly.
33:07 >> Nice, thanks David.
33:09 I love having guests here helping this out.
33:11 I know it's awesome.
33:13 Our audience is excellent.
33:14 All right.
33:16 You ready for a joke?
33:17 Those are all my extras.
33:18 I am ready for a joke.
33:19 All right.
33:21 Let me set the stage.
33:22 So there was the JFK speech, right.
33:26 About going to the moon in the early sixties.
33:28 It was like, yeah, sir.
33:32 Edmund Hillary was asked, why did he climb Everest?
33:36 He said, because it was there and the moon is there and the stars are there.
33:40 We're going to climb it.
33:41 Not because it is easy, but because it is hard.
33:44 Right?
33:44 Like that.
33:45 Something like that.
33:46 Yeah.
33:46 Yeah.
33:46 I'll do that again.
33:47 That was fun.
33:48 We do these, we choose to do these things and the others, not because they're easy, but because they're hard.
33:55 No, the joke is this is the software one.
33:57 We do this not because it is easy, but because we thought it would be easy.
34:01 Exactly.
34:05 Why is it still three months and we're rewriting this section?
34:07 It was supposed to take a week.
34:09 What a bad idea.
34:11 Let's do this.
34:14 Not because it's easy, but because we thought it'd be easy.
34:16 yeah.
34:18 Okay.
34:19 So David shares with us, there's the old school.am domain for Armenia.
34:24 How to am instead of FM.
34:27 Should we get, should we retire the FM and go like talk radio?
34:30 AM, we could put like a phonography type of filter on our voices and make it sound like staticky and tinny.
34:37 Would it be great is to, yeah, do a filter and have like both, have the AM and FM versions and have it sound like it's going through any speaker.
34:47 You could simulate going through a tunnel and have it get like real staticky and then come back just periodically, right? Why not?
34:53 Yeah, and filter the high end and low end so there's just like the mid-range and that's it.
34:59 >> I love it.
35:01 >> Because with AM, you have to have the bad car speakers also.
35:06 >> Oh, yeah.
35:07 >> Anyway. Nice. Cool.
35:12 Well, thanks again for a wonderful episode.