The Changelog: Software Development, Open Source - All things text mode (Interview)

Episode Date: April 4, 2019

We’re talking all things text mode with Lucas da Costa — we logged his post "How I'm still not using GUIs in 2019" a guide focused on making the terminal your IDE. We talked through his Terminal s...tarter pack which includes: neovim, tmux, iterm2, and zsh by way of oh-my-zsh, his rules for learning vim, the awesomeness of CLI’s, and the pros and cons of graphical and plain text editors.

Transcript
Discussion (0)
Starting point is 00:00:00 Bandwidth for ChangeLog is provided by Fastly. Learn more at Fastly.com. We move fast and fix things here at ChangeLog because of Rollbar. Check them out at Rollbar.com. And we're hosted on Linode cloud servers. Head to Linode.com slash ChangeLog. This episode is brought to you by Linode, our cloud server of choice. And we're excited to share the recently launched dedicated CPU instances. If you have build boxes, CI, CD, video encoding,
Starting point is 00:00:26 machine learning, game servers, databases, data mining, or application servers that need to be full duty, 100% CPU all day, every day, then check out Linode's dedicated CPU instances. These instances are fully dedicated and shared with no one else. So there's no CPU steal or competing for these resources with other Linodes. Pricing is very competitive and starts out at 30 bucks a month. Learn more and get started at linode.com slash changelog. Again, linode.com slash changelog. All right, Welcome back, everyone. This is the ChangeLog, a podcast featuring the hackers, the leaders, and the innovators of software development. I'm Adam Stachowiak,
Starting point is 00:01:13 editor-in-chief here at ChangeLog. Today, we're talking all things text mode with Lucas De Acosta. We logged his post, How I'm Still Not Using GUIs in 2019. It's a guide focused on making the terminal your IDE. And we talked through his terminal startup pack, which includes NeoVim, Tmux, iTerm2, and ZSH by way of OhMyZSH, his rules for learning Vim, the awesomeness of CLIs, and the pros and cons of graphical and plain text editors. So Lucas, late in March, we logged your blog post how i'm still not using guis in 2019 and in that post you said guis or bloatware terminal rules this is a guide to the terminal i'm gonna find kind of interesting about you not only about this blog post of course that kind of
Starting point is 00:01:59 gives this full summary of how to use the terminal as an, but the fact that you have the right command, the colon W command tattooed on the back of your ankle. That's super cool. Yeah, I remember I've done that. And last time I've been to San Francisco, it's actually my first statue. After that, I've got 22, but like that one is the one I like the most. So it was like the first time I was traveling to San Francisco. So I think it was like the proper place. And at the time, I've been using Vim for, I think, two years, three years maybe.
Starting point is 00:02:30 And I was just like really passionate. I just couldn't stop like, you know, talking about it. And, you know, every day I was finding out new things. And it's kind of like Vim is really interesting because the more I learn, the more I feel like I don't know anything. You know, it's one of those things. So, yeah, it's quite interesting. It's like such an amazing piece of software. There's so many things.
Starting point is 00:02:56 It's quite nice. I quite like it. Yeah. The interesting thing about this tattoo is that it seems like, at least based on the picture, that it's on the back of your heel. Is that correct? exactly so that means that as you're walking away is it like a a sign to the person behind you reading this or is it just like by happenstance that you put it on the back of your heel actually uh i put it there because i think it was the less faithful place it was also visible enough uh but uh is it the ankle or the heel?
Starting point is 00:03:26 The ankle. Actually, no one ever talked to me about the tattoo before I ever said anything. I remember I was walking around on, I think it was Fluentcom. I was
Starting point is 00:03:42 expecting someone to say something about the tattoo but actually I think no one noticed which is quite disappointing but it's fine I guess. So Lucas, there's a guy that lives here in Omaha. He has a big mustache, like one of those Monopoly man mustache, you know, like the big, you could like twirl it, you know. And I see him at the deli sometimes
Starting point is 00:04:05 and on the side of it he's like a fix-it guy or a painter I can't recall exactly what his business is but on the side of his his business truck or his minivan or whatever it is it you know it's got the mustache and he's worked into his name and his brand and so I was talking about the mustache I said you there's no way he's had it his whole life now. He's in his 50s. There's just no way he could get rid of that mustache. He's stuck with it. He's worked it into his... It's who he is.
Starting point is 00:04:34 I'm just curious if you feel like you can't quit Vim now. You're stuck with it for life because you're the guy with colon W on your ankle. Yeah, I'm definitely stuck with that for life. I've thought about trying Emacs, I gotta say that, but, you know, it's just,
Starting point is 00:04:49 it's just not who I am. It's too late, it's too late for you. Yeah, it's too late, it's too late, yeah, it's too late. Well, what began your love story with this, with this text editor? So many people love Vim, and we have a hashtag Vim party channel in our Slack team, which was a play on JS party. I was like, we should have a Vim. We have a hashtag Vim Party channel in our Slack team,
Starting point is 00:05:06 which was a play on JS Party. I was like, we should have a Vim Party, because so many of the people on the JS Party podcast are Vim users, and people tend to love or hate it. There's learning curves. Some people never get over that learning curve. There's jokes about, you know, Vim, why can't I quit you? We've made plenty of those
Starting point is 00:05:22 jokes over the years, you know, on Twitter. My favorite was the Singularity conversation. I think you said there's people out there trying to quit Vim as we speak, I believe. I'm sure you said that. Yeah, so I'm always joking about that. And I think everybody, it's a joke that's well used, maybe overused at this point,
Starting point is 00:05:37 but I'm always one to beat a dead horse. That being said, why did you fall in love with Vim? This is obviously core to your idea of doing everything in the terminal, not using GUIs. Vim is a core piece of that, NeoVim specifically. So tell us how you fell in love with it and what you like about it so much that you're like, hey, I'm going to get this tattooed on my ankle. It's been a few years now. I remember when I started, to be honest, I've seen a friend of mine using it and it looked so cool. And he was like super fast with it. So at the beginning it was more like I was more impressed
Starting point is 00:06:12 than, you know, I actually, it was not as if I made an informed decision. I was just like impressed by how things were happening. So I remember we're like sitting next to each other on college and, you know know he was using Vim and I was like hey like what are you doing how do you do things so fast and then he showed me his dot files and you know he explained like me um like he explained how the the whole Vim code works you know um and yeah so then I just started, you know, trying out all my free time because like, uh, at the time I was doing an internship. Um, and I, like if I had used them like on doing work and stuff, um, I like I just kept trying. And in the beginning, I got to say it was very frustrating. But after a month, I was just so much faster. And, you know, my workflow got so much more comfortable that I just couldn't quit.
Starting point is 00:07:16 And now, like, now that I have, you know, now that I started using, like, CLI tools more often. I just like all I know how to do, you know, like all my workflow revolves around, you know, CLI tools. I mean, I tried some, you know, IDEs and stuff. It just is not the same thing, even with remote. I don't know. It's just not the same thing yeah where are you coming from in terms
Starting point is 00:07:47 of a gooey or an ide uh when i started out in uh in college we were using eclipse so i remember like that that was all right at the time but one of the things i struggled the most and i i even talk about this in the post is that uh especially for people that are starting out, I think it's hard to figure out what's the limit of the IDE. You know, like, where does the IDE stop and where does the language toolchain start? So I think it gets a bit confusing for people, especially people that are new. Like, what are the things that are related to their development environment? And what are the things related to the toolchain they're using. So that, I think, made things harder to understand.
Starting point is 00:08:31 So once I moved to Vim and I just started using my terminal all the time, I feel like I know what my machine is doing. It's not as if I was handling that to an ID. I'm not just pressing buttons and expecting things to happen and not really knowing what's going on in the background. It's like I feel like I'm in full control, and if anything goes wrong, I know what the CLI is telling me, what the CLI 2 is telling me, what the terminal is telling me,
Starting point is 00:09:02 because you get used to the terminology you get used to like um how things fail instead of just like cryptic error messages or you know like just uh pop-ups or errors being hidden or anything like that so it seems like there when you when you think about am i going to use the terminal or really thinking if i'm going to base my workflow around the keyboard or around a mouse, the arguments around the keyboard in a terminal versus GUIs, which usually require a mouse or another input device beyond just a keyboard, the factors are speed, somewhat context switching, but I think it's speed of moving your hand off or on the keyboard to the mouse, which is slower. Once you're there, then then it's fast but that transition back and forth slows you down and then
Starting point is 00:09:50 also the idea of customizability or malleability I think a lot of the modern text editors are catching up in the malleability category if you look at just the way you can trick out bs code or sublime text uh to the hilt at this point and so many things are built in or not built in but available to be added removed and customized um but if you had to think about what was the most important thing you seem to be focusing a little bit on the speed because you say you feel like you're a little bit closer to the metal so to speak maybe there's an analogy with you know driving a car enthusiast like like a manual transmission regular people like an automatic transmission is the speed really key for you i don't think actually the speed is the key for me uh i think of course it's more comfortable to use a keyboard
Starting point is 00:10:39 all the time but actually most of the time i don't think we're writing code, right? I think most of the time we're just like reading, we're thinking. And what I really feel that makes a huge difference for me is that I don't feel like there's anything on my way when I'm transposing thoughts to code, you know, just it's so much faster and it's so automatic now. Also, I can switch between like environments like often when I pair with coworkers, I can just, you know, like open a terminal window, spin up in and I'm fine without plugins, without anything. So I'm like good to go everywhere. I don't need to install anything. Also, like even if I need to to configurations are a lot more portable I think there are many
Starting point is 00:11:28 more advantages rather than just being fast I mean being fast is cool right I mean when you when I'm when I'm doing a talk and I'm doing live coding you know if I open Vim I know that the subject of the questions are going to be about Vim like at least 50%
Starting point is 00:11:44 of them and the other 50% of them are live coding. Yeah, it's just like, it's fun, but I don't think it's the main reason why I use Vim. It's probably what got me started, but not what keeps me going in it. It seems like the limitations of, as you've said in your post too, the limitations of a GUI being bloatware for one or just containing
Starting point is 00:12:06 features that you don't really need, you in particular, maybe even all users at large, for the most part, this is a, you know, getting past that and sort of back to the analogy of having access to bare metal makes a lot of sense. But one thing you mentioned was how you persisted through learning Vim, which is for me, that's been my hangup personally. Like I still use VS code. I'm a previous sublime text user. I, uh, know many of the Vim commands and, you know, I'm an occasional coder, not an everyday coder. So I don't feel like I need to learn this today and you know there's part of me that has regret like man I really wish I would have persisted like you did you know on a
Starting point is 00:12:51 side project or found some sort of way through because some somehow some some way along the way you know as you said you'd fall in love with the vim way of things versus a gooey way and you couldn't go back can you talk about that persistence and maybe some of the things you did to persist? What were the things that made you get over these learning hurdles of Vim? I think the learning curve is easy, it's cheap, but I think when you use a tool for a while,
Starting point is 00:13:22 like you use an IDE or whatever your text editor is, I think the more you use it, the faster your own smaller tasks start to matter more. So I think the learning curve is indeed worth it. Because if you use an IDE for a long time, even though you learn some commands, you're not forced to learn key bindings, to learn shortcodes or anything. You just keep clicking around. And many other programs, they don't even give you that great quantity of key bindings.
Starting point is 00:14:03 So I think that for what us engineers do, I think it's a lot easier to use CLI because since you repeat tasks a lot, it's a lot easier for you to memorize a few words and just be accurate when communicating to the machine than actually keep searching for buttons or anything like that. But my experience learning it was indeed very, very frustrating in the beginning, especially because I was using many plugins. I don't think I started it right. I think it's just, like, pleasurable, you know.
Starting point is 00:14:38 It's something I still enjoy, just sitting down and, like, configuring things, you know, like, going through plugins, seeing what other people are using and like seeing if I can do something faster. Cause I'm the kind of person that gets easily annoyed by tests that I have to perform to like too often. I I'd say I strive to be lazy. That's a, that's a phrase I've heard once. And I think it's, it's what motivates me to keep going
Starting point is 00:15:07 keep using Vim because if I have to do something more than once or if something feels boring I'll just try to automate it or try to find an easier way of doing it and I think that's a great attitude to have when you're learning Vim just strive to be lazy
Starting point is 00:15:21 and try to find easier ways of doing things I think that's the key idea. I'm in a little bit of a different situation because I might be the only person who's persevered, not the only, but a rare person who's persevered through learning Vim and still doesn't like it that much. Careful. Yeah, I don't dislike it.
Starting point is 00:15:45 Let me tell them. I feel like I've shared this before, but I'll share it again just for the conversation. So my introduction to Vim was by necessity. My teacher in college teaching me C++,
Starting point is 00:15:54 he basically was a Vim diehard, and he said, you're going to use, you're going to SSH into this Unix machine, and you're going to use Vim. And that's what you're going to do. And there's no ifs, ands, or buts about it.
Starting point is 00:16:05 So that's what you're going to do to write your C++ programs., ands, or buts about it. So that's what you're going to do to write your C++ programs. Therefore, I didn't really have a choice. I think if I had choice, in fact, he let us use, it was either Pico or Nano. I think it was actually Pico for the first like two programs.
Starting point is 00:16:16 And then he's like, by the way, Pico is, he specifically said, a text editor in which you should write letters to your grandma, but not write computer programs. So he was very, very opinionated and made us laugh quite a bit. But he's like, don't use Pico to write programs.
Starting point is 00:16:31 I just let you do that. Now you're going to write Vim. And so I learned Vim basically by necessity over that semester. And I didn't really know there was, this is back in like the early 2000s. I didn't even know there was a different world of GUIs and IDEs or any of these things. I just learned, I cut my teeth on Vim. And so I'm very proficient with the editor. That being said, on a daily basis,
Starting point is 00:16:54 and I write software on a day-to-day basis, and I rarely choose Vim as my primary editor. I'll use it on servers. I will use it as a secondary editor. But I almost always prefer and choose a graphical interface. Specifically, I use Sublime Text, but I feel very similar about VS Code. I actually feel like they're faster in many cases for me, and I think it's problematic. I think we should be careful not to conflate the idea of a graphical interface with bloatware.
Starting point is 00:17:24 If we say there's GUIs and there's IDEs, yes, an IDE is a graphical interface, but not all graphical interface is an IDE, right? An IDE is an environment. It's like an all-in-one, similar to like a framework versus a library, right? It's like a framework. And yeah, those are, you know, Visual Studio,
Starting point is 00:17:44 maybe Eclipse. These are things I don't have much experience with, work and yeah i think those are those are you know visual studio uh maybe eclipse these are things i don't have much experience with but you know uh xcode i have some experience with when you click the button to start it and you got to wait 30 seconds for it to launch because it's bloated in my opinion um but visual studio code vs code sublime text adam text mate um notepad plus plus i don't know what's on the Windows side. These are things that, to me, they feel lean and mean. They don't feel like bloatware. They feel like fast, small, lean programs that I can extend.
Starting point is 00:18:14 And in my current life, by the time I get Vim configured to do all the things that I want out of a text editor, it's slower than, in my case, Sublime Text for many tasks. I think what you said there, too, on the IDE front is pretty important, too. The don't confuse VS Code or Sublime Text, in particular those two, because those are the ones I'm most familiar with, like you are, with, say, Eclipse, which is meant to be
Starting point is 00:18:40 an integrated thing into the language. It's almost something you said, too, Lucas, where you said that you're not really sure where the IDE ends and the language begins, you know, that you sort of have this missing piece. But IDE, just to spell it out for the listeners that may not be aware, is it's an acronym, obviously,
Starting point is 00:19:00 for Integrated Development Environment. So that just means that you're taking this environment, this GUI, and integrating it into a particular platform. It could be a framework. It could be a language in particular. There's ones around Ruby. There's ones around Java.
Starting point is 00:19:14 There's ones around Go and many of them. And there are four good reasons because there are certain special or magic or sugar in a language or in a framework that you want to extend to a GUI to sort of you know speed certain actions up that you repeat a lot the same that you might do with a plugin or you know an alias or something like that so that's where this really comes in I think your point though Jared to not confuse the two is very important, I completely agree with that. I just, I mean, I think even like VS Code is like a great application, sublime as well.
Starting point is 00:19:50 I really don't like IDEs, but like, I think there's still some disadvantages. Of course, everyone has their preferences. Like for me, what motivates, you know, like what motivates me to keep them is that I think I would say that when you're using command line interfaces,
Starting point is 00:20:10 you can just, like things already written for you, it's easy to communicate between programs. As Douglas McElroy has said, if you write programs that work well together and if you use the universal interface, which are just like tech streams, I think it's just so easy to incorporate new things into your flow. Things get so much more flexible. And I think you avoid writing software because if you – I feel like there's also lots of duplication because if you already have tools available
Starting point is 00:20:50 for you to do one thing, if you can use streams and you can combine multiple programs, then I think many times you would avoid writing a plugin. Also, that's how I feel about Vim now. I don't try to make Vim an IDE as I tried in the beginning. I just try to go with the raw thing and try to use the terminal the way it is supposed to
Starting point is 00:21:16 be used, I guess. But of course, I think VS Code is great. I've seen lots of people using it already. And I think that's a very important distinction you made there. I just think that there are still some advantages to using the terminal. Don't get me wrong. I'm a terminal junkie. I'm just speaking specifically of having your primary editor in the terminal. That's pretty much the only thing that I don't do in the terminal. Everything else is. And so I agree with all of the things that you're saying there.
Starting point is 00:21:45 And I've found that Vim fits well in that workflow. So I'll use it as my dollar sign editor in my environment variables so that when I'm going to do a git commit, it will open it in Vim. So I'm not completely on the other side of the fence here. I'm just a person who, when it comes time to day-to-day writing software,
Starting point is 00:22:04 I do enjoy both the speed and uh there's an aesthetic value to a graphical interface that draws me over vim this episode is brought to you by clubhouse. One of the biggest problems software teams face is having clear expectations set in an environment where everyone can come together to focus on what matters most, and that's creating software and products their customers love. The problem is that software out there trying to solve this problem is either too simple and doesn't provide enough structure, or it's too complex and becomes very overwhelming. Clubhouse solves all these problems. It's the first project management platform for software teams that brings everyone together. It's designed from the ground up to be developer first product in its DNA, but also simple and intuitive enough that all teams can enjoy using it. With a fast, intuitive interface, a simple API, and a robust set of integrations,
Starting point is 00:23:09 Clubhouse seamlessly integrates with the tools you use every day and gets out of your way. Learn more and get started at clubhouse.io slash changelog. Our listeners get a bonus two free months after your trial ends. Once again, clubhouse.io slash changelog. So we've been talking about bloatware and I'm trying to define some lines because I think there's some GUIs that are and some that aren't. Lucas, you start off your post saying GUIs are bloatware and you said it before. So this is something you got your thoughts and reasons about.
Starting point is 00:23:56 Expand on that for us and why exactly this is a talking point for you. Yeah, so I think as we were chatting, I think it's important to make this distinction between like GUIs in general and IGEs. Of course, I don't like, I'm not a big fan of GUIs in general. I think they're just not optimal for what we do. I'm not saying like that GUIs are bad, that are inherently bad or anything. You're saying that like due to the nature of the tasks we do, which involves a lot of repetition, which might involve a lot of need to automate things, a lot of need to, you know, integrate programs, you know, combine programs. I think when you use CLI tools, I think you're a lot more flexible when it comes to that.
Starting point is 00:24:45 You know, it's a lot easier to combine programs using streams. You can use many tools to automate what you're doing. It's a lot easier to create scripts. It's a lot easier to extend programs. You don't have to write a plugin. It's just many things are available right out of the
Starting point is 00:25:02 box because people have written great Unix tools. You know, just type them out when you need, like, and just type them out than it is to, you know, be searching around for buttons or, you know, trying to remember,
Starting point is 00:25:37 like, a specific sequence of things you need to do whilst you could have automated all that. So, yeah, I think there are, of course, advantages to using GUIs, but I just think that due to the nature of the things we do, I think it's more productive to use CLI tools also,
Starting point is 00:25:55 like all the information they provide you, you know, all the... It's a lot more, I think, when it comes to how you communicate with the machine, it's also a lot more exact, it's a lot more precise. So I think it's kind of like as if how you communicate with the machine, it's also a lot more exact, it's a lot more precise. So I think it's kind of like as if you were talking with a machine in its own language.
Starting point is 00:26:10 So it's easier for you to understand what it says, and it's easy for you to tell it in a precise way what you want it to do. Another point that you make in your post, which I appreciate and agree with, is that when you invest learning time, because that's really what you're doing when you're learning is you're investing in future you. And when you're investing in command line and terminal Unix-based, POSIX-compliant Unix philosophy tools, these are portable skills that can be moved to a new environment, a new language, the next thing that you're doing.
Starting point is 00:26:41 It could be on a different machine altogether. You can SSH to any Linux box in the world and it's going to have Vim. It's going to have, it'll probably have Pico on there too if you don't want Vim. It's going to have LS, right? It's going to have Tree or,
Starting point is 00:26:54 will it have Tree? Maybe it'll have Tree. Point is, these things are portable whereas on the other side, if you're using an IDE or a graphical interface that is a larger, kind of a monolithic program,
Starting point is 00:27:13 you're really investing in one thing, right? You're not in stocks and bonds. We call this, you know, your portfolio isn't diversified. And so you can't take that, those IDE skills, move them elsewhere and they, and use them. And so I think that's a really big talking point and a reason to invest in CLI. You're also assuming, too, that the visual goes with you, like you'd mentioned in college, Jared, that we do this every day, SSH into a machine, and I'm on DigitalOceanBox or Linode or whatever. There's not actually a monitor there.
Starting point is 00:27:42 There's not some sort of visual. The visual is the terminal. So when you invest in VS Code or a GUI in those cases, then you really can't take that with you from a visual standpoint either, let alone just an installation option. Even if you could install VS Code
Starting point is 00:27:58 on the machine, you can't see its interface via SSH for example. True. Now you can get fancy and mount a dry like an ssh mount and use your local vs code against a remote machine or something like that but point yeah point taken yeah uh yeah that's that's one of the reasons why i don't uh i don't want too many things to my vim configuration you know i try to use it as vanilla as possible it's kind of like this discipline pursuit for less so that I can be
Starting point is 00:28:25 comfortable in any environment. Sometimes when I'm pairing with a coworker or anything, many times I'll just fire up Vim and just use it without its syntax or highlight or anything because I just feel comfortable that way and it's a lot easier for me to write code
Starting point is 00:28:42 anywhere on any device. It's really good, yeah. Would you consider yourself a minimalist or somebody that stri easier for me to, you know, write code anywhere on any device. It's really good, yeah. Would you consider yourself a minimalist or somebody that strives for minimalism, considering you said this discipline pursuit of less? I think the more I do software, the more I strive for less, I think. I think I actually, like, I think less software, yeah, sorry, I got a bit lost.
Starting point is 00:29:09 Yeah. You agree with minimalism, long story short. Yeah. I like what you say, too, in this post, too, around your advice, basically, you know, to to for beginners, at least, is to resist this urge to just use all the plugins possible out there and to sort of like learn it incrementally and then layer on plugins that may be useful to you, you know, as you sort of gain more and more proficiency. Was that when I asked you earlier in segment one, you know, what some of your tactics were to getting past the hurdle. It seems like maybe originally you tried all the plugins and then at some point you gained some wisdom and you said, well, maybe, maybe actually if you're learning Vim for the first time to get over this hurdle, don't try to use all the plugins possible to actually achieve this minimalism we're camping out on here. Yeah, I completely agree. I think, I think there are some plugins that are quite useful when you're starting out,
Starting point is 00:30:05 like NodeTree or, you know, like Contropi or FZF, which is what I use now. You know, just being able to falsify files and, you know, seeing a file tree. I think people are so used to that in, you know, every single text editor or, you know, IDE they use. That's such an ubiquitous feature. I think those are quite useful. they use that, that's such a, it's such a, an ubiquitous feature, feature. I think those, those are quite useful, but many things, I think they can just be done in vanilla. And I think it's just easier and more portable if you just, just vanilla. Let's expand from the Vim conversation and talk about some of the other tools that you're
Starting point is 00:30:40 using. So in this post, you have the terminal starter pack, and it includes Vim or NeoVim in your case, Tmux, iTerm2, and ZSH, and OhMyZSH. And when I read these four things together, I think it's a very nice starter pack. I would say that on the Zen Minimalism side, if I could say the word, and on what's stock on computers that you're going to be using elsewhere, I would actually argue that I'm beating you in this category because iTerm2 isn't on machines by default. CSH sure isn't on a lot of machines by default, whereas Bash would be.
Starting point is 00:31:15 That being said, Tmux isn't, and I'm a rabid Tmux user. So just curious why this is your starter pack and maybe give us the reason why you pick each of these tools and why you like them. Yeah, so I think NeoVim was a natural evolution for when you're using Meme,
Starting point is 00:31:32 I think it's just like you end up getting annoyed by the synchronous task and I think it's just like a natural move since configurations are compatible and everything. I think that also once you've used a couple Term terminal emulators like item 2 or terminator or whatever you use, I think you just like...
Starting point is 00:31:54 It's a natural evolution to go to Tmux, I think. Also, it's very configurable, all the plugins and everything. Also being able to attach and detach sessions. I think Tmux just integrates really nice with everything else that's on a terminal. I think, as you've said, like iTerm2 is not available everywhere. That's true. But to be honest, when I started using it, I wasn't really very proficient with terminals.
Starting point is 00:32:28 So I just started using Item 2. I quite liked it. I used to replace lots of Gmux features, splitting panes and opening tabs. And then I think what got me was how easy it was to configure or how easy it was to import color schemes and all that. And I think it's just like, you know, it's just. Inertia.
Starting point is 00:32:51 So I'll challenge you a little bit on that one because I have a former iTerm2 user and currently terminal.app. I think I accidentally talked Adam into just using the stock terminal on the map. Sure did. Mostly because of how much previously I learned GNU Screen.
Starting point is 00:33:07 So I switched to Tmux probably five years ago but I was a screen user which gives a very similar feature set to Tmux, just a little bit less usable and broader, I should say. I found over time that iTerm2 wasn't actually providing any features that I needed because I do so much with Tmux.
Starting point is 00:33:24 And so Terminal app, you can change the font, you can change the theme, and I don't really use tabs, and so everything's in Tmux with sessions, and I like Tmuxinator. I think I recently wrote about that on Change.com if you want to read that. So curious
Starting point is 00:33:40 if iTerm2 has any killer features that you're still using it, or you're just kind of using it because that's what you learn and that's what you like and you haven't had any reason to stop. Yeah, to be honest, I think iTerm2 is more because of inertia, I'd say, yeah.
Starting point is 00:33:55 I think that's just what I'm used to and I find it so easy to configure the phones, the color scheme and all that. I'm just so used to it and I think from all the things in the stacks, the thing I interact with the most, I think I replaced like all the features I used to use from it by Tmux.
Starting point is 00:34:14 So yeah, I think Tmux just makes my, my workflow so much more organized. You know, if I'm, you know, if I'm writing code and, you know, something urgent happens and I need to, you know, jump in like to do support or anything, I'll just detach a session, create a new session,
Starting point is 00:34:29 or just move to a new tab and just do it very fast. I don't have to think too much about it. So I think Gmux ended up replacing all those features for me, and I just use it more of inertia, I'd say. So would you say that iTerm2 is questionable then for you that Terminal would do most of it? Yeah I'd say it's pretty questionable
Starting point is 00:34:51 I'd say it's more because From the minimalism perspective there's nothing wrong with it, it's a great application Yeah well maybe you just talked me out of it I'm just an install now maybe I don't know actually touch me out of it. I'm just an install now, maybe.
Starting point is 00:35:06 Yeah, no, just I don't know, like, actually yeah, that's a very good point. I use it more. What brought this up for Jared and I was, and this is about two years ago when I said, Jared, you got a new MacBook Pro. Yeah. And, you know, what hacker can resist the question of, so what are you installing on this new machine?
Starting point is 00:35:22 You know, and that's the age-old, you know, great conversation to have so he was talking through certain things is you know what i'm actually going to just use terminal instead of i'm trying to resist he said i believe if i'm recording from before i'm resisting installing i term two uh because just to see if i can get by without it right because terminals already here wanted to try to use this and for these reasons uh you know he's already using tmux and try to use this? And for these reasons, he's already using Tmux and whatnot. And so the next time I got a machine,
Starting point is 00:35:51 I recalled that conversation. And I'm a fan of minimalism. I achieve and aspire to have less. Doesn't mean I always am a minimalistic person. That is my natural state of being, though. So I was like, you know what? I'm going to follow in Jerry's footsteps and just resist iTerm2 and use Terminal. And I haven't looked back since.
Starting point is 00:36:12 That's years now. However... And to be fair to iTerm2, the built-in Terminal app has gotten a lot better in recent years. There was a time where there was a huge disparity between what iTerm2 provided and what the built-in app provided.
Starting point is 00:36:24 It was way better in multiple ways. Most people use it because of the split panes, but like we said, if you have Tmux and you're familiar with that, it solves that problem for you. I think there used to be a bigger difference, and I think at this point, it's less so. But that being said, if I go
Starting point is 00:36:39 through and look at all of iTerm2's features, I can probably find reasons why I'd want to use this. I can probably find reasons to install it, but my new philosophy is, instead of asking why shouldn't I install something, ask why do I need to. If I don't need to, don't do it. That's kind of a
Starting point is 00:36:55 minimalism perspective, I believe. How far can I get on just what's already available to me? When it comes to the command line and Unix-based tools, you can live your life without installing very much. That being said, Lucas, I'm curious if you've ever heard of
Starting point is 00:37:11 Tmuxinator or ever tried it since you're a Tmux fan. Is that something you're familiar with? No, I haven't heard of it actually, Tmuxinator. Yes, I haven't heard of it. It's pretty cool. So if you have a lot of ongoing projects, which a person who does client
Starting point is 00:37:30 work, as well as coding stuff for change.com, I have a lot of little projects going. And it's common to have different Tmux sessions for each of those projects and hop and forth. You detach one, attach another one, and it's all set up and ready to go. Well, Tmuxinator, unfortunately, it's all set up and ready to go right well tmux
Starting point is 00:37:45 simulator unfortunately it's a ruby gem so it has a ruby dependency upon it i love it to be it's like written bash or something but it's basically a way that you can create your own configurations for tmux name them and then define like all the panes and what each command will get run in each pane and you just store them in YAML files in your home directory. And then you can just say, you know, tmux changelog. And it'll just start that whole session for me and save it for me from scratch.
Starting point is 00:38:13 And I can have one of those for each particular thing I'm doing. It's really pretty cool. And anybody who uses tmux, I would suggest at least checking it out because it's a good idea. I think it kind of like fits really well with what i usually do because like i have i have kind of these implicit rules for myself like usually you know when i'm working on a certain project like this first this first pane we always
Starting point is 00:38:35 do this thing you know the second time is always going to be for that thing so it's usually like oh my first you know my first tab runs things and you know just you know keeps a window open for if i in case i need to move files around or anything. And the second one is always Vim and running some tests or anything like that. And I can have these rules for myself. That automates that. I think it
Starting point is 00:38:55 fits really nice with what most people do, actually. Yeah, it's pretty cool. So for Chainsaw.com for instance, the first pane is the server running, and then the second one is a console session open with the whole framework loaded and everything. The third one's the tests running,
Starting point is 00:39:13 and then the fourth one is just a shell. And so I don't have to... I can name them. I don't have to set them up every single time because you do find yourself doing the exact same thing. What would be cool is if you could just have Tmux sessions last persist through reboots,
Starting point is 00:39:26 which I feel like maybe there's some hacks out there that make that work, but it was never really reliable for me. So those detached sessions will persist and live forever until you reboot your machine. And so this is a nice way of just configuring it once per project and not having to worry about
Starting point is 00:39:42 it. Well, most of the procrastination that could happen or would happen would because of all the necessary cadence or ceremony to begin right like that's that's some of the reason why people put off a task is like all the necessary steps you have to do to actually begin the task not just actually achieve the goal so So in this case, if you want to work on a cook bug or just anything really fastly, then if you had to do that ceremony every single time, you'd be less likely to...
Starting point is 00:40:14 To even get started. Yeah, exactly. Or you just find yourself typing the same crap out all the time. As programmers, every time we type the same thing over and over and over again, our brains start thinking, how can I not do this every single time? And know and that's a lot of stuff lucas has done you know what you're sharing here in your setup is really just you solving those problems and um it's one
Starting point is 00:40:35 of those things i think the mindset of a terminal slash uh in terminal editor user versus a IDE user is an IDE user generally is like, just do all the things for me, give me a button, and I just want to push it. I think that's a perfectly viable way of looking at it. But on the other side, it's kind of just the more hacker lifestyle of, no, I'm going to actually, I'm going to create my own environment that's ideal and perfected. And I can smooth over all the little issues. One thing that I've done years ago and I don't even realize anymore, I think about it now
Starting point is 00:41:12 because we're talking about this, is I just started realizing in the command line, every time you change directories into a new folder, what's the first thing you do pretty much? What's the next command? LS, right. I'm in a new directory. It's similar to And what's the first thing you do, pretty much? Like, what's the next command? Yeah, ls, right? Ls, yeah.
Starting point is 00:41:26 Like, I'm in a new directory. You know, it's similar to like, when you're like a text-based adventure, and you're like, I enter a room, and now you're like, okay, tell me what's in the room. You know, I look around the room. Yeah, role perception. Yeah, cd and then ls, pretty much every time.
Starting point is 00:41:40 And even if you didn't want to ls, would it bother you if you did? So probably, I don't know maybe 10 years ago i just overwrote the cd command in my bash dot files to just ls after i cd every single time for me and so now that's just the way it works i change directory it prints it out and that's just the cool stuff that you can do and maybe i'm the only person in the world that likes that that's fine i'm the only person in the world that has it then the cool thing is we've kind of gotten to this sort of blacksmith kind of mentality of say ages of old whenever you know the blacksmith in the town was the one of the most popular persons because they would
Starting point is 00:42:16 be the tool maker and this was just an age where it was common in a practice or a craft to form and create and manipulate your own tooling. And I think that that's kind of maybe even potentially a divide of hacker type, where not so much that you have to fully adopt this, but that you can appreciate your ability to fine-tune your tooling. Like when you mentioned the IDE, Jared, having the button, that's a perfectly viable option. However, you know, the hacker way tends to be,
Starting point is 00:42:49 you know what? I like the button, but I want it to do this, this and this as well. So a GUI may not be the better fit because you're the kind of person or the person is the kind of person using these tools to want to make
Starting point is 00:43:01 and fine tune their own tooling to adapt and be the best practitioner yeah there's a lot of pleasure also like when you when you do something yourself you know like you know exactly like how it works you know uh you know what you need to do in case you need to do any fixes you need like you know exactly what's happening um and i think it's also like very pleasing as you said you know it's just There's absolutely a satisfaction to solving your own little problems. And just being, it feels empowering to just say, you know what, I had this, this bothered me.
Starting point is 00:43:31 It was the smallest little thing. And I came up with a reason, I came up with the idea of why would I just change it? So every time I see the LSs, and from the point that I had that idea to the point that I had it finished, I had to realize that if you override a built-in command in your function, you have to call the built-in.
Starting point is 00:43:49 Literally, the word built-in CD. That was the only part I had to figure out. From the idea to initiate, or what's it called? Finish, right? Start to finish is probably 15 minutes. And it's been serving me like that for 10 years of my life. That feels really good right those 15 minutes was well spent to invest in the future so which i think was one of the main points lucas you were driving home earlier yeah something else you mentioned too
Starting point is 00:44:14 though jerry was was bash and configuring it and hacking it so the last piece on the terminal starter pack is is zsh and maybe the extension of that is Rob Russell's, Robbie Russell's Oh My ZSH, which I'm a fan of personally, but you use a Bash or you're using Bash, Jared, so we're like two to one here. Oh, you got me cornered. Well, Lucas, help us understand
Starting point is 00:44:38 why is ZSH something you reach for since you're a minimalist and Bash, as Jared said before, is on every machine. Yeah, so I think when I started out, I was using Bash. And then I think the thing that drew me to ZSH was the auto-completion. I think that was like the clear thing for me, the clear feature. I think that's what brought me in. Also, all the
Starting point is 00:45:05 glob patterns and all that. And I think just managing configuration with Oh My Zosh is just so easy. Also Zed, it's just... That was kind of like a... But I think the killer feature
Starting point is 00:45:21 was for me the auto-completion. And you can just get auto-completions for everything you use. But here I'm about to say, you know what? If there was Oh My Bash, I might... Because what actually draws me to ZSH is less about ZSH and more just the fact that Oh My ZSH existed and it made it so easy. And I like the easy button there actually isn't oh my bash yeah that's hilarious so for us uh layman over here tell everybody what oh my zsh is i'll just read the the uh description on the repo a delightful community driven with over 1300
Starting point is 00:46:00 contributors framework for managing your zsh configuration so it's it's really about oh my zsh is awesome robbie made this configuration for it you know that was that's what oh my zsh is now to sort of make plugins and this extension to use rails get and have all this configuration a lot easier and that's what oh my zsh is this extension this layering on top of ZSH to make your terminal prettier and things like that. And just change and augment the visualization of your command prompt. That episode was a long time ago, back in 2011. We'll put that one in the show notes. Go back and listen to that.
Starting point is 00:46:40 The old Adam Stack. That's right. And Kenneth Reitz. The OG Adam Stack. That's right. See how Reitz. The OG Adam Stack. That's right. See how that audio sounded back then. So that's what Oh My ZSH is. So Adam, you got brought to ZSH because Oh My ZSH was so cool.
Starting point is 00:46:54 Right. And Lucas, you got brought to it because autocompletion was better than Bash. I'm not sure if that's still the case. I mean, Bash has autocompletion. Maybe it's just not as good as ZSH is. But I'll probably just stick with Bash. Yeah, I think indeed Oh My Zosh makes it a lot
Starting point is 00:47:11 easier to get started with it. The community is just so huge. It's just so easy to find ways of solving your problems. Find help and documentation and everything you need. Yeah, I think Oh My Zosh did really foster the world,
Starting point is 00:47:28 made it a lot easier for people to start using ZSH. This episode is brought to you by our friends at Rollbar. Move fast and fix things like we do here at Changelog. Check them out at rollbar.com slash changelog. Resolve your errors in minutes and deploy with confidence. Catch your errors in your software before your users do. And if you're not using Rollbar yet or you haven't tried it yet, they want to give you $100 to donate to open source via Open Collective. And all you got to do is go to rollbar.com slash changelog, sign up,
Starting point is 00:48:13 integrate Rollbar into your app. And once you do that, they'll give you $100 to donate to open source. Once again, rollbar.com slash changelog. So you talked about the four pillars, you might say, of your setup, NeoVim, Tmux, iTerm2, and ZSH by way of, oh my ZSH, of course. The command line and the terminal is way more than that. And the more of the commands that you know and learn and ingrain into your workflow, the better you are at it. Now, one of the hard parts about the terminal, similar to like an Alexa device, is discoverability isn't the best, right? It's difficult to ask the computer, what are all the things that you can do? Because, well, there aren't buttons to click on which tell you what
Starting point is 00:49:16 they do. So one of the things you have here at the end is other useful programs and things to know in order to get good at the terminal and use it instead of the GUI. So why don't you go ahead and we can talk about a few of these. There's a lot of beloved favorites in there. Curl, of course, at the top of the list. Much beloved around here. Daniel Stemberg, kind of a hero of ours and a frequent guest on the show for Curl and
Starting point is 00:49:42 all he's done there. But I'll teed over to you, Lucas to talk about some of these other commands that you found useful and you integrate into your terminal life. I think, I think these are the ones that, you know, make it easier for you to do everything you do in a,
Starting point is 00:49:58 in a, in a UI. I think those are the things that people do the most. So I think it was, was useful to put them down here so that people know, Hey, these are the things I can use to replace whatever I'm doing right now and maybe do it more efficiently
Starting point is 00:50:11 and in a more flexible manner. So I think JQ is really, really cool, especially because if you're using curl, you're probably going to get JSON back and you want to work with it in a nice way, in a simple way. Also, Streaml simple way. Also, Streamlater, SCD,
Starting point is 00:50:28 I don't know how you guys call it, like SED, S-E-D? That's what I call it, SED. I don't know. Yeah, I quite like SED also since I already use it quite frequently. I got very familiar with regular expressions and
Starting point is 00:50:44 I very rarely need to Google a regular expression because most of the things I do also are simple regular expressions. AG is very useful, especially when navigating a true code when trying to find something. I actually use it through FZF on Vim. So actually my FZF plugin uses AG. And it's really easy to configure. I can just like use configuration to ignore whatever is on my GIF ignore.
Starting point is 00:51:19 So I don't get all those annoying old modules when I'm searching for things. So it makes it really easy to navigate around to find things. AWK, it's like, I always have to do exactly what I need to do. It's like, you know, it's not very verbal. So I think it makes it harder for you to remember things. Like unless it's something very basic, I mean, Googling is required, but it's very useful. R-Sync, you know, I was seeing a talk these days,
Starting point is 00:51:52 and a guy was saying that R-Sync is made of magic, and I couldn't agree more. R-Sync is indeed made of magic. Very useful for me. Why do you say that? It's just like, it's ridiculously fast, and it just works so well. It's ridiculous
Starting point is 00:52:06 simply to use. It's just, you know, just having an incremental file transfer that it's so easy to use. It's just, it's just ridiculous magic.
Starting point is 00:52:17 Also, Grab. Grab is such a great tool. I was reading these days on how I can use a post about why Grab is so fast and it was just
Starting point is 00:52:25 all these things have so much magic into them. It's not just rsync. I think rsync and Grab stand out but I think both rsync and Grab are great tools. Also Make. I think many people overlook Make. I think it's such a great tool for automating
Starting point is 00:52:41 tasks and even though there's this joke around of there only having been one makefile and all their makefiles are copies, like a bit modified of this first makefile, I actually think make is like a great tool. I think it plays really well even with the NPM scripts and all that.
Starting point is 00:53:02 I think sometimes, you know, things like Google foreground are like quite annoying to configure maybe. So I say make this many things really well and it's really simple to use and has been around like for a very long time. So I quite like it as well. So Lucas, for more on make,
Starting point is 00:53:23 stay tuned to an upcoming episode because gare hard lazu are our devops buddy uh who just recently redid changel.com infrastructure for 2019 is coming back on the show if you guys recall a while back we had him on maybe it was 2018 maybe it was 2017 i don't recall our first time deploying chang Change.com as the open source CMS. That was with Ansible and Docker. Well, we've got a brand new setup and Ansible's completely gone, Docker's still
Starting point is 00:53:53 there. You definitely want to find out what we're doing this time, but I'll tell you, Gerhard is like a makefile guru because all of our Ansible scripts have been replaced by one makefile, which is open source in our repo if you don't want to go read it. And this thing has all sorts of interesting features. I never reach for make.
Starting point is 00:54:10 I use it when other people have written makefiles. I wouldn't reach for it myself, but it's awesome to see how much you can do with a makefile. So just a quick plug for that. And I agree, there's definitely a lot of tasks you can automate beyond just building and compiling code. What I love about this list is that it's, as you said, Jared, with Alexa, which I think is actually a great analogy, is discoverability. The way that you discover these kinds of things is by somebody else going down the path and doing a retrospective and sharing their learnings, right? Because you can assume imposter syndrome or, you know, you don't know as much as somebody
Starting point is 00:54:49 else, but meanwhile, you're a few steps ahead of somebody else and you can always share back a little bit. And this list alone is going to be helpful for, you know, a future or up and coming programmer that is like, I never really knew or how to use make. And now, you know, now they've got this got this list to go off of and some experience. I think Make is definitely amazing. I even joke in one of my talks that we use Make in lots of projects and we even use Make in Chai
Starting point is 00:55:19 because we're vintage and we don't like Gulp, Grunt or In-Term Scripts or any of that just because it works and it's been around for such a long time and, you know, it's just so well documented and so easy to find material about. It's just amazing. I quite like make. Not modern, Jared. Vintage. I like that. Minimalist. There's a lot of things we can call make,
Starting point is 00:55:41 but I don't think we can call it minimalist, right? Yeah, vintage is a word I like I mean uh coming from someone that lives in this London I think that's the right word to use love it I also give my plus one to most of these I think rsync I would be embarrassed to tell you how many things I'm still you know deploying or or backing up with rsync on different machines around the world. Such a useful tool. So AG, you talked about AG. You didn't pause there very much. This is a search tool similar to ACK.
Starting point is 00:56:14 So there's been this progression of search tools. GREP, which is built in on all Linuxes, most Unixes, is an awesome tool. ACK is a replacement for GREP. I remember with a great website, betterthengrep.com. AG, A-G, is called the Silver Searcher. It's just like ACK,
Starting point is 00:56:32 only it's focused on speed. I think it's written in POSIS-compliant C code. So is this AG, the AG, the Silver Searcher, do you use this only inside of Vim by way of a plugin, or is this also just, you just use it from the command
Starting point is 00:56:45 line tool when you're just searching a code directory or for, do you use it in place of grep or do you also use grep in different contexts? I also use grep. I use AG mostly inside of FZF indeed, but I'll
Starting point is 00:57:01 also use it when I'm navigating around. Sometimes I'll use git grep if I'm not in Vim because I want to ignore whatever's on GitIgnore and just like see what I'm dealing with in Git. But yeah. So when would be a time that you'd reach for GitGrap versus AG from the command line? Is it when you're searching for something specific?
Starting point is 00:57:21 Or I just don't understand why one would be used over the other. So you mean, why would I use AG instead of GitGrap? Or vice versa from the command line. Like, why doesn't AG fulfill all your needs, would be the question. So if I were to use AG, I would tell it to ignore, like... Actually, I don't have to actually ignore my git ignore when I started using FZF I had to manually tell it hey g ignore my git ignore
Starting point is 00:57:51 so I actually thought that I would have to always tell it to ignore my git ignore but actually not so I actually knew something wrong I just realized okay I wasn't trying to call you out I'm actually trying to learn because i because i i tend to use grep just because it's familiar to me now i also use act but i usually only use act inside of like
Starting point is 00:58:12 the vim search tools i feel like at a certain point with act i used to have to tell it what kind of a file i was looking for like act dash dash pearl for instance or dash js if i just wanted to search javascript files Whereas grep will by default search every file in the directory. But I'm just going from memory there. I was just curious if ag had specific places where it'd fall down. But maybe we should just all be using ag
Starting point is 00:58:35 all the time. I guess so. I didn't know that. Well, there's one common thread that binds all these tools together. We've talked about the Unix philosophy. We've talked about small tools, you know, loosely coupled. And the idea of, you know, sending your input and your output between these tools by piping.
Starting point is 00:58:58 And really what's at the core of that is this concept of everything is a file. And really the idea of plain text or just passing text around. And the beauty of that, you have another post called In Praise of Plain Text, which hilariously starts off how graphical interfaces are bloatware. So we've sensed a theme here with you, Lucas.
Starting point is 00:59:18 But go ahead and just riff on that, the concept of plain text, why it's so powerful and why it's so useful in this context. So I think that just having this interface readily available for you to integrate and combine programs makes it so easy for you to achieve tests. And also I think it kind of encourages good design
Starting point is 00:59:38 because when you're writing a program that needs to work by itself, that cannot communicate or that it's hard to communicate with other programs, like when you're using a program that needs to work by itself, that cannot communicate, or that it's hard to communicate with other programs, like when you're using a GUI, it's often hard to pass data from that GUI into other programs, whilst when you're using text interfaces, it gets quite easy to do that. So since you don't have to worry about putting all those features into a graphical interface,
Starting point is 01:00:07 that's a very important thing in Unix philosophy, just doing one thing and doing it well. So I think programs get a lot smaller. And when you have less software, you have less things to worry about. You have less things to maintain, less things to update. There's less places where bugs can hide. So I think it not only makes it easier for you to accomplish tasks, but also encourages good design in general.
Starting point is 01:00:32 And I also think that another thing that's important here is that when you're using GraphQL interfaces, often the creators of GraphQL interfaces have to be thinking about, hey, what are our users going to do? What should we provide them with?
Starting point is 01:00:47 While if you're writing a CLI tool, you should just be concerned about what I want this specific tool to do. What's the smallest thing? What's the real purpose of this tool? Because whatever else they want to do with the output of that or whatever they want to provide as input is none of their concern. So I think that's really useful when developing an application
Starting point is 01:01:12 is both from the point of view of the creators, because for them it's a lot easier, because they have to assimilize things. And from the point of view of the user, where it becomes a lot easier to use them in whatever way they think it's more suitable so they can accomplish a wider range of tasks, I guess. I like the way you end that post. Text is timeless, precise, and elegant. We should use it more. Yeah, I think that when you're communicating to a machine, you know, it's kind of like when you
Starting point is 01:01:43 know like the language of mathematics, you know, it's just a lot more precise. Yeah, I think it's just so simple. So I quite like the idea of not having visual abstractions or all these visual concepts or things that you have to have seen before to understand what they do. When you see a symbol, that's a common idea between us humans. There's a common agreement between us that this symbol does this thing. So if you're not, if you don't know what a certain symbol does
Starting point is 01:02:17 or if it looks confusing in a certain way, it's just subjective while text is just precise. just precise you know you tell the computer precisely what you wanted to do and there's no subjective in that you know there's no searching around for buttons or you know there's no looking for an icon or not understanding you know like not finding something you know it's just it's always there it's just exact and precise and you know as i said it's timeless well you aren't going to get any disagreements from me on that one. Huge fan of plain text.
Starting point is 01:02:49 Huge fan of Markdown, which has similar precepts and really allows you to write prose, not engineering necessarily, unless you're doing documentation, but just the idea of writing prose to be read in a plain text format, at least a format that is readable and legible and enjoyable in plain text, but then can be converted into HTML or any other format for other needs, I think is the simplicity is probably one of the reasons why Markdown took off
Starting point is 01:03:20 and became kind of a de facto language for technical writing. Are there any resources you can share that's something you track pretty often? Maybe a text mode only newsletter or something like that? Yeah, so I tend to go to a lot of conferences. So I talk a lot to people about what are they using, and especially since whenever I'm doing live coding or whenever I'm using my Mac I'm in my terminal like I'm quite
Starting point is 01:03:47 approachable for people that also you know use CLI tools quite a lot so I think interacting with people is like a very valuable way of learning these things you know sometimes you you know I think as I've said one of
Starting point is 01:04:03 the one of the motors for one of the main motivations for Because, you know, sometimes you, you know, I think, as I said, one of the, one of the motors for, one of the main motivations for wanting to, you know, use the terminal more is to get
Starting point is 01:04:12 more efficient what you're doing. You know, when you get annoyed, you go there and you fix, and you try to find more efficient
Starting point is 01:04:17 ways of doing things. But sometimes you don't realize that you're missing a more efficient way of doing things because
Starting point is 01:04:24 you think that what you're doing is already efficient enough, right? So I think that's when talking to people comes and makes it easier for you to realize what are the things that you could be improving, but you aren't because you think they're already good enough. So you're missing treatments on both points. I also, on GitHub, I'm always looking for people's.files to see what they're using. I think that's quite useful. I think I learned a lot by reading other people's.files. So yeah, just seeing what's in there, you know, like how they use things, how they use tools, you know. Asking myself why a certain piece of configuration is there. I think that's also very useful.
Starting point is 01:05:07 And also, I find quite a lot of useful stuff on Hockey News, on Twitter. So I guess those are the ways I keep myself updated when it comes to that. I can say that I've learned a thing or two reading your.files, Jared. Really? Yeah, because you do some interesting things with bash history or just your RC file,
Starting point is 01:05:35 just different things that have been in your settings I've learned. Even though I don't use bash all the time, this is back when I did. I always appreciate looking at somebody else's.files. And just because you'd mentioned that, Lucas, I was like, you know what? I wonder, since we're such an awesome repo kind of fan place, Jerry, where we're pretty much anything that's awesome, awesome.files, awesome Vim, awesome whatever, we're going to try and log it.
Starting point is 01:06:01 I found awesome.files. I was going to say, I guarantee there's an awesome.files out there. Yeah, it's a curated list of.file resources, so you can jump into a lot of different stuff. I think that's a great point, Lucas, to find learning, which is what I was trying to get at was like, you know, for those listening, where can they find some good resources to just learn themselves?
Starting point is 01:06:20 You know, a lot of it is paying it forward by writing a blog post about where you've been, like you have, and both of these scenarios to sort of give representation and give a path forward for, you know, somebody coming behind you. And I think the, you know, reading somebody's dot files is quite enlightening sometimes. It's like, wow, I didn't even imagine doing that. Or that's really interesting. Like, I think you were doing something in particular with history,ared i can't recall what but that's the one thing that sticks out to me about your dot files i was really i think you had your history like an extreme amount or something like that like 30 000 or something as big as it would possibly go yeah because why
Starting point is 01:06:57 wouldn't i want to have all that of course that's my my same idea but i was like i didn't know i was able to yeah alternative to that is have no history. That way no one can track your moves. That's right. That's the ninja move. It erases their history as they go. Yes. But I'm the hoarder.
Starting point is 01:07:13 I'm just like, well, I'm going to keep as many lines as I think it's just set to the max available. Because we have the resources now. I think the history command was probably written back in the day when people were dealing with size constraints on their disk, but no such problems. Well, it makes me wonder if, so I agree with.files in terms of a way of learning tips and tricks from other people, but it's so much more useful if somebody actually just walked you through their.files or explains why they do what they do versus just trying to conjure their intent or hopefully have comments on what they're doing. So I'd be curious if you guys, you too, but also the listeners, if you'd like to tweet at us or something or comment on this episode on change.com, if you'd be interested in watching like kind of like a, maybe not a live stream, but a video where somebody would actually
Starting point is 01:08:00 walk you through their dot files or explain some of the more interesting tidbits in a, in a screencast or even just two people sitting there, one person asking questions, one person answering. Because it seems like that's a more digestible format for me versus I'm not just going to go troll through other people's.files anymore. Maybe back when I was in my early 20s, I would do that. But if somebody served it up to me,
Starting point is 01:08:21 like here's a person who I respect and here's why they're doing their.files the way they are I think that might be interesting. Is that interesting to either of you two? It's interesting to me. I think that's the better way probably to do it. A good first pass would be accessible.files. Second pass would be
Starting point is 01:08:38 explainer please. And I think also just like seeing things in action so that you can realize how that actually feeds into someone's workflow you know also just like seeing things in action so that you can realize how that actually feeds into someone's workflow not just like seeing a tool there and knowing what it does but not knowing how someone uses it
Starting point is 01:08:53 so I think that's quite a useful thing to know also too like what we did this isn't exactly a one to one but we've got Lucas questioning iTerm2 just by looking through his choices. A critical eye. Yeah.
Starting point is 01:09:09 Maybe Terminal actually is probably just fine. It's kind of like code review or working in a pair when you're all by yourself and you do things. You just do certain things, and then when you're with somebody and you have to explain, teaching does this to you as well. And someone's like, why do you do it that way? And you're like,
Starting point is 01:09:27 why do I do it that way? Why am're like, why do I do it that way? Hmm. You know, why am I using I term too? I'm not sure it made sense at the time. Maybe I don't need it anymore. So yeah, that's, that's always an enlightening experience for everybody. Well, it's been a fun conversation, Lucas. Thank you so much for, you know, sharing your thoughts in these two blog posts. I know that you gave a talk at NebraskaJS,
Starting point is 01:09:46 which, Jared, that's where you learned about Lucas from before. That's right. And then this awesome blog post, How I'm Still Not Using GUIs in 2019, which is a guide to using Terminal. So for those listening out there, if you haven't read this, we'll link it up in the show notes. Do a deep read into this.
Starting point is 01:10:02 Shares his.files, a lot of the stuff we talked through, obviously. All the links will be in the show notes. But, Lucas, into this. Shares is not files. A lot of the stuff we talked through, obviously, all the links will be in the show notes. But Lucas, thank you so much for your time, man. I appreciate it. Thank you very much. I love the show. I'm really happy to be here. And it was like a really nice talk to you guys.
Starting point is 01:10:16 Thank you. All right. Thank you for tuning into this episode of The Change Log. Hey, guess what? We have discussions on every single episode now. So head to changelog.com and discuss this episode. And if you want to help us grow this show, reach more listeners and influence more developers, do us a favor and give us a rating or review in iTunes or Apple podcasts.
Starting point is 01:10:39 If you use Overcast, give us a star. If you tweet, tweet a link. If you make lists of your favorite podcasts, include us in it. And of course, thank you to our sponsors, Linode, Clubhouse, and Rollbar. Also, thanks to Fastly, our bandwidth partner, Rollbar, our monitoring service, and Linode, our cloud server of choice. This episode is hosted by myself, Adam Stachowiak, and Jared Santo. And our music is done by Breakmaster Cylinder.
Starting point is 01:11:07 If you want to hear more episodes like this, subscribe to our master feed at changelog.com slash master, or go into your podcast app and search for Changelog Master. You'll find it. Thank you for tuning in this week. We'll see you again soon. All right, because you've stuck in here to the end of the show, got a surprise for you. Here's another preview of our upcoming show called Brain Science. This podcast is for the curious. We explore the inner workings of the human brain to understand behavior change, habit formation, mental health, and the complexities of the human
Starting point is 01:11:50 condition. It's hosted by myself, Adam Stachowiak, and my good friend, Muriel Reese, a doctor in clinical psychology. It's about brain science applied, not just how the brain works, but how we apply what we know about the brain to better our lives. There you go. That applied brain science really stood out to me because I want, I don't want it to just be data. I want you to go, how can this fit? What can I take away now? How am I going to change?
Starting point is 01:12:17 And that that sort of is where you come in more. And even some of the questions like, so like, I want to ask you, what are some of the most challenging things working in the tech world when it comes to relationships? Probably the most important one is isolation. More and more of the world and companies are being, for good reasons, they're being okay with what they call distributed teams. Yeah. And that means that you and I, we work for the same company, but you work from your home office. I work from my home office. I might go into the office a couple times a week if I live local, but even if I live in San Francisco, I'm still probably a remote worker,
Starting point is 01:12:49 even though I can hop in an Uber or hop on, you know, the train or whatever and go into the office and be there in a half hour. But why waste the time? You know, and this is where I would revisit what I want to talk about with resonance and that whenever we're learning, no matter what thing, it's really helpful when we get feedback that's both immediate and specific. And so when you're by yourself, and you don't have any interaction with other people, how can you get any feedback? I mean, you're losing most of the nonverbal communication. And you also don't have all of the voice inflections or facial expression. Have you ever tried to be sad, feel sad and smile at the same time?
Starting point is 01:13:35 Try it. It's pretty hard. Right. Because facial expression is exactly what's involved when it comes to empathy, which is relationships. I was reading a research article recently and it talked about, you know, how couples who are together a really long time end up sort of looking like each other. Yeah. And so what they've looked at is when we actually empathize with other people, facial expression is really key within that. And so when you empathize with the partner you're with over and over and over again, your face begins to make the same creases and facial expression as it relates to where somebody else is emotionally. Wow. Right?
Starting point is 01:14:23 Say it is. So that's creepy. Well, again, this is sort of the hotbed when it comes to neuroscience these days is mirror neurons. And these mirror neurons are what are involved with empathy. And so mirroring, meaning I get another person's emotional world. And so one of the research studies looked at Botox. And what they found is that Botox, because it actually assists in paralyzing facial muscles, then you can't contort your face, so you don't get wrinkles. But actually, levels of empathy go down. Right.
Starting point is 01:15:05 Because your physical appearance can't reflect your inner appearance. Yeah, you got it. And so when you're working in these remote locations, it might facilitate better work or more focus. And it allows people to be distributed and to capitalize on the talents across the country, right? Yeah. So that's like a treasure trove, in my opinion.
Starting point is 01:15:27 Talking about in a scientific way, you know, not just like, hey, this is my opinion. Yeah. About all the cons of that. Because I think what we can do is still have remote work, but do it in more healthy ways. Because I'm fully, I mean, I've been self-employed remote worker since 2006. Now I'm a unique animal. I know that. My wife knows that.
Starting point is 01:15:49 Right. I'm fine with it. I'm a good human being, but I've got some flaws and I'm willing to accept and share those to some degree. And I think the problem is we just lack maybe a more purposeful or intentional feedback loop. Yeah. more maybe a more purposeful or intentional feedback loop yeah which i think is super important to being able to operate in this world in just good ways i don't know healthy ways it's probably the best way to use in this show context is healthy ways that's a preview of brain science
Starting point is 01:16:20 if you love where we're going with this send us an email to get on the list to be notified the very moment this show gets released. Email us at editors at changelog.com. In the subject line, put in all caps, brain science with a couple bangs if you're really excited. You can also subscribe to our master feed to get all of our shows in one single feed. Head to changelog.com slash master or search in your podcast app for ChangeLog Master. You'll find it. Subscribe, get all of our shows and even those that only hit the master feed. Again, changelog.com slash master. Thank you.

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