WEBVTT
00:00:00.001 -->
00:00:05.140Hello and welcome to Python Bytes where we deliver Python news and headlines directly to your earbuds.
00:00:05.140 -->
00:00:10.780This is episode 365. Wow. Recorded.
00:00:10.780 -->
00:00:11.920It's like we've been doing it for a year.
00:00:11.920 -->
00:00:17.500Yeah. Recorded December 19th, 2023.
00:00:17.500 -->
00:00:19.580Yeah. And I'm Brian Okken.
00:00:19.580 -->
00:00:21.200Hey, I'm Michael Kennedy.
00:00:21.200 -->
00:00:32.660And yeah, if we did it, if somebody listened to one a day from now on, they would be behind because we'll be way ahead of 365 by the time they finish.
00:00:32.660 -->
00:00:36.280Still be awesome.
00:00:36.280 -->
00:00:40.500Well, want to kick us off with something cool?
00:00:40.500 -->
00:00:41.800Oh, before we kick it off.
00:00:41.800 -->
00:00:42.660Yeah, go ahead.
00:00:42.660 -->
00:00:46.220Let's say that this episode is sponsored by us.
00:00:46.220 -->
00:00:49.240So please support us and other people.
00:00:49.460 -->
00:00:52.440I'm going to talk about that a little bit later at the end of the show.
00:00:52.440 -->
00:00:57.200But also check out all the courses that Talk Python Training.
00:00:57.200 -->
00:00:59.040Check out the complete pytest course.
00:00:59.040 -->
00:01:00.700You can be a Patreon supporter.
00:01:00.700 -->
00:01:05.980And also, if you want to connect with us, one of the best ways to do it is through on Mastodon.
00:01:05.980 -->
00:01:10.720And we're all on Fosstodon, or at least Michael and I are.
00:01:10.720 -->
00:01:14.580At M. Kennedy, @brianokken, and at Python Bytes.
00:01:14.580 -->
00:01:16.980Indeed.
00:01:17.720 -->
00:01:20.820Hey, do I feel like I'm really fast, Brian?
00:01:20.820 -->
00:01:22.320Like Neo in the Matrix?
00:01:22.320 -->
00:01:24.200Mind-bendingly fast?
00:01:24.200 -->
00:01:26.520Let's go with yes.
00:01:26.520 -->
00:01:27.440Okay.
00:01:27.440 -->
00:01:28.540I appreciate that.
00:01:28.540 -->
00:01:34.060Because this, I just got fiber, gigabit fiber installed 30 minutes ago.
00:01:34.060 -->
00:01:37.800I was hoping it wouldn't destroy the show, but it almost didn't make it, but it made it.
00:01:37.800 -->
00:01:38.480Ooh.
00:01:38.480 -->
00:01:39.360Nice.
00:01:39.460 -->
00:01:42.740So hopefully that doesn't curse it, that something doesn't go wrong and it will crash.
00:01:42.740 -->
00:01:47.600But 950 megabit down, which is fine, but 950 megabit up is glorious.
00:01:49.280 -->
00:01:54.600We should speed up the playback speed when we release the MP3 so it sounds really fast.
00:01:54.600 -->
00:01:56.840No, we're talking really fast because it's really uploading.
00:01:56.840 -->
00:01:58.080Yeah.
00:01:58.080 -->
00:02:01.780No, let's talk about Hatch because Hatch is awesome.
00:02:01.780 -->
00:02:05.200Ofek is the maintainer and creator of Hatch.
00:02:05.460 -->
00:02:10.460And boy, oh boy, has he gone big on his latest release, 1.8.0.
00:02:10.460 -->
00:02:19.220So Hatch is like Flit, is like PDM, is like pip, ENV, and many of these other poetry.
00:02:19.220 -->
00:02:22.620Others, if I'm leaving your version of this out, I apologize.
00:02:24.080 -->
00:02:30.580But with version 1.8, this has gone in a bit of a different direction.
00:02:30.580 -->
00:02:35.020You know, I had Ofek on the Python packaging panel.
00:02:35.020 -->
00:02:36.580I think Steve Dower was there.
00:02:36.580 -->
00:02:37.600Some other folks were there.
00:02:37.600 -->
00:02:46.680Really interesting that there's this tension between should there be an app that manages
00:02:46.680 -->
00:02:53.480Python environments with Python, or should there be a thing that manages the Python itself?
00:02:54.320 -->
00:02:54.480Right?
00:02:54.480 -->
00:02:57.200Kind of like PyEMV, for example.
00:02:57.200 -->
00:02:58.060Right?
00:02:58.060 -->
00:03:05.880So Hatch has gone in that direction of now Hatch manages Python, not just Python projects.
00:03:05.880 -->
00:03:11.740And there's this thing to solve this problem in the form of PyApp.
00:03:11.740 -->
00:03:15.180So PyApp is even maybe more awesome.
00:03:15.180 -->
00:03:20.300PyApp is a runtime installer for Python projects written in Rust.
00:03:20.300 -->
00:03:23.160And they can be, you ready for this?
00:03:23.240 -->
00:03:24.700I'm so, so excited.
00:03:24.700 -->
00:03:32.960Your Python app can be distributed as a standalone executable, a .exe or .app for users.
00:03:32.960 -->
00:03:34.020What do you think, Brian?
00:03:34.020 -->
00:03:36.640I'm very interested in finding out more.
00:03:36.640 -->
00:03:39.180Now, this whole post is a little bit wordy.
00:03:39.180 -->
00:03:44.960So let me jump into the omnivore version of it over here, which has a huge icon.
00:03:44.960 -->
00:03:49.520So Ofek says, look, one of the things that's been a perpetual problem for Hatch and all the
00:03:49.520 -->
00:03:52.160others I named is that Python itself is a dependency.
00:03:52.160 -->
00:03:57.200So in order to use Hatch or any of these other tools or any apps, you have to say, well, go
00:03:57.200 -->
00:03:59.700get Python and then get back to me and we'll start talking.
00:03:59.700 -->
00:03:59.960Right?
00:04:00.640 -->
00:04:06.500So he came up with this thing called PyApp that will create installers for the different platforms.
00:04:06.500 -->
00:04:07.660Claims it's trivial.
00:04:07.660 -->
00:04:10.520It's probably never trivial, but possible.
00:04:10.520 -->
00:04:12.240Possible would be awesome even.
00:04:12.240 -->
00:04:20.500And so starting with this releases, not only are the binaries available for every platform,
00:04:20.500 -->
00:04:27.220but there are installers as in like install wizards on Windows and a DMG type thing, I'm
00:04:27.220 -->
00:04:29.680guessing, or a PKG on macOS.
00:04:30.680 -->
00:04:31.560That's awesome.
00:04:31.560 -->
00:04:41.320If you have ever in the recent days tried to put something onto macOS or Windows, there's
00:04:41.320 -->
00:04:44.260a whole nightmare of digitally signing around it, Brian.
00:04:44.260 -->
00:04:47.540So you can't just get a binary and give it to somebody.
00:04:47.540 -->
00:04:49.200The platforms will freak out.
00:04:49.200 -->
00:04:50.360They won't let you open it.
00:04:50.360 -->
00:04:54.320Like macOS will not let you open it unless you go into settings and say, allow me to run
00:04:54.320 -->
00:04:56.220apps from untrusted developers.
00:04:57.420 -->
00:05:01.020And Windows gives you this big, scary dialogue and tries to not run it.
00:05:01.020 -->
00:05:03.980So that's why this next part-
00:05:03.980 -->
00:05:05.420It's not developers that you don't trust.
00:05:05.420 -->
00:05:07.480It's developers that Apple doesn't trust.
00:05:07.480 -->
00:05:08.440Yes, exactly.
00:05:08.440 -->
00:05:12.960You may or may not trust them, but that's a different conversation.
00:05:12.960 -->
00:05:18.460It's a fair feature, but it makes creating desktop distributable apps super painful.
00:05:18.460 -->
00:05:20.120So check this out.
00:05:20.120 -->
00:05:21.160Halfway there.
00:05:21.160 -->
00:05:25.660The installer for macOS is signed using a certificate.
00:05:26.880 -->
00:05:30.840So you already, your apps built with this are already trusted.
00:05:30.840 -->
00:05:32.980Honestly, I don't know how this is possible.
00:05:32.980 -->
00:05:36.860I mean, I know why, how it works.
00:05:36.860 -->
00:05:40.120I'm not sure that it, how it's allowed, but I'm all for it.
00:05:40.120 -->
00:05:46.780So, because I have dealt with Apple and they are not lenient in any way, shape or form when
00:05:46.780 -->
00:05:48.460it comes to stuff running on their platform.
00:05:48.700 -->
00:05:53.340But so the installer for the macOS is signed using the certificate from the same account
00:05:53.340 -->
00:05:55.620used to sign the official distributions of Python.
00:05:55.620 -->
00:05:58.060So you won't get any security warnings or blocking.
00:05:58.060 -->
00:06:00.240Thank you, Ederbin, for helping out with that.
00:06:00.240 -->
00:06:04.980And Hatch itself with any good system is self-updating.
00:06:04.980 -->
00:06:06.660So you can hatch self-update.
00:06:06.660 -->
00:06:07.940What else I want to point out?
00:06:07.940 -->
00:06:14.100There's also a new Python, like hatch space Python command group that will allow you to
00:06:14.100 -->
00:06:14.740manage things.
00:06:14.740 -->
00:06:17.080So you can show what you have installed.
00:06:17.080 -->
00:06:22.620You can install different versions of Python, CPython and PyPy for those.
00:06:22.620 -->
00:06:24.940It works with virtual environments.
00:06:25.200 -->
00:06:28.640It has built in rough and Ruff format integrations.
00:06:28.640 -->
00:06:36.880And traditionally, it's been somewhat slow to like activate and set up a virtual environment
00:06:36.880 -->
00:06:43.160that's already previously been installed because it'll refresh and recheck that all of the dependencies
00:06:43.160 -->
00:06:44.000are there and everything.
00:06:44.000 -->
00:06:46.300So now it does a hash of those.
00:06:46.300 -->
00:06:51.680And so only if the dependency statement doesn't match the hash, right?
00:06:51.680 -->
00:06:53.260Basically, so it'll pre-compute all that stuff.
00:06:53.340 -->
00:06:56.260So now it should be basically instant.
00:06:56.260 -->
00:07:01.340So also some minor breaking changes around build defaults.
00:07:01.340 -->
00:07:04.780And the new app build target is what I've been raving about.
00:07:04.780 -->
00:07:06.620So, OFAC, you killed it.
00:07:06.620 -->
00:07:07.400Can't believe it.
00:07:07.400 -->
00:07:07.820It's awesome.
00:07:07.820 -->
00:07:08.420Awesome.
00:07:08.420 -->
00:07:11.920So Hatch has hashes?
00:07:11.920 -->
00:07:19.960If you hash a hatch with hashling and, you know, like there's some kind of tongue twister
00:07:19.960 -->
00:07:20.640in there we could do.
00:07:20.640 -->
00:07:21.880I'm not doing it though.
00:07:21.880 -->
00:07:22.220Gotta be.
00:07:22.920 -->
00:07:24.260I'm excited about this.
00:07:24.260 -->
00:07:25.400It's very cool.
00:07:25.400 -->
00:07:27.100I definitely want to play with it.
00:07:27.100 -->
00:07:27.760Yeah.
00:07:27.760 -->
00:07:29.240Yes, indeed.
00:07:29.240 -->
00:07:30.880Over to you.
00:07:30.880 -->
00:07:31.940All right.
00:07:31.940 -->
00:07:41.780Well, I'm not sure how long this has been out, but Hinnick has been promoting a new project
00:07:41.780 -->
00:07:42.780that he's got called services.
00:07:42.780 -->
00:07:48.900He's got called services or SVCS, which is short for services and pronounced services.
00:07:48.900 -->
00:07:56.380And it is a, I think it could be used for more than web stuff.
00:07:56.380 -->
00:08:04.600And it was for removing some of the web.
00:08:04.600 -->
00:08:10.280Like your database and your cache and all sorts of stuff to an application.
00:08:10.280 -->
00:08:11.280typically a web application.
00:08:11.280 -->
00:08:12.120Typically a web application.
00:08:12.120 -->
00:08:13.740But I think it could really be anything.
00:08:13.740 -->
00:08:16.980But it's a flexible service locator.
00:08:16.980 -->
00:08:22.500And one of the reasons why I haven't covered it yet on Python bytes.
00:08:22.500 -->
00:08:27.440I don't think I have is because I didn't quite understand what it was doing.
00:08:27.440 -->
00:08:29.200And it took me a while to get my head around it.
00:08:29.200 -->
00:08:32.520But it's pretty cool.
00:08:32.520 -->
00:08:38.480And Hinnick apparently realizes that it is a bit difficult to get your head around what
00:08:38.480 -->
00:08:39.200this is doing.
00:08:39.200 -->
00:08:45.240So he just recently released a video describing this project.
00:08:45.240 -->
00:08:55.360So really great video describing services, what you can do with it, and also how to pronounce
00:08:55.360 -->
00:08:55.760his name.
00:08:55.760 -->
00:08:57.560He doesn't pronounce his last name, though.
00:08:57.680 -->
00:09:00.680Apparently that's left for maybe episode two.
00:09:00.680 -->
00:09:04.000But I love, I guess.
00:09:04.000 -->
00:09:08.240Anyway, it's pretty cool.
00:09:08.240 -->
00:09:12.840Actually, I'm pretty excited about it after watching it, watching the video.
00:09:12.840 -->
00:09:20.260I thought maybe it wouldn't be for me, but especially for keeping services contained or the setting
00:09:20.260 -->
00:09:27.440up services, looking them up within different parts of your application, and then getting them
00:09:27.440 -->
00:09:29.200all cleaned up correctly at the end.
00:09:29.200 -->
00:09:31.820That's kind of what it does, plus a whole bunch of other stuff.
00:09:31.820 -->
00:09:35.920And one of the neat things is throughout all of this documentation, the documentation is
00:09:35.920 -->
00:09:36.280amazing.
00:09:36.280 -->
00:09:45.580Throughout all the documentation, he has examples in aiohttp, FastAPI, Flask, Pyramid, and Starlet.
00:09:45.640 -->
00:09:46.640Nice.
00:09:46.640 -->
00:09:52.620So the video is talking about Flask, but it's cool that he just already hit all the bases.
00:09:52.620 -->
00:09:54.960Like, how do I do this in Starlet?
00:09:54.960 -->
00:09:56.860Well, it's just a little different.
00:09:56.860 -->
00:10:03.200Most of them, mostly they're similar, but little different ways to use it throughout the different
00:10:03.200 -->
00:10:03.800applications.
00:10:04.160 -->
00:10:05.200So it's pretty cool.
00:10:05.200 -->
00:10:12.820He also mentions in the video that he took a really long time really talking about the
00:10:12.820 -->
00:10:15.440terminology and the glossary of the documentation.
00:10:15.920 -->
00:10:22.760And actually, I really appreciate this of somebody saying, okay, this is generally what I think
00:10:22.760 -->
00:10:26.980of is what the meanings for all of these words are.
00:10:26.980 -->
00:10:33.000And it's a lot of these words are, they're overused in the English language to begin with.
00:10:33.000 -->
00:10:37.440And even in talking about programming, web programming, but things like what is the service?
00:10:37.440 -->
00:10:38.480What is a resource?
00:10:38.480 -->
00:10:39.880What is a dependency?
00:10:39.880 -->
00:10:41.480Service layer.
00:10:41.480 -->
00:10:46.560He goes through a whole bunch of different terms, what it means to him and probably to
00:10:46.560 -->
00:10:47.220everybody else.
00:10:47.220 -->
00:10:52.420But if you're unfamiliar with them, and even a decent discussion of dependency injection.
00:10:52.420 -->
00:10:58.920So one of the things he talks about is that this is not really a dependency injection
00:10:58.920 -->
00:10:59.340thing.
00:10:59.340 -->
00:11:03.580It's inversion of control, but it's a little different than service.
00:11:03.580 -->
00:11:06.500Service locators are a little different than dependency injection.
00:11:06.500 -->
00:11:09.360And I kind of appreciate that discussion.
00:11:09.360 -->
00:11:10.020It's pretty cool.
00:11:10.020 -->
00:11:15.880So anyway, kudos to Hinnick for doing this and for helping us pronounce his name.
00:11:15.880 -->
00:11:18.320Yeah, this looks cool.
00:11:18.320 -->
00:11:19.580I definitely want to check this out.
00:11:19.580 -->
00:11:22.140It's news to me, so I will be checking out.
00:11:22.140 -->
00:11:23.340Cool.
00:11:26.340 -->
00:11:29.800We have new leaders, Brian.
00:11:29.800 -->
00:11:30.460We do.
00:11:30.460 -->
00:11:31.400Yes.
00:11:31.400 -->
00:11:33.520For the Python world, we have new leaders.
00:11:33.520 -->
00:11:39.500And specifically, the steering council election results are in for next year.
00:11:39.500 -->
00:11:40.780Okay.
00:11:40.780 -->
00:11:47.040So for the 2024 term, we have Pablo Galindo Salgado.
00:11:47.400 -->
00:11:52.620We've got Gregory Smith, Emily Morehouse, Barry Warsaw, and Thomas Werther's orders.
00:11:52.620 -->
00:11:56.140So very cool to see them all leading the way.
00:11:56.140 -->
00:11:58.240There's a lot of familiar faces there.
00:11:58.240 -->
00:11:59.180So that's.
00:11:59.180 -->
00:12:00.640That's pretty cool.
00:12:00.640 -->
00:12:05.940I don't expect a whole lot of different from the year before, but here's the results.
00:12:06.140 -->
00:12:18.160You can actually see in PEP 8105, you see everybody who was potentially a candidate, how many votes they got by people who are disenfranchised.
00:12:18.160 -->
00:12:18.960I don't know what that means.
00:12:18.960 -->
00:12:25.700Or the not the franchised voters, the one who are enfranchised, how many votes that they got.
00:12:25.700 -->
00:12:27.060And you can put that all together.
00:12:27.480 -->
00:12:31.760So this begs the question, like, well, how do you get on this list?
00:12:31.760 -->
00:12:36.380You get on this list by being nominated by a core developer.
00:12:36.380 -->
00:12:38.820So everyone on the list was nominated by a core developer.
00:12:38.820 -->
00:12:43.600If you are a core developer, you can nominate yourself.
00:12:43.600 -->
00:12:48.660So that could be the person you see here, because everyone I see, I think, is a core developer.
00:12:48.660 -->
00:12:50.220Okay.
00:12:50.220 -->
00:12:53.020But anyway, the results, the results are in.
00:12:53.020 -->
00:12:54.520And we have those five folks.
00:12:54.520 -->
00:12:56.180Welcome and congrats.
00:12:56.180 -->
00:12:56.620Awesome.
00:12:56.620 -->
00:12:58.000Nice.
00:12:58.000 -->
00:13:00.680That's a good set of names, too.
00:13:00.680 -->
00:13:01.520Yeah.
00:13:01.520 -->
00:13:02.280So.
00:13:02.280 -->
00:13:04.200Yeah.
00:13:04.200 -->
00:13:04.900All right.
00:13:04.900 -->
00:13:05.900Indeed.
00:13:05.900 -->
00:13:12.840Well, there probably is some protocol around the election results, right?
00:13:12.840 -->
00:13:19.760No, you could model it with classes, or you could functionally model it, like, in an immutable way, but I don't know about a protocol.
00:13:19.760 -->
00:13:20.320Okay.
00:13:20.320 -->
00:13:24.580We're just great at transitions on this podcast.
00:13:26.020 -->
00:13:28.600The next, I want to talk about Python protocols.
00:13:28.600 -->
00:13:39.880So there's an article from Carlos Vecina, I think, called Python protocols, defining a protocol and when to use it.
00:13:39.880 -->
00:13:47.340And actually, this is something that I have, I've been meaning to play with for actually some years, and I haven't really done much with it yet.
00:13:47.340 -->
00:13:48.800So I really appreciate this article.
00:13:48.800 -->
00:13:56.220He's talking about protocols are a feature of Python that were added in Python 3.8.
00:13:56.220 -->
00:14:01.800So really anything maintainable right now can use protocols.
00:14:01.800 -->
00:14:12.860But they're, and you kind of, they're, mentally, I think of them kind of like class inheritance or mix-ins or abstract-based classes.
00:14:13.340 -->
00:14:22.040And that's one of the things he talks about in this article is, is they are in that same similar space, but you use them a little different.
00:14:22.040 -->
00:14:27.980And you might use them together with other forms too, like with mix-ins and abstract-based classes.
00:14:27.980 -->
00:14:41.540So the article just goes through on how to define a protocol and really, and he's also discussed, also a decent tutorial on abstract-based classes and mix-ins as well, which is nice to kind of describe them all together.
00:14:42.320 -->
00:14:47.000But the protocol thing is just sort of, let me see if I can find an example.
00:14:47.000 -->
00:14:58.240So you inherit, you have a class that's inherited from protocol and you give it, you kind of give it function definitions, but don't fill in the body.
00:14:58.240 -->
00:15:00.340So that's kind of what a protocol is.
00:15:00.340 -->
00:15:12.220And then other classes that use the protocol derive from that, you know, from that protocol, from like in his example, there's a class called,
00:15:12.300 -->
00:15:15.340explainable, that something that has an explain function.
00:15:15.340 -->
00:15:24.540And so you would derive from explainable and then your new class would have, would, would be a instances of protocol.
00:15:24.540 -->
00:15:34.840But all it really says is that you can, other places that use it for types and stuff can declare that they need some, need a protocol passed in or a explainable class.
00:15:34.840 -->
00:15:36.980And then you can use anything that derives from that.
00:15:36.980 -->
00:15:38.400So pretty cool.
00:15:38.400 -->
00:15:39.940Yeah.
00:15:39.940 -->
00:15:42.280Brian, let me jump in and just say one extra point.
00:15:42.280 -->
00:15:48.060Brian, let me jump in and say, hey, what's awesome about this stuff is we've had duck typing like this.
00:15:48.060 -->
00:15:52.880There's an assess fairness function that it has to call explain on the object passed in.
00:15:52.880 -->
00:15:59.780And duck typing said, well, if it takes that, if you can pass it in there and it will run when you call explain on it, it must fit.
00:15:59.780 -->
00:16:00.100Right.
00:16:00.100 -->
00:16:02.340But the typing tools don't check.
00:16:02.340 -->
00:16:04.920So like PyCharm, for example, would just go, well, it's a whatever.
00:16:04.920 -->
00:16:05.980So good luck with that.
00:16:06.400 -->
00:16:20.700But once you do this protocol stuff, if you say the function takes an explainable and you have explainable as a protocol, you can pass stuff in and it doesn't even have to derive from or be related to that protocol in a base class.
00:16:20.700 -->
00:16:28.680Like anything that is passed in there, the type system will look at it and verify it hasn't explained, even if it's in a third party package and you don't control it.
00:16:28.680 -->
00:16:34.820So it's like a way to project typing structure onto a dynamic thing that is not necessarily your code.
00:16:34.820 -->
00:16:35.280It's wild.
00:16:35.280 -->
00:16:36.220Oh, cool.
00:16:36.220 -->
00:16:38.280I kind of had that a little bit wrong then.
00:16:38.280 -->
00:16:39.100Awesome.
00:16:39.100 -->
00:16:40.200You can drive from it.
00:16:40.200 -->
00:16:41.560It gives you more information potentially.
00:16:41.560 -->
00:16:42.980But it doesn't have to be.
00:16:42.980 -->
00:16:46.140You don't even have to, which that's the totally wild aspect.
00:16:46.140 -->
00:16:48.000That's what I think is really different for this.
00:16:48.000 -->
00:16:48.460Okay.
00:16:48.460 -->
00:16:49.320Yeah.
00:16:49.320 -->
00:16:51.420Oh, awesome.
00:16:51.420 -->
00:16:53.000That's pretty cool.
00:16:53.000 -->
00:16:54.100No.
00:16:54.100 -->
00:16:54.640Yeah.
00:16:54.640 -->
00:17:04.520So clearly I haven't thoroughly read this article, but I do want to get into really getting my head around abstract based classes, mix ins and protocols and stuff.
00:17:04.520 -->
00:17:12.780And I would say that though, because like your experiences in C++, mine also is in C++ and C# and all of those languages have these interface ideas.
00:17:13.340 -->
00:17:17.020But they're put into the type system through inheritance.
00:17:17.020 -->
00:17:19.660And so you can inherit from it and it does what you expect.
00:17:19.660 -->
00:17:20.680And it seems the right thing.
00:17:20.680 -->
00:17:22.700But what's weird is you don't even have to.
00:17:22.700 -->
00:17:23.920That's what's weird about it.
00:17:23.920 -->
00:17:24.800Okay.
00:17:24.800 -->
00:17:25.060Cool.
00:17:25.060 -->
00:17:26.960Oh, awesome.
00:17:26.960 -->
00:17:29.720Now I definitely want to play with it more.
00:17:29.720 -->
00:17:30.960Yeah.
00:17:30.960 -->
00:17:34.200Because I've kind of missed that aspect of C++ in Python.
00:17:34.200 -->
00:17:34.520Yeah.
00:17:34.520 -->
00:17:36.500So nice.
00:17:36.500 -->
00:17:37.240Anyway.
00:17:37.240 -->
00:17:43.960Also, I'm assuming it's an AI generated image, but really cool image at the top of the article.
00:17:43.960 -->
00:17:46.680I'm not sure what my opinion is about it.
00:17:46.680 -->
00:17:48.560I'll ask GPT how I feel about it.
00:17:48.560 -->
00:17:51.100It's hard to describe how I feel.
00:17:51.100 -->
00:17:52.380So I'll, you know.
00:17:52.380 -->
00:17:54.180Yeah.
00:17:54.180 -->
00:18:04.180I'm actually sort of, I don't know, this is a tangent, but I've switched to, I was playing with like Bing as my primary search engine at work.
00:18:04.180 -->
00:18:08.840I just, I don't know, a new computer, it just was there and I'm just going with it for a while.
00:18:08.840 -->
00:18:13.240But everything I search is like, it gives me an AI generated answer first.
00:18:13.240 -->
00:18:16.740And I'm like, I don't know if I like that very much.
00:18:16.740 -->
00:18:17.720Yeah, I know.
00:18:17.720 -->
00:18:18.900I know.
00:18:18.900 -->
00:18:19.680Anyway.
00:18:19.680 -->
00:18:22.480Well, that's it for our main stuff.
00:18:22.480 -->
00:18:23.460Do you have any extras?
00:18:23.460 -->
00:18:27.060I could have almost made it an extra, extra, extra this time.
00:18:27.060 -->
00:18:27.820So yeah, sure I do.
00:18:28.940 -->
00:18:34.500First of all, I've been wanting to say this several times and I'm usually like looking at my screen and see what I want to share and stuff.
00:18:34.500 -->
00:18:35.700And I didn't have this anywhere.
00:18:35.700 -->
00:18:38.120So I just pulled up Mastodon to remind me.
00:18:38.120 -->
00:18:43.040There are tons of people interacting with us over on Mastodon and I've had some great conversations.
00:18:43.040 -->
00:18:46.440And I want to, I'm sure you do too, Brian, want to follow people back.
00:18:46.660 -->
00:18:53.860So there's, there's kind of a, at least for, I'll say these are Michael's Mastodon's conventions.
00:18:53.860 -->
00:18:56.400You, you could take them for what you want.
00:18:56.400 -->
00:18:58.540I just made them up, but this is how I think about it.
00:18:58.540 -->
00:19:01.220So people will follow me and I'm like, huh, did that person follow me?
00:19:01.220 -->
00:19:04.820Cause they listened to the show and listened to Brian say, you should come join us and have a conversation.
00:19:04.820 -->
00:19:06.160Hey, I'd like to follow that person.
00:19:06.160 -->
00:19:10.840But a lot of times they have no picture, no description, no web pages, no posts.
00:19:10.840 -->
00:19:13.700You're like, yeah, maybe not next, you know?
00:19:13.980 -->
00:19:19.460And so I'm just going to say, if you have a picture and a description, a description seems
00:19:19.460 -->
00:19:19.980somewhat relevant.
00:19:19.980 -->
00:19:21.520I will certainly follow you back.
00:19:21.520 -->
00:19:23.620If you have posts, that's plus one.
00:19:23.620 -->
00:19:26.920If you have a verified webpage, which is easy, another plus one.
00:19:26.920 -->
00:19:31.040And a lot of people have private accounts who follow me.
00:19:31.040 -->
00:19:33.120I'm like, why are you in social media?
00:19:33.120 -->
00:19:37.560If you want a private account, I don't understand what this is because your profile is public.
00:19:37.560 -->
00:19:41.840Just your posts are private, but the platform has a way to have private posts.
00:19:41.840 -->
00:19:42.580I don't understand.
00:19:43.020 -->
00:19:46.260So anyway, probably not going to get a lot of engagement.
00:19:46.260 -->
00:19:50.940If you have a private account, just post private messages for things you don't want to see.
00:19:50.940 -->
00:19:55.880So, and while I'm on the topic of Mastodon, I had a really nice and productive conversation
00:19:55.880 -->
00:19:59.200with the PSF around my mask rant on PyCon.
00:19:59.200 -->
00:20:00.520So that was nice over there.
00:20:00.520 -->
00:20:05.400Some people weren't nice as they sent me, like not necessarily nice responses, but the PSF did.
00:20:05.400 -->
00:20:05.920And that was cool.
00:20:05.920 -->
00:20:06.940That's nice.
00:20:06.940 -->
00:20:07.740Yeah.
00:20:07.860 -->
00:20:08.180All right.
00:20:08.180 -->
00:20:09.000Next one.
00:20:09.000 -->
00:20:11.320Oh, wait, before you move on.
00:20:11.320 -->
00:20:14.580I just want to add my two cents on the picture.
00:20:14.940 -->
00:20:21.240I also prefer to be able to see who it is, but also primarily if the picture is something
00:20:21.240 -->
00:20:22.620that they're using on other stuff.
00:20:22.620 -->
00:20:27.800So like if a lot of people have a, their profile picture on their, like the profile picture
00:20:27.800 -->
00:20:34.520on their blog and on their, and in their primarily a GitHub user and, and they have the
00:20:34.520 -->
00:20:39.820same profile there, even if it's like a stylized something, but if it's the, if it's distinctive
00:20:39.820 -->
00:20:45.840and the same everywhere, like glyph, for instance, has a, has a, a different thing for them.
00:20:45.840 -->
00:20:49.920I I'm okay with that, but most people I think go with their picture.
00:20:49.920 -->
00:20:50.960I think it's the right answer.
00:20:50.960 -->
00:20:51.920Yeah.
00:20:51.920 -->
00:20:54.680When I say picture, I don't mean necessarily it has to be your picture.
00:20:54.680 -->
00:20:56.880Just the fact that it's not the default icon.
00:20:56.880 -->
00:21:01.620You've taken enough effort to put in something, even if it's just a picture of a triangle, I
00:21:01.620 -->
00:21:01.940don't care.
00:21:01.940 -->
00:21:02.260You know?
00:21:02.260 -->
00:21:04.500Yeah.
00:21:04.500 -->
00:21:05.580All right.
00:21:05.580 -->
00:21:08.600Paul is asking in the audience, what is your secret?
00:21:08.600 -->
00:21:11.600Okay.
00:21:11.600 -->
00:21:13.060Well, we'll do this.
00:21:13.060 -->
00:21:19.360we, earlier on, we were talking about how Michael's got a faster internet now, so we
00:21:19.360 -->
00:21:21.460should make it really fast speed.
00:21:21.460 -->
00:21:27.620and then somebody commented, wagrants, wagrants, commented, I played it at one and a half
00:21:27.620 -->
00:21:28.240times speed.
00:21:28.240 -->
00:21:30.420Then I got up to a live event.
00:21:30.420 -->
00:21:35.800and all of a sudden Brian should sounded like he got drunk in one second.
00:21:35.800 -->
00:21:40.320and so I said, Brian's secret is out.
00:21:40.320 -->
00:21:41.120So nice.
00:21:41.120 -->
00:21:44.360I'll just have another drink in my, Irish coffee.
00:21:44.360 -->
00:21:45.400It's coffee.
00:21:45.400 -->
00:21:46.360Trust me.
00:21:46.360 -->
00:21:48.120Oh, all right.
00:21:48.120 -->
00:21:49.520more extras.
00:21:49.520 -->
00:21:57.760So, Dropbox spooks users with turning on new AI features that can almost automatically
00:21:57.760 -->
00:22:00.380send your private documents to OpenAI.
00:22:00.600 -->
00:22:04.780Now you have to interact with part of the site for it to happen, but it doesn't say, Hey,
00:22:04.780 -->
00:22:07.180necessarily, cause you does, you touch this.
00:22:07.180 -->
00:22:10.440We're now sending your social security number away.
00:22:10.440 -->
00:22:13.320but anyway, that's kind of.
00:22:13.320 -->
00:22:15.360Well, I mean, yeah.
00:22:15.820 -->
00:22:22.660So you can check that out on defaulted on if you're not subject to the GDPR, but defaulted
00:22:22.660 -->
00:22:24.120to off if you are.
00:22:24.120 -->
00:22:26.980So, you know, plus one for GDPR there, I suppose.
00:22:26.980 -->
00:22:28.820So mine was turned on.
00:22:28.820 -->
00:22:29.900Okay.
00:22:29.900 -->
00:22:32.880So you have to go check to make sure that they're not sharing all of your.
00:22:32.880 -->
00:22:34.060Yes, exactly.
00:22:34.060 -->
00:22:35.480And it's on by default for you, Brian.
00:22:35.480 -->
00:22:36.900So you might want to check.
00:22:39.060 -->
00:22:41.000The whole conversation it's on ours.
00:22:41.000 -->
00:22:46.680The, the comment section of our second is like the top notch place for comments, I
00:22:46.680 -->
00:22:46.880think.
00:22:46.880 -->
00:22:47.980So really good.
00:22:47.980 -->
00:22:49.220Okay.
00:22:49.220 -->
00:22:50.360Yeah.
00:22:50.360 -->
00:22:51.720There's, it talks about how to go find it.
00:22:51.720 -->
00:22:53.700So anyway, this like made me think, you know what?
00:22:53.700 -->
00:22:54.860I should really be a little more.
00:22:54.860 -->
00:22:58.220I have, I have like three terabytes of data and Dropbox.
00:22:58.220 -->
00:23:01.780So I'm like, maybe I should be a little more specific and intentional about where I put
00:23:01.780 -->
00:23:02.080my stuff.
00:23:02.080 -->
00:23:05.700So I went on this, this right on Mastodon, by the way, a bunch of people sent me all sorts
00:23:05.700 -->
00:23:08.340of options of like, okay, if not Dropbox, then what?
00:23:08.340 -->
00:23:14.660And I decided whatever I'm doing is probably good to have it end to end encrypted.
00:23:14.660 -->
00:23:16.460Cause then I don't care what they try to do with it.
00:23:16.460 -->
00:23:16.720Right.
00:23:16.720 -->
00:23:17.860Cause they can't decrypt it.
00:23:17.860 -->
00:23:18.380Yeah.
00:23:18.380 -->
00:23:20.380That, that solves a whole lot of problems.
00:23:20.380 -->
00:23:24.480I don't, you care about the security, but it doesn't matter as much as if you're just
00:23:24.480 -->
00:23:27.260exposing files or leaking stuff or whatever.
00:23:27.260 -->
00:23:27.560Right.
00:23:27.560 -->
00:23:32.720So I decided to go, I already have a, a paid Proton account.
00:23:32.720 -->
00:23:37.500So all my private stuff, all my private documents and like my scans of things I want to save that
00:23:37.500 -->
00:23:38.300might be sensitive.
00:23:38.300 -->
00:23:44.580They're going to Proton drive where I have 500 gigs and it's already paid for and
00:23:44.580 -->
00:23:45.040encrypted.
00:23:45.040 -->
00:23:46.760There's async thing you can install.
00:23:46.760 -->
00:23:47.600That's pretty excellent.
00:23:47.600 -->
00:23:53.220I looked around and some people suggested next cloud, which is really interesting.
00:23:53.220 -->
00:23:54.600It's maybe more than I want.
00:23:54.600 -->
00:23:59.260It's almost like a document calendar, everything self-hosted.
00:23:59.260 -->
00:24:00.460Maybe do that next.
00:24:00.460 -->
00:24:01.640Yeah.
00:24:01.640 -->
00:24:08.060Own cloud got like super owned just last week and is a similar self-hosted thing, which
00:24:08.060 -->
00:24:09.680makes me a little nervous to self-host stuff.
00:24:09.680 -->
00:24:12.720I know there are people host it for you, but it's not next cloud.
00:24:12.720 -->
00:24:14.060It's a little bit indirect.
00:24:14.060 -->
00:24:16.280So maybe violin.
00:24:16.280 -->
00:24:23.120I don't know if you've heard of this, but they have encrypted, cloud storage and
00:24:23.120 -->
00:24:25.000the end again, pretty nice.
00:24:25.220 -->
00:24:27.140I think this is, is it British?
00:24:27.140 -->
00:24:28.540I don't, I don't remember exactly.
00:24:28.540 -->
00:24:29.680UG.
00:24:29.680 -->
00:24:31.020Not sure.
00:24:31.020 -->
00:24:36.400but somewhere in Europe, this company, it looks pretty good.
00:24:36.400 -->
00:24:41.340I have not tried it, but, and, and encrypted there's ice drive, the next generation cloud
00:24:41.340 -->
00:24:41.640storage.
00:24:41.640 -->
00:24:43.420Also, I think this might be the British one.
00:24:43.660 -->
00:24:44.020Yeah.
00:24:44.020 -->
00:24:44.740This isn't Wales.
00:24:44.740 -->
00:24:47.000I mean, British, I mean, UK.
00:24:47.000 -->
00:24:47.600Sorry folks.
00:24:47.600 -->
00:24:49.560So that's pretty interesting.
00:24:49.560 -->
00:24:53.700And I think, I think I'm going to go with sync.com.
00:24:53.700 -->
00:24:54.720Super simple.
00:24:54.720 -->
00:24:59.260All they do is sync and then encrypted for six terabytes.
00:24:59.260 -->
00:25:04.640It's like 140 bucks a year or something like that, which is a lot, you know, versus 240 for
00:25:04.640 -->
00:25:05.640less than that in Dropbox.
00:25:05.640 -->
00:25:09.400Anyway, if people are in this zone of like, I'm looking for all this stuff.
00:25:09.440 -->
00:25:14.940Oh my gosh, like, what am I going to do regardless of whether you care about the Dropbox fiasco?
00:25:14.940 -->
00:25:16.940Here's a bunch of options.
00:25:16.940 -->
00:25:17.900Can people can pick?
00:25:17.900 -->
00:25:21.280There was one comment in this whole discussion that was pretty interesting.
00:25:21.280 -->
00:25:24.540I think it was in the ours, just ours technica thing.
00:25:24.540 -->
00:25:30.180And it said, look, if you give your data unencrypted to somebody, another company, even if you trust
00:25:30.180 -->
00:25:34.480them, you don't really necessarily control that anymore, especially if they decide to pass
00:25:34.480 -->
00:25:34.920it along.
00:25:34.920 -->
00:25:38.800So, somebody pointed out cryptometer.
00:25:38.800 -->
00:25:39.540Have you heard of this, Brian?
00:25:39.540 -->
00:25:40.180No.
00:25:40.180 -->
00:25:42.580So cryptometer is cool.
00:25:42.580 -->
00:25:47.100I have used something like it, but it's older and no longer supported, which makes me sad.
00:25:47.100 -->
00:25:49.500So what you do is you run this app.
00:25:49.500 -->
00:25:51.880It does like super strong encryption.
00:25:51.880 -->
00:25:53.560You control the key, right?
00:25:53.560 -->
00:25:55.680It's just like a thing you make up and don't give away.
00:25:55.680 -->
00:26:04.080And then it will create a drive, a mountable drive on your Mac or on windows, like a D driver,
00:26:04.080 -->
00:26:05.120E drive or whatever.
00:26:05.120 -->
00:26:06.220And that thing is encrypted.
00:26:06.220 -->
00:26:10.360So when you mount it with this software, it looks like a drive, but then when you unmount
00:26:10.360 -->
00:26:12.180it, it becomes just an encrypted pile of files.
00:26:12.180 -->
00:26:17.640So you put that in Dropbox, you put that in sync or whatever, and then no matter what happens,
00:26:17.640 -->
00:26:20.000they just get an encrypted blob of stuff.
00:26:20.000 -->
00:26:25.200So things I super care about, I have encrypted in something either cryptometer or something like it.
00:26:26.400 -->
00:26:32.900On top of all the safety around the cloud drive and trust and whatever you might have there, like worst case scenario,
00:26:32.900 -->
00:26:37.520they get a huge, hard, hard to decrypt a blob of stuff that they don't know the value of.
00:26:37.520 -->
00:26:39.860And I don't know if it has Linux.
00:26:39.860 -->
00:26:41.140Someone's asking does it have Linux.
00:26:42.280 -->
00:26:44.380I think it might.
00:26:44.380 -->
00:26:46.180Let's see.
00:26:46.180 -->
00:26:47.100Mac.
00:26:47.100 -->
00:26:50.920No, let's see if I go to download what it says.
00:26:50.920 -->
00:26:52.060Yeah.
00:26:52.060 -->
00:26:54.340For people with downloads.
00:26:54.340 -->
00:26:56.380Use your DMG.
00:26:56.380 -->
00:26:57.220Yeah.
00:26:57.220 -->
00:26:59.820Windows, Mac, Linux, Android, and iOS even.
00:27:01.100 -->
00:27:01.580Yeah.
00:27:01.580 -->
00:27:02.920So that's that.
00:27:02.920 -->
00:27:05.880I think that it's a loss.
00:27:05.880 -->
00:27:07.020I mean, cool.
00:27:07.020 -->
00:27:13.580But cryptometer would have been great as a rotten tomato sort of thing to rate different cryptocurrencies.
00:27:13.580 -->
00:27:15.180I know.
00:27:15.180 -->
00:27:18.400The word is taken.
00:27:18.400 -->
00:27:22.600I'm pretty sure this has been around before crypto became a thing.
00:27:22.600 -->
00:27:25.260I'm not sure how old this is.
00:27:25.500 -->
00:27:26.500Yeah.
00:27:26.500 -->
00:27:31.520There's 17 pages of releases on GitHub from 2017.
00:27:31.520 -->
00:27:33.980So yeah, they were ahead of their time in that.
00:27:33.980 -->
00:27:35.900But yeah, this is super cool, Brian.
00:27:35.900 -->
00:27:39.700Like you can just say, I don't really care that much about the security of where these files go.
00:27:39.700 -->
00:27:41.220You're not getting them.
00:27:41.220 -->
00:27:43.740Interesting.
00:27:43.740 -->
00:27:47.380So I suggest a sweet combination of these things.
00:27:47.380 -->
00:27:51.100I'm going through like a super digital decluttering as part of this.
00:27:51.100 -->
00:27:51.980And it's glorious.
00:27:51.980 -->
00:27:55.140I'm having like a tech love affair with Notion.
00:27:55.260 -->
00:27:55.800It's so good.
00:27:55.800 -->
00:27:59.540But yeah, anyway, I'll leave it there.
00:27:59.540 -->
00:28:01.120Maybe I'll come back and tell you more about this.
00:28:01.120 -->
00:28:08.880Last thing for me, I'm doing the keynote at PyCon Philippines 2024 in February.
00:28:08.880 -->
00:28:09.980How awesome is that?
00:28:09.980 -->
00:28:11.860Slightly jealous, man.
00:28:11.860 -->
00:28:14.100Somewhere I scroll down and over.
00:28:14.100 -->
00:28:14.720Woo.
00:28:14.720 -->
00:28:15.560Yeah.
00:28:15.560 -->
00:28:16.640Cool.
00:28:16.640 -->
00:28:18.620Three of us and I get to be one of them.
00:28:18.620 -->
00:28:19.200So that'll be awesome.
00:28:19.200 -->
00:28:20.400Thank you for inviting me.
00:28:20.400 -->
00:28:22.180And if you're going to be there, I will see you there.
00:28:22.180 -->
00:28:22.840Nice.
00:28:22.840 -->
00:28:23.660Yeah.
00:28:23.660 -->
00:28:24.140In February.
00:28:25.020 -->
00:28:25.300Cool.
00:28:25.300 -->
00:28:27.000Oops.
00:28:27.000 -->
00:28:29.300What were you for your extras?
00:28:29.300 -->
00:28:31.020Well, I just deleted one.
00:28:31.020 -->
00:28:32.180So sorry about that.
00:28:32.180 -->
00:28:35.520But shift command T.
00:28:35.520 -->
00:28:38.060Oh, shift commit.
00:28:38.060 -->
00:28:39.980Oh, whatever.
00:28:39.980 -->
00:28:41.700I'll just tell you guys about it.
00:28:43.400 -->
00:28:50.040So this is the kind of time of year that some people like to donate some money to different
00:28:50.040 -->
00:28:50.980people, different groups.
00:28:50.980 -->
00:28:55.960I had the link up for the Python Software Foundation.
00:28:55.960 -->
00:28:59.360So Python Software Foundation is not hard to find.
00:28:59.560 -->
00:29:04.780So I would encourage people to consider giving some money to the PSF.
00:29:04.780 -->
00:29:08.020So Django Software Foundation is doing a drive.
00:29:08.020 -->
00:29:09.960So giving some money.
00:29:09.960 -->
00:29:11.180If you use Django, of course.
00:29:11.840 -->
00:29:15.780If you enjoy Python Bytes, of course, you can check out Patreon.
00:29:15.780 -->
00:29:23.820At Patreon, we do accept money for Python Bytes to help keep the show going.
00:29:23.820 -->
00:29:24.480This is great.
00:29:25.180 -->
00:29:32.100Also, I wanted to highlight as well just the idea that to just go on GitHub.
00:29:32.100 -->
00:29:37.640So the different things you use on GitHub, like attrs, for instance, you can go down and
00:29:37.640 -->
00:29:39.140you can sponsor this project.
00:29:40.340 -->
00:29:42.300You can throw some money that way.
00:29:42.300 -->
00:29:44.840pytest has a sponsor link.
00:29:44.840 -->
00:29:52.480Pallets and Flask has a way to sponsor either all of Pallets or particular projects within
00:29:52.480 -->
00:29:54.600the Pallets program.
00:29:54.600 -->
00:30:02.680And really, a lot of projects that you use every day have a sponsor of this project on GitHub.
00:30:02.680 -->
00:30:04.740So I think it'd be great, too, for people.
00:30:04.740 -->
00:30:08.400If you have extra and you want to help out, I think it's a good idea.
00:30:09.640 -->
00:30:14.320Sometimes I help out different projects and I kind of shift it up every year and local
00:30:14.320 -->
00:30:14.800things.
00:30:14.800 -->
00:30:17.740And I think the things that I use.
00:30:17.740 -->
00:30:24.280And somebody asked me once recently about some projects don't really need the money.
00:30:24.280 -->
00:30:31.020And I guess, for instance, I really love having people support Python Bytes through Patreon.
00:30:31.020 -->
00:30:33.980It's fun to have our community help support us.
00:30:33.980 -->
00:30:38.740If you, in particular, don't donate, we're not going to disappear.
00:30:38.940 -->
00:30:40.720Michael and I are going to keep doing it anyway.
00:30:40.720 -->
00:30:42.600It is totally up to you.
00:30:42.600 -->
00:30:44.340And definitely don't do it if it's a hardship.
00:30:44.660 -->
00:30:49.200But I think it's a fun thing to do this time of year is to spread the love around.
00:30:49.200 -->
00:30:50.620That's all I wanted to say.
00:30:50.620 -->
00:30:55.660Indeed, I second that as well.
00:30:55.660 -->
00:30:59.540That's kind of serious, though.
00:30:59.540 -->
00:31:01.020Do you have something funny for us?
00:31:01.020 -->
00:31:02.080Let's lighten it up.
00:31:02.140 -->
00:31:03.180No, this is not funny.
00:31:03.180 -->
00:31:04.620This is too close to home.
00:31:04.620 -->
00:31:06.580You tell me how you feel about this.
00:31:06.580 -->
00:31:07.400So here's the joke.
00:31:07.400 -->
00:31:08.320Here's the joke.
00:31:08.320 -->
00:31:09.960So there's two red buttons.
00:31:09.960 -->
00:31:11.980Think Ren and Stimpy or something like that.
00:31:11.980 -->
00:31:13.420And a huge, scary red button.
00:31:13.420 -->
00:31:14.580You can press either of them.
00:31:14.580 -->
00:31:17.580One of them says, pay $12.
00:31:17.580 -->
00:31:21.640The other one says, admit to yourself, your dream is dead.
00:31:22.640 -->
00:31:25.960There's somebody sweating trying to decide which button to press.
00:31:25.960 -->
00:31:27.600And it's the domain renewal.
00:31:27.600 -->
00:31:28.900Oh, yeah.
00:31:28.900 -->
00:31:29.520Totally.
00:31:29.520 -->
00:31:40.220This is way too close for home to home for me because I just transferred 25 domains from all the different places into hovers I talked about like a while ago.
00:31:40.220 -->
00:31:42.860And I talked about all the name servers and all that.
00:31:42.860 -->
00:31:47.420And there was a few where I'm like, God, is the dream dead or do I just move this?
00:31:47.420 -->
00:31:50.720So how many are you using still out of those?
00:31:50.780 -->
00:31:55.960Well, lots of them are to like protect people from doing crappy stuff.
00:31:55.960 -->
00:31:57.780For example, I've talked by thon.com.
00:31:57.780 -->
00:31:59.920I don't technically use it.
00:31:59.920 -->
00:32:01.840It redirects to talk by thon.fm.
00:32:01.840 -->
00:32:05.280But if I don't have it, someone will get it.
00:32:05.280 -->
00:32:06.760And then all sorts of badness.
00:32:06.760 -->
00:32:08.320Like there's a bunch of these cards.
00:32:08.320 -->
00:32:10.060I would say half of them fall into that realm.
00:32:10.060 -->
00:32:10.560Okay.
00:32:10.560 -->
00:32:14.900And then maybe another third I'm directly using.
00:32:14.900 -->
00:32:19.360And then there's the whatever the balance, the one six that's left is the dream could be dead.
00:32:19.920 -->
00:32:21.460Or it could be not there yet.
00:32:21.460 -->
00:32:22.140Not realized yet.
00:32:22.140 -->
00:32:22.460We'll see.
00:32:22.460 -->
00:32:27.480I had about eight that I was not really using last year.
00:32:27.480 -->
00:32:35.640And I admitted that about half of those are not going to go anywhere and let them expire.
00:32:35.640 -->
00:32:36.120Let them go.
00:32:36.120 -->
00:32:39.340Although, I mean, the domain companies don't make it easy.
00:32:39.340 -->
00:32:41.880You're like, okay, I'm just going to let it expire.
00:32:42.140 -->
00:32:43.060But you get like emails.
00:32:43.060 -->
00:32:44.720No, it's going to go.
00:32:44.720 -->
00:32:45.780Oh, it's gone.
00:32:45.780 -->
00:32:48.780But we're going to save it for you for a couple more months.
00:32:48.780 -->
00:32:51.460And you get a whole bunch of guilt emails.
00:32:51.460 -->
00:32:52.560But yeah.
00:32:52.560 -->
00:32:53.480Anyway.
00:32:53.480 -->
00:32:54.060Yeah.
00:32:54.060 -->
00:32:54.860Yeah, exactly.
00:32:54.860 -->
00:32:58.320I have one real quick sad story to round this out, Brian.
00:32:58.320 -->
00:32:59.000Okay.
00:32:59.000 -->
00:33:02.700A friend of mine and I decided we're going to write some iPhone apps right when the iPhone came out.
00:33:02.700 -->
00:33:05.560Like 2007 or whatever it was.
00:33:05.560 -->
00:33:09.360And he had the clever idea of like, let's get a domain.
00:33:09.360 -->
00:33:10.400I probably did it together.
00:33:10.400 -->
00:33:10.820I don't know.
00:33:10.820 -->
00:33:13.800Got the domain iPhone.ly.
00:33:16.000 -->
00:33:18.460And we worked on stuff for like a year.
00:33:18.460 -->
00:33:21.040Because we didn't know we're going to build.
00:33:21.040 -->
00:33:21.860We'll just come up with this.
00:33:21.860 -->
00:33:22.720We'll put stuff there.
00:33:22.720 -->
00:33:25.520Never really came up with stuff.
00:33:25.520 -->
00:33:27.020It looked like there was nothing on the horizon.
00:33:27.020 -->
00:33:29.480We're like, you know, after three years, the LY, it was like the FM.
00:33:29.480 -->
00:33:30.520It was like kind of expensive.
00:33:30.520 -->
00:33:31.600Like, ah, just let it go.
00:33:31.600 -->
00:33:35.200A week later, somebody says, hey, I'll give you $5,000 for that domain.
00:33:35.200 -->
00:33:39.680So I shoot my friend like, hey, don't let it expire yet.
00:33:39.680 -->
00:33:41.280Let's do this instead.
00:33:41.280 -->
00:33:42.960He's like, it expired last week.
00:33:42.960 -->
00:33:43.620Like, no.
00:33:43.620 -->
00:33:44.500Oh, no.
00:33:45.820 -->
00:33:46.500Oh, well.
00:33:46.500 -->
00:33:47.380So it goes.
00:33:47.380 -->
00:33:51.760So somebody could have paid you $5,000, but they instead got it for like $20.
00:33:51.760 -->
00:33:53.480Yeah, for like $20 or something.
00:33:53.480 -->
00:33:56.800I'm sorry to laugh at your pain.
00:33:56.800 -->
00:33:58.160No, it's okay.
00:33:58.160 -->
00:34:01.120I mean, like, I'm telling you, this is not a joke.
00:34:01.120 -->
00:34:05.120Admit to yourself your dream is dead or pay $12 for the rest of your life every year.
00:34:05.120 -->
00:34:06.200That's where you are.
00:34:06.200 -->
00:34:08.600No, it's good.
00:34:08.600 -->
00:34:09.220It's a good joke.
00:34:09.220 -->
00:34:11.260And people can hopefully laugh at it.
00:34:11.260 -->
00:34:11.660Yeah.
00:34:11.660 -->
00:34:15.780Everybody, most people that listen to this podcast probably are feeling this.
00:34:15.780 -->
00:34:16.620Yeah.
00:34:16.620 -->
00:34:17.960All right.
00:34:17.960 -->
00:34:18.400All right.
00:34:18.400 -->
00:34:21.340Well, I'm feeling good about our year's worth of show every day.
00:34:21.340 -->
00:34:22.640Yeah.
00:34:22.640 -->
00:34:23.480365.
00:34:23.480 -->
00:34:24.540Pretty cool.
00:34:24.540 -->
00:34:24.880Yeah.
00:34:24.880 -->
00:34:25.880All right.
00:34:25.880 -->
00:34:26.960Talk to you later.
00:34:26.960 -->
00:34:27.800Yeah.
00:34:27.800 -->
00:34:28.220See you.