Transcript #373: Changing Directories
Return to episode page view on github00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
00:04 This is episode 373, recorded March 5th, 2024.
00:09 And I'm Brian Okken.
00:11 And I'm Michael Kennedy.
00:12 And you're just back from, where were you last week?
00:15 I was in the Philippines, hanging out in warm weather, meeting some new people, experiencing new places.
00:21 It was excellent.
00:23 Nice to have you back.
00:24 Yeah, thanks. Good to be back.
00:25 This episode is sponsored by Scout APM.
00:27 We'll hear more about them later.
00:29 If you want to connect with us or the show, we're on Fostadon.
00:33 You can go to mkennedy at Brian Okken or at pythonbytes at fostadon.org.
00:38 And if you're listening to us later, you can join us live if you want.
00:43 Go to pythonbytes.fm/live and join the audience there.
00:47 So, Michael, what do you got for us first?
00:50 Well, I have some super fun stuff.
00:54 This one is not purely a Python thing, but it sure is helpful for Python developers.
01:00 Brian, would you say that you use the terminal fair amount?
01:03 Yes.
01:05 In your world?
01:06 Yes.
01:07 As do I.
01:07 And like navigating the terminal is always a bit of a hassle.
01:10 I'm like, Michael, did you really need to have it that deep of a directory tree folder structure for this thing?
01:18 Because you're CD in this, CD in that.
01:20 Like, did you need to name the same?
01:21 So, like, tab complete doesn't really help you as much as you would want and so on.
01:26 So, I want to tell you about Zoxide.
01:28 So, Zoxide is like CD, you know, the command, one of the very first things you learn when you learn about terminals, command prompts, and so on.
01:36 But it's way better.
01:38 The oxide is because it's written in Rust.
01:41 So, that probably means it has VC funding or something.
01:43 No, I'm just kidding.
01:45 But it is backed by warp, which I've talked about before, which is also written in Rust and I believe does.
01:51 Anyway, the idea is that there's a little graphical animation.
01:56 So, the idea is once you install it into your terminal, and whatever terminal you're using, it pretty much supports that.
02:03 Okay.
02:04 Once you install it, it will start to remember all of your directory changes, at least if you use it.
02:10 And I'll tell you more about that in a second.
02:12 But if you use it to move around, like, imagine you've got a directory.
02:17 The example they're using on the screen here is something like, let's see, some long path slash foo.
02:25 You know, some slash long slash path slash foo, right?
02:28 Like a big directory structure.
02:30 You could just say CD foo, and it'll just take you into that structure.
02:34 Because it's like, all right, well, if the only directory structure I've ever seen that you actually cared to go into that involves the word foo,
02:42 is this one.
02:43 Cool.
02:44 You could say CD long, and it would take you just some slash long.
02:47 Once there's more than one, there's like a conflict, then you can do a couple of things.
02:52 You can hit space and then tab, and it'll pull up like a little autocomplete.
02:56 Or you can, instead of like the hotkey they show or the command they show is Z, you could Z for some of our folks.
03:04 You could type ZI for interactive, and it'll show you like a fuzzy completion search deal of all the history you've ever had.
03:14 You can go into kind of an interactive way to go and find the files or the paths that you've looked for before.
03:20 So isn't that cool?
03:21 It is cool.
03:22 I definitely need to check this out.
03:24 Yeah.
03:24 I've been using it for a few days, and I really like it.
03:27 So a lot of what you know about CD is the same as Z, so you can say Z dot dot.
03:33 You can say Z minus to go to the previous directory, not necessarily up one, but just wherever you were before.
03:39 Like I said, you do the ZI for the interactive or type a little bit and just space tab to pull up autocomplete.
03:45 And you can get it in a bunch of ways.
03:48 Like look at all these platforms.
03:49 Linux, macOS, Windows, BSD, even Android.
03:52 And on Mac, you can do a bunch of ways.
03:55 You can condo forge it.
03:56 You can ASDF it.
03:58 You can homebrew it.
03:59 All those.
04:00 And then look at all the different shells here.
04:02 Wow.
04:02 Yeah.
04:03 Even conch the Python-based one, but it's got the Z shell, which is what I'm doing these days.
04:09 And then if you want that interactive version, you need to install FZF, which is a command line fuzzy finder thing that you can do.
04:17 And then the thing that's interesting is like when I did this, there's no way, no way I'm going to remember to type Z.
04:24 I'm just going to type CD.
04:25 And then after a while, I'll be like, oh, I should have used Z, but it won't be in the history.
04:29 So let me just swap it out for Z, for CD.
04:32 You know, swap those.
04:33 And so what you can do when you install it, does it say on here?
04:38 Probably, maybe it does.
04:40 Oh, it's up under the configuration.
04:42 So in the shell configuration bit, you have to do this eval, zeoxide, init, ZSH.
04:48 But then you can also say --command, CMD, is some other character.
04:54 If you don't want to use Z, and if you say command is CD, then just CD becomes this thing instead.
05:02 And of course, if you don't like it, right, you just comment it out and it goes away.
05:05 Okay.
05:06 That's what I did.
05:07 That ends up showing up in one of your .files or something.
05:10 And then you can.
05:11 Yeah.
05:11 I put it in my ZSHRC.
05:13 Okay.
05:14 That file for me.
05:15 And just put that at the bottom.
05:16 You know, if I ever decide, you know what, I just want my CD back.
05:19 I could take that part out.
05:20 Or if I don't like this, I just comment that thing out.
05:22 It's pretty cool.
05:22 Yeah.
05:23 I was just thinking, I don't know if I want to type Z because that's with my pinky, whereas
05:26 CD's with my middle finger.
05:28 Then I'll probably map it to something else like E or C or something.
05:32 Yeah.
05:32 Or just CD.
05:33 Yeah.
05:34 I switch it to CD.
05:35 And then if you want to do the interactive, you do CDI.
05:37 But I think this is cool.
05:39 It's not going to change your life, but it's also...
05:42 Little extra things that make your life a little faster.
05:45 It's good.
05:47 I find it really interesting that on both Windows and Mac, Linux to some degree, but Windows
05:54 and Mac, even more, especially Mac, you open up the default terminal experience and it is
06:00 bad, bad.
06:01 It's like they want you to stay out of it.
06:04 You know what I mean?
06:04 Yeah.
06:05 So it opens up.
06:06 It's white, white background, which I don't know, for some reason, terminals, it just seems
06:10 wrong for that.
06:11 But then also it's like the wrong font.
06:13 The fonts are incredibly small.
06:15 There's not hardly anything installed to help you, right?
06:19 It's just so many levels of you can add on these little tools that just make it so much
06:24 nicer.
06:24 So anyway, I'm a big fan of this.
06:27 Before we move on, one question from the chat was, does it remember directories across terminal
06:34 sessions?
06:35 It does remember across terminal sessions.
06:37 I think it must keep a little hidden folder file or something like that.
06:41 I didn't pay attention.
06:42 But yeah, it's just you need to have interacted with it.
06:46 I'm pretty sure it does it across sessions.
06:47 Okay, cool.
06:48 Yeah, definitely check it out.
06:50 Yeah.
06:50 Speaking of command line interfaces, I'd like to talk about building them.
06:55 Oh, yeah.
06:56 So smart.
06:57 There's an article called from Raul.
07:00 I think smart CLIs with typer.
07:02 And I was like, just excited to see this because I love typer.
07:07 And I've been using both typer and arg parse a lot, actually.
07:11 When it, I guess for me, I use typer if I'm already importing other stuff.
07:17 But if it's a package or a project that doesn't have any external dependencies, then I'll try
07:22 to use arg parse because I don't want to pull in an external dependency just for typer sort
07:27 of thing.
07:27 However, but typer is really fun.
07:30 This is a cool article.
07:31 And what I was surprised by was there was a whole bunch of stuff I learned in this.
07:35 Even though I've been using it for years, there's some great things that I didn't know
07:39 about.
07:39 So there's a great article.
07:42 Check it out.
07:42 But the first thing I want to say is like right off the bat, it just talks about sort of a
07:47 comparison between an arg parse version and a typer version.
07:51 It's not hugely different, but it just talks about how typer, you don't have to like declare
07:57 your arguments.
07:58 You just have a function.
08:00 You can just have it, discover it.
08:02 You can just have a function like main and and typer figures out that all of your type
08:07 hinted arguments to that function are now arguments to your script, which is cool.
08:12 But I want to hop to the things that I didn't.
08:15 Maybe I knew about and forgot or just never knew about like how easy it is to do help.
08:20 So, well, help is actually a little easier in arg parse, but it's not that bad in typer.
08:26 You have to have to do a typer annotated thing with argument with help on it.
08:33 It's a little clunkier.
08:34 I guess just it's not that bad, but it's a lot different than the if you don't want to
08:40 help, you just have to.
08:41 It's a little bit more work.
08:42 Anyway, prompting for input.
08:44 I did not know you could do this.
08:46 So if you have like like you like you would add help, you add a prompt instead.
08:51 If it's if it's left out, what happens is typer will prompt the user for it.
08:57 So like in the example, it gives a name and an age for this little example script.
09:03 If you forgot to put an age, it'll pop up and say, how old are you?
09:07 That's that's pretty cool that you can add a really cool.
09:10 Yeah, I really like that, actually.
09:12 I'm definitely going to have to try this because that's there's a lot of times where it's good
09:17 to have like some defaults, but also.
09:19 Yeah.
09:20 Speaking of defaults, you can also add an environmental variable so that if the default doesn't have
09:26 to be hard coded, but it could be an environmental variable that you set.
09:29 And then if you didn't if you didn't add the argument, it'll pull it from an environmental
09:35 variable.
09:35 So very cool there.
09:37 What else?
09:38 It talks about explicit apps versus is it is it kind of a different way to do it and to do
09:45 a couple ways to do our typer and explicit app one is one of the ways.
09:50 One of the neat things you get with that is multiple commands.
09:53 And so there's an example of doing multiple commands.
09:56 I love that feature of of of typer.
09:59 And then as a comparison, a similar sort of a thing with our parts would have been sub
10:04 commands.
10:05 So kind of a fun article.
10:07 And then I kind of got lost in the whole reusable command thing.
10:11 But yeah.
10:12 Yeah, this looks great.
10:13 Yeah.
10:13 I didn't know about the input one or the environment variable one.
10:17 These are both awesome.
10:18 Yeah.
10:18 Cool things.
10:19 If you're if you're making your own command line interfaces.
10:21 And I also appreciated the the shout out to our parts, not like because that is the other
10:27 one.
10:28 Most people should consider either typer or arch parse, I think so.
10:32 For sure.
10:33 Andrew out there says that, yes, Z oxide does have a persistent database, as I thought.
10:39 And also asked whether typer supports the union operator, the pipe operator for types.
10:46 Not sure.
10:47 It said it didn't use to.
10:48 I'm not sure if it does.
10:49 I don't know.
10:50 I think you could run into issues.
10:52 Like if you said this is pipe int or pipe date time, like I could try to parse as a date
10:57 time, but then see the number as like a timestamp.
11:00 Right.
11:00 I can see.
11:01 I don't know.
11:02 I can see how it can be tricky.
11:03 So maybe it's by design.
11:04 I'm guessing not yet, but I guess just maybe based on the last time I tried it, because
11:09 one of the things is optional.
11:10 So you if one of the things I love about the bar for for for types is to be able to say int
11:19 or none as an optional thing.
11:21 But that's not how you do it with typer with typer.
11:24 You have to say option, like at least last time I tried it, you had to say optional int
11:28 equals none.
11:29 But actually, this is even yeah, optional makes it so it's like int or none.
11:34 So yeah, cool.
11:35 Cool.
11:36 Awesome.
11:37 Awesome.
11:37 What else is awesome, Michael?
11:39 Our sponsor.
11:40 Our sponsor is awesome.
11:41 Let's take a moment and thank them and tell you about them.
11:44 And then I'll get back to it.
11:47 Let me tell you real quick about Gout APM.
11:51 They're big supporters of Python Bytes.
11:52 So we appreciate that very much.
11:54 So if you are tired of spending hours trying to find the root cause of issues impacting your
12:00 performance, then you owe it to yourself to check out Scout APM.
12:03 They're a leading Python application performance monitoring tool, APM, that helps you identify
12:09 and solve performance abnormalities faster and easier.
12:12 Scout APM ties bottlenecks such as memory leaks, slow database queries, background jobs, and the
12:18 dreaded N plus one queries that you can end up if you do lazy loading in your ORM.
12:23 And then you say, oh, no, why is it so slow?
12:25 Why are you doing 200 database queries for what should be one?
12:28 So you can find out things like that.
12:29 And it links it back directly to source code.
12:31 So you can spend less time in the debugger and peeling logs and just finding the problems and
12:36 moving on.
12:37 And you'll love it because it's built for developers by developers.
12:39 It makes it easy to get set up.
12:41 Seriously, you can do it in less than four minutes.
12:44 So that's awesome.
12:45 And the best part is the pricing is straightforward.
12:48 You only pay for the data that you use with no hidden overage fees or per seat pricing.
12:53 And I just learned this, Brian.
12:56 They also have, they provide the pro version for free to all open source projects.
13:01 So if you're an open source maintainer and you want to have Scout APM for that project,
13:05 just shoot them a message or something on their pricing page about that.
13:09 So you can start your free trial and get instant insights today.
13:12 Visit pythonbytes.fm/scout.
13:15 The link is in your podcast player show notes as well.
13:17 And please use that link.
13:18 Don't just search for them because otherwise they don't think you came from us.
13:22 And then they'd stop supporting the show.
13:24 So please use our link pythonbytes.fm/scout.
13:26 Check them out.
13:27 It really supports the show.
13:29 Awesome.
13:30 Awesome.
13:30 Brian, have you looked into like buffer overflows and how all that kind of bad stuff happens?
13:37 It's the first time I learned about it.
13:39 It was just fascinating about how you could abuse computers.
13:42 Yeah.
13:43 Yeah.
13:44 Well, I'm in C++.
13:45 So a lot of the time.
13:47 So you basically create buffer overflow.
13:48 Yeah.
13:49 Like commonly.
13:51 Yeah.
13:52 Well, you know, C++ got the like the not just the print F, but like the safe print Fs and
13:58 other things like there was additional like checking ones to help prevent that.
14:02 Right.
14:02 But our very own NSA, who knows something about buffer overflows, I suppose, recommended
14:10 something pretty interesting.
14:11 It says this was actually a shout out to Samuel Colvin, who put this on Twitter.
14:16 I don't know.
14:17 I think Twitter needs to decide what it is.
14:19 Is it X or is it Twitter?
14:20 I mean, I know they use the word X and the symbol X, but what's the domain?
14:23 It's not X.com.
14:24 It's Twitter.com.
14:25 Come on.
14:25 So what are you?
14:26 All right.
14:26 Back to the topic.
14:27 Exeter.
14:28 Exeter.
14:28 Exeter.
14:29 I think X Twitter is the best we can do.
14:31 Anyway, he pointed out something with some interesting commentary here said the U.S.
14:37 government, specifically the NSA, looking to say, hey, maybe we should have it harder to
14:43 break into our systems.
14:44 The government explicitly recommends six memory safe languages.
14:48 Okay.
14:49 And then he also creates a bit of a juxtaposition here.
14:52 C# created by Microsoft.
14:54 And there's usually like one or two people behind this.
14:57 For example, the C# was Anders Hausberg, who also did TypeScript.
15:01 Go created by Google.
15:03 Java created by Sun.
15:05 Bought by Oracle.
15:06 Rust created Borm by Mozilla.
15:10 Swift by Apple.
15:12 And Python created by one genius on his own Christmas holiday.
15:19 Python is an extraordinary demonstration of the impact one person and the group that they
15:25 build can have on the world.
15:27 Which I think brings together two interesting ideas here, right?
15:30 Like that Python is officially one of the memory safe languages recommended that we should be
15:37 using by the NSA.
15:38 And then just the effect that Guido has had.
15:40 Yeah.
15:40 Yeah.
15:41 It's pretty wild.
15:42 I think it's interesting that I didn't really realize that Rust was memory safe.
15:47 Yeah.
15:47 That's interesting too, isn't it?
15:49 It's, it's, I think that's part of its magic, right?
15:51 How it's kind of a low level systems language, but it's way more memory safe as well with its
15:57 ownership and all that.
15:58 And then, oh my gosh, this really took off.
16:00 It must be why I saw it.
16:01 781,000 views.
16:03 But then if you look, if you look at the comments, the comments, I can't see it because I'm not
16:08 logged in, but there are many, many comments and the commentary is varied and interesting.
16:13 Down there, let me just tell you.
16:15 But yeah, I think this is interesting.
16:16 Like just one more reason to use Python or, you know, other memory safe languages as well.
16:22 But for example, in the comments, people pulling out, well, Rust was created by one person
16:26 while they were at Mozilla, but I, you know, he gets, it's maybe a little bit different
16:30 to say, you know, you were funded by this big tech company to create this thing.
16:35 And, you know, you did it.
16:36 Yeah.
16:36 Well, I mean, you have to, we have to, we're not really, I mean, I don't think Samuel's
16:40 intending to diss all the other languages.
16:42 There's, there's definitely.
16:44 No, he was more props to, to get, but if you look at all the comments, it just, it does
16:49 what you would expect a post like this to do as people like get their, you know, their,
16:55 their baby, not quite love.
16:57 Highly notable in its absence is JavaScript here.
17:01 Hmm.
17:01 Yeah.
17:02 Yeah.
17:02 Interesting.
17:03 Yep.
17:03 All right.
17:04 Well, we'll leave it there.
17:05 People can check it out, but that's.
17:06 Yeah.
17:07 So we'll also have to, I haven't looked at the recommendation, the NSA recommendation either.
17:12 So I want to check that out as well.
17:13 Yeah.
17:13 The NSA says use Python.
17:15 Use Python.
17:16 Yes.
17:17 I mean, you know, and we all listen to the NSA.
17:19 I mean, in this case too, though.
17:21 Yeah.
17:21 I thought it was the other way around.
17:24 Didn't the NSA listen to us?
17:25 No, I know.
17:25 Oh yeah.
17:26 Right.
17:27 Okay.
17:28 So I'm going to go back to the, the command line world for a moment and talk about textual.
17:35 So we've talked about texture before, well, McGuigan's, child.
17:40 So, with came from rich than textual, but, textual is over at textual.textualize.io.
17:47 So that's, a great place to look for, demonstrations and stuff.
17:51 So if you go there, there's some, some cool demos of what other people are doing with it
17:55 and some other pocket projects.
17:57 These are great.
17:57 Wow.
17:58 The Dolphy looks cool.
17:59 Anyway.
18:00 so what I wanted to cover was that it does have its own tutorials.
18:05 so if you go, go to the main page, you can go on tutorials and there's a, there's a
18:09 great, tutorial for how to use it.
18:11 There's a little timer tutorial.
18:12 It's nice.
18:13 but maybe, maybe the way that they're teaching there just doesn't fit you.
18:18 So I was really glad to see that, Mike Driscoll over at mouse versus Python has some
18:24 textual tutorials that he's started.
18:26 And, what caught my attention was the creating a modal dialogue for your two E's with tech in
18:32 textual, but he's got like four different, blog posts around tutorials around textual
18:38 right now.
18:38 So, Mike's done some great work teaching people before.
18:42 So I wanted to shout out to Mike for this.
18:44 The modal dialogue is kind of fun.
18:46 goes through a little, fairly simple example, but the code's really just not complicated
18:51 to follow along with.
18:52 So, really kind of fun, talking about how to do a mold, modal dialogue, because
18:58 that's something.
18:59 Why would, are you sure you want to quit?
19:01 I love it.
19:01 Are you sure you want to quit?
19:02 But there's other things like, are you sure you want to delete your entire repository?
19:06 and then we were, we recommend a where clause in your delete statement against the
19:11 database.
19:12 Yeah.
19:14 So anyway, good job, Mike, for, for jumping on this and helping to teach textual.
19:19 So cool.
19:20 Yeah, that's really cool.
19:21 Textuals.
19:21 Very, very interesting.
19:23 So cool.
19:24 So, all right.
19:25 Well, those are our topics.
19:26 do you have any extras for us?
19:28 I have just a couple of extras.
19:30 I'd like to go through here.
19:32 So one, you know, in Grok, we've talked about in Grok before, if you need to let people access
19:39 services, typically HTTP, but it could honestly be anything on your system.
19:44 You could run in Grok.
19:45 It's super cool.
19:46 I'll use it, pay for it.
19:47 You know?
19:48 So like I'm working on a web app and I want somebody to be able to actually interact with
19:52 it, but I'm behind a firewall somewhere else.
19:54 So you can just run in Grok, get a SS, SSL backed URL.
19:58 That's kind of some random thing that people will go to.
20:01 So that's the CLI and all that, but they've released a little while ago, in December,
20:06 they released a in Grok Python SDK.
20:09 So if you want to write apps that basically temporarily spin up ways for people to get into
20:16 systems, like maybe you're on a Raspberry Pi or you're on some IOT thing and it's locked
20:22 away somewhere, but you need for it to be able to.
20:24 People to get to it under certain circumstances or whatever.
20:28 Right.
20:28 Then here you go.
20:29 Write some code and you plug into all that infrastructure.
20:32 It's pretty cool.
20:33 That is pretty handy.
20:34 Yeah.
20:35 Yep.
20:36 I don't have a particular use case for it, but cause I just use in Grok directly, but
20:40 I'm a big fan of in Grok and I think, you know, I'm sure there's going to be some interesting
20:43 things.
20:44 You can even do a Unix sockets like Unix.sock thing, which is pretty wild.
20:48 So it gets, it gets quite, quite advanced.
20:52 All right.
20:52 What else?
20:53 Let's see.
20:54 I recently, we talked, you brought up Djangonauts a while ago.
20:57 And so I recently had, Sarah Boyce and Tushar Gupta from the Django knot program on
21:05 talk Python.
21:05 That was, I think released last week, recorded a while ago, but released last week.
21:10 And so just want to give a shout out to that since we brought it up first on the show.
21:13 Nice.
21:14 Cool.
21:14 Yeah.
21:15 Then Sarah was very excited to hear you mention it when you brought it up.
21:18 It said on the show, this show on our, on talk Python.
21:21 She mentioned that she was excited to hear it here.
21:23 So that's cool.
21:23 Also, I had a re interesting experience with my phone brain.
21:27 I was looking at my phone going, I'm not sure I really liked the color anymore.
21:30 And I've had it for a little while.
21:32 Maybe I'll get a new phone.
21:33 And then like, what is wrong with you?
21:36 Oh, it's, it's an iPhone 13.
21:37 So I've had it for a while, but you're just going to put a black case on it anyway.
21:40 Maybe you just get a different case.
21:41 And you know, it kind of doesn't hold its charge long.
21:44 So maybe just get a new battery for it.
21:46 It's like, depending on the one you got, 69 bucks, 89 bucks for a new battery, instead
21:50 of like a thousand dollars for a new phone, $5 for a new case, 90 bucks for a new battery
21:55 dropped by the Apple store.
21:56 They'll switch it.
21:57 I just want to encourage people like, Hey, you might be able to just up, you know, improve
22:00 your phone or you don't give it a different color without going over the top.
22:03 Yeah.
22:04 What do I got?
22:05 I got an eight plus that I'm using.
22:08 It still works fine.
22:10 It just changes the battery every couple of years.
22:11 Yeah, exactly.
22:12 And it's, it seems pretty trustworthy to do it at Apple, right?
22:15 They use the same battery or better.
22:17 They might not have the same old battery.
22:19 Sorry, you got to get a better one.
22:20 Okay.
22:22 Take it.
22:22 Nice.
22:23 Cool.
22:23 Anyway, that's, that's my public service announcement for people.
22:26 out there applies to Android as well.
22:28 You can get a new case for Android as well.
22:29 Okay.
22:30 Well, I have a couple extras.
22:31 One of them is a public service thing, but the first one is just a shout out to a Hinnick's
22:36 new video.
22:37 We talked about UV a couple of weeks ago, I think, or last week.
22:42 I can't remember.
22:42 And there's a video called is UV the future of Python packaging.
22:48 And it's, it's like 20 minutes, 17 minutes, but it's, it's a really kind of a nice look at
22:54 the background of really what's going on here.
22:56 the speed ups might not seem the speed.
22:59 Everything's fast.
23:00 Faster is great.
23:01 Right.
23:01 But there's more to it than that.
23:03 And, kind of about some of the future that they might be putting together after this
23:09 is, is important.
23:10 so interesting, interesting discussion.
23:13 I encourage people to check it out.
23:15 The other public service service announcement that I wanted to say was I use Venmo occasionally,
23:20 mostly to send money to and from my daughter.
23:24 but, but I didn't notice, and I don't want to show off too much, but that's
23:29 Venmo, you know?
23:30 but I was surprised when I looked at my old transactions and found that, the,
23:37 there's a feed feature where you can, where everybody that's connected to you or even not
23:42 connected to you can see everything that you've spent money on.
23:46 and I'm like, what the heck is this for?
23:48 Not this money, but like why the little message to the person and all sorts of stuff.
23:53 I don't think you can see them out, but you see that somebody paid somebody else and then
23:57 you can click on the other person and follow their feed and follow other people.
24:01 And this doesn't make sense for finances.
24:04 So, I would encourage everybody to go into your settings and just turn that to private.
24:08 Nobody needs to see that.
24:10 I don't know why there's a social feature for a money sharing app.
24:13 What?
24:14 It's horrible.
24:14 It's weird.
24:15 It's horrible.
24:15 I ended up using Venmo as well because my kids are like, dad, I'm going to Venmo you.
24:20 How about PayPal?
24:21 Venmo.
24:22 I'm like, all right.
24:22 But yeah, it's, it drives me nuts that I could see people that I was even, you know,
24:27 friends with like 15 years ago.
24:29 I still see what they're buying and who they shared lunch with.
24:31 It's just like that.
24:32 It doesn't belong in this space.
24:34 I just don't think.
24:34 So yeah.
24:35 Turn, turn the feed off.
24:36 Turn the feed off.
24:37 And also I don't think it shouldn't be on by default.
24:40 And also people don't know about it.
24:41 So other people, you know, that use Venmo, let them know that their feed's public.
24:45 So yeah.
24:46 Anyway.
24:46 Cool.
24:47 Well, that was kind of serious, but do we have something funny?
24:50 Oh, this is very serious too.
24:51 No jokes.
24:52 All right.
24:53 So here's a developer and a project manager speaking.
24:57 The developer starts out and says, I can ship this feature that you want in four weeks because
25:01 listen, I need to write maintainable code.
25:03 We can't just have like this tech debt piling up and all this junk, right?
25:07 Like this is a professional organization.
25:10 The PM says, what if we delegate maintenance to someone else?
25:13 Oh, I can release that in three days.
25:15 Exactly.
25:17 No test, Brian.
25:18 We don't need tests.
25:19 Come on.
25:19 Yeah.
25:21 Well, yeah.
25:22 So optional.
25:23 So optional.
25:23 That's someone else's problem.
25:25 Just kidding.
25:25 Well, is done when all the defects are done?
25:31 No.
25:32 You don't report that to the other person.
25:35 The API is frozen.
25:36 Yeah.
25:37 Anyway.
25:38 Exactly.
25:39 Well, three days.
25:40 I can hack that in three days.
25:41 Yeah.
25:41 No, no problem.
25:42 We got it.
25:43 You got it covered.
25:44 Yeah.
25:44 My favorite is when somebody asks like one person on the team, how long to take this?
25:49 Can you get this to get it done?
25:51 And, and like one stage says like a week.
25:56 So they promise a customer a week and there's like so many other people that need to work on it.
26:02 Yes.
26:02 Oh yeah.
26:03 Oh, did you want documentation?
26:05 Oh, you want that?
26:05 You want that written up as well.
26:07 Oh, I see.
26:07 Oh, a user interface for that also.
26:10 Oh, that's going to be.
26:11 Nobody pointed that out.
26:12 So yeah.
26:13 Tests or none.
26:15 Yeah.
26:16 Anyway.
26:16 Wait, we got to close it out with a comment from Alvaro.
26:19 Test pipe none.
26:21 Test or none in the typing system.
26:23 Yeah.
26:24 Optional.
26:25 Tests are optional.
26:26 Tests are optional.
26:27 Yeah.
26:28 Anyway.
26:28 Again, thanks for the wonderful episode, Michael.
26:31 We'll talk to you next week.