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.

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.

Back to show page