Changelog & Friends – Episode #32
Brewing up something for work
with Mike McQuaid from Homebrew/Workbrew
Mike McQuaid, maintainer of Homebrew, and now CTO at Workbrew joins us to discuss open tabs, social media spam and distractions, TikTok’s addictive nature, Apple Vision Pro and its potential future, the maintenance of software, the swing back to old school web development, the value of telemetry in open source projects, Mike’s ongoing involvement in Homebrew and what they’re working on at Workbrew, Homebrew’s relationship with Apple, the importance of developer experience, and sooo much more.
Featuring
Sponsors
Sentry – Launch week! New features and products all week long (so get comfy)! Tune in to Sentry’s YouTube and Discord daily at 9am PT to hear the latest scoop. Too busy? No problem - enter your email address to receive all the announcements (and win swag along the way). Use the code CHANGELOG
when you sign up to get $100 OFF the team plan.
imgproxy – imgproxy is open source an optimizes images for the web on the fly. It makes websites and apps blazing fast while saving storage and SaaS costs. It uses the world’s fastest image processing library under the hood — libvips. It is screaming fast and has a tiny memory footprint.
Fly.io – The home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Notes & Links
Chapters
Chapter Number | Chapter Start Time | Chapter Title | Chapter Duration |
1 | 00:00 | Let's talk! | 00:37 |
2 | 00:37 | Small talk before the talk | 04:25 |
3 | 05:02 | Mastodon spam | 01:22 |
4 | 06:24 | Notifications as spam/ads | 12:41 |
5 | 19:05 | Apple Vision Pro reviews for clicks | 09:03 |
6 | 28:09 | Ask Elon Musk | 07:23 |
7 | 35:31 | Sponsor: Sentry | 03:35 |
8 | 39:07 | Complexity is software | 01:43 |
9 | 40:49 | Is software cancerous? | 13:19 |
10 | 54:08 | Our frontend is 8 years old | 02:46 |
11 | 56:53 | Old school web dev is swinging back | 04:50 |
12 | 1:01:44 | Homebrew and telemetry | 08:05 |
13 | 1:09:48 | Is 35 million a lot? | 02:21 |
14 | 1:12:09 | Still maintaining Homebrew? | 06:55 |
15 | 1:19:04 | Sponsor: imgproxy | 03:28 |
16 | 1:22:32 | Workbrew.com | 07:04 |
17 | 1:29:36 | Don't burn your career capital | 04:53 |
18 | 1:34:29 | Homebrew as a macOS first-class citizen? | 12:51 |
19 | 1:47:20 | Get in touch with Workbrew | 01:02 |
20 | 1:48:23 | Workbrew.com > Brew.sh | 04:46 |
21 | 1:53:09 | Bye friends | 00:14 |
22 | 1:53:23 | Outro | 01:53 |
Transcript
Play the audio to listen along while you enjoy the transcript. 🎧
It’s in my LinkedIn messages, one of my favorite places to live…
Has anyone ever enjoyed sending or receiving a message on LinkedIn? It’s… I don’t know. The thing I like about it is it’s kind of ubiquitous now. It feels like the one place where I can contact pretty much anyone…
Yeah, it’s become that. Huh.
I never want to be talking there, in that tiny little box in the bottom right of my screen…
Right. And then you maximize it and it’s still not very big, and you’re like “That’s not maximized…”
Yeah…
Here it is. “Oh hey, Mister 500 Tabs…” So someone called me Mister 500 tabs.
Oh man, you were offended, I bet.
Which was not me at all. I was making fun of Mr. 500 Tabs relentlessly, the whole week. It was Adam, for sure. But… And then they were trying to relate to me, and I was like “Sorry, man… That’s Adam.” I’m more of a Tab 17 kind of guy, is what I told him.
How many tabs have you got open over there, Mike?
I’m currently rocking… If you include the tab that this is in, four tabs. I have this, I have Workbrew, that I’ll talk about later, my kind of development server for that… I’ve Workbrew’s code coverage, and then I have the link to upload my local audio as soon as this call is done, because otherwise I’ll forget.
Okay. So you’re focused. After this is over, do you close everything down, and you have zero tabs then, or…?
Yeah, probably. Yeah, I’m a bit of a kind of a clean freak when it comes to tabs, and desk minimalism, and all this stuff. I just like to not have stuff.
Same. I don’t reboot very often, but I do try to like just exit stuff. I’m like “Get out of here. Get out of here.”
Did you ever use that – I think it was Marco Arment who made that Quitter app?
Hm. I never did.
Yeah. So I quite like that for like focus, and stuff… So you can basically just tell it what stuff to silently quit in the background. So Slack is like a good example. If you generally have Slack in the background anyway, then you can just be like “If I don’t touch Slack for five minutes, just quit it, and don’t notify me, or anything.” So yeah, it’s a pretty good – I don’t need it as much nowadays, but yeah, my GitHub days of just like ping, ping, ping, ping, ping… It’s a nice focus thing.
And can you pick which apps count and which apps don’t count?
Yeah. So you can just say mail.app Slack, whatever, and you can choose between quit or hide. So you can say “If it’s on the screen, just hide it”, or “If it’s running in the background, just silently quit it.” And yeah, it’s… I definitely couldn’t have it all the time, but it’s a nice focus-up for… Because I’m one of those people, I can’t – I think Justin Searls has talked about this before - if a task takes more than five seconds, then it’s just like “Okay, I’m gonna go click something, because my brain needs dopamine.”
Right. I just did that this morning with SPF records… I’m just realizing that we had a problem with an SPF record, and I went to update it, and I changed it… And then I was waiting for the DNS to clear, so I could run the test again. Not an automated test, just like [unintelligible 00:03:37.05] the thing it was going to actually return correctly. And I think the TTL was set to like 10 minutes… You can set – an hour, I think, is default. 10 minutes, one minute, whatever. It was set to 10 minutes, and I was like “Alright…” And then by the time 10 minutes had passed, I was like seven or eight things past… I forgot about it for like an hour and a half.
Yup.
And I was like “Oh, I was doing a whole other thing over here…” I had like a process, I was gonna get something done, and I just completely… Finally, I found the tab and I was like “Oh yeah, SPF. Okay.”
Yeah, that’s the worst. I feel like we’re building slowly a running list of things in this call that people don’t want to deal with. LinkedIn messages, SPF records, that’s number two…
Yes, absolutely.
No one ever woke up this morning and was like “Woohoo, I need to fix my SPF records. This is gonna be a good day.”
100%, yeah. Never. 0%, I should say.
I have zero idea what an SPF record is…
Well, it’s like sunscreen.
I am on the Cloudflare website, because they have like the number one Google result for SPF record… But I am not schooled on what these are.
Don’t… Don’t.
Don’t go there?
Stay that way.
It’s so uninteresting…
Yes…! I’m winning.
It’s a happier life without knowing…
But I got it fixed, so we’re good to go there now. I know Google and Yahoo! are both cracking down on their email spam prevention. Maybe they should give some of that over to the Mastodon. Have you guys – you probably haven’t been on Mastodon this week… Or have you? It’s been spammy. There’s a whole spam campaign going right now.
Oh, really? Interesting.
Yeah.
I’ve not really seen it. Are you on like the normal Mastodons, or – what’s your server?
So we are on our own server. So it’s attacking indies like us, basically… It’s not on our server, because we are literally like 8 accounts, or 12 accounts. You can’t sign up for an account on our server; it’s just for our stuff. We just wanted it to be branded, and you know, try it out, and stuff… But they basically just sign up on small servers that have open accounts, and then they just spam other stuff. The funny thing about it is it literally is a picture of the can of spam, with like a discord URL in the picture… Which to me is like –
Wow…
[05:48] …who’s going to type that in, or something? You can’t click on it, but… I mean, it doesn’t make any sense, so it’s almost like a joke. I think they’re just showing you how bad Mastodon’s spam features – which are pretty much non-existent right now, are…
Maybe it’s just Elon…
Maybe… Yeah, grassroots.
…spamming at evenings and weekends, trying to spam Mastodon…
Just grassroots marketing for X, you know… If Mastodon’s bad, maybe they’ll come back. Maybe they’ll come back.
Yeah. [unintelligible 00:06:11.28] to BlueSky… Or Zuck. It’s one of those guys, one of those three is probably behind the spam campaign.
Yes. Well, Zuck - he’s real competitive, so I wouldn’t put it past him.
I gave in today. I actually – I deleted the app from my phone, but I didn’t delete it from the phone; I’ve deleted it from like the install… You know that, where you can hide it, kind of thing…
Which app is this?
X… Well, actually it’s Twitter… Is it X? It’s X on iOS, but it’s Twitter on macOS, which is strange… And the reason why is I just cannot stand the notifications spam. I just can’t take it anymore. I’m just like “None of these notifications are from me.” I don’t even follow this person… There’s a whole new one with like a chat bubble; not the star splash thing, where it’s like, I don’t even care about this update from Elon, or people I follow… Like, if I’d want that, I would get it in my feed, not in my notifications. And I feel like – I don’t know what’s happening, but it’s just dumb. Whoever’s doing that has just like made the dumbest feature. It is not engagement, it’s annoying… And I’m just over that. I’m just totally over, like, my notifications not being for me. That’s the whole point of notifications, right? If I want my For You tab, I would go to For You. Like, that’s kind of a For You thing, not a right followings thing, or even a notifications thing. It’s a For You thing. It’s things you might be interested in, that you wanna algorithmically share with you… Which I’m cool with. Like, I will go there, opt in. But stop using my notifications and abusing them, because now I’m just like – I don’t even trust the app anymore, that it’s important, that I should care about, things that I want to pay attention to, I’ve subscribed to. I’m over it.
I don’t even care really about Elon, honestly. I don’t even care. Like, everybody’s upset about him… Whatever. I mean, because you can’t control the world. You can’t control who’s president, you can’t control who owns Twitter… You know what I mean? Like, is that synonymous, really? [laughter] I mean, it kind of is… You can’t control who is the president of x, or whatever… And I didn’t mean that punny, but it kind of was a pun. I was using X as a variable, not X as a platform. I had to explain it, sorry… Because I was even like “Did I do that on purpose? No, I did not.”
So I feel like – I don’t even care if Elon is in place. I don’t care. What I do care about is the fact that Twitter was good at some point. It was the least useful. Like, even if you didn’t care about the conversations, and –
Yeah, 2010.
Right. It delivered on its promise.
Like good old days.
Subscribe to certain people, get certain feeds, engage when you want to. And now I feel like – it’s just not that for me.
But this is just generally - like, the whole way the internet works now is if you want to consume content that way, it has been an uphill battle on this for like 5 to 10 years at this point. Even what you were saying about notifications - I mean, even Apple has joined the party of having –
So bad…
…random apps, random first-party Apple apps that will like spam you with like offers, or like sign up to Apple TV, or whatever. At this point, when I get an iPhone or a Mac, I’d really probably like to just be able to say “No apps do any notifications by default.” Even like badges. I will literally just turn that on for the apps I care about, because it’s just so bad for everything now… And all social media are now – I guess we were talking earlier about like being distracted and sucked into things… For me, any social media with like an Explore tab or anything like that, I just cannot have it on my phone. I do not have the mental willpower to now just sit and like –
The wherewithal. Same.
Yeah, I’m not in control at that point. If I go to /explorer on anything –
Once I’m in there, I’m like “Oh, I can flip one more.”
I’m subject to whatever their mind control is, and it works… It’s MK Ultra at its finest. Really.
[09:52] I had three iOS notifications yesterday, from reputable apps. All three were ads. I had a Southwest ad - which is like you want to know when your plane’s arriving, or delayed, so you have to have notifications for Southwest. Uber - okay, maybe not quite as reputable… But reputable-ish. And then a third one was like one of those electric bikes, when you’re in the city and you want to get a bike… It’s like Ride, or Bird, or Lime… I don’t know which one it was. It was like, I haven’t used that one for a long time, and here they are, telling me there’s 20% off rides tomorrow. Like, I’m not even in a city that has that particular service. Anyways, it sucks, because the apps that you do want to be notified once in a while, but you don’t want their ads.
It’s even worse for kids, or like young adults that are getting into technology… Because they don’t know any better. They’re “Yeah, notifications all the way.” They’ll be sitting there, interacting with the ad. Like, hey, you know that’s an ad… Like, if they’re playing a game. A lot of games are subsidized by ads, especially on iOS, of course. And my son, there’s times when we let him play certain games on the iOS platform, and he will be playing something, and I’m like “What is that game you’re playing?” He’s like “Oh, this is not a game. It’s the ad”, because you have to, they force you to interact with it to get past it.
Yeah.
And I basically do everything besides slap his hand, like “Get out of there!” Like it’s a bee. Like, “Get out of here!”, you know?
Oh, yeah.
Stop doing that. He’s like “But it’s kind of fun.” I’m like “That’s the problem.”
It’s funny, because my kid - well, my eldest kid - has just entered the playing games on an iPad sort of level recently… And with the exception of Minecraft, which is again, pretty good for not spamming ads at you… Like, Apple have missed the trick, I think, with advertising, because I’ve found the not being showed ads filter for half decent games - like no ads, no in-app purchases - basically, that’s Apple arcade. So he only gets to play games in Apple Arcade. So those are the only games I will install on his device… And I will pretty much install all of the Apple Arcade games that are around right now, that meet the kind of age settings that I’ve done in the parental settings, and stuff like that. And then yeah, I’ve seen no shady behavior, no in-app purchase stuff, no ads, anything like that, in any of the Apple Arcade stuff. So for me that’s just become – like, until he gets old enough that he figures out that stuff exists outside of this walled garden, and he badgers me to the point that I give in, or whatever… For now, it’s perfect, because you just have this nice selection.
Apple Arcade, huh? I didn’t consider that.
Yeah. And I don’t even want Apple Arcade. I just have it as part of my Apple One family whatever, anyway.
What I needed was just the storage, the family storage, and so I upgraded to Apple Premium One, or whatever. And then you get a bunch of other stuff, and Apple arcade’s in there, and it’s like really great, I think, for that purpose.
Yeah. So yeah, so that’s the only thing I use it for. I don’t think I’ve really played any games there myself. But for my kid, it’s like a “how to avoid horrible, spammy crap” filter.
Note taken. I’m gonna take that note and do something with it, because I cannot stand these… They’re kind of predatory, in my opinion.
I don’t think kinda. I think like literally. I mean, I think we’re gonna – I had a really disturbing moment in an airport a few weeks ago. I’ve been quite passionate about this for a while… My kids are young enough that they’re years away from even wanting to be on social media… But I sat behind this, like, maybe 11 or 12-year-old kid in the airport, who was sitting on TikTok, like flicking between stuff… And I saw a couple of posts in a row with really pretty misogynistic, kind of like comic book-related memes. The comic book itself was not misogynistic, but stuff had been combined together to make some almost like statement about women… And he was sitting there next to his parents, doing this, and I just was thinking “His parents have no idea of what is being delivered straight into his brain right now.” And TikTok feels like – I don’t have a TikTok account, I’ve never really used it… And TikTok feels, from friends and what I read and see and whatever, essentially the best dopamine transmission mechanism we’ve got for social media so far.
Right. It is.
[14:11] And yeah, I guess it’s scary for me that it’s gotten really really, really good, but I think particularly little kids are just – well, not that little, but little adults even, are defenseless against this stuff, right? Because they don’t have the ability really yet to say “Yeah, maybe this should just like not be on my phone.” For me, with my Instagram now - I have Instagram for… Literally, my middle ground is I follow people who I literally see in the gym at the same time when I go to the gym, to see what’s going on with their latest gym goals, or whatever. And when I use Instagram on my phone, I install it on my phone, I basically see what’s going on from the people I follow, I post anything I want to post, and then after I’ve done that, I delete the app from my phone, every single time. Because I have no self-control otherwise, and I will just go again and again and again.
Yeah. Well, at least you admit it, and you’re aware of it.
Yeah.
I think that’s half the battle, is being aware that you have – you know, how controlling these… They’re just so good at getting your attention, and just so good at like…
Keeping it.
…tantalizing your curiosity. We’ve shared this a couple times, I know I have on TikTok… I like the platform. I think it really has so many really good qualities for things you could be curious about, and people that are educating, and sharing content… But then you kind of get into the… Especially as Jerod and I aren’t creators, but we are in the creator world…
You’re totally creators, the two of you.
Not like TikTok type…
Yeah, in the creator sense where people say “I’m a content creator”, we’re not.
We’re podcasters. We talk to people.
Yeah. When I introduce somebody, I say I’m a podcaster, not a content creator. Because I think we’re definitely – we’re more akin to like talk radio even, like AM. Does anybody get AM radio?
We’re like software shock jocks, you know? [laughter]
That’s awesome. Yeah. I mean, that’s – where was I going with that?
Tiktok as a platform for creators.
When you think about TikTok from a “creator” standpoint, and you want to get big, you’re trying to find things that essentially hook people. What is a hook? It’s an addictive thing. It’s something that gets you involved. We don’t even, to our knowledge, design our shows to be hooky in any way. Like, we may do things that are – we call ourselves listener-obsessed. At least I do. I want to make sure our listeners enjoy our podcasts… But I’m not trying to hook them or manipulate them into listening to more, insofar as that I think they’ll enjoy it. Like, we’re not trying to get to a goal. Whereas with TikTok and pretty much every platform that is like this, that you immediately delete, Mike - it forces creators to be… I’ll just call it hooky. Like, you have to be hooky.
Hookers, is that what you’re saying? They’re hookers?
No. Hooky, Jerod. Hooky.
Oh, hooky.
Yeah. And you even have a lot of people on YouTube - there’s a big kind of push where there’s people who’ve been on there for at least five years, maybe a decade, that are just quitting, because they cannot maintain the rat race anymore, because they’re not creating content they want to create anymore… They’re creating content that the platform wants, which is not exactly the same. It’s not content you enjoy to make.
I feel like that’s always been there in some ways, and it’s always been that kind of temptation, or Devil’s pact, or whatever. I remember finding that blogging in literally like 2005-2006. I was part of kind of some open source communities back then, and there was like federated blogs or whatever… And I learned pretty early on that if you put some flame bait, you get way more views. Way more views, way more engagement, way more comments, way more other people are gonna talk about your post, and link your post, and all this type of stuff. And I guess for me, that was me in my early 20s… And even back then, it was clear that “Oh, I have a choice here. I can chase the views, and post the stuff that will make people angry, or upset, or argumentative, or whatever… Or I can post the stuff that will make me happy, or make them happy, or be interesting, and maybe a little bit more like low-key, but it’s like perhaps a little bit healthier.”
[18:15] And I think the hard thing we have right now is we have, as you say, if you’re a content creator and you want to chase the views, you have to do that stuff. But then we also have this intersection between social media apps that have gotten really good, and the phone. There’s a lot of like anti-smartphone chat, and a lot of anti-social media chat. But I think the hard thing for me is like the subset between those two things, right? Social media on a desktop is way less addictive. And having a smartphone where you have no social media… Most of my smartphone usage now, most of the text I read is like books, or… My one vice I allow myself is like 15 minutes of Hacker News a day, or whatever. But if you haven’t [unintelligible 00:18:53.09] to that extent, it’s just – it doesn’t have that same effect on your brain. And yeah, I don’t know… It’s interesting, but a bit scary, the times we’re in now.
Here’s another way to get views… And yes, this is a segue. You can post your Apple Vision Pro review. That’ll get you some views, won’t it?
Oh, yeah.
Now, last time we talked, Mike, it was right after the announcement, right? Apple Vision Pro.
Yeah.
It was, yeah.
And we were prognosticating, and we were guessing, and we were talking about whether or not we would buy one, or all these things… That was probably nine months ago. It’s out there. You are a big VR guy…
Yup.
I did not buy one. Adam, did you buy one?\
No.
Mike, did you buy one?
I did not.
Oh, my gosh…
I would take one… [laughter]
Same.
My kind of curve on this has been like I was fairly excited, and then when I read the early reviews, I was moderately disappointed. And then I guess the person whose content related to Vision Pro I consume the most of is probably Justin Searls, and his first initial review made it sound terrible… And then, as he talks about it more, it sounds like actually more good over time… And it sounds like he’s now basically just using it as like purely screen mirroring, and it’s still great for that.
So yeah, so I think – I don’t know, I can see myself in a later non-Pro iteration shelling out some money for this, particularly if I’m flying with work again a bit more now than I was previously, and I could see it being good for working, or viewing movies or whatever when you’re flying… But yeah, I can’t see myself using it as a standalone device, or like my primary thing. And I think the main thing I’m sort of really – like, all the gesture-based stuff, I haven’t played with it yet… But I don’t know, from what I read and see, it looks very finicky, and it doesn’t quite look like it’s gonna work as nicely as the keyboard… Certainly keyboard and mouse, but even like the kind of –
Hand gestures…
Handheld controllers that other stuff have. What about the two of you? Are you tempted to buy one? What would the price need to be for either of you? Like, would you buy one f it was like 100 bucks, Adam? I presume you would.
Yes. Yes, he would. 100 bucks?
[laughs]
Yeah, you would.
I mean, I suppose maybe at 100 bucks… But even then, I’m just like, I just don’t – I’m not attracted to the medium.
Yeah.
I guess. I think I have everything I want already. I’ve read the book Ready Player One and Ready Player Two, I kind of get where we’re gonna go… And if that’s even somewhat predictive, which like Star Trek was predictive, and so was other movies and science fiction we’ve had… If it’s even 50% predictive, I’m not sure I want to be a part of that. Really.
And I like it for folks who – like, I have a theater, so I don’t have a need to have a big screen. I already have a real, literal big screen. So I’m not attracted to some of the promise of small, bigger. Whereas I can totally empathize with somebody who does not have a larger TV or a larger screen to want to have a larger screen. I get that. And that’s for them. I don’t really see myself – even at 100 bucks, I probably… I think maybe I would have to, because of what we do, Jerod…
[22:12] Let me get you your 100 bucks here. Let me convince you. 100 bucks.
If it’s your 100 bucks, maybe, Jerod.
Okay, I’ll give you 100 bucks for it. Here’s how I convince you on that.
Okay, go for it.
You fly on airplanes, right? Maybe once, twice, four times a year…
Yeah.
I know you do. So 100 bucks on an airplane gets you a seat upgrade, maybe…
Sure.
You know, you go from coach to business, or from business to first… Save the 100 bucks on your seat upgrade, and spend it on a Vision Pro, and you can sit in the very back of the plane with all the weirdos, cramped in, and you feel like you’re in a giant movie theater, or something like this. I don’t know, I don’t have one, [unintelligible 00:22:48.26] that to me is the most compelling use case. That’s when I would use it and love it. Other than that –
That’s not getting me, Jerod.
…I would love to go to someone’s house who has one and use it for a few hours, and I probably would be satisfied and done.
Yeah.
I would be like Guilfoyle when he tested out the VR rig from the dude in Silicon Valley. And now I’d be like “This thing is rad now”, because it has the compression algorithm that makes it better. But I don’t think I would really enjoy it, honestly. I think it’d be like a toy. I’m not that attracted to it. And I don’t like to be a naysayer about technology, because I’m like, that is such innovation. I recognize everything that it promises, but it’s just not for me.
Yeah, I feel like it looks more like a toy to me right now as well. I think I’ve said this before, but it feels like it’s gonna be like the Apple Watch, where the first version they’re just like “This can do 40 things.” And within a couple of years, they’ll realize you can do – well, Apple and/or the users will be like “It can do two things really well”, and then everyone doubles down, and builds the apps…
And even the device - one of the reasons is it’s got this front-mounted screen, and all this other stuff… And if you like pulled a bunch of the sensors out there, I’m sure you would get the price down fairly dramatically. And even being like plugged in, right? If you’re going to use it entirely – some of the folks who are like using it entirely tethered to a Mac… It’s like, well, if you can do that and you can have it plugged into your Mac, and fully powered off your Mac, and use that with no battery and stuff like that, then again, maybe that becomes more compelling. I don’t know.
Here’s the thing that would actually get me… Is if – I would say work applications. If we could be doing this podcast – like, we’re doing it right now on a computer. We have Zoom in front of us, or our version of Zoom - it’s Riverside, so I’m not trying to… I actually almost thought it was Zoom for a second, because it was so Zoom-like. It’s just like, y’all are little squares on my screen… If it could be a bit more realistic… Because it’s kind of weird, Jerod - we hang out with people here on podcasts, and we’re not literally here with them, but I feel like… Like if we hung out, Mike, a week from now at a conference, I don’t think I’d feel dramatically different. I would feel like we’ve kind of hung out. It doesn’t feel – aside from the fact that I can’t smell you… Because that’s an [unintelligible 00:25:03.06] right?
Which is more of a feature…
Yeah, I’m not trying to sniff you… But that would be an in-person feature, right? That’s something I can’t get. It’s a data point that’s restricted in this medium.
Until smellivision.
Yeah, till smellivision, which still hasn’t come around… I think maybe for scenarios like that, where it’s like a meeting, or a hangout with folks. That’s probably where I could be more interested in the whole experience. The siloed, me by myself doing something - I don’t need more of that. I’ve got other things that I’m more interested in, that I do solo as adventures or curiosities. I would hang out with people in a more realistic setting, in an Apple Vision Pro or something like it, if that was the thing that drew me there. And that’s something I think a business would pay for, because you kind of get the experience. You can sort of put some scenes behind you, you can have a more in-person feeling.
It’d be tough for podcasters though, because our guests would also have to have one. You’d have to send one around the world, you know?
For sure. Well, that was the case too until – microphones was the same thing for us for a long time.
COVID changed microphones, yeah.
[26:09] Yeah. Microphones are more popular, so we have more guests that have better microphones. They’re not ubiquitous, obviously; we still have those challenges. But that would be something that would make me – you know, if we had one for everyone. A set panel of hosts, for example, and we know it’s just you, me and Mike, every single time - yeah, we might drop a…
Okay, so what would we spend for something like that, as a business? What would it be worth it for us? 500 bucks apiece, or…?
A grand, you know… Maybe even a grand and a half… I mean, we spend 1000 bucks on a decent audio setup… So I’d probably say between $500 and $1,500, somewhere in that range per person is probably a decent spot to be in. I wouldn’t mind doing that really, if it changed the – now, if I had to wear this thing on my face all day long… Like, I already hate having to wear headphones. And I get it, that’s what we do. Because we prefer to hear better with our Sony 7506s, or whatever they are. I think they’re 7506s, the Pros.
Is that a product placement? That’s a good one.
I love the Sony’s. I’ll product-place those all day long. These are the only headphones I’ll wear as a podcaster, that’s for sure… I love them. The professional series. So I think if I had to upgrade this to a full-on face mask, basically, that’s a heavy head gear… And we’ll podcast for a couple hours sometimes in a day. I’ll have phone calls, Zoom calls daily… If I had to wear that thing for like five hours a day, or four hours a day, as any decent “content creator” might… Through meetings, business in the podcasting part of it, that would kind of suck, man… I mean, it’d be good in terms of immersive, but it would suck in terms of “Wow, I’ve gotta bolt this thing onto my face.”
What does the end game look like then? I think that’s a somewhat ubiquitous –
Oh, it’s already been told. Ready Player One, man. I can’t reveal it, though…
Yeah, but are they wearing masks, full-on masks?
Well, no, at that point it becomes a neural net. It’s something that taps into your brain synapses.
Okay, so we’re a little bit far away from that, unless Elon succeeds with his Neuralink.
You’ve gotta ask Elon about that. He’s already put a microchip in somebody.
I don’t want to ask him about that…
[laughs]
I know what he would say. “It’s right around the corner” is what he’s gonna say.
“We’re already doing it!”
“We’re 18 months away”, from all of his inventions.
Did either of you read his biography from Walter Isaacson?
No.
No. Is it good?
That’s worth a read. I mean, I have a really complicated relationship with the guy. He fired a bunch of my friends, and… But it’s a really interesting book, and I think kind of like Isaacson’s book of Steve Jobs, which I also read, whatever, like 10 years prior, I think biographies are always more interesting on complex people. I feel like the last few I’ve read – like, Arnold Schwarzenegger, I’ve read not his most recent one, but his older one… I read Will Smith’s one literally a week before that happened at the Oscars…
Oh, wow.
I just became like the local Will Smith expert, because I just had decided to read his biography on holiday.
So did you see it coming then? You probably saw it coming.
Well, this is the thing… I feel like this is why these biographies are interesting, is that these people who are very polarizing often have kind of a lot of stuff in their upbringing, and where they come from, and what their relationship with their parents was like, and stuff like that. And when you’ve read that stuff, it makes you look at them differently. Like, I don’t think it makes you excuse when they do bad things, but I think it does make you understand maybe a little bit more how you end up being that person.
Sure. Well, when I say I don’t want to hear what Elon would say, I’m not death on Elon Musk. I’m just –
Oh, yeah.
…I’m just over it. That’s the same way I am with politics, and stuff… It’s like, I just don’t even want to hear about it. Because that was my main complaint, was Twitter became Elon Musk as the main character for like a year. That was my complaint about it, more so than the changes to the moderation, or the features, and stuff… It’s like, I’m just sick of him as the main character… And so I just kind of like “Arrgh!” Even though there’s a lot about the guy that’s very interesting, and he’s had a lot of success, and he’s changed a couple industries… So I’m not completely anti-Elon Musk, but I just – I know what he would say about Neuralink. I’ve already heard him say it.
[30:21] But I guess that’s the thing, he’s - I don’t know how I can quite explain this, but it’s almost like there’s multiple axes of surprising. Elon, or various politicians, or whatever, may well come out on Twitter, or X tomorrow, and say the latest wild thing, that everyone’s like “Oh, wow, I never thought he’d say that.” But they’re not going to come out and say something surprising that’s like “Actually, this really polarizing viewpoint I’ve had in the past - it turns out I talked to a bunch of people and I’m a bit more chill. I can see both sides now.” Things are surprising because they are never almost like nuanced, or contextualized, or whatever.
Right.
It’s almost like we were saying earlier, about blog posts, or content creation, or whatever - it’s more like shocking than… Like “Oh, I wouldn’t have thought that person would look at things that way.” “Oh, that’s a nuanced take.” “Oh, that’s how we understand the world differently.” I’m with you, Jerod, I think that’s why I find so much of some of these characters in these conversations so boring, is that it’s just – I might not be able to predict the exact words that come out their mouth a lot of the time, but I can protect the emotions they are trying to channel most of the time.
My father-in-law - he’s originally from Ireland, and did his PhD at Harvard’s… Super-smart guy. And if you ask him any questions about anything even moderately contentious, he starts with one of two phrases. Either, “Well, it depends”, or “A common misconception is…”, because he’s just like the nuance factory, right? Anything that you want to make a very polarized, obvious “This way is right, that way is wrong”, he’s allergic to that way of thinking. And to me, the really, really smart, really interesting people in the world are allergic to that way of thinking. And it feels like that is harder and harder to find, because the algorithm punishes that type of almost like long-form “Let’s not just inflame people. Let’s go and bring sides together, let’s have an interesting, deep-dive exploration on a topic that’s commonly overlooked”, whatever.
Right. There’s a parallel to software in that whole relationship, because as developers, we want everything to be object-oriented, or binary, or straightforward, or solvable, or deterministic… And so we’re trying to create with certain constraints around a world that is none of those things. Like, the world is gray; the world is analog. It doesn’t have ones and zeros, it has all these varying degrees between one and zero. And that can be very frustrating. And so what I’ve found as the most laudable, interesting and successful engineers are the ones who are able to somehow work around all of the fail points, and the nuances, and the gray parts of the world, and have software that still is robust and survives and works. But as engineers, we want to be like “No, it’s true or false, guys. It’s just true, or it’s false. And obviously, the answer in this case is false. And you said true, so you’re wrong.” It’s the exact same analog, you know?
But yeah, like you said, the people who have lived a long time, a lot of times a lot of people with experience, and also with education, they realize that what we see in the digital world is not what the real world looks like. There’s lots of other – lots of data points missing, as Adam likes to say. The smells. We’re missing all the smells.
[33:57] Was it Jeff Atwood who first came out with the “Strong opinions, just weakly held” thing? I feel like it was on Coding Horror that I first read that… But again, to me that feels like the personality trait, as you say, of great engineers. And almost like an aside from whether they feel that way about stuff outside of engineering, but in some ways you kind of have to have strong opinions, because you have to have some rules to write code. Code is almost by definition strong opinions, because there’s an if/else statement, and you can’t do like –
It’s literally rules. Yeah.
Like, “If depends…”, you know… But then equally, I guess, the more you learn about big systems, and refactoring, and working in teams or whatever… Again, all that comes down to weakly held as well. You need to be willing to change things day to day, week to week, month to month, year to year… You need to change things when you grow a team, when you grow a company, when you grow an open source projects, when you grow as a person… Yeah, it feels like it’s that eternal balance in engineering between those two poles: strong, computer logic rules, and then weakly-held emotions, humans, feelings, organizations… And anyone who tries to go really, really hard in one of those directions and not the other, I feel like ends up making a bit of a mess of things.
Yeah.
Break: [35:22]
The other complexity with software is that even if the strong opinion was right on day one, it can become invalidated on day two, because the world around it changes. The world is not static, and we don’t write our software in a vacuum. And the longer we don’t maintain our software, we find that actually it doesn’t even work anymore. Like, if you just let something sit – this is why we have terms like bit rot.
What still frustrates me to this day - it’s like, I returned to old projects… I had a client who I wound down the relationship with them, but they still needed my help recently. And they have a Ruby on Rails app that’s been unmaintained - by their choice, not by my choice, but they didn’t want to pay for maintenance - for years, on Heroku. And I was like “Okay, well, the hard part about me helping you make this change now is actually just even getting an environment that works running, so that I can make the change.” So I dove into that whole process, just trying to get a working environment going… And it was untenable. It was actually – I was like “I can’t even do it. There’s just version mismatches, Heroku doesn’t support this old version anymore… And I can’t upgrade to this version, because that doesn’t support this”, blah, blah, blah, so on and so forth… And it’s like, the world changed. It’s sad. I wish Heroku didn’t deprecate, and then just remove support for what you’re running… But they did, and I can’t do anything. It’s like a rewrite, or I don’t know… Let it live as it is, until it just dies on the vine. It was sad, but it was true.
At that point, you have to wonder if software – this is kind of polarizing a bit… Is software cancer on the world? Like, it is such a helpful thing, obviously… But the moment you don’t maintain it, it becomes against you, basically. It can’t support itself anymore. It requires a subscription, a person. A person’s time. It requires a commitment to be runnable, in a world that, like you said, is not static; it changes. It’s a dynamic world. And at some point, we’re just going to be like, our whole job - and I guess that kind of is the case already, which is why it’s a little polarizing… We already do maintain software on the daily, right? It’s already part of humanity. But now that we have software as like a – like, humanity has been older than 100 years, right? Like, in the last 50 years, or maybe more than that now, I suppose, maybe 60 plus years, maybe even close to 80, we’ve had the idea of software. You’ve had a hardware device, that had something soft on it, that you can change. Software. And humanity has not had software in its zeitgeist, or I guess day to day, for as long as humanity’s been around. It’s only a recent thing, in the last 50 or so years. And so now we have this thing that requires us to show up daily, make it, progress the world, and then the world relies upon it, and then we have to maintain it. And then the moment you let it go, like in this case here - unless you use Docker… But maybe that doesn’t change your versions, right? Maybe you could have freezed your – you could have installed all of your dependencies locally, and that would have been okay, I don’t know. You could have frozen your dependencies. We now have this thing that requires us to show up and give it love in some way, shape or form for it to keep giving us love back. That’s kind of cancerous.
I don’t know, I kind of feel the opposite. [laughter]
Okay, I love it. Go.
Let’s hear it.
So I guess for me the thing that’s been nice about the last five or 10-15 years with software is it feels like it’s becoming more universally accepted in the software industry, and even outside, even kind of consumers of software, that software is not static, and it requires continuous maintenance. And I guess while you were saying that, I guess I was thinking about – I mean, how many things in our life genuinely require zero maintenance? I mean, there’s some individual appliances, but anything of like… You know, a house - if you locked the doors and just shut the doors on your house, eventually that house is just going to fall down, right? …if you do like literally nothing to it. Your car… I guess over here we have for our heating systems a boiler, or your A/C unit, or… Most things. I think we maybe had this little blip in the 20th century where we shipped a bunch of electrical devices that in some cases - probably not anymore - could actually last 20 years plus without anyone doing any preventative maintenance, or repair, or whatever. And in some ways, it felt like a lot of the software industry looked at software like that for quite a while. And there was some small minority of us, of which I was definitely one of them, standing on the sidelines being like “Hey, these package managers you use, the software and your package manager, all this type of stuff, it might feel good to just like sit on a fixed version of all your stuff forever… But ultimately, the world is changing around you. If you do that, then your macOS version changes, or your Linux kernel changes, or literally like countries in the world change their timezone, so like your calendars are not correct anymore.” It’s like, the world is an always changing thing, and to me, maintenance is almost like admitting that like that’s a thing, and trying to kind of honor that.
[44:36] And I guess particularly in open source land, it does make me happy that this word of like the maintainer is so front and center, because it feels like we’re also learning that a maintainer is a different role to a creator, right? I have never made any open source – this blew my mind… My company that I started last year, my CEO, this blew his mind, that I have worked on Ruby professionally for over a decade at this point, I’ve done a bunch of stuff with Homebrew, done a bunch of stuff with GitHub, some of the kind of fairly big-name projects in the Ruby ecosystem… I’ve never created a Ruby gem, ever. I’ve never created any open source project from scratch, that has got any traction whatsoever. Like, I’ve maintained Homebrew for 15 years now, but there’s no world in which I would have ever created Homebrew. That’s not the type of person I am. But I’m the type person who can take someone else’s idea, when the ball is rolling, and be like “Cool. How do we keep that rolling? How do we make it better? How do we improve the community? How do we bring people on?” Whatever. But I don’t come up with cool, new ideas by myself. That’s not who I am. But equally, there’s a bunch of people I know who are incredibly prolific, talented creators in open source land, who have created many npm modules, Ruby gems, open source projects, whatever it may be, but they don’t have the stomach for plugging away at that for year after year, decade after decade in some cases, just keeping that stuff going. That’s not what interests them. And it makes me happy in some ways that it feels like we as an industry are recognizing that even, as you said, Jerod, that little Rails app - you can’t do that; you can’t just rely on a bunch of open source projects, walk away for five years, and then come back and expect to be able to just be like “Well, let’s pick up where we left off”, because the entire world has changed around you while you did that. That needed to be maintained, and it was not maintained, and as a result, it has maybe died.
In this case, it was literally eight years of unmaintained until they – which, hey, speaks well, I guess, of my code, because it served their purposes for eight years without anybody touching it. I felt good. But then I felt actually really bad at the end of it, because I was like “Gosh, I’m really hand-tied here. Let’s figure out a way of doing this that’s not going to cost a whole bunch of money.” Because obviously, if you had the money all along, they’d be fine. But they didn’t have the money to maintain, because it’s expensive to maintain software… I’m gonna agree with you, Mike. Sorry, Adam, I’m gonna go against you on this one.
Here’s why I don’t think it’s a cancer, because - and the example of a home or a large appliance is a good one. We maintain things that are valuable and provide us value. Maybe you can say our relationship to software is symbiotic. Like, it needs us and we need it at this point. But we only maintain things that provide value. That’s what legacy systems are. We don’t like legacy, because it’s like hard to deal with… But the reason why it’s legacy is because it’s valuable; it’s actually doing something for the world. Otherwise, no need to maintain it. Right?
So cancer - you can’t just ignore it and it goes away. But a software system that’s no longer bringing value - you just don’t maintain it, and it just dies. It doesn’t spread and kill you. So I’m gonna go with Mike on this one, although I do understand where you’re coming from, Adam… Because definitely it’s spreading, and definitely there’s more and more people that need to maintain the software or bad things happen…
I said cancerous, which is not exactly saying it’s cancer…
Okay.
It has traits and similarities, I would say… Mainly that, I would say –
[48:06] You said it’s a cancer on the world; isn’t that what you said, a cancer on the world?
Cancerous. I mean, we can roll back to the transcripts…
We can go back to the tape… [laughter]
Yeah, I’m also just throwing it out there, really…
Yeah.
Because you know, let’s say you throw up a website. Even with the web today - I mean, to establish a decent website, that is attractive to mainstream, or just regular folks, there is so much you have to do and know to get it right. Or you can adopt a platform - not plugs - like Wix, or Squarespace, or Hostinger, or other places that will do different things, that give you that leg up… But it’s still not the same full fidelity as if you like handcrafted the website. But if you leave that website for - like you said, like your home, close the doors for a bit, unmaintained for a year, making zero changes, maybe in the case of a Squarespace, Wix or other, they might because of the platform upgrade for you. But it still required somebody to commit their time to maintain something that is “valuable”, because I suppose there’s an exchange. You’re paying for the service, and so therefore that’s the value exchange… But now we’ve got to show up and like kind of keep loving this thing, and kind of keep giving this thing a little nudge, and a tweak and a turn, and dependency upgrades or whatever it is along the way… Standards change in this dynamic world… That now to kind of keep getting the same initial value and the maintain value, we now have to keep committing our time to keeping the thing in place. And as humans, as humanity remains and it goes even deeper - I mean going back to even social media, as we more deeper into our livelihood being because it’s there, we are here, now we can’t give up, like you had said, that symbiotic relationship. Now we can’t. And maybe at some point, we now have to serve software just so it can serve us. Maybe that is symbiotic. I just wonder, at some point, is it long-term worth it? Even with more connection. We’re better off as humanity, but it hasn’t solved the kind of primary human problems. We still have hunger, we still have poverty, we still have racism, we still have any -isms that are negative out there. The whole internet was fraught with just hate in a lot of places… There’s also a lot of love too, and I get that. I just don’t know if we’ve actually solved the – maybe we’re going in the wrong direction with this podcast at this point, but have we really solved the problem? Does software solve the problem? And will it only require more of our time to kind of keep the status quo?
I think some of this stuff it depends almost like how close you fly to the Sun. So in some ways, I see it as like three options. You describe two of them already, where say option one is you make some shiny [unintelligible 00:50:53.28] JavaScript, but whatever the JavaScript frontend framework is du jour… And your site looks amazing, and you click around, and it’s animations, and cats fly at you from everywhere, and wow, it’s incredible… That’s like option one. And then option two is what you’ve described before, about you just set up a site on Squarespace, or WordPress, or whatever it may be… And then someone else just like maintains that for you, but you have a lot less control. And like option three, [unintelligible 00:51:21.23] when they pop up on sites like Hacker News, like someone who just has a website where there’s no CSS, there’s just HTML and body, and they’re more or less like “Right, either I don’t care at all about like how this looks, or you can just use reader modes, or an RSS app or whatever it may be to consume my content that way. I care about the words, I don’t care about how it looks.”
And I guess for each of those three, it’s like – for option three, that site will probably be viewable more or less the same as it is today, in literally 20 years’ time. It’ll probably look exactly the same. Option two, as you said, you’re probably paying someone, or there’s some big multinational corporation, and you’ve ceded some control in exchange for that maintenance. And it’s option one, I think, that is the most painful to deal with… Because the more new, shiny, exciting frameworks you use, then yeah, you pay a much heavier cost on doing that. And particularly if you don’t want to do that kind of day to day maintenance, or whatever.
[52:23] It’s interesting, because I’ve been building this kind of new Rails app for Workbrew stuff, and it’s amazing to be compared to last time I started a Rails project from scratch how much stuff I’ve written - whatever, a little five-line method, and then I read some more of the Rails docs, and I’m like “Oh, this is a one-liner now. I don’t need to write this method. I can throw it away.” And that to me is what - again, we’re in kind of private beta right now and stuff, and the customers we have, I definitely lean into that… I think it was Reed Hoffman, or whoever; it was like, your first MVP, you should be like embarrassed. The way it looks, and all the wording, and the way Rails will auto-capitalize things for you, and sometimes it looks right and sometimes it looks a bit weird… It’s kind of embarrassing, the state of the app we got in front of people. And no one has complained about any of that. No one has complained about how it looks ugly and janky, how essentially no love is going into design, how there’s no dynamic JavaScript doing anything other than Rails’es built-in stuff… Like, the only thing our customers so far wanted to know is more features. They care about essentially more like backend business logic. And I guess, to go to your point from earlier, Jerod, that is probably the stuff, again, that back in business logic - it’s the easiest to test, it’s the easiest to change, it’s the easiest to upgrade, it’s the least dependent on like third-party libraries, and stuff like that… And it’s all the really shiny frontend whiz-bang magic, great design, relying on the latest web standards, that will have trouble in two years… And my three-line Ruby backend function that powers some new feature will probably be perfectly happy in 20 years, right? And not be reliant on the Rails version, or the JavaScript version, or whatever it may be.
Yeah. Speaking of frontends, I was just thinking about our frontend recently for Changelog.com hasn’t gone through any substantial remake since we launched the website in 2016… And so that’s eight years of just dutiful service without any real maintenance. That’s a pretty big win, I think. I mean, just in terms of –
I think that’s a huge win, yeah.
Yeah. I mean, I think it’s showing its age now, both in the code and just the design. We’ve had desires to redesign and change and do things, but I can’t say that for very many other websites I’ve made, that I’ve had that much longevity without serious updates over time. So that’s kind of cool.
This is the thing that when you think about those sites - and we can probably imagine some sites that we use that are maybe more Rails, or PHP, or whatever; some older-school apps where it’s definitely - there’s not a lot of JavaScript stuff going on there, right? I find the failure states on those apps to be so much nicer. I get an error message, I don’t get pops up, it gets rendered, it might take a second or two for a new page load, or whatever. Whereas I don’t know if it’s because I’m still a Safari user, or because I have a content blocker or whatever, but I just feel like for me increasing amounts of the internet just –
Don’t work?
I just click a button and nothing happens, right? There’s nothing loading, and then I had to click around, I go into my developer tools, and it’s like “Oh, there’s a JavaScript error there.” And essentially, just everything on the page is now –
It just kills the entire site.
Yeah, it’s just frozen. But part of me is almost like how would you even know this is a problem if you’re just like a normal person?
Oh, I know.
Because half the time I go and I do that, and I have - you know, I’ll be like logging (let’s name and shame) British Airways or whatever, and this stuff’s going wrong… And then it’s some JavaScript error. And I’m like “Oh, it must be because I’m using Safari”, so I switch to Chrome. And then I’m like “Oh, it must be because I have AdBlocker”, [unintelligible 00:56:05.14] and it’s like “No, this is just broken for everyone in the entire world right now.” [laughter] And who knows if anyone’s even being notified that this is the case. I don’t have any way of notifying a person that this is broken… And yeah, this is just how things are now.
[56:22] And that for me is why I’m not like anti-JavaScript, but I’m very like if I can push that logic into my backend instead, I can then write unit tests against it, I can deliver the same code to every customer, I can get Sentry alerts or whatever more easily… It just feels like a better world to me. Once stuff gets into the frontend, you can do a lot more, but… Yeah, and you’re having to maintain that, and deal with the changing JavaScript standards, and all your dependency tree that changes all the time, and…
Well, as a guy who’s plugged into the web dev community by way of JS Party, I can tell you that the pendulum is very much swinging back towards our old-school style, for all the reasons that you just explained. And that’s very refreshing. I know that we’ll also eventually swing back the other direction, but I agree with you, it’s a better failure path.
How’s it swinging back? Can you give like a one-minute flow on what that means?
Yeah, so kind of the rise of HTMX, and simpler JavaScript libraries and frameworks, kind of a little bit of a frustration with React as the de facto choice for your Next web app is no longer, I think, de facto; it’s still probably the main choice, but because of RSC, React Server Components and some of the difficulty moving React to the server more, and the confusion that has come out of that has made people kind of disillusioned a little bit. And just like how awesome Laravel and Rails are when you just compare them, the experience. I kind of want to build a Rails app today, because I haven’t for so long…
It’s great.
…and just see what it’s like… Because that’s what Justin Searles also tells me. And all along, when you watch tech Twitter and tech Mastodon stuff, the PHP folks are just like sitting over there laughing, because Laravel is just like a really productive thing… And it’s like a lot of us frontenders and web dev JavaScript people are kind of like reinventing a lot of the stuff that other camps - and Django as well - had been doing for years. And I don’t know, it’s just swinging back that direction.
Yeah, that’s cool. It makes me happy. There was a great one recently, I think it was on Hacker News, the comments for - it was some jQuery release…
Oh, yeah.
And the comments were like 50% of people being like “Why would anyone be using jQuery in 2024? All the JavaScript standards mean that you don’t need to anymore.” And then the other half of people being like “Yeah, I still use jQuery. It’s a really good library. It solves a lot of cross-browser stuff. The APIs are just really pleasant to use.” I won’t name them, because I don’t want to talk about specific people who may or may not have sponsored this podcast at points in the past… But I had that recently, where I wanted to integrate with a particular provider for our app, and I spent several hours trying to make it work. And there was this other company that essentially sells like a “Hey, we have like a user-friendly wrapper on top.” Think like what Heroku sold for AWS. And I had their implementation of the other company’s stuff working in literally less than five minutes. And the developer experience was just like – all the docs were better, using their gem was better… Everything was just a more pleasant experience all around. It was just absolutely wonderful to deal with. The pricing is dramatically higher, but I’m like “Yeah, we’re just gonna pay that”, because the developer experience is so much worthwhile. Every time I think now about working against the API of the first one, I feel sad. It makes me like not want to do my job. And every time I think about using the APIs of the other one, I’m like “Yeah, this makes me happy, because they care, and it’s been well designed.”
[01:00:07.20] And some of the kind of - again, I’m not super skilled up on like jQuery [unintelligible 01:00:08.08] JavaScript, but even some of the code examples people had in the comments, they were like “Okay, yeah, modern JavaScript can do this, but which of these two examples is more readable, and more obvious what it means?” And that like old school jQuery, using the dollar sign parentheses way… It’s super-nice. The reason why jQuery was really good was a lot of thought went into having an API that was really good. And I kind of feel the same way with like Homebrew. Homebrew gets a lot of shade periodically, and one of the reasons I worked on it for so long, and one of the things I liked about it so early on was there was this real amount of care in the community, and from Max, the creator, and I feel like most of the maintainers there, on like having a really nice user experience.
We argue a lot about what a good error message looks like. A good error message informs the user exactly what they have to do. And if an error message says “You need to run this command”, then the question is always “Why wouldn’t you just do that for them?” Why would you print an error that says “Go do this thing”, when – you are on a computer, after all. You could choose to do that thing for the user.
Right.
And I think a lot of our industry underestimates when you’re building like developer tools, or developer APIs, or whatever, just how important that developer experience is. It’s everything, I feel like. That feeling of “I like using this API, versus this API makes me sad to go to work”, it’s a real thing. And maybe I care too much, but I feel like it’s not just me that feels that way.
Let me ask you this about Homebrew, and we’ll talk about Workbrew - I was on the website, and I think you said something like 35 million people are using Homebrew, or something… Some large number that I was very impressed by.
Yes.
And it reminded me that you all have that telemetry built in. Because at first I was like “Well, how do they know that?” And I was like “Oh yeah, because they put in that telemetry”, and that was very controversial, and maybe that’s why some of the shade continues to come your way to this day. That was a long time ago now… I was thinking about that, in light of a recent post by Julia Evans, “Popular git config options.” Did you see this post by her, last week, I think?
Yeah.
Where she basically went out and aggregated a bunch of people… She asked - she has a large following, so she asks her followers “What are your popular git config options?” and then she just blogs them. It’s a good idea for a blog. But she said this in the opener, she said “I always wished that command line tools with data about how popular their various options are, like basically nobody uses this one, or 80% of people use this, probably take a look… Or this one has six possible values, but people only really use these two in practice…” Like, she wishes that that existed. So I can imagine that with Git, or I can imagine that with FFmpeg. Or I can imagine that with - name your developer tool, right? That would be amazing for a user experience. Like, “I’m going to configure this thing…” Vim config - here’s probably the six vim configs that you want. And we do a lot of boiler plates, or starters and stuff that give us those things, but all of that would require telemetry, wouldn’t it? How are you going to know your popular options? That’s why I thought of Homebrew and your guys’es telemetry.
So my question is, has that super-paid off over the years, or not? It was a big, controversial decision, you put – I think it was Google Analytics, wasn’t it? Like, you just used that service years ago.
Yup.
Can you talk about it?
Yeah, yeah. So yeah, we originally used Google Analytics, because they were the only people we could find that essentially could handle our load, and our price point, which was $0. And yeah, it has been really, really useful. So I mean, the single biggest thing that it became most useful for, and we basically ended up dropping a lot of the data that was not this, essentially, was just the packages in Homebrew figuring out how widely used is this package. So a common thing that would happen is like a new version of macOS comes out, and there’ll be stuff that breaks, and we’re like “Okay, we know there’s some stuff like OpenSSL, Curl, Git, whatever.” We know these are popular, we don’t need to fix them. But some random package none of the maintainers personally use breaks. It’s like, do we fix this? Do we delete this? How do we know?
[01:04:18.04] And the analytics essentially gave us like a data-driven way of saying “Well, actually, 100,000 people installed this in the last month, so we probably want to fix it.” Or “Actually, no one installed this in the last year, or at least no one with analytics not disabled… So it’s probably not worth fixing.” So being able to be data-driven about those decisions…
And I guess also as someone who - you know, I’ve been learning a lot, maintaining Homebrew for a while, but at the same time I was at GitHub, and had been at various other kind of tech companies before that… And I feel like that’s kind of the unfortunate double standard here… In an open source project you can see and you tell your users when you have analytics, but like every single other app you use has some amount of analytics, right? Like, basically everything. And certainly, if you’re dealing with like a server side web app, they can track everything you do at all times, and you will never even know, and you have no ability to opt out. And it felt like trying to canoe with one arm tied behind your back, or whatever. Trying to do this type of stuff, and trying to do – essentially I’ve been the product manager for Homebrew, trying to make these decisions about what we do and what we don’t do with absolutely zero data. Essentially, what you’d have to just do is just make arbitrary decisions, and wait for the internet to scream at you and tell you you’re a terrible person for not knowing that this is incredibly popular. And instead, the internet scream at you for having the analytics, but then you make less contentious, stupid decisions.
And also, our analytics, as of - whatever it was, I think like a year or a year and a half ago, we moved it all from Google Analytics to like our own kind of cloud-hosted InfluxDB, which is in the EU. And with that, the nice things are - there was a certain amount of trust that [unintelligible 01:05:59.02] we said “Hey, we don’t want you to store IP address information”, and they provide a mechanism for opting out. But some people just don’t believe that Google doesn’t store that information. So with this server, we can just say “Well, that’s not stored.” And the way we store it is in aggregate; we don’t differentiate between users anymore, because that was like a nice thing for kind of figuring out user numbers, but at the end of the day it didn’t really help with anything meaningful in the project. And yeah, and it basically just means now we have like a slightly more simplified analytics setup, that is more expensive for us to run, but it’s significantly better from like a privacy, anonymity perspective, and all our data is set up to like auto-delete every 365 days, and all this type of stuff. So yeah, we basically have now like pretty much as good as you’re gonna get for opt-out analytics in an open source project, where they need to kind of pay and maintain the infrastructure.
And to go back to what you said at the beginning, Jerod, about Julia Evans’ idea about the command line options - yeah, we’re already talking about doing that, and having at the very least something like the commands that are run, we have some sort of analytics for them, and then we use those to… I think her suggestion was to sort the – in the man page to sort the items, right? So I would imagine like brew install will be at the top, because it’s the most widely used, then maybe followed by brew upgrade… But what will be in position five or six, or seven, or eight, or whatever - I don’t really know. And right now, it’s in alphabetical order, and that’s arguably not as good as it would be if it was sorted by actual usage.
So that’s subcommands… But I imagine configs. I’m not even sure there’s – I’m sure there is a Homebrew config where you can tweak it, and stuff. That seems a little bit more intrusive. Like, “You’re reading my configs?” which you kind of would have to in order to get that information from everybody…
[01:07:49.21] We’ve got a nice middle ground on this stuff, actually. So if you go to – and I’m sure you can dump a link in the show notes. That’s the other thing I forgot to mention with our analytics, is essentially all of the analytics data we have access to as Homebrew maintainers is all on the public internet. So if you go to formulae.brew.sh/analytics, then you can see all of the kind of events and all the data for there… And what we do, for example, is you say “Okay, what does local configuration look like?” In reality, the only stuff we care about is “Are you using the default Homebrew installation or not the default?” Because if you’re using the default, then you get binary packages, all of them. And if you’re using not the default, then you don’t get them. So instead of like logging – you have Homebrew installed in /users/Jerod, you have it in the default location, or you have not in the default location. And you can go and look, and there’s a little page where you can see like Homebrew prefixes for events in the last 30 days… We can see like 41% of them have them in the default location on Apple Silicon, 39%, default location on Intel Macs, 13% in the default location on Linux, and then there’s a breakdown of smaller numbers of people who are running it in like custom locations on ARM, or x86, or Linux, or whatever.
Right.
And that gives us the information we need, but at the same time it preserves the anonymity of the people who were not getting your configuration from that.
Yeah, it’s like a proxy for your actual config. You’re actually just answering the questions that you really have, versus just grabbing all the config information.
Yeah, exactly. Exactly. And also, that’s not done server-side. Again, the other nice thing about why you would think open source analytics would be more popular in some ways, it’s like, you can go and see - like, go and look at the Homebrew code and you can see that we do not send the string of your local thing, and then sort it out on the server. Like, we only send the data that this is a custom thing. So you can dig into like literally the way the analytics is sent, and say “Hey they’re not being creepy and sending all this data that we don’t want them to.”
That is cool. So 35 million users… Adam, does that strike you as a lot? I mean, I guess I stopped and I’m like “Let me intellectualize that if I can”, or think about it, I guess, is a simpler way of saying that… It’s like “Yeah, pretty much everybody uses Homebrew.” I don’t know why it surprised me, but I was like “Dang, that’s a lot of people.”
Yeah, I guess I’m surprised by the number, but not surprised by the number…
Yeah, there you go.
It makes sense. Hearing it, that makes sense… Because what else would you use? If you’re on a Mac, and you’re a developer, and you want to be as close to production, which is Unix/Linux in almost every case, then you’re going to be on a Mac, in most cases, being a developer. Now, there’s also a lot of Windows developers too that are running Linux subsystems…
Yeah.
Yeah, I guess it’s not all Macs now, right?
Yeah, so that number is like inferred, because we don’t have analytics numbers for everyone. So essentially, what we have is we have the analytics numbers, and then we can compare those for a given package to, say, the GitHub – again, what I was saying earlier about people on the server side can track whatever they want… So when you download a binary package from GitHub packages, that is logged. So essentially, we can compare the difference between those two numbers for a given package, and see roughly how many people have opted out of analytics usage… And yeah, it basically looks like about 90% have opted out. And again, the other thing that’s worth noting is some of these users are GitHub Actions cloud runners, and stuff like that…
Sure.
But we don’t discriminate. We believe our bot users are just as important as our humans.
Just as important as our humans. [laughs]
Where would I find out if I’ve opted out? Where do I determine that?
If you type brew analytics in the command line, it will tell you whether the analytics are enabled or disabled.
So I’ve got InfluxDB analytics are enabled, Google Analytics were destroyed.
Yes. That’s because we had an intermediate time when you could opt out of one and not the other, or whatever.
[unintelligible 01:11:45.14]
Okay.
Google Analytics were destroyed. That message could kind of go away, but it’s also fun.
Yeah, interesting…
Because we literally dropped all of our historical archives, backups, everything for the Google Analytics stuff. It’s all completely gone.
You should add some like ASCII animation of it exploding, or something.
[laughs] Yup.
Oh gosh, I didn’t want to say anything, but okay, you made me have to say it.
Oh, no…
Do you still maintain Homebrew, Mike? Are you still involved in the day to day?
[01:12:14.12] Yeah, still very involved. Yeah, I was elected the project leader again earlier this month, and we have like a governance process that you can read about if you want to sleep… So we have little elections, and we meet in person as a group when we can… Basically, every year since COVID. And yeah, so I’m still involved. Day to day, if you make a PR on the main package manager repo, I will almost certainly review pretty much every PR that goes to the package manager.
Do you try to at all mirror user experience to something like apt on Linux?
I’ve used apt a lot. I think in some ways we kind of have slightly different goals, because we’re not like a system-wide package manager… But yeah, but in general, I am thinking of the other package managers I’ve used, both apt-get, and emerge, and pacman, and all these type of ones… But also, when I’ve used Ruby gems, or npm, or whatever… I’m thinking about those when I’m trying to make decisions about how the package manager should work.
What makes me say that or ask you that is kind of what Jerod said, which was – did you say a spinner, Jerod, or something? What did you say that made me say what I said?
No, I was saying some sort of ASCII art of them destroying the Google Analytics.
Oh, okay, disregard then. Because I think whenever I run brew update, or I run sudo apt update, the experience is different.
Yup.
Homebrew will sit there for a bit, and sometimes I’m not even sure what it’s doing. It’s kind of like keepy. It’s not givy. It keeps a lot of its information. [laughter]
Can you do a -v or something? Is there a verbose mode?
Maybe you could.
Yeah, there’s –
Is there a -v?
Yeah, there’s -v. There’s -v, and then if you’re a Homebrew developer, you can do –debug as well. And if you enable -v and debug, then you get a lot of output for everything. [laughs]
Wow. Well, I think -v should be the default then, because that makes me so much happier when I run brew update -v…
That’s why we bring Mike on the show, so we can figure stuff out together. [laughs]
Wow, thank you, Mike. Gosh.
Anytime.
Can I put my hand up and say “Can that be the default?” Because I feel like whenever you run a command like that for a package manager, whether it’s system-wide or not, you want feedback, pretty quickly.
Yeah. But it doesn’t tell you what it’s doing.
Especially whenever – like, I don’t run brew update often. I just not. For example, if I run brew update right now, there’s a lot of stuff out. If I just run brew update, it kind of hangs there. Now it actually says “You’re already up to date”, but the feedback it gave me earlier when I ran it - because again, I haven’t ran it a while - it said that I had a lot of stuff that needed some love, basically. That I needed to come here and if I run brew outdated, I can see what’s outdated, and it’s quite a bit… Because I have [unintelligible 01:15:02.03] Now, we didn’t bring you on the show to sort of gripe about – I didn’t, at least…
[laughs]
But I’m always surprised by the UX of Homebrew, that it seems less verbose, and there are times even whenever – like when I run brew update, I’m surprised by how long it takes to get that. There’s nothing telling me something’s happening, so I’m like “Wow, what’s going on here? Did it break? What’s happening behind the scenes?” But all you’ve gotta do is -v, so I’m going to try that now. But let me suggest that be the default, because I would prefer a verbose update versus anything else.
Yeah, I think – like, now Homebrew does a lot more auto-updating anyway. I think if someone manually runs brew update, then yeah… I think the thing that’s tricky – again, it goes back to what we said about maintenance, right? It’s like, brew update back in the day was – even when it was doing something, it was essentially instantaneous, right? So there’s this kind of continuous almost like maintenance from the kind of product perspective as well, of like “Okay, well, this used to take point 0.1 for everyone, and now takes kind of a minimum of like two or three seconds for everyone.” [unintelligible 01:16:05.07] so how do we get to a world where the output more better reflects that? Also it used to be you’d have to run it manually, and now it will auto-update for a lot of people. So when you run it manually, you probably even more want to see information than you did before, and stuff. So yeah, I’ve written it down, which means that I can promise I will at least think about it on a day that is not today.
[01:16:32.14] I’m also not a daily user of Homebrew, but I am a multi-year user of Homebrew. I can’t remember not using Homebrew.
Yup.
I remember, but it was a long time ago… That’s why I brought up MacPorts, because that’s what was I was using before.
Yeah. Well, [unintelligible 01:16:43.13] but it was just so hard to use that I didn’t really become a user of it. It was super-challenging. But then again, I was also quite green with managing systems, so it was probably me, not the tool. But it wasn’t as user-friendly… Okay, maybe it was the tool. Jerod made a face.
MacPorts for me also was not super-easy to use. I was happy when Homebrew came out… And Homebrew started out being super-optimized for Mac. That was kind of the pitch in the version 1, or 0.1, or whatever… Which I was an immediate switch-over, because I was like “Yeah, why not use all – like, it’s for the Mac. Let’s make it fast, and Mac-y, and all this kind of stuff.” And it kind of evolved from there even, which I think we’ve talked about in the past. But I can hardly remember life before it as well. I’m sure there’s millions of people who don’t know life before it. They just know Homebrew.
Yeah.
Well, so the nice thing about the next few years is - you know, you mentioned Workbrew earlier… The company I’m working on now is essentially building on top of and around Homebrew, and it involves me spending more of my time probably on Homebrew than I did a couple years ago.
For sure.
So one of our big goals as a company is that even if you – if you look in like 5 or 10 years and you’re still a happy Homebrew user, even if you’ve never heard of Workbrew, or used it in any way, or paid us any money, you will look at almost like, as Workbrew grows, and that being an inflection point, and Homebrew gets dramatically better. I think from some level, it’s easy to look at Homebrew and be like “Well, it’s basically done.” It doesn’t need to have really big changes. But I think there is the potential to kind of still – both the stuff you said, Adam, like just improving the kind of user experience, having it be and feel faster, having it be less error-prone, having it be able to kind of support more of the kind of workflows that kind of developers want to use now… This is all stuff that we’re kind of thinking about and working on, and basically we want Homebrew to be better, and we want that to be the kind of bedrock for what we’re doing with Workbrew as well.
Break: [01:18:53.26]
So the day after WWDC was the last time you were on the show with us, and you had left GitHub…
Yup.
…and you were starting something new.
Yup.
But you didn’t exactly know what you were going to do, right? Like, you were kind of trying some stuff…
Yup.
And I’m curious - take us from there to workbrew.com. Were you already brewing on - pun not intended; maybe it was. Were you already figuring out Workbrew, and you just didn’t know exactly how it was gonna work? Or were you trying something totally different, not Homebrew-related. What was your process to get here?
Yeah, so I mean, it was kind of a bit of both. We sort of investigated in the kind of earlier days some other stuff… We didn’t go straight into the company with kind of it being work on Homebrew. But basically, we kind of built some small other things to begin with, and then it became clear pretty early on that that wasn’t playing to our strengths… And my CEO, John Britton, who used to be my manager at GitHub, he was basically trying to convince me to make a company around Homebrew for over a decade. And him and various other kind of people said “Oh, this is a great idea”, and I’ve always been like “This a terrible idea. Why would you do this?” But the thing that is interesting for me now, what changed is that we’re in a place, I think, as an industry, and a place as a project, and stuff like that - like, I mentioned our governance structures earlier. I mean, one of the nice things about this governance structure is Homebrew is in a place that even if I wanted to somehow try and completely take over Homebrew as a corporate entity, I can’t do that. We have structures in place that prevent me or anyone else involved with the project, or not involved with the project, from doing that.
So the project’s safe, the project’s in a decent kind of financial state, and has like a decent community that kind of meets together once a year or so, and stuff like that. But we’re also in a state with like sustainability in open source where there’s more conversation about that. We’ve seen various companies try various things, GitHub Sponsors existed, we’ve seen HashiCorp do what they did and what they do, and what Elastic did and do, and all these types of kind of different models… And to me it’s kind of felt like a sort of natural solution to the problems really that I guess I’ve seen, which is that – another thing you get with like a volunteer-run open source project like Homebrew, where no one’s employed to work on it, is every so often big companies come to Homebrew and they say “Hey, we want integration for SSO, MDM”, or one of these other big company problems that small individuals and hobbyists don’t have… And the Homebrew volunteers go and look at some SAML documentation or whatever, and they’re like “Oh, no, no, no, no… I’m not spending my evenings and weekends on this. I have absolutely no interest in doing that.” So it feels like there is a kind of happy middle ground where the companies who have budgets and requirements for stuff that your average Homebrew user doesn’t care about can get us in Workbrew land to go and be like “Hey, make Homebrew play nicer with the way our company does things.” And that’s essentially what we’re doing. And that – I never really saw it floated that way until we kind of thought about it this year, and that is being like a way to look at open source sustainability through that lens, and like the prospect of kind of build a company and making Homebrew better at the same time.
Previously, when we were talking about this 10 years ago and we hadn’t seen some of the success, and less successful attempt at this stuff, it was more or less just like “Get an open source company around an open source project… Profit.” That was the business model. And I guess I’ve never thought that that was something I wanted to do. And now, we kind of have a nicer, strict separation, where it’s like Workbrew is doing stuff for money, which we will charge companies for. We also work on Homebrew stuff, but the stuff that’s in Homebrew is free, it’s open source, it’s worked on by volunteers…
[01:26:28.06] And it’s a kind of – it’s a nice world, and it requires me, as I did at GitHub, to kind of wear two hats: the open source hat and the kind of company hat. But so far it’s going pretty well. And even, like, we’ve got our first employee starting in the near future, who’s a Homebrew maintainer… And I’ve said to him, “When I send you a message on our company’s Slack, that’s me talking to you as like Mike McQuaid, CTO of Workbrew. When I send you a message on the Homebrew Slack, that’s Mike McQuaid Homebrew project leader. So anything I asked you to do on the Homebrew Slack, you can just be like “Nah, I don’t want to. I’m a volunteer. I do this in my evenings and weekends. I can’t be bothered. You would like me to review this PR? No, thanks, dude.”
And yeah, I think that way of kind of doing things and that way of thinking is maybe a little bit unusual and weird, but that kind of idea of kind of having the company and having the open source as being two separate entities that can nicely, symbiotically benefit each other I think is where my head’s at, and I don’t think that could have been done two years ago, ten years ago, whatever.
I love it. It seems like a good idea, it seems obvious in retrospect. Some of the best ideas are. The name’s perfect… I immediately knew what it was for.
Yeah, I love the name.
Workbrew, yeah.
You’ve got your Homebrew and your Workbrew. I mean, the line has been drawn.
You have, I think coming soon, if I recall correctly, on one of your pricings - like, what’s the state of, I suppose, the company? You said [unintelligible 01:27:52.23] per device, per month. It’s get in touch, essentially. Free forever - which is Homebrew - and then Workbrew is your price per device per month is soon not a Number.
Yup. So basically, what we’re doing right now is we’re trying to recruit - I guess we or others call it like design partners, which is essential like private beta people who join with the expectation that the product is not done yet, but you are going to help us decide what the kind of v1 of the product looks like. So we’ve got some people who are on board right now for that, in kind of like a paid relationship with us where they’re making the product better, and we’re building it sort of to more closely hew to their needs as they would be if they were just like a random customer. And then, essentially, once we’ve got something there that we feel like we could put a 1.0 label on, we’ll have a public launch and anyone be able to kind of join, and stuff like that.
But right now, essentially that’s what we’re looking for. We’re looking for feedback from anyone who is interested in doing that, or even anyone who kind of like some of this stuff resonates, or it doesn’t, or whatever; we’re basically just like talking to lots of people, and I’m building away what I can – you know, some of the stuff that I’ve seen people kind of ask for in Homebrew land for a while… Like multi-user support, like Workbrew… I’m all like Workbrewed on my local machine. So when I run brew on my local machine, it’s actually like running in a separate Workbrew user, and like passing information back and forth that way, and reports everything back, so I can see if like packages are outdated on my machine, kind of like in a central location, and all this other stuff. So yeah, it’s getting there.
It’s interesting also to see it live side by side with the project. I mean, we hear the term and have heard the term commercial open source software, COSS being an acronym, and being quite popular… There’s a lot of companies that obviously have done versions of this, but I think yours is uniquely different that you’ve been a maintainer for so long… And I suppose internally you thought “Well, if I’m going to keep being a maintainer, I’d better find a way to be able to, one, leave GitHub to do this thing full-time, but then also sustain myself and potentially build a profitable, useful business for…” Like, why would you burn your career capital, essentially, is what I’m trying to say? Why would you go and transition to something else? Why wouldn’t you just try and find a way to create a value artifact, which is Workbrew, alongside the thing you’ve been pouring so much effort into for – as long as I’ve known you, you’ve been Homebrew. I don’t know you as anything else. You know what I mean? And we’ve known each other for many years now.
[laughs]
[01:30:35.06] Well, he’s never started anything else.
Right, exactly.
Yeah, exactly.
So I mean, it’s been a journey.
15 years. 15 years I’ve worked on Homebrew now.
Wow. So that’s 2009. That’s as long as this thing has been a thing. This podcast. This is our 15th year.
There you go.
Interesting.
You just left us speechless there, Mike. We all just sat here like “Dang…” [laughter]
We’re all getting old together…
“I don’t like my Apple Vision Pro… It’s just too heavy for my face… I wouldn’t buy it for a hundred dollars!” That’s my best old-person impression. Sorry about that.
Well, I’m glad you see it the same way I do, Adam. I think this is the thing, is that - I’m sure, much like anything on the internet, there will be kind of naysayers about this stuff… But in some ways, I – I mean, generally not around my wife, but I jokingly refer to Homebrew as my first child.
It’s older than your oldest, right?
Yeah. And it’s probably the single thing in my life, bar my relationship with my wife, that I’ve had for that long. I’ve been there longer than any educational institution, or any job, or whatever… So I guess the idea that you would just do that only to almost instantly destroy 15 years of hard work and goodwill in the community… Why would you do that, right?
Totally.
And again, it’s the type of thing where I could go get another job; it’s not like this is the only thing that I kind of can do is do this stuff around Workbrew… But this is what I want to do, and I think I genuinely think we can have something where we’re actually building better software for the people who already like Homebrew, and are using Homebrew, that we can have something that’s actually better, and it’s a big step up, and it provides them with the stuff that they kind of need to be able to kind of – I mean, we’ve got lots of ideas that we’ve been thinking about, but… You mentioned earlier about apt-get. When you look in the Linux space around this stuff, you’ve got big companies like canonical, and Red Hat, and whatever… And I know that some of the kind of shine has kind of come off with some of these folks, but you know, you can pay them for commercial support, and you can pay them for getting [unintelligible 01:32:45.28] with how your business runs, and they’re a lot less opinionated than Homebrew is, and has been, about how your company should work. And even – I saw this in GitHub, right? You guys have both been using GitHub since the very early days as well, right? And the early days of GitHub it was internally and externally, like, there was a right way of using GitHub, and there was a wrong way of using GitHub. And if you want to go and press the Merge button and make your merge commits, that was the right way, and you were going to have a good time. And if you wanted to rebase everything, and you never want to use the Merge button, and you never have merge commit, you’re gonna have a bad time, right? Because you’re just spending your whole time on projects being like “Anyone who has a PR, make sure you never click the big green button, that is like the most clickable thing on the whole page. Please do not click that.” And eventually, over time, GitHub learned “Oh, okay, actually it’s maybe not terribly practical to go to kind of a massive, multinational company and say “Hey, FYI, the way you build software is wrong. You need to build it our way. PS, give us money.”
[01:33:59.21] It’s nicer to kind of go to them where they’re at. And for me, I feel similarly with Workbrew. The way that kind of these big companies, or even like medium-sized companies increasingly kind of want to work, that doesn’t play nicely with Homebrew, it’s like, well, I understand why Homebrew maintainers don’t want to support that way of working, but at the same time, I feel like someone should… And yeah, this is what I and the Workbrew folks are kind of gonna do…
A question I asked myself really about Homebrew is – or I guess curiosity from the outside, is… To me, it’s such a staple for the Mac platform; that’s my platform, so that’s where I’ve got my personal use case from. I know that you’ve gone beyond the Mac with Homebrew, and I don’t have experience there. But I wonder how much of a first-class citizen has Apple treated Homebrew like? That’s one question. And then the second question is, how can you ensure that the Apple platform won’t become hostile? Because they’re kind of doing – they just did this with the web, right? They just did this with web app installations I think in the EU. I’m trying to like grok the headline to some degree in my brain in the moment, but… To most developers, Homebrew is the first-class citizen of package manager for a developer. But that’s one way of developing on the Mac. It’s not the Apple way, the Apple-native way, which is like Xcode and their other developer tooling. So you’re sort of like a sidecar to the Apple platform. Meanwhile, developers feel like you’re a first-class citizen. Like, I don’t use those platforms; it’s not where I develop. I’m curious how that is for you. Do you think it’ll be hostile ever for you? And has there ever been “We love Homebrew. Let’s make it more native”? Or has there been any entanglement with Apple in positive ways?
Yeah, I mean, I think I’ve maybe talked about this before… I feel like the biggest, most positive entanglement with Apple that was fairly publicly visible and stuff is when they launched the apple silicon chips. They were really pretty proactive at reaching out to us and being like “Hey, what do you need? And we’re gonna get you the CI infrastructure you need, that you can run all your CI jobs on, but also what maintainers need to Apple silicon hardware, and we will make that happen in a timely fashion”, stuff like that. So that was an example of them being very proactive, and that was very useful.
But I think the interesting thing with Apple is it’s a mutually beneficial relationship there. At the end of the day, all three of us on this call, and most of the Homebrew maintainers are all running a Mac, right? We like Apple stuff, we probably all have iPhones, many of us have Apple Watches, many of us have iPads etc. And a certain amount of this stuff just comes down to like “Well, that is the platform we choose, and as a result, we’re going to put up with certain things.” In some ways - you know, would developing Homebrew entirely on Linux be easier than doing it on macOS ? Yeah, probably.
But does Linux need you?
Exactly. Linux doesn’t need us to the same extent. Exactly. So yeah, I think – I don’t know, there’s always that thing with Apple where it’s like… Homebrew has an open channel with Apple, and this probably does not surprise you, with Apple being Apple. I can’t go into too much detail about what we talk about and whatever, because I’m sure that would make them upset.
Just whisper it. They can’t hear you. [laughter]
[01:37:37.12] But yeah, I mean, I would say we have an open channel with Apple, but it’s… It could be better. But I guess even at GitHub, which was a fraction of the size of a company of Apple, by the end, I could see that some of the issues that kind of GitHub had with communicating and collaborating with people outside the company were just the fact that this is what happens when you have a big company. And the way Apple runs Apple, and is that required for me to get the shiny stuff that I like from Apple? I don’t know. I’m not a business expert in that respect, but I definitely think that they just – they run the company the way they run the company, and that makes things hard for them to have really, really deep collaboration with a project like us. There’s been times when they say “Hey, all we need is to – we can help you with this thing, we just need to know the name of your legal entity”, and we don’t have a legal entity. So “Okay, well, tell us the person on this project who lives in America.” None of the people working on this particular project live within America. It’s this stuff that – I can see it from both sides. I can see why it’s hard for them to work with us, and vice versa.
I just figured they would have absorbed you by now. I just figured they would have made – Homebrew to me is like so ingrained and important to a developer’s lifestyle on a Mac that they would be like “Great this is still open source, but now this is an Apple project. Let’s “acquire” it, because it’s just so crucial.” Imagine if Homebrew didn’t exist today. Like, if tomorrow for some reason Homebrew went away, what percentage of Mac developers would be totally upset? And considering – like, can tomorrow literally be the day of Linux on the desktop? Because Linux is easy to package-manage, Linux is easy to use, and that’s actually the target that most developers - most, like 99.9% of developers - are targeting anyways. So what’s the final nail in the coffin to make someone, a developer, move away from the Mac? Would it be non-Homebrew support, or somehow they become hostile, whatever? I think that’s where I’d be at… What do you think, Jerod? You’re over there, grinning over there… What are you thinking, man?
Well, I’m thinking “How could it go away?”
Well, I don’t know. It’s hypothetical, Jerod. That’s the whole point of hypotheticals… [laughs]
Well, I know, but you’re asking how Apple is acting based on hypothetical, but if I’m inside of Apple, I’m thinking “Well, of course we could acquire Homebrew”, whatever that means, hire all the people, and whatever… But if Homebrew went away, like if Mike McQuaid died, and John Britton, and everybody who’s maintainers, they all died or they just quit… Let’s be nice, let’s say they all quit. It’s all open source. Apple could just pick it up, say “Okay, everybody on Homebrew…”
Would they though?
They could, very easily, and say repoint your URLs to our infrastructure… And everything’s just hunky-dory.
Okay.
I mean, isn’t that the case, Mike? They could do that, couldn’t they? Pretty easily.
I don’t know about easily, but theoretically, certainly. I mean, we know in software land everything is possible, right?
With some effort, they could do it.
I mean, in some ways, I think the reason why they haven’t done that is because it a) is messy and complicated for them to do that, and they don’t have to. I mean, I’ve had conversations about this before; as much as I love visiting your lovely country, I will never move to America. And I can give you the breaking news here - I will never be a full-time resident of America, ever.
So if you’re Apple, if the project leader of the project is like “Well, I’m just not going to move”, and everyone who would have to deal with Homebrew staff is all in like Cupertino, and you have the person who’s contributed the most to the project, and it’s like a project leader, and it has a governance structure or whatever, and they’re like “No, I’m not moving to America [unintelligible 01:41:17.24] Thank you”, then - I mean, they can’t really just acquire the project. And this is the – I don’t know, I feel like if Homebrew was the labor of love of like purely one person, and that person was happy to go and… But even then, the world we live in now is you can find that person and then a year later they could be like “I don’t like working at Apple anymore. I’m going to go quit and work somewhere else”, and…
See? Software’s a cancer after all… [laughter]
[01:41:51.06] Mike, take us on a walk here. Take us on a walk. I don’t want to drop the playbook for Apple or anything, but you said it would be hard. I’m over here, and maybe I’m just the person who’s naive and thinking it can’t possibly be that hard… But if you’re inside of Apple, you’re an engineer, and your boss comes to you and says “Mike, we’ve got a problem.” “What’s that?” “Well, you know the Homebrew package manager deal?” “Yeah, I know it.” “All the maintainers just quit. And millions of people are using this to install software on their Macs. We’ve got to do something.” And you’re like “Okay.” How hard would it be? What would you have to do?
I mean, I guess, again, what we talked about earlier, there’s the technological hard, and then there’s the people hard, right? So let’s say the technological hard. So what they would have to do if literally no one is willing to even update a readme –
No one’s gonna have another commit on the repo.
No one’s gonna have another commit on any of the Homebrew repos at all, right?
There you go. Yes, yes.
So what they would have to do would be - okay, well, firstly, how do we tell all the Homebrew people…? All the Homebrew people would have to point their Homebrew to a fork.
Press release.
They would presumably like fork this stuff, and then put it over… They would have to tell everyone how to do that, or if they were feeling really YOLO, [unintelligible 01:43:03.07]
Yeah, friends inside GitHub.
Yeah. So you have to effectively move everything over. But in some ways, that’s not even the hard bit of Homebrew.
Okay.
The hard bit of Homebrew is there are 10,000 packages in there, all of which are built and installed and tested slightly differently, all of which pull slightly different things from slightly different places, and interact in slightly different ways with each other, and the ecosystem… And some of those packages are very easy to update, some of them are very painful to update. Some of this stuff is easy to change, and some of it is not easy to change. And essentially, you need to take over – I think that’s the thing, is that it’s not just a matter of “Well, Apple can kind of point everything to themselves.” But what we said earlier about maintenance - Homebrew requires fairly… I mean, considering how relatively few people have worked on Homebrew in its history, it requires an astonishing amount of maintenance. And just keeping all of that software working, and up to date, and compatible with macOS releases and stuff like that is a lot of work. And one of the great things Max did in the early days was Homebrew was released relatively shortly after GitHub was public. Less than five years, I think, after kind of GitHub was on the kind of public internet, and you could sign up… And one of the smart things Max did was making it so that Homebrew was from the outset not maintained explicitly by Max, but was like “Hey, I’m Max, I do some stuff, but Homebrew is maintained by the community.” And again, this is the problem with – this is the nice thing we have with kind of open source projects… People may have gotten annoyed with analytics in Homebrew and various other stuff, but no one has actually ever seriously and successfully forked the project. But if Apple were to take it over, I would think there would be a very real chance at the same time you have a bunch of community people who are like “Hey, we want to go and do that.” And also, the community people are happy to kind of work on a project where some of our maintainers get like a small stipend, but no one’s being paid anywhere approaching market rates for any of their time, right? And no one is employed by Homebrew to work on Homebrew.
How much do you want to spend your evenings and weekends contributing to one of the world’s richest companies to run their package manager? Essentially, they would have to insource not just what the maintainers do, but what all the volunteers do, essentially, as well, because most of those people are probably not gonna want to spend all their time kind of helping Apple for free. So yeah, I think it’s interesting. I think it’s definitely kind of a tricky situation… But as I said before, I don’t see a world in which that happens, because –
I don’t either. I’m just playing a fun hypothetical…
It’s still fun to play with. And I guess, to touch on something just because you might find this interesting… We’ve touched on like Homebrew on Linux a couple of times… And that’s a slightly kind of weird use case. But I think one of the things that makes Homebrew and Linux interesting and compelling to people is not so much the fact that it runs on Linux, but the fact that it runs on macOS and Linux.
[01:46:12.07] So if you’re working on a project, or a CI, or you have a split dev team or whatever, that you can say “Hey, we’re gonna use the same Homebrew package, or brew files, or Homebrew setup in CI, or whatever, and we’re going to use that on macOS and Linux. And then we have the versions and the package manager and whatever in sync between those two places.” And were Homebrew or Workbrew in future to ever do anything like port Homebrew to Windows, then you could have like Windows, Mac, and Linux, and you could have either cross-platform dev teams, or like dev teams in different departments or whatever that can all kind of share use of the same tool, and that kind of unifying ability of a single tool is pretty compelling, I think. And that’s what people seem to like about it.
That is cool. So did you have some customers lined up before you launched? Like, did you have some beta people? Because it’s all like private beta now…
Yeah.
You said you had some large entities who had previously approached you.
Yeah, we’ve got some kind of like medium-sized companies in like private beta with us right now. But if anyone is listening to this podcast and they think Workbrew sounds compelling and they would like to talk, then we would love to talk to you.
Mike [at] workbrew.com, or what’s the way?
Yeah, so if you go to the Workbrew homepage, then there’s a contact form, workbrew.com/contact, and if you get in touch there, then we will reach out to you and we will talk to you about Workbrew, or Homebrew, or anything in between.
Apple Vision Pro… [laughter]
Right.
Any topic that Mike has discussed today on the podcast. Was workbrew.com - that couldn’t have been like an open domain. You had to go get that one, right? That’s just too good to just be like 15 bucks…
Yeah, I think it was – it wasn’t very expensive, though. But yeah, the name followed the idea by about five minutes. It was my CEO, John’s idea for the name, and I was like “Yeah, that’s–” And immediately I also thought, you know, Homebrew - it has its official logo of the old beer mug… And we’ve got our own little vector diagram for that. But when you install stuff on Homebrew, you see the little beer emoji in your terminal, and that’s almost like the unofficial logo. And I was immediately like “Yeah–” Almost the first thing that came was Workbrew - yeah Workbrew is coffee.
Yeah, love it. So workbrew.com, and it points at Homebrew.sh. But not the other way around. And of course, you have a Homebrew command line interface that has 35 million-ish users… There has to be at least temptation to integrate Workbrew into Homebrew to get the word out. Is that something that you’re thinking, or you’d like to do? Or does that cross a line for you between the open source and the commercial stuff? What are your thoughts on that?
I don’t know… I mean, never say never, but I think that’s definitely something where it’s not up to me. The people who work on Homebrew would need to decide that is in the best interest of the project for that to happen… And I guess even – you know, I’ve made a bunch of PRs to Homebrew to enable functionality in Workbrew… And again, the way I think about it is like if I’m building functionality into Homebrew to benefit Workbrew, it should still be useful by itself. The analogy – have either of you two got kids who are like into like Legos nowadays?
Yeah.
Sure.
Yeah. So I feel like the way Lego is now compared to how I remember it growing up… Basically, now there’s this real two poles of Lego, where you have the really super-crafted kits, which might have like a shark fin that like this is the only kit that possibly has a bit of plastic in this particular shape, right? And you have the instructions, and they might offer you multiple things you can build, but ultimately it’s just not as general-purpose. And then you can just buy a big – go to the Lego store, buy a big bucket of just like bricks, and I can build with that whatever I want.
[01:50:00.03] In some ways, when I look at those two, I see Homebrew as being the big bucket of bricks, where it’s like, what we’re building in Workbrew land - you could build that yourself with the bucket bricks we’ve given you in the open source project… But it’s probably going to be – unless you have like infinite amounts of time, it’s probably going to be… And subject matter understanding of Homebrew… Probably just paying us to use the nice thing that we built for you, that has the beautifully-crafted shark fin is probably going to be a nicer experience for you.
And I guess the other thing that I’m trying to do in building this - I mentioned before, I used to work at GitHub, and for me developer experience on like GitHub and Homebrew, and I guess the user experience on Apple products… That stuff is really important. And that’s equally going into what I’m building. I really deeply care about having a user experience that is very nice. And the number one user of Workbrew is me right, on my local machine… And I, as quickly as I could, replaced my local Homebrew with the kind of paid Workbrew set up, and every time anything annoys me, I basically drop whatever feature I’m working on and I make it so it doesn’t annoy me anymore. I think like that, to me, is like the best way of building developer tools, is you build something that you actually use yourself, and you have a very high standard for quality, and a very low standard for having things annoy you. And you’re willing to take feedback, like Adam about brew update not being verbose enough.
Yeah. Well, good stuff.
Love it, Mike. Cool stuff, man. Excited for you.
For sure.
I hope it all works. I think it’s going to work.
Me too.
It’s gotta work, right Adam?
[laughs] I hope it keeps working, yeah.
I think it will work… Brew.
Ah…! Dot com. Sign up today.
Yes, workbrew.com.
It seems like a proven methodology, right? It’s very much Sidekick/Sidekick Pro, but it has even a clearer line, because it’s like home and work, and it’s like very – to me, I like the cleanliness of that. I like the way you’re approaching the open source stuff. It has to benefit Homebrew, it can’t just be “Well, we are the maintainers, so we’re gonna put it in there anyways”, kind of stuff. And I just feel like that’s all very good vibes, and so I just think you’re on the right track. I just hope it works. I think it’s gonna work, but you know, come back and let us know if it’s working, or if you’ve got something else that you hope works.
Anytime.
You know how these things work…
Yeah. How many times can you say work?
I was trying for seven…
Maybe we should get back to work… [laughter] Hah!
Come back to work, yeah.
Yeah. Well, this is work, right?
I guess…
I guess…
No, this is Friends. This is just three friends hanging out.
That’s right.
How come all of our friends use Safari? I mean, I feel like we need to get some new friends, too… Because pretty much everyone we talk to are Safari users. I feel like our demographic is very streamlined at this point.
Yeah, I’m cool with that.
You should do like a [unintelligible 01:52:55.03] or something for some sort of like “I choose Safari over Chrome”, like…
Yeah, “I choose Safari… I use Safari willingly, and not by Apple dictate, like the rest of the people on iOS…” Cool, Mike. Well, we’ll let you go. Thanks for hanging out with us. It’s been awesome, as always…
Always a pleasure, guys. Anytime.
Yes! Bye, friends.
Bye, friends…
Bye!
Our transcripts are open source on GitHub. Improvements are welcome. 💚