The Changelog: Software Development, Open Source - Oh my! Zsh. (Interview)

Episode Date: October 25, 2021

Robby Russell is back on The Changelog after more than 10 years to catch us up on all things Oh My Zsh — a delightful, open source, community-driven framework for managing your Zshell configuration.... It comes bundled with plugins, themes, and can be easily customized and contributed to, because hey, that’s how open source works. In this episode Robby gives us a glimpse into the passion and the struggle of being an open source software maintainer.

Transcript
Discussion (0)
Starting point is 00:00:00 What's up? Welcome back. This is the Changelog. On this show, we feature the hackers, the leaders, and the innovators of the software world. If you're new here, head to changelog.fm to subscribe. Today, we're joined by Robbie Russell, and he's back on the Changelog after more than 10 years to catch us up on all things Oh My ZShell. Oh My ZShell is a delightful open-source community-driven framework for managing your Z shell configuration. It comes bundled with tons of plugins themes and can be easily customized and contributed to because, Hey, that's how open source works. Robbie gives us a glimpse into the passion and the struggle of being an open
Starting point is 00:00:36 source software maintainer. Big thanks to our partners, Linode, Fastly and LaunchDarkly. We love Linode. They keep it fast and simple. Get $100 in credit at linode.com slash changelog. Our bandwidth is provided by Fastly and LaunchDarkly. We love Leno. They keep it fast and simple. Get $100 in credit at leno.com slash changelog. Our bandwidth is provided by Fastly.
Starting point is 00:00:49 Learn more at fastly.com. And get your feature flags powered by LaunchDarkly. Get a demo at launchdarkly.com. This episode is brought to you by our friends at Fly. Fly lets you 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. Fly's vision is that all apps should run close to their users.
Starting point is 00:01:20 They have generous free tiers for most services, so you can easily prove to yourself and your team that the Fly platform has everything you need to run your app globally. Learn more at fly.io slash changelog and check out the speedrun and their excellent docs. Again, fly.io slash changelog or check the show notes for links. so robert this show goes back in history in two ways one in scheduling and two you were on episode 61 which is a whole different era of this show. Like I look back at this show we've done, Jared and I and others over the years. And it's just like, this show has like eras. You got the, the win era, which was like probably around that, that timeframe, episode 61, somewhere around there. Then you got the Kenneth Reitz and a few others, Andrew Thorpe era, which was probably 30, 40 episodes.
Starting point is 00:02:27 And then Jared, pretty much since then. So, I mean, like you were back in the earliest echelon of this show, episode 61, Omae ZSH, Planet Argon, a lot of fun stuff. How you been? I've been good. It's been in many years, but 10 and a half years, I think, since that episode was recorded. I have vivid memories of it because I took three months to go to Paris and rent an apartment. And so I recorded that from my little apartment in Paris. So I have fond memories of that.
Starting point is 00:03:01 I remember being very nervous about not having a good audio setup and also just being on the podcast in the first place. Gosh, I was also nervous. I was like, I use this thing. I barely know about it. And I kind of still barely know about it, but it was only like not even two years old at the time. So barely. Yeah. I'm glad you did the math too. Cause that was May 26th, 2011. That was definitely more than 10 years ago, just passed. But I mean, that's a long time ago. So I think there's a lot of different ways we could take this just to sort of forecast directions we might go. One, this is a really long project, probably an unexpected success of a project because you probably I remember the early story where you just sort of did this and put it out there and it was just helpful. And plugins came in, like kept growing and growing and that kind of stuff. And then you also got Planet Argon, which you do a lot of Ruby stuff there.
Starting point is 00:03:44 So you're a Rubyist and you've got a consultancy. So there's just a lot of different angles we could take here, but a maintainer for quite a while. Are you still in the maintainership part of OMISEUSH? I see creator is your title on the site, but does that mean you're no longer maintainer at all? I do some maintaining on the project. So we have another developer, Mark, who's based in Barcelona, who does a lot of the day-to-day, week-to-week maintenance on the project. And between the two of us, we do most of it. So we do some triaging together. We'll schedule times to do some pairing together and we'll triage issues and PRs together. And that's been something we've started doing this year and that's been helpful for us. Otherwise, he's been for the last, I don't
Starting point is 00:04:23 even know how many years now, he's been kind of taking the lead on doing a lot of the PR triage and working through that stuff. And so I'm more of the making sure that we're keeping it simple for new users. So I'm always kind of, so when there's some bigger topics or ideas for the project around changing installers or updates or with the sort of things that people need to know before they use Omaze Show, then I start getting involved in like, well, let's make sure we're kind of aligning that with some of my goals with the project that weren't necessarily goals when I created the project, but over time realized that what I really wanted to do was have this be a good entryway for people new to, people that are maybe a little uncomfortable with
Starting point is 00:05:03 working in the command line. Like they haven't done it that much. They might be new to, people that are maybe a little uncomfortable with working in the command line. They haven't done it that much. They might be new to being a software developer. So I just imagine these junior developers, junior full stack developers that are like, okay, I need to learn this thing called Git. I want to use this stuff on the command line. I need to run these commands. I don't really understand exactly. And I'm like, I want to instantly make their experience be a little bit more exciting, more friendly, something they can feel like they can customize a little bit rather than just being this blinking cursor. So I always take that into consideration when we're kind of talking about new features and new updates and ways we can take the project. And so that's part of my role. And then I do, obviously, I interact with the community a lot, like on social media, and then participate in the discussions. And we've got a very active
Starting point is 00:05:41 Discord instance and stuff that we've been using for the last few years and in many ways because it's been such a i hate to use the word popular but it's been a popular a lot of people use it and it's kind of always shocking it's like one of the fun things about always our open source is that you don't really know how many people are using your software project you just can kind of guess based off of like github has some very limited statistics on like browse like people hitting the website or how many people are cloning or pull it. You know, like you'll see those numbers like, okay, how many daily clones?
Starting point is 00:06:12 And I'm like, they don't really tell you what that number means, but you're like, oh, 25,000 clones a day. And you're like, well, is that for a pull or is that like a fresh new clone? Right, because your install process is a shell command that is a curl command that pulls it down so there's some raw stats there i'll have to say that oh my zsh is a default install for me like i if i'm on a machine that i control and i want to maintain i keep using it for
Starting point is 00:06:35 more than just a little bit so like a random vps i'm probably not gonna put it on there but like a local raspberry pi or my max that that I'm using locally and whatnot, or a Linux box locally, I'm upset if, oh, my ZSH is not installed. My life is just different on the command line managing it. So for me, it's a default install. I'm so glad to hear that. It's funny because we have servers that I interact with that are using Bash, and then I never feel like I need them out there on those servers and stuff like that. But I've always thought of it more as like this is my local environment i wanted to be kind
Starting point is 00:07:08 of set up and but i know a lot of people use it in there for their server devops type work and that's great uh it's not what i really envisioned for the project but i guess that's well the plugins really let you extend it which we could talk to because like i exactly without going too far into it one of the things i appreciate beyond just simply like local dev stuff is I'm doing some stuff with Docker and Docker and compose on Raspberry Pis and whatnot, or a Linux box. And so just having some of the niceties that you forget about or want to do in the plugin is just helpful. You know,
Starting point is 00:07:38 like the command line completion stuff that's in there, the shortcuts or aliases to come on board with enabling that plugin, which is just there. And I'm like, why would I not use something? I didn't have to configure it. So like for me, it's like baked in config. Just install Omaizsh, enable a couple plugins. I have to put Dracula Pro.
Starting point is 00:07:55 So Xeno, Rocha, I put Dracula Pro as my theme pretty easily on all my machines. Enable it there. It's pretty easy to do that. I did learn something recently about custom, which I didn't know before, which we could talk about, but which bit me on a OMA ZSH upgrade. I kept hitting a git issue because I wasn't putting my themes in custom.
Starting point is 00:08:14 Long story short. And so like decade, a decade later of using it, I finally realized, oh, there's a custom directory I should put things into. So that's how it works. It's a lot of fun little things that we've had to kind of work around over the years to allow things like that. And it's like, I remember I wrote a blog post, I want to say, I don't know, maybe five or six years ago around like, it's kind of like
Starting point is 00:08:35 do my Z show, like how I accidentally create like a monster of a project. I'll include a link to you so you can share that in the show notes or whatever. But the was just talking through so many of the things that people really like and appreciate about Omaze Show were never there when I first started it. It was really like, here's my handful of aliases and little shortcuts I want to use, and I want my coworkers to use it so when we're pairing, we're all kind of on the same page. And so plugins, themes, those came in the weeks that followed after I first open sourced it. And I was like, oh, that sounds interesting. Yeah maybe maybe there's just an easy way to do that and just blow
Starting point is 00:09:07 so it wasn't like i've given a couple talks on this too at some like coding schools and i was just showing them like literally like here's like the implementation it was wasn't like i'm not a crazy z like z shell command line scripter by any means it was more like oh they're like we'll throw some things in this directory and if you put them in here it'll like try to find a file with that file name and then just load it and then you get all this stuff and it wasn't i always kind of think of that as like i feel like it was like the newbie way of approaching a project and in a weird way like so many people can appreciate it because it's also kind of simple just to interact with but it's like behind the scenes it's not a super complicated software project by any means but it's been awesome to see
Starting point is 00:09:45 how it's been mimicked cloned how people are using it in windows machines and different operating systems and like there's variations of that in different platforms and you're just like this it's an honor it's like even the name of the project wasn't something i intentionally thought about it was i had named something else called Oh My Science like about two months before. And it was just like kind of playing off the name of a different project and that went nowhere. So it wasn't even like intentional on that front. So it's like a completely accidental thing
Starting point is 00:10:15 that a lot of people know about and know me for. And outside of selling some stickers and t-shirts, it hasn't really made me any, like the person that makes that Dracula theme probably makes way more money with that than I've ever made because of Omaizy Shop so
Starting point is 00:10:28 outside of maybe a few clients have mentioned it here and there we did a show with Zeno so you can listen to that one if you want he actually doesn't mind
Starting point is 00:10:33 making money from his open source too so I was actually the crux of that episode was like yes you can make money from open source
Starting point is 00:10:40 and here's the way Zeno Rocha has done it and why he feels it's okay I said hey you can do this too if you want to. I know. I keep thinking about like ways to monetize Oh My Z Shell. And then I'm like, I don't want to be accountable to anyone to do anything in terms of like
Starting point is 00:10:56 commercial support or anything. Although I've been recently getting requested because there's some companies that are starting like the security teams are starting to say that they can't use Omaze Shell. I don't know exactly why yet, but they want me to go through these auditing processes. I'm like, this is starting to feel like a lot of extra work to allow you to use it. So maybe there's a corporate version of this product
Starting point is 00:11:17 that allows me to at least talk to your security team to get it bypassed so that you can install it on your command line. So it's unfortunate. Package it up and license it, you know? Yeah, maybe. Why not? Let's speak to its popularity,
Starting point is 00:11:29 because you said you don't like to say that it's that popular. But man, I mean, if you just look at the raw numbers, you mentioned the installs or whatever those numbers represent, 1,900 plus contributors, 300 plus plugins, 140 plus themes, 135,000 stars on GitHub, 23, 000 almost forks as of this time so i mean massively popular project now on this podcast it's like 50 popular because or maybe i guess 66 because it's yours adam's a loyal user i'm not even a z shell guy i just use bash so maybe tell the people who are like me because surely there's many of us out there
Starting point is 00:12:06 who are just happily using Bash or maybe not using Bash, what got you into ZShell? Why did you like it more and why was it worth building this project around? That's a good question. At the time there was an element and a lot of the ideas that came in for the initial version of my ZShell were from people I knew in the Ruby on Rails community. Even some of the initial code in my ZShell was probably copied and pasted from their Zshell configuration
Starting point is 00:12:27 that I had copied a year or two prior to that. I think a few people like Rick Olson had shared a bunch of things with me over the years. Techno Weenie. Yes, exactly. So at the time, Zshell versus Bash, Zshell just had this really awesome auto-completion thing built into it that I don't really recall
Starting point is 00:12:44 being really simple to do in Bash, or if it even really existed at the time. And so it was really just like, there was stuff baked into it with a couple of configuration changes. And all of a sudden it was like, oh, I'm auto-completing SSH host names. Part of our business used to be in hosting as well. And so we had lots of servers. And so I was doing a lot of host names and stuff like that at times. And that was just this really, really helpful little thing that I kind of just got out of the box. And then we started just doing some scripting there.
Starting point is 00:13:13 So I think it was just more of it. It wasn't the default. So there was probably this allure of being like, oh, it's something else. It's not this default. It's like you get these extra little things. You switch over to it. You know something that other people don't.
Starting point is 00:13:27 When you read their documentation, it's a little bit more archaic so if you figure something out you feel maybe a little clever i'm just being honest sure and now i mean i see people doing stuff in bash now there's a couple of even like oh my there's like bash it and a couple other oh my z shell like frameworks now that seem to have a lot of very similar features and functionality. And I'm like, okay, well maybe side by side, they don't really look that different anymore. Now I think it's the licensing is like, I guess an aspect. And that's why Apple switched over to have ZShell be the default a couple of years ago, which I was like, that was unexpected.
Starting point is 00:13:58 Kind of ironic, right? Like that's cool, but now you're the default. Exactly. So now we're the default. But a lot of the time it was just like, there was some cool little features we got with like the auto-completion and just being able to wire that stuff into. Git was kind of,
Starting point is 00:14:10 was still new at the time. And so being able to do some cool things like show your Git branch in your prompt. And I'm sure you could figure out how to do that in Bash as well. The problem is you'd have to go and figure it out. Yeah. That's what I love about OMI ZSH
Starting point is 00:14:20 is it's batteries included. I don't have to go and learn how to trick out my prompt or color it or theme it. Like these things just come in and I get to stand on the shoulders of giants and just use their work, which is the beauty of open source. And it really is getting to use that fun stuff. And I didn't have to worry about, I don't even know why I use Z shell over bash. Like I don't have that opinion, but what I appreciate about it is whenever I type in,
Starting point is 00:14:46 you just do exactly. And thankfully Apple finally agree with me and Rob, of course, to follow suit. But you know, like if I type SSH and then up arrow, it's just going through all my SSH histories. So I don't have to like rethink which machine on my local network do I want
Starting point is 00:15:04 to SSH into, or even external in the cloud. It's just in my history out of the box. And I don't have to go and config that in Bash. I'm sure I could, but I didn't have to. It also easily organizes my ZSH RC file with extra aliases outside that. So managing where my path is at or just anything really in there is just, just super easy. So for me, it was like, well, I like Z shell. I like oh my ZSH it's batteries included easy to install. I mean, it's a simple command given you trust the
Starting point is 00:15:40 shell command at the side of this curl command that you're going to install. Other than that, I mean, it's pretty easy. It installs a.omizsh directory in your local root, essentially, and everything is just Git-based to update it. It's too easy. It's too easy. And it's really easy to remove and take it away. I always appreciate you kind of talking through how you perceive that and why you said batteries just and like it goes back to me wanting to make sure that it's really simple for those like i just think of that junior full stack back-end front-end developer coming into this new career of theirs they're like getting comfortable and they're like oh you know when they maybe they're using vs code and they pop up in the terminal part of it and they got that in there and they're just like okay this just looks a little nicer it's a little little cozier and they can kind of customize it
Starting point is 00:16:28 a little bit, but they don't really need to know a lot about the command line to start feeling like it's a comfortable space for them and having some control over that. So there's that part of it. And I always remember there was a point when the project, there was some people working on the project with me and they were proposing some things that were going to make it, I felt way more complicated to keep updated and to install and configure. Like you would need to know a lot more about like Git sub-modules. And I'm so glad we didn't go down that path.
Starting point is 00:16:55 Me too. But there was a point, there was a point where we were talking about that for like plugins and themes, because a lot of people will argue that OmniZ Shell is just completely bloated. You download all this stuff. I think it's like a couple of megabytes. I don't know. is just completely bloated. You download all this stuff. I think it's a couple of megabytes.
Starting point is 00:17:06 I don't know. But it's bloated and you got all this stuff and you're like, it's like full of security vulnerabilities because there's all these random files on your machine. Well, I mean, like, I don't know how that's different than like installing any other gem or library necessarily. But it's yes, you do it running from curl. There's potentially some security vulnerabilities around that area of it. And I'm open to debating that. Well, I think if you inspect the shell file, that's potentially some security vulnerabilities around that area. And I'm open to debating that.
Starting point is 00:17:25 Well, I think if you inspect the shell file, that's your security. You can even just simply curl that down and then run the shell command locally after you've confirmed that the shock key matches or something like that. I mean, if there is one, I don't even think that's even an option from what I can tell to confirm like some sort of checksum or whatever. I guess you could do that, but you could do it a bit more secure. But I trust you. Hopefully your supply chain isn't getting hacked and we're still good to go. But I mean, I never scrutinize it. It's not something that you run on the daily, right?
Starting point is 00:17:55 Like you run it once and you're done unless maybe it upgrades. Right, on install only. And then from there, it's just a Git config. It's like a regular Git repository. You know, the one command I think keeps me that makes brings me joy is the reload command so anytime you make a change to your path or you do something in your rc files or whatever locally you need to reload z shell rather than like how do i do that again let me google that i land on stack overflow or whatever and i copy and paste it it's just there reload bang and then z shell is reloaded It's one of those things that just brings you joy
Starting point is 00:18:27 to use the tool, really. And I think that's what I liked always about it, because it always had reload, as far as I can remember. And just little things like that was just like a joy factor to use. So that's why it was a default install for me. So there's a common trend or maybe a pattern that we see with software developers, especially when you talk about juniors, people just getting started. When you learn a platform by way of a popular
Starting point is 00:18:50 open source framework or tool, you often can't tell the difference between the platform and the tool. So you learn Ruby by way of Rails, you're not sure, is this a Rails thing I'm going to use? Is this a Ruby thing? Same thing with jQuery. There are a lot of people that call themselves
Starting point is 00:19:03 jQuery developers for a long time. They didn't know they knew some JavaScript. Same thing's happening with React to a certain degree. I imagine that might happen here because there's all these plugins and stuff, but I wonder if it really matters in practical use. If you know what's ZShell and what's OhMyZShell and what's going to be there in Bash, as long as you're able to have your setup,
Starting point is 00:19:25 it's probably not the same thing where you really need those underpinnings. I think when you're programming, you need to learn the underpinnings of what's Ruby and what's a Rails function. But I think probably with your environment, I don't know, Robbie, what do you think? It's probably not that big of a deal?
Starting point is 00:19:37 It's not a big deal, but I would say that as someone that's not providing support to the general ZShell user community, I do know, and I've heard from over the years, and part of that article I mentioned earlier is I included some screenshots from tweets and posts elsewhere where there are people that are more on the pure ZShell realm who detest only ZShell
Starting point is 00:19:59 because people will go there with support problems. And they'll be like, well, that's a only ZShell issue you're dealing with, not a ZShell thing. And they'll be like, well, that's a Zomai ZShell issue you're dealing with, not a ZShell thing. And they'll be like, what's the difference? So for them, if any of them are listening, I apologize. But at the same time, you're welcome, because I think I've brought a lot of people, or the project
Starting point is 00:20:16 has brought a lot of people to use ZShell underlying. So that's great. I'm glad they're using ZShell. So I think that's been one part of it. But yeah, I think the underpinnings, it's a good question. It is different than probably like the Rails and Ruby comparison you had there where, I mean, if anything,
Starting point is 00:20:31 it's more like learning how to just have some like mental shortcuts to using, like if you're using all the plugins, it's a lot of just shortcuts and aliases and some extra functions that'll speed up your, or reduce an amount of things you need to type on your keyboard to do something. And a lot of figuring out how to use tab a lot
Starting point is 00:20:49 and to do stuff and using your arrows and navigating around and clicking on things or selecting things and stuff in your terminal. So yeah, I think that's an interesting aspect there. Yeah, well here's the other aspect of it. As a Bash user, I'll say what annoys me is I'm always like, I wish I could do X and then somebody will say,
Starting point is 00:21:05 well, with OhMyZSH, all you have to do is Y. And I'm always like, I don't care what you do over there in OhMyZSH land. I mean, that sounds cool, but come on, help me out where I stand. We did say that a little bit in that show with Nick Genitakis where we were talking about Unix tooling. And I was like, even then I couldn't tell you, is this a OhMyZSH thing or is this a ZShell thing? Is this one of the aliases I made?
Starting point is 00:21:28 You know, like the LL command, for example, which is a common thing you do when you go into a directory. Right. You want to list the contents. One, Jared's case, he, what did you do, Jared? You changed your CD command to automatically. I overrode my CD command to automatically do that, as well as do some other funky things that can bite people. But then my ll is just my own bash alias
Starting point is 00:21:49 that's doing the same thing that Adams is doing, only I don't think he wrote his. I think his just came right. I didn't write mine at all. It just came, it was the batteries that was included with my zsh. Which I'm happy. Any code I can not write, I mean, let's do that. And then the.. command, so going around directories, I don't know who came up with write, I mean, let's do that. And then the dot dot command.
Starting point is 00:22:08 So going around directories, I don't know who came up with that, Robbie, whether that was a contribution or genius on your part, but whomever did the simply just dot dotting around versus slash dot dotting, which it was pretty cool to me. Yeah, that's rad. You can do dot dot slash dot dot and go back a couple different directories. And I just like a lot of the little niceties that come with it, which is just – for me, it's just been a lot of easy using. Like just install it. It's already there.
Starting point is 00:22:34 My config to ohmyzsh is minimum, like almost zero. It's kind of like on the Vimland side, Jared. Like I almost go raw except for plugins plugins and I'm not changing anything. Most of it's just my default aliases, which is just a small handful, if any, really. It's pretty much a stock install every time. Aside from the theme, maybe. That's the only thing I like. It's something I bring with me.
Starting point is 00:22:56 And that's even optional because you've got 30 themes or more in there and you're not even taking contributions to themes because there's just so many that could be in there. It's a beast. There's your business model. Pay to get your theme included. Sure. I wish I had analytics on the ones that we could easily get rid of and not break anything for people. That's interesting. You mentioned, out of curiosity,
Starting point is 00:23:16 what is your alias, Jared, for LL? Is it just LS-AL? Yeah, let me look. Probably. Because I think I used to do that in Bash. I'm pretty sure I had that as an alias myself back then too. So I don't remember what it is in Omazisha. Yes, ll is alias to ls-lh. And then I have la and then llb.
Starting point is 00:23:36 I got a bunch of them, like by date, by file size, etc. They're just sorts. I feel like there were some Linux distributions I used to use that had included something like that. Because I remember that was definitely something I had known before ZShout, using LL for things. And so I don't know if it might have been on certain installs and they had some bash configuration stuff on top of it.
Starting point is 00:23:58 Yeah, I don't know. I'm sure it's a very common practice because everybody I talked about LL, they also have an LL of sorts. So I think maybe it's just one of those, not a cargo cult, but it's a meme maybe. The idea just spreads and it's so easy to do yourself. It's probably the first alias you learn in Linux 101 or whatever. If anyone out there knows the history of,
Starting point is 00:24:18 or the origin history of LL, please share it in the comments on this episode. We would greatly appreciate that. We could do a mashup and have the history of LL Cool J and the history of LL in one episode. And we'll put music to it and it'll be fun. Don't call it a comeback, Adam. Mama said, lished you out.
Starting point is 00:24:37 Okay, that was not good. There you go. So while we're talking FOMO, I would love to hear from you, Robbie. What are some of your favorite plugins and cool stuff that people do with it? Just give me some more FOMO. Yeah, so the ones that I'm primarily using are, I think it's called AutoJump. There's two of them that do a very similar thing, but one of them, it's like you install
Starting point is 00:24:57 another little plugin related to it, but it's like a Z command and it can jump around all different directories that I most commonly and frequently jump I'm using. So I'll be like J, like part of like a project name and then it jumps me over to that project that I'm working on for like a client project or something. So I'm constantly hitting I said J, right? Not Z.
Starting point is 00:25:17 J, like part of a client name and it pops me over there. And that always seems to really impress the people that I'm pairing with, like other people on the team, like the other developers are like, wow, how did you do that? I'm like, oh, I just installed this little, I have this plugin on my ZShop.
Starting point is 00:25:30 What's the plugin called? Just called J or is it called Jump? So that is using AutoJump. All one word, AutoJump? Yep. Another, I use stuff for like Docker and Docker composed plugins in there. One of my other favorites is called Extract
Starting point is 00:25:44 and it just detects the type of file that you're trying to unzip or untar, you know, what have you. Docker and Docker Compose plugins in there. One of my other favorites is called Extract. And it just detects the type of file that you're trying to unzip or untar, you know, what have you. And it just does it. Oh, I like that. Just be like extract whatever the file name is, and then it'll figure that out for you. So some wrappers there.
Starting point is 00:25:57 There is.env plugin that, so you can use the.env stuff everywhere. And it'll prompt you when you go into like different projects and like, do you want to load the dot env file now or always things like that that's quite helpful when we're doing a lot of environmental variables in different projects there's nvm which is actually i think one of the slowest culprits to my z shell at the moment but i do use it but it does slow my um the startup prompt a little bit and to be figured out why that's the case but it's kind of like rbm a little bit and to be figured out why that's the
Starting point is 00:26:25 case but it's kind of like rbmv for node version management so if you use we're working with node a lot i mean also i also use rbmv's plugin as well that we have in there and then there's some other ones like i said i'm on a i'm on mac os maybe we should change it from osx to mac os is the name of the uh plugin but it's got some a couple of little features into the OS X plugin. You can even control your Spotify from the command line. You can do play, Spotify, play, and it'll look it up and play on your local Spotify. I have a custom one that I probably should just include at some point called ddig, which will allow me to copy and paste a URL into my terminal and have
Starting point is 00:27:04 it run dig on that host name rather than having to copy and paste a URL into my terminal and have it run dig on that host name rather than having to copy and paste the host name and strip out the HTTPS and all the other stuff for the rest of the URL. So I can just take a URL. That's been a recent thing that I made for my scratch, one of my own itches there. So those are a couple of the ones that I think are probably worth mentioning. Oh, colorize is another one as well. and that gives you some stuff like where it'll do file type detection so if you do rather than running like cat if you run alias for like c cat like two c's it'll um colorize the uh the file so if you do like on a markdown file it'll colorize that or a ruby file it'll it'll show like syntax highlighting and stuff like that for that
Starting point is 00:27:43 particular file based off of the file name format. So that's kind of cool. There's also like web search. And I think it gives you things like Google searching or DuckDuckGo type searching and stuff like that. So you can just fire up your browser for a search or something from the command line. I also, there's like another one for like Jira that I use to open up Jira tickets because I'm one of those people that actually doesn't hate Jira.
Starting point is 00:28:03 We could talk about that. Would you say then that because of this, it's extensible, but would you say that OMI ZSH gives a common API to do these things with the command line with? Is that sort of like one of the sweet, I guess, features, if you want to call it that, because you didn't come out with plugins originally, so it was an add-on later, so it was an afterthought, really, but has it been this, here's a common
Starting point is 00:28:28 API to do ZShell scripting or things like that, like you said, CCAT or searching or DDIG or whatever. Is that what it is to you? I hadn't thought of it that way, but I guess that does make sense. Again, for me, it's just like, it's loading up a bunch of files based off of the things you tell it to load so it's like all those files are on your computer and you're just like include these when zshell starts up and then you get all these aliases that are that were set there rather than just having this really large z csh rc file which was what i think most of us would have had to deal with before a really large bash rc file or
Starting point is 00:29:02 bash profile file that's funny to say all that so yeah I think it's just a way of kind of keeping it contained. You know, there's, you can do custom plugins and put your own custom themes, or if someone has themes online, you can just quickly just throw them in the right directory and then just ask to include it when the it'll default to using what's in your custom over what's installed that comes bundled with omaze shop. So is that an API? I don't know. I don't feel like I'm a smart enough programmer
Starting point is 00:29:26 to know what the true definition of what an API is there. So maybe. So how hard is it to try out OMI ZShell and still be able to opt out? Maybe can I have two tabs? One has my Bash set up, one has my ZShell set up. Is that relatively easy to do, or is it an all-in kind of a thing?
Starting point is 00:29:44 Yeah, it's actually very easy. So one, if you're using Bash already, it will prompt you to, if you want to switch over to ZShell at the part of the installer, but so then you can just switch back and that's like using, whether or not you're familiar with the bins slash Z, what is it, Z-H-S-H that you would probably run on your machine to switch it back to Bash if you wanted to go from ZShell to Bash. But also if you already have ZShell installed, it's very polite when an Omaze ZShell gets installed. It will be like, oh, you already have a ZShell RC file. I'm going to go ahead and copy that over to a backup file. It's called like pre-OMZ or something.
Starting point is 00:30:18 And if you uninstall it, I believe the uninstaller will check to see if that's there and then put it back where it belonged and then kind of clean itself up. So Omaze ZShell comes with an uninstaller. It's mentioned on the, pretty sure it's in the readme on how to run that once you install it as well. So it can kind of clean up after itself because it installs it into its own dot own my ZShell directory. And then that ZShell RC file just points to that directory. And if you go back to your old ZShell RC file, then they wouldn't point back there anymore and you'd be where you were. So yeah, you can play around with it for 15 minutes and then go back and be like, nope, maybe another day. But hopefully you'll find more value out of it than that. This episode is brought to you by LaunchDarkly and their upcoming Trajectory Conference.
Starting point is 00:31:14 Software powers the world and LaunchDarkly empowers all teams to deliver and control their software. DevOps and feature management are reimagining how we build and release new products. On November 9th and 10th, LaunchDarkly is hosting Trajectory Conference 2021, a two-day event for software innovators who want to break orbit, not systems. Trajectory is a fully virtual conference that focuses on the technology, the people, and the processes that continuously deliver better user experiences and more powerful software. Registration is free right now at TrajectoryConf.com. Again, that's TrajectoryConf, C-O-N-F dot com. So, Robby, if I go into the OhMyZSH directory, which is actually a dot directory, so it's hidden from Finder if you're on macOS or anywhere else.
Starting point is 00:32:15 So it's kind of a hidden directory. But nonetheless, it doesn't matter. I'm in that directory because I have OhMyZSH already installed. I just type ll, which is listing the directories. That's lsh, dash, probably your common beautiful things to make a human readable. And when I see that, I see a few directories. Cache, custom, lib, log, not blog, but log. Plugins, templates, themes, tools.
Starting point is 00:32:39 And whenever I go into plugins, there's lots of stuff in there. In the last segment, you mentioned some things you're using. Seekat was part of Colorize and like finding these beautiful little hidden gems inside there. Like this, to me, this project seems like it just has so much opportunity to be such a useful tool. Obviously it's been popular, as we've said, I mean, we shared the stats in the first segment, so quite popular, but I kind of feel like it's got even more life into it with a little bit work, I guess. I guess it kind of depends on how much more you want to put into it. What do you get from this project? What do you get in terms of like motivation? How often do you show up? Why do you show up? What excites you about the opportunity here? Part of the thing
Starting point is 00:33:20 that I really enjoy about being part of this project, and it's great that a lot of people use it, but I'm always, it just seems like everybody that starts to use it when they're, and they embrace it are very, very vocal about it. They're very appreciative of it. So I just get a lot of these like nice little, like, you know, when you're working, running a business and you've got employees and you're kind of like over many years of like navigating through running a business and stuff like in dealing with clients, it's a much different sort of like level of engagement level and like i feel like with omai z shell i get a lot more high frequency and positive endorphins i suppose from people just appreciating something
Starting point is 00:33:55 that i help be part of and but again the other part of it is that so much of the project has been as you mentioned earlier it's like over 1900 people that have code baked into Omoizy shell, which is like not a small number of people. So my goal for the end of, by the end of the year is like, maybe we'll hit the 2000. I think we'll be close, but I think just knowing to be part of a project where I don't really feel like there's, I don't have like this huge maintenance team on the project. It's me and another person doing most of the work. I've got a handful of people that are doing that are part of our discord to help moderate and keep those conversations going well and organizing and answering questions on there and get up discussions. And so there's a high volume of things happening around the
Starting point is 00:34:33 project. But I really don't need to spend a lot of time thinking about the project. Maybe put a couple hours a week, I think, probably would be my average right now. And there's definitely been periods where I don't really do much on the project for a couple months. And it still goes. I always feel like it's feature complete enough in a way where everybody can keep installing it. Anybody that's waiting on a PR to get closed right now, they already have those changes and they're probably in their own version of Omaze. So if they're smart, if they know enough about Git and they can fork the project and do that, they have what they want, but they want to share it with the rest of the community.
Starting point is 00:35:06 So sometimes I might be a bottleneck or we as maintainers and having the volume people that are submitting code changes could be a bottleneck and having other people know about that. But I don't feel like people are saying like, we've been waiting on this new feature for a long time. You promised us this. So I like that. It's not super demanding in that sense.
Starting point is 00:35:24 We've talked about like a next major version of the project and what will we change, but we've been talking about that for like eight years, I think. So, and it hasn't happened. We're like, let's just keep leaning on Git. Another aspect about the project, given that there's so many people that are using it, and we have so many people following the project on Twitter
Starting point is 00:35:39 and posting about it on like their Instagram. There's people talking about it on TikTok now. And I'm like, it's just like, what? This is so weird and interesting. TikTok, what? I know people post stuff on TikTok and they're like really excited about like, look, I'm like a hacker now
Starting point is 00:35:53 because I've got this cool command prompt thing on my thing or I got it to run on my phone or whatever. And like, that's cool. So we get to see like how people are excited about showing off a screenshot of their terminal on the internet to be like, hey, look, I'm getting to this point. They're kind of showing off a little bit, maybe to their peers, family, friends, or whatever.
Starting point is 00:36:12 Like, look at me in this new career, I'm becoming a hacker or whatever, a software developer. It's kind of adorable. So the other part of it is like, I get to sell stickers and t-shirts and coffee mugs and things like that. And so we get almost an order a day for something. It doesn't make much money for us whatsoever. But if I go back in my history of becoming a software programmer,
Starting point is 00:36:29 because I never wanted to be a software programmer. That sounded like the most boring thing when I was young to do that because most of the time it was always introduced to like, here's a book on programming. If you write all the code in this, over these few pages into this thing and you run it, then you can play this game.
Starting point is 00:36:43 And I'm like, that sounds boring. I'm going to go outside and play. Like, why would I type something that someone else already wrote? I didn't understand like why that would be remotely interesting. Fast forward several years, I'm a teenager, really into like punk music. And I have like, I'm making stickers and printing stickers out and I want to sell them on the internet. How do I make a webpage to do that? So I learned how to do some web stuff, make webpages, how to build CGI scripts, so it can like save information if someone submits something into a form. So I learned some of the
Starting point is 00:37:10 early things for learning how to like build websites so that I could support like wanting to run a sticker business on the internet back in the late nineties. That business went nowhere. That's how I got into writing software in the first place. So I got to sell stickers on the internet. I can still sell stickers I'm successful, I'm finally selling stickers congrats that's the highlight I guess, is that people put stickers on their laptops I feel bad I haven't bought a sticker
Starting point is 00:37:33 and I'm such a fan I feel like such a poser here t-shirt, stickers, I got them all we're out of coffee mugs at the moment but they also are really heavy and break so you can go buy some stickers or t-shirts on our website. Yeah, it's interesting the angle that you came to that, to like you were against programming based on what you just said there.
Starting point is 00:37:56 And that led into somehow Planet Argon, which has been going longer than this project successfully. You mentioned before doing hosting. You've been an entrepreneur to try different things, not just simply one thing and do it right and keep doing that. But you took swings at other things, and they either were more or less successful than the other thing. But you figured out how to maintain a business,
Starting point is 00:38:20 maintain great culture at a business, all from just trying to sell some stickers on the internet. That's interesting. I always think that there's a level of being ignorant about what I was getting myself into when I started a business is what has allowed me to, I'm air quoting, flourish as a business owner, I suppose. Because it's hard to, running a business is hard, having employees, navigating a pandemic, navigating client relationships over years, you know, learned a lot. And so, so programming is a big part of that, but a lot of it is like all the
Starting point is 00:38:49 relationships and things like that that you're managing along the way as well. And so that's another thing about the OMYZ show. I'm like, I don't want more responsibility with this project. So, but I also want to make sure it's being taken care of and we're not going to like add something that's going to wipe out quarter million people's computers all one day because something got hacked or something right have you found whether directly or indirectly that your work on oh my z show and your maintenance in the community and everything over the course of a decade has proven to be kind of a virtuous circle with planet argon because surely you're dedicating some resources, your own or whatever, to this.
Starting point is 00:39:27 It's a labor of love and all that, but potentially, as a person who runs a software development consultancy, it also shows off your abilities and how you can lead a group of people and maybe impress some folks. Have you ever gotten business from it or contacts
Starting point is 00:39:43 or anything directly? I don't think we've had anyone that I can recall that was specifically referred to us because they knew that Planet Argon was where Always Yourself was created initially. But I've been on sales calls. I've had clients that have technical people on their team that will bring it up a conversation or two into our sales process. And they're like, oh, I was talking to Michael over in our tech team and he's like a huge fan of you. He says you're famous.
Starting point is 00:40:08 And I'm like, what? Because most of my clients are like people that work in different areas of a business. They're not always like other software engineer people, but they might work with teams internally or elsewhere. Even like we have a project that we've been working on for like eight years for a client. And the client's going to be ending the life cycle of that particular project and the new company that's coming in
Starting point is 00:40:28 to build them a different platform it was something that we inherited so we're okay parting ways with it but the uh i was chatting with the new agency that's going to be working on the project over the next six months and they're like we love all my z show and like so it was it was funny the client's like oh we're the feeling is going to be like this really awkward scenario where the the two agencies are having to meet each other and instead it was funny, the client's like, oh, the feeling is going to be like this really awkward scenario where the two agencies are having to meet each other. And instead it was like, oh, we're big fans of Ravi and what they've done. And I'm like, this feels good. Yeah, there's some inherited trust there, really, right?
Starting point is 00:40:54 Like if you've ran the project well for a decade or more, which you have. Yeah. If you've got great maintainers in place, great community in place, you know, consistency there in terms of releases or support if it's needed. Just anything really that kind of keeps the consistency and the trust going along with the project. I would imagine that that's inherited to Planet Argonne. And I bet you if you dug further, you'd be surprised. I don't think you're looking for it. I bet you there's more juice flowing, basically, between the two.
Starting point is 00:41:29 And so that's why I think that to dig in further with some different ideas, not so much to commercialize it, but just to, I think, Kathy Korvik was on ShipIt recently, and she talked about documentation being an API to a product. And I think the example that you share with CCAT or DDIG, these are like little hidden gems inside of other plugins that I wouldn't think to enable, like ColorEyes. I don't know what that is. There's an awareness.
Starting point is 00:41:55 There's a hidden gems within this project that people aren't aware of. And you're relying on TikTok essentially to expose. Lots of people are relying on TikTok to expose things these days. Well, you know what I mean? Like not so much relying on it. I don't mean that negatively. I mean that. I know that. There's an opportunity here if captured well,
Starting point is 00:42:07 because ZSH or ZShell is the default on macOS now. It is a highly popular platform for the younger generation or the new generation into hackerdom, if that's a thing. And we always say around here that we care about the past, present, and future hackers. And so in many ways, like we sort sort of don't do offensive speech on the show for many reasons.
Starting point is 00:42:30 But one of the mains, if a young listener is listening to the show, we don't want them to be turned off or have just this offensive speech all over the place because we want to have a place that's welcoming and open. And so I just think that there's a – I don't know what yet, but something tells me, me being a fan for Zolong, that there's more. This dog hunts, so to speak. There's more stuff in there. I appreciate that. There's some ideas that Mark, the other maintainer, and I have been talking about and kind of related to educational type content, things of that nature to highlight things. And it's also just trying to remember to, one of the other things I also enjoy about the project is that, cause when people share articles and how to do things or share off what
Starting point is 00:43:09 they're doing, I can broadcast that, you know, they might have 20 followers and then I'm like, I'm able to retweet that to like 43,000 people on Twitter or whatever. And they're just like, Oh wow. Like,
Starting point is 00:43:19 so I can amplify these people, you know, a little bit early on in their, you know, as they're gaining their online reputation or whatever you want to call it? That part's interesting, but yeah, like it's interesting how like even just reminding myself that if I just show off some of the fundamentals again and again, and like how to do this really simple thing is like, even just using like this last week that we're recording this, I couldn't remember how to do something in Ruby and IRB to
Starting point is 00:43:42 like look up some details to figure out where a method might be defined while you're like in IRB. And I have like Googled something. I'm like, oh, that's right. It's like that. And then I created a little like coding screenshot and shared that on Twitter. It's like my most liked tweet in like probably a year or two. And I was like, oh, that was just like really, that's right. I need to remind myself that a lot of these things that I take for granted, small little
Starting point is 00:44:03 things can be like brand new to a lot of people. And there's a big audience of people out there that are hungry for learning new little quick little bites of information or little tips like, oh, if I use that one CCAT thing, that's cool. Things of that nature. So it's sort of just trying to like do that for the community. But there's been talks of like, you know, working on like an ebook or something like that or video content for people. but who has the time for all this? Yeah. Well, it depends too, what you're optimizing for personally, you know? So while there may be this opportunity, it's like, is it the right timing for you? I personally don't know that you're on a podcast. You could share it if you want to, but I think where I would begin is like, what's the state of your personal passion? You know,
Starting point is 00:44:43 is it simply implanted Argon? Is it finding new fun things? It's like hobby things, like where this could be hobby-ish, but find ways to commercialize some of your time involved in it, or at least have some different end points or end games involved and putting more into it. It all depends if what you're optimizing for leads you down a path that gives more to, oh, my Z show, or it doesn't.
Starting point is 00:45:05 And if it doesn't, then that's no big deal. But I think there's a lot of cool stuff happening in there that with the right plan, you'd enjoy it and you'd get some stuff from it too. I'm not sure what that stuff might be. It might be dollars. It might be more opportunity for your company. It might be community credibility. It might be additional trust so the next client is easier to win. You can be like, hey, by the i'm robbie russell from this project i know you installed it because everybody does because it's so popular by
Starting point is 00:45:30 the way we win business because of that yeah it's like there's a lot of opportunity there depends yeah thanks for the uh the advice there i'm gonna spend some time reflecting on that since you asked kind of like a kind of alluded to the i've always kind of felt like this project omaze shell particular falls in maybe my top five or six things that i'm thinking about project wise Since you asked, kind of alluded to that, I've always kind of felt like this project, Omaze Shell in particular, falls in maybe my top five or six things that I'm thinking about project-wise. It's like, obviously, my running a business is a pretty big one.
Starting point is 00:45:51 And it's kind of, I think if my employees are listening, it's number one, obviously, right? Maybe it's second or third. It's like, play music, I'm in a band, recording albums, stuff like that. That's a big part of me. I got my podcast, where I just want to geek out and talk with people about long-term software maintenance challenges. And so I've got a podcast called
Starting point is 00:46:09 maintainable, maintainable.fm. And it's just interviews with people that are, that are dealing with like long-term challenges that companies and organizations face with dealing with legacy code. I'm not a greenfield application. I'm not excited by new projects, blank canvas. I like working on messy, older things and making them better. And that's, so I've been able to kind of frame that around what, what the type of business that we're trying to bring in at Planner Argonne as well. And so that's been a good alignment. And then Omazisha was just like, I guess another example of like, it's maintenance, it's long-term project.
Starting point is 00:46:40 And so we haven't needed to completely scrap it. I never thought Omazisha would last more than like four or five years i'm like there'll be better things that come along and deprecate this or people will outgrow it but some people just they as you said you install it and you just keep it around and that's pretty awesome but so just thinking about like figuring out where where omaze show fits into my priorities is a an ebb and flow thing from depending on what season of my life is that so i like that I can pick it up whenever I want to and then I can kind of set it down for a while until someone asks me to talk about it again on a podcast.
Starting point is 00:47:11 And I'm like, oh yeah, I do that. That's right. It's a thing. This episode is brought to you by our friends at Teleport. With Teleport Access Plane, you can quickly access any computing resource anywhere. Engineers and security teams can unify access to SSH servers, Kubernetes clusters, web applications, and databases across all environments. Teleport is open core, which you can use for free, and it's supported by their cloud-hosted version, which lets you forget about configuring, updating, or managing Teleport. The Teleport team does all that for you. Your team can focus on your projects and spend less time worrying about infrastructure access.
Starting point is 00:48:12 Try Teleport today in the cloud, self-hosted, or open source. Head to goteleport.com to learn more and get started. Again, goteleport.com. And by our friends at Square. Square is the platform that sellers trust. There is a massive opportunity for developers to support Square sellers by building apps for today's business needs.
Starting point is 00:48:33 And I'm here with Shannon Skipper, head of developer relations at Square. Shannon, can you share some details about the opportunity for developers on the Square platform? Absolutely. So we have millions of sellers who have unique needs and Square has
Starting point is 00:48:45 apps like our point of sale app, like our restaurants app. But there are so many different sellers, tuxedo shops, florists who need specific solutions for their domain. And so we have a node SDK written in TypeScript that allows you to access all of the backend APIs and SDKs that we use to power the billions of transactions that we do annually. And so there's this massive market of sellers who need help from developers. They either need a bespoke solution built for themselves on their own node stack, where they are working with Square Dashboard, working with Square Hardware, or with the e-com, you know, what you see is what you get builder.
Starting point is 00:49:21 And they need one more thing. They need an additional build. And then finally, we have that marketplace where you can make a node app and then distribute it. So it can get in front of millions of sellers and be an option for them to adopt. Very cool. All right.
Starting point is 00:49:33 If you want to learn more, head to developer.squareup.com to dive into the docs, APIs, SDKs, and to create your Square Developer account. Start developing on the platform sellers trust. Again, that's developer.squareup.com. so we have many open source maintainers that listen to the pod and it's always interesting to learn from one another you have a successful long-term project every project has its own warts and wrinkles and pros and cons so they're not all the same but you've been
Starting point is 00:50:31 successful in 1900 plus contributors i mean that's a major number i hope you do get to 2000 by the end of the year that's a nice rounder number but surely hasn't all been easy and awesome the entire way so any struggles along the way? Any community problems? Or how do you manage to, you know, you have this discord, so there's humans in there and they offend each other. Just what's gone wrong or what have you learned over the years? Earlier you had mentioned, or we talked a little bit about the security aspect to the project, right?
Starting point is 00:50:59 And so given that everybody's installing the project through a curl command or something, I'm very cognizant, at least aware of the fact that that could be a huge point, something bad could potentially happen. So I always felt for a really long time it was my responsibility to make sure every bit of code that was ever contributed
Starting point is 00:51:15 and accepted to the project had my vetting so that if everybody's laptops get wiped out at the same time, I can be like, sorry, it was my bad, and then hide away from the internet for the rest of my life. I haven't had to go there. But for a long time, there was, you know, we touched on like my initial time on the change log back in 2011. And I listened to that again recently. But I had made a point about saying like, I try to keep the number of open pull requests under 100. I think it's closer to 500 or so now, like on a regular basis that we have sitting there for us.
Starting point is 00:51:45 And we're merging stuff, so it's not like there's stuff not there. But one of the challenges I had was trying to find and recruit maintainers because I didn't really know how to go about doing it. Because unlike, I think if you look at a lot of other open source projects that might, like use like Ruby on Rails, for example, like you get people on the core team, they probably have people that are working at companies that are using Ruby on Rails, for example, like you get people on the core team. They probably have people that are working at companies that are using Ruby on Rails as part of their business, right?
Starting point is 00:52:09 Omnizitial is kind of like this thing you're running. People, the end user puts it on their laptop and like, it's not like a company thing where somebody's like, oh, let's spend some time contributing to this project. It's more like, oh, I use this thing and like, it's just kind of created by some person across the planet or whatever. Anyway, so like, that was always a weird challenge to try to figure
Starting point is 00:52:27 out how do I help get people to participate and help more. But then over time, people would volunteer a little bit here and there. And there's some people that would do some testing for me. And then, um, but I was always like, I don't really know them well enough to feel comfortable to give them just full access to merge into like the main branch. And the other part of it is I honestly did not feel like I had a vision for the project. So like, how could I hold anyone to try to stay in the same plan? Like where this is kind of the,
Starting point is 00:52:54 the goal for the project we want. And as I mentioned earlier, like I want to have this be simple for newcomers to a command line. And so like, okay, that became one of like our core values, I guess, as a project. This isn't really written down. I think it's in a Google okay, that became one of like our core values, I guess, as a project.
Starting point is 00:53:07 This isn't really written down. I think it's in a Google Doc somewhere that I've shared with a few people, but this isn't something we have like on our- Your values page? Yeah. Oh my Z, S, what is it? The URL, I think. That could be somewhere we can put something like that.
Starting point is 00:53:19 So for a long time, I'm like, well, if I had more people, then they would ask me, like they'd start doing things and I'm like, then I would like relinquish some control, I suppose, if I'm more people, then they would ask me, they'd start doing things, and then I would relinquish control, I suppose, if I'm being honest, about the direction of the project. So I was nervous about that for a long time. Eventually I got a maintainer into the project, but the way that that happened was that because I was always the bottleneck
Starting point is 00:53:37 for reviewing and merging stuff into the project, a couple people were working together, and one person in particular named Mark Cornell, he's based in Barcelona. He started putting together pull requests that packaged up other pull requests. And be like, I vetted all this. And send me over, this all looks good. And be like, 20 things all included. And I'm like, oh, you just saved me so much work.
Starting point is 00:53:58 This is awesome. Merge. And that became our thing. We did that for about probably a year, year and a half. Where he was just working around my limitations to be able to go individually. And he would our thing. We did that for about probably a year, year and a half where he was just working around my limitations to be able to go individually. And he would do that. And we just came up,
Starting point is 00:54:09 he'd like come up with his own workflow. I didn't ask him to do that. He just started doing it. And so after a while, I was like, all right, let's chat. And then like, come in, let's just, here, you can have access. Don't let me be the bottleneck anymore with that. So that's how Mark got into it.
Starting point is 00:54:22 He found a way to help the project and he was persistent and he just worked around me and came up with his own workflow and didn't ask for permission and just did it. And then eventually that gained enough confidence in me to be like, cool, you're in. What's his why? Do you know his why? Why did he do that? Has he ever told you? I feel like he's probably touched that on that before. It's been so, we've been working together for so long now that I'm just like, he's always been part of the project, right? You know, it's interesting because he's like, he works in sysadmin stuff. I think it's been so we've been working together for so long now that I'm just like, he's always been part of the project. Right. You know, it's interesting because he's like, he works in sysadmin stuff. I think it's just my assumption is that there's maybe that would be good.
Starting point is 00:54:50 Another person to have on the show sometime, but like hearing his take on that. But I think it's just like something he felt like he could wrap his head around and he was kind of excited to work on some Z show stuff. He's really proud of the fact that he gets to be like the primary contributor to the project, at least maintaining it and i know it's helped him with his career and stuff like that as well and so that wasn't always the the goal necessarily for him but it has been helpful for him so i appreciate that and there's we've had other people that don't know a lot of coding skills but they're really good maybe wanting to help out and grow the community and like so we had someone else named lucas who helped come up with their discord stuff and he's the one who proposed that and i'm like i don't have time to sit into discord and answer questions all day and they're like well let's just see what happens i'm like
Starting point is 00:55:31 cool let's go with it and now there's like i don't know how many people are in that discord but there's a lot and so many channels and we got people to volunteer to be moderators and so that's been pretty cool i don't know if you're familiar with Orbit, the software project, Orbit.love. And I got access to it almost a year ago to start watching the community across Discord, Twitter, GitHub, and just seeing who's becoming part of the community through that. And so I've been able to identify certain people
Starting point is 00:55:59 to reach out and start asking questions. Because I'm like, hey, would you like to contribute more? I've noticed you've contributed to 15 different PRs you've reviewed. Like that's pretty awesome. Would you like maybe be another help contribute more? But also in parallel to running a business has been very mindful about trying to make sure that we're building a diverse team. So I've got plenty of cis white males that are happy to volunteer their time to work on the project that I'm like, okay, maybe we can hire, bring a couple more people into the project, but I would really like to like expand that out and like have women be
Starting point is 00:56:28 contributing and people of color be contributing. And I want to like bring in a more diverse group for that maintainer group. And so that's been another weird thing that I've been trying to navigate because I've like, there's definitely people offering, but I'm like, I want to have a more intentional plan for that. And so that's not been something I can necessarily prioritize a lot of thought
Starting point is 00:56:45 and energy outside of reaching out to our newsletter groups and stuff like that just to try to find those people and help them become part of that world. But again, it's just one of those things that I'm trying to think about when it comes to open source because I don't want our project to turn into just another really male-dominated project. Not that it's not already, I think, in that capacity. So I want to be intentional there. That's tough because when you have somebody standing in front of you
Starting point is 00:57:11 willing to help, that's a tough no to receive. Or maybe it's just silence. I'm not sure what that manifests as. But I get the struggle there on both sides. What about the vision? How close would you say you are to the vision now? Do you think you have a clarity? Because the reason I ask that question is often to lead, to be followed as a leader, it takes some awareness of the vision so that you can cast that and have a direction. And sometimes that begins with clarity on where you want to go or what you're trying to do with it. So that's kind of like back to that, what are you optimizing for? Because we'll never really answer that. I'm not asking you to answer it here on the show because I'm sure it's more deep
Starting point is 00:57:51 than just simply, hey, thought about this on the podcast, here it is. But that's sometimes the struggle with what you're dealing with is the clarity around vision and how you can lead. Because if you're not clear on that, what you're optimizing for personally, Jared asked about Mark's why Because if you're not clear on that, what you're optimizing for personally, Jared asked about Mark's why, if you don't have your why clear, it's going to be hard for you to cast that vision. And just by inertia, have people follow you. And I think part of diversifying your maintainership too is sort of baked into that hidden gem
Starting point is 00:58:22 stuff. Like if you spoke more into different areas where it's not just cis white men or men-dominated circles, if you spoke more into those places and extended an invitation, you'd probably get some followers in that regard. That's true. I think we have a very diverse user group. I think that's just part of just seeing how the software developer
Starting point is 00:58:44 and engineering community is evolving and growing over the last several years. And that's been good. So there's definitely a large, more diverse user group, seemingly based off some of this, the data that I can find using like Orbit as an example there. And I can say that from like, even just from stickers and t-shirt orders and stuff like that, we've, we keep a lot of t-shirts in stock for women sizes and they're being purchased and so that's great and but i think there's a difference between using the project and wanting to contribute to becoming like a maintainer of something because a lot of the people that are using the project they're working in different technologies they're not probably wanting to program in a shell
Starting point is 00:59:19 command line environment that's not like the thing that's maybe exciting and motivating them so comes back to the values thing like personally a, a couple of years ago, I was, I had kind of gone through this exercise of trying to navigate, like, what is my big, why what's my big goal in life? And I was like, I kind of turned around to being just the simplest way is just like, I want to, I feel like I had a lot of opportunities open up for me and my, my goal is to open up opportunities for other people as much as I possibly can. And so something like Oh My Z Show, I feel like is like helping part of being a small part of someone's journey as a software engineer, especially again, trying to make this simple and
Starting point is 00:59:54 cozy and friendly and most importantly, delightful for people new to command line experience and just wanting to be part of their developer tool set. When I see Omai Zee Show is ranked in people's like top five developer tools, I'm like, that's such a great wanted to be part of their developer tool set. When I see always used, I was ranked in people's like top five developer tools. I'm like, that's such a great honor to be part of such a list or something like that. So I just want to keep that, the energy there friendly. I think that reflected is our social media content that we produce.
Starting point is 01:00:16 You know, it's always trying to be fun, delightful. When you have an audience like that, I can just, I can make up the weirdest tweets and have a lot of people engage with things that don't have anything to do with anything. And I, I like the experimenting, I think maybe in social open source marketing, I think is like probably a thing that I'm, I find myself
Starting point is 01:00:34 being like a benefit of getting to work in this project of, I get to experiment with a much larger audience than I would be able to just as like a Ruby on Rails developer, you know, what I focus on most of the rest of my life. So I had this idea that might, I don't know if it's exists out there or not, but this idea of tour of duty, essentially one to define what a maintainer is for your project. I think generally there's a definition for open source software maintainer. And I think that can be intimidating to someone who's never done that before, but quite capable. And I think there's two sort of ideas I think could be deployed by you and tried out. One, define what a maintainer is of a MyZShow, what that person might do.
Starting point is 01:01:22 It might be Mark where you sort of just vet some pull requests, make a single pull request, and that's one thing. Or it could be help out with PRs, just commenting. A maintainer doesn't have to be somebody who literally maintains the code. It could be just simply like the similar terminology you might use for an employee. You don't have to be the senior director. You could just simply be an individual contributor. So they're still both employees and you still have input and value that you add, but maybe define what maintainership might be for your project. And then two, it might get easier to say yes to it if you shorten the time frame.
Starting point is 01:01:52 Give me a month or two of being this. And if you like it, you can keep doing it, but a tour of duty. Every three months we'll revisit your time here. If you want to leave or you want to depart and for whatever reasons are help me find somebody else if you don't mind but give some parameters to what the yes is because sometimes the yes is not there because What it is is not clearly defined and it's kind of spooky and scary because hey, it's halloween but You know at least this time frame, but it's that's totally off the off the bat
Starting point is 01:02:20 This is october by the way, but it's a little spooky and scary because you're like, I don't know what I'm saying. Yes. Two. Am I a maintainer? I'm at, I got imposter syndrome everywhere, basically sprinkled on me. So like I say no to most things, not me, but just in this person might say that. So if you can sort of like remove some of that opportunity for imposter syndrome and say, you know what you do belong here. Here's what I asked for maintainers. Here's some different maintainer types. Here's maybe a tour of duty idea. And it's a little easier to say yes. And you might get more yeses than you think. Very timely. I literally got an email like 36 hours ago from someone and I've been like, how do I respond to this offer to help in some capacity? And I think that is, you're right though. And it's one of the challenges is like, Mark and I have our workflow that we've been working with.
Starting point is 01:03:04 I'm like, how do, who has has the time to introduce another person into that mysterious thing that just has evolved between him and I. Right. And so it's like, cool, let me throw you into this into the deep end. And I'm like, I don't really know what you should focus on first, but you make a good point there. And it does seem like something I should spend definitely some more time thinking through and with Mark to come up with like a plan for something like that. So we try to find like here's the types of issues or things that would be really helpful to get testers out on. And we label things like that, but occasionally we'll put out a call to get some assistance there. But there's not necessarily a lot of follow up like, OK, cool, you did that.
Starting point is 01:03:39 Maybe next time you can do something a little bit more or something that's interesting. Definitely not saying it's easy. The burden of being a maintainer or even the creator and leader of, which are like sort of maintainer, maintainer, because you maintain the maintainers, you know, is definitely a burden. So I have complete empathy, but we're here to say you can do it. And I think there's one lesson I learned elsewhere that sort of is a parallel to some degree is this idea of career capital. And this is why I feel so strongly about what you can do with Oh My Z-Shell because there's this idea that throughout your career, in any career really,
Starting point is 01:04:10 you gain some capital in terms of like what you can do. And when you switch jobs, you change jobs or whatever, you don't want to ruin that by going from being a lawyer to a software developer or vice versa. Maybe that works for some people, but there's this idea of career capital that you can leverage it. I think there's a leverage opportunity for you and the community and Oh My Z Shell because it's just so popular. And I think if you look hard enough,
Starting point is 01:04:34 you'll find how you can leverage it in a good way, in the positive ways, of course, you know, the positive sides of leveraging things that matches with what you're trying to optimize for, what the community could
Starting point is 01:04:45 need and use. And you might be a great on-ramp to somebody's future and open source. So I think there's just a lot of opportunity here. I don't know exactly what it is, but it's this idea of career capital. So there's a lot of equity built up into this community. And I would just ask you to personally, cause I love using it. So don't stop maintaining it, keep it going. And obviously we had you here on the show cause we love it. And I'm happy to sing the praises. Like I said, it's a default install for me happy to help out however possible to, to share the Oh My Z Show love and support and whatnot.
Starting point is 01:05:18 Your podcast maintainable.fm is awesome and just want to encourage you. So hopefully when you walk away from the show, you dig a little deep and see what, what might be the future for you and my ZSH. I appreciate that, Adam. I'm going to definitely do some soul searching on this in the near future. Anything in closing,
Starting point is 01:05:36 anything left unsaid for you, for the community, for the Ruby on Rails community that you're deeply involved in anything like you got the ear of hackers out there. What would you want to say to them? I just want to remind people that there's this interesting thing in our phenomenon, I think in our industry, where most people are excited to work on new things early in their career. And I think there is an underappreciation for most people, you know, graduate from a boot camp or go to
Starting point is 01:06:03 coding school, your first job is probably not going to be working on a brand new application. You're probably going to get hired by a company that has existing software that's been around for a while. And that means it's been successful because it's gotten to that point. One of the things I would, since I have a little bit of airtime with the audience, is just to think about being cautious around pitching, throwing out the idea of like, let's rewrite things. I'm a big advocate against pushing back on the big for read, right? And because if you can't figure out how to get good at refactoring your code, rebuilding the whole thing from scratch
Starting point is 01:06:34 might sound nice, but probably 95% of the time is I'm just throwing out a number. It's going to be a bad decision for you and the team that you're working on. You got to work on those skills on how to get in debugging, work on existing software projects. Like that's, in my opinion, the job of a software engineer is not to build new stuff all the time, to take care of the stuff that we've already been building and keep evolving it. Because we don't do that with like housing that often. We don't just plow the whole thing down and build it. You evolve things, you reinvest things, you take advantage of what's there. Cities are all formed off of layers and layers of many generations of people living there. And that's similar with software
Starting point is 01:07:09 code. It's because it's software, we think we can just throw it out and replace it all the time. And I think that's very, very short sighted. And I'm not saying that because I just make a career right now out of just taking care of old Ruby on Rails applications. That's what I do. But there is an aspect of like, I mentioned earlier, I'm not excited by like the blank canvas. It's very daunting to me. I'd rather just jump in and work on stuff that's already working and like help make it better and refine it and improve upon it. And I think that's a big part of our job that I would like to see more people coming in the industry understand and be told that that's going to be part of the job. I've met a lot of engineers that are like, I'm going to go work at this other company because I don't get to work with new stuff
Starting point is 01:07:43 enough, like the brand new shiny stuff. I'm like, who does? Like in are like, I'm going to go work at this other company because I don't get to work with new stuff enough. Like the brand new shiny stuff. I'm like, who does? Like in five years, that's going to be old. And then you need to learn how to build those skills up sooner than later. So whatever. There's a lot of ways to do that. There's a lot of literature and great speakers on those topics. You're a great speaker.
Starting point is 01:07:57 Yeah. And I speak with some of those people on the podcast. I like your show. You've got a lot of great content on there. A lot of great guests on there speaking very specifically about their woes. Kent C. Dow was, I saw on the list. DHH was on your list recently. So I encourage people to check it out.
Starting point is 01:08:13 Maintainable, which is an awesome podcast name, maintainable.fm. Robbie, thank you so much for sharing all you have today. Thank you for open sourcing on my Z show and sharing with the world and then being open to grow it into what it is now. I look forward to your future with it and what more might come from it. Thank you. I appreciate you both having me on the show and thank you all for listening. That's it for this episode. Thanks for tuning in. What do you think about Oh My Z Show? Are you using Bash or Z Show? Did this episode give you FOMO? Let us know in the comments.
Starting point is 01:08:47 If you're listening to this on your ChangeLaw++ feed, you're probably wondering why there's another 12 or so minutes of runtime. Well, that's because Jared and I are showing up a little bit early to lay down 15 or 20 minutes of tape on what we call the pre-call. This is where we talk about the conversations we're going to have, get out some ideas, talk about the episode's flow, etc. We're going to do this as often as we can and release them at the end as a bonus for our Change Love Plus Plus members. Here's a teaser from the pre-call for this episode.
Starting point is 01:09:20 It's been years in the making, basically, which is somewhat embarrassing. But also, this is repeatable. This has happened before. Yeah, I was going to say, years in the making is something that you say pretty often on the show not always our fault sometimes it's just the way things happen this one was i don't know are you is there gonna be a we're gonna take an apology live or you want to just leave it on on the changelog plus plus clipping floor i guess we'll see i mean i guess that's the point of this man it's like we'll see. I mean, I guess that's the point of this, man. It's like, we'll see what happens. So the last time I think I recall seeing it was with Laura Hogan. Yeah. And that's just because I was, I didn't want to stay on the show, but a little intimidated
Starting point is 01:09:55 because she's just that cool. If you aren't on ChangeLaw++, check it out. It's our membership program where you can directly support our work and closer to the metal with bonuses like this and make the ads disappear from all our podcasts learn more at changelog.com slash plus plus up next we're back with another changelog special called song encoder that's all i can say for right now though also on deck is jessica lord from github on the future of github sponsors thanks again to our partners linode fastly Fastly, and LaunchDarkly. Also, big thanks to Breakmaster Cylinder
Starting point is 01:10:27 for making all of our awesome beats. And thank you to you for listening. If you enjoyed this episode, share it on Twitter, Reddit, Hacker News, wherever works for you. Word of mouth is by far the best way for shows like ours to grow. The Galaxy brand move is to subscribe to the Master Feed
Starting point is 01:10:42 and get all our shows in one single feed. Check it out and subscribe at changelog.com slash master. That's it. This is done. Thanks so much for tuning in. We'll see you in the next one. Thank you. Game on.

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