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

#438: Motivation time

Published Mon, Jun 30, 2025, recorded Mon, Jun 30, 2025
Watch this episode on YouTube
Play on YouTube
Watch the live stream replay

About the show

Sponsored by Posit: pythonbytes.fm/connect

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: Python Cheat Sheets from Trey Hunner

Michael #2: Automatisch

  • Open source Zapier alternative
  • Automatisch helps you to automate your business processes without coding.
  • Use their affordable cloud solution or self-host on your own servers.
  • Automatisch allows you to store your data on your own servers, good for companies dealing with sensitive user data, particularly in industries like healthcare and finance, or those based in Europe bound by General Data Protection Regulation (GDPR).

Michael #3: mureq-typed

  • Single file, zero-dependency alternative to requests. Fully typed. Modern Python tooling.
  • Typed version of mureq (covered in 2022 on episode 268)
  • Intended to be vendored in-tree by Linux systems software and other lightweight applications.
  • mureq-typed is a drop-in, fully API compatible replacement for mureq updated with modern Python tooling:
  • Type checked with mypy, ty, and pyrefly.
  • Formatted with black, no ignore rules necessary.
  • Linted with ruff (add these rules for mureq.py to your per-file-ignores).

Brian #4: My CLI World

  • Frank Wiles
  • Encouragement to modify your command line environment
  • Some of Franks tools
  • Also some aliases, like gitpulllog
  • Notes
    • We covered poethepoet recently, if just just isn’t cutting it for you.
    • I tried to ilke starship, bit for some reason with my setup, it slows down the shell too much.

Extras

Brian:

Joke:

  • Brian read a few quotes from the book

    Disappointing Affirmations, by Dave Tarnowski

    • “You are always just a moment away from your next worst day ever. Or your next best day ever, but let’s be realistic.”
    • “You can be anything you want. And yet you keep choosing to be you. I admire your dedication to the role.”
    • “Today I am letting go of the things that are holding me back from the life that I want to live. Then I’m picking them all up again because I have separation anxiety.”

Episode Transcript

Collapse transcript

00:00 Hello and welcome to Python Bytes, where we deliver Python news directly to your earbuds.

00:06 This is episode 438, recorded June 30th, 2025.

00:12 I am Michael Kennedy.

00:13 And I am Brian Okken.

00:14 And this episode is brought to you by the amazing folks over at Posit and Posit Connect,

00:21 their data science execution and hosting platform, and a bunch of other things, which Brian will tell you about shortly.

00:29 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.

00:39 Although that place has not got as much action these days, sadly.

00:44 But yeah, connect with us over on social.

00:46 Join us on YouTube right now.

00:50 We're recording live.

00:50 We typically do that at 10 a.m. on Mondays, a few minutes after 10.

00:56 we sort of get stuff ready. And when we got it all set, we push go. So you can find out more about

01:01 that and get notified and subscribe, you know, crush the bell, all that sort of stuff over at

01:06 pythonbytes.fm/live. And if you want an extra additional insights into the episode and

01:13 the tools and topics we cover, sign up, become a friend of the show by joining our mailing list.

01:19 And Brian will send out an awesome email that not just lists what we talk about or have in the show

01:23 notes, but way more. It's really, really good. Right, Brian?

01:26 Yeah. I like it a lot.

01:28 I do too. I'm really liking where it is these days. I enjoy reading it. Would you say it's

01:32 cheating though? Do you feel like it's cheating?

01:34 It's definitely cheating. No, cheating is okay sometimes.

01:37 It is.

01:38 All right. So let's hop into the first topic. On the Python Morsels website, this is Trey

01:44 Hunter's blog and thing. I'm not sure what you call it. Anyway, it's a training sort of thing.

01:50 He's got a whole bunch of articles about, he pulled together a list of all of his cheat sheet articles.

01:55 And I kind of love this.

01:56 So there's some of these that I'm going to pull out a few of my favorites.

01:59 But so Trey Hunter's cheat sheets, we've got Python string methods, built-in functions in Python,

02:07 fstrings, converting a string to a date time, pathlib, even big O notation.

02:12 Nice.

02:13 The time complexities of different data structures.

02:15 That's cool.

02:16 Anyway.

02:18 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.

02:24 I'm going to highlight a couple of the free ones.

02:26 Python F string tips and cheat sheets.

02:29 So we all love f-strings, but sometimes I can't remember all the different formatting stuff like formatting numbers.

02:36 So this is good to have just some cheat sheets.

02:39 Like how do, if you do want to do zero digits or zero digits or prefix, like you want, you

02:46 want to have like, if you're going to do money, you want dot zero, zero or something.

02:50 And so how do you do that?

02:51 It's point two F nice.

02:53 Or, but it's like the variable and then colon point two.

02:57 Anyway, I'm not going to try to describe it on the podcast, but having all of this in

03:01 here and then occasionally you want like zero padding or space padding or something.

03:05 and so it's good to look up how to do that.

03:09 It's got a whole bunch of stuff.

03:10 Space padding, yeah.

03:12 Neat.

03:12 Yeah, those little tricks and formatting tips that go into the f-strings or string.format or whatever,

03:21 those are amazing and they're super rich.

03:23 There's a lot you can do with them.

03:25 I didn't know you could do thousands of separator.

03:26 That's neat.

03:27 That's cool.

03:28 Yeah, I do that all the time and I combine it.

03:30 I'll do comma 0.2 F and it'll do two decimal places Oh, nice groups.

03:36 Okay.

03:37 So f-strings, cheat sheet, that's great.

03:40 Another one, Pathlib module.

03:42 Now, Pathlib actually has got really good documentation, but cute, like a nice little cheat sheet.

03:49 It's pretty cool.

03:49 So, you know, how do you read all the text of a file?

03:53 And this, I like his table format.

03:55 This is easy, pretty easy to read.

03:57 Read all the contents of the file.

03:59 Write file contents.

04:02 Ooh, you can just write text with new.

04:04 Creates a new file.

04:04 I didn't know you could do that.

04:06 That's cool.

04:08 Resolving a path to the full path.

04:11 Getting the file name is path.name, but if you just want the suffix, there's path.suffix.

04:19 And these are all, this makes sense.

04:20 It's just, you know, what is it?

04:25 Like, what is the thing that Pathlib decided to use that was obvious?

04:29 It's not always obvious.

04:31 So cool cheat sheet there on Pathlib.

04:33 The other one I want to point out is Python's mini command line utilities.

04:38 And those are things that you just say, like just built into Python, you can say Python

04:42 dash M and then the thing.

04:45 And it's usually an internal standard library thing.

04:48 But if you just run it by itself, some things you can, there's a bunch of stuff you can

04:52 do.

04:53 I was, there's a general purpose, the general purpose ones, we like a lot of people know

04:58 that you have http.server does a thing.

05:03 But JSON tool is kind of nice.

05:05 You can do JSON tool to kind of print out some JSON nicely.

05:10 Calendar is a nice cheat sheet for just being able to print out a calendar

05:14 and figure out when, like, and you can give it a date.

05:17 If you just do calendar, it'll print today, but you can give it a special date and it'll print that out

05:22 if you're trying to figure out, wow, in 1996 was April 3rd on Monday, or, you know, you can do things like that.

05:28 And my favorite is especially handy on Windows section because I kind of grew up on Solaris, actually, but Unix environments.

05:40 And so but I spend my days on a Windows machine.

05:44 So I get like sad if I don't know where zip or gzip or tar are and things like that.

05:50 I don't really use tar that much these days.

05:52 But you can use these things directly from Python if you have Python installed, like

05:57 Python-mgzip, and you can have zip and unzip utilities.

06:02 This is great.

06:03 FTP, so many things that are just standard on Linux that aren't on Windows.

06:08 You can install them, but if you have Python, you already have them installed.

06:11 So that's pretty neat.

06:12 Anyway, those are some fun cheat sheets.

06:15 There's a bunch of others, too.

06:16 So thanks, Trey, for pulling all of these together.

06:19 Yeah, those are pretty cool.

06:20 And the CLI tools, there's a lot of them.

06:23 Yeah, there really are. This is a big article. So yeah, I think we've covered it before, but

06:30 I think so. But now it's grouped in with all the other things.

06:32 Yeah.

06:33 Indeed. All right. Let's talk about something that I'm excited about, Automatisch. So

06:42 Automatisch is automatic in German. And this is a tool called, which is an open source alternative

06:49 to Zapier. So Automatish helps you automate your business processes without coding. They have a,

06:57 you can sign up for this instead, which is kind of just like Zapier. So, you know, I mean,

07:02 good for them and all, but the real reason that it's interesting to me is you can self-host it.

07:07 Okay. Yeah. So this is not, it is not a Python built tool, but I don't really think it matters.

07:14 I think it's a tool that would be super useful for people doing Python things. You know, like I

07:19 tool to listen to Slack. And when somebody posts something with this word in it, I want it to

07:26 call a web service that's written in FastAPI or, you know, something like that, right?

07:30 So yeah, it's super cool. It's well loved. It's got 12,000 plus GitHub stars. And if you've used

07:37 Zapier, it feels a lot like it. You know, you go in there and say like this thing they have on the

07:41 homepage that's like, well, when somebody posts something on Twitter, then I want you to do

07:46 something in Slack, right? Maybe if somebody posts something that talks about our brand,

07:52 then post into the marketing Slack, right? I don't know, just making stuff up, right? So super cool.

07:57 It says it's great for companies that are dealing with sensitive data. If you're in healthcare or

08:01 finance, or if you're based in Europe and you were subjected to the GDPR, honestly, most people are.

08:07 If you have European customers as well, it's only don't interact with Europe, are you not really?

08:12 and you don't want to share that information with cloud services, it's Docker Compose Up, and you've got your own Zapier,

08:19 which I think is pretty cool.

08:19 It's open source and doesn't have really that much vendor lock-in.

08:24 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.

08:31 If you go look at all the integrations, there's quite a few.

08:33 Airtable, AppRite, ClickUp, Datastore, DeepL, Discord, Disqus, Flickr, how about that?

08:41 GitHub, GitLab, Google Calendar, and so on, right?

08:44 Quite a few things you can connect with into, out of, RSS, and so on.

08:50 Webhooks, which is the one I was talking about, right?

08:53 That's kind of your, call my Python code when something and one of these other things happens

08:57 or vice versa.

08:58 What do you think?

08:58 Kind of cool, right?

08:59 Yeah, that was pretty neat.

09:01 Yeah, and all you got to do is it comes with the Docker config already, and they do some pretty nice tricks, actually.

09:07 So they've got a Docker compose file, like I said, and they have a Docker image.

09:12 and Automatish IO, which it's just based on.

09:15 So you don't even really have to build it.

09:17 You just, you know, pull the thing.

09:18 And once you have it, you're good to go and you run it.

09:20 And one of the things they do, I thought, just, you know, people who are in the Docker land.

09:24 So the Docker compose endpoint or entry point rather runs this shell script.

09:30 And the shell script actually goes and it looks and it says, if you don't have a.env file already set up,

09:36 like if you didn't set one and copied over, It'll do things like set up random SSH or random rather encryption keys and web hook secrets and other types of things.

09:46 And then it'll write that for you.

09:48 So if you don't have an environment file, it'll make it.

09:51 And then it'll like move it over and use that as part of your execution.

09:54 So it kind of handles some of that setup that you always have to do.

09:57 And you're like, it'll say, enter your secret here.

09:59 Make sure you randomize this.

10:00 Don't leave it the default or you might get hacked.

10:02 You know, that kind of stuff.

10:03 Yeah.

10:04 Yeah.

10:04 I just thought that was kind of a cool little technique there doing it.

10:06 I just saw on Blue Sky, I think somebody commenting that instead of putting their API keys in their source code, they changed the name to, this is not my API key.

10:21 Nice.

10:23 Not really good.

10:25 Looking at the plans, though, the open source doesn't have any limits.

10:29 So for instance, Zapier has a free plan also, but it's limited to how much you can use it.

10:37 But 100 tasks per month, but the open source has no limit on the automatic.

10:43 Yeah, that's super cool.

10:44 So yeah, like I said, I think you just, if you want, you just run this on your own server and it does its own thing.

10:50 It looks pretty vibrant, right?

10:51 It's got almost 1,000 forks, 12,000 stars.

10:54 It seems like it might be worth checking out if this kind of thing is something you're looking for.

10:58 I haven't decided if it is for me or not yet, but I kind of want to play with it.

11:01 So I was curious, like a number of forks, is that like, is high good or?

11:06 I think so.

11:07 Well, to me, the number of forks indicates in a healthy project, how many people want

11:13 to contribute back?

11:14 Because if you're going to fork it and then PR, do a PR back, you can't do it directly.

11:18 Like how many contributors?

11:19 There's not that many.

11:20 Maybe like save it.

11:21 But you know, if you're doing this for your business, you probably fork it.

11:23 Like we just need a copy just in case.

11:26 I think where it might be a bad, bad thing is where there's been like a big reaction to like a change in an open source license or something.

11:33 And people are like, I'm going to grab it real quick.

11:36 You know what I mean?

11:37 Like I'm thinking of Redis or some other other things where there was like drama.

11:42 You know what I mean?

11:43 I don't know that there's any drama about this.

11:45 I haven't heard of any drama.

11:46 So I was just thinking about that, like the forks, because the yeah, like you said, it's you have to fork it to contribute or and some people fork it.

11:55 just to play with it.

11:57 But then also that doesn't mean that there's, there's 800 supported forks.

12:03 They're just.

12:03 Oh no.

12:04 Yeah.

12:04 So for me, there's kind of two reasons I fork stuff.

12:07 One, because I want to contribute or two and like, this is really important.

12:12 What if it were just to go away for some random reason?

12:14 I just want to copy.

12:15 You know what I mean?

12:16 Oh yeah.

12:17 Yeah.

12:17 All right.

12:17 Yeah.

12:18 Cool.

12:18 So those are, those are the two, right?

12:19 Like I might fork court and flask because talk Python is based on those things.

12:25 All right.

12:25 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.

12:31 Yeah, I guess that would be a way to pin it as well, if you're just pulling your own fork.

12:36 Anyway, we're kind of getting on a tangent.

12:39 No, no way.

12:41 Let's bring it back.

12:42 All right.

12:42 Well, let's thank our sponsor, Posit Connect.

12:46 This episode of Python Bytes is brought to you by the folks at Posit.

12:49 Posit has made a huge investment in the Python community lately.

12:53 Known originally for our studio, they've been building out a suite of tools and services for Python. Today, I want to focus on

12:59 hosting your Python-based data science workloads. This includes dashboards, reports, plots,

13:05 interactive web apps, all the way to custom Flask and Django apps. Their service is Posit Connect.

13:11 Posit Connect makes it easy for a data scientist to share work built on Python code. If you have a

13:17 Streamlit app dashboard, Plotly interactive plots, or FastAPI service, or even a Quarto report,

13:24 Just give Posit Connect the code it needs to maintain the asset and Connect automatically does the rest.

13:29 Connect will manage your APIs and serve your interactive apps.

13:33 If and if desired, update your ports and dashboards on a scheduled basis.

13:38 That's cool.

13:38 That's right.

13:39 No more need to explain to the stakeholders why the dashboard or plot stopped updating last week.

13:44 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.

13:51 With Connect, you get a private URL on your Connect server, ensuring that your asset is continuously available to your stakeholders.

13:59 You can control which users have access to the asset.

14:03 Let Posit Connect handle the delivery and DevOps involved in sharing your work.

14:07 You focus on what you do best.

14:09 So if you work on a data science team, you owe it to you and your organization to check out Posit Connect.

14:16 Visit pythonbytes.fm/connect today and get a three-month free trial and see if it's a good fit.

14:22 That's pythonbytes.fm/connect.

14:25 The link is in your podcast player show notes.

14:27 Thank you so much, Deposit, for supporting Python Bytes.

14:30 Definitely. Thank you, Deposit. Very cool service.

14:33 All right, Brian, you probably don't remember Murecht, but it is something we covered way back in 2022.

14:42 M-U-R -E-Q, as in mu, the micro symbol in science.

14:50 And the idea of that was we're going to have the minimal, the most minimal version of request the library as possible.

15:00 So that's fun.

15:01 And it's really cool for times you don't want to have external dependencies.

15:05 You can just copy the one file into your project or just take the code and jam it at the end of your project

15:12 or however you want to do it, right?

15:13 Yeah.

15:14 So Harold Martin sent us a note, said, hey, I have updated this project, forked, I believe,

15:21 and created a new one, updated for murex typed.

15:25 So it's like the murex, but very deeply typed and type checked, right?

15:30 So it's not only type checked, it's type checked with mypy, with Pyrefly and Ty, T-Y rather.

15:37 So that's pretty modern to be type checked with the two major type checkers we talked about recently, right?

15:43 Yeah.

15:43 It's pretty cool.

15:44 Yeah.

15:44 Neat.

15:45 Yeah.

15:45 So why do you care about this?

15:47 Well, like I said, it's a single file, zero dependency alternative to requests, but works on modern tooling.

15:54 You can open it up.

15:54 It's literally murec.py and you just copy this puppy in.

15:59 But if you just look in here, you can see, you know, like the default timeout is a colon float.

16:04 And the headers are a mutable mapping of string string or an HTTP message.

16:09 And there's like, you look at the typing, like there's some of these down here that are pretty

16:12 gnarly.

16:13 I'm glad I didn't have to write them.

16:15 Like this yield response has headers or a list of tuples of strings of strings, or it could

16:20 be none with a default of none and so on.

16:23 Right.

16:23 So pretty neat that this is put together by Harold.

16:27 And I like the idea of it.

16:28 I think this is something that we're going to see more of in Python, not because people

16:33 are necessarily seeking out stuff like murex-typed.

16:37 Although if it already exists, you might as well, right?

16:39 But because I think LLMs are going to encourage people to go, I really just need to call the one function.

16:44 I know it's this huge library and it does all these things, but I just, hey, chat, give me a function.

16:49 Does this, does it work?

16:50 All right, no dependencies, all that kind of stuff, right?

16:52 So there's a couple of cool benefits to not having dependencies that you have to worry about.

16:58 And by the way, it's the same API as requests.

17:01 So if you have requests, you could use this.

17:03 You could just change the import statement, or you could even do import murect as requests

17:09 and then don't touch the rest of your code.

17:10 You know what I mean?

17:11 So it says, why do you even care about this?

17:13 Well, apparently it's quite a bit better in terms of memory usage.

17:17 So like standard Python, 7.4 megs to run on, I don't know, apparently Ubuntu on AMD 64.

17:24 But if you go and run murect and you import it, picks up in some more libraries,

17:29 do an actual function call, it's 15 megs.

17:32 But if you do the same thing with just importing requests, it's like almost double.

17:36 It's like import requests basically adds, quick math, 14 megs to your what otherwise would be 7 megs of memory usage, right?

17:44 And if you make a request, it's then three more megs, which is not a ton a lot of times.

17:50 But if it's something you care about, it is a lot less.

17:53 And basically, Harold points out here, there is a lot of stuff that has happened inside of Python to make it better.

17:59 in terms of these things like, for example, PEP 476, which begin validating TLS certificates inside of Python's libraries.

18:10 And Python 3 has HTTP.client, which does a bunch of similar stuff.

18:14 So it's pretty easy to wrap that in the same API is what he's saying.

18:18 And finally, no supply chain attacks.

18:22 You can get this one file, validate it, put it in there, and then it's not going to get updated.

18:26 it's about 500 lines of code.

18:29 So it's not super long and like a good chunk of that's typing and documentation.

18:33 Cool.

18:34 Yeah.

18:34 Anyway, I thought I'd give that a shout out because I'm all about having

18:39 nice typed libraries to work with.

18:41 And I like this idea of vendoring in when you really just need a simple little thing.

18:45 Just vendor in something if you can and pretty good.

18:48 Yeah.

18:48 It's the opposite of LeftPad.

18:51 Remember LeftPad, right?

18:53 Yeah.

18:53 Yeah.

18:53 With the JavaScript thing that took down like the world.

18:56 But no, right pad.

18:57 I don't know.

18:58 What's up with that?

18:59 So left pad, let's see.

19:01 When was this?

19:02 I think this is the same guy.

19:03 I think he got ultimately, yeah, it's got its own Wikipedia page.

19:08 This guy took down the left pad package.

19:10 There was a separate package you got to left pad a string.

19:14 So I just sit and write in the job.

19:16 You know, NPM install left pad, basically, or NPM.

19:20 And what they say of it, two-year dependencies, right?

19:21 Guy got mad that people were taking advantage of his open source work and deleted it or something like that.

19:28 And it just, it took down, like it took down React and some other things.

19:35 Facebook, PayPal, Netflix.

19:36 Yeah, this caused a widespread disruption as technology corporations, small and large,

19:41 including Facebook, PayPal, Netflix, and Spotify, who use a lot of bad, their software products could no longer build their packages.

19:49 I mean, it's bad.

19:51 Is this, there was another guy who also got arrested for creating a bomb.

19:57 And I'm not sure if this is the same guy.

19:58 Maybe that was a Python guy.

19:59 One of these guys that like did something like this also.

20:01 It might be a sign of like an unstable situation.

20:05 But anyway, it's kind of funny and kind of just over like the most extreme example

20:09 you can look at.

20:10 But stuff like this, this Vendorian N for these simple things is like, okay,

20:15 you're no longer subjected to that weirdness, right?

20:18 Yeah.

20:18 I guess the opposite side is if there were a security vulnerability in the code,

20:23 not malicious necessarily, but something they missed and they updated, you're not going to get that fixed either, right?

20:29 So you got to consider those things.

20:30 But being a wrapper on the built-in HTTP.client is probably fine.

20:34 Interesting.

20:34 I was just looking up our history.

20:36 You can search Python Bytes.

20:38 And even though LeftPad happened in 2016, the same year that we started Python Bytes,

20:45 that term doesn't show up until 2021, four years ago.

20:53 So interesting.

20:54 Interesting.

20:55 I wonder what I might have been talking about.

20:57 Probably we were talking about something analogous like this, right?

21:00 Like we're not covering left pad, but like it's a left pad like thing.

21:04 Left pad so bad.

21:06 Probably.

21:07 Yeah.

21:07 Yeah, probably.

21:08 Anyway.

21:09 Cool.

21:09 Yeah, indeed.

21:11 Last one for you.

21:12 Yeah.

21:13 I want to talk about command line interfaces.

21:17 Actually, not command line interfaces, really shells.

21:20 So Frank Wiles posted MyCLIWorld, and he's talking about shell customizations.

21:29 Let's see.

21:30 He says, when I was first starting out, I spent a bunch of my time SSHed into a remote server,

21:36 so didn't customize his shell that much.

21:38 But now he's mostly doing web development on a local laptop, which I realized that it's

21:44 a big change for me, too.

21:45 I am not SSHing very much anymore.

21:50 So customizations are easier.

21:53 So I kind of love these sorts of articles of like, these are the customizations I use.

21:59 But he also listed a bunch of cool tools that he's using.

22:04 So I am actually kind of jealous.

22:06 He uses Starship for the prompt, and he's got all sorts of stuff in here.

22:11 And this is like what branch he's looking at, what version of the whatever package he's in,

22:19 which Python version he's using in his virtual environment.

22:22 This is kind of nice.

22:23 I tried Starship, and something about my setup, it slowed my shell down too much.

22:30 So I'm not using Starship anymore.

22:33 But I wanted to pop over, not go through his full article, but talk about some of the things he brought up.

22:41 DIRenv, D-I-R-E-N-V is one of the tools.

22:44 And this is to before each prompt during VDR, however you pronounce that,

22:52 checks for the existence of environment RC files, ENV RC and optionally.ENV files and does any settings.

22:59 So like we were talking about with one of your previous tools, if you've got like API keys and stuff hiding in a.ENV,

23:07 you can have that automatically loaded up when you go into the correct directory.

23:12 It's kind of nice.

23:13 Then Zoxide, which this is definitely one that it was been on my list to try out.

23:20 It's inspired by AutoJump in Z, but this is a utility that keeps track of where you've been before and which command line thing.

23:33 Basically, it's a smarter history sort of thing.

23:35 So I definitely want to try that out again.

23:40 FD, also FD seems like a cool tool.

23:44 find entries to your file system.

23:46 So it's a, instead of the pattern of find a name, you know, finding a name,

23:52 name of a file and finding that somewhere, it's a better way to find stuff.

23:57 And then if you're actually looking in, wanting to look at the contents,

24:01 Ack, I think I'm sure we've covered Ack before.

24:04 Ack is a great tool for really quickly looking, it's better than grep and said sort of things.

24:11 Another fun thing is a two in, which I definitely want to try.

24:15 It's making your shell magical, syncing your history.

24:20 So having your history not, I have a problem with looking for a command that is in a different

24:27 window and so it's not in the same history or it got deleted or something.

24:31 So I want to check this out for backing up my shell history.

24:35 Should be fun.

24:36 um he also in the article he refers to using just files and uh and for some reason just just just

24:44 doesn't work for me so i guess i'll just add on that we covered po the poet it does similar a

24:50 similar role as just so um anyway uh another and then he talks about some customizations like uh

24:57 his own aliases and um even has a an article for one of the a couple of the aliases which is

25:06 This is, I was like, I never thought to do this as an alias, but I'm so glad that he wrote this

25:11 down. So let's say you're working on a project and you, before you, you hop in and you know,

25:16 there's been changes by some other, somebody else on the team. So you do a get pull and a bunch of

25:21 stuff gets pulled in. What just came in? And so there's, it's just a, you, apparently you can get

25:28 it with get log with like a, at curly brace one, something like that. I'm not going to remember

25:34 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

25:42 diff um does a diff basically of like what what changed and the actual code that changed but the

25:49 log is the stuff i pulled in what are the get comment or the commit comments for those um so uh

25:56 again just really love the uh the idea of um of people writing blog posts of all of their shell

26:02 customizations and sharing all the command line tools that they use is pretty nice.

26:06 There's a lot of cool stuff that isn't there.

26:08 Yeah, I've used Xoxide.

26:10 I really liked it.

26:11 I think some of the others are cool.

26:13 These Git little tips are great as well.

26:16 Like, I'd never remember those things either.

26:18 Super weird.

26:19 But yeah, you just alias stuff.

26:21 And I think that's one of the tricks is like some of these shell things are hard or complicated

26:25 or even just a lot to type.

26:26 But if you just put them into your profile or your B, your bash or ZSHRC file, right,

26:35 then just remember the one or two words, right?

26:37 And you're good to go.

26:38 Yeah.

26:38 And I also, I like the idea.

26:41 So some stuff is different for different projects.

26:44 So you might have like the same command using just or PO, you can have the same command do

26:51 different things depending on which project you're in, the appropriate thing for that.

26:56 I wonder if you could use dir env to change what the same command means per directory.

27:04 Like maybe something is built using make and another thing is built using, I don't know,

27:09 poe or something, right?

27:10 And you could just have like the word build do whichever it is.

27:13 But if you're in that directory, it looks up and says, okay, that means call make in this

27:17 case.

27:17 Otherwise it calls, you know, wouldn't that be neat?

27:19 Yeah.

27:20 Yeah.

27:21 Cool.

27:21 Cool.

27:21 Yeah.

27:22 Very neat.

27:22 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.

27:28 Look at stuff like this.

27:29 If you just open up a bare bash shell or a bare power shell or whatever, that is not a nice experience.

27:36 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.

27:43 It's delightful, right?

27:44 And so I think especially people who are kind of beginners listening, like look into this stuff.

27:49 Yeah.

27:49 I always get thrown when I assume VI mode or Vim mode, and it's usually not the default.

27:56 So my big tip is set-O-VI, and then it works.

28:01 There you go.

28:02 Yeah, if that's what you're expecting, definitely do that for sure.

28:04 Yeah.

28:05 All right.

28:06 You got extras?

28:06 I got no extras.

28:07 I just have one extra that's kind of out of the blue.

28:11 It's a completely, and now for something completely different sort of thing.

28:14 An article my wife shared with me, which I thought was fun.

28:17 it's on the phys.org website it's a new theory proposes time has three dimensions with space as

28:24 a secondary effect um anyway it's a fun read about uh possibly three-dimensional time like kind of

28:32 like we have three-dimensional space um and uh it's interesting read uh kind of kind of a fun

28:38 picture too and i do like that i'm seeing this now people are actually fessing up when they have an

28:43 AI generated image as a credit.

28:45 A lot of times they don't need to fess up.

28:47 You're like, yeah, that's AI generated.

28:48 But when it looks photorealistic, then that's really cool.

28:52 Yeah.

28:53 So anyway, just a fun read about some physics.

28:56 I saw this title go by.

28:57 I haven't read it, but yeah.

28:59 This or something like that were true.

29:01 How insane is that?

29:02 Like time is just so weird anyway.

29:04 I also saw one that gravitation could be some kind of knock-on effect from like quantum

29:10 mechanics.

29:10 Like there's some really wild theories going on right now, but we will see.

29:15 We will see.

29:16 Yeah.

29:16 Yeah.

29:17 All right.

29:17 All right.

29:17 Well.

29:18 Oh, wait, I have a quick follow up before you do the joke.

29:21 Okay.

29:21 Let me, let me do the quick follow up here.

29:23 People don't know we have a search engine.

29:25 I went in here and I typed into our search engine by them by Queens.

29:30 What did I type?

29:30 Queens and then packet.

29:32 I can't remember.

29:32 Now I've forgot.

29:34 Anyway, running a quick little search.

29:36 I came up with a Python on the beach.

29:39 the one where you came in, dialed in from Hawaii, which is awesome.

29:42 But if you go down to the extras, this is what I was hinting at.

29:46 And this is not the same person.

29:48 So this is a totally different, not a left pad incident, a left pad like thing.

29:52 So Merrick Squires, who had taken a couple of his packages and like done some sort of

30:00 supply chain attack or at least sabotage.

30:05 Also, this is a post that says, hey, Brian Krebs, I just noticed that this guy, Marek

30:11 Squires, seems to be the same fellow that sabotaged two of his own popular open source libraries

30:16 last week, KellerJS and FakerJS.

30:18 Remember that?

30:19 And the article is, resident of Queens home suspected in bomb making materials charges

30:24 being taken away.

30:27 It looks like maybe even it blew up.

30:28 I don't know.

30:28 There's some kind of EMT thing going on.

30:30 Yeah.

30:30 So I think I searched for NPM in Queens because I knew the guy was from Queens.

30:34 Not the same person, but the same category of things.

30:37 Did he open source his bomb design, though?

30:40 I hope not.

30:43 I definitely hope not.

30:44 All right.

30:45 Okay.

30:46 What do we got for our jokes?

30:47 So for a joke today, I'm just actually going to, we're going to have a reading.

30:51 So gather around, boys and girls.

30:54 Yeah.

30:55 Not too long ago was Father's Day.

30:57 I don't remember when.

30:59 But I got a gift for my kids.

31:01 And it was this book called, I'm going to hold up, Disappointing Affirmations.

31:09 And a lot of them are not safe for work.

31:11 I'm going to read some of the safer work ones.

31:13 I just have a few pulled out.

31:17 Here's it right here.

31:18 I have to turn it around to be able to read it.

31:20 But you are always just a moment away from your next worst day ever or your next best day ever.

31:26 But let's be realistic.

31:29 Let's see.

31:29 Here's another one.

31:31 You can be anything you want.

31:35 And yet you keep choosing to be you.

31:38 I admire your dedication to the role.

31:41 And they're all with these nice pictures.

31:45 Yeah, like over the motivational background pictures.

31:47 The sun setting.

31:49 Last one.

31:51 Today I am letting go of the things that are holding me back from the life I want to live.

31:56 Then I'm picking them all back up again because I have separation anxiety.

32:02 anyway um i love love the uh the funny things i'll put a link to the uh to the book and um

32:08 not with any sort of like kickback link just a link to the book people are plain

32:13 old link just a plain old link sweet yeah that's really good those i love those things which are funny i haven't

32:21 seen the whole book but it i it definitely appeals to me i i know there used to be i think they're

32:26 still around the demotivator posters right like the motivational posters they have the demotivators

32:31 and they're similar thing in like poster form yeah by a company called despair Inc I believe is what

32:36 the title the name of the company and and it's it reminds me also way back in uh SNL I don't

32:44 remember which genre of SNL but SNL had uh deep thoughts by Jack Handy and um and I always thought

32:51 that was like a made up thing, but apparently that's the, it was one of the writer's names was Jack Handy.

32:57 So it wasn't.

32:58 Okay.

32:58 Awesome.

32:59 Well, very funny.

33:00 Thanks for the joke.

33:01 All right.

33:01 And thank you to everyone for listening.

33:04 If you're here live, thank you for being here live.

33:06 And if you watch us on YouTube, be sure to subscribe to the channel to get these all the time.

33:11 We have all of them recorded and available for you and subscribe or follow.

33:16 We had to change the words on podcast.

33:17 Didn't we subscribe or follow the podcast?

33:19 Because subscribe sounds like money, but just follow it.

33:22 It's free on your podcast player, whatever the button is, if you're not subscribed yet.

33:26 See you all later.

33:26 Thanks.

33:27 Bye.


Want to go deeper? Check our projects