Collin and Joel discuss some of their favorite developer tools.
Follow us on Mastodon:
Show art created by JD Davis.
Joel: Hey, Collin,
Collin: Hey, Joel.
Joel: how's your week?
Collin: My week is going pretty well. I don't think it has been the most productive for me because I've been, uh, I, you know, I mentioned to you last week that I am driving to RailsConf. So I'm trying to sort of get all of the things I need for the trip and like figure that out. Cause I wanna do some camping on the way.
Uh, and so one of the things I needed to do was get my, uh, like. Routine car maintenance done. And like that took a long time. I had to go to the doctor today. So I've been a very busy week, but not as productive as I would've liked. Um, what if, uh, what, what have you been up to?
Joel: I've had a good week. I shipped a new update to Phlex, which was fun.
Uh, adding a couple of features that I've kind of wanted to solve for quite a while, but haven't really known how to do them. [00:01:00] Um, but now I feel like it's pretty close to finished, which is an interesting place to be with a, with a project like that.
It feels like most things we work on in software just go on and on and on, and you're always changing and adding things and improving things, but I, I think that that will, that will be the case with Phlex as well. But the core features, like the core things that I want it to do, it now does, and it does them really well. It's pretty well optimized, and so it's kind of just pretty relieving, like a pretty good feeling to just know. This is kind of done and there's still a lot of work to do in Phlex Rails and the compiler and various other like surrounding ecosystem projects. But the main thing I'm pretty happy with, so that's been pretty nice.
Collin: That's cool. Yeah. I saw you were [00:02:00] tweeting about, I saw you were tooting about, um, what was it? Uh, getting a commit into, uh, turbo rails or Turbo something or other.
Joel: Yeah, that's one of them. Uh, I'm, I opened a PR to, uh, turbo Rails, basically adding support for using a Renderable object. So something like a view component component or a Phlex component as the content for your turbo stream. So basically now you can just say like, um, append and then pass the name of your component or pass your component. Um, and that just works like exactly as you'd expect. So it's, so that was pretty good.
I think also it's something that folks like the ViewComponent folks have been wanting for ages. Like there was a, an issue in the view component repo that's been open for absolutely ages about this [00:03:00] and there wasn't really a good solution, and so I just spent some time digging into the Turbo Rails code and found a way to like just add another condition to that, like rendering block and, um, make it work. So that, that was pretty good.
The other two features that I shipped with this release, um, that I've been trying to solve for a while is one of them is to do with the, the capture method. And in Phlex, basically there's this method called Capture, and the idea is that you can pass it a block and whatever it would've output within that block, it just returns that as a but it doesn't actually output anything. So you can say capture and then H one high and it will give you the string H one high, but it won't have put anything out on your buffer. And we've had this feature for a while, but, it only worked with [00:04:00] blocks on the component that you are, that you're actually working on. So basically, What capture would do is it would change the buffer to a temporary buffer that was just a, a mutable string, and then it would, it would yield the block and then it would change it back to the, the real buffer.
And that works really well for content blocks that come from the component that you are on. But it wouldn't work if you were using a content block that was created in a different component and then passed into this component. Because when you yield the block, it doesn't yield on the component that you're, um, capturing it from. It yields back in the original component where you captured the block and it, it kind of works like when you're rendering to do this because both components like A and b share the same buffer, but when you are capturing and you change the buffer for B, it doesn't necessarily change the buffer for a, in fact, like it [00:05:00] didn't. So, um, basically I've had to change it so that instead of temporarily point again, a new string, it makes a copy of the original buffer. Clears the original buffer, yields a block, makes another copy of the buffer, clears it again, pushes the original copy back onto the buffer and then returns a new copy. And it's, it's kind of crazy, but it works. And it means that when you, when you yield the block, it's still using the same exact buffer. It's just being cleared and, and using it for a different purpose. And then when you're done, it kind of puts it all back. I dunno if that makes sense, but.
Collin: Yeah, I think so. Yes.
That makes sense.
Joel: it's, quite hard to explain, but that was like something that I've wanted to ship for ages, but just haven't known how to do it.
The other, the other one was, um, custom attribute pre-processing, which is this idea of being able to hook into, uh, [00:06:00] where we are building HTML attributes from keyword arguments and provide your own custom like behavior there.
And this was really tricky because it's such a performance critical bit of the code it needs to be cached. But obviously if you're defin. Like some custom processing in one class, then you don't want that to use the same cache as a different class, like for your attributes. So then you have to isolate the cache and just isolating the cache in, like various techniques I tried would add like 10% performance cost or something like that.
Um, in, even in the case where you weren't using that isolation. Um, so it would just like ruin performance for everything. Finding a way around that was was good. So I'm pretty happy.
Collin: Those sound like really good features. Um, so the topic for this week that I pitched to you is, I thought we could each pick out [00:07:00] three tools that we really like and then just kind of go through them and talk about them and why we like them. I tried to make mine a little weird, uh, so they were maybe things people haven't heard of as much, and, uh, Maybe we can just start with that.
Collin: So my first one is a text editor called BBEdit. And BBEdit is a Mac native text editor, which has been around since 1992. So this guy, Rich Siegel, who is on the internet, um, made it back then. Originally it was free and then it's. You know, been moved forward. Uh, the code's imported to, you know, updated and things.
I think some of the, like old, old code from like C++, uh, still exist. I think there's a lot of C++ on that app. And what I really love about BBEdit is one, it's, it's insane. This app can do so much. It's a very simple text editor, but it can also do a lot of things. Like, [00:08:00] for example, you can set up.
You can set up a build system where you say like, you know, FTP this to somewhere like upload this static side I made and then have template tags and things in it that call scripts to put stuff into. So you can make like your own little CMS just in this text editor, which is kind of insane. But the reason I really like it is because it handles big files just about better than anything.
And so if I ever have like a multi hundred megabyte log file or something I need to put in and get information out of what BBEdit does really well is, uh, one, it opens it without freezing, which is huge feature, and then number two, it has really, really excellent, uh, regex support so that I can then use that to get out certain things that I need, which I do all the.
Joel: Is this your [00:09:00] like daily driver editor or is this something that you go to specifically when you need like large file support?
Collin: I do use it for a lot of editing. Like sometimes I will just edit, write a script in it. Uh, and then other times I will use it whenever I need to do something with like a regex, which is pretty frequent. So it's always open. It's like my secondary editor, but it is also sometimes my primary editor.
I kind of bounce around a lot. There's certain features it doesn't have. I think, you know, part of being an older app, it did get language server support recently, which is really nice, however, it doesn't do like multiple cursors, which is sometimes something I want, so I'll bounce around. But I do, I, I do use it.
It's kind of my second primary editor. But then the primary one, the main primary one is ki like, it's always changing. Like I'm always bouncing between different things to try them. Where, uh, BBEdit is kind of a [00:10:00] constant.
Joel: I think Sublime Text has kind of filled that spaste for me so far. Like if I, if I need to open a really large file, or at least in the past, um, it's. When I've like, you don't wanna open that in vs. Code or atom or anything.
It's just gonna crash and burn.
Collin: Yeah, sublime text is really good for this too. I think the BBEdit just kinda fits my aesthetic or vibe more.
I think either of those apps works really well for this. I think BBEdit has a little bit better, uh, regex support. Yeah. Which I use a lot.
Joel: Doing regular expressions for like finding and replacing where you're doing like various capture groups and using that in your replace statement, like that's pretty awesome.
Collin: Yeah. I would say, extra bonus tool that I like a lot is people should learn regular expressions cuz it's kind of a superpower if you're good.
Joel: I feel like. More people should learn regular [00:11:00] expressions, like beyond developers, like lawyers should learn regular expressions. The stuff that we do in text editors is just like any, like, there must be so many professions where being able to do those kinds of things, like finer replace with regular expressions and capture groups would just be such a productivity boost.
Collin: Yeah. Lawyers are a good one. I've thought authors before, like somebody writing a hundred thousand word novel, it's
Joel: and they're like, I want to change this character.
No, they, I guess normal, find a replacement word would probably do that.
Collin: Yeah, for sure. But I think there's still like more specific stuff. I don't know. I feel like as programmers, like all we do is deal with text all the time, And so it's sort of crazy to me when I meet a developer who doesn't use or know regular expressions very well because it's, they're not actually that hard to learn the basics of, and anything you don't know, you just look up. Like oftentimes I have to look up if I have to do like a back reference or whatever, like I can, I can't remember that.
Joel: Regular expressions are not too hard to [00:12:00] write. They're pretty hard to read. I find I've, I've often heard them described as like, write, only language in that,
in that they're, they're, they're a lot easier to write than to read. I. Often use this web app called Reg Xer to
write regular expressions. And it's great because you can preview exactly what you're doing and it has right there with it, like in the sidebar, it's got this cheat sheet reference and you can just like try things and see what works.
Collin: BBEdit actually has a feature in it called Pattern Playgrounds, which is basically that within, uh, the editor, which I
Joel: Oh, awesome.
Collin: Yeah, so you can, and you can save them, and then it's really cool. Uh, I've also used an app called Patterns on the Mac a lot for doing the same thing.
which that one's nice because what it will let you do is you can select the regex engine you want, which is like all of them.
And then you can say like, create [00:13:00] Swift code out of this, create Ruby code out of this, and it will kinda just do it for you.
So I don't know. That's kind of a tangent off of, uh, the, the editor, but I think, I think regular expressions are a good tangent to, to go on that I could, we could obviously both say a lot about.
Collin: So Joel, your first thing that you mentioned was, you said, use a non-standard terminal app called Warp, and I've never used this app.
What is it?
Joel: Right. It's a non-stardard terminal app. I don't know a ton about it. I use probably 1% of the features of this app. What I love about it is you get like a normal text input field for one of a better word, so you can use your mouse to click to a specific charact. If you want to make an edit to what you've just typed, or you can press command A to select your entire command and delete it with backspaste or like use [00:14:00] alt and your arrow keys to jump between words, that kind of thing.
It just makes entering commands like so much easier, so I, I love it for that.
Otherwise, it's just, I mean, A terminal. It does what terminals do? It's got it's themeable, it's written in Rust, so it's pretty fast. Um, I think it's got like AI integration, so you can, like, you can ask ChatGPT to help you do some weird thing with Git or whatever.
And, uh, it will help you out. But I, I've never used that feature.
Collin: Yeah, the being able to have a regular input field. I hadn't thought of that until you said it, and I'm like, that sounds amazing. I might check out this app just for that.
Going back, I mentioned that BBEdit has like every feature, one of the features is called Shell Worksheet, which kind of reminds me of what you're saying.
And it's that you can write a text document that is all of your shell commands and then run them from there and it will, uh, output the output [00:15:00] directly into your, into the document so you can then copy and paste it and stuff. Oftentimes when I want to do what you just said, which is like mess around with a command in a few different ways, but I don't wanna have to, you know, but it's kind of annoying to do it just on, in a, the regular terminal app, I will use it for the same reason that you said with Warp, which is just that you can, uh, yeah, you can use your mouse and stuff.
Joel: right? It's so frustrating when you've typed along command and you just wanna delete it, and you can't press like command backspaste or like select all, or even, even like navigate back using alt and arrow keys to the beginning because you forgot to put something at the beginning. Like it just. Makes that kind of thing so much nicer and it's, I
dunno why other terminals don't have this, probably some technical reason that I don't know about, but like, it's just weird to me.
But I'm, I was so happy when I found this that there's a terminal that has a sensible input field.
Collin: [00:16:00] yeah, I'm. Maybe I lose credit for this, but I just use the Apple terminal app. I've used I term before because it has better like themeing support and uh, colors. But what I really like in the. Apple Terminal app is that it will, um, you can mark different lines and then like jump between the marks and say like, copy what was between the last several marks and it will, um, automatically mark each command you make if you want to.
So it, that's, that's kind of a killer feature for me that a lot of the, that I haven't seen these other apps have. So, I'm definitely gonna check out Warp.
Collin: So my second app is one called xScope. Have you ever heard of this app?
Joel: I think I've might have heard of it, but I can't quite remember what it does.
Collin: So this is an app. It's, I think you'll notice a trend with apps I choose, which they are all mac native apps that are made by Mac developers who've been around for a while,
Joel: it, this is an icon Factory app, isn't it?[00:17:00]
Collin: yes. So xScope is an app by the Icon Factory, which is, it does a lot, I don't use all the features of it.
But it's really, it's one of these apps you can use for like seeing the distance and pixels on your screen of different things.
Or you can measure using rulers or you can set up guides so you can make sure things are lined up. It's just really useful for all that kind of stuff that I just find myself doing constantly when things don't look
Joel: Mm-hmm. Yeah, I think I might have used it or something very similar to it when I used to do more design stuff,
Collin: I feel like half of my life is just figuring out why things didn't quite line up the way I wanted them to, or making them the exact number of pixels they're supposed to be apart. I also use it a lot if, um, Basically if I want to copy something from Apple, uh, mostly if I want to be like, I want to make this screen for my app, then I will use it to get the exact measurements of how far away different things [00:18:00] were.
They also made an app, uh, called Twitteriffic, which recently doesn't exist anymore because Twitter doesn't have a API for apps like that anymore. It was one of the apps that got killed, uh, when they did that.
So I would also recommend getting it because that really sucks for those guys that they just lost one of their, you know, primary things that they make and they're really cool company to support.
Joel: Yeah, that wasn't that one of their biggest apps as well.
Their main thing, I dunno what they're focusing on now, but that was pretty crappy,
Collin: I think they're working on some kind of Fediverse thing, but I, they, they've been, they haven't said a lot about
Collin: So your second app was, and I said this was controversial, I thought, which was, you said GitHub desktop. And I would expand that to, and we said we could expand it to basically GUIs in general, but maybe we could start with why you used that one specifically.
Joel: Yes, so I recommend using a [00:19:00] graphical user interface for Git. I think that it is much easier to select specific lines or specific files, uh, and staged. and commit them than it is to do that in the terminal. I use GitHub desktop because it's very simple and it does everything that I need. I think there's, there's like Tower and I think there's another one, I can't remember what it's called.
But yeah, there's, there, there's a bunch of them. And, and you can also, like some text editors have similar features built in.
They're not always the same, but anything that lets you kind of really quickly just look at what's changed in your project and jump between the files that have changed, uh, revert things quickly, and also just like stage specific line numbers. I find that really helpful because I [00:20:00] have a tendency to like just plow ahead and keep doing things, and then I find that I have a bunch of changes that I want to split into multiple commits and do that. I don't wanna do that in the command line personally.
Collin: It's also really easy to use it to like dump lines you don't wanna commit.
Joel: right? Yes,
yes, exactly. You can dump lines you don't wanna commit, but you can also just like, click a line and then shift, click another line, or like hover over a, an entire block and stage that, and it's just so good for that.
Yeah, just don't feel bad about using a GUI for Git like, it's totally cool.
Collin: Yeah, I know you can do all of that stuff on the command line, and I do a lot of it there, but mostly I use the command line for just like writing commits. If I'm just gonna like, get, commit dash am I just wanna commit everything in my current working copy. I use it for that, but if I have to do anything like very [00:21:00] advanced, like rebase or like you said, committing specific lines, like I immediately go to a GUI and I think I, I can't understand any argument that it would be more efficient to do with your keyboard than it would to just be able to click the things you want. Like I, I, I, I don't buy that
Joel: The app has keyboard shortcuts as. Like, you can use your arrow keys and spaste or whatever to, to do everything, but I just find it so much nicer. And you, and like, if you're pairing with someone, it's so easy to add a collaborator in the GUI. I would have to try to remember what the syntax was and like try to remember what their email address is if I was trying to do this in the command line, um, I just find it. It's much.
Collin: Yeah. I think the important thing with Git isn't knowing the specific incantations you have to do on the command line. I think it's knowing the concepts of Git, like what an interactive rease was, what [00:22:00] the uh, like what a bisect is like. I think it's knowing all of those concepts, that's hard. Where the specific things that you type on the terminal, like I don't, I don't think that makes you like any, like more of a, like hardcore programmer or whatever because you, you know, remembered it's dash whatever, flags versus that you clicked it with a mouse. It's, it's knowing how to use Git, that's important.
Joel: Right. I think those features are probably in tower, but I, a lot of those aren't even in GitHub desktop. And I, I would probably go to the command line if I, if I needed to do like a bisect or something. And I, I would have to look up how to do that cuz it's not a tool that I use all the time. Um, or like to do a rebase, like you can often get away with. I mean, so whenever I've had to do a rebase, it's usually because I've got a bunch of commits that are just like, fix, like next, um, a, B, C, like just a bunch of commits [00:23:00] that are just like, now it's working. Is it working now? Um, and I wanna rebase them all into one.
And what I do, there might even be an easier way to do this, is I like to. Reset soft, and I just type that command into the, into the command line,
and then use the GitHub desktop to go through and pick out lines and make my proper formal commits, if that makes sense. Um, I find that's even easier than doing a rebase.
Collin: Yeah, I think we're both on the same page I think just any GUI useful to have. I always have both open, but I also always use one of these apps that isn't in the editor.
I feel like the ones in the editors are like never quite as complete.
Joel: You also can't command tab to. which I really like doing. I, I don't use a terminal in my editor, even though my editor has one, because I love being able to have a different window. I just find that that is easier for me.
Collin: Yeah, same. I don't [00:24:00] use the in app terminals very much either. I know a lot of people do, and I don't know why I'm, I don't, I don't know why we're both weird that way.
Collin: my final pick, and I think this is, uh, this is also one where, I have a specific recommendation, but I think you could pick any one you want, which is an app called Pastebot. I didn't mean to pick this, but it's also by, the people who made Tweetbot, which was another Twitter app that was their primary app that just, uh, stopped existing.
And they have a really good Macedon app now called Ivory, which I recommend. This is an app that every time you copy or paste, it just saves it.
Joel: This is paste bullet, right? Not Ivory.
Collin: Yeah. This is Pastebot. Yeah. This is an app which lets you, every time you copy or paste anything, automatically, it just saves it. And then you can go through and see. You know, and recall those. [00:25:00] So it's really useful for things like creating a command on the command line.
It's really useful for, uh, for code for me where if I'm refactoring something and I'm gonna copy and paste some methods around or whatever, I can do them in different orders and get it the way I want it. And also it's nice because I can't accidentally lose something I didn't want to lose cuz it's saved somewhere.
Joel: sounds great. Like the number of times that I've lost code that I copied. Because I then copied something else right before pasting it, and then I have like this panic when I, when I'm trying to refactor stuff and I copy it and I'm like, must not copy. Must not copy.
So having an app that would keep track of that would be really useful to me.
Collin: Yeah, and I think it's really cheap too. It might be like $15, uh, forever. And yeah, it just completely ramm removes you ever afternoon to worry about that. It'll also let you do something really cool, which is create a [00:26:00]sequential paste queue, is what they call it, which is where if you have. Like a bunch of stuff you wanted to say, paste in a certain order, like a numbered list of things.
You can create a queue of them and then hit the paste command and it will paste them in that order.
Uh, which is maybe a sequential list isn't the best example, but there are many times where this comes up and it's actually really useful. It'll also let you have a key command to run like predefined filters.
So if you wanted to have a Reg X command or whatever, Does some transformation. You do a lot. You can copy it to your pasteboard and then run the filter on it, and then it will do it, and then you can paste it, which is really cool. And it will also save the like pre edited version, so you always have that too.
Collin: Yeah, I just really like the idea of not losing things on accident.
That is not a good feeling.
Collin: And paste Bot is an app that I like and I recommend, and I think it's a popular one, but it's, I think there [00:27:00]are many apps like this. Uh, I'm told, I'm told Windows has something like this built in now.
Joel: I think Alfred probably has it as well,
Collin: there's a lot of apps for this. This is just the one I like the best. Uh, I used to use an app called Launch Bar that did this too. So there, there's lots of apps like this.
Collin: So moving on. Last item that we picked is, I think, a really good one because it's one that a lot of people probably haven't used already, which is the Zed editor.
Joel: Right. Unfortunately, it's still in beta and you probably can't use it right now, but you can definitely get on the waiting list if you wanna check it out. So Zed I, I've used a lot of editors. I think probably most developers have used all the editors and tried to find the right one. And I think that Zed for me is the, Like, like it's, it's best for me right now. Um, I used to use Atom. I really liked [00:28:00] that and I was very disappointed when it went. Um, and then like I went through a bunch of different editors. I tried TextMate again. I tried Sublime Text. I tried VSCode and hated it. I landed on Nova, which was pretty excellent. Um, but there's a few. I don't really love about Nova, like it's language server support isn't great, at least not for Ruby. There's a Ruby plugin that supposedly supports Solargraph but doesn't really properly support Solargraph.
Collin: I've had that same experience with Nova before. I kind of wish they just had more language servers built in, like where it was automatically set up. Uh, cuz there's other editors that do that, like Zed I didn't have to do anything. It just worked. I find that that is also a complaint I've had where it feels like it has trouble figuring out with a version manager, like where things are or what it should be calling, and it will, the language servers oftentimes will not work, but when they do, it's great.
Joel: Yeah. When they do, it's [00:29:00] great. Um, I do, I do love that editor and I recommend it. It's got some pretty great features, but the, the editor that I'm using now, uh, is pretty interesting. So I think it has come from the same folks that worked on Atom. Is that right?
Collin: Mm-hmm. , that's what I, I think I read
Joel: Um, and, but it's, it's not written in Electron.
It's a completely native rust application. Uh, it's really fast and it just has a ton of features, but most importantly it has really good. Uh, Ruby's support because they inter, they, um, connect to solo graph, the language server, and it's just really great. Uh, there's a ton of features that work with the language server, like auto complete jumping, two symbols, uh, showing a, a list of symbols on the current file that you're looking at. And I just, I use those literally all the time, or like command clicking on. [00:30:00] Constant to jump to its definition or command clicky on a method to jump to its definition, that kind of thing. It's just, I know you can get this with Ruby Mine, but Zed is very lightweight, very fast, very snappy, and it's just, it's also beautiful.
It's really, really nice design, really minimal. It's just perfect for me.
Collin: I said, I don't use the in editor terminals that much, but when I do, I don't like how the default in something like VS code is to pop it up from the bottom. It's kind of its own little world I like where it just creates a new tab out of it and Nova and Zed both do that, which I really like.
It also reminds me of Sublime Text a lot because they were also so focused on performance. Like that was one of their big selling points. So it kind of reminds me of both of those editors.
Joel: I, wonder how it would perform with really large files. I don't know.
Collin: Yeah, I would have to test that. I haven't used it as much as you, but, I, I did like [00:31:00] that the language server stuff just worked when I turned it on. I didn't have to configure anything for it to figure that out, which was great because I was even in VS code, which it was like made for.
I find that the language server will break sometimes I won't know why.
Joel: have you ever used multi cursor?
Joel: I use that all the time, and Zed has excellent support for that. But it has something that I hadn't seen before, which is if you do a project wide search, the result. But you can actually trigger multi cursor editing from that view. So you can have multiple cursors in multiple files and you can do the exact same kind of multi cursor editing that you would normally do, but across all of the files in your search results. And
I use that a bunch as well. That's really useful.
Collin: Yeah, I find that multi cursor editing ends up being a lot of the before that existed, it's the same things I would've usually written a red regex to do, and [00:32:00] sometimes if it's something simple that's just like so much easier. Most apps have that now. BBEdit doesn't pretty much like, seems like even TextMate has it now, like pretty much all of them.
I have to say that it does please me as a Mac developer and someone who like loves the Mac, it's my favorite platform. If you ask me tomorrow, if you were like, you can give up your Mac or you have to use Android, like, you either have to use Windows or Android. Part of this might be that I haven't used Android very much and I, I had a game.
I bought a gaming PC a while back. I hated it because I would boot Windows. People tell you, I am so goddamn tired of people gaslighting me. Every time there's a new version of Windows telling me, no, it's actually good now. It's like, fine, it's great. Uh, and then I, I, I try it and it's exactly as bad as it's ever been.
It's just, uh, cuz I'll like turn it on, haven't changed anything. Just reboot it and like, sound doesn't work now or something. [00:33:00] Um, So part of it might be that, but I think most of it is I really love the Mac. I think if you ask me Mac or iPhone, you have to give up one. I wouldn't love either, but I think it'd be the, I think it'd be the iPhone, like in a, in a heartbeat.
So as a developer and someone who loves the platform that much. I really love that. Zed has a native UI, so I think the core app is Rust and then they're doing a native UI for all platforms, which I think is why it's only launching on Mac now. And then they're like, we're gonna do more platforms.
Like it does mean they have to do that work. For me at least, it's worth it because I do not prefer using Electron apps. I think they're, especially for an editor, I just, I'm very sensitive to like delays in things like that in text editing especially. And it's just always not as good. And I think it's funny that it's the people who wrote Atom.
Which is also like what Electron was [00:34:00] created for originally.
Joel: It, and it is like really, really high quality.
It's still a beta and so it's still missing a few things. Like it doesn't have like respect for editor configs, for example, which is a bit frustrating.
Um, it doesn't have like options to remove trailing spastes or like add a new line at the end of the file when you save though, I think they're working on adding like, well, there's formatter support.
They just don't have a formatter for Ruby. But, but that might be able to do that soon. Um, and it also,
like you can do multi cursor editing, but one thing I use all the time in, in Nova is multi cursor editing. And I'll select a bunch of things and then I'll use a command like capitalize, right? Or down case and underscore. And it will happen across like all of the selections. So it doesn't have those kinds of things either. And it, and there's no way to make plugins.
Collin: I mean these all seem like the [00:35:00] sort of features you would say for later in development because they're probably not that hard to add once you've got like your editing engine sort of complete and working well.
Joel: And their editing engine is excellent. And it's all based on CRDTs. So, you can also do live collaboration with people.
Like every, every buffer is a CRDT, and it's like Google Docs text editor, which is pretty cool.
I, I used it the other day and it worked great, but, I ended up wanting to jump to a terminal or like a browser outside of it, and I just find that for me, pairing, um, I much prefer to pair it on tuple or something that just shares the whole screen
so I can like, point out something on a browser, in a browser window or whatever. And then like jump back to the code. Uh, but as far as like actual text editing, like sharing experiences go, it's like excellent. [00:36:00] They've done a great job of that and it's been totally bug free, which is, I guess to be expected given that it's written rust.
Collin: I mean, I think you can still write bugs and rust, but there's certain categories of bugs that are harder to write and rust. Um, for sure. I think like memory errors are very difficult, but, uh, so you probably won't see those kind of crashes. I think those are all great choices, uh, as well.
Collin: Any final thoughts, bonus tools?
Joel: Not really. No. I can't, I can't really think of anything.
Collin: I would just recommend again. Having, I don't think it matters what editor use, but I think having something that has really good regex support is that you can just have open all the time is a really great tool.
Joel: The basics of regex. So just so brilliant and you can, you can learn the basics probably in about 10 minutes if you just go
to Regexr and like look at the cheat sheet and just try to select some stuff. Like try to select all the letters and then all the numbers [00:37:00] and then like maybe three of those or something and like just experiment and you can just do it live and see what happens.
And it's pretty cool. I think we should definitely include Regexr in the, in the show notes.
Collin: Yeah, for sure. Um, well, Joel thanks as always for doing this with me and, I guess we will see everyone in two weeks.
Joel: of weeks.