Welcome to ChangeLog and friends, a weekly talk show about Dan Tan. Dan Tan. Dan Tan. Thanks as always to our partners at Fly.io, the public cloud built for developers who ship. We love Fly. You might too. Learn more at Fly.io. Okay, let's talk. What's up friends? I'm here with Kyle Galbraith, co-founder and CEO of Depot. Depot is the only build platform looking to make your builds as fast as possible. But Kyle, this is an issue because GitHub Actions is the number one CI provider out there, but not everyone's a fan. Explain that.
I think when you're thinking about GitHub Actions, it's really quite jarring how you can have such a wildly popular CI provider. And yet it's lacking some of the basic functionality or tools that you need to actually be able to debug your builds or deployments. And so back in June, we essentially took a stab at that problem in particular with Depo's GitHub Action Runners. What we've observed over time is effectively GitHub Actions, when it comes to like actually debugging a build, is pretty much useless. The job logs in GitHub Actions UI is pretty much where your dreams go to die. Like they're collapsed by default. They have no resource metrics. When jobs fail, you're essentially left playing detective like
working each little dropdown on each step in your job to figure out like, okay, where did this actually go wrong? And so what we set out to do with our own GitHub Actions of observability is essentially we built a real observability solution around GitHub Actions. Okay, so how does it work? All of the logs by default for a job that runs on a Depot GitHub Action Runner, they're uncollapsed. You can search them. You can detect if there's been out of memory errors. You can see all of the resource contention that was happening on the runner. So you can see your CPU metrics, your memory metrics, not just at the top level runner level, but all the way down to the individual processes running on the machine. And so for us, this is our take on the first step forward of actually building a real observability solution.
around GitHub actions so that developers have real debugging tools to figure out what's going on in their builds. Okay, friends, you can learn more at depot.dev, get a free trial, test it out, instantly make your builds faster. So cool. Again, depot.dev. What up, nerds? Jared here, bringing you a remaster during these dog days of August. This episode was originally recorded back in February of 2023 when Change Dog and Friends was just a twinkle in our eye. In fact, this episode was the proof of concept for the format, so we are bringing it to the Friends feed as a remaster and for the first time ever in video form on YouTube, so you can see all the ridiculous faces that Matt makes along the way. Okay, let's Git with our friends. 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 Ryer, 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. It is. Yeah. And GoTime's an award-worthy podcast. And we thought we'd 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. But if it only happens once every seven days, I'd probably opt for weekly. So is it daily or weekly? One more time? Is it daily or weekly? Sorry, that should have been clear. Not at the same time. Gotcha. Well, the confusing one is bi-weekly. Yes. Because that can both mean twice a week and once every other week. Two different meanings. Who invented that phrase? Yeah, it's not good, is it? We have fortnightly as well as a term. I like fortnightly. I do like fortnightly. The game kind of soiled the phrase, if you ask me, the word. Yeah.
Because now there's two contexts. Yeah. Quake did that to me. I used to love Quakes. And then... Like Earthquakes? No, no. It's like the oldest game in the world, though, isn't it? It's right up there with Duke Nukem. Yeah, we used to play on... In school, we had a LAN party, and Quake 2 was the game we played. And I used to make levels with my brother using WorldCraft 3D world builder thing. And it was so much fun to be able to build levels and then play them with your mates. It was just... I couldn't believe you could do that.
these LAN 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 with you? Describe. Yeah, well, luckily these were in the school library. So, yeah, because we didn't, yeah, you wouldn't move your computer around back then. It's not like now with your phone. Like, you know, you can't really believe it. The internet is your LAN. Yeah, exactly. It's a cloud. That would be dangerous if the whole internet was all on one LAN. Wouldn't we be pretty exposed? Well, yeah, yeah, for sure. Nats are nice. Yeah. Again, two contexts for Nats, especially when you're just saying the word out loud.
Yeah. Let's loop back to Git. How often do you use Git, Matt? Daily or weekly. Well, this is interesting because you haven't been coding as much lately. This is a change for you. Don't ask him, Jared. Maybe not recently. Oh, no offense. Don't ask him for permission first. No offense. Is that private information that you're more of a leader now? Well, I'm hoping to get one day promoted back to being an IC so I can do work again.
Yeah. So I don't use Git. But honestly, I kind of like Git was always really complicated to me. 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 like Git flow that used to give you like that workflow where you could give you a reason to create a branch. You do your work and you merge it back in. And yeah, 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. And so we're going to talk through some of these tools. 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 dive into it a little bit. Let's look at the first one, which.
It's got that visual aid. It's called Git Heat Map. And this immediately reminded me of like Daisy Disk or these tools 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, like, it's showing you kind of like, what do you call it? Line of code that churn a lot? Or like the hot files? 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 is provided is on CPython, which is a, you know, 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 like, you know, bright red is obviously the hottest, which is configure.
and then the doc folder and then test and live. 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 like certain files that are the really active ones 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 what's the size mean and versus the what's the you know the color is obviously the most changed i guess so 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, that's probably like the size of the activity. Maybe this is something you can actually fine-tune when it actually is representing. I find tools like this are like, exactly 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. And so maybe use something like this as a way to sort of like grok the bigger picture, you know? Or maybe this is great for a presentation to, you know, the Linux kernel, for example. And you're at...
LinuxConf, I don't know if that's a real thing or not, but some sort of conference focused on Linux. 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, that's an absolute shame. We 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. They're not going to use it.
I went to Fosdem recently, and that's obviously open source. They're kind of allergic to having anything that's not open source focused, of course, there. But one use case I could think for the Git heat map is to make sure that 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? Where 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 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. 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 is how big the file is or the folder structure is. I think I would only use it in that context as I would, if I'm like new to a team and I have a repo, maybe it has years of history. I want to quickly familiarize myself with it. You know, 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, you know, you can get a tree map real quick. I know I've also done like clock, C-L-O-C, 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 it's probably fun to build. So on that then, how do you feel about the fact that it looks cool? Is that a good enough reason for you to have it in? Because to be honest, although it's maybe even if it was just an aesthetic thing, I feel like sometimes that's okay. It's like, no, this is nice to look. It's nice to have. We think it's cool. 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?
That was good enough for me. I mean, I put it on changelog news. I'm like, this thing's cool. Sometimes it's just like, surely this person, by the way, written by Jonathan Forsythe. So shout out to Jonathan. Well done, Jonathan. He's probably just, you know, scratches on it. He probably thought this doesn't exist. It would be cool. I always do enjoy popping open Daisy disk or clean my Mac X or whatever and seeing that layout of my system's hard drive and like where the big files are. Yeah. 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 do like doing that with Daisy disc. In fact, I found lots of big audio files, which were when we record these podcasts, we record our own audio locally. So I have lots of audio files of 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 and it's just my side of a conversation. And I just have to have like a greatest hits album. Right. Just talks, 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 and when they do it 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 and they're not just being insane 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 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, OK, thank you. Bye. And pretend I was on the phone. That's a pro tip right there. Yeah, that is a pro tip. I like that. A little a little speck of brain science for you. It is totally OK to talk to yourself, even out loud. In public? Yeah. Well, I mean, there's etiquette. So, I mean, pick your place. But you are not suffering from sort of any mental condition if you talk to yourself. Now, there's 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 all 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 going to say 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 that you look like you're insane. Truth. Truth. Okay. And then you just say goodbye and you put your finger up your ear and you look totally normal again. So I learned that today. That is a good pro tip, Matt. 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. 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 one of those things you're like, should this be in git? Probably not, right? Like, you don't want git money with, like, this kind of feature. So this lives in user land. And is this the best one in user land?
And if so, like, how does this kind of thing get support? You know, it's like, yeah, I mean, I think 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 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 kinds of projects which really are kind of like scratching an itch there's no business around this like this is a small scope 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 disk i mean that's i think a paid app or has at least paid features doesn't it So 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 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. If someone on one of my teams comes and says, I've got this idea, 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. It's harder than the other way around. You going to them and saying, you know what would be cool? And then you telling them and they're like, okay, I'll do it because Matt wants me to, but less likely. Sure. That's cool. Granddad. They just think I'm their granddad. Right. Yeah. And I haven't even got any kids. So how can I be their granddad? I mean, think.
Inquiring minds want to know, Matt. They do want to know. Yeah, 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. Sometimes, as you said before, that was actually maybe outing your potential unpopular opinion. I won't say it, but when you make a plan, it can be too rigid, so I'm not going to ruin it. When you play, there's freedom. There's no constraints. There's no guardrails, necessarily. It's like, where can I go? Where can I explore? What should I do? And then, you know...
Maybe out of it comes fruits and maybe that can be a business if you really want it to be. But I mean, I think there's examples of like large, you know, things in our world. Like Flickr, I think was a game at first before it was like the photo sharing, you know, 1.0 version. It's like a communication tool while they build a game. See the same, same guy, same team. They were just playing. Are they ever going to make that game?
Probably not. It's done. Very successful companies. They let it go. But they may play The Sims, which is a good transition to simulating, which I think is pretty cool. This has actually sparked my interest. I was like, I love to have permission to mess up and get sims the next one, visually simulate, get operations in your own repos. I think that's pretty cool because you can think of like, what would happen if I branch? What would happen if this happened here? What would happen if I rebased that over here? And it's like, you can sort of like have this fictitious world, this potential future, and just erase it. But isn't that kind of what Git does anyways? But this gives it to you visually. 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 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 lost something it's in there because of the way it works but you have to find out how to get it back right and that's like a huge time sink right and can be very it's like running production yeah 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 um the author of it did describe why it's better than dry runs but i've lost the blog post all i have is the repo i do a lot of r-syncing in my network and in some cases i do deletion through a lot of r-swot R-syncing. R-sync. Is that like tattoos? Sure. R-syncing. R-syncing. Nice. Touche. Are you trying to get a new gig going? Not of the above. Not of the above. What are the flags I'm going to mention here? Okay. So with 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 N and just kind of see what it might do. And it will go and do that whole thing. And that's my favorite thing. Especially with that kind of dangerous tool, you need sort of a simulation zone so that you can like.
simulate yeah so that's this is interesting 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 or you mean i guess it as it goes is your question matt simulate it like the results and just say okay do it button yeah i guess so you're saying yeah yeah it's like commit it's like yeah that looks good let's go do it probably it can so i did find the part where it says you know why aren't dry runs good enough because git does have a dry run feature which is like the rsync one that you described yeah true it will just tell you what it's going to do and the author of this which we should are sinking matt Yeah, I can't on here right now. I know. I do a lot of R syncing here on my land. I'm picturing, you know, a tattoo artist. R syncing. Yeah. So this tool by Jacob Stopak from the Initial Commit team, which is a team of those 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 repository, 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 the Git. Like it's just a better user experience for dry runs. Yeah, this would be very useful and probably would like satisfy some of my fears here around, you know, 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 au fait with Git. And so this would give a level of confidence for sure. It'd be like, okay, so you've typed this in.
And here's a picture. Is this what you meant? And you're like, no, absolutely not. You just saved me a lot of embarrassment. Thank you. Yeah. We'll do the way around. 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 GIF is. Good point.
The points for that. Thanks, Gerard. Seems to be a .mp4, just to be clear, Matt. Thank you. We have to be a bit pedantic, because I do get letters. Sometimes I'll say something like just being silly. Oh, it's lots of them in different orders, depending on what they want to write. Okay. Would you say you get those daily or weekly? Yeah, I would. I wouldn't say moreover.
Someone said moreover earlier. I was reading. I was reading the verbatim from a blog post. So you can take that up with Jacob Stopak. 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. Oh, these links are brilliant. This is professional. Yeah, really working with throws here today. Yeah. This one, I love, I absolutely love this concept. So GitBug, written by Michael Muray, I think is how you pronounce his name. Basically, he's got 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.
The bugs are right there. Oh, it works offline. No vendor lock in. It's fast. I'm just reading bullet points now. It doesn't lose your project. Good job. It integrates with your tooling. Need a workflow. So that's what's cool about it is it bridges over to GitHub issues, to GitLab, whatever they call their issues, to Jira. If you're in hell already. Oh, boy. Sorry. No. Say it like you feel it, man. Say it like you feel it. No, I've never liked that tool. I don't know anybody who does. I feel sorry for people building. Send Matt a letter. Oh, yeah, please. If you love Jira, let Matt know. Send it to Jason. He doesn't exist. I got his name wrong.
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. How do you do it? In Git. Sorry, 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 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 that's really clever. Yeah.
It's super cool. The way this is built out, it models Git's way of working. It works like Git works. It's just inside of your Git repo. It has a CLI, so you interact with it from your CLI, both adding bugs, reading bugs, et cetera. 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 and open and closed. And 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?
Like, where does it get the reports? Oh, error tracking? Yeah, like, is a bug an error? I mean, it's kind of like the same world, isn't it? No. Bug tracker, error tracker? Not really? How do you do it, Matt, over there in Grafana? Well, I was going to say, like, if there's an error or a bug or whatever, you just open it and, I guess, commit it, right? It exists at that point in the code base. We'll 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. But if every error turned into a bug, then we'd have my no bugs command would be way off. Like there's so many errors that only, and thousands of errors represent the same code deficiency as well. Well, one important thing that you do though with that is like you track commits to deploys, to errors, and I guess to bugs. And I think I'm just wondering if you have that full circle, 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 it's so good. 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. It's an idiot.
And he said, no, shouldn't be any errors. Like, why are there errors? Why are there bugs? You shouldn't have any bugs and no errors, right? Genuinely, that was his position. Neither of either. Okay. Yeah. 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 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.
Within the SLOs, you're allowed to take some risks. Because if you 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 errors per week? Or how does that play out? Yeah, it'll be like failed HTTP requests, depending on what it is. A certain number of those could fail before you consider you've got a problem. A threshold, sure.
that is a cool idea i think the same applies realistic too right like it just accounts for reality and 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 are you saying git get out of hand or get get out of hand that's open interpretation okay 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 u.s accent i think it's it's like get but it's like isn't it no no it's not no it's good what do you mean no it's because uh 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 he pretty much said that that it was supposed to be I can 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 yeah I'm a transplant Texan okay I didn't I didn't I wasn't born here now I knew a guy okay I still know the guy but I knew a guy He was describing the parade going through downtown. And he was telling me that it was going Dan Tan. 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. He got louder. Dan Tan. Dan Tan. I'm like, can you please explain in different words? And he finally says, downtown. I'm like, 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 i have the final word here and this is hilarious because it shows how small of a world it is i googled it or technically duck duck goat it if that's a thing you took a quentin i went there yep and i found how git got its name in this article this historical article is written by none other than jacob stowpack what's from initial commit yes he wrote this jason he's back he's done all this history here and he says okay when linus torvalds made his initial commit of get april 7 2005 he supplied this message initial revision of quote get the information manager from hell that's the subject and then he provides the the deeper cuts in 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 One random three letter combination that is pronounceable and not actually used by any common units command. The fact that it is a mispronunciation of get may or may not be relevant. Hello. It may not be relevant, Matt, but it may be too stupid, contemptible and despicable. Simple. Take your pick from the dictionary of slang. Three global information tracker. 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.
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 uh he said 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 so thanks for that jason oh um i wonder what dan tan would think of that dan tan hey dan have you seen this you're gonna love it Yeah, for example. That's pretty good. My other friend, I'll give you one more. My other friend, I like you just admit you've only got two. That's my other friend. My other friend. Wow. He also had experience on his first entry up on Texas. He came from Montana. Okay. Now Montana is, you know, Montana, as you may know. Is it? Now he, 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? Yeah. Disconfirming. Power washer. He's power washing, you know, 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, that's 5,000 PSI there, man. It'll blow up. To this day. 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 that's the pressure, it would blow up.
Just so you know, I did not blow up. To this day, we laugh at that. Why is that? 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. That's 5,000 PSI, it'll blow up. 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 him to say that. Two more times. Two more times. I will stay on Command of the Future, too. Amazing. Let's do the bit. I'll just do it. Well, speaking of blowing up, this Git UI project sure is blowing up on the scene. Ooh. Okay. Who 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. But let's talk about Git UI first. Written by a guy whose handle is extra worst. So he's not just the worst, he's the extra worst.
But maybe the sausage kind? It looks versity, doesn't it? It's versed. Extra versed. You know, it's like a normal versed, but this is extra versed, 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 German to them. It's so bad that they don't even know. Yeah. 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. All right, so here's extra versed's description or why. Do it right here. Extra versed. Matt, you want to read this in the German accent for us? Yeah, it does too. It's in the doc there. I do most of my git work.
I do most of my Git work in a terminal, but I frequently find myself using Git guise for some use cases like index, commit, diff, stash, blame, and log. Unfortunately, a popular Git guise will fail with giant repositories or become unresponsive. I've lost the accent. Become unresponsive. It's quite a bit French. It did. Unfortunately, it also sounds like the way you do it, it sounds very condescending as well as if the person's like a complete idiot. You're definitely making fun. So we should...
We should leave that in, but we should back that out and say, this is totally cool. Extraverse. We don't think that you're the way Matt's portraying you right now. No, I'm just doing my German accent. 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'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 extraverse kind of sense of humor. Like it's Uber.
I love it. So hopefully our friend in Germany will appreciate that. But to read it in terms that we can all understand here, he does say that a lot of the Git GUIs fail on giant repos and become unresponsive. So he built this. It's in the terminal. Would you 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. But what if you had more at the command line? You don't have to leave the 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 did you say that you need the terminal? No, no, no. Because it's really complicated. I avoid complicated stuff. This I like because we can go back and check the recording, mate, if you're calling me a liar. Yeah, do that little rewind sound. Now I'm back to doing this accent again. What I like about this is it reminds me of early...
early computer interfaces, like really early MS-DOS type. I used to do QBasic when I was a kid and stuff. 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, so you're not offended by that? No, no.
Well, friends, I'm here with Damien Shingleman, VP of R&D at Auth0, where he leads the team exploring the future of AI and identity. So cool. So Damien, everyone is building for the direction of Gen AI, artificial intelligence, agents, agentic. What is Auth0 doing to make that future possible? So everyone's building Gen AI apps, Gen AI agents. That's a fact.
It's not something that might happen, it's going to happen. And when it does happen, when you are building these things and you need to get them into production, you need security, you need the right guardrails. And identity, essentially authentication, authorization, is a big part of those guardrails. What we're doing at Auth0 is using our 10 plus years of identity developer tooling to make it simple for developers, whether they're working at a Fortune 500 company, or they're working just at a startup that right now came out like Combinator, to build these things with SDKs, great documentation, API-first types of products, and our typical Auth0 DNA. Friends, it's not if, it's when. It's coming soon. If you're already building for this stuff, then you know. Go to Auth0.com slash AI. Get started and learn more about Auth4GenAI at Auth0.com slash AI. Again, that's Auth0.com slash AI. So subtopic then. So language support or languages these tools are written in and therefore distributed in. We have two in Python. That was the heat map and the git sim. This git bug is written in go.
Get UI written in Rust. The next one we're going to talk about, we get to it. Get branch list also written in Rust. I still can't understand get to it or get to it. I mean, you're really getting me here. You're really getting me. You're really getting to me. I'm sorry. I had to punt it out there. That's good. Fair enough. Install, I think, is all that matters, right? I mean, in the end. Well, that's the question. For me, it is. For Matt, I wonder if you're feeling like maybe Rust is starting to eat Go's lunch for like command line tools. Well, I mean, first of all, I think like, 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 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 i don't use it enough that i have any confidence in it so i do like that you get single binary you do the talking jerry can you 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 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'm with Python as well. Their stories are just fraught. Do you not use GitHub then? That's Ruby, isn't it? Well, I don't mind the website. I'm talking about a tool that I'm going to install with dependencies locally. Yeah, I got a 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 JavaScript had the same bad story for me. But Dino is actually showing.
And 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. 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, 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 an app, or whatever your flavor would be, yum, or pick your, it should be a package. Or you should have to update your registry with whatever package directory you want to use.
app 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 i uh i don't like it when i'm 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 and then i hold off and i hold off yeah at least if it's a go binary i can delete the file and it's gone And I know where it is. 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 could be a can of worms. So I am into that simplicity thing. But 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. I mean, just a single... General purpose tooling that wants to be used by people that are outside your particular ecosystem.
ideally we 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 and uninstall it without worrying about it just like spreading files all throughout your desk i remember on windows i used to sometimes like install something and then you're like oh i want to uninstall that and there's no way to obvious way to do it so then you google it or you go it and it's like okay you have to uh 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 you know like Yeah, it scatters its changes throughout your registry, and you're like, ah, I have one global registry, and I don't know all the places that it's been changed. Yeah, you actually have to do occasional just reformat your computer to clean it all. And that used to bother me. And I like on a Mac that applications are mostly contained inside that single zip. But not entirely, though, right? With the M1, wasn't there more change? Didn't Homebrew move to the Ops directory, I believe, wasn't it? Oh, yeah. Homebrew installs into Ops now versus user local. And I can't recall why that was, but that was... I'm sure some sort of security enclave reasoning, right?
Maybe. It's just challenging, yeah. I mean, you've got plists that spread about. You've got something that may be in my application support folder. Give me a good self-contained uninstaller with a thing. Yes, please. Give me an eject button. Whether it's an application that I install as a literal Mac app or a dev tool, give me an uninstall flow that respects my system. Because 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 persist if you uninstall and then reinstall.
or upgrade. You don't always want that, do you? 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 the setting back. And then I uninstall it and then reinstall it and it just remembered the settings. It's right there. Yeah, it's right there for you. And I'm like, where's the registry? Is there a registry? I'm on a Mac, so there isn't. Another culprit is installing something to .local in your root directory or your home, your, your, yeah, your home, I guess. Yeah.
and not removing it or putting it in like a hidden folder. I mean, obviously I'm going to do a LL or L depending upon what your flavor of LSU use. I mean, if you're going to alias or whatnot, you know, which I do because I use my ZSH. You know, I pay attention to these things. Yeah, I don't like to do LL. Why two when you just do one? It's a good question. All right, so quickly, Matt, respond to my second question, which was as a gopher, as a representative of the Go community.
do you feel like rust is encroaching on your previously standalone domain of like these these command line installable tools like there's a lot of new tooling whereas go was like the thing for a little while where it's like and it's written rust does that does that are you feeling intimidated or 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 that's that attitude can't really like don't really deviate from that i think i think go i don't think rust will just defeat go because it's really hard to learn and that you know that's the trade-off you make it's like much harder to learn much harder to write rust but but the trade-off is you get much more secure much safer execution and you and i guess if it compiles you got high chance it's going to be correct and so there's like benefits there um 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 definitely will there'll be trendy sort of things going around but um 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
Okay. So reasonable. Okay. Well, in that case, I could get my guitar and do an anti-rust song if you like. Okay. Yeah. I do. Okay. Oh, we're in for a treat here. Matt has left his chair. His Mac display is tracking him throughout the room. He's back. Yeah, the Mac display is annoying because it follows you around when you move. Yeah, talk about surveillance capitalism, huh? Yeah. 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 the song called? Anti-rust song? Yeah, I don't know. I guess. Yeah, I guess so. It's going to be anti-rust. What key do you want? Let's call it rust away. 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. Baby, what you typing in? Never seen such crazy things. What the heck is all this gonna do? I got some very bad news for you. We're gonna rust away. Gonna rust away. Gonna rust away. Today. Rust away.
So if it was, if there was a version two, let's say you go away and you think about sleeping. maybe you sleep a little bit and you dream yeah and you think this is actually a hit song i could probably do some with this i would just encourage you to put a little bit more rust laying specifics into it i don't know enough to do that i was thinking that uh i was going to mainly focus on like uh could i mention cargo or anything i mean really yeah my knowledge is really limited i was going to focus on like um it's really it was really quite awful actually yeah i was going to focus on uh like vulcanizing things and actually like you know to prevent rust like to actually use painting and stuff too protect the metals. Rusting metal. Why would you want that? It's red iron oxide. 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. So one quick hat nod to the Git UI project is that it seems to be easily installable regardless of originating language, which is super awesome. Just to bring it back. Great song. Thank you for sharing that. It was awesome. I was happy to start singing with you, but my skills are a bit rusty. Sorry about that. Let's move on.
Git branchless. This is our last one of the list here. High velocity, modern repo scale workflow for Git. This is like a grab bag of utilities. It's a weird name, Git branchless, because it doesn't have anything to do with branching, really. But it adds a bunch of cool stuff. It's a good name, though. There's no branching? Yeah, it's branchless. I don't know what's called that. It doesn't have anything to do with branches. But it's called branchless. Yeah, but why would you name yourself based on what you have nothing to do with? I just feel like it's not the way to do it. Maybe because they're against it, and so they didn't like 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 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 point is there's lots of cool stuff here smart log undoing yeah written in rust so it's not rustless by waleed khan and been out there for a while but uh not too much to say about this on the show for me necessarily except for that it's just a lot of like 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 in terms of naming you know same song different singer since we're talking about rest away and matt's doing some jingles for us i was thinking git utilities i mean this is a bunch of utilities why not like make a standard utility library right so i googled it and there is a git utils but it's not maintained it's not maintained You know, it's sort of like, I would, I don't want to call it dead, but it's, I mean, the last commit was two years ago. It's probably either perfect software or unmaintained, right? 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 different, but with open source, you can't tell like, is this thing unmaintained or is it actually finished? Something's 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 because people, one of the ways they decide if a project is worth using is then look, when was the last release or?
Like, you know, and it's almost like we're almost to the point where we're 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. Like when a tool kind of nails it, then it doesn't, you don't need to keep going on that. But similarly, like software is never finished. And so it's not so simple, but yeah, we almost need like a health meter or something like that, like built into GitHub or external socket. Like they do a lot of security stuff externally from the repository, regardless of its origin, whether it's GitLab, GitHub or whatever.
I'm almost like a health meter or at least a democratized version of it. It's like, okay, this may have had to commit two years ago, but it's still right. It's being used. 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, it has to be a different metric. They 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. 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, it's generating issues for people, but not even being responded to generally finished software is at least, I mean, there's still gonna be things that come up over time, but kind of less bugs per response. 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. Yeah. Yeah. Well, I have good news for you, Jared. Done or perfect.com is available.
So, I mean, we can encourage somebody to build a tool called Dunder Perfect. Not Dunder Mifflin. Done or perfect. So I don't understand. I guess you're going to mark your project as done or perfect? Well, I just was on the whim here. I'm trying to create a Rust-A-Way 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 can be done. Maybe it's just a fun project. Like Matt said, this is just a fun thing.
And then maybe GitHub acquires you. And the next thing that you're a millionaire or a billionaire, or you got some stock options in the juggernaut that's called Microsoft is just like slaying it out there. You know? All right. I don't know. That's going to be like a dream, right? Yeah. So if you register DonnerPerfect.com, you're going to be a billionaire with Microsoft stocks. If you do it. Yeah. If you execute well. Yeah. Okay. Yeah. Probably. If you, if you, if you do it, let's do it. All right. Well, should we hop down popular opinions or should we, we have, we have more things that we've shared that are get related, but we can also just get on with it. Maybe a state of get.
Internally here. You're like, how do you get Jared? How do you get Matt? And how do Adam, how do you get? Speak of myself. Okay. Are you a simplicity person, Jared? I know that you just use terminal.app, not iTerm or even fig or, you know, what else do we have on the show? I do use ZSH now. Ooh, good job. I can't believe you're having to go with me. I use it by force. I use it as if it's bash. Excuse me. I can't believe you're having to go with me for using GitHub Desktop. And you just use the base of the first, 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 do have i don't actually either but i do use it and i do use it almost exclusively so now i like a get gooey myself so i can get uh graphical and the one that i prefer is called get x and get x has been a long long time project that's gone through multiple forks and abandonments and community pickups as mac os has changed dramatically over the years and so There was this Rowan, 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. 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. 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. This is like the best site of open source, right? Like people that loved it and wanted to use it, picked it back up. And now it's under like the 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. And, you know, I don't need any new features, honestly. It does what I like, and I like what it does. And so that's why 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 line, but staging, reviewing, that kind of thing from Git X. So I would highly recommend that for Mac OS 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 get x is license that's the license never mind the one before the last not the very very end of the readme almost to the end of the readme is 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 max so i mean that's super cool like i think we should do like shout outs here to like those that are supporting open source in some way 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 m1 macbook uh to uh the wales project which is wales app you know you can build desktop apps using javascript um and they're great they feel like native apps and i want to support that project i don't talk enough about what i sort of open source hero i am frankly uh so really well that's what we have here yeah could you sing yourself a song about yourself maybe mad as a hero in the open source world yeah yeah yeah that's the course pretty good right well i did i did write testify which is goes big that's the testing framework everyone uses in go we had you on the show talking about your stuff you had bit bar x bar right so you got your open source yeah but i'm just because i'm so modest i'm probably the most modest person in the world
You seem very modest. It's your greatest weakness. And it's a big weakness because, like, 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? I love the idea of that. But no, someone has it and they use it to test. 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 do this work to do there. That's true. That's a great point, too. I mean, when you do 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 right you need supporters that's cool yeah and of course you can sponsor a lot of projects now on github um so i recommend that i don't think enough companies do that if you're using if you're a company and you use some open source project and you can sponsor it i feel like you just should like that we should we should make that more normal um really you know especially if you make money off that project directly or indirectly Well, again, maxstadium.com, shout out to them. Super cool. Super cool. So you're a pretty simplistic Git user than Jared. I mean, you mainly say command only except for visual specifics. Yeah. Keep it simple. You're a simplistic Git. That's what he just said to you. I love that. And I owned it. I agree. Well, I paused. Simplistic Git user. Yeah, you did pause. And that's where we'll do the quiz. Yeah, I had to do that. Yep. Just remember that I had to describe to you guys what Git meant earlier in this show. So I'm not sure which one of us is simplistic. Well, that's just because you're DDU better than we do.
Or DDG. Sorry. I thought you'd at least go DDW. I duck duck went faster than you guys. All right, Matt, your turn. How do you get, how do you get, um, I like to keep, but I'm a simple git. Um, yeah, I like to, if, if it'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 the letter of resignation. Um, 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, um, if 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, um,
Like, I'm not a proper dev because I use desktop apps. I know Joe, you're joking, but I still have a song for you. I'm also serious. Look what I did. Gosh. There's two songs in one show. Is this possible? Hopefully the first one gets cut. What's the title of this song? Keyboard Wizard. Keyboard Wizard. Okay, good. It's 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. I feel like Howard Stern right now. What's your song title? All we need is an awesome artist. That's true. Well, meanwhile, you've got me.
I don't care what you wear. Don't care if you swear. 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 VSCO like me or are you one of those keyboard wizards that you see?
Oh, speaking of which, I'm a keyboard wizard. I don't need no mouse. Get that trackpad away from me. I know combinations, little Rocky R foundations. I dare you, screen share with me. Screen share with me. Screen share with me. I want to know so I can see. Are you a keyboard wizard? I don't need no mouse. A trackpad is just a rectangle as far as I'm concerned. Because I'm a keyboard wizard.
Woo! That one's a keeper. Yeah, that's a keeper. That one actually did run. That's a good one. Thank you. But also, very serious point there, which is, you know, 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. You know, we shouldn't. Yeah.
Okay, friends, I'm here with a friend of mine, Harjot Gil, CEO of CodeRabbit. AI CodeReviews, so awesome. So the explosion of AI for developers is very real, as you know. Some call it hype, some call it the future, Harjot. Either way, CodeReview remains the bottleneck for teams. What do you think? How does CodeRabbit fit into this new world? My message to developers is like, AI is here to stay. We have seen great success with code generation tools, especially the agentic architecture that are getting really good in terms of exploring your code and solving small issues. And it's only going to get better from here. This is like a time when you embrace AI. Otherwise, it's like getting left behind. And AI is not going to replace it.
developers is what we have been seeing i mean it's like just elevating the role of and it's like going from a tank battle to a near battle like earlier developers were struggling with syntax and all the mundane and the toil unit test cases like all the boring stuff but now we're seeing all of that is increasingly being automated with ai fight the air battle, as they say. And the same thing is happening on the code reviews. Now you're generating a lot more code, and what's hitting you next is code review bottleneck. That's where we come in as CodeRabbit, generated AI-based code review platform, which reasons about your changes and elevates your role as a reviewer. Like, you're not going and finding issues which are surface level at the code. I mean, it goes beyond static analyzers to understand those changes, but it does elevate your role as a reviewer to look at the high-level picture, whether these code changes are aligned with where this product has to be, whether these code changes are aligned with the overall architecture direction of your company. That's where we come and help.
So how does CodeRabbit work? CodeRabbit, the great thing about this solution, it works where you work. It's not like you have to adopt a completely new habit or remember to use AI in this case. So it works, it deeply integrates into your Git platforms, inside your GitHub, GitLab, and other Git platforms. And in addition, two weeks back, we also announced a VS Code extension, which we have made pretty much free for all individual users. So there's no reason not to try it out. If you're already using Cursor and some of these AI code editors, it's a nice compliment. As you are done making your code changes, just trigger the CodeRabbit after each commit, and you'll be surprised at the quality of your findings and the issues it will find on top of your AI-generated code.
Very cool. Well, I'm a huge fan of CodeRabbit. As you know, we're using it here at ChangeLog and you can see an action in our pull requests. You can get started today for free and it's also free for open source. Learn more at CodeRabbit.ai. Again, CodeRabbit.ai.
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 a bunch of Git stuff built into it. Have you tried any of that stuff? Do you like it? Are you just like, I'm happy with GitHub Desktop, I 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, I'll phone up one of my smart friends, like Jared, and ask him, what do I type in to make this fix, please? Abatable. Yeah. Hostinger Tutorials mentions that GitHub Desktop specifically says if your remote repository is 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 people 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 VS Code? I do that. Like, you know, I might add a file to it, you know, to 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 or you're 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.
It makes sense. Yeah. Yeah, it does. Use whatever tools you like. Use whatever tools. So for me, thank you for asking. Adam. Very, very simple. I'm just using Git. Let me ask you. Adam, what's your favorite ever song? Favorite ever song. Okay.
Well, I'm going to go to your side of the pot. I might say something from The Beatles. I'd probably pick from Yesterday. I'm a big fan of the movie Yesterday. Have you ever seen this movie? What a great premise. Amazing movie, but it's a great song too. The premise of Yesterday is this guy just discovers that The Beatles never existed. No one knows them, but he knows all the songs and he's like a songwriter. So he just pretends he writes The Beatles songs and then they're all hits and he becomes a super famous chap. I love that. I also love The Beatles very much. I have an original Sgt. Pepper's album in mono.
Which is good. I just listened to it in one ear. Nice. And, yeah, it's just beautiful. Paul McCartney, I think, probably one of our greatest ever songwriters. You know, just amazing. Phenomenal. Phenomenal artist. So, yeah, my answer is that. I mean, I think The Beatles 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, it was by force. Absolute force. What's the situation? I don't know. It's probably terrible. They've got your kids? The phone calls? Come on now. You want to do a Liam Neeson situation here? You want to go there, Matt? I don't care who you are. I want you to listen to the same song on repeat forever.
or I will find you yesterday yesterday no mercy oh gosh you played into that brilliantly Matt I knew you had Liam Neeson up your sleeve and so you were just waiting for an opportunity there I figured you 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 you have other bits we know you have Jack Sparrow but I mean you're pretty much done German character Hans Hans Speaking of other modern, famous singer-songwriter, Ed Sheeran, can you do an Ed Sheeran version? You also sing a lot too. Do you like the guy? I think he's a great songwriter, actually. So yeah, I think he's good. But no, I don't. I can't. I mean, he does singing, but I don't know. I can do every Beatle. They're all different. Ringo? You can do Ringo? Of course I can do Ringo. He's very bouncy when he talks. That's Ringo. And it sounds like 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 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. I love you've got Zords as my favourite, because Zords really doesn't sound like he's, doesn't really sound like he's all there, but it's really good. He wrote, so far, here comes the sun, you know. All right. Did you know that? Pretty good. Gosh. Look at you, Don Adam. Open up this can of worms. Can't put the worms back in the can. I love it. Yeah. Can you actually get cans of worms?
Can you buy them? Yeah. For fishing or 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 can buy the one for the kid like the prop. Oh yeah, what a big snake flies out when you open it. That's one worm though, and I wouldn't say. I'd say that's a can of worm. Well, there's versions with mini worms. Yeah, it's like Attorney's General. It's been a get fun party.
So much to get in this house. I've got one pick that I would like to also bring up that I learned about before. 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 backend 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 the production. You can gate the PR on that so that it doesn't go into main. So your main is never broken, your main branch.
review 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 example markdown files just let them go straight to main you can say like in this case i want to 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 um 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, then it makes sure that all the tests will run all that whole pipeline executes before it's 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 I would expect to have in GitHub at some point. Like, this is really good. I haven't used it yet, but I do intend to. What do you think of that review pad? I like all the rewards that you just said about it. Okay. It's brand new to me. It sounds really cool. A glowing review from you, which does mean a lot to me. So I'll definitely look closer at it. But I think that... It's too late to stop being nice to me, Jared. Well, no one's listening anymore. We lost him at... Here comes the song. But...
But yeah, I mean, definitely we'll check it out. I think that PRs, as 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 stack diffs, which plays in the same ballpark as this, but it's not exactly the same. They're not tackling it the exact same way. And I know a lot of people are enthusiastic about that. Christopher Hiller, bone skull 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 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 but yeah it makes sense i mean it's almost as if like this could even be similar to we have infrastructure as code it's almost like you know to main as code i don't know just like something that says like we have to have a gate on this process and like you had said there are certain things that 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 i can see how this makes sense the thing i think i'd question though is less the tool itself more like like steve job said about dropbox is this just a feature is it a product or a company I wonder if, in some cases, this is a great stand-up of a feature that should just be GitHub proper, if that's what...
the majority uses interesting i mean uh i wonder if their strategy is like an acquisition thing and sometimes that sometimes that's great strategy to have you know a couple times right i mean it's a good yeah i don't know if it's been your strategy but you've done it yeah three times yeah but they weren't features i mean actually i think solving one problem and doing it really well is is well worth doing and yeah like maybe you'd struggle to build a business around it i don't know but well that's the hard part it's like here's this thing here's it's great it's useful but man it died because There's no company. It's just a feature. So that's why we have to, we have to sponsor open source if we want to keep it alive. We can't just expect it to keep going. And, you know, we have to, 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 really 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 and I can't possibly get to it all. So I either do nothing or I just don't know where to put it. And I just, I'm just guilty. I feel guilty. Yeah. So that's interesting. I wonder if we could get something like a heat map of usefulness of your dependencies actually. How often is that code executed? A git heat map sounds pretty cool.
honestly yeah we could do with observability tools if you've got tracing and you've got like um 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 that might just layer on the guilt though honestly why don't you just pay 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 it's damn tam 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, get up sponsors one answer, but you know, it's an avenue. It's not, well, it's not like what, you know, the, what becomes infinitely harder to define if you don't examine the sort of open source you use that's useful to you, you know? And then sometimes it might be corporate sponsors. I'm actually open source, but it's a company who's backing. Well, you're going to support that thing. Well, maybe, you know, you might use it as a support, but like dirty company, just buy the things, you know?
that support them to make it. I liked all the words that you just said. Thank you. I don't agree with your point. Jared, by the way, just for future reference, if someone's describing something and you like all those words, I feel like you like the thing. I think it's safe to say, yeah, I like it. I'll check it out. You will like it. I don't like to give you too much credit. I don't like to give you exactly what you're looking for because you beg for so much.
Well, let's close up with a lightning round. This has been a fun conversation, a long one. Way more singing than expected or hoped for. A lot less than I expected. I'm really here to do songs, and there's been a lot of talking about Git. We've spent a lot of time in between tracks talking about Git. We should have changed the premise. Matt sings a song interspersed with Git conversations. 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 Go Time, Unpopular Opinions, and surely you can strum us out the theme song for the jingle for Unpopular Opinions. Can you not?
It's hard. Otherwise you'll have to splice it. Yeah, splice it. We can splice it right here. I'll just do a musical version. Gosh, we're back to this again. Yeah, splice it in. We'll splice it. I actually think she'll probably leave.
So for those who don't listen to GoTime, Unpopular Opinions is a regular segment 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 is a better podcast than GoTime. Oh, Phil's spot for JS Party. It's a popular course with the Go audience. But we're going to do a lightning round real quick. So, Adam. Gosh, me first. First one. Do you have an unpopular opinion you'd like to share? I think my unpopular opinions, 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?
I think if you're struggling to get something done consistently that you want to do, my popular opinion is that you should learn to habit stack. It's a superpower. Habit stacking is a superpower. That's right. Tell us more. But that's kind of a popular opinion if you know about habit stacking.
Like if you learn the inner secrets, the 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, maybe twice. And I wear glasses like you, Matt. I wear glasses. And as a glasses wearer, you must be upset or get upset when they're dirty. 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. So my feeling is like if I'm going to have dirty glass all day, that's upsetting. Can't do that. Well, I forget. I get busy. You know, I 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? You brew the coffee. You wait for the coffee to brew you or you drink it.
Right. So you stack a habit near another habit that you do consistently and then you do it. Right. Okay. It's a superpower. Yeah. 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. Right. But you've got that minute, minute and a half, or maybe you've got a couple of minutes to stack it up or something that can happen at three minutes. Stack a habit of good communication could be the habit. Okay. 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 ChatDT. Who knows? Just do something. Yeah. Is this just multitasking or is this more than multitasking? It's not like you're just talking about multitasking. Well, I think in that case, no, no, no. Well, because in that case, it may 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. I just do it.
What about when you realize they're dirty? Well, the point is you always have that cleaning cloth. Unless you carry this cleaning cloth with you everywhere. And I just don't. So if I'm deploying my code, I can floss my teeth. Well, I mean, Jared, pick your habit. If you've got issues with flossing, then maybe. I'm kind of liking this. I wonder if it also works with bad habits. Maybe you're a nose picker.
D-stack. You can D-stack things. No, I don't mean so that you can do bad habits, Jared. That's mad. Every time you pick your nose, have a cigarette. Sure. That's redirection. 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. Right? Replace it with... No, I'm thinking like, do a bad habit. Like, you know, like, don't brush my teeth. 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. Well, since I'm bad here, I should be good. Yeah, that's what I was thinking. I was trying to do that. I thought it was urgent. Like, actually double up on the other end. All right, well, this one was going to be unpopular with me. I think it's terrible. Sounds awful. Let's go to you, Matt. Do you have an unpopular opinion? Yes, I do. Yeah, I think when we're building software, we very often focus on the wrong things. Like, we...
we try i just think we always like we're constantly doing this we don't focus on um 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 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. But when you get into bigger orgs, understanding 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 to just do a cool project and i would never want to take that away from anybody but um 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 but you can maybe if you can solve a problem for somebody with a script or just 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 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 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 input. This just sounds like a good advice, man. It doesn't sound like a lot of opinions. Like, I agree with everything you say there. Yeah. Well, you agree with how you execute, which you may not agree with. You said that we're doing it all wrong, basically, or something like that. Most people are doing it wrong. Most people. I think like 90% of us are building software wrong because we aren't obsessed with that.
So yeah, it needs to sound by. That's a little stronger way of saying it. There's your sound. Yeah. Okay. Well, I agree with connection and the, you know, meeting the people that you're solving the problem for. That's like 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. I know this is going to be unpopular because I've said it before and people haven't liked it. So I'm going to say it again and see if people like it. Automagically, 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 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, OK, 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 counter because we know how software works it's not magic but counterpoint it means you don't have to know how it works you could just use it it works and you don't know what else means that it's automatic we already have a word for that it just works automatically but oh okay why do we have to put magic into it either one of you agree with me I'm telling you this is an unpopular opinion okay got it So automatically 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. There's too complex. You explain it that way. Automatically doesn't simply describe something that's automagical. It's too complex and you don't know how it works. I disagree.
I disagree. That explanation was not auto-magical enough. It's just a spin. It's a bad spin on something that could be explained. Do you believe in magic? What kind of magic? Do you believe in magic? Are you going to break in a song here? No. I believe in sleight of hand, like in magic tricks, yeah. You can't not believe in sleight of hand. Is there... 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. If anything, they believe in magic, don't they? Because they think it's not sleight of hand. I just don't understand the question then. I was going to bring in a song, but you ruined it.
But if you can somewhat agree that magic exists to some degree, like things happen that are very complex, we don't know how they work. I mean, not literal magic, but like a version of things happening. Even the unexplainable? Absolutely. Okay, so that's a version of magic. Do I believe that there's software that's completely unexplainable? Well, it shouldn't be. Like if you know your systems. What about AI? 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? Engineers say all the time. Who says it? Engineers. And we put it on marketing, like, and then it automagically just works. And you're like, really? This is marketing lingo. Okay, well, you're spinning me. I don't like it. I don't like spin. Okay, don't spin me. It was actually, there was actually a book.
about spin selling. I grew up in sales, right? My origination into professionalism was in sales. And there's a book called Spin Selling. You can tell you're in sales because you just said my origination into professionalism. Yeah, that's a spin right there. My first job. My first job was in sales. Yeah, that was an automagical saying. That's funny. 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, automagical. And I've just gone, I've grown a sour on it. It's not a popular opinion. All right, listener, let us know. Do you agree? There's three opinions here. Which one is the worst?
Which one is the worst? It's gonna be mine. Can we clarify that was not... Matt, you were making fun, were you? Were you making fun? No, that's a standard German accent. That's just your being funny, doing an accent, right? Yeah. What do you mean? I wasn't... Well, I just want to clarify there. Yeah. We're here to end the show, I want to clarify that, because that's just... For a little while, they're just set so wrong. Oh, I'm sorry. I almost said something. Well, you should. I almost stopped the show. Yeah, you should if... I almost stopped the show. Absolutely. I mean, I celebrate, like, different accents. I really love them. Yeah. And so, yeah, impersonating accents is, like, a fun hobby, but... I was so close, man. My white towel was like... No one. I'm gonna throw in the white towel. I was so close.
No one has a go at Liam Neeson on my watch. All right. It's okay to do a British accent, isn't it? Everyone does a British accent. Like, you have, Joe, because I've heard you do it. Because I'm not good at it. No, I think accents are all in good fun. I think, I think, well, as you went on, it became more and more caricature.
Well, that's all. I think we made it clear that it wasn't good fun. So I'm joking about ending the show, as you may know. I don't know if you knew that. I was just yes-ending. I wasn't going to stop the show. 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 be devastated, genuinely. I want to clarify that. We were not trying to be insulted. We're not trying to be. It was all natural talent. It's just who he is. Matt, go clean your glasses. Do you want a coffee while I'm there? Yeah, please.
And pick your nose while you're at it. Is that what you do when you make your coffee, Jared? You have a stack of your nose picking them? No, I'm flossing. Hang on a minute. You should clean your nose. People are like, oh, you shouldn't do that. There's ways to do it in there. You can pick your nose, you can pick your friends, but you can't pick your friend's nose. I learned that in elementary school. Unless you're paying and they're having a nose job, and by pick you mean select, like I'm going to pick your new nose. If you're a very dear friend, they might allow you. If I sit to you, Jared, I'll sort your new nose out, right? I'll pay for it, but I'm going to design it.
Right. That's okay. I'll do a good job. It'll be a little trunk. As long as I go into it with my eyes wide open. I'll do a little trunk, like a little elephant's trunk for you. Then you'll be like, how do you sound bad? What makes you say trunk versus trunk? I'm from the North, I'm from the Midlands. So we have like, yeah, a hard U sound. So I say like, cut, cut. It sounds like Jon Snow, isn't it? Like, it's like a, a little bit, yeah. How do you say router there? Winter is coming. Is he like a weatherman? Winter is coming. A band of low pressure is coming in from the East. You want to wear, you want to get your big coats out on Thursday because it's going to be raining and we're expecting some sleet.
Things will clear up at the weekend as the band of pressure blows out. Yeah, go on. You want to stop it? Fair enough. Well, he's got an application. I don't watch Game of Thrones, so he lost me with this one. I'll tell you what he's got, Matt. He's got an application. He's got geotracking on the wet waters. And that's winter. Oh, he knows. Has he got a tile on it? That's all part of it. I believe it's one part true weather and one part physical beings coming from the north. So he combines those two things into a meter. Yeah. Right. He lets his countrymen know that they're coming. It's coming. He's right.
I mean, you know, it's every year, John, so it's not that impressive. It's like, winter is coming. Oh, you're joking. I mean, you know, it is September, so we know how seasons work. Winter will be here. But that's Game of Thrones, isn't it? How and when? How and when do we end this? Never. I'm thinking like five minutes ago, probably. Probably. I'm not trying to say goodbye. Goodbye. I don't know. Thanks, man. It's over now. Thanks for your... We can play that song. What? We can play that song. It's closing time.
Tell me remember this. Yes. Yeah, you know this, right? They were playing that song for us when we were 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 an office mat, and this was a...
Keep Ruby Weird, maybe? Keep Ruby Weird, yeah. 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 hours. Maybe someone had his kids. 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. It was terrible. We're like, why? Who? Closing. Closing time.
Open all the doors and let you. 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 every boy, every girl. Okay, so you can't stay here, but you can go join Changelog's worldwide community of software nerds for absolutely free. We hang out in Zulip and chat about all kinds of stuff. Join us there for the after party. Head to changelog.com slash community to sign up. And if you didn't listen to this episode the first time around, there's a bunch more Matt Reierfeld episodes that followed. We even have a playlist of his impromptu songs on our YouTube channel. Check that out if you like.
Thanks again to our partners at Fly.io and to our awesome sponsors of this episode. Depot, get started at depot.dev. Auth0, head to Auth0.com slash AI and CodeRabbit at CodeRabbit.ai. Next week on the pod, news on Monday, Travis Oliphant from NumPy talking Python on Wednesday. And Arun Gupta, he's no longer with Intel, but he will be with ChangeLog and Friends on Friday. Have yourself a great weekend. Leave us a five-star review if you never have. And let's talk again real soon.