The Changelog: Software Development, Open Source - Git with your friends (Interview)

Episode Date: February 10, 2023

This week we invited our friend Mat Ryer to join us for some good conversation about some Git tooling that's been on our radar. You may know Mat from Go Time and also Grafana's Big Tent, which we help... to produce. We speculate, we discuss, we laugh, and Mat even breaks into song a few times. It's good fun.

Transcript
Discussion (0)
Starting point is 00:00:00 what's up friends this week on the change law we invited our good friend matt reyer to join us for some good conversation about some get tooling that's been on our radar you may know matt from go time and also grafana's big tent which we hope to produce we speculate we discuss we laugh and matt even breaks into song a few times. It's some good fun. A tremendous thank you to our friends and our partners at Fastly and Fly. Our pods are fast to download globally because Fastly, they are fast all over the world. Learn more at Fastly.com. And our friends at Fly help us put our app and our database close to our users all over the world.
Starting point is 00:00:41 No ops required. Check them out at fly.io. This episode is brought to you by our friends at Fly. Fly lets you deploy full stack apps and databases closer to users, and they make it too easy. No ops are required. And I'm here with Chris McCord, the creator of Phoenix Framework for Elixir and staff engineer at Fly. Chris, I know you've been working hard for many years to remove the complexity of running
Starting point is 00:01:13 full stack apps in production. So now that you're at Fly solving these problems at scale, what's the challenge you're facing? One of the challenges we've had at Fly is getting people to really understand the benefits of running close to a user user because I think as developers, we internalize as a CDN, people get it. They're like, oh yeah, you want to put your JavaScript close to a user and your CSS.
Starting point is 00:01:31 But then for some reason, we have this mental block when it comes to our applications. And I don't know why that is and getting people past that block is really important because a lot of us are privileged that we live in North America and we deploy 50 milliseconds a hop away.
Starting point is 00:01:45 So things go fast. Like when GitHub, maybe they're deploying regionally now, but for the first 12 years of their existence, GitHub worked great if you lived in North America. If you lived in Europe or anywhere else in the world, you had to hop over the ocean and it was actually a pretty slow experience. So one of the things with Fly is it runs your app code close to users. So it's the same mental model of like, hey, it's really important to put our images and our CSS close to users. But like, what if your app could run there as well? API requests could be super fast.
Starting point is 00:02:11 What if your data was replicated there? Database requests could be super fast. So I think the challenge for Fly is to get people to understand that the CDN model maps exactly to your application code. And it's even more important for your app to be running close to a user because it's not just requesting a file. It's like your data
Starting point is 00:02:26 and saving data to disk, batching data for disk. That all needs to live close to the user for the same reason that your JavaScript assets should be close to a user. Very cool.
Starting point is 00:02:35 Thank you, Chris. So if you understand why you CDN your CSS and your JavaScript, then you understand why you should do the same for your full stack app code. And Fly makes it too easy
Starting point is 00:02:42 to launch most apps in about three minutes. Try it free today at fly.io again fly.io Recently, we've been overwhelmed by a lot of the crazy, super cool tools, innovation, and just stuff that people have been doing in and around Git, whether it's the Git project itself or tooling built around it. It feels like there's something new every single week in ChangeLog News. So we thought we'd get together with our friend, Matt Reier, who also happens to be a co-host of the GoTime podcast and of Grafana's Big Tent podcast, which is an award-winning podcast. And GoTime is an award-winning podcast. And GoTime's an award-worthy podcast.
Starting point is 00:03:46 And we thought we would just introduce some of these tools and ideas to everyone and just talk about them. So Matt, thanks for being here. Oh, thank you very much. I use Git a lot, so I'm very keen to learn more about this. Would you say daily or weekly? Depends if it's every day or every week. Okay, explain. Well, if you want to say something happens once a day, you'd say daily or weekly? Depends if it's every day or every week. Okay, explain.
Starting point is 00:04:06 Well, if you want to say something happens once a day, you'd say daily. But if it only happens once every seven days, I'd probably opt for weekly. The confusing one is bi-weekly. Yes. Because that can both mean twice a week and once every other week.
Starting point is 00:04:19 Two different meanings. Who invented that phrase? Yeah, it's not good, is it? We have fortnightly as well as a term to mean two weeks. I like fortnight. Not the game, but the phrase. The game kind of soiled the phrase, if you ask me, the word. Yeah.
Starting point is 00:04:33 Because now there's two contexts. Yeah. Quake did that to me. I used to love quakes. Like earthquakes? No, no. Wait, is it the game? It's like the oldest game in the world, though, isn't it?
Starting point is 00:04:46 It's right up there with Duke Nukem. Yeah, we used to play on, like, in school, we had a LAN party, and Quake 2 was the game we played. And then I used to make levels with my brother using Worldcraft 3D world builder thing. And it was so much fun to be be able to like build levels and then play them with your mates was just couldn't believe you could do that these land parties did you take a router with you or a router with you and did you pick up your entire gigantic tower pc and take it
Starting point is 00:05:17 with you like describe yeah well luckily these were in the school library so okay yeah because we didn't yeah you wouldn't move your computer around back then it's not like now with your phone like right you know come you can't really believe that the internet is your land yeah exactly so the cloud that would be dangerous if the whole internet was all on one land wouldn't we be pretty exposed? I mean, NATs are nice. Again, too context for NATs, especially when you're just saying the word out loud. Let's loop back to Git.
Starting point is 00:05:54 How often do you use Git, Matt? Daily or weekly. Well, this is interesting because you haven't been coding this much lately. This is a change for you. Don't out him, Jared. Maybe not recently. Well, no offense. I want to ask him for permission first no offense is this is that private information that you you're more of a leader now um well i'm hoping to get one day promoted back to being an ic so i can do work again um yeah so i don't use git but honestly i kind of like git was always really complicated to me
Starting point is 00:06:28 and i was like oh there's so much you can do and it's really quite complicated so i try to always just use the absolute minimum that i could get away with with it and so that's why i quite liked git flow that used to give you like that a workflow where you could you know give you a workflow where it gave you a reason to create a branch, you do your work, then you merge it back in. So I always would err on the side of keeping it as simple as possible because there's so much you can do with Git. Absolutely. And so we're going to talk through some of these tools,
Starting point is 00:06:57 and as we go, one of the things that's interesting to me, obviously not do you use these tools because unlikely, because there's so many things and you like to keep it simple but having looked at it seeing what it does thought about it a little bit like are these things that we you me adam might adopt might try or is it just a cool kind of triviality that's neat to look at and then move on so let's let's dive into it a little bit let's look at the first one which it's got that visual it's called get heat map and this immediately reminded me of like daisy disk or these tools
Starting point is 00:07:32 where they search your hard disk and they show you where the big files are and they kind of put a map out of wherever the big files are where most of your storage is across the span of your disk. Only this is doing it on your Git repo. Is it still file size that it's representing? It's based on diff activity. So it's using, it's showing you kind of like, what do you call it? Lines of code that churn a lot, or like the hot files.
Starting point is 00:08:01 So it's based on the history and you can also do it to limit to certain users and stuff in the history. So the example that is out there in the image as provided is on CPython, which is a project that has a long history of commits, and it's highlighting the files that Guido van Rossum changed the most. And so it shows you a layout of that, and bright red is obviously the hottest,
Starting point is 00:08:27 which is configure. And then the doc folder, and then test and lib. So some of these things are kind of, I don't know, they're the ones that you would guess. But I wonder if there's actually insights that you'd find. Like, holy cow, this particular file, which I found over time in certain repos, there's certain files that are the really active ones.
Starting point is 00:08:45 Yeah. And lots of people touching that file. And there's other ones that, you know, actually config is kind of surprising to me, but maybe inside Python, it's different than what I'm thinking of. So you've got the, you've got two dimensions here though. You've got the size of the box and you've also got the color of how red it is. So do we know what they are? What's the size mean?
Starting point is 00:09:09 And versus the, you know, the color's obviously the most changed, I guess. But what makes something bigger or smaller? Or is it also just the same thing? It might be by the look of it. Well, it says you can choose the hue that you want the chart to use for highlighting. Highlighting what?
Starting point is 00:09:25 That's probably like the size of the div, maybe the activity. Maybe this is something you can actually fine-tune what it actually is representing. I find tools like this are like, how do you use them? What makes them insightful? Like, is it an individual using it? Is it an engineering manager sort of looking at, you know, to sort of get, because they're less in the code. Maybe you can speak to this, Matt, because you're less in the code lately. You're less in the details
Starting point is 00:09:48 and so maybe use something like this as a way to sort of like grok the bigger picture. Or maybe this is great for a presentation to the Linux kernel, for example, and you're at LinuxConf. I don't even know if it's a real thing or not, but like some sort of conference focused on Linux.
Starting point is 00:10:03 How fast is Linux moving? What is changing within the Linux kernel? Who's doing it? Et cetera. Yeah, I can't imagine the amount of stress that goes on trying to do the presentations at LinuxConf, though. Like trying to just connect to the projectors with Linux machines? No thanks. Yeah, it's an absolute shame. Well, you have to use the non-free packages and whatnot to do that. So that may be against the rules to the conference even. Somebody's like a super free software person. They're like, no way, man.
Starting point is 00:10:30 Not going to use it. Yeah, I went to FosDem recently. And that's obviously open source. And they're kind of allergic to having anything that's not open source focused, of course, there. But it's pretty nice but one use case i could think for the git heat map is to make sure that you are you have good test coverage on the things that are changing the most because in a way that's where you need more stability right the way you're changing the most so i feel like a kind of mashup of that and test coverage could be very useful to see are we definitely covering these things
Starting point is 00:11:06 that we are editing all the time? Yeah. Maybe. I can also see it when you're coming to a new project that's existed for a long time and you're just trying to familiarize yourself with the project, who's working on what, and which files are working on the most.
Starting point is 00:11:20 So I did look up the way that this thing works. And so it's a two-step process. So it basically scans through the entire Git history using Git log. And it takes that history and compiles a few database tables, which tracks files, commits, the author, and then the relationships between those things. And then the second step is taking that database, querying it to create the tree map. And the query is based on both the size of the file and then the total number of changes to the file. So there's your two dimensions. And so the color I think is based on how hot it is, meaning how often it changes. And you can limit that to certain authors, like I said, and the size of it in the actual tree map
Starting point is 00:12:05 is how big the file is or the folder structure is. I think I would only use it in that context. If I'm new to a team and I have a repo, maybe it has years of history, I want to quickly familiarize myself with it. Running the test is a good first start. And then maybe just throwing this thing in there, depending on how long it takes to operate.
Starting point is 00:12:24 You can get a tree map real quick i know i've also done like clocks the loc count the lines of code and that will spit out kind of a report on a project of how many lines of code there are in each kind of programming language like how much html there is how much css how much is python and that also helps you familiarize yourself pretty quickly other than that it just looks cool and so uh it's probably fun to build so on that then how do you feel about like the fact that it looks cool is that a good enough reason for you to have it in because to be honest like although it's even if it was just an aesthetic thing i feel like sometimes that's okay like it's like no this is nice to look. It's nice to have. We, we think it's cool. If we, I don't know, we kind of like it. We feel good about it. Is that a good enough reason, Jared? Or are you like, no, give me facts.
Starting point is 00:13:13 That was good enough for me. I mean, I put it on changelog news. I'm like, this thing's cool. You know, sometimes it's just like, surely this person, by the way, written by Jonathan Forsyth. So shout out to Jonathan. Well done, Jonathan. He's probably just scratched his own itch. He probably thought this doesn't exist. It would be cool. I always do enjoy popping open DaisyDisk or clean my Mac X or whatever
Starting point is 00:13:35 and seeing that layout of my system's hard drive and where the big vials are. And so it's like, well, can I take that idea and apply it to Git? It's cool. Yeah, it's definitely cool. I also that idea and apply it to git it's cool yeah it's definitely cool i also do like doing that with daisy disk in fact i found lots of big audio files which were when we record these podcasts we record our own audio locally right so i have lots of audio files of
Starting point is 00:13:58 just my side of the conversation unfortunately they also somehow make it into my itunes and so sometimes when i'm shuffling music like i might be i might be in the bath and i've got music on and then it's playing music and then it comes to one of these tracks right and it's just my side of a conversation and i just have to you could have a like a greatest hits album with that yeah iriar's greatest hits right you know just talks to himself because you know there's this interesting phenomenon now i don't know if you guys have been out on the streets at all but when you're out on the streets you know people just talk into the air oh yeah and when they do it
Starting point is 00:14:33 now you can no longer assume that they have some sort of a mental disorder or a problem right because a lot of times they actually have like you know the tiniest little ear pod in that's right or something yeah and they're not just being. They're actually just having a conversation on the phone or something. And it's really strange. Yeah. This, this actually is really good for me because I am the person that walks around just saying things out loud. And I don't sometimes think like, so sometimes like if I'm going to have a difficult conversation, I'll sort of like run it over in my head. And sometimes I'll say it out loud. And I've noticed a couple of times people looking and then I just like slowly put my hand up to my ear and just say, okay, thank you. Bye. And pretend I was on the phone.
Starting point is 00:15:13 That's a pro tip right there. That is a pro tip. I like that. A little speck of brain science for you. It is totally okay to talk to yourself, even out loud. Thanks. In public? Yeah. Well, I mean, there's etiquette. So, I mean, pick your place.
Starting point is 00:15:33 But you are not suffering from sort of any mental condition if you talk to yourself. Now, there are certain circumstances where it goes too far. But any normal person who speaks out loud to themselves, it's just a way that you sometimes process your thinking. Everybody's different with how they think. And so you may be a person who thinks out loud and has to say it out loud to like really believe it's fact. And so I'm here to tell you it's okay. And I don't disagree with that, but I'm here to tell you that when you do it in public places,
Starting point is 00:15:55 that you look like you're insane. That's all I'm saying. Truth, truth. And then you just say goodbye and you put your finger up to your ear and you look totally normal again. So I learned that today, TIL. That is a good pro tip, man.
Starting point is 00:16:06 One thing I'm noticing is the time to generate the database. Linux is one of the repositories. CPython was one of the repositories used. And the commits on these repos are tremendous. I mean, more than a million on Linux. A little over 100,000 on CPython. And the time to generate the Git log, the Git log size,
Starting point is 00:16:28 and one of the things that Jonathan mentions is wanted features, which I think is pretty cool. It's like, obviously, faster database generations in there, sub-module tracking, remembering filters, other things. I think this is a,
Starting point is 00:16:41 it's one of those things you're like, should this be in Git? Probably not, right? Like, you don't want Git to be muddied with, like, this kind of feature. So this lives in New Zealand, and is this the best one of those things you're like should this be in Git? Probably not right? Like you don't want Git to be muddied with like this kind of feature. Right. So this lives in user land and is this the best one
Starting point is 00:16:49 in user land? And if so like how does this kind of thing get support? You know to like not die. Great question. Yeah. Yeah I mean I think
Starting point is 00:16:58 it's the only one I've ever seen. I'm not saying it's the only one in user land. I think with typical open source don't you just have to
Starting point is 00:17:05 like inspire people to collaborate with you? Like it has to be interesting or good enough to get that grassroots support of like, yeah, sub module tracking would be amazing. I tried this. My project has sub modules and it completely ignores them, but a lot of the stuff is in there. So I would love to have that how can i help out i think that i mean that there's really no other way that these kind of projects which really are kind of like scratching an itch little there's no business around this like this is a small scoped thing that can really get support unless you inspire other people to just want more from it and then they help out yeah but look at daisy disc i mean that's i think a paid app or it has at least
Starting point is 00:17:45 paid features doesn't it so yeah if there is a real business use case out of something like this then it does have a potential future but i kind of love that it's play it's like we play a lot and then sometimes there's opportunities that come out of that play and this is the thing a lot of software teams forget about i think they they get very serious and everything's sort of, you know, and you forget that actually, you know, you've got to be able to be creative and just try things and do things because you want to, or you just think it's cool. Just thinking something's cool is a great reason.
Starting point is 00:18:19 If someone on one of my teams comes and says, I've got this idea, you know, I don't know where it fits or anything. I just think it's cool. That's really compelling for me, especially because they're so motivated to actually do it. Right. It's harder than the other way around. You going to them and saying, you know what would be cool?
Starting point is 00:18:35 And then you telling them. And they're like, okay, I'll do it because Matt wants me to. Sure. Less likely. Sure, that's cool, granddad. They just think I'm their granddad. Right. And I haven't even got granddad. They just think I'm their granddad. Right. And I haven't even got any kids, so how can I be their granddad?
Starting point is 00:18:50 See what I mean? Think. Inquiring minds want to know, Matt. They do want to know. You can't do it, I think. That's a great point, though, the play aspect, because a lot of things happen when you do play. I mean, obviously, your mind is different. It's in a different mode.
Starting point is 00:19:03 Sometimes you're, as you said before, wow, that was actually, I may be outing your, your potential unpopular opinion. I won't say it, but you know, when you make a plan and it can be no constraints. There's no guardrails necessarily. It's like, where can I go? Where can I explore? What should I do? And then maybe out of it comes fruits. And maybe that can be a business if you really want it to be. But I think there's examples of large things in our world. Flickr, I think, was a game at first before it was the photo sharing sharing right you know 1.0 version of instagram essentially and slack was supposed to be a communication tool while they built a game
Starting point is 00:19:49 see the same teams yeah they were just playing are they ever going to make that game probably not it's done too busy making very successful companies yeah they've let it go but they may play the sims which is a good transition to simulating oh this is actually sparked my interest because i was like you know i love to have permission to mess up and like get sim is the next one visually simulate get operations in your own repos and i think that's pretty cool because you can think like what would happen if i branch what would happen if this happened here you know what would happen if i rebase that over here and it's like you you can sort of like have this fictitious world this potential future and just erase it but isn't that kind of like git does anyways but this gives it to you visually
Starting point is 00:20:33 that's the difference yeah this visualizes it for you so you can understand what's going to happen and also it's completely safe like it's with git you know that 99 of the time it's completely safe. Like it's, with Git you know that 99% of the time it's in there. Right? Like no matter what you do, there are circumstances where you can lose data. But most of the time, even if you thought you've lost something, it's in there.
Starting point is 00:20:56 Because of the way it works. But you have to find out how to get it back. And that's like a huge time sink, right? And can be very anxiety ridden and all that. And dangerous. It's like a huge time sink right and can be very anxiety ridden and all that and dangerous like it's like it's like running in production but with this not only does it visualize it for you which is super cool but it also never does it right so it's it's it's kind of like a dry run in that way the author of it did describe why it's better than dry runs but i've lost the blog
Starting point is 00:21:24 post all i have is the repo at this time. I do a lot of rsyncing in my network. And in some cases I do deletion. You do a lot of rsync? Do a lot of rs what? Rsyncing. Rsync. Is that like tattoos on people's backs?
Starting point is 00:21:38 Sure, Matt, sure. Yeah. Rsyncing. Nice. Touche. Is this a hobby or are you trying to get a new gig going? None of the above. None of the above.
Starting point is 00:21:48 Can you do me one? Let's go to the flag I'm going to mention here, okay? So when you R sync, it's like, well, especially if you're going to delete, you're moving data to or fro from a place. And it's like, well, I can use dash in and just kind of see what it might do. And it will go and do that whole thing you know it will and that's my favorite thing like especially with that kind of like dangerous tool you need sort of a simulation zone so that you can like simulate yeah so that's this is interesting
Starting point is 00:22:17 like could you have this tool but for real as well what what like well once you do the tool then then you then you do it for real. I see. Or you mean you want to visualize it as it goes. Is your question, Matt, simulate it, like the results and just say, okay, do it button? Yeah, I guess so. Is that what you're saying? It's like commit. It's like, yeah, that looks good.
Starting point is 00:22:38 Yeah. Looks good. Do it. Probably it can. So I did find the part where it says, why aren't dry runs good enough? Because Git does have a dry run feature, which is like the rsync one that you described there. Yeah. Where it will just tell you what it's going to do.
Starting point is 00:22:52 And the author of this, which we should shout out as well. rsyncing, Matt. Yeah, I can't unhear it now. I know. I do a lot of rsyncing. And then when you plant a flag, I'm picturing, you know, a tattoo artist with a lot of rsyncing. And then when you plant a flag, I'm picturing a tattoo artist with a flag.
Starting point is 00:23:07 rsyncing. So this tool by Jacob Stopak from the initial commit team, which is a team that does Git things. And he writes that there's a dry run flag in Git, which is dash n also. So maybe that's a standard or at least an idiom. It enables you to get some idea of how the command will affect the state of the repository.
Starting point is 00:23:26 But he says these commands can be useful, but not all Git commands have them. So, you know, Git has all these subcommands and they don't all have dry runs. And he says, and the purely text-based output can be quite sparse, as is typical of Git's command line interface. Moreover, many people out there are visual learners and could benefit greatly from a visual approach to simulating the impact of a Git command before running it. So imagine this tool, GitSim, as if it's a dry run that has complete coverage of the subcommands and visualizes it for you. Maybe, you know, this one I could argue, put it in a Git. Like this is just a better user experience for dry runs, potentially. Yeah, this would be very useful and probably would satisfy some of my fears here
Starting point is 00:24:11 around Git commands just being too complicated and I don't really have the confidence that I really know what it's going to do. Because it's very abstract and can be quite surprising, the effects, if you're not really okay with with git and so this would give a level of confidence for sure they'd be like okay so you've typed this in and now here's a picture is this is this what you meant and you're like no absolutely not you've
Starting point is 00:24:36 just saved me a lot of embarrassment thank you or the other way around yeah the dash dash animate is a pretty cool flag too like it animates what's going to happen like a presentation yeah that's pretty cool it looks good too they have gifs on the i don't know they might not be gifs actually but they have video animations on there i just don't want to get letters of people saying that's not a gif he doesn't know what a gif at least you pronounced it right good point so points for that thanks gerard seems to be a dot mp4 just to be clear matt thank you we do we have to be a bit pedantic because i do i do get letters when i say sometimes i'll say something like just which one being silly oh it's lots of them in different
Starting point is 00:25:19 orders depending on what they want to write okay. Daily or would you say you get those daily or weekly? Yeah, I would. I would say that. I wouldn't say moreover. Someone said moreover earlier. I don't think I've ever said that. Well, I was reading. I was reading verbatim from a blog post. So you can take that up with Jacob Stopak.
Starting point is 00:25:36 I'll let him know. Jason, just come here, Jason. Jacob. Jacob. Sorry, Jacob. All right. So that sentence had a bug in it, which leads us to our next tool, Gitbug.
Starting point is 00:25:46 Oh, these links are brilliant. This is professional. Yeah, you're really working with pros here today. This one, I absolutely love this concept. So Gitbug, written by Michael Muray, I think is how you pronounce his name. Good name. Basically, he's put a bug tracker in Git.
Starting point is 00:26:03 It's fully embedded in Git. You only need your Git repo to have a bug tracker in git it's fully embedded in git you only need your git repo to have a bug tracker so anywhere your repo goes
Starting point is 00:26:09 the bugs are right there works offline no vendor lock-in it's fast I'm just
Starting point is 00:26:16 reading his bullet points now it doesn't pollute your project it integrates with your
Starting point is 00:26:20 tooling so that's what's cool about it is it bridges over to github issues to git lab whatever they call their issues to jira if you're with your tooling. So that's what's cool about it is that it bridges over to GitHub issues,
Starting point is 00:26:26 to GitLab, whatever they call their issues, to Jira, if you're in hell already. I mean... Oh, boy. Jeez, Jared. Sorry. No love lost for Jira. Say it like you feel it, man.
Starting point is 00:26:39 Say it like you feel it. Oh, I've never liked that tool. I don't know anybody who does. I feel sorry for people building it. If you do, send Matt a letter. Oh yeah, please. If you love Jira, let Matt know. Send it to Jason.
Starting point is 00:26:50 He doesn't exist. I got his name wrong. There you go. But this is really cool. I mean, how do you track your bugs, Matt? I just don't write any. That's kind of the way I do it. But how do you do it?
Starting point is 00:27:01 In GitHub, it has issues. But actually having it in Git, and I assume there's like, it's a text file or something or some data file where they store this. And what's quite nice about this, I guess, is with a commit, you can also fix the bug
Starting point is 00:27:16 and then that all gets pushed at the same time. And because it's in the actual, it's because it's in Git, it's always correct. If you go back and check out an old branch you'll see the bugs that exist for that old well you know previous commit you'll see the bugs that existed at that time so i think that's really clever yeah it's super cool the way this is built out it like models gets way of working uh it works like git. It's just inside of your Git repo.
Starting point is 00:27:45 It has a CLI, so you interact with it from your CLI, both adding bugs, reading bugs, etc. And then it also has a little web UI built in that you can launch and just run locally, which kind of gives it a GitHub-style issues list with filters
Starting point is 00:28:01 and open and closed. I don't know. I'm pretty impressed by this tool, actually. I think Michael did a really good job with it. What about tracking in production, though? How does that happen? Where does it get the reports? Oh, error tracking?
Starting point is 00:28:17 Yeah, is a bug an error? I mean, it's kind of like the same world, isn't it? No. Bug tracker, error tracker. How do you do it, Matt, over there in Grafana? Well, I was going to say, if there's an error or a bug or whatever, you just open it
Starting point is 00:28:30 and, I guess, commit it, right? It exists at that point in the code base. Well, think about our error tracker, Adam, in Sentry. Right. There's a ton of errors in there. And some of them turn into bugs that we open on GitHub issues.
Starting point is 00:28:43 But if every error turned into a bug, then we'd have my no bugs command would be way off. There's so many errors that only end, thousands of errors can represent the same code deficiency as well. Yeah, depending on scale. One important thing that you do though with that is you
Starting point is 00:28:59 track commits to deploys to errors and I guess to bugs. And I think think i'm just wondering if you had that full circle there that comprehensive look because it seems it could be one-sided unless it gets that sort of like other source of truth right i'm not following say it again in different words make it mean a different thing as well if you can at grafana we do we have error budgets actually so this is a concept that if anyone's not familiar with it you really should be because
Starting point is 00:29:31 it's so good okay it's basically like we're allowed to have a certain amount of errors and i've worked at a place before where we had a sort of non-technical, that's the politest way I could say it, is a non-technical CTO. He's an idiot. And he said, no, there shouldn't be any errors. Like, why are there errors? Why are there bugs? You shouldn't have any bugs and no errors. Genuinely, that was his position.
Starting point is 00:29:57 Neither have either. And like, okay, sure. It's almost like you don't really know what you're talking about, frankly, if that's your position. And so in in the real world errors happen all the time and you're allowed a certain level a certain budget that you can spend and that means you can be creative and flexible and do things and make mistakes so you have the flexibility to within within the slo's threshold yeah yeah exactly you're allowed to take some risks. Because if you
Starting point is 00:30:25 really don't want anything to ever break ever, you have to do a lot more work. And it can be a lot more free if you're allowed for there to be some errors. As long as you jump on it and fix them when they happen. How are those measured? Is it like errors per lines? Or is it
Starting point is 00:30:42 errors per week? Or how does that play out? Yeah, it'll be like failed like http requests depending on what it is so if it's like a certain number of those could fail before i see yeah before you've you consider you've got a problem um a threshold sure that is a cool idea i think the same applies for incident and it's just realistic too right like it just accounts for reality and it lets you move forward while still maintaining and not letting it get out of hand which is what you're trying to really fight against is like all of a sudden are you saying git get out of hand or get get out of hand that's open interpretation
Starting point is 00:31:15 well that's the thing not in my accent it's not because they're very different when i pronounce those two words and i think i think it's i think the git the that project, is a play on words in a US accent. I think it's like get, but it's like, isn't it? No. No. Is it not? No, it's get. What do you mean?
Starting point is 00:31:37 No, it's because Linus wanted to make the joke on the term that it's a tool for gets. Like, isn't get kind of a pejorative yeah over there is that what it was yeah he pretty much said that that it was supposed to be i should pull up the quote oh i thought it was like a in a texan accent it was just like someone saying get you want to hear something funny what your accent i'm a transplant texan okay i didn't i didn't i wasn't born here now i i knew a guy okay i still know the guy, but I knew a guy. He was describing the parade going through downtown,
Starting point is 00:32:09 and he was telling me that it was going Dan Tan. Dan Tan. And I'm serious with you. This is when I first moved here, so I had an excuse. And I was like, what are you talking about? What is Dan Tan? He's like, Dan. He kept saying it.
Starting point is 00:32:23 It got louder. Dan Tan. Dan Tan. talking about what is dan tan he's like dan he kept saying it he got loud dan tan dan tan i'm like can you please explain in different words and he finally says downtown oh so you can say you can say downtown seriously man like dan tan for like three minutes here and i'm asking you what are you talking about well Well, that's amazing. Okay, I have the final word here. And this is hilarious because it shows how small of a world it is. I Googled it. I technically duck, duck, goad it, if that's a thing. You duck, duck, went.
Starting point is 00:32:54 I went there. And I found how Git got its name. And this article, this historical article is written by none other than Jacob Stopak. What? From Initial Commit. Yes, he wrote this. Jason, he's back. He's done all this history here.
Starting point is 00:33:12 And he says, okay, when Linus Torvalds made his initial commit of Git, April 7th, 2005, he supplied this message. Initial revision of, quote, Git, the information manager from hell. That's the subject and then he provides the the deeper cut in the uh the content yeah what do you call it the body the body of the commit message yeah sure it says get the stupid content tracker get can mean anything depending on your mood uh, random three letter combination That is pronounceable and not actually used By any common Unix command
Starting point is 00:33:48 The fact that it is a mispronunciation of Git May or may not be relevant Hello It may not be relevant Matt But it may be Two, stupid, contemptible and despicable Simple, take your pick from the dictionary of slang Three, global information tracker
Starting point is 00:34:04 So it could be an acronym. You're in a good mood and it actually works for you. Angels sing and a light suddenly fills the room. And the fourth one. Oh, I can't actually say the fourth one. We'll have to bleep it out like crazy. Beep. You have to look that one up, friends.
Starting point is 00:34:19 He says, this is a stupid but extremely fast directory content manager. It doesn't do a whole lot, but what it does do is track directory contents efficiently. So there you have it. From the horse's mouth, the slang get may or may not be relevant. Wow. Okay, good. Yeah. Thank you.
Starting point is 00:34:37 So thanks for that, Jason. I wonder what Dan Tan would think of that. Dan Tan. Hey, Dan. Have you seen this? You're going to love it. You know, for example. That's pretty good.
Starting point is 00:34:52 I don't want to insult anyone. My other friend, I'll give you one more. Other friend, I like you just admit you've only got two. That's my other friend. My other friend. Wow. He also had an experience on his first entry upon Texas. He came from Montana.
Starting point is 00:35:06 Okay. Now Montana is, you know, Montana, as you may know. Now he drove into town and there was somebody power washing something at the gas station. And when he drove over the power wash, do you know what a power washer is, everybody? I do, I think. Just confirming. I feel like I do, yeah. He's power washing
Starting point is 00:35:27 whatever it might be. And there's a lot of pressure in that line. And this person drives over the power washer's hose. And the guy yells at him. He says, there's 5,000 PSI there, man. It'll blow up. Dan Tan said this? There's 5,000 PSI in there, man. It'll blow up. Dan Tan said this?
Starting point is 00:35:46 That's 5,000 PSI in there, man. It'll blow up. That's what he said. Like as if you drove over this pressure washer's hose because it had such pressure, it would blow up. That's a public service announcement if you ask me. Just so you know. No, it did not blow up.
Starting point is 00:36:00 To this day, we laugh at that. Why is that? I don't get this. So the power, you can cut this bit out, but I just want to know just for my own sanity. I'm going to tell you why. Because that was the first experience. It wasn't like, hey, welcome to Texas.
Starting point is 00:36:16 That's 5,000 PSI. It'll blow up. Okay. It wasn't hello, welcome, good to see you, get your gas here, come get some snacks inside or whatever. It was, that's 5,000 PSI. It'll blow up. I'm over here wondering how many times we can get Adam to say that.
Starting point is 00:36:33 Two more times, two more times. I will say it on command in the future too. Amazing. Just say do the bit, I'll just do it. Well, speaking of blowing up, this Git UI project sure is blowing up on the scene. What is Git UI? Git UI is a blazing fast terminal UI for Git, and it's written in Rust, which brings me to a subtopic that I want to ask you about, Matt, soon.
Starting point is 00:36:57 But let's talk about Git UI first. Written by a guy whose handle is extra worst. So he's not just the worst,'s the extra worst but maybe the sausage kind i don't know it looks versity doesn't it it's it's verse extra verse you know it's like it's normal verse yeah but this is extra first so don't worry about it by the way i do that german accent to germans and they go what's that it doesn't sound like it just it doesn't sound german it's just good no oh no it's so bad that they don't even know whereas everyone else is like oh that's a good german accent so i just think it's not i was about to give it a compliment yeah because i don't know yeah okay all right so
Starting point is 00:37:33 here's uh extra verse description or why he made this tool you gotta do it right jared extra verse matt you want to read this in the German accent for us? It's in the doc there. The, I do, I do most of my get work. I do most of my gets work in a terminal, but I frequently find myself using gets guis for some use cases like index, commit,
Starting point is 00:37:59 diff, stash, blame and log. Unfortunately, blame and log unfortunately popular gets quiz will fail with giant repositories or become unresponsive it's a little bit French
Starting point is 00:38:13 it did it also sounds like the way you do it it sounds very condescending as well as if the person is like a complete idiot like you're definitely making fun so we should leave that in but we should back that out and say, we, this is totally cool. Extraverse. We don't think that you're the way Matt's portraying you right now. In fact,
Starting point is 00:38:31 no, I'm just doing my German accent. That's right. Extraverse. Well, you know, we have a, we have like a, there's a stereotype that German people don't have a good sense of humor. And it, it's one of those that I don't know where it comes from because every single person i've met from germany has like a extra versed kind of sense of humor like it's uber good i love it so hopefully our friends in germany will appreciate that but to read it in in terms that we can all understand here he's he does say that a lot of the Git GUIs fail on giant repos and become unresponsive and usable. So he built this. It's in the terminal. Would you
Starting point is 00:39:10 use it is the question. It's written in Rust. I know, Matt, it's not written in Go. But would you use it anyways? Because a lot of us say, hey, I like to keep it simple. I like to stay in my terminal. I'm in the same way. I'm going to shout out one Git GUI here near the end. But mostly I just use the Git command line like you do Matt
Starting point is 00:39:26 but what if you had more at the command line you don't have to leave your terminal and it's not going to choke on the Linux repo for example would you use this? Because it looks pretty sweet Well I feel like I need to come out now and tell you that I actually use GitHub Desktop Why do you say that you use the terminal? No, no, no.
Starting point is 00:39:46 I said that because it's really complicated. I avoid complicated stuff. This I like because... I must have misheard you. Yeah, we can go back and check the recording, mate, if you're calling me a liar. Yeah, do that little rewind sound. I used to...
Starting point is 00:40:02 Hello, now I'm back to doing this accent again so go back further but what I like about this is it reminds me of early computer interfaces like really early MS-DOS type I used to do QBasic
Starting point is 00:40:19 when I was a kid and so it has this real retro feel which I really like. But kudos to writing in Rust because I feel like for the times when you really need performance like this in this sort of case, I think Rust is a great choice. Okay.
Starting point is 00:40:36 So you're not offended by that? No, no. this episode is brought to you by our friends at postman postman is an api platform for building and using APIs. They are most known for API testing, and you may already use them, but they've built a full-featured API platform to help developers along each step of the API lifecycle. But what does it mean for Postman to be an API platform? Well, from API design, testing, monitoring, documentation, mocking, to the sharing and discoverability of APIs, they've built a full suite of tools to help teams build APIs together faster.
Starting point is 00:41:29 Over 20 million developers use Postman to deliver their APIs. Plus, they have a generous free tier. Start designing, developing, and testing APIs. Organize all your API development into workspaces and share those workspaces with other developers. You can create public workspaces to collaborate with the world's developers. You can back up your work to Postman's cloud. You get
Starting point is 00:41:48 their core tooling and collaboration for up to three users. Sign up and start using Postman for free today at postman.com slash changelogpod. Or for our listeners already using Postman, we encourage you to explore the entire API platform that Postman has to offer. Again, postman.com slash changelogpod. So the subtopic then, so language support, where language is these tools are written in and therefore distributed in. We have two in Python. That was the heat map and the git sim.
Starting point is 00:42:36 This git bug is written in Go. Git UI, written in Rust. The next one we're going to talk about, if we get to it, git branchless, also written in Rust. And that got me thinking. I still can't tell if you're saying get to it or get to it. I mean, you're really getting me here. If we do a Dan Tan.
Starting point is 00:42:49 Did you see that, Matt? You liked that one, didn't you? You're really getting me. You're really getting to me. I'm sorry. I had to punt it out there. Fair enough. Install, I think, is all that matters, right? I mean, in the end.
Starting point is 00:42:58 Well, that's the question. For me, it is. For Matt, I wonder if you're feeling like maybe Russ is starting to eat Go's lunch for command line tools. Well, I mean, first of all, I think, yeah, it's about what's the easiest thing to run. And if it's Python, and I've got some weird balked Python thing,
Starting point is 00:43:16 and I have to fix it or something, then that's a big barrier for me. But if Python's your bread and butter, then I feel like that's okay. I just don't use it enough that I have any confidence in it. So I do like that you get single binders. Yeah, the Python one gives me pause as well, just because I don't know if it's going to go right.
Starting point is 00:43:35 Can you mention, you do the talking, Jared. Can you mention pip install, your feelings about it? Yeah, if it's pip install for me, I just have anxiety. Even though it works most of the time it's the same way and hey old school rubyist but if if i see your tool and i see it's written in ruby i'm kind of like do i want to mess with this and that's how i am with python as well their stories are just fraught do you not use github then that's ruby in it well i don't mind the website i'm talking about a tool that I'm going to install with dependencies locally.
Starting point is 00:44:07 As a dev tool. Yeah, I got no problem with Ruby-based things, but if you say gem install this tool, I'm like, you know what? I don't really trust my Ruby environment over the course of years on my Mac, and I'm the same way with Python. Whereas with Go, and with Rust, it seems, and
Starting point is 00:44:23 JavaScript's had the same bad story for me, but Deno is actually showing, and with TypeScript is showing some new opportunities to have universal binaries, which is cool. I'm just way more likely to say, if you can just grab a binary, drop it in your path and execute it, I'm like, I will do that 100 times a day.
Starting point is 00:44:41 But if your tool says pip install, or it says gem install, or it says npm install, I'm kind of like, ugh, do I want to mess with this? That's just my sense. Does that resonate with you guys? Especially if you're on Linux proper. If you're on Mac, it's different
Starting point is 00:44:54 because you kind of have to use Homebrew or pip if that's the way you want to go or maybe vanilla straight up Ruby or a binary. But if it's on Linux, it should be inapt or whatever your platform would be. Yum or pick your...
Starting point is 00:45:08 It should be a package. Or you should have to update your registry with whatever package directory you want to use and apt update and get that and install. That's my feelings. I don't like to pip install anything if I don't have to. Yeah, when I get a new computer, which happens more than I can justify,
Starting point is 00:45:27 I don't like it when the first time I'm forced to just add all these tools to be able to install stuff. Like, I feel like it's a nice, clean machine, and then I hold off and I hold off. You're muddying it. Yeah, at least if it's a Go binary, I can delete the file and it's gone. And I know where it is.
Starting point is 00:45:47 When I install, I don't know what happens when I npm install something. Sometimes I'll do that in the wrong folder and then I get a node modules folder on my desktop, which is synced through iCloud. So it uses, you know what I mean? Like it could be a can of worms. Right.
Starting point is 00:45:59 So I am, yeah, into that simplicity thing. But if I'm using, if I'm already using that tool chain, if it's a tool for, say, people who are writing Node, then it completely makes sense that it would be written. If it's a data tool that's going to be used mostly in Python, then I think you also can get away with it, although you still have version issues. But yeah, you can't.
Starting point is 00:46:22 I mean, just a single binary, I love it. General purpose tooling that wants to be used by people that are outside your particular ecosystem ideally which should be packaged in a way that we can just you know isolate it install it drop it in our path and execute it and delete it uninstall it and delete it without worrying about it just like spreading files all throughout your desk i remember on, I used to sometimes, like you'd install something and then you're like, oh, I want to uninstall that.
Starting point is 00:46:50 And there's no way to, obvious way to do it. So then you Google it or you duck, duck, go it. Right. And it's like, okay. You went there. You have to remove these files, then go and find these files and remove them. Then open the registry. If you want to remove these values from the registry,
Starting point is 00:47:04 you know, like. Yeah, and it scatters, it changes throughout your registry throughout your registry and you're like ah i have one global registry and i don't know all the places that's been changed yeah yeah it was you actually had to do occasional just reformat your computer to clean it all and that used to bother me and i like on a mac but you applications are mostly contained inside that single zip. Mostly. But not entirely, though, right? No, not entirely, yeah. I'm going to think with the M1, there's more change. Like, didn't Homebrew move to the opt directory, I believe, wasn't it?
Starting point is 00:47:33 Oh, yeah. Yep, Homebrew installs into opt now versus user local. And I can't recall why that was, but that was a new change in order to... I'm sure some sort of security enclave reasoning, right? Maybe. It's just challenging, yeah. I mean, you've got P lists that spread about. You've got something that might be in my application support folder.
Starting point is 00:47:55 Give me a good self-contained uninstaller with the thing. Give me an Eject button, whether it's an application that I install as a literal Mac app or, you know, a dev tool. Give me an uninstall flow that respects my system. Because, like, I'm sure you, developer, developing it, care about your system. Keep it pristine. And with reluctance, install new things when it's a new machine for sure. Yeah, I think the only upside of that style is that you do have preferences that
Starting point is 00:48:26 persist if you uninstall and then reinstall or upgrade yeah but you don't always want that do you yeah exactly but sometimes you're like oh actually oh i don't have to redo this that's nice it has pleasantly surprised me once or twice but most of the time i don't want it i want it to be completely gone yeah sometimes i'll uninstall something because I can't figure out how to change a setting back. And then I uninstall it and then reinstall it and it's remembered the settings. It's right there. Yeah, it's right there for you.
Starting point is 00:48:53 It's waiting for you. And I have to, I'm like, where's the registry? Is there a registry? I know that's, but I'm on a Mac, so there isn't. Another culprit is installing something to.local in your root directory or your home. Yeah, your home yeah your home i guess and not removing it or putting it in like a hidden folder i mean obviously i'm going to do a
Starting point is 00:49:10 ll or l depending upon what your flavor of how welsh you are lsu use i mean if you got a if you got an alias or whatnot you know which i do because i use oh my zsh he doesn't have time to type l twice yeah i don't like just one just one nobody has time for that. You're a busy man. Why two when you can just do one? Good question. All right, so quickly, Matt, respond to my second question, which was, as a gopher, as a representative of the Go community,
Starting point is 00:49:35 do you feel like Rust is encroaching on your previously standalone domain of these command line installable tools? There's a lot of new tooling, whereas Go was the thing for a little while where it's like and it's written in rust does that does that are you feel intimidated or encroached upon no no i remember when go was like becoming that and i would always say at the time like you know write it write it in whatever you want right it's like whatever's the right tool for the job so that's that attitude can't really like don't really deviate from that i think i think go i
Starting point is 00:50:10 don't think rust will just defeat go because it's really hard to learn and that's the trade-off you make it's like much harder to learn much harder to write rust but the trade-off is you get much more secure much safer execution and i guess if it compiles you've got a high chance it's going to be correct and so there's like benefits there but i think yeah i think goes you know it's i don't know if it's just like we'll see how that trends happen it's definitely will there'll be trendy sort of things going around but i don't know i think they'll coexist basically forever these two fair enough i was hoping for a less reasonable and nuanced position but you know i
Starting point is 00:50:50 can only so reasonable expect so much okay well in that case i could get my guitar and do an anti rust song if you like okay i do oh we're in for a treat here matt has left his chair his his mac display is tracking him throughout the room. He's back. He has a guitar. The Mac display is annoying because it follows you around
Starting point is 00:51:10 when you move. Yeah, talk about surveillance capitalism. I try and sometimes move out of frame to pick my nose and then the blooming camera follows me because everybody sees it. What's this song called?
Starting point is 00:51:23 Anti-Russ song? Yeah, I don't know. I guess, yeah, I guess that's going to song called anti-rust song or what yeah i don't know i guess um yeah i guess that's gonna be an anti-rush what key do you want to call it rust away oh yeah okay yeah i should just do it we can always cut this can't we no it has to go in. Hey, baby, what you typing in? I ain't never seen such crazy things. What the heck is all this gonna do? I got some very bad news for you You're gonna rust away
Starting point is 00:52:16 Gonna rust away You're gonna rust away Today You're gonna rust away Today Rust away, Mike Reier. Woo-hoo! Yeah, that's really sweet. Can I critique? Yeah.
Starting point is 00:52:39 Can I critique? You're gonna hurt his feelings. No, do it, because it wasn't great. It won't hurt your feelings. So if there was a version two, no you're gonna hurt his feelings no do it because it wasn't great it won't hurt your feelings so if it was if there was a version two let's say you go away and you think about sleeping or maybe you sleep a little bit and you dream and you think this is actually a hit song i could probably do something with this i would just encourage you to put a little bit more rust
Starting point is 00:53:00 lang specifics into it yeah i don't know enough to do that i was thinking that uh i was gonna mainly focus on like i could have mentioned cargo or anything i mean really anything yeah my knowledge is really limited i was gonna focus on like um it's really it was really quite awful yeah i was gonna focus on uh like vulcanizing things and actually like, you know, to prevent rust. Like to actually, like they use painting and stuff to protect the metals so they don't rust. Anodized, yeah. Rusting metal, why would you want that? It's red iron oxide.
Starting point is 00:53:34 There's lots of ideas, but yeah, it just didn't happen. I'm sure if Dan Tan had done it, he would have done a much better job because I know he's particularly good at songs. Dan Tan. it would have done a much better job because i know he's he's particularly good at songs tan tan so one quick hat nod to uh the git ui project is that it seems to be easily installable regardless of originating language which is super awesome great song matt thank you for sharing that with us it was awesome i was gonna hop in and start singing with you, but my skills are a bit rusty. Sorry about that.
Starting point is 00:54:09 Let's move on. Git branchless. This is our last one of the list here. High velocity, monorepo scale workflow for Git. This is like a grab bag of utilities. It's a weird name, Git branchless,
Starting point is 00:54:29 because it doesn't have anything to do with branching really, but it adds a bunch of cool stuff. Like Git undo, like a very nice. It's a weird name get branchless because it doesn't have anything to do with branching really but it adds a bunch of cool stuff like get undo like a very nice it's a good name then isn't it jared oh there's no branching yeah it's branchless and you're like oh what's called that it doesn't have anything to do with branches but that's it's called branchless that's not an impression yeah but why would you name yourself based on what you have nothing to do with like i just feel like it's not the way to do it. Yeah, maybe because they're against it. I don't call myself Jared Rustless, because I don't write any Rust. Good name, though. I like that. Sounds like a cool guy.
Starting point is 00:54:54 I'll consider it. They call me Jared Rustless Santo. That's a cool name. That is pretty cool. I might pick that up, actually. All right, I revoke my argument. The point is, there's lots of cool stuff here. Smart Log.
Starting point is 00:55:07 Get Undo, Get Restack, Get Sync, Get Move. Lots of good stuff. Written in Rust. So it's not Rustless. By Waleed Khan. And been out there for a while. But
Starting point is 00:55:24 not too much to say about this on the show, for me necessarily, except for that it's just a lot of very nice user experience improvements in your command line Git. So if you're not like Matt using GitHub Desktop, and you're a real dev using the command line, then maybe check out Git Branchless. Yeah.
Starting point is 00:55:44 In terms of naming, you know, same song, different singer, since we're talking about Rustaway and Matt's doing some jingles for us. I was thinking Git Utilities. I mean, it's a bunch of utilities. Why not like make a standard utility library?
Starting point is 00:56:00 Right. So I googled it and there is a Git Utils, but it's not maintained. Well, no wonder he didn't name it that. It's not maintained. And it's sort of like, I don't want to call it dead, but the last commit was two years ago. It's probably either perfect software or unmaintained. Right?
Starting point is 00:56:18 It's tough to tell the difference sometimes. I was just talking about this recently, I think on ChangeLog News, on a post about quitting, what's the difference between quitting and being finished? You know, they're quite a bit difference, but with open source, you can't tell like, is this thing unmaintained or is it actually finished? Some things are just done. Other things are abandoned and you got to find out which is which. Yeah. This is, this is always the problem that I have. Um, because because people one of the ways they decide if a project is worth using is the look when was the last release or like you know and and it's almost like we're
Starting point is 00:56:52 almost to the point where we're just going to do releases regularly for the sake of it even if nothing changes and it sort of encourages bloat encourages feature bloat as well. When a tool kind of nails it, then you don't need to keep going on that. But similarly, software's never finished, so it's not so simple. But yeah, tough one. We almost need a health meter or something like that, built into GitHub or external socket.
Starting point is 00:57:22 They do a lot of security stuff externally from the repository, regardless of its origin, whether it's GitLab, GitHub or whatever. We almost seem like a health meter or at least a democratized version of it. That's like, okay, this may have had a commit two years ago, but it's still, it's being used.
Starting point is 00:57:38 Like the downloads are still way up, for example, or the, you know, this release is getting pulled constantly into like other things. You know, there has to be a different metric than just simply last commit. GitHub does have that pulse page, which they've kind of, they've kind of hidden that, but the pulse, which is kind of that, but it's kind of like what's been going on on this project recently.
Starting point is 00:57:58 And you can at least go there and see, well, there's been 17 new issues and no response. Like to me, that's probably abandoned because it's generating issues for people, but not even being responded to. Generally, finished software is at least, I mean, there's still going to be things that come up over time, but kind of less bugs per response.
Starting point is 00:58:17 And then there's like, you know, PR has merged recently and it'll just show you like what's been going on. It's not exactly health though. It's more like recent activity, which can be a proxy for health, but not always. Well, I have good news for you, Jared. What's that? DoneOrPerfect.com is available.
Starting point is 00:58:33 So, I mean, we can encourage somebody to build a tool called Done or Perfect. So you got to pick which one it is? Not Dunder Mifflin. Done or Perfect. Done or Perfect. So I don't understand. I guess you're going to mark your project as done or perfect.
Starting point is 00:58:48 Wow, I just was, you know, on the whim here. You know, I'm trying to create a, you know, rust away song for you, man. Come on, give me a dime. No, just some sort of, you know, I mean, I don't think that the insights tab is that insightful in this regard. So maybe there's something that could be done. Maybe it's just a fun project. Like Matt said,
Starting point is 00:59:07 this is just a fun thing. And then maybe GitHub acquires you. And the next thing you know, you're a millionaire or a billionaire. Or you got some stock options in the juggernaut that's called Microsoft that's just like slaying it out there. You know? I don't know.
Starting point is 00:59:22 That escalated quickly. One could dream, right? Yeah. So if you register doneorperfect.com, you're going to be a billionaire
Starting point is 00:59:29 with Microsoft stocks. If you do, yeah, if you execute well, yeah. Yeah,
Starting point is 00:59:33 probably. If you, if you, if you do it, just do it. All right. Should we hop to unpopular opinions
Starting point is 00:59:38 or should we, we have, we have more things that we've shared that are Git related, but we can also just get on with it.
Starting point is 00:59:46 Maybe a state of Git internally here. How do you Git, Jared? How do you Git, Matt? And Adam, how do you Git? Speaking of myself. Are you a simplicity person, Jared? I know that you just use terminal.app not iTerm
Starting point is 01:00:02 or even Fig or, you know, what else have we had on the show? I do use ZSH now versus Bash. By force. I use it as if it's Bash. I can't believe you were having a go at me for using GitHub Desktop and you just used the basic, the first,
Starting point is 01:00:18 the only thing that's already installed when you get your first computer. You mean a terminal? Yeah. Like real developers do? I don't subscribe to that. I don't actually either. But I do use it. And I do use it almost exclusively.
Starting point is 01:00:35 So now I like a Git GUI myself. So I can get graphical. And the one that I prefer is called GitX. And GitX has been a long, long time project that's gone through multiple forks and abandonments and community pickups as macOS has changed dramatically over the years. And so there was this Rowan,
Starting point is 01:00:58 I think it was Rowan J had a fork of GitX that they maintained for a while after the original GitX author didn't want to do it anymore and then that went unmaintained and i went searching actually for a gui specifically for a few things i like to do staging and committing especially like what do you call it chunk commits like specific lines of a file and like selecting all that. I like to do that in a GUI and not from the command line because it's just clunky from the command line.
Starting point is 01:01:32 That's the main thing I do inside of a GUI. And so GitX was gone for a while. It was just like abandoned. I was super sad. I started looking for a new one. And then it got revitalized in the last year or two by the community. That's like the best side of open source, right? Like people that loved it and wanted to use it picked it back up.
Starting point is 01:01:50 And now it's under like the GitX GitHub org even. It's not some user's account. And it's an open source Git GUI for Mac OS. That's under active development once again. Mostly maintenance mode, but I'm happy in maintenance mode because it's a good GUI. once again. Mostly maintenance mode, but I'm happy in maintenance mode because it's a good GUI and I don't need
Starting point is 01:02:10 any new features, honestly. It does what I like, and I like what it does. And so that's what I use. I use the command line for most things, git log, git status, simple commits, like git commit dash all with a message, command line, push and pulls, command commits, like git commit dash all with a message, command line, pushing
Starting point is 01:02:26 polls, command line, but staging, reviewing, that kind of thing from git x. So I would highly recommend that for macOS users. Let's give a little shout out since you mentioned the fact that this is being maintained. Thank you to, this is not sponsored, but I am a fan, Mac Stadium. In the footer of the readme, it says, well, that's the license, nevermind. The one before the last, not the very, very end of the readme,
Starting point is 01:02:54 almost to the end of the readme. It says this project is supported by Mac Stadium open source developer program and they give them a free Mac mini for their CI. So they say thank you to Mac Stadium. So I mean, that's super cool. Like I think we should do like shout outs to like those that are supporting open source in some way,
Starting point is 01:03:10 shape or form, just like giving services away to enable just no new features, but just stability, right? Just keeping the thing alive. Well, shout out to me then I donated a M one Mac book to the whales project uh which is whales app you know you can build desktop apps using javascript and they're great they feel like native apps and i wanted to
Starting point is 01:03:35 support that project i don't talk enough about what a sort of open source hero i am frankly uh so really well that's what we have here matt could you sing yourself a song about yourself maybe matt is a hero in the open source world yeah yeah yeah that's the course well i did i did write testify which is goes big that's the testing framework everyone uses in go well we had you on the show talking about your stuff you had bit bar your x bar right so you got your open source bona fides yeah but, but I'm just, because I'm so modest, I'm probably the most modest person in the world. You seem very modest. Yeah.
Starting point is 01:04:11 And it's a big weakness. It's your greatest weakness actually. I don't know. I do myself a disservice. So this M1 MacBook Pro, it's being used by someone to maintain whales, I assume? Are they sharing it and mailing it around?
Starting point is 01:04:27 I love the idea of that. But no, someone has it and they use it to... Like a CI? No, no, they're using it to actually test. Because you're building desktop apps. And so M1 was very different and they wanted to... Yeah, there was work to do there. That's true.
Starting point is 01:04:43 That's a great point, too. I mean, when you do desk or platform specific development and you don't have the latest rev of Apple Silicon, you know, you need that and maybe you don't have the cash to shell out or want to, because this is just a fun thing to you.
Starting point is 01:04:58 Right. You need supporters. That's cool. And of course you can sponsor a lot of projects now on GitHub. So I recommend that. And I don't think enough companies do that. If you're a company and you use some open source project and you can sponsor it, I feel like you just should.
Starting point is 01:05:16 We should make that more normal, really. Especially if you make money off that project, directly or indirectly. For sure. Well, again, macstadium.comcom shout out to them super cool super cool so you're a pretty simplistic git user then jared i mean you you mainly stay command line only except for visual specifics yeah yeah keep it simple you know you're a simplistic git that's what he just said to you i love that and i owned it i do i agree clip it well i paused simplistic git user yeah you did pause and that's where we'll do the
Starting point is 01:05:53 cut yeah i had to do that yep just remember that you know i had to describe to you guys what get meant earlier in this show so i'm not sure which one of us is simplistic, but. Well, that's just because you DDU better than we do. Yeah. Or DDG. I thought you'd at least go DDW. I duck, duck went faster than you guys could. All right, Matt, your turn. How do you get, how do you get?
Starting point is 01:06:15 I like to keep it simple. I'm a simple get. Yeah. I like to, if, if there's, if it's complicated, if it's like, oh, there's a conflict in this file, I'm like, forget it. I'm out. I just put in my letter of resignation uh no yeah i tend to use github desktop as much as i can and then i'll go into the command line if i have to if things aren't things aren't working for me i'm not one of these like some people like jared's a couple of times hinted at being like
Starting point is 01:06:42 like i'm not a proper dev because I use desktop apps and stuff. I know, Jared, you're joking, but I still have a song for you. I'm also serious. Oh, you have a song for me? Uh-oh, look what I did. Gosh. Look what I did. Two songs in one show, is this possible?
Starting point is 01:06:58 Don't say that because hopefully the first one gets cut. What's the title of this song? Keyboard Wizard. Keyboard Wizard, okay, good okay good oh i feel like howard stern you know howard stern pause one second howard stern does a great job of having awesome artists on his show to do like renditions of their song and right live version i feel like howard stern right now like what's your song title okay go ahead go go ahead go all we need is an awesome artist and then we will be him well meanwhile you've got me i don't care what you wear don't
Starting point is 01:07:27 care if you swear it doesn't mean that much to me you can do what you need do as you please you'll hear no argument from me except what's your ID? Your ID please I want to know so I can see Are you a fizz coat like me area one of those keyboard? Wizards that you see Oh Speaking of which.
Starting point is 01:08:07 I'm a keyboard wizard. I don't need no mouse. Get that trackpad away from me. I know combinations. It'll rock your foundations. I dare you. Screenshare with me. Screenshare with me Screenshare with me Screenshare with me I want to know so I can see
Starting point is 01:08:34 You a keyboard wizard I don't need no mouse A trackpad is just a rectangle as far as I'm concerned I'm a keyboard wizard Woo! That one's a keeper. Yeah, that's a keeper. That one I actually did write. That's a good one.
Starting point is 01:09:00 Thank you. But also, very serious point there, which is let people just use whatever tools they want. Don't make us feel bad because we can't get out of Vim just because we can't quit Vim. Well, that leads me to a serious question, though. As a VS Code user, have you done any of the VS? Because VS Code has
Starting point is 01:09:18 a bunch of Git stuff built into it. Have you tried any of that stuff? Do you like it? Or are you just like, I'm happy with GitHub desktop, don't care? Actually, yeah, for the simple stashing, committing changes, I'll just use that in the ID because it's right there, exactly. And then if it's a little bit more complicated, I'll open GitHub Desktop, and then if I can't do that,
Starting point is 01:09:42 I'll phone up one of my smart friends like Jared and ask him what do I type in to make this fix please debatable yeah Hostinger Tutorials mentions that GitHub desktop specifically says if your remote repositories on GitHub they say quote this tool will be the most useful for you so I mean that's a large tribe right I mean a lot of have software there. But I do agree that at some point you graduate. It's like, well, certain things can be done via the command line. I'm here. Why eject and go somewhere else? Certain things should be done if you're in VS Code. Why not use some of the visual aids inside of VS Code?
Starting point is 01:10:17 I'd do that. Like, you know, I might add a file to a commit that I'm staging up and whatnot and type the message in and along i go why go to a full-on github desktop experience well maybe you're visualizing are you doing something with issues or maybe there's a pr going on and it's a bit more complicated and a bit more github specific yeah it makes sense yeah it does use whatever tools you like use whatever so for me thank you for asking adam what's your favorite ever song favorite ever song okay well i'm gonna go to your side of the pond i might say something from the beatles i'd probably pick from yesterday i might uh yeah i'm just
Starting point is 01:11:04 actually i'm a big fan of the movie yesterday you've ever seen this movie i've seen the movie yeah what a great premise amazing amazing movie but it's a great song too so i'm a beatles fan the premise of yesterday is this guy just discovers that the beatles never existed and so no one knows them and but he knows all the songs and he's like a songwriter so he just pretends he writes the beatles songs right and then they're all hits and he becomes a super famous chap yeah i love that i also love the beatles very much i have an original sergeant pepper's album in mono which is which is good i just listened to it in one ear because you might as well and yeah it's just beautiful paul mccartney i think probably one
Starting point is 01:11:46 of our greatest ever songwriters you know just amazing phenomenal phenomenal artist so that's so yeah my answer is that i mean i think uh the beatles is is on my list of top artists top songs like if i had to pick a song on replay forever i would say don't but if i had to if it was by force absolute force what's this hang on what's this what's the situation how i say don't but if i had to if it was by force absolute force what's this hang on what's this what's the situation how what i don't know i don't want to speculate but it's it's probably terrible gun to your head or they've got your kids oh the phone calls coming from inside the house come on now you want to do a liam neeson situation here you want to go you want to go there matt oh matt loves liam he doesn't care. Gosh. I want you to listen to the same song on repeat forever.
Starting point is 01:12:30 Or I will find you. Yesterday. Yesterday. No mercy. Oh, gosh. You played into that brilliantly. Matt, I knew you had a Liam Neeson up your sleeve. And so you were just waiting for an opportunity there.
Starting point is 01:12:44 I figured he could do that. Can't wait for someone to mention Jack Sparrow. I think we drained Matt of all of his talent on this one episode. I think he actually has, I mean, do you have other bits? We know you have Jack Sparrow, but I mean, you're pretty much done. German character, Hans. German character. Speaking of other modern, singer songwriter ed sheeran could you can you do an ed sheeran
Starting point is 01:13:11 version you also sing a lot too can are you do you like the guy i do i think he's a great songwriter actually so yeah i think he's i think he's good but no i don't i can't i mean does he have a distinctive voice i don't think i mean he does singing but yeah for sure but talking i don't know yeah i could do beatles though if you like i can do every beetle okay sure they're all different ringo you can do ring of course i can do ringo you know he's very bouncy when he talks you know that's ringo and it sounds like he you know he doesn't know what he's saying but he does you know and you know paul mccartney's a bit like that too bounces around but he's a bit more upbeat and also you know, he doesn't know what he's saying, but he does, you know. And, you know, Paul McCartney's a bit like that too, bounces around. But he's a bit more upbeat and also, you know,
Starting point is 01:13:48 he seems to know what he's doing. John Lennon was always very wiry in his voice, you know, when he talks. So it's very different. Yeah. And then you've got George, who's my favourite, because George really doesn't sound like he's, doesn't really sound like he's all there, but he's really good. He wrote about, here comes the sun, know all right did you know that pretty good
Starting point is 01:14:09 oh gosh look what you've done adam opened up this can of worms you can't put the worms back in the can i love it can you actually get cans of worms like can you buy them oh of course for fishing or something just eating for sure you can literally get them and you can figuratively get the version that's a simulation or you know not really the can of worms you could buy the one for the kid like the prop you know oh yeah where the big snake flies out when you're right and it pops out that's one worm though in it i wouldn't say i'd say that's a can of worm well you buy more than one it's cans of worm yeah it's like attorneys general exactly i've got one pick that i'd like to also
Starting point is 01:14:56 bring up that i learned about at fosdem oh yeah please do and this i think is very cool it's reviewpad.com and this is like smarter prs and rules around prs so in a lot of my projects i like to have it such that pr goes up and then we automatically run all the tests and everything and only if all those tests pass and they can be back-end unit tests they can be integration tests sometimes they can be front-end tests end-to-end tests like whatever it is that gives you the confidence to release to production you can gate the pr on that so that it doesn't go into main so you never your main is never broken your main branch well that can be sometimes a little bit too strict and review pad lets you actually create some more nuanced rules around this so you can say for markdown files, just let them go straight to main. You can say like, in this case, I want to,
Starting point is 01:15:51 I want to push to main, but I still want someone to review this at some point. So it's like still in there. It's low risk. So you want to progress and later someone can check it. You can say things like for all go files, you want to make sure the entire test suite runs because it's quick, so it's no big harm. But you can even do things like for new starters, for like different groups of people. You might say new starters, everything should run for them, but the more senior people have slightly more relaxed rules and they're allowed to push without all the checks happening. And even individual functions, you could mark a functioning code as critical. And if anything inside that changes,
Starting point is 01:16:32 then it makes sure that all the tests will run all that whole pipeline executes before it is allowed to merge. I think this is the next level, the next generation of PRs. This is something that, I mean, I don't know who owns this. This is something that I would expect to have in GitHub at some point. Like, this is really good.
Starting point is 01:16:53 I haven't used it yet, but I do intend to. What do you think of that review pad? I like all the words that you just said about it. It's brand new to me. It sounds really cool. A glowing review from you which which does mean a lot to me so i'll definitely look closer at it but i think that it's too late to start being nice to me now jerry well no one's listening anymore we lost him at here comes the sun but but yeah i mean
Starting point is 01:17:20 definitely we'll check it out i think that prs they stand, leave a lot of things on the table. And we know there's lots of teams building things like this in order to flesh out and improve the code review process. We had a show last year on Graphite, which is stacked diffs, which plays in the same ballpark as this, but they're not tackling it the exact same way. And I know a lot of people are enthusiastic about that.
Starting point is 01:17:44 Christopher Hiller, Boneskull on JS Party, actually gave an unsolicited graphite shout-out in his pro tip time because he's been using that and has been loving it. So that's another tool that maybe we'll just link to. But that's my thoughts on the matter. I have never seen this before this afternoon, so I have to check out more of how it does what it does.
Starting point is 01:18:04 But yeah. It makes sense. I mean, it almost as if like this could even be similar to the way you have infrastructure as code it's almost like you know to main as code i don't know just like yeah something that says like we have to have a gate on this process and like you had said there there's certain things you can go through more nuanced rules and that totally makes sense and a one size fits all get pushed to main does not always fit so i can see how this makes sense the thing i think i question though is less the tool itself more like like steve jobs said about dropbox is this just a feature is it a product or a company you know i wonder if like in some cases this is a great stand-up of a feature that should just be GitHub proper,
Starting point is 01:18:49 if that's what the majority uses. Interesting. I mean, I wonder if their strategy is like an acquisition thing. And sometimes that's a great strategy to have. You've done it a couple of times, right? I mean, it's a good... Yeah. I don't know if that's been your strategy,
Starting point is 01:19:05 but you've done it... Yeah, three times. Yeah. Yeah, but they weren't features. I mean, actually, I think solving one problem and doing it really well is well worth doing.
Starting point is 01:19:16 And yeah, like maybe you'd struggle to build a business around it. I don't know. Yeah. Well, that's the hard part. It's like, here's this thing. It's great. It's useful. But man, it died because there's no company. It's just a feature. Yeah. So that's why
Starting point is 01:19:30 we have to sponsor open source if we want to keep it alive. We can't just expect it to keep going. And we have to normalize that more. We've got to do more of it. It's hard to justify sometimes, but it's important i think it's certainly becoming more normalized but i think as it becomes normalized it becomes the paradox of choice it's like well there's so much open source there's so much usefulness i can't possibly give to it all so i either do nothing or i just don't know where to put it and i just am just guilty i feel guilty yeah so that's interesting i wonder if we could get like a heat map of usefulness of your dependencies yeah how often is that code executed i would say
Starting point is 01:20:10 a git heat map sounds pretty cool honestly we could do with observability tools if you've got tracing and you've got like you know observability running in your code you will have insights into the code paths and stuff you probably could gather some stats on the most useful bits. That might just layer on the guilt, honestly. Why don't you just pay for the project then, if you're feeling guilty? Well, I mean, it's not me, man. It's somebody else, of course. No, I mean, I think that I just...
Starting point is 01:20:37 It's Dan Tam. Dan Tam. Dan, pay for your project. The point you're making is great, though. We should support open source more. I think, you know, I always want to see more clarification on the how. You know, GitHub sponsors is one answer, but, you know, it's an avenue. It's not, well, it's not like what.
Starting point is 01:20:57 You know, the what becomes infinitely harder to define if you don't examine the open source you use that's useful to you. And then sometimes it might be corporate sponsors. It may actually be open source, but it's a company who's backing you. Well, you're going to support that thing? Well, maybe. You might use it as a support, but they're already a company. Just buy the things that support them to make it.
Starting point is 01:21:21 There's no wrong way to support open source. I like all the words that you just said thank you i don't agree with your point all right it's a quiet compliment that was a very yeah jared by the way just for future reference if someone's describing something and you like all those words i feel like you'd like the thing i think it's safe to say yeah i like that okay i'll check it out yeah check it out you will like it i just don't like to give you too much credit you know i don't like to like give you exactly what you're looking for because you you you beg for so much well let's close up with a lightning round this has been a fun conversation a long one you know way more singing than than expected or hoped for or or
Starting point is 01:22:01 desired or appreciated but a lot less than i expected i was i was i'm really here to do songs and there's been a lot of talking about it's been a lot of time in between a lot of time in between tracks talking about git that's funny yeah we should have changed the premise to like matt sings a song interspersed with git conversations what a great you'd go to that gig wouldn't you well you have one more chance here because we're going to do a lightning round of Your Brain Child on GoTime, Unpopular Opinions. And surely you can strum us
Starting point is 01:22:32 out the theme song for the jingle for Unpopular Opinions. Can you not? Otherwise we'll have to splice it. It's hard. We can splice it right here. Gosh. We're back to this again.
Starting point is 01:22:45 What's the alternative? Yeah. Splice it in. We'll splice it. I actually think she'd probably leave. Unpopular Opinions So for those who don't listen to Go Time, Unpopular Opinions is a regular segment
Starting point is 01:23:20 where people share opinions that they think or hope or expect to be unpopular with a listening audience. And then we put those opinions out on the social medias to see if it's actually unpopular or not. Now, what we found over time is that most unpopular opinions are actually popular when it comes to polling time. But there's been a few people who have been somewhat unpopular and a few who've managed to be incredibly unpopular with their opinions i'm actually in the top five most unpopular opinions of all time what was it that js party's better podcast and go time phil's bad for js party which was unpopular of course with the go audience but uh we're gonna do a lightning round real quick so
Starting point is 01:24:04 adam passing to you first one do you have an unpopular opinion you'd like to share i think my unpopular opinion is i don't have any unpopular opinions i tried so hard to think about like something that is unpopular and all i can think about is popular things like what well i think if you're struggling to get something done consistently that you want to do, my unpopular opinion is that you should learn to habit stack. It's a superpower. Habit stacking is a superpower.
Starting point is 01:24:31 That's right. Tell us more. But that's kind of a popular opinion if you know about habit stacking. Right. Like if you learn the, you know, the inner secrets of this dark secret, basically. So you have habits, right? Let's say you make coffee. This is my example for me, a really simple example. I make coffee once a day when i'm at work at least you know maybe twice and i wear glasses like you matt i wear glasses and as a glasses wearer you must be upset
Starting point is 01:24:55 or get upset when they're dirty yeah i get furious especially upset if you have to have a special microfiber cloth to clean them because you can't just use your shirt. Your glasses will smudge. Yeah. I hate dirty glasses. Now that I have a point of empathy, he can understand what I'm saying. So my feeling is like, if I'm going to have dirty glasses all day, that's upsetting.
Starting point is 01:25:19 Can't do that. Well, I'll forget. I get busy. I don't have this cloth in my pocket all the time. I'm going to have a stack. I'm going to make coffee and leave my cleaning cloth when I have time. There's steps between the coffee making, right? I see.
Starting point is 01:25:34 You brew the coffee. You wait for the coffee to brew. You pour it. You drink it. You stack this habit with a habit you're already doing. Right. So you stack a habit near another habit that you do consistently, and then you do it. Right. Okay.
Starting point is 01:25:44 It's a superpower. If you can learn to do that in it right okay it's a superpower if you can learn to do that in different ways let's say more productively let's say i don't know whenever you're running tests and you've got a minute or two and you have like three emails you can rapid fire off then you can do them stack up a habit of like you need to return these emails but you've got that minute minute and a half or maybe you've got a couple of minutes just stacking up or something that can happen that three minutes stack a habit of good communication could be the habit. And the way you execute is a few simple emails, maybe a return Slack message. Maybe it's a PR review or a one-liner or whatever it might be. Maybe a quick chat with chat GPT, who knows? I mean, just do something. Yeah. Is this just multitasking or is this more than multitasking?
Starting point is 01:26:27 It sounds like you're just talking about multitasking because am I in a habit of, well, I think in that case, no, no, no. Well, cause if, well, in that case it might be blurred, but in my case I'm like, I do have a habit and so I stack certain habits around that thing. So not only am I doing those other things, but now I think, okay, when I make coffee neurologically, I'm thinking, I got to clean my glasses because right here's the thing.
Starting point is 01:26:49 I just do it. So it's a habit that forms around other habits. Now, I don't wear glasses, but I would think- Show off. What about like when you realize they're dirty? Maybe you do it then. Well, the point is,
Starting point is 01:26:59 you don't always have that cleaning cloth. Oh, I got you. You know, unless you carry this cleaning cloth with you everywhere. And I just don't. So like if I'm deploying my code, I got you. You know, unless you carry this cleaning cloth with you everywhere and I just don't. So like if I'm deploying my code, I could floss my teeth.
Starting point is 01:27:08 Well, I mean, Jared, pick your habit. I'm just saying, if you got issues with flossing, then maybe, maybe. Yeah, but I kind of like this.
Starting point is 01:27:16 I wonder if it also works with bad habits because like, if you're like, maybe you're a nose picker. D-stack. You could D-stack things. I have a cigarette.
Starting point is 01:27:23 No, I don't mean so that you can do bad habits, Jared. That mad thank you every time you pick your nose have a cigarette that would work though you do sure it works with bad habits too i think it does yeah that's redirection that's i mean so if i understand you correctly maybe you have a bad habit and you don't want to do it and so when you think about the bad habit, you do a healthy habit. I like the bad habits. Right? Replace it with. Now I'm thinking like do a bad habit, like don't brush my teeth.
Starting point is 01:27:52 And while I'm not brushing my teeth, I can also be not wearing deodorant, for example. So it's like cascades, doesn't it? No, that's not. No, you want to do a positive. The second one should be positive. Well, I mean, it would have worked if you canceled it out. Let's say you did a bad habit. You're like, well, since I'm bad here, I should be good over here.
Starting point is 01:28:09 Yeah, that's what I was thinking. I should have tried to do that. I thought I'd do something. Like actually double up on the other end or something like that. All right. Well, this one was going to be unpopular with me. I think it's a terrible idea. I think habit stacking is the worst.
Starting point is 01:28:23 Sounds awful. Let's go to you, Matt. Do you have an unpopular opinion? Yes, I do. Yeah. I think, I think when we're building software, we very often focus on the wrong things. Like we try, I just think we always like we're constantly doing this. We don't focus on what's important. I mean, really you've got to solve a problem for somebody. That's what you've got to do. And we sometimes are so far away from that, so abstracted from that because of process
Starting point is 01:28:54 or just organization or whatever it is, that we're doing the work kind of in isolation and not in the context of what we're actually, where it ends up. In small tools and small projects, that doesn't happen so much. And especially if you're scratching your own itch, then that's a great way for this to not happen.
Starting point is 01:29:10 But when you get into bigger orgs, understanding the why you're doing something is so important. And everybody needs to know that. Everyone needs to understand it. It can't just belong to just some people and they decide what everyone else is doing so i think we yeah i think we often focus on the wrong things and we're just building the wrong things and usually like sometimes it's nice to just do a cool project and i would never want to
Starting point is 01:29:39 take that away from anybody but if you're just doing cool complicated stuff because you love it or it's satisfying to do and it's a hard problem and you're solving it then that's one thing but you can maybe if you can solve a problem for somebody with a script or just something much simpler if there's even just a tool already that kind of solves the problem like yeah I feel like we don't enough, especially because we're there to build software. We should remember there are other things in our tool belt and try and just focus on solving the problem and do whatever it takes
Starting point is 01:30:14 to solve a problem for a person. And try and know who the person is. Try and meet them if you can. If it's not you, try and meet the person. So that's my unpopular opinion. This just sounds like good advice, meet the person. So that's my unpopular opinion. This just sounds like good advice, man. This doesn't sound like a popular opinion.
Starting point is 01:30:28 It's like, I agree with everything you say there. Who's going to disagree with that? Well, you agree with how you execute, which you may not agree with. You said we're doing it all wrong, basically, or something like that? We're focusing on the wrong things? I think most people are doing it wrong.
Starting point is 01:30:42 Most people? I think like 90% of us are building software wrong because we aren't obsessed with that. It needs a soundbite, doesn't it? Okay, that's a little stronger way of saying it. There's your soundbite. Well, I agree with connection and meeting the people that you're solving the problem for.
Starting point is 01:30:59 That's key. You should do that for sure. Here's an actual unpopular opinion. Now that we've heard your guys' lame ones, here's a real unpopular opinion now that we've heard your guys's lame ones here's a real unpopular opinion and i know this is going to be unpopular because i've said it before and people haven't liked it oh so i'm going to say it again here we go and see if people like it automagically yeah you know the word automagically that's a dumb word we shouldn't use it i don't like that word at all. To me, it says, I have no idea how this works. Thankfully, nobody else does either. And I'm hoping the fact that nobody knows how it
Starting point is 01:31:33 works is good enough to impress everybody. So you ask somebody, how does that work? And they say, well, it's automagical. And we're supposed to all be like, oh, okay, it's automagical. Yay. And then move on. No, it means you don't actually know. If you knew, oh, okay, it's automagical. Yay. And then move on. No. It means you don't actually know. If you knew, you just explain how it worked. Because when you know how software works, it's not magic, is it? No.
Starting point is 01:31:54 But counterpoint, it means you don't have to know how it works. You can just use it. It works. And you don't have to know. Ah, you know what else means that? It's automatic we already have a word for that it just works automatically oh okay it just does it automatically why does it have to be mad why do we have to pull magic into it i don't know about that jared no let's
Starting point is 01:32:15 push back a little bit neither one of you agree with me i'm telling you this is an unpopular opinion this could be okay because you guys don't like this message received got it so automagically describes a process that's too complex whereas automatically is just there's no complexity in there the magically with auto makes the thing that you don't know how it works that's too complex you explain it that way automatically doesn't simply describe something that's automagical that's too complex and you don't know how it works i disagree i disagree that explanation was not automagical enough it's just like um it's just a spin it's a bad spin on something that could could be explained do you believe in magic what kind of magic it's like a hand what do you believe in magic? What kind of magic? Sleight of hand? Do you believe in magic?
Starting point is 01:33:05 Are you going to break into song here? No. I believe in sleight of hand, like in magic tricks, yeah. You can't not believe in sleight of hand. Well, that's why I don't understand the question. Do I believe in magic? Is there a group out there, like flat earthers, that are just like, no, we deny sleight of hand?
Starting point is 01:33:21 If anything, they believe in magic, don't they? Because they think it's not sleight of hand. Right. That's believe in magic, don't they? Because they think it's not sleight of hand. That's right. I just don't understand the question then. I was going to bring in a song, but you ruined it. Well, I did everybody a service there. If you can somewhat agree that magic exists to some degree, like things happen
Starting point is 01:33:37 that are very complex, that we don't know how they work. I mean, not literal magic, but like a version of things happening. Okay. Do I believe in the unexplainable? Absolutely. Okay. So that's a version of magic. Do I believe that there's software that's completely unexplainable?
Starting point is 01:33:51 Well, it shouldn't be. Like if you know your systems, maybe it means I don't want to explain it to you. What is the context of this word being used that you, that you like loathe? Engineers say it all the time. Who says it? Engineers. And we put it on our marketing, like, and then it automagically just works.
Starting point is 01:34:08 And you're like, nah, this is marketing lingo. You're spinning me. I don't like it. It's a dumb word. Gotcha. I don't like spin. Okay, don't spin me. There was actually a book about spin selling.
Starting point is 01:34:21 I used to, I grew up in sales, right? My origination into professionalism was in sales. And there's a book called Spin Selling. Look it up. You can tell you're in sales because you just said my origination into professionalism. Yeah, that's some spin right there. My first job. My first job was in sales. Yeah, that was an automagical saying. That's funny. Yeah yeah i know i mean matt i'm sure you've said it i used to say it as well when i was a younger person a lot of people love that term auto-magical
Starting point is 01:34:51 and i'm just going i'm growing sour on it so it's unpopular it's it's not a popular opinion i just didn't know it was that popular of a word all right listener uh let us know it do you agree there's three opinions here which one is here. Which one is the worst? Which one is the worst? It's going to be mine. It's going to be mine. Can we clarify that was not, Matt, you were making fun, were you? Were you making fun?
Starting point is 01:35:14 No, that's just standard German accent. That was just your being funny, doing an accent, right? Yeah. What do you mean? I wasn't, well. Okay, good. I just want to clarify that. Right here at the end of the show, I wanted to clarify that. Because that just, for a little while they're just set so wrong with me.
Starting point is 01:35:27 Oh, I'm sorry. And I almost said something. I almost stopped the show. You should if you feel like that. Absolutely. I mean, I celebrate different accents. I really love them. And so, yeah, impersonating accents is a fun hobby.
Starting point is 01:35:40 I was so close, man. My white towel was like... You're going to throw in the white towel? It was so close. No one has a go at Liam Neeson on my watch hang on though hang on it's okay to do British accent isn't it everyone does a British accent I don't I can't like you have Joe because I've heard you do it I try not to because I'm not good at it I think accents are all in good fun I think just the length of that
Starting point is 01:36:08 the length of the read as you went on it became more and more caricature well I think we made it clear that it was in good fun if not so I'm joking about any of the show as you may know I don't know if you knew that I was kidding around about stopping the show I wasn't going to stop the show
Starting point is 01:36:24 I was just being funny but it's a nice point actually it's a nice point because if somebody felt insulted by that i would i would be devastated genuinely right yeah yeah i want to clarify that like we were not trying to be insulting no we're not trying to be just just natural just talent natural talent it's just who he is how how and when? How and when do we end this? Never. I'm thinking like five minutes ago, probably. Yeah. Probably. When I try to say goodbye.
Starting point is 01:36:52 Goodbye. I don't know. Thanks, Matt. It's over now. Thanks for joining us for your final episode. You know what we could do, Jared? We can play that song. It's closing time.
Starting point is 01:37:03 Tell me you remember this. Yeah, Semisonic. Semisonic. Of course. i saw them live you don't have to go home but you can't stay here right they were playing that song for us oh yeah when we're trying to do beyond code the first season in that bar we're like we're trying to wrap up the last two interviews here come on people yeah so we were at an after party at a conference matt and this was this was Keep Ruby Weird, maybe? Keep Ruby Weird, yeah.
Starting point is 01:37:26 Keep Ruby Weird. 2014. At the after party, the DJ turned on closing time at 9.30. The party ended at 10. So, you know, naturally what you do then, if you're a terrible DJ, is you loop it. So he started looping closing time at 9.30. It played literally for a half an hour.
Starting point is 01:37:43 Maybe someone had his kids. Are you trying to leave me somethingan again maybe someone had his kids yeah anyways we couldn't even record our video show because it was just closing time was too loud in the background ah it was it was terrible that's so rude oh my god yeah i don't know it. You don't have to go home, but you can't stay here. I don't remember that part. Closing time Turn all the lights on
Starting point is 01:38:15 Every boy, every girl Yeah. Closing time You don't have to go home, but you can't stay here. Well, you do not have to go anywhere. You can stay right here. I allow you. I want you to.
Starting point is 01:38:39 I want you to stick around to the very end of the show because, hey, this was a fun show. It was fun to have Matt back on the Change Law podcast. It has literally been too long. So, Matt, thank you for dousing us with all of your song, all of your humor, all of the fun. Thank you for being a friend. It was fun having you. And to you listeners, thank you also for being a friend. Thank you for listening to the show. It is an awesome experience to produce this show for you all every single week. And I thank you. I thank you.
Starting point is 01:39:14 And speaking of thanks, a big, massive thank you to Fastly, Fly, and also a new partner of ours coming out very soon, TypeSense. Yes, we are using TypeSense Cloud to power our search. We have some fun plans planned with Jason and team from TypeSense. So stay tuned for that. And a big, big thank you to the Beatmaster in residence, Breakmaster Cylinder. Those beats are banging, banging, banging. Thank you, BMC. Thank you very much.
Starting point is 01:39:47 But that's it. It is officially closing time. But hey, we got about 45 seconds of song left. So stick around, enjoy those beats, and we'll see you on Monday. Thank you. Outro Music

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.