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


Transcript #373: Changing Directories

Return to episode page view on github
Recorded on Tuesday, Mar 5, 2024.

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

Back to show page