Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to
your earbuds. This is episode 402, recorded September 23rd, 2024. I'm Michael Kennedy.
And I'm Brian Okken.
This episode is brought to you by Scout APM. We'll tell you more about them later. If you
want to keep up with us or the show, follow us on Mastodon. Links are in the show notes
or over on X if you really, really want to. You can find the links there in the footer
of the website. We typically live stream on Mondays now. We used to do Tuesdays. Remember,
we moved to Mondays. So Mondays, 10 a.m. Pacific time on YouTube. If you want to check that out,
we'd love to have you. Always great to have people in the audience, but certainly not environment.
And finally, if you want to get artisanal and crafted summary put together by your very own
Brian Okken about the show right after it ships, sign up for the newsletter. Just go to pythonbytes.fm
slash right there and just click newsletter right at the front. It's probably the easiest way,
actually, put in your email. We won't do bad things with it. We'll just send you updates.
And things about like horses and other stuff.
Horses.
Courses. Okay.
Horses. Courses for horses. No, this is a totally different kind of show. We can go down that path.
What path do you want to take?
Actually, let's make some decisions. How about that?
Yes. Okay.
I actually, this was suggested to me actually at a work setting. A friend of mine, Christian
Gazelle said, Hey, architectural decision records are pretty cool. Do you use them? And I had not
heard of these things. So I was excited to explore the rabbit hole. So this was a, there's an article
that we're going to link to. This is the original from 2011 called documenting architecture decisions
from Michael Nygaard. And, and it's, it, it's kind of this idea that you just have this lightweight
document to, to discuss things like what you're deciding about, what the context is, what, you know,
what the current situation is. And then the decision, what you're going to do. And so the context is why,
why you're doing it. The decision is what you're going to do. And then, you know, status, like if
you're, whether you're proposing it or whatever, I'm playing with status right now. So,
and then the consequences, what you hope to will be the benefits of this decision.
This seems like, like, like so silly and simple that it can't be helpful, but it is, it is awesome.
And I've started using it just for a few days. So we're, we'll see. But so there's another article
I'd like to link to, and it's from, from Red Hat called why you should be using ADRs or
architectural decision records to document your project. And it's a, that's, that's a really nice,
introduction. And it shows you basically, you just have a handful of things and there's a bunch of
templates people are using. I'm using Markdown. And I'm going to show you the, essentially the
template I'm using. It's just a Markdown file. And I've got like a template, just a zero, zero,
ADR template.md that just copy paste modify. And it's just a few lines. And I've likely,
sometimes I just put none in, if I'm not contingent any options, I'll just put none,
but I might fill it in later, but including pros and cons for options. This isn't, this is really only
taking me a few minutes to get the stuff that I'm thinking about of the project and the things I want
to change out of my head and somewhere. And since it's in Markdown and I'm storing it with the,
with the code in the repository, it works great because, because the, because it's a GitHub or
GitLab just renders it. It's Markdown. So it just gets rendered and it looks beautiful. But it's super
fast to just write this down. And I'm, I'm already like in, so the step, okay. I want to talk about the
status a little bit. The proposed status there, the status that was recommended in the original is
like proposed, accepted, rejected, deprecated, superseded. And it's kind of formally. So I've
been using things like trying it out. Haven't decided yet because I'm like documenting the process
as I'm going. And I'm guessing like, by the time I say accepted, I'm going to stop editing this,
these documents, but I've got a couple architecture things that I'm just trying out playing with,
you know, do being agile about it. And, and it's helping me to actually go even just back a day to
say, what was I thinking yesterday? And, and having that written down someplace. And then I'm also working
with a remote team. So it's good to have the remote team to be able to like, they can see what I'm
thinking by reading these docs and other people can do too. So anyway, highly recommend architecture
decision records. Yeah, that's great. You know, one thing that's might be cool to pair this with
is the old style GitHub projects, not the crummy new ones, but the good new, good old ones. Okay.
Where you have Kanban boards and they go through different stages, right? So the status could have,
be the columns of your projects and you could have just a project for decisions and you could just see
where they've gone and you know, maybe somehow reference. Yeah. And a great issue is something to
link it all together through GitHub, but that'd be cool.
Definitely. And I've seen, there's a bunch of people that have done a bunch of extra stuff on
top of this to make it more processy. But to me, now it feels official and I don't want it to feel
official. I want it to just be like dumping stuff out of my head. There's also a different, a different
mind, a different thing of like, how much things do you put in there? Is it everything? Is it,
just big, important architectural changes? And that you just sort of have, I'm just playing with it to
see what it is. I'm not putting bug fixes in here, but I'm putting things like, I'm really
changing a component, taking it here and moving over here. Why am I doing that?
Right. We're switching from FastAPI to flask and here's why I'm like that. Right. So yeah.
Theoretically. Awesome. Well, let's go to the sea and visit some narwhals. So I just had this,
this project, had Marco Garelli on talk Python. This is a project he's doing a lot of work with
and narwhals. It solves a problem. You can see their logo. If you go to their website is a pandas
and a polar bear and a narwhal kind of hanging out behind them. And the idea is if you have,
if you are writing a library that takes a data frame source. So if you have users who are doing pandas
and they want to, you want to write a library and say, Hey, send me your pandas data frame and
I'll graph it or I'll analyze it or I'll do AI around it or whatever it is you're doing with it.
You will probably get a message issue or something that says, Hey, we'd like you to use polars.
How do I work with that? I want to convert everything to pandas. I want to use polars. Like,
uh, now how do I take these two? And then you're like, well, we actually use
modem or we use, QPy for, GPU programming. Can we pass our data frames? You're like,
great. Cause nobody wants to convert out of their native framework into this thing. And it's just
some other one. Cause it's probably going to make it slow. Like if you convert out of a GPU into pandas,
well, what's the point, you know? So that's what the goal of this narwhals thing is. It lets you
primarily, it's primarily for people who are creating graphing libraries, analysis libraries,
others that can take all these different frameworks. Okay. Right. And then what you do as the library
writer is use a subset of the polars API, a real simple one program that comes from narwhals, but
it's the same API, right? And so you basically do that. And then narwhals itself knows how to figure
out which data frame library you're working with, how to work with it. If it's polars and it does,
it's lazy operations. It won't turn it into eager operations. It'll continue to be
lazy until it gets evaluated, which is really good for performance and memory. But if it's an eager
API from pandas, also that very low overhead, if you go check it out, full static typing, lots of
promises of stability. Cause the point is to be a foundational library for other libraries, not
cutting edge new features. So anyway, if people are out there and they want to work with multiple
frameworks for whatever reason, especially if you're creating libraries that you wouldn't let
people from different slices of the data science world use, then this is pretty awesome.
So do you know, is it, it's not converting things as it brings it in, it's leaving it in the native
data.
Yes, exactly. Yeah, exactly. That's part of the bonus here is that it does that. And then basically
you write to the subset of the polars API, but then narwhals, it's okay. Well, is it really
a pandas thing or whatever? Yeah. What's the underlying thing?
Yeah. Yeah. Yeah. I don't have a direct use for it because I don't data science as much,
but I think it's cool and wanted to share it. It will be on talk Python in much greater detail
than I just explained in a couple of weeks. You can find it on the Python live stream YouTube
section already, but the full edited version will be out later.
All right. That's pretty cool.
Yes, indeed. And sure is. How about we talk about our sponsor real quick, Brian, before we move on.
That sounds great. Let me tell you real quick about Scout APM. They're big supporters of Python
bytes. So we appreciate that very much. So if you are tired of spending hours trying to find the root
cause of issues impacting your performance, then you owe it to yourself to check out Scout APM.
They're a leading Python application performance monitoring tool, APM, that helps you identify and
solve performance abnormalities faster and easier. Scout APM ties bottlenecks such as memory leaks,
slow database queries, background jobs, and the dreaded N plus one queries that you can end up if you do
lazy loading in your ORM. And then you say, oh, no, why is it so slow? Why are you doing 200 database
queries for what should be one? So you can find out things like that. And it links it back directly to
source code. So you can spend less time in the debugger and healing logs and just finding the
problems and moving on. And you'll love it because it's built for developers by developers. It makes it easy
to get set up. Seriously, you can do it in less than four minutes. So that's awesome. And the best part
is the pricing is straightforward. You only pay for the data that you use with no hidden overage fees or
per seat pricing. And I just learned this, Brian. They also have, they provide the pro version for free to
all open source projects. So if you're an open source maintainer and you want to have Scout APM for that
project, just shoot them a message or something on their pricing page about that. So you can start
your free trial and get instant insights today. Visit by them by set of him slash Scout. The link is in
your podcast player show notes as well. And please use that link. Don't just search for them because
otherwise they don't think you came from us. And then they'd stop supporting the show. So please
use our link by them by set of him slash Scout. Check them out. It really supports the show.
Next is a little bit of bizarre news from the Northwest. You're probably so I'm a little bit older than you,
I think. So I don't directly remember it. But I kind of remember the meltdown at Three Mile Island.
I'm 27. How old are you?
So I was born in 1970. So I was nine years old. So it wasn't really something I was completely aware of. But we, you
know, we heard about it later, because it was kind of a big deal. So what this was, was a nuclear nuclear
facility in near near Seattle, I don't know, I'm not that good at geography. A Three Mile Island in
Washington. And there were two reactors, and one of them did a partial meltdown. And it was a big
big thing. But it was it's the worst nuclear accident we've had in the United States. And okay,
so why am I talking about this? Well, I didn't, I guess I guess I didn't realize it was still operating
up until 2019. Not those reactors, there were other reactors nearby safer. I mean, in nuclear energy has
come a long way. There's an actually this Three Mile thing was the reason why we have a lot of the nuclear
regulations we have now, it did sort of put nuclear energy on the back burner more than it probably should
have been. And I'm not going to get into the politics of whether or not we should have nuclear energy
too much with that. I didn't want to get into that too much. But what I am want to talk about is that
it's going to start up again, or it's proposed to. So it was closed in 2019. It might open again in
2028. And it's only going to be for Microsoft. This is the bizarre bit. So Microsoft, wow,
Microsoft wants to start this up again, and have an exclusive 20 year deal for what 835 megawatts of
energy. Just going to AI. This seems bizarre to me. So AI needs a lot of power. And yeah, so they're
just going to, they hope, this isn't, this is still in proposal phase. Regulators have to approve it. But
we're going to start up another nuclear power plant just for, just for Microsoft AI. This, I just don't get
so there's, there's that. And then it was, this was, we linked to the verge article. I found it on
the verge, but then I searched for it again, some more, and there's a CNN article as well. And also
what it looks like there's only one picture of this thing that's being used everywhere. Anyway. Oh, I
guess that's a different picture, but so going to start up again. It seems odd. And then
in a related news, I guess that's all I just wanted to say is I think this is weird that we're going to
start a nuclear power plant just for AI. Maybe that's a problem. Anyway. The article I found was
just, it's kind of a mock news article, but this is just a mixed weenies internet tendency. The article
is the department of energy wants you to know that your conservation efforts are making a difference.
So I thought we were trying to like save the planet by saving energy and stuff. And,
this has got some interesting bits. says, by turning off your lights all day, every day,
you can serve about 1% of the energy needed for AI to generate a picture of a duck wearing sunglasses.
Isn't he cute? Aside from the fact that he has feet that are a human of a human man, of course.
so AI is consuming tons of energy and we're in the rest of our lives. We're trying to conserve energy.
It's just a, I don't know. I, maybe I shouldn't brought it up as a topic. It's just seems bizarre
to me. So I'll leave it there. Well, so I love these. Let's put your, your feeling bad about wasting
energy or your effort to save some energy and perspective. And it's just like, yeah, I mean,
I still go around and turn off the lights after my kid who just like leaves them on. Well, yeah. And
also we're, I've like stopped buying 25 cent light bulbs and now we buy $8 led light bulbs that last
about the same as the other bulbs used to. And they are more, I mean, I, we're spending way more on light
bulbs and for what? So that AI can have more energy, I guess. Yeah. So on one side, I totally see the point
there on the other, if we're going to dump tons of energy into AI, I would much rather see it coming
from carbon neutral sources than coal plants, you know? True. Fair. Right. Like, are you going to make
the duck or are you going to not make the duck? Like regardless of what light bulbs you're using, people
are making ducks and let's do that better. I think it's super bizarre that three mile Island is the choice
because if there's anything in at least American culture that says nuclear energy bad, it's three
mile Island. Like couldn't pick anywhere else, you know? Yeah. Well, they're going to change the name.
It's going to be called the crane clean energy center. Oh, there's a good rebranding
that said, I'm super optimistic on nuclear energy as a climate solution, not necessarily old school
three mile Island stuff, but the molten salt reactors, the things that fail safe and not fail
explosive like Fukushima. Right. I know there's nuclear waste. They're less, those new ones are less
bad. And, you know, I feel like a lot of the pushback against it, it's a little bit like, well,
there's this rare endangered lizard in the desert. So we can't have in this desert, any solar farms.
It's like, well, if it gets 20 degrees hotter, there's going to be no lizards in the desert.
We need to take some more positive action. And I feel like, you know, nuclear energy is that sort
of in the extreme, right? People have such strong reactions, but there's so much better attack now.
And I would love to see that. Yeah. My personal views are that I think it would be good to utilize
what we have, including nuclear energy as a stopgap to get us off carbon based fuel. And then once we
get that, we can get carbon neutral, then we can go to, then we can be as we beef up solar and wind
and everything, then we can maybe draw away from nuclear. That's a great way to put it. Like,
let's get rid of the carbon pollution. Yeah. And then we can debate of the things that are working,
which ones are working best. Very well. I also, I also wanted to point out the excellent pun that
you made intentional or not that with nuclear energy, people have strong reactions.
That's very good. All right. People might have a strong reaction to this as well, but I got to say
it's way less, way less out there. So here's the strong reaction. I think when people use Docker,
so this is a Docker topic, when people use Docker, there's two philosophies. One philosophy is I want
the lightest weight, simplest, most basic thing that I can possibly use to build my containers.
So they're insanely small, right? I want almost nothing there. I just want, if it is not needed for
whatever I'm trying to do to execute, it doesn't belong there. Let's get it out of there. Yeah.
That's one side. This topic is not from that. This topic is from the other side of perspective
that I would say the Michael side lives on that I live on. And that is Docker can be more difficult
to understand what's going wrong. When something goes wrong, how do you fix it? How do you get other
tools to see what's happening inside there? Right. And so I think there's a bunch of people that stay
away from Docker because they're like, Oh, I just want to have access to the logs and the tools that I
normally use and all that kind of stuff inside my server or my VM. So I can understand what's
happening better. Right. So one of the tools I really like is, Oh, my Z shell, right. With all of
his plugins, his auto-complete, his cool history. And so I present to you ZSH in Docker. It installs
Z shell, Oh, my Z shell and the plugins like auto-complete for source control and for, you know,
all the, all the various plugins that you get right from Z shell and it's one line. So you put this run
shell out of this repo and it just installs Z shell and installs, Oh, my Z shell. It makes it the default
shell or you just run it when you get into it, whatever. And then all the plugins, et cetera.
So really, really nice. You even get to pick your theme as part of the one liner so that you can see like
what version of Python is active. What is the state of a get repo? If you copy to get repo in as part of
setting up your Docker container and all those kinds of things. So super simple. If you believe in that,
I want some tools inside of my container. So when things are not working, I can exec into it and ask
what's going on. Then this is really awesome. if you don't want that, if you're the opposite side,
this is not for you. All right, cool. Indeed. So do you, how much time do you spend in Docker?
Uh, very little, but when things are, are not quite working or I'm trying to figure out a command,
you know, maybe you've got a database running in there. You're like, I really need to see,
I just want to see what's going on with this. And you know that inside the container, there's some
database management tools. If you just Docker exec Z shell, and then you start typing, it's like,
you're, you're, you're on SSH and effectively. So yeah, I'm going to have to check that out.
So I'm changing my doc. Like I used to use Docker a lot for like actually cross compiling,
C++ code and I'm using it more now for web stuff. and so, yeah, absolutely. I think it's great.
And obviously I do a ton of stuff with Docker and we're running the web apps and things, but I don't
go into the web apps unless I have questions, you know, but when you do, it's nice to just go,
Oh, okay. Well, here's the thing. And you just make this one of your base layers of your Docker
image and it builds nice and fast. Nice. Okay. well we're, ran through our topics.
I don't have any extras today. So you're extra less. I'm extra less. What is the opposite of extra?
I don't know. I got a few basic maybe. I guess bear the bare minimums. Okay. So first one is I,
remember I spoke about this thing, this uptime Kuma while ago. Uptime Kuma is great. So it's self-hosted,
uh, free uptime monitoring. Okay. Well, I put in a bunch of things like, for example,
if you go to Python bytes and you go to the bottom and hit server status, it'll show you the server
status of Python bytes, how old the SSL search from let's encrypt are and all those kinds of things.
Right. Very cool. Well, I turned that on all of my web things, including my personal blog, which this
might resonate with you, Brian is my personal blog built with Hugo, which is a static site. So it cannot
crash. It is HTML CSS image. Like it can't crash. Right. And I thought, Oh, I'm going to host this on
Netlify because Netlify is pretty awesome. Right. Right. Well, I started getting every single day or every
other day. Your site has a five Oh two error and it's been down for 10 minutes. Now it's back. It's
been down. What, how could it possibly, it's a static site. So something about the Netlify infrastructure
was going bonkers. And I will tell you, if you already have an internet server laying around somewhere,
it's about eight or nine lines of code of internet configuration to just host it yourself. So I switched
this over to running on server that runs all the other things that I got, but because Netlify was
crashing. So I think the takeaway is not that in Kennedy.codes, my personal blog website, et cetera,
is hosted anywhere different. Like why do you care? But if you're hosted on Netlify, maybe point some
uptime status at your thing, even though it's a static site, shouldn't fail. Look at it anyway. Mine was
for a week or two. I would say at least two weeks. It has been all sorts of broken temporarily.
Yeah. Is it better now?
Yeah. It's perfect. Cause why would it have any problems now? It's on our server.
Yeah. It's better now. Okay. So that's number one. That's just a check that out. Number two,
over at Talk Python, if you go to the courses and you go to the apps, we have really nice new version
that came out, I think last year of our mobile apps for all the courses, including Brian's pytest course.
You can take it that way. The one that comes from Talk Python that is.
Well, the guy who wrote this, Lauren Augie, I had him on Talk Python when we talked about Python and
mobile apps, along with some other folks. Anyway, he used to be a live sound engineer until COVID hit,
and then he moved over into software development. And he wrote up a really detailed story of his life
journey. And I just wanted to share that. If people are interested in that, maybe you're making that
transition as well, then check that out. It's pretty cool. That's pretty cool. Yeah.
This other short one comes to us from it. Itmar Turner, Turner Trowing says it's time to stop using
Python 3.8. I can't believe that, but it is. He puts it, he puts it onto our radar that, you know,
14% of the packages downloaded from PyPI are for Python 3.8 installations. And by the way, next month,
it's going end of life, out of supported, no security fixes, nothing. So you might not want
that to be your foundation if you get to choose. And we got like seven days left in September.
Yeah. I would say it's, yeah, five weeks. What could go wrong? Anyway, just put it on your radar. Maybe
Python 3.12. It's been out for a long time. Version six of that just came out. So I think we're good.
You know, 3.12.6. I also want to add to that, that since like, it's been years since I've ever had any,
any significant issue upgrading. At most, I'll see deprecations that I have to go through and
clean up or warnings or something, but I, maybe other people have, but I haven't had any issues
for a really long time upgrading. So. Yeah. Same. I did have an issue with, I can't remember. There
was some, it was packages that didn't support 3.12. There was some deprecation in there that
I had to wait three or four weeks before I could start using 3.12 when it first came out for some
of my apps. However, that's not the same as to say that Python itself is unreliable. You would know
right away if the imports fail or whatever, right? Like you'll, you'll find out straight away.
Yeah. And I don't remember the reason why, but on a couple of the projects that I've converted from
3.8 to 3.12 work projects, I jumped to from 3.8 to 3.10 with no issues or minor issues. And then to
3.12 fairly easy. And for some reason it just helped me to go from the 3.10 and then 3.12.
Yeah.
But anyway, your mileage may vary.
It's these, it's these kinds of things that if you don't do it, you eventually end up saying,
we have a 2.6 app and a half million lines of code and it's still running on Python 2.6. So
don't talk to me about your fancy new libraries and your typing and your async. We're just trying to
survive, you know, like, but if you keep, if you get into the practice of just like, okay, well,
let's just keep this stuff moving. All those steps are generally small unless you try to take them
10 years at a time.
You're stressing me out, man. PTSD from 2.6.
All right. Last thing. So passkeys, let me ask you really quick, Brian, are you a passkey user?
Yes. Well, passkey is in...
A believer.
Well, yeah, I use passkeys. Yeah.
I do too. I've been resisting using passkeys. So passkeys are cryptographic, kind of like,
almost like SSH keys, but for the normal folks for just web authentication, right? It's a cryptographic
thing blob that gets put into your whatever thing is signing in. And if it shares that back,
it's supposed to be dedicated to that instance, it knows it's you. Often you can skip to a phase,
all those kinds of things, right? But one of the things that really turned me off on passkeys
is they felt to me like a couple of the tech giants are like, hey, this is a sweet opportunity for
lock-in. So let's see how much lock-in we can get, you know, Android and Apple, especially,
right? Like, hey, just save your passkey to your iPhone. What could go wrong? I was like, well...
I could lose my iPhone. Yeah. If I could lose my iPhone or even if it's synced to iCloud, like what...
I have a smart TV that says, you know, log in with your password. It's a super pain to type in,
but you can do it. Or maybe I'll go over to my Windows PC and I have to type in some password to log in.
A lot of times it'll say like, oh, your Microsoft account is expired. It's login. Log in again at the
boot screen. So I don't get access to anything. It's like, oh my gosh, this is a pain. But those
situations get way worse if you have passkeys that are dedicated to, you know, one provider,
right? That's just mega lock-in. So I realized that if you're a one password user, or I think
also Bitwarden, I'm a user of both of them and I really like them. If you store your passkeys there,
all of a sudden they live everywhere. It's beautiful. And if your computer gets destroyed,
just log into one password or Bitwarden or whatever again, and you have them all again. So if you,
at least for one password, if you go into the watchtower, there's a section that says,
show me all the sites that could have passkeys that I don't have stored passkeys for here.
And it'll help you go through and basically add them to one password, which is a form of lock-in,
but a much lower grade form of lock-in in my feeling. So anyway, I am now a believer of passkeys,
I believe. I went through and did that this weekend. I added like 35 accounts or so that have
passkeys and now life's a little easier. Like GitHub, for example.
Yeah, nice.
Yeah. All right. You have the joke for us this week, do you not?
I do. And I actually, I thought it was going to be a topic. I just had it in my backlog of how to
monetize a blog. And then I started reading it and realized this is just a hilarious joke.
And I love it. So I wanted to bring it up here. And so, and you should either, if you're listening
and not, not on YouTube, you should, watch the, watch the video version or just go check it
out yourself. I'll, we'll have link in the show notes. Okay. So how to monetize a blog.
it talks and I actually thought it was going to be advice, but it's just funny. maintaining blog
can be a lot of work. I start reading it. You don't really need to read it. there's some fun
font that shows up right away. Like, like here's a, it can become a fairly lucrative venture and the
become is in this wacky font. I love the M that's cool. and then she would get going down and you
see these various things like, like timber quest, advertisement, your lumber yard awaits you,
my Lord, play now. And almost all the, the, the clickable things, if you click on them,
they just like pop up little coins. you don't actually go anywhere. and then
talks about slapping this bad boy here can start raking in some cash through true primary
means CPM or CPA. And, and then you just sort of, if it's sort of seems reasonable, but it says,
look, look, how am I doing so far? I've, I've made 0.123 cents, so far on this. and then,
uh, you, it, it just adds it up. There's different various, various little links around that.
If you click on them, it increases the, how much money this person's made, even though it's not real.
Um, but if you, I just started reading the ads, like there's an ad for minimal effort graphic design,
um, no proofing time saved. The ads are hilarious. Here's one, free cruise, sign up today,
uh, with eligible purchase meeting or exceeding value of cruise after which no purchase is necessary.
Uh, of course, click on that guy for some extra, let's see, I'll read one. The more clicks and grizzly bear sales,
you can squeeze out of your beloved readers, the more of their money you can siphon to spend on cheeseburger deliveries.
And of course, cheeseburger deliveries is clickable.
It's gotta be an affiliate link, right?
Yeah. All these things. let's see.
Uh, here's a little, a little weird thing, ad on the side that looks like a Amazon or eBay thing.
Friendship assembly, 1595 collapsible by valve, and a, that which molts beneath enclosures.
Oh, boy. This is bizarre. I love these. I want to scroll down more literal snake oil, vials of freshly squeezing,
squozen oil from actual snakes. befriend a sandwich. No doctors allowed. The first mystery grab bag of unmarked vitamins is free.
Um, oh, and then it pops up. We get a pop-up, push notifications. Would you like to enable push notifications
so you can receive intrusive alert messages like these outside of the browser? Yes. Or ask me later.
Uh, I'm sure I said yes and see if you got a coin for that. Yeah, maybe let's do it again. Another one. Yes. Oh yeah.
Oh, you did. You're making some money for that. Yeah. And, a weird pop-up cheese cube burger now open. let's see.
We soon become, oh, it's too bad. You can't see this. This one is, ice cream holding tips.
uh, there's, we have radishes that will change your life. Add, let's see. huh? Oh, these,
these are my, these are just my mind-rending god radishes. old school, excuse me,
a virus was detected on your computer. Send bitcoins. Like a Solaris window. oh, anyway,
and then you, you just sort of scroll down. It just comes, it becomes even more bizarre. You've got
side noise text. and then, the, the spiral. This is awesome. I don't even know.
So I was like, how do they do some of this stuff? It's pretty cool. It's pretty cool stuff.
That's how you monetize. That's how you do it. Yeah. If you go all the way down also in,
in the, if you actually start reading it, it says stuff like there's not actually,
you just sort of have to spew out lots of words. I didn't even edit this. and then
way at the bottom, there's a credits, how this was made. And then, this person goes through and
walks through, basically all of the different, procedures for how, like how to do the spiral,
how to do the cool font, and all these sort of tricks, with HTML and CSS and whatnot. So
anyway, just a hilarious little, blog on stupid ads. that's awesome. Andre out there says,
this is art. It's definitely art. Yeah. Not art, but real time followup. Bitwarden also supports
pass keys, which Bitwarden being open source and the paid version is insanely affordable. It's like
a dollar, a couple of dollars a year or something. I can't remember exactly what it is, but maybe that's
the proper recommendation there, for, for pass keys. But anyway, okay. Cool. Yeah. Cool. Yeah.
Well, let's call it a show, huh? Yeah. Sounds good. All right. Well, thanks for being here.
Thank you everyone for listening.