We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode #438 Motivation time

#438 Motivation time

2025/6/30
logo of podcast Python Bytes

Python Bytes

AI Deep Dive AI Chapters Transcript
People
B
Brian Ocken
M
Michael Kennedy
Topics
Brian Ocken: Trey Hunner的Python Morsels网站提供了一系列有用的Python速查表,涵盖了字符串方法、内置函数、F字符串、Pathlib模块以及大O符号等主题。其中,F字符串速查表可以帮助开发者快速查找格式化数字的方法,Pathlib模块速查表则提供了读取和写入文件内容的便捷方式。此外,Python的迷你命令行实用程序也十分实用,例如http.server可以启动一个简单的HTTP服务器,json.tool可以格式化JSON输出,calendar可以打印日历。在Windows上,还可以使用Python的命令行工具来访问zip、gzip和tar等实用程序。 Michael Kennedy: F字符串的格式化技巧非常丰富,可以进行零填充或空格填充。Pathlib 模块有很好的文档,但一个简洁的速查表也很不错。

Deep Dive

Shownotes Transcript

Translations:
中文

Hello and welcome to Python Bytes where we deliver Python news directly to your earbuds. This is episode 438 recorded.

June 30th, 2025. I am Michael Kennedy. And I am Brian Ocken. And this episode is brought to you by the amazing folks over at Posit and Posit Connect, their data science execution and hosting platform, and a bunch of other things, which Brian will tell you about shortly. But for now...

If you want to connect with us, you can do so over at Mastodon or Blue Sky or to a lesser degree even on X, although that place has not got as much action these days, sadly. But yeah, connect with us over on social. Join us on YouTube right now.

We're recording live. We typically do that at 10 a.m. on Mondays, a few minutes after 10. We sort of get stuff ready, and when we got it all set, we push go. So you can find out more about that and get notified and subscribe.

you know, crush the bell, all that sort of stuff over at pythonbytes.fm slash live. And if you want an extra additional insights into the episode and the tools and topics we cover, sign up, become a friend of the show by joining our mailing list. And Brian will send out an awesome email that not just lists what we talk about or have in the show notes, but way more. It's really, really good. Right, Brian? Yeah, I like it a lot. I do too. I'm really liking where it is these days. I enjoy reading it.

Would you say it's cheating though? Do you feel like it's cheating? It's definitely cheating. No, cheating is okay sometimes. It is. All right. So let's hop into the first topic. On the Python Morsels website, this is Trey Hunter's website.

blog and thing. I'm not sure what you call it. Anyway, it's a training sort of thing. He's got a whole bunch of articles about, he pulled together a list of all of his cheat sheet articles. And I kind of love this. So there's some of these that I'm going to pull out a few of my favorites, but so Trey Hunter's cheat sheets, we've got Python string methods, built-in functions in Python and

F-strings, converting a string to a date time, pathlib, even big O notation. Nice, the time complexities of different data structures. That's cool. Anyway, some of these are through, you have to pay to be part of a service to watch some of them, but some of them are free. I'm going to highlight a couple of the free ones. Python F-string tips and cheat sheets. So this is, so we all love F-strings, but sometimes I can't remember what,

all the different formatting stuff, like formatting numbers. So this is good to have just some cheat sheets. Like how do-- if you want to do zero digits or zero digits or prefix, like you want to have-- if you're going to do money, you want .00 or something.

And so how do you do that? It's 0.2 F. Nice. But it's like the variable, then colon 0.2. Anyway, I'm not going to try to describe it on the podcast, but having all of this in here. And then occasionally you want like zero padding or space padding or something. And so it's good to look up how to do that. It's got a whole bunch of stuff. Space. Oh, space padding. Yeah. Neat. Yeah.

Yeah, those little tricks and formatting tips that go into the F strings or string.format or whatever. Yeah. Those are amazing and they're super rich. There's a lot you can do with them. I didn't know you could do thousand separator. That's neat.

That's cool. Yeah, I do that all the time. And I combine it. I'll do comma, point, two, F, and it'll do two decimal places. Oh, nice. OK. So F strings, cheat sheet, that's great. Another one, Pathlib module. Now, Pathlib actually has got really good documentation. But a cute, nice little cheat sheet is pretty cool.

You know, how do you read all the text of a file? And this, I like this table format. This is easy, pretty easy to read. Read all the contents of the file, write file contents.

Ooh, you can just write text with new creates a new file. I didn't know you could do that. That's cool. Um, uh, resolving a path to, to the full path. Um, uh, getting the, uh, getting the file, getting the file name is path dot name. But if you just want the suffix, there's path dot suffix. And these are all, this makes sense. It's just, you know, what, uh, like, yeah. How,

What is it? What is the thing that Pathlib decided to use that was obvious? It's not always obvious. So cool cheat sheet there on Pathlib. The other one I want to point out is Python's mini command line utilities. And those are things that you just say, like just built into Python, you can say Python dash M and then the thing. And it's usually an internal standard library thing. But if you just run it by itself,

Some things you can... There's a bunch of stuff you can do. I was...

There's a general purpose that the general purpose ones we like a lot of people know that you have HTTP dot server does a thing. But JSON tool is kind of nice. You can do you can do JSON tool to kind of print out some JSON nicely. Calendar is a nice cheat sheet for just being able to print out a calendar and figure out when like and you can give it a date. If you just do calendar, it'll print today, but you can give it a special date and it'll

print that out if you're trying to figure out, wow, in 1986 was April 3rd on Monday or, you know, you can do things like that. And my favorite is especially handy on Windows section because I kind of grew up on Solaris actually, but Unix environments. And so, but I spend my days on a Windows machine. So I get

like sad if I don't know where zip or gzip or tar are and things like that. I don't really use tar that much these days. But you can use these things directly from Python if you have Python installed, like Python dash mg zip, and you can use you can have zip and unzip utilities. This is great FTP. So many things that are just standard on Linux. You can't that aren't on Windows, you can install them. But if you have Python, you already have them installed. So that's pretty neat.

Anyway, those are some fun cheat sheets. There's a bunch of others too. So thanks, Trey, for pulling all of these together. - Yeah, those are pretty cool. And the CLI tools, there's a lot of them. - Yeah, there really are. This is a big article. So yeah, I think we've covered it before, but-- - I think so. But now it's grouped in with all the other things. - Yeah. - Indeed. All right, let's talk about, that I'm excited about,

automatisch so automatisch automatisch is automatic in german and this is a tool called which is an open source alternative to zapier so automatisch helps you automate your business processes without coding they have a you can sign up for this instead which is kind of just like zapier so you know i mean good for them and all but

The real reason that it's interesting to me is you can self-host it. Ooh, okay. Yeah, so this is not a Python-built tool, but I don't really think it matters. I think it's a tool that would be super useful for people doing Python things. You know, like I want this tool to listen to...

And when somebody posts something with this word in it, I want it to call a web service that's written in fast API or, you know, something like that. Right. So yeah, it's, it's super cool. It's well loved. It's got 12,000 plus GitHub stars. And if you've used Zapier, it feels a lot like it. You know, you go in there and say like this thing they have on the homepage. That's like, well, when somebody posts something on Twitter, then I want you to do something in Slack.

All right. Maybe if somebody posts something that talks about our brand, then post into the marketing Slack. Right. I don't know. Just making stuff up. Right. So super cool. It says it's great for companies that are dealing with sensitive data. If you're in healthcare or finance, or if you're based in Europe and you were subjected to the GDPR, honestly, most people are, if you have European customers as well, it's only don't interact with Europe. Are you not really? And you don't want to share that information with cloud services. It's a Docker compose up.

and you've got your own Zapier, which I think is pretty cool. It's open source.

doesn't have really that much vendor lock-in. I mean, there's some lock-in to the app, but not into them per se because you have the source code, I guess is the motivation. If you go look at all the integrations, there's quite a few. Airtable, AppWrite, ClickUp, Datastore, DeepL, Discord, Disqus, you know, Flickr, how about that? GitHub, GitLab, Google Calendar, and so on, right? Quite a few things you can connect with into, out of, RSS, and so on. Web,

Webhooks, which is the one I was talking about, right? Yeah. That's kind of your call my Python code when something in one of these other things happens or vice versa. What do you think? Kind of cool, right? Yeah. That was pretty neat. Yeah. And all you got to do is it comes with the Docker config already. And they do some pretty nice tricks, actually. So they've got a Docker compose file, like I said. And they have a Docker image, an automatic IO image.

which it's just based on. So you don't even really have to build it. You just, you know, pull the thing. And once you have it, you're, you're good to go and you run it. And one of the things they do, I thought just, you know, people who are in the Docker land to the Docker compose endpoint or entry point rather runs this shell script. And the shell script actually goes and it looks and it says, if you don't have a dot E and V file already set up, like if you didn't set one and copied over, it'll do things like set up random SSH or,

rather encryption keys and webhook secrets and other types of things. And then it'll write that for you. So if you don't have an environment file, it'll make it and then it'll like move it over and use that as part of your execution. So it kind of handles some of that setup that you always have to do. And you're like, it'll say, enter your secret here. Make sure you randomize this. Don't leave it the default or you might get hacked. You know, that kind of stuff. Yeah. I just thought that was kind of a cool little technique they're doing. I just saw like, I don't know, on Blue Sky, I think somebody commenting that

instead of a

putting their API keys in their source code, they changed the name to, this is not my API key. - Nice. - Not really good. Looking at the plans though, the open source doesn't have any limits. So the, like for instance, Zapier has a free plan also, but it's limited to how much you can use it, but a hundred tasks per month, but the open source has no limit.

on the automat-ish. Yeah, that's super cool. So yeah, like I said, I think you just, if you want, you can just run this on your own server and it does its own thing. It looks pretty vibrant, right? It's got almost 1,000 forks, 12,000 stars. It seems like it might be worth checking out if this kind of thing is something you're looking for. I haven't decided if it is for me or not yet, but I kind of want to play with it. So I was curious, like a number of forks, is that like, is high good or? I think so. Well, to me, the number of forks is,

indicates in a healthy project, how many people want to contribute back? Because if you're going to fork it and then PR do a PR back, you, you can't do it directly. Like how many contributors? There's not that many, maybe like save it. But you know, if you're doing this for your business, you probably fork it. Like we just need a copy just in case. I think where it might be a bad, bad thing is where there's been like a, a big reaction to like a change in an open source license or something. And people are like, I'm going to grab it.

it real quick while you know what i mean like i'm thinking of redis or some other other things where there was like drama you know what i mean i don't know that there's any drama about this i haven't heard of any drama so i was just thinking about that like the forks because uh the yeah like you said it's you have to fork it to contribute or and some people fork it just to play with it um but then also uh

That doesn't mean that there's 800 supported forks. They're just people. Oh, no. Yeah. For me, there's kind of two reasons I fork stuff. One, because I want to contribute. Or two, I'm like, this is really important. What if it were just to go away for some random reason? I just want to copy. You know what I mean? Oh, yeah. Yeah. All right.

Yeah. Cool. So those are the two, right? Like I might fork court and flask because TalkPython is based on those things. All right. And I don't really necessarily need to contribute to them, but I kind of just want to have a copy, you know, because it's so important. Yeah. I guess that would be a way to pin it as well if you're just pulling your own fork. Anyway, we're kind of getting on tangent. No. No.

No way. Let's bring it back. All right. Well, let's thank our sponsor, Posit Connect. This episode of Python Bytes is brought to you by the folks at Posit.

Posit has made a huge investment in the Python community lately. Known originally for RStudio, they've been building out a suite of tools and services for Python. Today, I want to focus on hosting your Python-based data science workloads. This includes dashboards, reports, plots, interactive web apps, all the way to custom Flask and Django apps. Their service is Posit Connect. Posit Connect makes it easy for a data scientist to

to share work built on Python code. If you have a Streamlit app dashboard, Plotly interactive plots, or fast API service, or even a Quarto report, just give PositConnect the code it needs to maintain the asset and Connect automatically does the rest. Connect will manage your APIs and serve your interactive apps. If, and if desired, update your ports and dashboards on a scheduled basis. That's cool. That's right.

No more need to explain to the stakeholders why the dashboard or plot stopped updating last week. You get to focus on your data science and leveraging your skill set while Connect makes you look good, keeping your code running in private. With Connect, you get a private URL on your Connect server, ensuring that your asset is continuously available to your stakeholders. You can control which users have access to the asset. Let PositConnect handle the delivery and DevOps involved

in sharing your work. You focus on what you do best. So if you work on a data science team, you owe it to you and your organization to check out PositConnect. Visit pythonbytes.fm/connect today and get a three month free trial and see if it's a good fit.

That's pythonbytes.fm slash connect. The link is in your podcast player show notes. Thank you so much to Posit for supporting Python Bytes. Definitely. Thank you, Posit. Very cool service. All right, Brian, you probably don't remember Murect, but it is something we covered way back in 2022. M-U-R-E-Q, as in mu, the micro symbol in science. Yeah.

And the idea of that was we're going to have the minimal, the most minimal version of request the library as possible. So that's fun. And it's really cool for times you don't want to have external dependencies and just copy the one file into your project or just take it.

take the code and jam it at the end of your project or however you want to do it. Right. Yeah. So Harold Martin sent us a note today. I have updated this project forked, I believe, and created a new one updated for Murex typed. So it's like the Murex, but very deeply typed and type checked. Right. So it's not only type checked, it's type checked with my pie with pyre fly and tie TY rather. So yeah,

That's pretty modern to be type checked with the two major type checkers we talked about recently, right? Yeah. Cool. Yeah. Yeah. So like, why do you care about this? Well, like I said, it's a single file, zero dependency alternative to requests, but works on modern tooling. You can open it up. It's literally murex.py and you just copy this puppy in. But if you just look in here, you can see, you know, like the

The default timeout is a colon float. And the headers are a mutable mapping of string string or an HTTP message. And there's like, you look at the typing, like there's some of these down here that are pretty gnarly. Yeah.

I'm glad I didn't have to write them like this yield response as headers or a list of tuples of strings of strings, or it could be none with a default of none and so on. Right. So pretty neat that this is put together by Harold. And I like the idea of it. I think this is something that we're going to see more of in Python, not because people are necessarily seeking out stuff like Murex dash typed.

Although if it already exists, you might as well, right? But because I think LLMs are going to encourage people to go really just need to call the one function. I know it's this huge library and it does all these things, but I just hate chat. Give me a function. Does this, does it work? All right. No dependencies, all that kind of stuff, right? So there's a couple of cool benefits to not having dependencies that you have to worry about. And by the way, it's the same API as requests. So if you have requests, you could use this. You could,

Just change the import statement. Or you could even do import murect as requests and then don't touch the rest of your code. You know what I mean? So it says, why do you even care about this? Well, apparently it's quite a bit better in terms of memory usage. So like standard Python, 7.4 megs to run on, I don't know,

apparently Ubuntu on AMD 64. But if you go and run Murex and you import it, it kicks up in some more libraries. Do an actual function call. It's 15 megs. But if you do the same thing with just importing requests, it's like almost double. It's like import requests...

basically adds, quick math, 14 megs here, what otherwise would be 7 megs of memory usage, right? And if you make a request, it's then, you know, 3 more megs, which is not a ton a lot of times, but, you know, if it's something you care about, it is a lot less. And basically, Harold points out here, like, there's a lot of stuff that has happened inside of Python to make it better in terms of these things like for example,

For example, PEP 476, which began validating TLS certificates inside of Python's libraries. And Python 3 has HTTP.client, which does a bunch of similar stuff. So it's pretty easy to wrap that in the same API, is what he's saying. And finally, no supply chain attacks. You can get this one file, validate it, put it in there, and then it's not going to get updated. It's backslidden.

about 500 lines of code. So it's not super long, and a good chunk of that's typing and documentation. Cool. Yeah. Anyway, I thought I'd give that a shout out because I'm all about having nice typed libraries to work with. And I like this idea of vendoring in. You really just need a simple little thing. Just vendor in something if you can.

Pretty good. Yeah. It's the opposite of left pad. Remember left pad, right? Yeah. Yeah, with the JavaScript thing that took down like the world. But no right pad. I don't know. What's up with that? So left pad, let's see. When was this? I think this is the same guy. I think he got ultimately, yeah, it's got its own Wikipedia page. This guy took down the left pad package. Like there was a separate package you got to left pad a string. Yeah.

So I just sit it right in the job, you know, NPM install left pad basically or NPM and what they say to your dependencies, right? Guy got mad that people were taking advantage of his open source work and deleted it or something like that.

And it just, it took down, like it took down react. Facebook, PayPal. Yeah. This caused a widespread disruption as technology corporations, small and large, including Facebook, PayPal, Netflix, and Spotify use a left pad. Their software products could no longer build their packages. I mean, it's bad. Is this, there was another guy who,

who also got arrested for creating a bomb. And I'm not sure if this is the same guy. Maybe that was a Python guy. One of these guys that like did something like this also. It might be a sign of like an unstable situation. But anyway, it's kind of funny and kind of just over like the most extreme example you can look at. But stuff like this, this vendering in for these simple things is like, okay, you're no longer subjected to that weirdness. All right.

I guess the opposite side is if there were a security vulnerability in the code, not malicious necessarily, but something they missed and they update it, you're not going to get that fix either. So you got to consider those things.

things, but being a wrapper on the built-in HTTP dot client's probably fine. Interesting. I was just looking up our history. You can search Python bytes. And even though left pad happened like in 2016, the same year that we started Python bytes, that term doesn't show up in our, until 2021, four years ago. So interesting.

Interesting. I wonder what I might've been talking about. Probably we were talking about something analogous like this, right? Like we're not covering left pad, but like it's a left pad like thing. Left pad so bad. Probably. Yeah. Yeah, probably. Anyway. Cool. Yeah, indeed. All right. Last one for you. Yeah. I want to talk about, um,

command line interfaces, actually not command line interfaces, really shells. So Frank Wiles posted my CLI world and, and he's talking about like, um, uh, shell customizations, uh,

Let's see. He says, when I was first starting out, I spent a bunch of my time SSH into a remote server. So didn't customize his shell that much. But now he's mostly doing web development on a local laptop, which I realized that it's a big change for me too. I am not SSHing in very much anymore.

so customizations are easier so i kind of love these sorts of articles of like these are the customization customizations i use but he also listed a bunch of cool tools um that he um he's using so i am actually kind of jealous he uses a starship for the prompt and he's got all sorts of stuff in here look and uh this is like what branch he's looking at uh what

what version of the whatever package he's in um which python version he's using in his virtual environment this is kind of nice i tried i tried tried starship and something about my setup it slowed my shell down too much so i'm not using starship anymore but um i wanted to to pop over not go through his full article but talk about some of the things he brought up um

direnv, D-I-R-E-N-V is one of the tools. And this is to, before each prompt, direnv, D-I-R-E, however you pronounce that, checks for the existence of environment RC files, ENVRC, and optionally .ENV files and does any settings. So like we were talking about with one of your previous tools, if you've got like a

api keys and stuff hiding in a dot env you can have that automatically loaded up um when you go into the correct directory it's kind of nice uh then uh z oxide which um uh this is definitely one that it was been on my list to try out it's um it's inspired by auto jump in z but uh this is a utility that keeps track of um

like where you've been before and which applications or which command line thing. Basically it's a smarter history sort of thing. Um, so I definitely want to, um, to try to try that out again. Uh, FD, uh, also FDs, it seems like a cool tool. Um, find entries to your file system. So it's a, uh, uh,

uh, instead of the pattern of find a name, you know, finding a name, name of a file and, and finding that somewhere, it's a better way to find stuff. And then if you're actually looking in, wanting to look at the contents, ACK, I think I'm sure we've covered ACK before. ACK is a great, uh, tool for really quickly looking for it's better than grep and said sort of things. Uh,

Another fun thing is a two-in, which I definitely want to try. It's making your shell magical, syncing your history. So having your history not... I have a problem with looking for a command that is in a different window, so it's not in the same history, or it got deleted or something. So I want to check this out for backing up my shell history. Should be fun. So he also...

in the article he refers to using just files and, uh, and, uh, for some reason, just, just dust doesn't work for me. So I guess I'll just add on that. We covered Poe, the poet. It does similar, a similar role as just. So, um, anyway, uh, another, and then he talks about some customizations like, uh, his own aliases and, um,

Even has an article for one of the a couple of the aliases, which is this is I was like, I never thought to do this as an alias, but I'm so glad that he wrote this down. So let's say you're working on a project and you before you you hop in and you know, there's been changes by some somebody else on the team. So you do a get pull and a bunch of stuff gets pulled in.

what just came in? And so there's, it's just a, you, apparently you can get it with get log with like a at,

curly brace one, something like that. I'm not going to remember that. So he made an alias that's just, um, just that, but it, it's called get pull log or get diff or pull diff. Um, does a diff basically of like what, what changed and the actual code that changed, but the log is the stuff I pulled in. What are the get comment or the commit comments for those? Um, so, uh, again, just really love the, uh, the idea of, um, of,

people writing blog posts of all of their shell customizations and sharing all the command line tools that they use. It's pretty nice. There's a lot of cool stuff there, isn't there? Yeah, I've used ZOxide. I really liked it.

I think some of the others are cool. These Git little tips are great as well. Like, I'd never remember those things either. Super weird. But yeah, you just alias stuff. And I think that's one of the tricks is like, some of these shell things are hard or complicated or even just a lot to type. But if you just put them into your profile or your B, your bash or ZSH RC file, right? Then just remember the one or two words, right? And you're good to go. Yeah. And I also...

I like the idea. So some stuff is different for different projects. So you might have like the same command. Using Just or Poe, you can have the same command do different things depending on which project you're in. The appropriate thing for that. Mm-hmm.

I wonder if you could use dir env to change what the same command means per directory. Like maybe something is built using make and another thing is built using, I don't know, po or something, right? And you could just have like the word build, do whichever it is. But if you're in that directory, it looks up and says, okay, that means call make in this case. Otherwise it calls, you know, wouldn't that be neat? Yeah.

Yeah. Cool. Cool. Yeah. Very neat for people out there who are like, I'm kind of not very comfortable in the terminal or I don't like being in the terminal. Look at stuff like this. If you just open up a bare bash shell or a bare power shell or whatever, that is not a nice experience. But if you put a bunch of these little cool extensions and add-ons and make it your own, all of a sudden it's not just not bad, it's delightful. Right. And so I think especially people who are kind of beginners listening, like look into this stuff. Yeah.

Yeah. I always get thrown when I, I assume VI mode or VIM mode and, and it's usually not the default. So my, my big tip is set dash OVI and then it works. There you go. Yeah. If that's what you're expecting, definitely do that for sure. Yeah. All right. You got extras. I got no extras.

I just have one extra that's kind of out of the blue. It's a completely and now for something completely different sort of thing. An article my wife shared with me, which I thought was fun. It's on the fizz.org website. It's a new theory proposes time has three dimensions with space as a secondary effect.

Anyway, it's a fun read about possibly three-dimensional time, kind of like we have three-dimensional space. And it's an interesting read. Kind of a fun picture, too. And I do like that I'm seeing this now. People are actually fessing up when they have an AI-generated image as a credit. A lot of times they don't need to fess up. You're like, yeah, it's AI-generated. But...

When it looks photorealistic, then that's really cool. Yeah. So anyway, just a fun read about some physics. I saw this title go by. I haven't read it, but yeah, this,

Boy, something like that were true. How insane is that? Like time is just so weird anyway. I also saw one that gravitation could be some kind of knock-on effect from like quantum mechanics. Like there's some really wild theories going on right now, but we will see. We will see. Yeah. Yeah. All right. All right. Well, oh wait, I have a quick follow-up before you do the joke. Okay. Let me do the quick follow-up here. People don't know we have a search engine. I went in here and I typed into our search engine by the name of Queens.

What did I type? Queens and then Packet? I can't remember. Now I've forgotten.

Anyway, running a quick little search, I came up with Python on the Beach, the one where you came in, dialed in from Hawaii, which is awesome. But if you go down to the extras, this is what I was hinting at, and this is not the same person. So this is a totally different, not a left pad incident, a left pad like thing. So Marek Squires, who had taken a couple of his packages and like done some sort of

supply chain attack or at least sabotage. Also, also, this is a post that says, hey, Brian Krebs, I just noticed that this guy, Marek Squires, seems to be the same fellow that sabotaged two of his own popular open source libraries last week, KellerJS and FakerJS. Remember that? And the article is, resident of Queens home suspected in bomb making materials charges being taken away.

taken away it looks like maybe even it blew up i don't know there's some kind of emt thing going on yeah so i think i searched for um npm and queens because i knew the guy was from queens so not the same person but the same category of things did he open source his bomb design though i hope not

I definitely hope not. All right. Okay. What do we got for our jokes? So for a joke today, I'm just actually going to, we're going to have a reading. So, um, uh, uh, gather around boys and girls. Yeah. Not too long ago was father's day. I don't remember when. Um, but, um, I got a gift for my kids and it was this book called, um, I'm going to hold up just disappointing affirmations. Um, and, um,

There's a lot of them are not safe for work. I'm going to read some of the some of the safer work ones. I just have a full pull a few pulled out. Here's it right here. I have to turn it around to be able to read it. But you are always just a moment away from your next worst day ever or your next best day ever. But let's be realistic. Let's see. Here's another one. You can be you can be anything you want. And you

you keep choosing and yet you keep choosing to be you i admire your dedication to the role and they're all like with these nice uh these nice nice pictures yeah like over the motivational background pictures like yeah the sun setting last one um oh today i am letting go of the things that are holding me back from the life i want to live then i'm picking them all back up again because i have separation anxiety

I love the funny things. I'll put a link to the book and not with any sort of like kickback link, just a link to the book. Just a plain old link. Just a plain old link. Sweet. Yeah, that's really good. I love those things. Those are funny.

I haven't seen the whole book, but it definitely appeals to me. I know there used to be, I think they're still around, the demotivator posters, right? Like the motivational posters. They have the demotivators and they're a similar thing in like poster form. Yeah. By a company called Despair Inc., I believe is what the name of the company is. And it reminds me also way back in SNL. I don't remember which genre of SNL, but SNL had Deep Thoughts by Jack Handy.

And, um, and I always thought Jackie, that was like a made up thing, but apparently that's the, it was one of the writer's names was Jack candy. So it wasn't. Okay. Awesome. That's good.

Well, very funny. Thanks for the joke. All right. And thank you to everyone for listening. If you're here live, thank you for being here live. And if you watch us on YouTube, be sure to subscribe to the channel to get these all the time. We have all of them recorded and available for you and subscribe or follow. We had to change the words on podcast, didn't we? Subscribe or follow the podcast. I subscribe sound like money, but just follow it. It's free on your podcast player, whatever the button is. If you're not subscribed to it. See you all later. Thanks. Bye.