The Changelog: Software Development, Open Source - xbar puts anything in your macOS menu bar (Interview)

Episode Date: June 21, 2021

On this episode we're talking with our good friend Mat Ryer whom you may know from the Go Time podcast. Mat created an awesome open source tool for putting just about *anything* in your Mac's toolbar.... It was originally written in Objective-C, but it just got a big rewrite in Go and abig rename from BitBar to xbar. If you don't use a Mac don't hit skip on this episode quite yet! There are lessons to be learned for anyone interested in hacking on tools to make your life better. Plus, with this rewrite Mat has positioned xbar to go cross-platform, which we talk about as well.

Transcript
Discussion (0)
Starting point is 00:00:01 Welcome everyone. This week on The Change Log, we are talking with our good friend Matt Reier, whom you may know from our GoTime podcast. Matt created an awesome open source tool for putting darn near anything in your Mac's toolbar. It was initially written in Objective-C, but Matt recently gave it a big rewrite in Go and a big rename from Bitmar to Xbar. Now, if you don't use a Mac, don't hit skip on this episode quite yet. There are lessons to be learned for anyone interested in hacking on tools to make your life better. Plus, with this rewrite, Matt has positioned XBAR to go cross-platform, and we talk about that too. Big thanks to our partners Fastly, LaunchDarkly, and Linode. Our bandwidth is provided by Fastly. Learn more at
Starting point is 00:00:41 Fastly.com. Get your feature flags powered by LaunchDarkly. Get a demo at LaunchDarkly.com. And you know we love Linode. They keep it fast and simple. Check them out at Linode.com. This episode is brought to you by Influx Data, the makers of InfluxDB, a time series platform for building and operating time series applications. InfluxDb, the makers of InfluxDB, a time-series platform for building and operating time-series applications. InfluxDB empowers developers to build IoT, analytics, and monitoring software. It's purpose-built to handle massive volumes and countless sources of timestamped data produced by sensors, applications, and infrastructure. Learn about the wide range of use cases of InfluxDB at influxdata.com slash solutions, network monitoring, IoT monitoring, infrastructure and application monitoring. To get started, head to influxdata.com slash changelog and click get InfluxDB. Again,
Starting point is 00:01:37 that's influxdata.com slash changelog. Today we're joined by a go-time panelist and the world-renowned Captain Jack Sparrow impersonator himself. It's Matt Reier. Hey, Matt. Pleasure to be here, mate. I love your podcasts. I listen to them all on the Black Pearl, mate. See, I knew he would have to break into it if I just brought it up. That's why I'm not allowed to see the doc. Well played. Well played. Matt, thanks for coming on the show. Thanks for having me. It's an absolute pleasure, and I i do mean that i would say similar to jack sparrow go time would not be go
Starting point is 00:02:29 time without matt the same way that the pirates of the caribbean would not be what it is without jack sparrow quite a compliment quintessential piece to the puzzle that's for sure well i have so much fun doing it and i meet such interesting people and you can tell we have so much fun i think when you listen to it. So it's just a kind of joy really to do. So I appreciate, I appreciate doing it. The number one question we ask is how'd you find us?
Starting point is 00:02:51 And it's usually by, we have go time. Hmm. There you go. Yeah. Very often, at least not usually, but very often.
Starting point is 00:02:58 Right. Okay. Once in a while, once in a while, actually twice now. We've walked that one back. Yeah. Two people actually.
Starting point is 00:03:03 Well, we're hoping, we're hoping somebody will say it soon. You've gunned down a couple. No one's ever said it. Every once in a while actually twice now we've walked that one back yeah two people actually well we're hoping we're hoping somebody will say it soon you've gone down a couple no one's ever said it every once in a while the next thing they see after that is i don't even write good i love that show that's the best i have had people say that to me yeah isn't it yeah what are they doing it's like we fooled you that's your problem yeah oh man. What are you coding? Not Go, okay? But I listen to Go time every week. Yeah.
Starting point is 00:03:33 Well, that is nice because we do try and cover subjects beyond just the language as well. And there's so much in tech to talk about. So I do like the fact that we do that. We did one recently on TDD, test-driven development. We really didn't talk about Go very much at all it was um but it's the cops the ideas that just apply everywhere yeah well that's why the community lens to that show was very important to get to because that lets you do that like what is the community really would appreciate hearing from these people that represent this community that you know thrive in
Starting point is 00:04:02 this community i think that's the secret sauce, in my opinion. That's what I love most about the show is the community aspect of it. It's not just, you know, sure, you are a good centerpiece of the show and you bring a lot to it, but it's not just you. It's a cadre of awesome people involved, and you bring your own perspectives and your own, you know, thoughts from the community and your own insights and whatnot. That's what makes the show really special. Yeah, like I said, I love doing it.
Starting point is 00:04:24 So one thing I've learned over the last couple of years that you've been on the show is that you came to go in kind of a strange way it seems strange to me which correct me if i'm wrong but i think like you wanted to use app engine and app engine supported go and maybe python i don't know maybe c++ but you're like i'll take. Is that basically the way it went down? Because you've been using Go a long time, so it's stuck. Yeah, it was before it was even released. And it was Java or Python were the two options, and I didn't know either of them.
Starting point is 00:04:57 You also didn't know Go, though. Didn't know Go, but Go had a little EXP experimental badge on it, which is very ent know, very enticing. And I couldn't resist it. Funnily enough, I was able to build something very quickly. And that's a nice thing as a developer, it gives you a confidence to carry on. And I kind of like get a bit hooked on building things. And you get a payoff very quickly when you can deliver things quickly. So that's what happened. And it just kept going. And yeah, and because the thing I was building was also kind of perfect for Go, it really fit into what Go was, I guess, for originally.
Starting point is 00:05:35 So yeah, it was just nice. It's just kind of lucky. And I really got very lucky. That's why I'm on Go time is because I've been around for ages. Yeah. And you know. How long? How long now have you been writing Go? on Go time is because I've been around for ages. How long now have you been writing Go? It is about 10 years. It might be a bit more than 10 years. Go isn't even that old or it might just be. It's about 10 or 11 or 12.
Starting point is 00:05:55 Our birthdays are very similar. It was around, because we interviewed Rob Pike, I think it was episode 3, I want to say. I have to check the catalog, but this was so early days were like you know should we even do this show it's a new language from google yes of course but i mean like i didn't know who rob pike was that's how green i was at the time and it was right around the time we were born as a podcast the change all the way back in 2009 and that was the same time frame yeah that's amazing isn't it and i remember the first gopher con in 2014 and i happened to be living in denver colorado at the time and that's where the conference was so it
Starting point is 00:06:33 was just like down the street so i just walked down the street and went to this conference and just met all these kind of great people brian and eric and the team at GopherCon. And I think Kelsey Hightower, I met there as well. You know, it was just like a group of nice people. And one thing that stood out to me is they made a point of diversity. It was something they kept repeating on stage. You know, they wanted to make the community a welcoming place for everybody everybody and that's something that's always been important to me so that really resonated and yeah it just felt like yeah this is like this is the right way to do it we definitely felt that love too because neither adam nor i are gophers in the sense of go programmers but go time was the second show i mean that was the one that we launched into or was it
Starting point is 00:07:21 rfc those were both around the same time but go time was definitely was first okay second first second first second because we felt the love too specifically from brian and eric and many others in the go community it's like this is a really welcoming fun group and they want us here and so hey let's do a show you know with and for them was really why go time started yeah that's great And I actually think GoTime has become quite an important part of the community as well. That's why it is really an honor if I'm being genuine for five minutes. You have to say it again, because we're never sure with you. Is it sarcasm? Is it straightforward? This is genuine here. You're eating into the five minutes where I'm going to be genuine.
Starting point is 00:08:02 We don't give anybody five minutes you got two and a half okay yeah well i think go time you know has become a big part of that story as well and you know it's nice to go back and listen to random episodes in the past as well that's a very fun thing to do and it's all just kind of open and free for everyone to listen to i think it's great so i'm really glad you did start it so are we yeah yeah yeah I think even it's also not on this side to be a steward of that thing you know like that importance you know I think that's we hold that responsibility very dear to our hearts to deliver that yeah you can tell well I'm not being sarcastic when I say go Time today wouldn't be what it is without you because you invented the unpopular opinion segment, which really has become kind of a staple of the show and something that brings people to listen who don't care about Go or Write Go, but they want to hear about these unpopular opinions. Yeah.
Starting point is 00:09:00 That was all you, man. That was all you. Yeah. Well, I remember, you know, it was a kind of meme on twitter which it still is yeah and it was a sort of this idea it's a very tongue-in-cheek segment there's something cheeky about the spirit of go time i think that i think people do appreciate and i get feedback in that vein occasionally so yeah it was and then you know making the theme tune like taking this silly idea way too seriously.
Starting point is 00:09:26 Exactly. I always find to be very funny. So seriously that we take polls to find out if they're actually unpopular. You know, like I say in the intro, this is very serious business. You know, we got to find out how unpopular these opinions are. Yeah, that's it. That's it. It's unpopular opinions.
Starting point is 00:09:42 And if your opinion is popular, you've really failed. Yeah, you're really not good at this. Yeah. Well, I do hold a record as one of the most unpopular, unpopular opinions of all time. So I do like to hold that over your head. Champion. I have one of the most unpopular, which should I just tell them what it was or should we hold out and make them go listen? Yeah. So my unpopular opinion was that I believe that JS party is a better podcast than go
Starting point is 00:10:10 time. And I make a great case for it on the show. So maybe we should link that one up. Yeah. But the go community did not agree with me whatsoever. I lost a segment on there. Do you know? Oh,
Starting point is 00:10:21 my part, 60, 90 seconds. Yeah. Oh, play the right now. So I'm not going to come on a podcast about Go and say that JavaScript is a better programming language.
Starting point is 00:10:32 I'm no fool. I want to walk out of here alive. But I will happily start a proxy war by saying that JS Party is a superior podcast to Go time. You're off the show. You're off the show. Let me quantify this a bit. Okay. I have some evidence. So more is better. Okay. We have more panelists. We have more male panelists. We have more female panelists. We have more variety. We play game shows. We host formal debates. We write and rehearse poems. We explain things to each other like we're five.
Starting point is 00:11:03 You guys don't explain anything to each other like you're five. Go time records on Tuesdays. One of the worst days of the week. JS party records on Thursdays. Thursday is closer to the weekend, obviously better. We cover more topics. Go time is about Go. JS party is about JavaScript and the web. That's twice as many things. That's cheating. That's cheating. That's twice as many things. And we know the web is huge. So tons of of variety you can't take http to a js party so in review we do poetry we have more awesome panelists we have more variety it's on a better day and this is the big finale point you're gonna like this one js party has 100 less matt reyer means we've really cut down on those awkward silences. Wow.
Starting point is 00:11:48 That was quite the pitch. It was good, wasn't it? Really well said, I would say. Really well said. Wouldn't you agree? Yeah. Well, it's funny. It's funny because I think that also,
Starting point is 00:12:01 as an idea, is quite funny of tech wars. Some people really do take it very seriously in arguing about languages and things. And, you know, go and JavaScript together. You can make some amazing things. So, yeah. But the JS Party is a good podcast. But I don't know. Better podcast.
Starting point is 00:12:20 Not as good as. So that's the thing, too, on that front. The wars thing. Like, I want to just scream, same team. Right? This war thing, it's good to compete. Competition is great. So I'm always in favor of that.
Starting point is 00:12:32 But the warring, the actual fighting, sometimes even name-calling... It's too much. It doesn't help anybody, really. We're here to innovate the future of technology, not win the individualized war. Yeah, yeah. I think it comes from a place sometimes of, if you're inexperienced, you don't want to waste your time with something. You want there to be a language that's the one to learn so you can really focus.
Starting point is 00:12:57 And so I think people are drawn to these tech wars for that reason. I know lots of examples of that where people because they're new they get sort of caught up in it and i think with experience when you've tried different languages and you realize that some are better at some things than others and everything has its place and sometimes it might just be what you find fun is the important thing yeah and then once you've done that you realize that yeah it's quite silly to be sort of fighting over this. And we all batter off when we use them together in the right way. Well, maybe something that speaks highly of the community then is that many people don't know this, but I produce both of those shows.
Starting point is 00:13:35 And I also contribute to both of the Twitter handles. And I've been trying to start a gang fight for a while. Matt, you know this. I've been trying to get JS Party versus GoTime to be a thing. I was thinking, remember that scene in Anchorman where all the rival weather guys show up and the rival news people show up and they actually have
Starting point is 00:13:53 a slash and dash in the back alley? Yeah, in Anchorman. I'm like, let's get that going between our podcasts because that would be great for interest. And no one's biting. So I think the actual warring between the JS group and the Go group is like at surface level, but there's no teeth there.
Starting point is 00:14:11 Yeah, we love each other, really. Yeah. Rick killed a guy. There you go. That's seen it. Nice reference. Just to loop back a little bit, I did confirm episode three of the change log.
Starting point is 00:14:22 It was in fact titled The Go Programming Language from Google with Rob Pike, principal engineer at Google and co-creator of Go. Way back when. Confirmed. Go back and listen to that awesome but terribly produced show. It probably sounds terrible, but
Starting point is 00:14:37 great content, obviously. Different show back then, for sure. Well, Matt, we didn't bring you on here just to talk about Go time for the entire show. We brought you on to talk about Bitbar and Xbar, which are written in Go. And one is a rewrite of the other. Let's start with Bitbar.
Starting point is 00:14:58 Let's start with the origin, what it is, why you made it, what it does, and then we'll talk about the rewrite and where it stands now and all that good stuff. okay well it was many moons ago i don't know exactly how many moons but it was probably around 2014 bitcoin had just kind of come out and i bought some bitcoin and i had actually at one point 16 bitcoin so you can calculate holding no i'm So you can calculate. Are you still holding? No, I'm not. You can calculate. You wouldn't be on the show if you were. Yeah, you wouldn't need us. I'd be on a much higher class
Starting point is 00:15:29 podcast right now. That's right. So it's 2,555 moons, just so you know. Thank you, thank you. That's good. How many US dollars though? Or sorry, British pounds. I'm sorry, euros. 35 million. 47 million euros. So you had 16 Bitcoin and you must have wanted to watch the price of those Bitcoins in your
Starting point is 00:15:48 menu bar. I'm putting this together. Is that right? There you go. Exactly right. So I want to just see the Bitcoin price in my menu bar. And there wasn't really a way to do it. There was no app to do it. So I started to build the little project just for myself. And that's why it's called BitBar, because it comes from Bitcoin. Gotcha. And I realized that I was able to get the menu bit done. I was doing it in Objective-C, which I didn't really know. So I was able to get the menu bar pieces working,
Starting point is 00:16:19 but I couldn't make a web request to save my life in Objective-C. I'm not kidding. If you look at the code, you need to do it. I've done a Objective-C. I'm not kidding. If you look at the code you need to do it. I've done a little bit of it. It's not straightforward. Yeah, it's at least, maybe it's 15 lines of code if you do it properly. And I wasn't doing it properly. So it was just sort of a pain point of doing that.
Starting point is 00:16:37 So I thought, well, I know how to do this with curl. So maybe I'll just do that and I'll learn how to run a sub process so you wouldn't do that i think if you knew what you were doing no but what that did is it gave a sort of abstraction and meant actually that you could write other scripts which the output of which could go into the menu bar and so then i thought yeah that's quite nice because, you know, it's not just what I want this for. In theory, other people could write it or I could just write other ones myself. And so I open sourced it and I used it and a few people joined in and added some features. Actually, they added some great features like image support and colors and different fonts and things and then i think it was 2016 it popped into the top of hacker news
Starting point is 00:17:27 and suddenly then it sort of went crazy and got all this attention and just sort of randomly you know at this point it was a couple of years old and it's just been sat there dormant as far as i knew you'd sold your bitcoin you moved on yeah didn't you still use it to track anything else yeah i use it for lots of things i mean back then 2016 oh yeah probably because there were always little things that i just would you know at the time i what i cared about you know and it's very hackable because it's basically if you write an executable any executable in any language you like as long as it prints to standard out each line becomes a menu item in the menu and there's a special way that you can say cycle through these items in the actual menu bar and then show these items in the drop down and then people added support for if i click this item then i'm going
Starting point is 00:18:21 to run some code and do some action you you know. It was always very hackable. And that means that it attracts developers' attention, you know, because it's a fun thing. And it's almost like the boring bit of figuring out how to do the menus is done for you. And you just get to use your knowledge of something else to then build something. And that's what happened when it got to the top of hacker news suddenly there was this influx of plugins people writing all sorts of things and solving all kinds of crazy problems well that had to be a pleasant surprise how many times did you have to submit it before it popped in i just missed it yeah no i did yeah actually every day once a day every day
Starting point is 00:19:04 finally in 2016 it got on heck i actually don't think you can do that can you i don't know let's just submit it once now true true duke true it might actually go in but it probably gets buried immediately yeah yeah it's not my style i think there's a time there's a statute of limitations if you submit the same url that's been submitted recently i'm not sure what recently means it'll just upvote it so it'll count as an upvote which makes sense yeah that's cool yeah no it was true duke on hacker news posted it true duke yeah one of your sock puppets don't know who that is yeah so what kind of user base did that came out of that because a lot of the hacker news folks you know they kind of hit it and quit it you know it's like big old interest and then here today
Starting point is 00:19:56 gone today but you have substantial contributors and it like you said it's a open plug-in kind of infrastructure because as long as you can create a program that writes the standard out in the format that you specify then you can write a plugin pretty easily so is that what really got all these people writing plugins yeah i think so i think it's the ease at which you can contribute something and the immediate payoff you get it's that same thing that attracted me to go the fact i was able to deliver something very quickly i think that also applies there and you can kind of do it at development time you can make a script and iterate on it and refresh it and you just see
Starting point is 00:20:36 it live updating and stuff so the development process is very easy and that was kind of an accident if i'm honest i've since learned to really pay attention to developer experience, user experience, even of dev tools or maybe especially of dev tools. But I think it was a bit of a got lucky, really, with that design. I love that happy accident because it was like your lack of Objective-C skills
Starting point is 00:21:02 accidentally created a very nice abstraction that you probably would have bypassed. Right? Absolutely. And you're like, wow, this is actually pretty nice layer. Because I can just shove whatever else I want in there as long as it conforms. Now I cannot just do Bitcoin. Yeah, that's it. It's kind of like taking a weakness and sort of owning it and you know what I mean turning it into a strength and that's the thing like often you see people they sort of like want to either compete or they feel like they don't know enough to contribute and so won't and the lesson I think there is that sometimes do something different you know if you know something maybe you can contribute in a different way it
Starting point is 00:21:46 doesn't have to be the obvious way and i think that's quite nice as well so step back think outside the box and see if there are other ways you can do it so yeah i don't know maybe that was kind of a weakness of mine where it just kind of turned into a strength what about that day though like the the hacker news day where it was popular how did you find out you know how did you react you react, you know, in terms of like, did you dig your heels in and like get back in with the community and start writing code again? You said it was dormant. So kind of how did you react to this new claim fame?
Starting point is 00:22:16 Yeah. So there were 65 pull requests in one day and I was getting an email for all of it. So that's how I found out. I just suddenly had loads of spam. And that was a big surprise. I had to take a day off work because, you know, I wanted to reply to people in the community and, and also wanted to get the plugins merged into the repo so that other people could use them. So this instant community sprung up. It wasn't something that grew organically. It was all of a sudden,
Starting point is 00:22:46 there were lots of people using this and lots of people contributing to it. So it was great. It was like winning the lottery or something and very exciting, but also kind of nerve wracking. And the code, the original code wasn't great. I really didn't know Objective-C very well at all.
Starting point is 00:23:06 People even submitted fixes where, you know, you have to manage your own memory then. They've since added the ARC stuff, the automatic reference counting for objects and memory allocation. They didn't have that. So you have to retain objects and release them at the right time and things like that. So that's actually really difficult to get right.
Starting point is 00:23:24 And so I think people also contributed there and fixed things and helped out you know so yeah i was kind of a bit nervous and a bit kind of worried about that but also just basically very excited that there were all these plugins and i was excited by what the plugins were doing it was kind of people building amazing things with this and it was great this episode is brought to you by our friends at launch darkly feature management for the modern enterprise power testing in production at any scale here's how it works launch darkly Thank you. end users. When you're ready to release more widely, update the flag status and the changes are made instantaneously by the real-time streaming architecture. Eliminate risk, deliver value, get started for free today at LaunchDarkly.com. Again, LaunchDarkly.com. so go back to 2016 you got all this excitement you got all these people writing you have basically i get i would think it's like a relatively finished piece of objective c software
Starting point is 00:24:55 that can read from any kind of executable why rename it why i know that it's a rewrite but why rewrite it this is like you know joel spolsky's gonna be mad at you or who was it that wrote the big rewrite post was it joel yeah so i mean you know second rewrite syndrome or whatever it's called don't do a rewrite just keep on keeping on yeah but you didn't do that no no i think i i kind of know where they're coming from with that. But if the language dies, maybe do a rewrite, you know. Okay, well said. Yeah. Objective-C really, you know, I started doing Go, obviously. So I was just spent all my time on Go and not doing Objective-C.
Starting point is 00:25:40 And then Swift came out. So then people are using Swift instead. And so not just me it was i couldn't find contributors to help maintain the project and there were some issues in some cases and as the operating systems changed i was gonna say that's gotta be the problem right yeah little things like the vertical alignment of the text suddenly was different and needed work and turned out to just be not easy to solve especially if you don't know objective c so it kind of started going stale and we just weren't able to keep it alive and so yeah the decision came as like you know people were asking for it
Starting point is 00:26:20 and there were other projects that supported the bit bar plugins the now called x bar and so you know there's definitely people still liked it and were still using it so it seemed like the right thing to do and we did a go time episode with the creator of whales which is a go powered and javascript see best friends front end it has it's a desktop app for desktop applications what does that mean is that that means yeah i think so explain that please it's a framework for building desktop applications using javascript as the front end and go as the back end and you know it uses a web view and with clever styling and some other tricks it really you know like you can do transparency in the window for example so it looks and feels like a real native app on the mac and so we did that
Starting point is 00:27:15 episode which you can probably go back and listen to with lee anthony and i was chatting to lee one day on twitter and you know he was telling me about Wales to the rewrite that he was doing. And I asked him like, what do you think we'd be able to put together a desktop app for this and interact with the menu bars and things and support this. He was a little tipsy because he's in Australia. He lives in Australia. So even as he's from Wales,
Starting point is 00:27:44 not the project from the country Wales. The project Wales is... Which is why he called it Wales. It is. Although, yeah, because it's like rails. It was like web-based rail. Yeah. So I think it was that.
Starting point is 00:27:56 So I was texting him and he was tipsy, I think is the polite way to say it. So he was agreeing. He was like all over this idea of loving it. And I was like, okay, well maybe uh wait till the morning and see if you still feel the same and then you know about 10 hours later i just got i just got a message it just said in in all caps i regret nothing and so yeah we just set about we set about bill writing the rewrite and we got to write it in Go. So that's nice. That means now, you know,
Starting point is 00:28:28 the X-Bar project now is maintainable and we can work on it and it's well structured and it makes sense. And, you know, a rewrite is, I think, often better than the first version anyway, because you learn so much from that first version. So it is, you you know it kind of manifests that idea and it looks nice you know and it's we built a plugin browser which you know because
Starting point is 00:28:52 it's a proper desktop app it has transparency in the window so it just looks gorgeous and the project came back to life so loved it that's cool so I think project size also matters when it comes to the rewrite. I imagine a lot of Bitbar was the plugins, which were written in non-objective C. And I'm assuming you just adopted the same format, so those probably all work with Xbar. Is that correct? Yeah, absolutely.
Starting point is 00:29:20 One of the goals was all the plugins had to work because we didn't want people to write have to rewrite or change their plugins in any way so that's something i learned from go is that backwards compatibility promise is so meaningful it's not just a nice to have it's actually takes more effort but it's so worth it and it's kind of showing respect to everybody that's contributed to the project. Right. So, I mean, people warn against the big rewrite, but small rewrite, not so bad, especially when the first version, I mean, it's kind of like you just shipped a prototype for a while.
Starting point is 00:29:54 I mean, we're supposed to throw away our first versions, right? Yeah. That's one of the problems with a lot of software is we write our prototype and a prototype is not meant to be the production piece of thing, right? It's supposed to be like the first version by which you build the real thing. But we tend to just put those things into production and just build and add on to them over time. It's smart to write a thing. That's why they have the term spike, right? Go spike out a thing, proof of concept or prototype, and then write it for real. Now yours was just a
Starting point is 00:30:19 really long, you could think of it like a really long one of those and then when it came time to take it seriously after it has a user base it's found niche etc now let's do it take what we learned and let's do it in a language that you're very proficient in and do it right the second time so i think that's wise yeah i agree i think that probably is a nice way to think about it i mean i like rewrites actually hemingway famously said there is no writing but rewriting or something like that where when you're writing something the first version of it really isn't yeah a thing yet you have to that quote looked like the first time he wrote it yeah it's probably awful it's probably like it's probably awful writing but not writing but do it twice it's probably that you know the man didn't quite
Starting point is 00:31:06 yeah exactly yeah he couldn't form well a lot of our thoughts are formed through the process right yes that's where you're getting that's angry that's where i'm getting yeah he was also famous for the shortest story i believe ever for sale baby shoes never worn oh it's a little bit dark so sorry about that no but we're gonna kill the mood adam no but that's kind of beautiful you know that's the thing though people you know writing code and writing words though is very i think you have to draw a parallel there because i think famously hemingway also said everything you're always writing just get it out there whatever it is just get it out there because it's it's like you know temporary art until it's perceived and executed upon and it can actually be you know iterated upon
Starting point is 00:31:50 you know others can view it you know it's it's something it's it's substantial at that point yeah and you know we make this big deal about rewrites and i think contextually as you said it does make sense yeah the argument is contextual yeah Yeah. You just learn. It's what you learn in that process. And honestly, even to the point where I really resist designing software too much, there is obviously value in designing software and you should be designing software, but you can definitely very easily over-design upfront. And then you're sort of locked in to these ideas you had at the beginning when you knew the least. And so, yeah, I think through that process and the learning that pops out of that and the opportunities that
Starting point is 00:32:36 pop out too, I didn't design XBAR the way it was. I got there because I tried to make a simple web request using Objective-C and I couldn't do it because of NSURL request object didn't make any sense. I'm not kidding. Oh, it's a nightmare. I know you're not. That's funny. And yes, I took the opportunity then. So is Wales cross-platform then? Yes, Wales is cross-platform, which means XBAR will be cross-platform. And that is also very exciting, yes. Yeah, so you get that for free. So Bitbar and XBAR today is a Mac OS menu bar app, right? Yes, that's right.
Starting point is 00:33:16 But in the future, it will become cross-platform. And of course, all the plugins won't necessarily make sense because a lot of them are specific to a Mac. So there will have to be some way, there's actually metadata inside each plugin. And I actually wouldn't mind spending some time talking about the design of the API as well, because it's-
Starting point is 00:33:37 Yeah, it kind of has its own benefits too. But there's metadata in there, essentially inside the plugin somewhere. It can be anywhere in the code, usually in comments. can't see it and of course the comments can look like anything because you can write plugins in any language so we'll probably have metadata that says which platform it's for for the plugins and we'll be able to then maybe the multiple platforms because it doesn't say it could be multiple platforms either one plugin yeah so x bar parses arbitrary language comments in order to extract metadata that sounds like a bad idea yeah it's does it
Starting point is 00:34:13 well it works it sounds harder than just like well why don't you just define a format for metadata oh no there is a format but it's like xml tags but they can just appear anywhere in the file you know it's very okay i thought you meant you could just willy-nilly any sort of put a comment wherever you want in because like you said different languages indicate comments in different ways okay yeah that doesn't sound quite so bad it's not so thank you for clarifying yes that's all right but that's nice because in xbar we added like variable support one of the things that lots of the plugins had was if you had to configure something,
Starting point is 00:34:46 like if you've got one of them as a currency, it shows you the currency rate. So you edit the script and choose the currency that you want to see. Well, what we wanted to do is make that user experience a little bit better. So we added explicit support for variables, which are just other environment variables, really. You define them in the metadata. They show up in the UI and let you edit them and then when x bar runs the plugin it sends those
Starting point is 00:35:10 environment variables in you use them in the script and that's now how you do configuration things like that so okay that's a new feature that came from x bar that we didn't have in bit bar so tell us more about the feel and the process of writing Go with whales in order to produce what it will be a cross-platform but is a desktop application you said it's like web technologies can you tell us what that felt like to use whales and to build a Go project that's going to run on a Mac like as a binary or maybe even just the distribution and stuff would be interesting. Yeah, yeah. Well, fortunately, the whales project does a lot of the heavy lifting for you. I mean, you essentially have your own, you can use your own UI frameworks. And I quite enjoy building UIs as well. So I got into Svelte, which is a UI JavaScript framework.
Starting point is 00:36:03 And it has a similar philosophy as Go in that it tries to be minimalist. It doesn't do everything you can. It doesn't give you all these complicated features. It gives you a small feature set, just enough, and therefore it's kind of easier to use. And it also has this other effect that I'm sure is well known, but this basically does a lot of its work at compile time, not at runtime. So in theory, that makes the projects much faster when you use them. And to be honest, you do notice that I think it's very snappy UIs when you use Svelte. So that was it. Frontend was Svelte. There's an API that Wales gives you. You can just expose go methods to the frontend and call them in JavaScript. It's all transparent, so it's very easy.
Starting point is 00:36:51 And it's kind of like Promise API. So you make a call to the backend, you get back a promise. If there's an error, then you use the catch to handle it. So it's very natural like building a web with a server. But the server just happens to be running locally on the machine. And then the Wales tools packages it all up and bundles it together into a single binary. And then you run it, and that's it. There's a bit of work to do, like to turn it into a Mac app.
Starting point is 00:37:22 You have to put it into a certain folder with extra bits of metadata and things. It's quite trivial and the wales project really helps do that so it felt very natural to me because i build a lot of server client applications like that yeah it's a joy to use really lee had to do work in wales to support menus because it wasn't a priority if you think about a desktop app you know accessing the menu bar is not really something that most apps do so one of the we made a deal and he agreed to add support to whales for that and in exchange i sent him a macbook m1 nice macbook air all right good deal that's a good deal that's a good deal for both of you good sponsor right there well he also wanted to make sure whales worked natively on m1 so it was really a good kind of
Starting point is 00:38:11 win-win all-around yeah situation you know what i mean so that was nice and he's a genuinely lovely bloke as well which helps doesn't it when you like people And he regrets nothing. He regrets nothing. I've got proof. That's the best email subject ever. That's awesome. Yeah. So you had all these BitBar users. I know some big Mac people. Like I read about, I think it was BitBar first,
Starting point is 00:38:37 and I already knew you at this time, but I read about it on Jason Snell's website who is a Mac-based writer and journalist and has a big following his writing how is the reception to xbar has everybody moved over is everybody excited was there any like laggards or complaints what's the situation with xbar well everybody is happy to just switch over because if you're a user of bit bar x bar is just had feature parity the same thing yeah yeah so there's no reason to not like it yeah and you know the other thing that happened which was very exciting was this little bit just back to when it was bit bar
Starting point is 00:39:18 years ago when i was young i used to get this Amiga format magazine, which was a computer magazine. It had floppy disks on the front and it had like, you know, you give you free stuff and you could have programs inside it and all sorts. And this was like, I loved this. I think for my birthday, I got a subscription to this magazine. So every month I remember my dad would always, it was worked in the mines. so he'd get up very early so he'd usually get up and get the post and then leave the magazine by my bed so i'd always remember like very tired but just so excited that it was there i knew it was there and i couldn't wait to wake up but you know it was too early and so i've kind of listened lots of nostalgia around
Starting point is 00:40:06 that particular magazine for that reason and then years later i didn't really bother with magazines because the internet tells you all the things so and i just randomly bought this magazine one time and was just flicking through it and i just opened up this double page spread on bitbar and it was just like explaining how to use it and how to write plug it and i don't see that was like a thing that was like a big deal for me then that i'd got into this magazine was it it was mac format then so but it's the same publisher i don't know if you have that in the u.s that you have mac world that's about mac former but yeah it's future publishing i think maybe uk based but well i just that had to be quite a feeling yeah it was i mean i couldn't believe it it was uh i mean i don't really know
Starting point is 00:40:58 how it feels actually it's that it's one of those i can't really articulate you frame it did you hold on to it is it underneath your pillow what what you do with the artifact because i took a picture of it and then that's it yeah and then my wife threw it out by mistake oh yeah yeah at least you got the picture i got a picture yeah yeah exactly that's all i'm not very sentimental really so you know don't mind that. But just the fact that it was in there kind of blew me away. So, but to answer your question, yes, Xbar comes along and people like it. Yeah. Awesome. Yeah, I actually got the, you know, the CEO of GitHub, Nat Friedman.
Starting point is 00:41:40 Nat Friedman. Yeah. Yeah, Nat Friedman got in touch through a friend and wanted to have a chat and he just loved it loves the project like this was also very nice another one of those moments and he liked what he said was like the taste of the design of those plugins and it's because of things like you know you have to choose the refresh rate of a plugin. And you do that by including it in the file name. So you can do like five seconds, you know, file. So if it's like some clipboard plugin, it'll be clipboard.5s.sh if it's a bash script. And that will refresh every five
Starting point is 00:42:18 seconds. And the fact that you can write plugins in any language, you know, it's like this kind of like very minimalist API, really, over what you can do. So that was another moment that was quite meaningful when, you know, because GitHub is, I think, a great platform for developers. And so that felt like that was some good kudos. Validation, yeah. Yeah, I like that. Yeah, I mean, paying attention to the,
Starting point is 00:42:47 not that this is a little project, but it's not like Kubernetes or this gigantic community. It's a indie project, indie dev, with its own motivations. It's not like this super enterprise thing and he's only paying attention to the big things, so to speak, monetarily. Yeah, I think that's right.
Starting point is 00:43:06 And I think the fact that it enabled developers, which is obviously a big focus at GitHub, but it was something you mentioned was it's almost like just by making a different decision, which in the beginning was just happened by accident. But just that change in the way that you think about it unlocks things for other people and enables other people and then that multiplying effect that you can have always appealed to me and Nat also mentioned the same thing and that was I like that I like the fact that you can do this almost the same work that you were going to do anyway, but just with that attitude or that slight twist on it,
Starting point is 00:43:49 you can unlock things for others and enable others, I think is nice, especially for in open source projects. This episode is brought to you by our friends at Square. Thank you. that calls Square APIs. API Explorer lets you test your request using actual sandbox or production resources inside your account, such as customers, orders, and catalog objects. You can use the API Explorer to quickly populate sandbox or production resources in your account. Then you can interact with those new resources
Starting point is 00:44:36 inside the seller dashboard. For example, if you use API Explorer to create a customer in your production or sandbox environment, the customer is displayed in the production or sandbox seller dashboard. This tool is so powerful and will likely become your best friend when interacting with, testing, or playing with your applications inside Square. Check the show notes for links to the docs, the API Explorer, and the developer account signup page, or head to developer.squareup.com slash explore slash square to jump right in. Again, check for
Starting point is 00:45:04 links in the show notes or head to developer.squareup.com slash explore slash square to play right in. Again, check for links in the show notes or head to to play right now. So to me, the coolest thing about this project is how extensible it is. Two aspects. First of all, there's hundreds of plugins already written to just be used. So if you want something in your menu bar, likelihood of it being in there is high. Secondly, if it's not, you can just totally hack it together yourself, right? So we talked a little bit about the plugin architecture, if it's not, you can just totally hack it together yourself, right? So, we talked
Starting point is 00:45:46 a little bit about the plugin architecture, how it all works. I wanted to play a little game I call, Can Xbar Do This? So I've compiled a list. Some of these things are existing plugins, so it's part quiz, does Matt know his plugin directory? And it's also part honest question,
Starting point is 00:46:04 can it do this? Can question. Can it do this? Can I get it to do this? So I'll hit the list here, Matt. These are kind of yes or no questions, but feel free to elaborate. Okay. Yes or no won't cover it. Can we play some dramatic game show music
Starting point is 00:46:16 in the background, like a bed? Let me just check the budget. No, no, we cannot. I'm sorry. Okay, fair enough. All right. Can XBAR do this? Number one, can it show me the charging status of my BMW?
Starting point is 00:46:30 I do believe it can. I think I've seen that one. That would be correct, except for I do not have a BMW. So the answer is actually no. But yes, it can do that. Yeah. Can it show me my Robinhood portfolio? Yes. I remember merging a robin hood plugin so yeah that's correct yeah i'm on i'm nailing this to us yeah you are an ally two for two can
Starting point is 00:46:55 x bar show me my current weight oh well it's very polite application so i, so I don't know about that. Can it? I don't know. No, I don't think so. I'll say no. I don't think so. Now, the question is, how would we get that done? I think it's possible.
Starting point is 00:47:14 Where would you get the weight? Some sort of smart scale? I think you would have to interact with a smart scale for sure. And some kind of API, maybe, to access it? So that means the next one is, can it show me your current weight? I guess that's also false. Okay, next one.
Starting point is 00:47:31 Can it check my Gmail for me? Yes, there's lots of email. In fact, email has its own category. You can see all the plugins at xbarapp.com and I made a kind of menu bar that contains the category of all the plugins it just mirrors the repo so it's like it's very lo-fi but yeah there are lots of different email things in there too so yes i think it's yes can xbar buy and sell bitcoin each time elon musk
Starting point is 00:48:02 tweets you could make it do that if it doesn't already yeah there are also loads of crypto in fact that might be the biggest area probably yeah because crypto people gotta know their they have to know their numbers in real time yeah because you never know when one tweet is gonna destroy your future you know what's ironic to me about crypto holders is they all talk about how they're long-time holders, but they have to know the price for every five minutes. It's like, well, if you're holding for the long term, what's the next five minutes matter? It's all about marketing at that point, really.
Starting point is 00:48:36 Can XBAR Rick roll me in 4K? I guess the answer would depend. Can it play a YouTube video? You said there's image support. Yeah, it supports images, not videos. Okay, so feature request. Can XBAR generate passwords? I haven't seen that. Ooh, your first miss.
Starting point is 00:49:00 It actually can generate passwords. There's a password generator plugin at xbarapp.com oh i thought that was a cool one yeah you know how does that grab a new password lots of times i don't know i hope it's running where's that one under utilities maybe or tools now here's one password generator thought there it is come on matt come on man can it show me how many people are currently on changelog.com? What, you mean the Google Analytics or some other analytics? Well, we use Plausible, but does it support Google Analytics?
Starting point is 00:49:33 Yes, it does support Google Analytics. Nice. And I believe Plausible has an API now, so we could probably wire that one together. Yeah. What was the question again? Can it show how many people are currently on changelog.com? What if that was right in your menu bar? Yeah, there you go.
Starting point is 00:49:45 That's nice. Talk about obsessing over numbers. Yeah, that would be cool. Can Xbar tell me random dad jokes? I don't think so. You're absolutely incorrect. It can. Well, it has a dad joke on it.
Starting point is 00:50:00 Oh, that's amazing. Yeah, I know. That's the most intriguing one to me. It does so much. I know. Yeah. Actually yeah actually honestly you wouldn't believe some of them the clipboard i could i was very impressed there's a lot of clipboard well there's a few clipboard related plugins which do great things one of them's a base 64 encoder so you can copy some file or you copy something and then you know it runs periodically so i think they
Starting point is 00:50:26 have it to run every second or whatever it is so then anything in your clipboard it will base 64 in code and then you can just go and copy it immediately from the menu that was one the other one was the clipboard history which has been in there for a while which shows you your last 10 copies and pastes yeah Yeah, that's great. And you can switch between them as well. That's nice. I thought that was just really clever because that's like almost an application in its own right. I was going to say it's replacing
Starting point is 00:50:53 because I have an application, I think it's called CopyClip, which is basically that functionality alone. And it has some niceties where like you can set how many it'll keep and it'll automatically put it back into your clipboard when you click on it and stuff like that. But if you could replace a bunch of little utilities with x bar plus plugins
Starting point is 00:51:09 that's kind of a nice trade if you ask me yeah yeah well it is and clocks and music controls and things like that are all in there the time ones are very interesting because there's some funny ones and then there's some really useful ones it's quite useful for like there's a unix time one that somebody submitted ages ago and if you want to know the time in unix time all the time you can it's right there yeah so does it only run on a schedule or can you actually interact like could you click a button inside x bar and trigger a thing to run yes and you can even wire up a menu item to tell it to refresh as well. There's actually quite a lot you can do to the menu items themselves, including like you can open a URL, you can run a script. That means you can actually, and if you have some state somewhere,
Starting point is 00:51:57 which you just is up to the plugin, how it does that, you can actually build quite interesting interactive applications. It turned out to be, you know, quite surprising. Yeah. As well. People in space.
Starting point is 00:52:11 I'm excited to hear what our community of listeners come up with once they start playing with this thing. Cause the sky really is the limit. Let's get back to this list here. Can X bar manage Adam's pie hole? I don't know what that means. Adam, tell them about your pie hole. Well, pie hole is,
Starting point is 00:52:31 it runs on a Raspberry Pi, and it's essentially a DNS, essentially for blocking all the ads, essentially. It's called a pie hole because it runs on a Raspberry Pi primarily, but you can probably run on anything, honestly. But it's best installed on a Raspberry Pi because it's a small device, public network, and you point your DNS there first as your lookup,
Starting point is 00:52:52 and it filters out all the ad tracking and all the retargeting stuff. And there's a master list. It's all open source on GitHub. And how do you manage it now? Is it like a web admin or something for it? Yeah, it's just an IP address, which I won't disclose, but you go to this local IP address essentially
Starting point is 00:53:13 and it has its own web login. You can log into it. I'm pretty sure there'd be an API to it. So I'm assuming that you probably could. The most, you know, actually that would be useful because the one thing I do often, or at least often enough, is log into it to disable it for a duration of time they have a drop down where
Starting point is 00:53:31 you can say disable for five minutes ten minutes because you might want to totally browse the site there's links that break because of the tracking and you know temporarily you want to like okay i'm cool with this link here let me do my thing pie hole right i sort of want to stop it but it's a network-wide catcher for the whole network. So no matter what device, you're not doing this stuff on individual devices. And every once in a while you want to manage at least toggling it on and off,
Starting point is 00:53:53 or disabling it temporarily. So that would be kind of cool to have as an export thing. Well, let me answer it for him, because Matt didn't know what PyHole was, so he will not be able to answer. There is a PyHole manager plug-in. So yes, you can manage that. And I can see where that would be a very confusing question.
Starting point is 00:54:12 Not having any context there, Matt. Yeah, I just won't blame you. Just taking that with grace. Pie hole is your mouth, isn't it? Yes, exactly. Yeah, it's a pun on your mouth. Yeah, makes sense. So if it were Adam, that would also have been correct. It's because your mouth is round, isn't it? No, it's not because it's round. It's because it's where pun on your mouth. Yeah, makes sense. So if it was Adam, that would also have been correct. It's because your mouth is round, isn't it?
Starting point is 00:54:26 No, it's not because it's round. It's because it's where you put your pie. You put it in the pie hole. I thought it was to do with Pythagoras. Well, that's the theorem. Yeah. Sometimes. Can X-Bar show and manage homebrew services?
Starting point is 00:54:37 Let me just answer this one because I'm excited. Yes, you can manage your homebrew services. That's a really cool feature. Yes. And so then I thought, you know, at this point, I was like, you know, there's a lot of stuff I can do, but do I want all this in my menu bar? And so at that point you sort of get overloaded and you got to untuck and hide and things like that. Yeah.
Starting point is 00:54:55 Then I say, well, does this really make sense as a menu bar thing? You know, could you, you know, give it a tiny UI versus just simply a menu bar? So maybe you can talk about the, you know, how people push the limits of this and how maybe your menu bar will become super cluttered. Yeah, that is a fair point. And really, it's kind of up to people, I think, but with the image support, like it supports images. And the way that works is you base 64 encode the image and literally print it out in a special way. everything is just text-based and
Starting point is 00:55:27 simple but people have done some amazing things where they are dynamically generating and then encoding images and things but you can do it for so it looks like an icon in the top so you can actually keep it nice and neat for those times or just don't install them all i mean yeah that's another way well they're just so useful that's kind of like when firefox first added extensions and i mean i probably had 75 extensions installed you know because my firefox got very slow and i got mad at firefox and i'm like wait a second jared you are also in control of these extensions you don't have to install every extension that comes out. Yeah.
Starting point is 00:56:06 Yeah. So. Yeah, there's one called plugin that's is it up, which you give it a URL and it just pings it and tells you if it's up or not. Do you know what I mean? It's like, it's so simple. Cardi B would tell you.
Starting point is 00:56:17 Yeah, she would, wouldn't she? Is she related to Jason P? She might be. You have to ask Cardi B and Jason P. I'd love to see those two collaborating collab yeah can we talk a bit about you know the effort into this and maybe any commercial plans for this you know being supported as a community developer i know you got a github sponsor you've got some tracking in terms of a goal you've've got 54% towards your 50 sponsors goal.
Starting point is 00:56:48 What are you doing there? How are things working on that front? Is it important to you? Yeah, it's interesting that actually it was Nat Friedman that said you should set up sponsors on GitHub. I mean, when the project was first around, there wasn't such a thing as GitHub sponsors. And he's a sponsor.
Starting point is 00:57:04 He is indeed a sponsor. I think he's my biggest sponsor, actually. Would that be the $1,024 a month, a bit creepy now, sponsor level? What I love about this, let me take the mic here real quick. 2, 4, 8, 16, 32, 64, 128, 256, 512, and 1024. That's your tiers, which is just super cool. Yeah. I don't even say the subject, the lines for each of those.
Starting point is 00:57:32 Yeah. Go on. Do you want to? That's a lot. I'd love to hear it. I'll let you do it. Pick your favorite three. A succulent Chinese meal.
Starting point is 00:57:41 Your stuff makes our stuff better. Your contributions are really making a difference to us keep doing what you're doing you're really helping us yeah a couple of coffees or one coffee in a fancy place yeah that's a few some of some places more expensive thank you i like the two dollars which is a tip of the hat about four dollars is two tips of the hat or a tip from two hats that is good that is good so that's what i love about you matt too is this humor you bring to just life in general and i think your tears are an example of that so thank you stuff thank you yeah it's a coping mechanism
Starting point is 00:58:22 really so it's like if i look like i'm not taking it too seriously. I can't really be too embarrassed if things go bad. I would think that would be seriously not serious then because that's serious enough to think through that detail and be that funny. Right. But then not serious enough because it's not like corporate enterprise sponsor. Yeah. You made my meal today. I don't know. Just a bit more. Yeah. It's just very funny i don't
Starting point is 00:58:46 take it too seriously and i don't you know i use the sponsorship there my idea is to distribute that to other people contributing because i do want to keep the project alive and there is work to do it's actually not doesn't have a major release yet of x bar so there are still some things that are being worked out. And there's still some bugs and things in it. So if people are interested in contributing, I'm definitely interested in that. And the sponsorship will be used in some way to facilitate that. It's a tough one, because like the tax is quite interesting on sponsorship money and stuff like that. So there are some things to figure out. But I think I've got it sorted. I hope GitHub does something about that at some point, because that's what Open Collective
Starting point is 00:59:28 has done well, was remove that portion, because it's generally, and this is getting into the details, but it's generally some sort of fiscal sponsor. We talked with Pia, which we'll have out before this episode, so you can go back into our feed and listen to that with Pia from Open Collective and all the details around that. But it's a difficult thing. It's a difficult thing to support a developer and probably definitely more difficult to support a developer to support other developers by way of. It's challenging. Yeah, I do think GitHub will end up enabling that at least
Starting point is 01:00:01 so that you can, you know, the sponsorship for a project because at the moment everyone's sponsoring me on that not everyone in fact if you want to sponsor me please do but people are sponsoring me personally and it would be better if you could sponsor the project and then we could somehow split that between the contributors so yeah i'm not trying to make money from x bar that's not really what it was ever. I did get sent loads of socks at one point because in the read me, I had a, an Amazon wishlist because people were asking like, can I give you some,
Starting point is 01:00:33 send you some Bitcoin or something? I needed some socks at the time, but then I ended up getting about 200 pairs of socks in the post. So I've just, yeah, I've just got, and it was just the same pair of socks 200 times i've still got loads of them i've got red these red socks so you'll always see me wearing red socks you won't always see me wearing red socks lifetime supply there you go yeah that was problem solved yeah yeah socks all around so that's good then your goal then is to at least currently with sponsors is to generate enough sponsorship of you to give back to those who are contributing to
Starting point is 01:01:12 xbar yeah i really want it to be used to make you know keep xbar alive there will always be work to do and there were lots of feature requests which didn't quite fit into you know you want it to be simple but maybe there's some places where it can be more complicated and that's okay so there's a tough kind of balance there with feature set as there always is in these kinds of projects but like the whales project i'd like to get that some sponsorship from this as well because it wouldn't have been possible without that project. And yeah. And then it's just a case of use it and build your own plugins and share what
Starting point is 01:01:50 you've built, you know, tweet me. I love seeing people, the things they've built. And if you can then also contribute that to the repo X bar plugins repo and put the information in the show notes, I'm sure.
Starting point is 01:02:03 Yeah. And yeah, please get involved it's a lot of fun and you know your creativity really is your only limit in this well to get more matt you can go to go time and listen to go time and get weekly doses or hits or tips from matt xbar.com is that right xbar app.? Xbarapp.com. Xbarapp.com. Thank you for correcting me. Or also GitHub.com slash Matt Reier.
Starting point is 01:02:29 Well, hang on. You'll edit it, won't you? Just roll with it, right? Oh. Either one of you says that, they'll edit this out. You know that never happens, don't you? Do you listen to the shows? Every time you say that, it never happens.
Starting point is 01:02:43 So we just don't say it anymore because we know it's not gonna happen i know i actually think the the edited when you edit the podcast the live shows are always more raw and you know obviously make mistakes but it's not just the mistakes it's i think you do such a good job when it gets edited together the conversations just flow really well i like to also encourage people to listen live and join in live because it's so much fun. We're just hanging out. It really feels like you're just hanging out with friends
Starting point is 01:03:12 and then in a week's time in your podcast app, there's a little podcast. Oh, yeah. We talked about that last week. It's great. Well, Matt, we really appreciate you coming on the Change Log. Of course, we appreciate everything you do on GoTime and the Go community and the open source community. And even your zany music videos you put out and the entertainment that you bring is such a fun aspect of developer life.
Starting point is 01:03:39 So we appreciate you coming on the show and all those other things I just said. Yeah, thanks for having me. My pleasure. You're welcome back anytime you rewrite X-Bar. All right, that's it for this episode of The Change Log. Thank you for tuning in. We have a bunch of podcasts for you at changelog.com. You should check out.
Starting point is 01:04:00 Subscribe to the master feed. Get them all at changelog.com slash master. Get everything we ship in a single feed. And I want to personally invite you to join the community at changelog.com slash community. It's free to join. Come hang with us in Slack. There are no imposters and everyone is welcome. Huge thanks again to our partners, Linode, Fastly, and LaunchDarkly.
Starting point is 01:04:19 Also, thanks to Breakmaster Cylinder for making all of our awesome beats. That's it for this week. We'll see you next week. Game on.

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