Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

#402: How to monetize your blog

Published Mon, Sep 23, 2024, recorded Mon, Sep 23, 2024
Watch this episode on YouTube
Play on YouTube
Watch the live stream replay

About the show

Sponsored by ScoutAPM: pythonbytes.fm/scout

Connect with the hosts

Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

Brian #1: Architecture Decision Records (ADRs)

  • Suggested by Christian Gesell
  • Documenting Architecture Decisions
    • Mychael Nygard
    • Original article from 2011
  • Why you should be using architecture decision records to document your project
    • Red Hat
    • Includes a quick overview and links to some templates
  • Notes so far
    • Writing this out helps me solidify my thinking about a problem.
    • I’m doing this both before starting, and while implementing a first draft
    • GitHub and GitLab render markdown so well that generating a docs site is unnecessary, just throwing these files in something like docs/adr is enough.
    • The lightweight process is enough but not too much.
    • I’ve already filled out None for lots of sections, like “options considered”
    • I’m still playing with what level of decision should have an ADR.
  • My template that I’ve been using so far
  • File name is something like 001-some-change.md

Michael #2: narwhals: extremely lightweight compatibility layer between dataframes

  • Recently had Marco on Talk Python to discuss
  • Primarily for library creators who want to support interacting with multiple data frame libraries (.e.g. Pandas & Polars)
  • Just use a subset of the Polars API

Brian #3: Microsoft wants Three Mile Island to fuel its AI power needs

  • “Microsoft just signed a deal to revive the shuttered Three Mile Island nuclear power plant. If approved by regulators, the software maker would have exclusive rights to 100 percent of the output for its AI data center needs.”
  • Also ran on CNN and other sources:
  • Three Mile Island was the site of the worst nuclear disaster in the US, when one of two reactors experienced a partial meltdown, in 1979.
  • It was still operating up until 2019, and now expected to re-open in 2028
  • Will be renamed “Crane Clean Energy Center”
  • related
    • The Department of Energy Wants You to Know Your Conservation Efforts Are Making a Difference
      • “By switching all the lightbulbs in your house to LED, you saved enough energy for a self-driving car to make an unprotected lefthand turn across three lanes of traffic.”
      • “We know you adopted energy-saving practices to help conserve our planet’s resources and bring down our collective carbon footprint, but what you ultimately accomplished is just as important: helping AI do something menial and stupid.”

Michael #4: zsh-in-docker

  • Install Zsh, Oh My Zsh and plugins inside a Docker container with one line!
  • Yes docker containers should be light, but also, think of how painful it can be when you run into trouble.
  • With Oh My ZSH, you get a nice experience when you have to result to docker exec -it CONTAINER zsh
  • Just enter a single command in your docker file:
    RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.0/zsh-in-docker.sh)" -- \
      -t robbyrussell
    

Extras

Michael:

Joke:

Episode Transcript

Collapse transcript

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to

00:04 your earbuds. This is episode 402, recorded September 23rd, 2024. I'm Michael Kennedy.

00:12 And I'm Brian Okken.

00:13 This episode is brought to you by Scout APM. We'll tell you more about them later. If you

00:19 want to keep up with us or the show, follow us on Mastodon. Links are in the show notes

00:24 or over on X if you really, really want to. You can find the links there in the footer

00:28 of the website. We typically live stream on Mondays now. We used to do Tuesdays. Remember,

00:34 we moved to Mondays. So Mondays, 10 a.m. Pacific time on YouTube. If you want to check that out,

00:39 we'd love to have you. Always great to have people in the audience, but certainly not environment.

00:43 And finally, if you want to get artisanal and crafted summary put together by your very own

00:50 Brian Okken about the show right after it ships, sign up for the newsletter. Just go to pythonbytes.fm

00:56 slash right there and just click newsletter right at the front. It's probably the easiest way,

00:59 actually, put in your email. We won't do bad things with it. We'll just send you updates.

01:04 And things about like horses and other stuff.

01:06 Horses.

01:07 Courses. Okay.

01:08 Horses. Courses for horses. No, this is a totally different kind of show. We can go down that path.

01:14 What path do you want to take?

01:17 Actually, let's make some decisions. How about that?

01:20 Yes. Okay.

01:21 I actually, this was suggested to me actually at a work setting. A friend of mine, Christian

01:26 Gazelle said, Hey, architectural decision records are pretty cool. Do you use them? And I had not

01:33 heard of these things. So I was excited to explore the rabbit hole. So this was a, there's an article

01:39 that we're going to link to. This is the original from 2011 called documenting architecture decisions

01:44 from Michael Nygaard. And, and it's, it, it's kind of this idea that you just have this lightweight

01:50 document to, to discuss things like what you're deciding about, what the context is, what, you know,

01:58 what the current situation is. And then the decision, what you're going to do. And so the context is why,

02:05 why you're doing it. The decision is what you're going to do. And then, you know, status, like if

02:09 you're, whether you're proposing it or whatever, I'm playing with status right now. So,

02:13 and then the consequences, what you hope to will be the benefits of this decision.

02:18 This seems like, like, like so silly and simple that it can't be helpful, but it is, it is awesome.

02:24 And I've started using it just for a few days. So we're, we'll see. But so there's another article

02:30 I'd like to link to, and it's from, from Red Hat called why you should be using ADRs or

02:36 architectural decision records to document your project. And it's a, that's, that's a really nice,

02:41 introduction. And it shows you basically, you just have a handful of things and there's a bunch of

02:48 templates people are using. I'm using Markdown. And I'm going to show you the, essentially the

02:53 template I'm using. It's just a Markdown file. And I've got like a template, just a zero, zero,

02:59 ADR template.md that just copy paste modify. And it's just a few lines. And I've likely,

03:06 sometimes I just put none in, if I'm not contingent any options, I'll just put none,

03:10 but I might fill it in later, but including pros and cons for options. This isn't, this is really only

03:16 taking me a few minutes to get the stuff that I'm thinking about of the project and the things I want

03:20 to change out of my head and somewhere. And since it's in Markdown and I'm storing it with the,

03:26 with the code in the repository, it works great because, because the, because it's a GitHub or

03:33 GitLab just renders it. It's Markdown. So it just gets rendered and it looks beautiful. But it's super

03:39 fast to just write this down. And I'm, I'm already like in, so the step, okay. I want to talk about the

03:45 status a little bit. The proposed status there, the status that was recommended in the original is

03:49 like proposed, accepted, rejected, deprecated, superseded. And it's kind of formally. So I've

03:55 been using things like trying it out. Haven't decided yet because I'm like documenting the process

04:03 as I'm going. And I'm guessing like, by the time I say accepted, I'm going to stop editing this,

04:08 these documents, but I've got a couple architecture things that I'm just trying out playing with,

04:13 you know, do being agile about it. And, and it's helping me to actually go even just back a day to

04:20 say, what was I thinking yesterday? And, and having that written down someplace. And then I'm also working

04:25 with a remote team. So it's good to have the remote team to be able to like, they can see what I'm

04:30 thinking by reading these docs and other people can do too. So anyway, highly recommend architecture

04:35 decision records. Yeah, that's great. You know, one thing that's might be cool to pair this with

04:41 is the old style GitHub projects, not the crummy new ones, but the good new, good old ones. Okay.

04:47 Where you have Kanban boards and they go through different stages, right? So the status could have,

04:53 be the columns of your projects and you could have just a project for decisions and you could just see

04:58 where they've gone and you know, maybe somehow reference. Yeah. And a great issue is something to

05:03 link it all together through GitHub, but that'd be cool.

05:06 Definitely. And I've seen, there's a bunch of people that have done a bunch of extra stuff on

05:10 top of this to make it more processy. But to me, now it feels official and I don't want it to feel

05:16 official. I want it to just be like dumping stuff out of my head. There's also a different, a different

05:20 mind, a different thing of like, how much things do you put in there? Is it everything? Is it,

05:25 just big, important architectural changes? And that you just sort of have, I'm just playing with it to

05:31 see what it is. I'm not putting bug fixes in here, but I'm putting things like, I'm really

05:36 changing a component, taking it here and moving over here. Why am I doing that?

05:40 Right. We're switching from FastAPI to flask and here's why I'm like that. Right. So yeah.

05:46 Theoretically. Awesome. Well, let's go to the sea and visit some narwhals. So I just had this,

05:53 this project, had Marco Garelli on talk Python. This is a project he's doing a lot of work with

05:59 and narwhals. It solves a problem. You can see their logo. If you go to their website is a pandas

06:04 and a polar bear and a narwhal kind of hanging out behind them. And the idea is if you have,

06:10 if you are writing a library that takes a data frame source. So if you have users who are doing pandas

06:18 and they want to, you want to write a library and say, Hey, send me your pandas data frame and

06:23 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.

06:28 You will probably get a message issue or something that says, Hey, we'd like you to use polars.

06:34 How do I work with that? I want to convert everything to pandas. I want to use polars. Like,

06:38 now how do I take these two? And then you're like, well, we actually use

06:41 modem or we use, QPy for, GPU programming. Can we pass our data frames? You're like,

06:49 great. Cause nobody wants to convert out of their native framework into this thing. And it's just

06:54 some other one. Cause it's probably going to make it slow. Like if you convert out of a GPU into pandas,

06:59 well, what's the point, you know? So that's what the goal of this narwhals thing is. It lets you

07:03 primarily, it's primarily for people who are creating graphing libraries, analysis libraries,

07:09 others that can take all these different frameworks. Okay. Right. And then what you do as the library

07:16 writer is use a subset of the polars API, a real simple one program that comes from narwhals, but

07:23 it's the same API, right? And so you basically do that. And then narwhals itself knows how to figure

07:28 out which data frame library you're working with, how to work with it. If it's polars and it does,

07:33 it's lazy operations. It won't turn it into eager operations. It'll continue to be

07:38 lazy until it gets evaluated, which is really good for performance and memory. But if it's an eager

07:43 API from pandas, also that very low overhead, if you go check it out, full static typing, lots of

07:49 promises of stability. Cause the point is to be a foundational library for other libraries, not

07:55 cutting edge new features. So anyway, if people are out there and they want to work with multiple

08:00 frameworks for whatever reason, especially if you're creating libraries that you wouldn't let

08:04 people from different slices of the data science world use, then this is pretty awesome.

08:08 So do you know, is it, it's not converting things as it brings it in, it's leaving it in the native

08:14 data.

08:14 Yes, exactly. Yeah, exactly. That's part of the bonus here is that it does that. And then basically

08:20 you write to the subset of the polars API, but then narwhals, it's okay. Well, is it really

08:25 a pandas thing or whatever? Yeah. What's the underlying thing?

08:29 Yeah. Yeah. Yeah. I don't have a direct use for it because I don't data science as much,

08:34 but I think it's cool and wanted to share it. It will be on talk Python in much greater detail

08:39 than I just explained in a couple of weeks. You can find it on the Python live stream YouTube

08:45 section already, but the full edited version will be out later.

08:48 All right. That's pretty cool.

08:50 Yes, indeed. And sure is. How about we talk about our sponsor real quick, Brian, before we move on.

08:56 That sounds great. Let me tell you real quick about Scout APM. They're big supporters of Python

09:03 bytes. So we appreciate that very much. So if you are tired of spending hours trying to find the root

09:08 cause of issues impacting your performance, then you owe it to yourself to check out Scout APM.

09:13 They're a leading Python application performance monitoring tool, APM, that helps you identify and

09:20 solve performance abnormalities faster and easier. Scout APM ties bottlenecks such as memory leaks,

09:26 slow database queries, background jobs, and the dreaded N plus one queries that you can end up if you do

09:31 lazy loading in your ORM. And then you say, oh, no, why is it so slow? Why are you doing 200 database

09:37 queries for what should be one? So you can find out things like that. And it links it back directly to

09:40 source code. So you can spend less time in the debugger and healing logs and just finding the

09:46 problems and moving on. And you'll love it because it's built for developers by developers. It makes it easy

09:51 to get set up. Seriously, you can do it in less than four minutes. So that's awesome. And the best part

09:55 is the pricing is straightforward. You only pay for the data that you use with no hidden overage fees or

10:02 per seat pricing. And I just learned this, Brian. They also have, they provide the pro version for free to

10:09 all open source projects. So if you're an open source maintainer and you want to have Scout APM for that

10:14 project, just shoot them a message or something on their pricing page about that. So you can start

10:19 your free trial and get instant insights today. Visit by them by set of him slash Scout. The link is in

10:25 your podcast player show notes as well. And please use that link. Don't just search for them because

10:30 otherwise they don't think you came from us. And then they'd stop supporting the show. So please

10:34 use our link by them by set of him slash Scout. Check them out. It really supports the show.

10:39 Next is a little bit of bizarre news from the Northwest. You're probably so I'm a little bit older than you,

10:47 I think. So I don't directly remember it. But I kind of remember the meltdown at Three Mile Island.

10:54 I'm 27. How old are you?

10:56 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

11:04 know, we heard about it later, because it was kind of a big deal. So what this was, was a nuclear nuclear

11:10 facility in near near Seattle, I don't know, I'm not that good at geography. A Three Mile Island in

11:19 Washington. And there were two reactors, and one of them did a partial meltdown. And it was a big

11:24 big thing. But it was it's the worst nuclear accident we've had in the United States. And okay,

11:31 so why am I talking about this? Well, I didn't, I guess I guess I didn't realize it was still operating

11:37 up until 2019. Not those reactors, there were other reactors nearby safer. I mean, in nuclear energy has

11:44 come a long way. There's an actually this Three Mile thing was the reason why we have a lot of the nuclear

11:49 regulations we have now, it did sort of put nuclear energy on the back burner more than it probably should

11:56 have been. And I'm not going to get into the politics of whether or not we should have nuclear energy

12:00 too much with that. I didn't want to get into that too much. But what I am want to talk about is that

12:06 it's going to start up again, or it's proposed to. So it was closed in 2019. It might open again in

12:11 2028. And it's only going to be for Microsoft. This is the bizarre bit. So Microsoft, wow,

12:18 Microsoft wants to start this up again, and have an exclusive 20 year deal for what 835 megawatts of

12:25 energy. Just going to AI. This seems bizarre to me. So AI needs a lot of power. And yeah, so they're

12:35 just going to, they hope, this isn't, this is still in proposal phase. Regulators have to approve it. But

12:42 we're going to start up another nuclear power plant just for, just for Microsoft AI. This, I just don't get

12:49 so there's, there's that. And then it was, this was, we linked to the verge article. I found it on

12:56 the verge, but then I searched for it again, some more, and there's a CNN article as well. And also

13:01 what it looks like there's only one picture of this thing that's being used everywhere. Anyway. Oh, I

13:06 guess that's a different picture, but so going to start up again. It seems odd. And then

13:14 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

13:21 start a nuclear power plant just for AI. Maybe that's a problem. Anyway. The article I found was

13:29 just, it's kind of a mock news article, but this is just a mixed weenies internet tendency. The article

13:35 is the department of energy wants you to know that your conservation efforts are making a difference.

13:41 So I thought we were trying to like save the planet by saving energy and stuff. And,

13:47 this has got some interesting bits. says, by turning off your lights all day, every day,

13:52 you can serve about 1% of the energy needed for AI to generate a picture of a duck wearing sunglasses.

13:58 Isn't he cute? Aside from the fact that he has feet that are a human of a human man, of course.

14:04 so AI is consuming tons of energy and we're in the rest of our lives. We're trying to conserve energy.

14:10 It's just a, I don't know. I, maybe I shouldn't brought it up as a topic. It's just seems bizarre

14:16 to me. So I'll leave it there. Well, so I love these. Let's put your, your feeling bad about wasting

14:25 energy or your effort to save some energy and perspective. And it's just like, yeah, I mean,

14:31 I still go around and turn off the lights after my kid who just like leaves them on. Well, yeah. And

14:36 also we're, I've like stopped buying 25 cent light bulbs and now we buy $8 led light bulbs that last

14:44 about the same as the other bulbs used to. And they are more, I mean, I, we're spending way more on light

14:50 bulbs and for what? So that AI can have more energy, I guess. Yeah. So on one side, I totally see the point

14:59 there on the other, if we're going to dump tons of energy into AI, I would much rather see it coming

15:05 from carbon neutral sources than coal plants, you know? True. Fair. Right. Like, are you going to make

15:10 the duck or are you going to not make the duck? Like regardless of what light bulbs you're using, people

15:14 are making ducks and let's do that better. I think it's super bizarre that three mile Island is the choice

15:19 because if there's anything in at least American culture that says nuclear energy bad, it's three

15:26 mile Island. Like couldn't pick anywhere else, you know? Yeah. Well, they're going to change the name.

15:30 It's going to be called the crane clean energy center. Oh, there's a good rebranding

15:35 that said, I'm super optimistic on nuclear energy as a climate solution, not necessarily old school

15:45 three mile Island stuff, but the molten salt reactors, the things that fail safe and not fail

15:50 explosive like Fukushima. Right. I know there's nuclear waste. They're less, those new ones are less

15:55 bad. And, you know, I feel like a lot of the pushback against it, it's a little bit like, well,

16:00 there's this rare endangered lizard in the desert. So we can't have in this desert, any solar farms.

16:07 It's like, well, if it gets 20 degrees hotter, there's going to be no lizards in the desert.

16:11 We need to take some more positive action. And I feel like, you know, nuclear energy is that sort

16:16 of in the extreme, right? People have such strong reactions, but there's so much better attack now.

16:20 And I would love to see that. Yeah. My personal views are that I think it would be good to utilize

16:26 what we have, including nuclear energy as a stopgap to get us off carbon based fuel. And then once we

16:35 get that, we can get carbon neutral, then we can go to, then we can be as we beef up solar and wind

16:43 and everything, then we can maybe draw away from nuclear. That's a great way to put it. Like,

16:47 let's get rid of the carbon pollution. Yeah. And then we can debate of the things that are working,

16:52 which ones are working best. Very well. I also, I also wanted to point out the excellent pun that

16:58 you made intentional or not that with nuclear energy, people have strong reactions.

17:02 That's very good. All right. People might have a strong reaction to this as well, but I got to say

17:08 it's way less, way less out there. So here's the strong reaction. I think when people use Docker,

17:13 so this is a Docker topic, when people use Docker, there's two philosophies. One philosophy is I want

17:20 the lightest weight, simplest, most basic thing that I can possibly use to build my containers.

17:26 So they're insanely small, right? I want almost nothing there. I just want, if it is not needed for

17:32 whatever I'm trying to do to execute, it doesn't belong there. Let's get it out of there. Yeah.

17:37 That's one side. This topic is not from that. This topic is from the other side of perspective

17:42 that I would say the Michael side lives on that I live on. And that is Docker can be more difficult

17:48 to understand what's going wrong. When something goes wrong, how do you fix it? How do you get other

17:53 tools to see what's happening inside there? Right. And so I think there's a bunch of people that stay

17:58 away from Docker because they're like, Oh, I just want to have access to the logs and the tools that I

18:04 normally use and all that kind of stuff inside my server or my VM. So I can understand what's

18:09 happening better. Right. So one of the tools I really like is, Oh, my Z shell, right. With all of

18:14 his plugins, his auto-complete, his cool history. And so I present to you ZSH in Docker. It installs

18:22 Z shell, Oh, my Z shell and the plugins like auto-complete for source control and for, you know,

18:29 all the, all the various plugins that you get right from Z shell and it's one line. So you put this run

18:35 shell out of this repo and it just installs Z shell and installs, Oh, my Z shell. It makes it the default

18:44 shell or you just run it when you get into it, whatever. And then all the plugins, et cetera.

18:48 So really, really nice. You even get to pick your theme as part of the one liner so that you can see like

18:54 what version of Python is active. What is the state of a get repo? If you copy to get repo in as part of

19:00 setting up your Docker container and all those kinds of things. So super simple. If you believe in that,

19:05 I want some tools inside of my container. So when things are not working, I can exec into it and ask

19:11 what's going on. Then this is really awesome. if you don't want that, if you're the opposite side,

19:15 this is not for you. All right, cool. Indeed. So do you, how much time do you spend in Docker?

19:20 very little, but when things are, are not quite working or I'm trying to figure out a command,

19:26 you know, maybe you've got a database running in there. You're like, I really need to see,

19:30 I just want to see what's going on with this. And you know that inside the container, there's some

19:34 database management tools. If you just Docker exec Z shell, and then you start typing, it's like,

19:40 you're, you're, you're on SSH and effectively. So yeah, I'm going to have to check that out.

19:45 So I'm changing my doc. Like I used to use Docker a lot for like actually cross compiling,

19:50 C++ code and I'm using it more now for web stuff. and so, yeah, absolutely. I think it's great.

19:57 And obviously I do a ton of stuff with Docker and we're running the web apps and things, but I don't

20:03 go into the web apps unless I have questions, you know, but when you do, it's nice to just go,

20:08 Oh, okay. Well, here's the thing. And you just make this one of your base layers of your Docker

20:13 image and it builds nice and fast. Nice. Okay. well we're, ran through our topics.

20:20 I don't have any extras today. So you're extra less. I'm extra less. What is the opposite of extra?

20:26 I don't know. I got a few basic maybe. I guess bear the bare minimums. Okay. So first one is I,

20:35 remember I spoke about this thing, this uptime Kuma while ago. Uptime Kuma is great. So it's self-hosted,

20:43 free uptime monitoring. Okay. Well, I put in a bunch of things like, for example,

20:49 if you go to Python bytes and you go to the bottom and hit server status, it'll show you the server

20:53 status of Python bytes, how old the SSL search from let's encrypt are and all those kinds of things.

20:59 Right. Very cool. Well, I turned that on all of my web things, including my personal blog, which this

21:05 might resonate with you, Brian is my personal blog built with Hugo, which is a static site. So it cannot

21:10 crash. It is HTML CSS image. Like it can't crash. Right. And I thought, Oh, I'm going to host this on

21:18 Netlify because Netlify is pretty awesome. Right. Right. Well, I started getting every single day or every

21:24 other day. Your site has a five Oh two error and it's been down for 10 minutes. Now it's back. It's

21:30 been down. What, how could it possibly, it's a static site. So something about the Netlify infrastructure

21:36 was going bonkers. And I will tell you, if you already have an internet server laying around somewhere,

21:43 it's about eight or nine lines of code of internet configuration to just host it yourself. So I switched

21:50 this over to running on server that runs all the other things that I got, but because Netlify was

21:55 crashing. So I think the takeaway is not that in Kennedy.codes, my personal blog website, et cetera,

22:01 is hosted anywhere different. Like why do you care? But if you're hosted on Netlify, maybe point some

22:06 uptime status at your thing, even though it's a static site, shouldn't fail. Look at it anyway. Mine was

22:12 for a week or two. I would say at least two weeks. It has been all sorts of broken temporarily.

22:18 Yeah. Is it better now?

22:19 Yeah. It's perfect. Cause why would it have any problems now? It's on our server.

22:22 Yeah. It's better now. Okay. So that's number one. That's just a check that out. Number two,

22:29 over at Talk Python, if you go to the courses and you go to the apps, we have really nice new version

22:38 that came out, I think last year of our mobile apps for all the courses, including Brian's pytest course.

22:43 You can take it that way. The one that comes from Talk Python that is.

22:46 Well, the guy who wrote this, Lauren Augie, I had him on Talk Python when we talked about Python and

22:53 mobile apps, along with some other folks. Anyway, he used to be a live sound engineer until COVID hit,

22:59 and then he moved over into software development. And he wrote up a really detailed story of his life

23:05 journey. And I just wanted to share that. If people are interested in that, maybe you're making that

23:10 transition as well, then check that out. It's pretty cool. That's pretty cool. Yeah.

23:13 This other short one comes to us from it. Itmar Turner, Turner Trowing says it's time to stop using

23:22 Python 3.8. I can't believe that, but it is. He puts it, he puts it onto our radar that, you know,

23:27 14% of the packages downloaded from PyPI are for Python 3.8 installations. And by the way, next month,

23:35 it's going end of life, out of supported, no security fixes, nothing. So you might not want

23:41 that to be your foundation if you get to choose. And we got like seven days left in September.

23:45 Yeah. I would say it's, yeah, five weeks. What could go wrong? Anyway, just put it on your radar. Maybe

23:51 Python 3.12. It's been out for a long time. Version six of that just came out. So I think we're good.

23:56 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,

24:03 any significant issue upgrading. At most, I'll see deprecations that I have to go through and

24:09 clean up or warnings or something, but I, maybe other people have, but I haven't had any issues

24:15 for a really long time upgrading. So. Yeah. Same. I did have an issue with, I can't remember. There

24:22 was some, it was packages that didn't support 3.12. There was some deprecation in there that

24:28 I had to wait three or four weeks before I could start using 3.12 when it first came out for some

24:33 of my apps. However, that's not the same as to say that Python itself is unreliable. You would know

24:39 right away if the imports fail or whatever, right? Like you'll, you'll find out straight away.

24:43 Yeah. And I don't remember the reason why, but on a couple of the projects that I've converted from

24:48 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

24:57 3.12 fairly easy. And for some reason it just helped me to go from the 3.10 and then 3.12.

25:02 Yeah.

25:02 But anyway, your mileage may vary.

25:05 It's these, it's these kinds of things that if you don't do it, you eventually end up saying,

25:10 we have a 2.6 app and a half million lines of code and it's still running on Python 2.6. So

25:16 don't talk to me about your fancy new libraries and your typing and your async. We're just trying to

25:21 survive, you know, like, but if you keep, if you get into the practice of just like, okay, well,

25:24 let's just keep this stuff moving. All those steps are generally small unless you try to take them

25:29 10 years at a time.

25:30 You're stressing me out, man. PTSD from 2.6.

25:35 All right. Last thing. So passkeys, let me ask you really quick, Brian, are you a passkey user?

25:41 Yes. Well, passkey is in...

25:44 A believer.

25:44 Well, yeah, I use passkeys. Yeah.

25:46 I do too. I've been resisting using passkeys. So passkeys are cryptographic, kind of like,

25:52 almost like SSH keys, but for the normal folks for just web authentication, right? It's a cryptographic

25:59 thing blob that gets put into your whatever thing is signing in. And if it shares that back,

26:04 it's supposed to be dedicated to that instance, it knows it's you. Often you can skip to a phase,

26:08 all those kinds of things, right? But one of the things that really turned me off on passkeys

26:13 is they felt to me like a couple of the tech giants are like, hey, this is a sweet opportunity for

26:20 lock-in. So let's see how much lock-in we can get, you know, Android and Apple, especially,

26:25 right? Like, hey, just save your passkey to your iPhone. What could go wrong? I was like, well...

26:30 I could lose my iPhone. Yeah. If I could lose my iPhone or even if it's synced to iCloud, like what...

26:35 I have a smart TV that says, you know, log in with your password. It's a super pain to type in,

26:40 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.

26:46 A lot of times it'll say like, oh, your Microsoft account is expired. It's login. Log in again at the

26:52 boot screen. So I don't get access to anything. It's like, oh my gosh, this is a pain. But those

26:57 situations get way worse if you have passkeys that are dedicated to, you know, one provider,

27:02 right? That's just mega lock-in. So I realized that if you're a one password user, or I think

27:09 also Bitwarden, I'm a user of both of them and I really like them. If you store your passkeys there,

27:14 all of a sudden they live everywhere. It's beautiful. And if your computer gets destroyed,

27:18 just log into one password or Bitwarden or whatever again, and you have them all again. So if you,

27:23 at least for one password, if you go into the watchtower, there's a section that says,

27:27 show me all the sites that could have passkeys that I don't have stored passkeys for here.

27:32 And it'll help you go through and basically add them to one password, which is a form of lock-in,

27:38 but a much lower grade form of lock-in in my feeling. So anyway, I am now a believer of passkeys,

27:45 I believe. I went through and did that this weekend. I added like 35 accounts or so that have

27:49 passkeys and now life's a little easier. Like GitHub, for example.

27:52 Yeah, nice.

27:54 Yeah. All right. You have the joke for us this week, do you not?

27:58 I do. And I actually, I thought it was going to be a topic. I just had it in my backlog of how to

28:05 monetize a blog. And then I started reading it and realized this is just a hilarious joke.

28:11 And I love it. So I wanted to bring it up here. And so, and you should either, if you're listening

28:17 and not, not on YouTube, you should, watch the, watch the video version or just go check it

28:23 out yourself. I'll, we'll have link in the show notes. Okay. So how to monetize a blog.

28:28 it talks and I actually thought it was going to be advice, but it's just funny. maintaining blog

28:34 can be a lot of work. I start reading it. You don't really need to read it. there's some fun

28:38 font that shows up right away. Like, like here's a, it can become a fairly lucrative venture and the

28:44 become is in this wacky font. I love the M that's cool. and then she would get going down and you

28:50 see these various things like, like timber quest, advertisement, your lumber yard awaits you,

28:57 my Lord, play now. And almost all the, the, the clickable things, if you click on them,

29:02 they just like pop up little coins. you don't actually go anywhere. and then

29:07 talks about slapping this bad boy here can start raking in some cash through true primary

29:13 means CPM or CPA. And, and then you just sort of, if it's sort of seems reasonable, but it says,

29:20 look, look, how am I doing so far? I've, I've made 0.123 cents, so far on this. and then,

29:27 you, it, it just adds it up. There's different various, various little links around that.

29:34 If you click on them, it increases the, how much money this person's made, even though it's not real.

29:38 but if you, I just started reading the ads, like there's an ad for minimal effort graphic design,

29:45 no proofing time saved. The ads are hilarious. Here's one, free cruise, sign up today,

29:54 with eligible purchase meeting or exceeding value of cruise after which no purchase is necessary.

30:02 of course, click on that guy for some extra, let's see, I'll read one. The more clicks and grizzly bear sales,

30:10 you can squeeze out of your beloved readers, the more of their money you can siphon to spend on cheeseburger deliveries.

30:16 And of course, cheeseburger deliveries is clickable.

30:19 It's gotta be an affiliate link, right?

30:20 Yeah. All these things. let's see.

30:24 here's a little, a little weird thing, ad on the side that looks like a Amazon or eBay thing.

30:31 Friendship assembly, 1595 collapsible by valve, and a, that which molts beneath enclosures.

30:39 Oh, boy. This is bizarre. I love these. I want to scroll down more literal snake oil, vials of freshly squeezing,

30:47 squozen oil from actual snakes. befriend a sandwich. No doctors allowed. The first mystery grab bag of unmarked vitamins is free.

30:56 oh, and then it pops up. We get a pop-up, push notifications. Would you like to enable push notifications

31:04 so you can receive intrusive alert messages like these outside of the browser? Yes. Or ask me later.

31:10 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.

31:19 Oh, you did. You're making some money for that. Yeah. And, a weird pop-up cheese cube burger now open. let's see.

31:27 We soon become, oh, it's too bad. You can't see this. This one is, ice cream holding tips.

31:33 there's, we have radishes that will change your life. Add, let's see. huh? Oh, these,

31:41 these are my, these are just my mind-rending god radishes. old school, excuse me,

31:47 a virus was detected on your computer. Send bitcoins. Like a Solaris window. oh, anyway,

31:56 and then you, you just sort of scroll down. It just comes, it becomes even more bizarre. You've got

32:01 side noise text. and then, the, the spiral. This is awesome. I don't even know.

32:07 So I was like, how do they do some of this stuff? It's pretty cool. It's pretty cool stuff.

32:11 That's how you monetize. That's how you do it. Yeah. If you go all the way down also in,

32:16 in the, if you actually start reading it, it says stuff like there's not actually,

32:19 you just sort of have to spew out lots of words. I didn't even edit this. and then

32:24 way at the bottom, there's a credits, how this was made. And then, this person goes through and

32:29 walks through, basically all of the different, procedures for how, like how to do the spiral,

32:35 how to do the cool font, and all these sort of tricks, with HTML and CSS and whatnot. So

32:42 anyway, just a hilarious little, blog on stupid ads. that's awesome. Andre out there says,

32:49 this is art. It's definitely art. Yeah. Not art, but real time followup. Bitwarden also supports

32:56 pass keys, which Bitwarden being open source and the paid version is insanely affordable. It's like

33:04 a dollar, a couple of dollars a year or something. I can't remember exactly what it is, but maybe that's

33:08 the proper recommendation there, for, for pass keys. But anyway, okay. Cool. Yeah. Cool. Yeah.

33:14 Well, let's call it a show, huh? Yeah. Sounds good. All right. Well, thanks for being here.

33:18 Thank you everyone for listening.


Want to go deeper? Check our projects