Podchaser Logo
Home
#365: Inheritance, but not Inheritance!

#365: Inheritance, but not Inheritance!

Released Wednesday, 20th December 2023
Good episode? Give it some love!
#365: Inheritance, but not Inheritance!

#365: Inheritance, but not Inheritance!

#365: Inheritance, but not Inheritance!

#365: Inheritance, but not Inheritance!

Wednesday, 20th December 2023
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:00

Hello and welcome to Python bytes where

0:02

we deliver Python news and headlines directly

0:04

to earbuds This is

0:06

episode 365

0:09

Wow recorded like we've been doing it for a

0:11

year. Yeah Recorded

0:14

December 19th 2023. Yeah, and I'm Brian Auchin Hey,

0:20

I'm Michael Kennedy. And yeah, if we did it if

0:23

somebody listened to one a day now from

0:25

like now on they would be behind

0:28

because we'll be way ahead of 365

0:31

by the time they finish but Still

0:35

be awesome Well

0:39

want to kick us off with something cool.

0:41

Oh before we kick it off. Yeah, go

0:43

ahead Let's uh, let's say that our this

0:45

episode is sponsored by us. So please support

0:47

us and and other people I'm gonna

0:49

like talk about that a little bit later at the end

0:51

of the show But

0:53

also check out all the

0:55

courses that talk Python training check out the

0:57

complete Pytest course You can be

1:00

a patreon supporter and also if you want to

1:02

connect with us one of the best ways to

1:04

do it is through on mastodon and We're

1:07

all on Faustodon or at least

1:09

Michael and I are at m Kennedy at

1:11

Brian Auchin and at Python

1:14

bytes, so Indeed.

1:17

Hey, do I feel like I'm really

1:19

fast Brian like neo in the matrix?

1:23

mind-bendingly fast Let's

1:25

go with yes. Okay. I appreciate

1:28

that cuz this I just got fiber

1:30

in Gigabit fiber installed

1:32

30 minutes ago. So hoping

1:34

it wouldn't destroy the show, but it almost almost didn't make it

1:36

but it made it Oh nice.

1:39

So hopefully that doesn't curse it that

1:41

something's wrong and it will crash but 950

1:44

megabit down which is fine, but 950 megabit

1:46

up is glorious We should like

1:49

we should speed up the the playback speed when we release the mp3

1:51

so it sounds really fast Yeah, no, let's let's talk about let's talk

1:53

about about

2:00

Hatch because Hatch is awesome. Ofek is

2:03

the maintainer creator of Hatch and boy

2:06

oh boy has he gone big on his

2:08

latest release 1.8.0. So Hatch is like Flit

2:13

is like PDM is like

2:15

Pip, ENV and many of these

2:17

other poetry others if I'm

2:20

leaving your version of this out

2:22

I apologize. But

2:24

with version 1.8 this has gone

2:29

in a bit of a different direction. Now I

2:31

had Ofek on the Python

2:34

packaging panel. Steve Dauer is

2:36

there, some other folks were there. Really

2:40

interesting that there's

2:42

this tension between should

2:44

there be an app that

2:46

manages Python environments with

2:49

Python or should there be a thing that

2:51

manages the Python itself.

2:54

Kind of like Py

2:56

ENV for example. So

2:59

Hatch has gone in that

3:01

direction of now Hatch manages

3:03

Python not just Python projects

3:07

and there's this thing

3:09

to solve this problem in the form

3:11

of PyApp. So PyApp is even maybe

3:14

more awesome. PyApp is

3:16

a runtime installer for

3:18

Python projects written in Rust and

3:21

they can be you ready for this

3:23

I'm so so excited. Your

3:26

Python app can be distributed

3:28

as a standalone executable a

3:30

.exe or .app for users.

3:32

What do you think Brian? I'm very

3:35

interested in finding out more. Now

3:37

this whole post is a little bit wordy

3:39

so let me jump into the omnivore version

3:42

of it over here which has a huge icon. So

3:44

Ofek says look one

3:46

of the things that's been a perpetual problem for

3:49

Hatch and all the others I named is that

3:51

Python itself is a dependency. So

3:53

in order to use Hatch or any of these other tools or

3:56

any apps you have to say well go get Python and then

3:58

get back to me and we'll start talking right. So

4:00

he came up with this thing called PyApp that

4:03

will create installers for the different

4:05

platforms. Claims is trivial. It's

4:08

probably never trivial, but possible would

4:10

be awesome even. And

4:13

so starting with this, releases not

4:18

only are the binaries available for

4:20

every platform, but there are installers,

4:22

as in like install wizards on

4:24

Windows and a DMG type thing

4:26

I'm guessing or a PKG on

4:29

Mac OS. That's

4:31

awesome. If you've ever in

4:33

the recent days tried to put

4:35

something onto Mac OS

4:38

or Windows, there's

4:41

a whole nightmare of digitally signing

4:43

around it, Brian. So you

4:45

can't just get a binary and give it to somebody.

4:47

The platforms will freak out. They won't let you

4:50

open it. Like Mac OS will not let you

4:52

open it unless you go into settings and say,

4:54

allow me to run apps from untrusted developers. And

4:58

Windows gives you this big scary dialogue and tries to

5:00

not run it. So that's

5:03

why this next part is- It's not developers

5:05

that you don't trust. It's developers that Apple

5:07

doesn't trust. Yes, exactly. You may or may

5:09

not trust them, but that's

5:11

a different conversation. It's

5:14

a fair feature, but it makes creating

5:16

desktop and distributed apps super painful. So

5:19

check this out. Halfway there. Installer

5:21

for Mac OS is signed

5:24

using a certificate. Your

5:29

apps built with this are already trusted. Honestly,

5:31

I don't know how this is possible. I

5:33

know why how it works.

5:36

I'm not sure how it's allowed,

5:38

but I'm all for it. Because

5:40

I've dealt with Apple and they are

5:42

not lenient in any

5:45

way, chamberful, when it comes to

5:47

stuff running on their platform. So

5:49

the installer for the Mac OS is signed using

5:51

the certificate from the same account used

5:53

to sign the official distributions of Python so

5:55

you won't get any security warnings or blocking.

5:57

Thank you, Ederbin, for helping out with that.

6:01

And Hatch itself with

6:03

any good system is self-updating so you

6:05

can hatch self-update. But also I want

6:07

to point out there's also a new

6:09

Python like hatch space Python command

6:12

group that will allow you to manage things so

6:14

you can show what you

6:16

have installed. You can install different versions of

6:18

Python, C Python and

6:21

PyPy for those. It works

6:24

with virtual environments. It has built

6:26

in rough and rough format integrations.

6:29

And traditionally

6:31

it's been somewhat slow

6:33

to like activate and set

6:35

up a virtual environment that's

6:38

already previously been installed because it'll refresh

6:40

and recheck that all of the dependencies

6:42

are there and everything. So

6:44

now it does a hash of those. And

6:47

so only if the dependency statement

6:49

doesn't match the hash, right, basically,

6:51

so it'll pre-compute all that stuff.

6:53

So now it should be basically

6:55

instant. So also some minor

6:58

breaking changes around build defaults.

7:01

And then your app build target targets what I've

7:04

been raving about. So, in fact,

7:06

you killed it. Can't believe it. It's awesome. Awesome.

7:09

So yeah, hatch has

7:11

hashes. If

7:15

you hash, if you hash a hatch with hash

7:17

Ling and you know, like, we've got a tongue

7:19

twister in there, we could do. I'm not doing

7:21

it though. I'm excited

7:23

about this. It's very cool. I definitely want

7:25

to play with it. Yeah. Yes,

7:28

indeed. What would you? All

7:32

right. Well, I'm not

7:34

sure how long this has been out, but Hinnock

7:37

has been promoting

7:39

a new project that he's

7:41

got called services or SVCS,

7:45

which is short for services and

7:48

pronounced services. And it is

7:50

a, I

7:52

think it could be used for more than web

7:54

stuff, but the intent I think was for

7:57

removing some of the boilerplate code. from

8:01

hooking up dependencies and

8:03

different like your

8:06

database and your cache

8:08

and all sorts of stuff to an application. Typically

8:11

a web application, but I think it could really

8:13

be anything. But it's

8:15

a flexible service locator. One

8:18

of the reasons why I haven't covered

8:20

it yet on Python bytes, I don't think

8:22

I have, is because I didn't quite understand

8:24

what it was doing, and it took me

8:26

a while to get my head around it.

8:30

But it's pretty cool

8:32

and Henik apparently realizes

8:35

that it is a bit difficult to

8:37

get your head around what this is

8:39

doing. So he just recently

8:41

released a video describing

8:43

this project. So really

8:46

great video

8:50

describing services, what you

8:52

can do with it, and also how to

8:55

pronounce his name. He doesn't pronounce his last

8:57

name though. Apparently that's left for maybe episode

9:00

two. But

9:05

anyway, it's

9:07

pretty cool. Actually, I'm pretty excited about

9:09

it after watching it, watching

9:12

the video. I thought

9:14

maybe it wouldn't be for me,

9:16

but especially for keeping services contained

9:18

or the setting up services, looking

9:21

them up within different parts of your

9:23

application, and then getting

9:27

them all cleaned up correctly at the end, that's

9:29

what it does plus a whole bunch of other

9:31

stuff. One of the neat

9:33

things is throughout all of this documentation, the documentation

9:35

is amazing. Throughout all the

9:38

documentation, he has examples in

9:40

AIOHTP, Fast

9:43

API, Flask, Pyramid, and Starlet. The

9:48

video is talking about Flask, but it's cool

9:50

that he just already hit all the bases.

9:53

How do I do this in Starlet?

9:55

Well, it's just a little different, mostly

9:57

similar. little

10:00

different ways to use it throughout the

10:03

different applications. So it's pretty cool.

10:05

He also mentions in the video that he

10:08

took a really long time really

10:11

talking about the terminology in the

10:13

glossary of the documentation. And actually

10:17

I really appreciate this of somebody

10:19

saying okay this is

10:21

generally what I think of is what the

10:24

meanings for all these words are

10:27

and it's a lot of these words are

10:30

they're overused in the English language to begin

10:32

with and even in talking about programming web

10:34

programming. But things like what is the service,

10:37

what is a resource, what is

10:39

a dependency, service layer. He

10:41

goes through a whole bunch of different terms, what

10:43

it means to him

10:45

and probably to everybody else. But if

10:48

you're unfamiliar with them. And

10:50

even a decent discussion of dependency injection.

10:52

So one of

10:54

the things he talks about is that this

10:56

is not really a dependency injection

10:58

thing. It's in version of control but

11:01

it's a little different than service

11:04

locators are a little different than dependency

11:06

injection. And I kind of

11:08

appreciate that discussion. It's pretty cool. So

11:10

anyway kudos to Henik for

11:12

doing this and for helping

11:14

us pronounce his name. Yeah that

11:17

looks cool. I definitely want to check this out. It's news

11:19

to me so I will be checking out.

11:23

Cool. Mm-hmm. We

11:26

have new leaders. Brian.

11:30

We do. Yes for the Python

11:32

world we have new leaders and

11:34

specifically the steering council election

11:37

results are in for next

11:39

year. Okay. So for

11:42

the 2024 term we

11:45

have Pablo Galindo Salgado. We've

11:47

got Gregory Smith, Emily Morehouse,

11:50

Barry Warsaw and Thomas Werthers.

11:53

So very cool to see them all

11:55

leaving the way. There's a lot of familiar

11:57

faces there. So that's. It's

12:00

pretty cool. I don't expect a whole lot

12:02

of different from the year

12:04

before, but here's the results. You

12:06

could actually see in PEP 8105, let's

12:10

see everybody who was

12:13

potentially a candidate, how many votes

12:16

they got by people who are disenfranchised. I don't know

12:18

what that means. Or the

12:20

not the franchise voters, the one

12:22

who are in franchise, how

12:24

many votes that they got. And you can put that all

12:26

together. So this begs the question, like,

12:28

well, how do you get on this

12:31

list? You

12:33

get on this list by being nominated by

12:35

a core developer. So everyone on the list

12:37

was nominated by a core developer. If you

12:39

are a core developer, you can nominate yourself.

12:43

So that could be the person you see here

12:46

because everyone I see, I think is a core

12:48

developer. But

12:50

anyway, the results, the results are

12:52

in and we have those five folks. Welcome

12:55

and congrats. Awesome. Nice.

12:58

Well, it's a good set of names too. Yeah.

13:04

All right. Indeed. Well, there

13:09

probably is some protocol around

13:11

the election results, right? No, you could

13:13

model it with classes or you could functionally

13:15

model it like in a immutable way, but

13:18

I don't know about a protocol. But

13:22

we're just great at transitions on this podcast.

13:26

The next I want to talk about Python protocols.

13:29

So there's an article from

13:31

Carlos Vissina, I think, called

13:36

Python protocols, defining a protocol and when

13:38

to use it. And actually this is something

13:40

that I have, I've been meaning to play

13:43

with for actually some years and I haven't

13:45

really done much with it yet. So I

13:47

really appreciate this article. He's

13:49

talking about the protocols

13:52

are a feature of Python that were added

13:54

in Python 3.8. So really

13:57

anything maintainable right now can use a. you

14:01

can use protocols. But they're, and

14:03

you kind of, they're, mentally, I

14:06

think of them kind of like, like

14:08

class inheritance or mix-ins

14:11

or abstract based classes. And

14:13

that's one of the things he talks about this, in

14:15

this article is, is they are in that

14:18

same similar space, but

14:20

you use them a little different. And you might use

14:22

them together with other forms too, like

14:25

with mix-ins and abstract based classes.

14:28

So the article just goes through on how

14:30

to define a protocol and really, and

14:33

he's also discussed, also

14:35

a decent tutorial on abstract based classes and

14:37

mix-ins as well, which is nice to kind

14:39

of describe them all together. But

14:43

the protocol thing is just sort of, let me

14:45

see if I can find an example. So

14:49

you inherit, you have a class that's inherited

14:51

from protocol and you give

14:53

it, you kind of give it

14:55

function definitions, but don't fill in the

14:57

body. So that's kind of what a protocol

14:59

is. And then other

15:02

classes that use the protocol derive

15:06

from that, you know, from

15:08

that protocol from, like in his example, there's

15:10

a class called explainable,

15:13

that something that has an explain function. And

15:16

so you would derive

15:18

from explainable and then your new

15:20

class would have, would be a instances of protocol, but

15:25

all it really says is that you can,

15:27

other places that use it for types and

15:29

stuff can declare that they need some, need

15:31

a protocol passed in or a explainable class

15:34

and then you can use anything that derives from

15:36

that. So pretty cool. Yeah,

15:39

Brian, let me jump in to say one extra point here.

15:42

Like what's awesome about this stuff

15:44

is we've had duck

15:46

typing, like there's an access

15:48

fairness function that it has to call

15:50

explain on the object passed in. And

15:53

duck typing said, well, if it takes that, if you

15:55

can pass it in there and it will run when

15:58

you call explain on it, it must fit, right? But

16:00

the typing tools don't check. So like PyCharm for

16:03

example, would just go well, so whatever. So good

16:05

luck with that. But once you

16:07

do this protocol stuff, if you say the

16:09

function takes an explainable and you have explainable

16:11

as a protocol, you

16:13

can pass stuff in and it doesn't

16:15

even have to derive from or be

16:17

related to that protocol in a

16:20

base class. Like anything that is passed in there,

16:23

the type system will look at it and verify it

16:25

hasn't explained, even if it's in a third party package

16:27

and you don't control it. So it's

16:29

like a way to project typing structure

16:31

onto a dynamic thing that is not

16:33

necessarily your code. It's wild. Oh,

16:35

cool. I kind of had that a little bit wrong

16:37

then. Awesome. You can

16:40

derive from it. It gives you more information potentially,

16:42

but. It doesn't have to be. You don't even

16:44

have to, which that's the totally wild aspect. That's

16:46

what I think is really different for this. Okay,

16:48

yeah. Oh,

16:51

awesome. That's pretty cool. No,

16:54

yeah, so clearly I haven't

16:56

thoroughly read this article, but I do

16:58

want to get into really getting my

17:00

head around abstract base classes, mix-ins and

17:03

protocols and stuff. And partly. I would say

17:05

that though, because like your experiences in C++, mine

17:08

also is in C++ and C sharp, and

17:10

all of those languages have these interface ideas,

17:13

but they're

17:15

put into the type system through inheritance. And so you can

17:17

inherit from it and it does what you expect and it

17:19

seems the right thing, but what's weird is

17:21

you don't even have to. That's what's weird about it. Okay.

17:24

Cool. Oh, awesome.

17:28

Now I definitely want to play with it more. Yeah,

17:30

because I've kind of missed that aspect of C++

17:32

in Python. Yeah. So

17:36

nice. Anyway, also I'm

17:38

assuming it's a AI

17:40

generated image, but really cool image at the

17:42

top of the article. I

17:45

don't know much about my opinion, but I'll always chat to you

17:47

how I feel about it. It's

17:49

hard to describe how I feel. So I'll, you

17:52

know, yeah. I'm

17:54

actually sort of, I don't know, this is a

17:56

tangent, but I've switched to... I

18:00

was playing with like Bing as my primary

18:03

search engine at work. I just, I don't know,

18:05

a new computer, it just was there and I'm

18:07

just going with it for a while.

18:10

But everything I search is like, gives me an

18:12

AI generated answer first and I'm like, I don't

18:14

know if I like that very much. Yeah,

18:17

I know. I know. Anyway,

18:20

well, that's it for our main stuff.

18:22

Do you have any extras? I

18:24

can have almost made an extra, extra, extra this time. So

18:26

yeah, sure, I do. First

18:29

of all, I've been wanting to say this several times

18:31

and I'm usually like looking at my screen and see

18:33

what I want to share and stuff and I didn't

18:35

have this anywhere. So I just pulled up Mastodon to

18:37

remind me. There are tons of

18:39

people interacting with us over on Mastodon and I've

18:41

had some great conversations and I want to, I'm

18:43

sure you do too, Brian, I want to follow

18:45

people back. But there's, there's

18:48

kind of a, at

18:50

least for, I'll say these are

18:52

Michael's Mastodon's conventions. You

18:55

could take them for what you want. I just made them up. But this

18:57

is how I think about it. So people will follow

18:59

me and I'm like, huh, did that person follow me? Because they

19:01

listened to the show and listened to Brian say, you should come

19:03

join us and have a conversation. Hey, I'd like to follow that

19:05

person. But a lot of times they

19:08

have no picture, no description, no web

19:10

pages, no posts. You're like, uh, yeah,

19:12

maybe not next, you know? And

19:14

so I'm just going to say if you have a picture

19:17

and a description, description seems somewhat relevant.

19:19

I will certainly follow you back. If

19:22

you have posts, that's plus one. If you

19:24

have a verified webpage, which is easy, another plus

19:26

one. A

19:29

lot of people have private accounts who follow me. I'm

19:31

like, why are you in social media if

19:33

you want a private account? I don't understand

19:35

what this is because your profile is public.

19:37

Just your posts are private, but the

19:40

platform has a way to have private posts. I

19:42

don't understand. So anyway, uh, probably not

19:44

going to get a lot of engagement if you have

19:46

a private account, just

19:48

post private messages for things you don't want to

19:50

see. So, and while I'm

19:52

on the topic of Mastodon, I had a

19:54

really nice and productive conversation with the PSF

19:57

around my mask rant on PyCon. So

19:59

that was nice. over there. Some people weren't

20:01

nice as they sent me like not necessarily nice

20:03

responses but the PSF did and that was cool.

20:06

That's nice. Yeah. Alright. Next one.

20:10

Before you move on I just want to add

20:12

my two cents on the picture. I

20:15

also prefer to be able to see who it is

20:18

but also primarily if the picture is something

20:20

that they're using on other stuff. So like

20:22

if a lot of people have their

20:25

profile picture on their like the

20:27

profile picture on their blog and on

20:29

their and they're primarily

20:31

a GitHub user and they have the

20:34

same profile there even if it's like

20:36

a stylized something but if it's the

20:38

if it's distinctive and the same everywhere

20:40

like Cliff for instance has a has

20:43

a different thing

20:45

for them. I'm okay with that but

20:47

most people I think go with their picture I

20:49

think it's the right answer. Yeah

20:51

when I say picture I don't mean necessarily has

20:54

to be your picture just the fact that it's

20:56

not the default icon. You've taken enough effort to

20:58

put in something even if it's just a

21:00

picture of a triangle I don't care you know. Alright

21:04

Paul is asking in the audience

21:06

what is your secret? Okay

21:11

well we'll do this. Earlier

21:14

on we were talking about how Michael's got

21:17

a faster internet now so we should

21:19

make it really fast speed and

21:22

then somebody commented, Wagrant commented, I

21:24

played it at one and a

21:27

half times speed then I got

21:29

up to a live event and

21:31

all of a sudden Brian should sounded

21:33

like he got drunk in one second and

21:37

so I said Brian's

21:39

secret is out. Nice. I

21:41

have another drink in my Irish

21:44

coffee. It's coffee, trust me.

21:47

Alright more extras so

21:50

Dropbox spooks users with turning

21:52

on new AI features that

21:56

can almost automatically send your private documents

21:58

to open a Now you

22:01

have to interact with part of the

22:03

site for it to happen, but it

22:05

doesn't say hey necessarily because you touch

22:07

this. We're now sending your social security

22:09

number away. But

22:11

anyway, that's kind of unnerving.

22:14

Yeah. So you

22:16

can check that out on defaulted

22:18

on if you're not subject to

22:20

the GDPR, but defaulted off if

22:22

you are. So, you know, plus

22:24

one for GDPR there, I suppose.

22:27

So mine was turned on. Okay, so

22:29

you have to go check to make sure that they're not

22:31

sharing all of your. Yes, exactly. And it's

22:34

on by default for you, Brian. So you might want

22:36

to check. The

22:39

whole conversation is on ours. The

22:41

comment section of our second is

22:43

like the top notch place

22:45

for comments, I think. So really good. Okay.

22:49

Yeah, it talks about how to go find it. So

22:51

anyway, this like maybe think, you know what, I should really

22:53

be a little more. I've like

22:56

three terabytes of data and Dropbox. So I'm like, maybe

22:58

I should be a little more specific and

23:00

intentional about where I put my stuff. So I went

23:02

on this this right on Mastodon, by the way, a

23:04

bunch of people sent me all sorts of options. They're

23:06

like, okay, if not Dropbox, then what? And

23:09

I decided whatever I'm doing is probably good

23:11

to have it end

23:13

to end encrypted because then I don't care what they try

23:15

to do with it. Right. Because they can't decrypt it. That

23:18

that solves a whole lot of problems. I don't

23:20

you care about the security, but it doesn't matter

23:23

as much as if you're just exposing files or

23:25

leaking stuff or whatever. Right. So I decided to

23:28

go. I already have

23:30

a paid proton account. So

23:32

all my private stuff, all my private documents, like

23:35

my scans of things I want to save that

23:37

might be sensitive. They're going to

23:39

proton drive where I have

23:41

500 gigs and it's already paid for

23:44

and encrypted. There's a sync thing you can solve. That's

23:46

pretty excellent. I

23:48

looked around and some people suggested next

23:50

cloud, which is really interesting. It's maybe

23:53

more than I want. It's almost like

23:55

a document calendar, everything

23:57

self hosted. Maybe do that.

24:00

Next. Yeah, ownCloud

24:02

got like super owned just

24:05

last week and is a similar self-hosted thing, which

24:07

makes me a little nervous to self-host stuff. I

24:09

know there are people who host it for you,

24:11

but it's not NextCloud, it's a little bit indirect.

24:13

So maybe. Violin,

24:16

I don't know if you've heard of this, but

24:19

they have encrypted cloud storage

24:22

and the end again, pretty

24:24

nice. I think this is,

24:26

is it British? I don't

24:28

remember exactly. UG, not

24:30

sure, but somewhere

24:33

in Europe, this company, it looks

24:35

pretty good. I have not tried it,

24:37

but and encrypted. There's IceDrive, the next

24:39

generation cloud storage. Also, I think this

24:41

might be the British one. Yeah,

24:44

this is in Wales. I mean,

24:46

British, I mean, UK, sorry folks. So

24:48

that's pretty interesting. And I think,

24:51

I think I'm gonna go with sync.com.

24:54

Super simple. All they do is sync and

24:56

then encrypted for six

24:58

terabytes. It's like 140 bucks a year or something

25:00

like that, which is a lot, you

25:03

know, versus 240 for less than that in Dropbox. Anyway,

25:06

if people are in this zone of like, I'm looking

25:08

for all this stuff, oh my gosh, like what am

25:10

I gonna do? Regardless of whether

25:12

you care about the Dropbox fiasco.

25:16

Here's a bunch of options people can pick. There

25:18

was one comment in this whole discussion that was pretty

25:20

interesting. I think it was in the Ars Technica

25:23

thing. And it said, look, if you

25:26

give your data unencrypted to somebody, another

25:29

company, even if you trust them, you don't really

25:31

necessarily control that anymore, especially if they decide

25:33

to pass it along. So

25:37

somebody pointed out CryptoMeter. Have you heard of

25:39

this, Brian? No. CryptoMeter

25:41

is cool. I have used something like

25:44

it, but it's older and no longer supported, which makes

25:46

me sad. So what you do

25:48

is you run this app. It does

25:50

like super strong encryption. You control the key,

25:52

right? It's just like a thing you make

25:54

up and don't give away. And

25:57

then it will create a drive, a mountable drive.

26:00

on your Mac or on Windows like

26:03

a D driver, E driver, whatever, and that thing

26:05

is encrypted. So when you mount it with this

26:07

software, it looks like a drive, but then when

26:09

you unmount it, it becomes just an encrypted pile

26:11

of files. So you put that in

26:13

Dropbox, you put that in sync or whatever, and

26:16

then no matter what happens, they just

26:18

get an encrypted blob of stuff. So things

26:20

I super care about. I have encrypted in

26:23

something, either a cryptomator or something like it, on

26:26

top of all the safety around the cloud drive

26:28

and trust and whatever you might have there, like

26:32

worst case scenario, they get a huge, hard,

26:34

hard to decrypt the blob of stuff that they don't know

26:36

the value of. And

26:39

I don't know if it has Linux. Someone's asking does it have Linux? I

26:43

think it might. Let's

26:45

see, Mac. No,

26:49

let's see if I go to download what it says. Yeah,

26:52

it's worth knowing for people. Download.

26:55

Use your DMG. Yeah, Windows,

26:57

Mac, Linux, Android, and iOS even.

27:01

Yeah, so that's that. I

27:03

think that it's a loss.

27:05

I mean, cool, but cryptomator would have

27:08

been great as a rotten tomatoes sort

27:10

of thing to rate

27:12

different cryptocurrencies. I

27:14

know. The

27:17

word is taken. I'm pretty sure

27:19

this has been around before crypto

27:21

became a thing. I'm

27:24

not sure how old this is, but there's

27:27

17 pages of releases on

27:29

GitHub from 2017. So

27:31

yeah, they were ahead of their time in that, but

27:34

yeah, super cool. Brian, like you can just say, I

27:36

don't really care that much about the security of where

27:38

these files go. So you're not getting

27:40

them. Interesting.

27:44

So I suggest a sweet combination of

27:46

these things. I'm going through

27:48

like a super digital decluttering as part of

27:50

this, and it's glorious. I'm having like

27:52

a tech love up here with notion.

27:54

It's so good. But

27:57

yeah, anyway, I'll leave it

27:59

there. back and tell you more about

28:01

this. Last thing for me, I'm

28:04

doing the keynote at PyCon, yes,

28:06

at PyCon Philippines 2024 in

28:08

February. How awesome is that? I'm slightly

28:11

jealous, man. Some of our eyes scroll

28:13

down and over. Whoo. Yeah.

28:17

Three of us and I get to be one of them. So that'd be

28:19

awesome. Thank you for inviting me. And if you're going to be there, I

28:21

will see you there. Nice. Yeah,

28:23

in February. Cool. Oops. Oops.

28:27

I'll just tell you. For your extras. Well,

28:30

I just lead one. So sorry about

28:32

that. But Shift

28:34

Command T. Shift, whatever. I'll just

28:40

tell you guys about it. So

28:45

this is the time

28:47

of year that some people like to donate some money

28:49

to different people, different groups. I

28:52

had the link up for the

28:54

Python Software Foundation. So Python

28:57

Software Foundation is not hard to find.

28:59

So I would encourage people

29:01

to consider giving some money to the

29:04

PSF. Also, Django Software Foundation is

29:06

doing a drive. So given

29:09

some money. If you use Django, of course. If

29:12

you enjoy Python bytes, of course, you

29:14

can check out Patreon. Patreon,

29:18

we do accept Python

29:21

money for Python bytes to help keep the show going,

29:23

which is great. Also, I wanted

29:26

to highlight as well, just

29:29

the idea to just

29:31

go on GitHub. So the different things

29:33

you use on GitHub, like adders, for

29:35

instance, you can go down and

29:37

you can sponsor this project. You

29:41

can throw some money that

29:43

way. Pytest has a sponsor

29:45

link. Palettes and Flask

29:47

has a way to sponsor either

29:50

all of palettes or particular projects

29:52

within the palettes program. And

29:54

really, a lot of projects

29:56

that you use every day have a... a

30:00

sponsor of this project on GitHub. So I

30:02

think it'd be great for people if you

30:04

have extra and you want to help out,

30:06

I think it's a good idea. Sometimes

30:09

I help out different projects and I kind of

30:11

shift it up every year and

30:14

local things and I think

30:16

the things that I use. Somebody

30:19

asked me once recently about

30:22

some projects don't really need the money. And

30:24

I guess like, for

30:27

instance, I really love having people support

30:29

Python bytes through Patreon. It's fun to

30:31

have our community help support us. If

30:34

you in particular don't donate,

30:37

we're not going to disappear. Michael and I are

30:39

going to keep doing it anyway. It is totally

30:41

up to you and definitely don't do it if

30:43

it's a hardship. But I think it's a

30:46

fun thing to do this time of year is to spread

30:48

the love around. That's all I wanted to say. So

30:54

indeed, I second that as well. That's

30:58

kind of serious, though. Do you have something

31:00

for us? Let's lighten it up. No, this

31:02

is not funny. This is too close to

31:04

home. You tell me how you

31:06

feel about this. So here's the joke. Here's the joke. So

31:08

there's two red buttons, think Ren and Stimpy or

31:11

something like that in a huge scary red button,

31:13

you compress either of them. One

31:15

of them says, pay $12. The

31:18

other one says admit to

31:20

yourself, your dream is dead.

31:23

Somebody's sweating trying to decide which button

31:25

to press. And it's the domain renewal. Oh,

31:28

yeah, totally. This

31:31

is always too close for home to home for

31:34

me because I just transferred 25 domains

31:36

from all the different places in the hovers I

31:38

talked about like a while ago. And I talked

31:40

about all the name servers and all that. And

31:43

there was a few are like, God, is

31:46

the dream dead? Or do I just move

31:48

this? So how many are you using still

31:50

out of this? Well, lots of them are

31:52

to like, protect people from doing crappy

31:55

stuff. For example, I've talked by thon.com.

31:58

I don't technically use it. It

32:00

redirects to talkbython.fm. But

32:03

if I don't have it, someone will get

32:05

it. And then all sorts of badness. Like

32:07

there's a bunch of these guard. I would

32:09

say half of them fall into that realm.

32:12

Okay. And then maybe another third I'm directly

32:14

using and then there's the, whatever the balance,

32:16

the one sixth that's left is the dream

32:18

could be dead, but it could

32:20

be not there yet, not realized yet.

32:22

We'll see. I had about eight that

32:24

I was not really using last year.

32:27

And I let, I,

32:29

I, I admitted that about

32:31

half of those are not going to go anywhere and

32:34

let them expire. I don't go. Although I'm

32:36

not if you go to domain companies, don't

32:38

make it easy. You're like, okay,

32:40

I'm just going to let it expire. But you get

32:42

like emails. No, it's going to go.

32:44

Oh, it's gone, but we've just, we're going to save

32:46

it for you for a couple more months and

32:49

you get a whole bunch of guilty emails, but

32:52

yeah. Anyway. Yeah. Yeah,

32:54

exactly. I have one real quick

32:56

sad story to round this out. Brian, a friend of

32:58

mine and I decided we're going to write some iPhone

33:00

apps right when the iPhone came out like 2007 or

33:03

whatever it was. And

33:06

he had the clever idea of like, let's get a

33:09

domain. I would probably do it together. I don't know.

33:11

Got the domain iPhone.ly iPhonely.

33:16

And we worked on stuff for like a year.

33:20

Cause we didn't know we're going to build. We'll just like come up with this.

33:22

We'll put stuff there. Never really came up with

33:24

stuff. It looked like there was nothing on the horizon. Like, you know, after

33:26

three years, the L Y it was like the FM. I

33:28

was like kind of expensive. Like, ah, just let it go. A

33:32

week later, somebody says, Hey, I'll give you $5,000 for that domain. So

33:36

I shoot my friend like, Hey, don't let it expire yet. Let's

33:39

do this instead. He's like, it expired last

33:41

week. No. Oh no.

33:44

Oh well. So it goes. So somebody could

33:47

have paid you $5,000, but they instead got it for like 20.

33:50

We got it. Yeah. For like 20 bucks or something. I'm

33:54

sorry to laugh at your pain. No,

33:56

it's just like I'm telling you. This

34:00

is not a joke. Adventure yourself your dream is

34:02

dead or pay $12 for the rest of your

34:04

life every year. Yeah. For your. So

34:08

it's good. It's a good joke and people

34:10

can hopefully laugh at it. Yeah. Everybody, most

34:13

people that listen to this podcast probably are feeling

34:15

this. So. Yeah.

34:17

All right. All right. Well, I'm feeling good about our

34:19

year's worth of show every day. Yeah.

34:22

365. Pretty cool. Yeah.

34:24

I know. All right. Talk

34:26

to you later. Yeah. See you. Thanks,

34:28

everyone.

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features