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.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More