Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to
your earbuds. This is episode 314, recorded December 13th, 2022. I'm Michael Kennedy.
And I'm Brian Okken.
And it's just us this time. Very nice to be together to share some fun Python news.
Yeah, we got some good stuff.
I think we do. Why don't you kick it off? Before you do, actually, real quick,
I just want to say thank you to Microsoft for startups for sponsoring this show.
Tell you more about them later. Go.
Well, first up, we've got something from Will McCoogan. Surprise, surprise.
But he's got this cool project called Factory. F-A-Q-T-O-R-Y. Factory. Cute joke.
But it's a tool to generate an FAQ page, a markdown page specifically for a GitHub project or something.
I mean, you could use it for anything, really.
But one of the fun things about it is it uses it itself.
So you can, I mean, not. There's an example there, but the questions are fun.
So the idea is you've got a lot of questions maybe that come in about your project and you want to keep track of them.
So what you do is you stick your questions in a question directory.
And then they're like just these little markdown snippets.
And let's look at the raw format.
It's just like this title. There's a title block and that's the question.
And then maybe some information. You can cite things maybe.
It's really pretty easy. I'm going to go actually to the read me again to talk about that.
You're not going to go to the FAQ?
Oh, yeah, we could.
I'm just kidding.
Just the, I wanted to make sure that we talked about alt titles.
So you had, you have a title for a question and then an alt title maybe for different kinds of questions that are really the same question.
And then an answer. That's the simple form of what to do in these little markdown files, these little question files.
And then you just use do factory build.
And what it does is takes all those and creates a markdown page.
And then you can see what it looks like on there, the FAQ.md in this project.
But it's nice. It's got frequently asked questions at the top.
It's got links to all the questions.
And then, and then you, you know, you, you go down and you can see what the answer is.
Yeah. Even like a table of contents with the hash, you know, the hash inner page navigation within GitHub, which is interesting, right?
Yeah, it is interesting. And links to each question.
So if you want to like email somebody a link to it, you can link to the question, which is nice.
There's some funny ones in there as examples.
Just correct me up. I got to bring them up.
Like, in fact, most frequently asked questions have never and perhaps will never be asked.
And then a quote, 89% of statistics are made up on the spot.
These are, these are pretty funny, but it's kind of cool.
And that's not all it.
So you generate it.
This would be enough, actually, if it just generated this FAQ page, it might be worthwhile taking a look at.
But it also has templates.
So it builds like a template so that you can have like a dot FAQ.
In the dot FAQ, there's templates and you can tweak these to have a different, you know, it's a different look to them if you want.
You can add some more code.
Oh, nice.
And then there's this suggestion, which we got to talk about these suggestions because it has a template for what to do and a suggestion.
And why this is important is it comes with this hook that you can put into GitHub Actions.
So there's a built-in thing with actions.
You can suggest something.
So if you suggest a question, it tries to figure out what the question might be using some like fuzzy, what does it say, fuzzy matching or something, which is kind of a neat idea.
And then there's an example right in there.
Let's see.
GitHub workflows.
You can look at the new issues.
And it's calling this factory.
So if somebody files an issue that's really just a question and it figures out that there's something it can answer with, it'll answer for you.
So if you get, if you have, you know, I don't have any projects that have that many issues, but I'm sure Will does.
And some people do have like these huge projects.
And having a little thing that goes, hey, this question's already in the FAQ or something similar.
Just go look there.
Or here's the answer.
Maybe.
That's pretty cool.
I haven't tried this, but it looks like fun.
I think that's really excellent.
Even for my limited small number of small projects, I still get things like, have you considered this or why is it different than that?
It seems like it's the same.
It's not the same.
It's similar.
It's not the same.
Here's the huge long discussion on the issue that somebody filed that's closed because we're not resolving it and we don't leave it as an open issue.
But you go look in the closed issues and you'll see the discussion and you can participate there.
Right.
That kind of just point them in the right direction.
Yeah.
That's really cool.
I think there's a lot of stuff like this.
I actually talked with Ned Batchelder last week, seven days ago, it says, on an episode that's coming out on Talk Python called Tools for Readme Creation and Maintenance.
Oh, yeah.
As well as FAQs and changelogs and those sorts of things.
Remember, I did a shout out for, give me all the tools for Readmes on here.
And so this is the episode we ended up doing because like three of the tools out of the eight or nine we covered were written by Ned.
We're like, we should just, I should just have Ned on the show because it seems like he's a major topic here.
Nice.
Anyway, there's a lot of other tools that do that.
But what I think is relevant here is this automation and this suggest feature.
This is what makes it really stand out as being different.
Yeah.
So even on some of my small projects, I'm going to go ahead and turn it on and then probably issue questions myself and play with it and see how it works.
Yeah.
That'd be awesome.
Yeah.
Cool.
Yeah.
Steve in the audience, what's the answer to what's the difference between a duck?
I must know.
What's the difference?
Oh.
It's an FAQ, yeah.
We'll put it on the FAQ, Steve.
We'll help you out there.
Yeah.
All right.
Should we go off to the next one?
Yes.
All right.
So way back in, let's see.
We have a pretty cool search engine here.
Search for Kagi, live with it.
Way back here, when we had Gina Huska on the show, I talked about this Kagi thing.
Yeah.
Or was it, right?
Like a paid search thing?
Yeah.
There it is.
That was suggested by Daniel.
I said, you know, look, I'll give this a try and I'll give you all a report.
That was in June.
Well, it's December now.
So maybe not just one month, which was my idea.
But I finally got around to writing up a report on Kagi and, you know, TLDR.
I'm still using it.
I still really like it.
So for those of you who don't have a six month perfect memory of the extras, I don't doubt that it's, you know, faded.
Kagi is a paid search engine that is super privacy respecting and very customizable.
So instead of being the product, you can pay for a product, which is search, which is pretty rare, actually.
Right.
There's not many others that do that.
So what I did is I went through and did a little write up here.
And it's really kind of the what are my thoughts on this?
Why did I go through this whole process?
But I entitled it paying for search in 2022.
Am I crazy?
Which we'll see.
So some of the highlights of the things I'm really enjoying it.
I laid out some of the reasons I think it matters, like surveillance capitalism is net, net bad for society.
That is you being the product by being tracked and having all of that information tracked across different sources, grouped together and resold through data brokers.
Not good.
Most search engines, that's their business.
Right.
Which is not great.
Right.
And also, if you support small companies, we all win.
Right.
Even if you don't use it, people are supporting small companies.
We have many choices.
There's just there's just more choice.
Right.
We don't nobody wants a world where there's like one giant or two giant tech companies that make all the decisions.
And search happens to kind of live in that intersection of all of these things.
Right.
So when you go to do search, you know, you're kind of supporting some giant tech company.
But at the same time, you're also being tracked and resold.
I classified it as like some things are on the neutral good side, like DuckDuckGo.
Like they're mostly good.
But there's also that sneaky behind the scenes thing with like only Microsoft can track our users.
No one else can.
We won't talk about it.
A link to that.
Others, fully on the dark side.
Right.
So a link to an article about how to retarget your customers.
So just some of the highlights here for Kaggy is it's totally privacy perspective, respecting because you pay for it.
Right.
There's no ads which don't lead to these in perverse incentives, these counter incentives.
One of the things I really like is you can block websites.
Like I just unblocked all the things that I had previously blocked and I did a search for HTML for div tag event.
What was the first result?
W3 schools.
I don't know.
Do you ever run across W3 schools?
Do you like this?
Yes.
No.
And there's a few.
There's a few of these that are just they just turn out questions and answers.
You're just like, could this just stop?
Could I just never?
Like, how are they so good at SEO and so bad at answers?
Right.
And so for those things, there's like a little Globy looking icon looking thing next to this.
And you can press it and just say block.
I will never, ever see W3 schools.
Now, some people may have extensions.
There's like a W3 school blocker extension you can get for Chrome and other browsers.
But I also really don't want to install like any more extensions in my browser than necessary.
There's plenty of examples of like, oh, this extension became unmaintained.
And so some company bought it and put some tracking into it.
So not only your search is tracked, everything you do ever is like now, right?
Like, I just don't want to install those things.
It's just not worth it.
But here you can just say block these four or five domains or just lower them if you kind
of want them to sort.
Yeah.
Oh, you muted.
How did I mute?
Sorry.
Check this out, Brian.
If you do a search for CNN, see how this globe turns reddish orange?
Yeah.
Just in the search results.
This is on Kaggy, right?
On the right next to it.
And you're like, wait a minute.
Why is it red?
If you go over to it, it has a big red warning.
There you can click it.
It'll give you more information.
It has a big red warning.
There's 43 trackers detected on this page.
So if you click on it, you're getting 43 trackers put on you.
It's like jump.
It's like that pool is full of leeches.
Don't go in it.
You're going to go in it.
Warning.
And it even gives you the categorization of it has fingerprinting, advertising, has Google
as a tracking category and email.
Isn't that nuts?
And cool.
Yeah.
I mean, cool.
It tells you not cool that it is.
Yeah.
But then just to be fair, things like Vivaldi and stuff can block most of that stuff.
Yes, exactly.
And so if you want to block it, you can.
Right.
Certainly you should be blocking it, I think.
But anyway, it's also nice that the search engine has kind of like got your back in that
regard.
Like, you know, here's.
Yeah.
This is the category of the site.
Yeah.
So are the results good, though?
That is a super important question because if they're not, then all this doesn't matter.
Right.
I would say they're pretty close to Google.
I'm pretty sure that the cost, which is $10 a month.
I think the cost mostly because that's that can't be compute.
There's just no way that costs that much.
I think the results are there.
I'm pretty sure they're buying search as a service from Google and Bing.
OK.
I haven't been able to verify it, but there's they talk about enhancing their search results
with open source and other results.
So it's like we've got those results plus, you know what I mean?
Yeah.
And so as far as I can tell, they're pretty.
It's quite similar to Google, actually.
I think with the extra features that be able to block sites you don't ever want to see.
So that's cool.
Exactly.
Yeah.
So here's the follow up to live with it, Kagi.
I give it a solid thumbs up.
The only really the only downside is that it costs money.
Are you interested in paying another subscription, another $10 a month for something?
For me, it makes me happy.
I search for stuff just constantly all day.
And every time I'm like, yep, still not being tracked.
Feels pretty good.
And so for me, it's worth it.
People can can decide.
All right.
Well, I have to say this is a random comment from Vincent is I don't know how I I don't
know how to read this.
Once again, I'm rocking my baby to sleep.
And once again, y'all voices aid me in doing so.
So we're so boring.
You're putting your kid to sleep.
I'm not sure what.
No.
Yeah, I'm not sure.
No, that's awesome.
Hey, Vincent, great to have you here.
As somebody who had one of those baby carriers when I had twins, I
would hook them both on me and I would sit there and like work on my keyboard because
like in the middle of the night because they would sleep if they were stuck to me, but not
if I was like trying to lay them down.
Oh, God, no.
So hopefully we're just.
I feel you.
Yeah.
Oh, a newborn.
He has a newborn.
So they're not listening anyway.
They're just our voices.
So cool.
Or are they?
And are they going to grow up to know Python by the time they're five?
Yeah.
And know how to properly protect themselves against search engines.
That's right.
All right, Brian.
Before we move on, let me tell folks about our sponsor, Microsoft for Startups.
You know, Microsoft for Startups has been a great support of the show and it's really good
to have them on board.
Make sure that we can keep this going strong.
You know what they don't have in this ad, by the way, Brian?
Retargeting.
We don't have any retargeting for you.
So I'm sorry about that, but you do have some really great offers if you go visit it.
If you start a business, obviously it's hard to get started.
A lot, 90% or more businesses go out of business within the first year.
And so Microsoft for Startups set out to understand what are some of the challenges and what are
some of the assets that they can bring to bear to help that.
So Microsoft for Startups Founders Hub was created and it has a bunch of free resources
or once you're accepted into the program, a lot of included resources that are just
given to you.
And they come in two categories.
They come in a bunch of cloud credits so you can run your infrastructure and code for no
money out of it, you know, probably for free for a couple of years.
And they also come in the form of mentorship and connections and information.
So you get a bunch of free GitHub credits.
You get a bunch of Microsoft cloud credits.
You get many from OpenAI, a global leader in AI research and development as well.
And it's also not just about who you know.
Like it is so often for companies out there on their own.
You get access to their mentorship network and giving you access to a pool of hundreds
of mentors across a range of disciplines like idea validation, fundraising, management, coaching,
sales and marketing.
That's definitely an important one as well as a bunch of specific technical aspects.
So you can even book a one-on-one meeting with these mentors, many of whom are founders
themselves.
So make your idea a reality today with a critical support you'll get from Microsoft for Startups
Founders Hub.
Visit pythonbytes.fm/founders hub 2022.
The link is in your show notes.
Thank you, Microsoft, for supporting the show.
Yeah.
Thanks a lot.
Mm hmm.
Well, is it time to rewrite some code, Brian?
Yeah, we, this was fun.
So I ran across an article called Tools for Rewriting Python Code by Luke Plant.
And it's also like, by the way, it's kind of a gorgeous blog formatting.
It looks like a book almost.
But anyway, beside the point, we've covered a lot of these things, these tools on the podcast,
things like black and eyesort and linters and things like that.
But it's kind of fun to see them a whole bunch of things listed together.
So what by rewriting, we mean like hopefully tools that change your code, but hopefully
for the better.
So we've got things like formatting, formatting and style guides like black.
And another popular one is that I don't know if we've covered is YAPF or yet another Python
formatter, I think.
And it's, it's similar ethos to black, but it's more customizable.
So black, you can't, there's only a few options.
But YAPF is often used by companies that have their own style guide to be able to customize
it.
So it, but it's a little more tweaky.
So you have to kind of get in there and set it up so that it follows your style guide.
So there's that.
There's auto pepate.
I sort, which I really like, which reorders Python imports.
And so there's things like this table format.
I have to play with this.
Makes it easy to align columns in your Python source code.
I kind of want to try this out because it's, that's something I don't like about black and
other formatters sometimes is they muck up my tables.
But anyway, there's upgrade things like by upgrade and Flint.
You've mentioned Flint a couple of times.
I'm a big fan of Flint.
I run it on Python Bytes website code on talk Python on the train site.
And it's, it's great.
Yeah.
And actually, I just got a pull request on one of my projects.
And I'm pretty sure they just ran Flint over.
They're just going through and finding some projects and doing running Flint and then doing
PRs against them.
And I was slightly kind of annoyed by that, but also like, I didn't have to do it.
So yeah, thanks.
I grabbed it.
Type hints, which I'm, I didn't know about this stuff.
So I'm, I'm kind of have to look at this.
So things like pyannotate and monkey type to add, and there's a few others to add type
hints to your.
This is super interesting.
Adding type hints based on instrumented test suite runs.
So instrumented, I mean, it watches what functions get called and it says, Hey, this parameter
was always a string.
This one was always a user object.
So here's your type parameter, colon string, colon user.
That's awesome.
Yeah.
If you ever, and then I guess you know, I need to do this.
Try it.
Yeah.
So I'm going to try these.
There's a few of them.
So anyway, interesting.
Some refactoring stuff is a, that I, it mostly talks about how a lot of these refactoring
tools are built into IDEs.
And I'll have to say when I'm, I usually use an IDE assisted thing like pylance or pyrate
to, to, to do some refactoring, but, and I actually don't use them as much as I probably
should.
I usually do manual refactorings, but anyway.
And then some standalone ones like rope and Jedi.
And then, and then the other category includes things like shed, which, which I still have
yet to try.
I need to try that.
That combines a whole bunch of the tools.
But the, the part that one of the parts that I was really excited about is I didn't know
about lib CST.
So it talks about, this article talks about writing your own.
There's a project called lib CST that apparently you can use to, to write your own.
It does a syntax tree thing and, and you can hopefully write your own reformatter.
So that might be fun.
Okay.
Nice.
And one of the recommendations is the, the documentation is a little overwhelming for
lib CST.
So maybe use GitHub or libraries.io to find other projects that are using it and then see how
they're using it.
And I love that way to understand how to use something.
Yeah.
I, I need pretty much what this does, but I want to change these two things.
Let me copy that and go.
Yeah.
I guess that'd be another way to do it.
It's like fork black, like the, the people that forked black and made blue, which gotta love
blue.
Uh, it wasn't listed here, but, Oh, one of the things I wanted to, to bring up while
we're right here is, there's, what there's, upgrades like PI upgrade and Flint.
Um, there was one of them that does, set up PI upgrade, which upgrades set up.py to set up.cfg.
I'd really like someone to figure out how to take all of your setup stuff and create a PI project.tomo
file.
Yes.
Um, that'd be nice.
That would be excellent.
Anyway, cool stuff.
Set up, set up PI tom alert something.
Yeah.
Set up.tomo.py.
Okay, cool.
Yeah.
This looks really, it's a really nice taxonomy of ways to clean up your code and improve your
code, modernize your code.
Yeah.
Very cool.
All right.
Let's go talk some web for a minute.
Uh, zero who I know listen to the show because sometimes drops into the live chat and gives
some, advice or, or feedback created this thing called socketify.py.
So socketify, I suppose the name is inspired by trying to do web sockets really well, but it's
a little more general web framework and server as far as I can tell.
So the tagline or whatever is bringing web sockets, HTTPS high performance servers for
PI PI three.
That's the JIT version of Python, Python three, as well as CPython.
So what's the website say for us?
So it's, it's pretty interesting.
Um, it's, if you look through here, you'll see, I guess we see some of the features
that has, web socket support with pub sub fast HTTPS.
I think that's probably the biggest thing that people care about.
It runs on all the versions.
So, you know, think kind of micro whiskey or UV a corn or something like that with a little
bit of flask type of stuff on top of it.
Okay.
Um, it has URL routing sync and async function.
So it's, it's kind of a mix of like a web server that is also a web framework, fast TLS.
Uh, what else we got here?
This one's interesting for the async story is max back pressure, max payload and timeouts.
One of the problems that can happen if you have async code is your async code will just accept
the request and it'll forward it on through an, an await some database call or wait some
microservice other API call.
And it can just way pile up on your server and then like slam the database.
And you might say, look, we only want to have, you know, 20 database queries in flight at a
time.
Right.
So you can limit how much pressure the web server is putting onto the database and it'll
kind of slow it down.
And say, instead of accepting more requests or doing more of this work, just queue up the
response.
Like a, a non async web server would do.
Okay.
It has async support, ASGI web server support, with extensions for Falcon, which is a, one
of the web frameworks as well as a WSGI WSGI one and some new features coming.
But the real selling point, the reason people might care to check this out is the performance.
So Falcon is pretty fast.
UV corn is pretty fast.
But if you look at socket, if I, I talked to zero in, they're using the tech and power
benchmarks.
I'll pull those up in a second.
I'll actually pull them up now.
So over here on mass announces, follow up.
We break a new record for Python.
No other web frameworks able to reach 6.2 million requests per second in the tech and power benchmarks.
As puts Python in the same ballpark is going rust and C++.
So we pull this up.
What do we get?
We get waiting.
Ironic.
Isn't it waiting on that?
But look at this.
You've got socketify at a 6.2 million requests per second on the tech and power benchmark.
And then vibora and gibranto.
And what's really interesting is like down here at 10, we have 360,000 for UV corn.
But follow me down here.
There's a couple of interesting ones.
Pyramid.
Go pyramid.
I love pyramid.
Python bites.
Talk Python or pyramid at the moment.
At a quarter million.
Uh, we make our way down, down, down, down, down, down, down, down, down.
Async flask is at 57,000.
Um, straight flask is at 8,000.
And let's see.
We've got tornado at 40,000.
Here's another one at 50,000 for tornado.
Turbo gears at 70.
Another one at 90.
And there's some variations on like some of the internal, like is it PyPy versus CPython versus whatever.
There's a bunch of variations in here.
But there's, some surprises there, huh?
Yeah.
Huh.
So here's the trade-off you got to make.
You got to decide, right?
Like this, this framework is cool.
It's quite new with 230,000 stars, but it looks also quite promising.
So for most people, you might not need something like this.
Uh, it's kind of a low level, lower level programming, than say, your standard flask, right?
And it doesn't have as many extensions, but it also, it has some, I mean, if, if you get that kind of performance and you need it, right?
Here's a pretty cool option you could try out.
So anyway, I, I encourage people to have a look at it.
It looks pretty interesting.
It's also quite new, you know, last, commit six, six days ago.
So that's, that's encouraging, right?
Yeah.
And also one of the things I like about projects like this, that, that, you know, are, assuming they're doing something different to make things faster than, you know, let's think outside the box to do something a little bit different than everybody else is doing.
Um, other people pay attention.
So the people that are there, you know, these other frameworks are paying attention to what's going on here and, and everybody learns from each other.
So, having a speed up in one area, maybe, maybe we can have somebody that take this and, and make the interface as easy to work with as like FastAPI or last or something.
And absolutely.
And, or, get some of the learnings from here and build those into the other frameworks as well.
So, yeah, maybe not, for everything you're doing, but if, if you have like some project, that's, that's some part or some part of your project that needs to be super high speed.
Um, this is a good thing to take a look at.
Yeah, absolutely.
I agree.
So put it in the interesting category and, congrats zero on some pretty high end performance there.
Yeah.
Nice.
Well, I think that's it for all of our items.
Isn't it our main ones.
Yeah.
I got a couple extras.
Yeah.
Throw them in.
Um, yeah.
So let's, I w I was, I was actually going to cover this, but I think it's a little early.
So it's a project called mouse bender, from Brett Cannon.
And, the ideas I think, is around producing and consuming.
It says producing, consume dependency lock files for Python.
And there's some, goals for the project, about, this project hopes to eventually
provide a way to create reproducible installations for virtual and a virtual environment from a
lock file.
And so there's a lot of stuff going on here, but it's a little early in the project.
So, I'm, I just want to point this out and I, if people really care about packaging,
uh, maybe watch this, I'm going to be, I care about it.
So I'm going to be watching this project and see if there's anywhere where I can contribute
possibly.
Um, anyway, mouse bender, looks interesting.
Uh, I don't think it's ready to use for anything yet, but, but yeah, it sounds, it looks a
little interesting.
Yeah, it does.
Yeah.
Nice work, right?
Um, and I think I got this from Brett too, but I can't remember.
Um, there's a, there's, there's a page called, at dev guide.python.org versions.
We've got, status of Python versions and a graphic for all the release cycles.
That's so cool.
And we'll need to see this graphic.
This is cool.
Yeah.
And, it's neat because it shows you all the old end of life ones, and how long
they've been, you know, end of life for 2.6 was back.
In 2013.
So what are you guys doing?
If you're still using that?
They should put like a skull and crossbones on the 2.7 and 2.6 or something.
Um, but so you've got a whole bunch in end of life.
You got some in the security zone, which means if there's security fixes, they'll add those.
Um, and then, but then they get like it, you only got like six months left of, 3.7.
So if you're still using 3.7, it might be a good time to upgrade, but shows all the, you
know, the only one that with feature is a 3.12 right now.
Cause that's the one that's being worked on.
Um, and, it's kind of a neat visual.
Uh, this page is pretty simple too.
And, and at the bottom you've got more specifics of when things are end of life, but, at
the bottom, the description of what all these mean.
So what does feature versus, end of life mean things?
Good thing.
Neat.
Yeah, that's cool.
I switched our website to run 3.11 by the way.
Nice.
Yeah.
Like a week ago and it's still running.
So that's good.
Yeah.
I switched some of our test code at work to, to flip to 3.11 and, and, one of my
team members says, Oh, I wonder if we're ready.
And I'm like, Oh yeah, we've already switched.
So, yeah, we better be.
It's been doing it for a while.
So, do you have any extras?
Uh, of course.
So I thought this would be the only thing that I would refer back to my website for, but then
that writeup I did on Kagi, I'm going to try to do a video.
version of that Kagi live with it thing.
Um, but I ended up realizing that that was going to take way more time than I have this
week.
So I just wrote it up.
But another one I wrote up, people can just check this out as, sometimes you should
build it yourself.
Um, and embracing your not, you're not built here.
Maybe we should just build it.
I know we could buy it, but let's build it.
Uh, sort of talking about some of the things, I did at talk Python as well as Python bytes
and like how, sometimes you sort of get into this cascade of things where
new possibilities arise, right?
So for example, one of the parts that says integrations abound.
So for our live stream, right?
We have our live stream here on YouTube at the moment.
And then it becomes the podcast says, because the way we put all this stuff together is not
only do we do our live stream, but I push a button on the stream deck that announces this
on Twitter and also that on Mastodon, Mastodon puts the website into live stream mode.
But then that platform will, you know, Python bytes will take the, the YouTube live stream,
grab its carefully crafted thumbnail, pull that down to actually become the social share
image.
So if somebody shares the episode on Mastodon or Twitter, all the way back to the thing we
did with the live stream is actually already producing the, the image.
And so it just talks about like, you know, sometimes, because I always have had this
tendency, like, well, don't build it yourself.
Find something that works, find something that's out there.
And you have to break down and build it yourself.
And like, you know what?
There's actually some really cool stuff that we've been able to accomplish because we built
it ourselves.
So here's a kind of a, an essay on that.
I would say.
Nice.
Yeah.
So people can check that out.
Also back to the live with it side of things.
I'm, I'm trying to support smaller companies and be less just integrated into like one big
tech giant.
So for my personal email, I've got a domain, mkennedy.tech.
It's what I went with, which redirects to my other one for my blog.
But, then that was hosted on Gmail on like a paid $6 a month, email docs, whatever.
And I just got really tired of trying to juggle two Gmail accounts, two Google drive accounts,
two Google calendars, you know, all these things.
I'm like, why am I doing this?
Why don't I get a dedicated cool place that is like even a little more on the privacy side
as well.
So I'm trying to try and go all in on, Proton.
Do you have a Proton account?
Use this.
I don't.
Well, for a long time, it was just email.
And like, you can have like a Proton.me or a Proton.com or whatever.
But I realized recently that they have other, features where, if you pay $7 a month,
you get access to all of their things like their calendar and drive and VPN, but that doesn't
matter to me.
But you get three custom domains and 15 email addresses plus catch all email addresses and,
uh, hide my email aliases.
So I can have all of my different domains all have email addresses and that all basically
resolve back to my personal email.
Ooh, cool.
Isn't that cool?
And so I was at Google and I just changed the MX records and now I'm at Proton.
And if I like it, I'll stay here.
If not, I'll change my MX records again and I'll be somewhere else.
But, you know, kind of try to take control of the email.
So it's my thing, not something at gmail.com, no matter what you think about it.
Right.
Yeah.
So anyway, people can check that out.
I just want to mostly point out Proton looks like it has more to offer than it used to.
And how about like support?
Can you just use your, I mean, to the, like, use your normal email client to, to access
all this stuff or?
Uh, so Proton is like end to end encryption, which is a little tricky, but they have, what
is it?
It's called, Proton Bridge.
So, let's go to the mail thing.
So this is it.
So what you can do is you can run this thing on Mac or Windows or Linux.
And it's like a little, you connect to basically local host for your email client, for your
email server.
And it talks to Proton with the end to end encryption.
And then it just does IMAP the last few, I don't know.
It's not even the, not even the last step of the network, right?
It's just, it's a loop back.
And so, yes, you can connect your, your usual things to with that.
Okay.
Cool.
Yeah.
All right.
Uh, another quick one.
There was a court in Germany that, stand kind of the same theme that decided that,
Google fonts usage of Google fonts.
Like if you look at a lot of web pages, they'll internally have slash slash fonts.google.com.
Some like open, whatever, right?
Some, some font name and like the, the weights of it that exchanges a bunch of cookies and tells
Google about the visitors.
Yay.
And so, of course it does.
Cause even the YouTube thumbnail picture does, why wouldn't it?
So, bunny, bunny.net, which is the awesome CD.
And that we were, I talked about a couple of times ago, a couple episodes ago, they released
this thing called bunny fonts.
And so bunny fonts is epic.
They even talk about like this, this court ruling and a GDPR and stuff, but the idea is
it's a, the bunny fonts is a drop-in placement for Google, Google fonts for
Google fonts.
Yeah.
So whatever URL you would put into your website to get the fonts from Google, you just change
the word Google to bunny.
Wow.
That's really a drop in.
Yeah.
And it's the same API as just, you change the word and you get like super fast CDN backed
zero privacy leaking fonts.
So you can just, it's super easy to adopt.
Right.
It's pretty cool.
So, not zero privacy, hyper.
Yeah.
Hyper zero privacy leaking.
Yeah.
Zero privacy trade offs or whatever.
Where's there?
Uh, here we go.
Here's their fonts.
But anyway, that's cool.
Isn't that cool?
Yeah.
So, super easy.
Bunny.
I mean, you don't even have to have an account and it's a cute bunny.
I mean, they're bunny.
They're, they're, iconography is really, really good.
So there's a place where you go pick the font.
So you come over here and say, I'm interested in a Homa or I don't know, whatever.
I don't even know a font.
Let's say you're interested in this one.
Or you could just like say, I want to add it.
And it gives you like the little, the little URL, which is just font.bunny instead of,
uh, instead of the Google one.
So yeah, it's pretty cool.
Anyway, that's all I got for my extras.
Well, that's a great, yeah, good stuff.
All right.
I have a joke for you.
Oh, let's do a joke.
Yeah.
Are you ready?
Yeah.
You've heard of ChatGPT.
I'm sure.
I'm trying to not hear about it.
I know I've, I logged out so I could, specifically, show the homepage.
So I got to get back.
Anyway, ChatGPT.
I'm trying to not hear about it as well.
My brother actually shared this with me.
Him and his son, my nephew were playing with it, doing some coding stuff.
So how they ran across this example.
So this is a tweet from someone else that he shared with me.
Riley, the tweet is not my brother.
Um, it says open AI is new ChatGPT explains the worst case timing complexity of the bubble
sort algorithm.
Okay.
So what you can do is you can say, give me a step-by-step analysis of the worst case time
complexity of the bubble sort algorithm with Python code examples.
Right?
So that, that's, that's not a joke, right?
That's helpful.
It could tell you here's the situation and it could like show you with Python code examples,
but the next part makes it awesome.
Give me the explanation with Python code examples, but write every sentence in the speaking style
of a fast talking wise guy from a 1940s gangster movie.
This is good.
Are you ready?
Yeah.
Okay.
All right, pal.
Listen up.
The bubble sort algorithm.
She's a real simple one, but the worst case time complexity, that's a whole different
story.
You see, in the worst case, every element in the list got to be swapped.
So the time complexity is going to be proportional to the square, the length of the list.
Get it?
Here's the Python code to help you out.
See if you follow along.
There's some Python code with comments, by the way.
See, in the worst case, the while loop is going to keep looping until there ain't no more
swaps to be made.
The inner loop, it's going to go through every element in the list.
So the time complexity is going to be proportional to the square of the list.
Get it?
What do you think?
This is good.
It's pretty fun, right?
Yeah.
So.
All right.
Anyway, well, I don't know.
The chat GP stuff is interesting.
It's kind of scary, but it's also funny.
But does the algorithm work?
I haven't read it, but I think so.
It looks like the right kind of, at least first glance, it looks right.
I don't know.
I could always go and copy the code and try to run it.
What do you think?
It's like too much work.
No.
Oh, the indent.
The indent is off.
That's.
Yeah.
You know what?
I'll run it and report for next time.
See if the wise guy's code is actually any good.
Yeah.
I'm always up for volunteering you for work.
Nice.
Anyway.
Thanks.
Yeah.
That was funny.
Yeah, it was.
All right.
See you later.