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. 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. It was excellent.
00:23 Yeah, nice to have you back.
00:24 Yeah, thanks. Good to be back.
00:25 This episode is sponsored by Scout APM. We'll hear more about them later.
00:29 If you want to connect with us or the show, we're on Fosstodon.
00:33 You can go to @mkennedy, @brianocken, or @pythonbytes@fosstodon.org.
00:39 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. And like navigating the terminal is always a bit of a hassle.
01:10 I'm like, "Hmm, Michael, did you really need to have it that deep of a directory tree
01:15 folder structure for this thing? Because your CD and that CD and that, like,
01:20 did you need to name the same?" 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 z-oxide.
01:28 So z-oxide is like CD, you know, the command, one of the very first things you learn when you
01:33 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 a VC funding or something.
01:43 Nah, just kidding.
01:44 But it is backed by warp, which I've talked about before, which is also written in Rust.
01:50 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 using it,
02:01 pretty much it supports that.
02:03 Okay.
02:04 Once you install it, it will start to remember all of your directory changes,
02:09 at least if you use it.
02:11 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, the example they're using on the screen here is something like, let's see, some long path slash
02:25 foo, 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:33 Cause it's like, all right, well, if the only directory structure I've ever seen that you
02:39 actually cared to go into that involves the word foo is this one.
02:43 You can 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, or you can,
02:57 instead of like the hotkey they show or the command they show is Z, you could Z for some of our folks, you could type ZI for interactive,
03:07 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 a interactive way to go and find the files or the paths that you've
03:19 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:23 - Yeah, 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.
03:32 So you can say Z dot dot, you can say Z minus to go to the previous directory,
03:36 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
03:43 space tab to pull up autocomplete.
03:46 And you can get it in a bunch of ways.
03:48 Like look at all these platforms, Linux, macOS, Windows, BSD, even Android.
03:52 And on Mac, you can do a bunch of ways.
03:55 You can conda forge it, you can ASDF it, you can home brew it, all those.
04:00 And then look at all the different shells here.
04:02 - Wow, 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:18 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:26 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, you know, swap those.
04:34 And so what you can do when you install it, does it say on here, probably, maybe it does.
04:40 Oh, it's up under the configuration.
04:42 So in the shell configuration, but you have to do this eval, Z oxide, 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:06 Okay, that's what I did.
05:07 That ends up showing up in your one of your dot files or something.
05:10 And then you can, yeah, I put it in my ZSHRC file for me 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:23 Yeah, I was just thinking, I don't know if I want to type Z because that's with my pinky, whereas CD is with my middle finger.
05:28 And I'll probably map it to something else like E or C or something.
05:32 Or just CD.
05:34 Yeah, 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:38 It's not going to change your life, but it's also...
05:41 - Little extra things that make your life a little faster is good.
05:46 - I find it really interesting that on both Windows and Mac, Linux to some degree, but Windows and Mac even more, especially Mac,
05:56 like you open up the default terminal experience and it is bad, bad.
06:02 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 its white background, which I don't know, for some reason,
06:09 terminals, it just seems 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 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 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, but yeah, it's just, you need to have interacted with it.
06:46 I'm pretty sure it does it across sessions though.
06:47 - Okay, cool.
06:48 - Yeah.
06:49 - I'll 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, there's an article called from Raul Pai, I think.
07:01 Smart CLIs with Typer.
07:03 And I was like, just excited to see this because I love Typer and I've been using both Typer and argpars a lot actually.
07:11 When I guess for me, I use Typer if I'm already importing other stuff, but if it's a package or a project that doesn't have any external dependencies,
07:21 then I'll try to use argpars because I don't want to pull in an external dependency just for Typer sort of thing.
07:27 However, but Typer is really fun.
07:30 This is a cool article 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 about.
07:39 So there's a great article, 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 comparison between an argpars version and a Typer version.
07:52 It's not hugely different, but it just talks about how Typer, you don't have to like declare your arguments.
07:59 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 Typer figures out that all of your
08:06 type 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, maybe I knew about and forgot or just never knew about.
08:18 Like how easy it is to do help.
08:20 So, well, help is actually a little easier in argpars, but it's not that bad in Typer.
08:26 You have to do a Typer annotated thing with argument with help on it.
08:33 It's a little clunkier, I guess, just it's not that bad, but it's a lot different than the, if you don't want to help,
08:40 you just have to, it's a little bit more work.
08:42 Anyway, prompting for input, I did not know you could do this.
08:46 So if you have like you would add help, you add a prompt instead.
08:52 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 pretty cool that you can add a prompt.
09:09 - That's 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 to have like some defaults, but also,
09:20 yeah, speaking of defaults, you can also add an environmental variable.
09:23 So if the default doesn't have to be hard-coded, but it could be an environmental variable that you set.
09:29 And then if you didn't add the argument, it'll pull it from an environmental variable.
09:35 So very cool there.
09:37 What else?
09:38 It talks about explicit apps versus, is it kind of a different way to do it?
09:44 And to do, there's a couple of ways to do our Typer and explicit app.
09:49 One is one of the ways, 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 Typer.
09:59 And then as a comparison, a similar sort of a thing with ArcParks would have been sub commands.
10:05 So kind of a fun article.
10:07 And then I kind of got lost in the whole reusable command thing, but yeah.
10:12 - Yeah, this looks great.
10:13 Yeah, I didn't know about the input one or the environment variable one.
10:17 These are both awesome.
10:18 - Yeah, cool things if you're making your own command line interfaces.
10:22 And I also appreciated the shout out to ArcParks, not like, because that is the other one,
10:27 most people should consider either Typer or ArcParks, I think.
10:31 - For sure.
10:33 Andrew out there says that, yes, Z-Oxide does have a persistent database, as I thought.
10:40 And also asked whether Typer supports the union operator, the pipe operator for types.
10:46 I'm not sure, it said it didn't used 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 it could try to parse as a date time,
10:57 but then see the number as like a timestamp.
11:00 Right, I don't know, I can see how it can be tricky.
11:02 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,
11:08 'cause one of the things is optional.
11:10 So if one of the things I love about the bar for types is to be able to say int or none
11:19 as an optional thing, but that's not how you do it with Typer.
11:23 With Typer, you have to say option, like at least the last time I tried it,
11:26 you had to say optional int equals none.
11:29 - Oh, interesting.
11:29 - But actually this is even, yeah, optional makes it so that's like int or none.
11:34 - Yeah, cool.
11:35 - Anyway, cool.
11:36 - Awesome, awesome.
11:37 - What else is awesome, Michael?
11:38 - So our sponsor, our sponsor is awesome.
11:42 Let's take a moment and thank them and tell you about them, and then I'll get back to it.
11:47 Let me tell you real quick about Scout APM.
11:50 They're big supporters of Python Bytes, so we appreciate that very much.
11:54 So if you are tired of spending hours trying to find the root cause of issues
11:59 impacting your 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 and solve performance abnormalities faster and easier.
12:12 Scout APM ties bottlenecks such as memory leaks, slow database queries, background jobs,
12:17 and the 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?" So you can find out things like that.
12:29 And it links it back directly to source code, so you can spend less time in the debugger
12:33 and healing logs and just finding the problems and moving on.
12:37 And you'll love it because it's built for developers by developers.
12:40 It makes it easy to get set up.
12:41 Seriously, you can do it in less than four minutes, 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:08 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:27 Check them out.
13:27 It really supports the show.
13:29 Awesome. Awesome.
13:31 Brian, are you, 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:46 So a lot of the time.
13:47 So you basically create buffer overflow.
13:49 Yeah.
13:49 Commonly.
13:51 Yeah.
13:52 Well, you know, in C++ Scott, they like the, not just the print F, but like the safe print Fs and other things.
13:58 Like there was additional like checking ones to help prevent that.
14:02 Right.
14:02 But the, 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, back to the topic.
14:27 Exeter.
14:29 I think X Twitter is the best we can do.
14:30 Anyway, he pointed out something with some interesting commentary here said the U S government,
14:37 specifically the NSA looking to say, Hey, maybe we should have it harder to break into our systems.
14:44 The government explicitly recommends six memory safe languages.
14:49 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, right?
14:57 For example, the C# was Anders Halsberg who also did TypeScript, Go created by Google,
15:03 Java created by Sun bought by Oracle rust created Borm by Bermuda, Swift by Apple and Python created by one genius on his own Christmas holiday.
15:19 The Python is an extraordinary demonstration of the impact one person and the group that
15:25 they build and have on the world, which I think brings together two interesting ideas here, right?
15:30 Like that I thought is officially one of the memory safe languages recommended that we should
15:36 be using by the NSA and then just the effect that Guido has had.
15:40 Yeah.
15:40 Yeah.
15:40 Just, I think it's interesting that I didn't really realize that rust was memory safe, but.
15:47 Yeah.
15:47 That's interesting too.
15:48 Isn't it?
15:48 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 But, and then, oh my gosh, this is really took off.
16:00 It must be why I saw it's 781,000 views.
16:03 But then if you look, if you look at the comments, the comments, I can't see it cause I'm not
16:08 logged in, but there are many, many comments in the commentary is varied and interesting
16:14 down there.
16:14 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.
16:28 But I, you know, it gets maybe a little bit different to say, you know, you were funded
16:32 by this big tech company to create this thing 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 So there's, there's definitely.
16:43 No, he was more props to, to get to.
16:46 But if you look at all the comments, it just, it does what you would expect a post like
16:51 this to do as people like get there, you know, their, their baby, not quite loved highly
16:58 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
17:11 either.
17:12 So we'll have to check that out as well.
17:13 Yeah.
17:13 NSA says use Python.
17:15 Use Python.
17:16 Yes.
17:17 I mean, you know, and we all listen to the NSA in this case too, though.
17:21 Yeah.
17:21 I thought it was the other way around.
17:23 Didn't the NSA listen to us?
17:25 No, I know.
17:26 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,
17:33 and talk about, textual.
17:35 So we've talked about texture before, Wilma Cougan's, child.
17:40 So, with came from rich than textual, but, textual is over at textual dot 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
17:55 it and some other projects.
17:56 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
18:09 a 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:27 And, what caught my attention was the creating a modal dialogue for your two E's
18:32 with tech and textual, but he's got like four different, blog posts around tutorials
18:37 around textual 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, the modal dialogues kind of fun goes through
18:46 a little, fairly simple example, but the code's really just not complicated to
18:51 follow along with.
18:52 So, really kind of fun.
18:55 talking about how to do a modal modal dialogue, because that's something, why would
19:00 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 recommend a where clause in your delete statement against the 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 very, very interesting.
19:23 So cool.
19:24 So, all right, well, those are our topics.
19:26 do you have any extras for us?
19:28 I have just a couple of extras.
19:31 I'd like to go through here.
19:32 So one, you know, ngrok, we've talked about ngrok before.
19:36 If you need to let people access services, typically HTTP, but it could honestly be anything
19:43 on your system.
19:44 You could run ngrok.
19:45 It's super cool.
19:46 I'll use it, pay for it, 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 You can just run ngrok, get an SS, SSL backed URL.
19:58 That's kind of some random thing that people 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 ngrok Python SDK.
20:10 So if you want to write apps that basically temporarily spin up ways for people to get
20:16 into 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, people to get to it under certain
20:26 circumstances or whatever.
20:28 Right?
20:28 Then here you go, 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 ngrok directly, but I'm
20:40 a big fan of ngrok 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 dot sock thing, which is pretty wild.
20:48 So gets, 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:58 And so I recently had, Sarah Boyce and Tushar Gupta from the Django knot program
21:04 on Talk Python.
21:06 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:14 Nice.
21:14 Cool.
21:14 Yeah.
21:15 Then Sarah was very excited to hear you mention it when you brought it up, you said on the
21:19 show, this show on our, on Talk Python, she mentioned that she was excited to hear it
21:23 here.
21:23 So that's cool.
21:24 Also, I had a really interesting experience with my phone brain.
21:27 I was looking at my phone going, I'm not sure I really like the color anymore.
21:30 And I've had it for a little while.
21:31 Maybe I'll get a new phone.
21:33 And then like, what is wrong with you?
21:36 Oh, 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 his charge as 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, they'll switch it.
21:56 It's what encouraged people like, Hey, you might be able to just up, you know, improve
22:00 your phone or, you know, give it a different color without going over the top.
22:04 Yeah.
22:04 What do I got?
22:05 I got an eight plus that I'm using.
22:07 The works fine.
22:09 That just changed the battery every couple of years.
22:12 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.
22:19 You got to get a better one.
22:20 Okay.
22:22 Take it.
22:23 Nice.
22:23 Cool.
22:23 Anyway, that's, that's my public service announcement for people out there applies to
22:27 Android as well.
22:28 You can get a new case for Android as well.
22:30 Okay.
22:30 Well, I have a couple of extras.
22:31 One of them is a public service thing, but the first one is just a shout out to a Hennig'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
22:54 at the background of really what's going on here.
22:56 The speed ups might not seem the speed, everything's fast, 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 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 Venmo, you
23:30 know.
23:30 But I was surprised when I looked at my old transactions and found that the there's a
23:38 feed feature where you can, where everybody that's connected to you or even not connected
23:42 to you can see everything that you spent money on.
23:45 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 just 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 friends with like
24:28 15 years ago, 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 so.
24:35 Yeah.
24:35 Turn, turn the feet off.
24:36 Turn the feet 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 and let them know that their feeds public.
24:45 So yeah.
24:46 Anyway, 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,
25:01 because listen, I need to write maintainable code.
25:03 We can't just have like this tech debt piling up and all this junk.
25:07 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:18 No test, Brian.
25:18 We don't need to ask.
25:19 Come on.
25:19 Well, yeah.
25:22 No optional.
25:23 So optional.
25:23 If that's someone else's problem, just kidding.
25:25 Well, is, is, is done when like when all the defects are done or.
25:31 You don't report that to the other person.
25:35 The API is frozen.
25:37 It's 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:42 No, no problem.
25:42 We got it.
25:43 You got it covered.
25:44 Yeah.
25:45 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 You want that?
26:05 You can want that written up as well.
26:07 Oh, I see.
26:07 A user interface for that also.
26:10 Oh, that's going to be.
26:11 Nobody pointed that out.
26:12 Yeah.
26:14 Tests or none.
26:15 Yeah.
26:16 Anyway.
26:16 Wait, we got to close it out with a comment from Alvaro test pipe.
26:20 None tests or none in the typing system.
26:23 Yeah.
26:24 I love it.
26:24 Optional tests are optional.
26:26 Tests are optional.
26:27 Yeah.
26:28 Anyway, again, thanks for the wonderful episode, Michael.
26:31 We'll talk to you next week.