The Changelog: Software Development, Open Source
We ain't afraid of no Ghostty! (Interview)
Wed, 18 Dec 2024
Mitchell Hashimoto joins the show to discuss Ghostty, the newest terminal in town. Mitchell co-founded HashiCorp, took it all the way to IPO, exited in 2023—and now he's working on a terminal emulator called Ghostty. Ghostty is set to 1.0 this month, so we sat down to talk through all the details.
Well, friends, it's the last interview show of the year, and it's a good one. For those who are new, we feature the hackers, the leaders, and those reinventing the terminal. Yes, today we're joined by Mitchell Hashimoto. Mitchell co-founded HashiCorp, took it all the way to IPO, exited in 2023, and now he's working on a terminal emulator called Ghosty.
Ghosty is set to 1.0 this month, so we sit down with him and talk through all the details. A very big thank you to our friends and our partners over at Fly. Yes, Fly is the home of changelog.com. It is the public cloud for developers like us, like you, who ship. And you can learn more at fly.io. Okay, let's go, Steve. What's up, nerds? I'm here with Kurt Mackey, co-founder and CEO of Fly.
You know we love Fly. So, Kurt, I want to talk to you about the magic of the cloud. You have thoughts on this, right?
Right. I think it's valuable to understand the magic behind the cloud because you can build better features for users, basically, if you understand that. You can do a lot of stuff, particularly now that people are doing LLM stuff, but you can do a lot of stuff if you get that and can be creative with it.
So when you say clouds aren't magic because you're building a public cloud for developers and you go on to explain exactly how it works, what does that mean to you?
In some ways, it means these all came from somewhere. Like there was a simpler time before clouds where we'd get a server at Rackshack and we'd SSH or Telnet into it even and put files somewhere and run the web servers ourselves to serve them up to users. Clouds are not magic on top of that.
They're just more complicated ways of doing those same things in a way that meets the needs of a lot of people instead of just one. One of the things I think that people miss out on, and a lot of this is actually because AWS and GCP have created such big black box abstractions. Like Lambda is really black boxy. You can't like pick apart Lambda and see how it works from the outside.
You have to sort of just use what's there. But the reality is like Lambda is not all that complicated. It's just a modern way to launch little VMs and serve some requests from them and let them like kind of pause and resume and free up like physical compute time.
The interesting thing about understanding how clouds work is it lets you build kind of features for your users you never would expect it. And our canonical version of this for us is that like when we looked at how we wanted to isolate user code, we decided to just expose this machines concept, which is a much lower level abstraction of Lambda that you could use to build Lambda on top of.
And what machines are is just these VMs. that are designed to start really fast or designed to stop and then restart really fast or designed to suspend sort of like your laptop does when it closes and resume really fast when you tell them to. And what we found is that giving people those primitive is actually there's like new apps being built that couldn't be built before.
specifically because we went so low level and made such a minimal abstraction on top of generally like Linux kernel features. A lot of our platform is actually just exposing a nice UX around Linux kernel features, which I think is kind of interesting. But like you still need to understand what they're doing to get the most use out of them.
Very cool. Okay, so experience the magic of Fly and get told the secrets of Fly because that's what they want you to do. They want to share all the secrets behind the magic of the Fly cloud, the cloud for productive developers, the cloud for developers who ship. Learn more and get started for free at fly.io. Again, fly.io.
We're here with Mitchell Hashimoto. Mitchell, it's been literally forever in literally sense how Adam says it, literally. Not how I use it, but how he uses it. Literally forever. Welcome back, man. Welcome to the show.
Thank you. Yeah, it's been 10 years since the last show. And then the first time, the only other time I was on, I think it's been like 13, 14 years. It's wild.
I still remember the day that you posted Vagrant onto Hacker News, I think, the first time. I remember that day.
That was 2007. 10. I don't know, but yeah. Wow.
I don't know that. I don't know which day it is either, but yeah, I remember that. Cause I was like, Oh, this solves one of my problems I have in life. And I was very excited as was the rest of us. Right. I mean, vagrant was a huge hit right away. Thank you. Thank you so much. But nowadays ghosty, is that how you say it? Ghosty or is it ghost TTY?
No, I say ghosty. I say ghosty.
That's the first controversy I had in my head because I was calling it ghost TTY. And then I was like, I bet people just say this ghosty. What do you think, Adam?
Yeah, I would say ghosty, but I can see why you would say ghost TTY, but that would just, it's like HTTP. Like why complicate things? Well, I have trouble because I speak faster than, I have to slow down to say HTTP. I have to be very intentional to get it right. Otherwise I'm like, it's not good. So why would I say ghost TTY?
For the uninitiated ghost, these Mitchell's new project, it is a terminal terminal emulator. I don't know what the technical term is. Mitchell, I'm sure, you know, every little detail. Terminal emulator, terminal, what is it?
If you want to be pedantic, terminal emulator, but you really don't have to be. I think to most people, terminal would make the most sense. Yeah.
Why a terminal man? Reinventing the wheel, so to speak.
That's usually the first thing I get asked. Yeah, I mean, I think... I think the important thing to know is I didn't set out a couple of things. I guess I didn't set out like knowing I wanted to work on a terminal emulator. And second, even when I decided, Hey, I want to work on this. I didn't think anyone would actually care.
Uh, but the why really goes back to, I wanted to post HashiCorp sort of get back into different categories of programming that I hadn't had the time to work in and felt a little rusty. And, uh,
no pun intended and um i you know for me that meant you know non-infrastructure non-server side you know desktop side software using a gpu something i never used you know while we're at hush corp at least not too much graphics programming you know just everything the polar opposite of what you could think of what i've been doing i wanted to get back and play around with it and
I poked around at a few things, but felt that a terminal emulator was a good combination of those things I wanted to play around with. And as I sort of spent more time doing that, recognized, hey, I think terminal emulators can actually be a lot better. And I think there's like an opportunity here to do something that people really love. And that turned into a much more serious thing, I guess.
The terminal's been played with a little bit recently. You've got Warp. I believe there's Wave. Those are like the two most recent attempts at a terminal of the future, so to speak. You've obviously got Terminal.app, which I watched briefly some of your talk, and you scoffed at the speed of Terminal, Mitchell.
It's not even the speed. I'm not a big fan of the built-in one, but yeah. Gotcha. Yeah, I mean, I think that one thing I've always said about terminals is that I think if you compare them conceptually to a web browser, then it starts to make a lot more sense about why I care about terminals.
And what I mean by that is the web browser has for better or worse, just, I don't think it's controversial to say that it's one sort of the graphical interface ecosystem of the world.
Like if someone's building a graphical interface today, nine out of 10 times, probably more than nine out of 10 times, they're using a web technology, whether it's actually in the browser or electron or whatever it is. And, I think there's still a good place for text-based interfaces. And the terminal has always been the place for text-based interfaces.
And sometimes the terminal lives in a browser, you know, if you're using like a web-based text editor and stuff. But I think that if you look at web browsers, they get hundreds, maybe like a couple hundred if you're being conservative, new features and innovations every year. And if you look at a terminal, they get I don't know, keep probably count on a couple of hands, how many they get per year.
And I just don't think it's a very exciting, innovative platform for developers. And I, I just sort of wondering like what happens if you do make it exciting, like, or does it become exciting? I don't know. And, and to me, the worst case, if it doesn't become exciting is we still use terminals every day. So at the very least, I think you've built a better terminal. So.
Well, two tools that I use every day as a working developer is a browser and a terminal. And all of us on this call have been around the block a couple of times. I mean, many people listening weren't there in 2010 when you first released Vagrant on Hacker News. And yet, terminal is still adopted newly to this day by new technologists all around the world. And so it's not going anywhere.
But I also... I have just been kind of happy with the way it works. I mean, I'm kind of set in my ways. And so I wasn't looking for ghosty necessarily, but having tried it out, it sure is a nice terminal and you're, you're just getting to 1.0. So I know you've been working on it for a while. Yeah. Where did you start and how did you set out? I mean, you have to kind of stake your claim.
Like this terminal is going to be different than terminal.app for instance, in these ways. Yeah. Yeah. What were your initial goals?
Yeah. So what I like to say, especially for the 1.0 release, what I'm trying to do is build a terminal that is the best, what I call existing terminal. I'm not trying to innovate too much on what a terminal can do. I'm just trying to make what terminals historically have done a very, very good experience.
And the way I'm sort of carving out what makes Ghosty different for now and what, if any of these are important to you, I think you would find a lot of joy in using Ghosty is I'm trying to build something that's fast and cross-platform and fast.
native and the ands in there are important because there's a lot of terminals out there that are fast or, or native or, or cross platform or, but there's, I felt that I couldn't find one that anded all three of those properties. And Ghosty does that, in my opinion. I mean, that's what I set out to do. And so it's fast. And when I say fast, I'm not trying to say it's the fastest.
Depending on the benchmark, sometimes it's the fastest. Sometimes it's number two. But importantly, it's very, very close to the fastest. And I don't think you could ever argue it's not fast to say that. Cross-platform, it works for launch. It'll work on Mac and Linux. And native on Mac, it's a native Mac application using Swift UI. The UI is written in Swift on Linux.
There's no real definition of native, but it's a GTK based application. And it'll feel, you know, the way I describe it on Linux is if you use Alacrity or Kitty or West term or something, you'll immediately notice the difference between that and ghosty in terms of how it integrates with your desktop environment.
How do terminal folks define fast? Is it input lag?
That's a great question because actually when people say this terminal or that terminal is fast or slow, it actually really frustrates me because it's so complicated how you define that because fast doesn't mean anything if you just say fast, unless you're saying in every category possible, which no terminal is. And so, yeah, there's a few ways people tend to define fast.
One of the ways is simply how fast it could read data. files, how fast text can go through your terminal. Some people say that's a useless metric. I think it's super important because tailing logs or accidentally catting a file is stuff we do all the time. And another one is something we call input latency.
Basically, when you press a letter on your keyboard, how long it takes for the photons to appear on the screen. Another one is sort of rendering speed. What frame rate can you maintain while you're, say, scrolling through a Vim file or something? And that's slightly different from the speed it can read. And there's a couple more, but there's so many different dimensions here to speed.
And we've tried to really be, like I said, not necessarily the best, but in the inarguable class of the best for every one of these categories.
What is it that you do to make it fast? Like, where does that begin? When you consider speed and the different paradigms you can consider, what are the permutations of that?
Yeah, there's, again, because there's so many dimensions to speed, there's also dimensions to how you do it. And one of the ways is being a native application, taking advantage of things that are hard to take advantage if you're not. So, for example, we spent a lot of time coming down to really the instruction level architecture of the program.
And if you're on a Mac computer, a new Apple Silicon Mac computer, we take advantage of literal ARM instructions that aren't available elsewhere to make things faster. Likewise on Intel, I'm talking mostly about SIMD work to make things read speeds and parsing speeds very fast. But from the rendering side, we use Metal directly on macOS. We use OpenGL on Linux.
The Metal part is really important on macOS because there's very, very few terminals that use Metal. iTerm supports Metal, but disables it if you use ligatures, for example. I think that I don't, It's either number one or number two. I think Ghosty is the only terminal that has a pure metal renderer that also supports ligatures.
And that's just important because by using OpenGL on metal, there is an overhead because Apple does not natively support OpenGL. So what it's doing is translating that to metal. So there is an overhead. And you can actually notice that if you do renderer speeds between Alacrity and Ghosty, you get about a 10% frame rate.
difference on the same workload with Ghosty under basic load, not even heavy load. And so those are just a couple examples of the things that we're looking into.
I love this idea of the terminals of browser. We kind of touched on this a bit with like two E's before and the text-based interfaces and just the E's of that. So obviously version one is really getting the terminal as it is that goes out there. That version one is out there. Drop-in replacement, right?
Right. I do want to put an asterisk on that though. It's the terminal as it is, but supporting all of the most modern features that have been created And I think that, you know, my bias, but Ghosty is the most feature rich in terms of terminal specifications that, you know, in terms of Kitty image protocol that Kitty defined and some other things that are all over.
And we could talk about that later. But even though it's the best existing, I think we bring together all of the most modern things as well.
What I was trying to drive towards was this idea of the terminal as a platform. It's been there. It's been a tool. As Jared said, it's a daily driver for me, for him, and for many other developers out there. But it's not always the platform for which you do things. Vim is a thing, obviously. You've got many of the tools you use on a daily, but I'm thinking like HTOP, stuff like that.
In terms of this platform, this 2E platform, are you thinking beyond version 1 as... uh maybe more native ways to do twoies kind of thing what are your thoughts on beyond this this realm
Yeah. I mean, I think that's exactly right. That's the way I would look at it. The question I've asked people is when they're not using a terminal for something, especially if it's something that's very terminal-esque. So for example, the people I like talking to the most right now are people that use something like MacVim or NeoVim in a separate native application or something like that.
I usually ask them, why aren't you using Vim in a terminal? What's they're so close, so why aren't you doing that? And even going further then, I will ask people that simply use VS Code or a total non-editor, I mean, anything, what draws you to using a graphical interface over a terminal one? And right now, that answer is really easy in a lot of cases.
There's really obvious reasons why the terminal version is inferior. And my goal is to look into how to improve that. So concretely, for example, one of the things that brought up with Vim is that in the terminal version, you can't drag and drop things like images or even things like files to a certain extent. You can't just drag a file into Vim and have it open a new tab.
Going a little bit further, if you write
click in vim in the native app you'll get a native context menu and if you right click in the terminal you get this like kind of funky block character drawn one and that doesn't feel great in the native m you could have native tabs and so one of the things i'm actually looking into is how can you get a terminal program to be able to use native tab widgets even though it's driven by one program but it's showing up as multiple distinct tabs that you could pull out into separate windows and stuff like that
And I think even, you know, one of the more extreme ideas I have is that a community member brought up is like, what if you actually had also had a browser, which, which seems weird, because I'm painting them as a dichotomy, but I don't think they're necessarily dichotomy. The argument was,
If you're browsing documentation, which is often in HTML, right now you have to do a link that opens in a browser in the same way that you could just draw text in a browser.
What if you could just embed a browser widget into part of your terminal UI so that the documentation part just is, that happens to just be normal browser technology without, so you could like live in this sort of platform for reasonable overlap, right? I'm not trying to replace the browser, but just for a reasonable amount. If you're,
Yeah, if you're like opening a PDF, like why does the PDF have to open in a separate thing? It opens directly in the browser. Why can't a PDF open directly in a terminal? Stuff like that.
I think anytime you eject to do something, it's at least worth asking the question like, Why does that have to happen?
Exactly. And I don't think it's like why and then I don't think every answer is we have to make that work in a terminal. I just like I think the knowledge of knowing why and being critical about if you can maybe extend the point at which you have to eject is a useful thought exercise.
So Ghosty passed my sniff test immediately because there was two things I wanted. And the first one was TMUX. So I was like, okay, can I drive this daily? And I've only been on it for a couple of days. So I probably, there's probably warts and road bumps that I haven't quite hit yet. And I'll let you know next week. But so far it's like, can I run TMUX? Yes. Okay. Do I have to sign in to use it?
No. Okay. I'm good to go. But Tmux is a weird thing because, you know, I've been using it for years, but really it's kind of a hack, like a terminal multiplexer. Like you think extending and making the terminal better, like shouldn't that kind of functionality be part of terminals? I don't know. Your thoughts on that?
I think so. So there are terminal people out there that I don't need to shame, but they are like sort of militant about disliking multiplexers. I'm not that person. If you want to use a terminal multiplexer and ghosty, I want to make it work. However, I do think that terminal multiplexers make the terminal experience worse, but but there's no better option right now.
So it makes sense that you're using them. So the reason I think a lot of people don't think about this is a terminal multiplexer is itself a full-fledged terminal where its UI is just text that's going to another graphical terminal. Like you're running multiple levels of terminals.
And one of the first places that causes issues is there's features that Ghosty supports that because something like Tmux doesn't support, you no longer get. And a good example is... Yeah, a great example is the graphics protocols. Like, we support graphics protocols. Tmux doesn't. You just lost that because the terminal within the terminal has to understand first.
And since it doesn't understand, it throws it away. And so... If we could get rid of that, then yeah. And one of the things I am thinking is the ability.
My dream is with things like Tailscale out there and making it so easy to do networking, private networking, I want to be able to run basically like a ghosty host instance on my home computer, run it against your Tailscale network, and then anywhere you go, reopen, reconnect, and it's your same sessions like Tmux. But instead of just the text, it's actually like,
all your old windows and splits natively perfect, the same size pop back up.
Get out of here.
And you could close all of them and it's all good because it's all remote. And it's, and like, you know, you own all your data. It's just running on your own machine. It's a tail scale, all that stuff. Like that is something I'm actively trying to do right now.
And Tmux would just be dead to me. It would just be dead to me, you know, get out of here Tmux.
Yeah, yeah. I think the people behind Tmux and Zellege and stuff are great, but I think that philosophically I would love to see them disappear. Not the people.
Not in reality, but philosophically. Not the people, but the software, yes. Rendered obsolete might be the better phrase. Render it obsolete. I agree with that sentiment because I think – and I haven't had this conversation with them, but to their credit, they probably are operating in a world they have to operate in.
You've chosen to go a different route, which is to innovate on the thing itself to make it a platform versus obfuscate it into something by brute force basically.
Yeah, yeah. And if I could get a little bit more nitty gritty, one of the things that I think Ghosty, obviously, the way I've talked about the way we focused on it has been the application.
But I think long term, what Ghosty actually becomes is what I what I call lib Ghosty, which I'm really trying to build this cross platform artifact, this library that you could build terminal emulator applications on top of. So you don't have to reinvent the core of understanding Ghosty.
all of the the terminal stuff you could just focus on sort of the ui part and that's not theoretical that's how the mac goes that's how both ghosty apps work they have a platform specific ui that shares a common core and that common core is actually a c library i'm not ready to ship that as like a 1.0 yet the actual core c library but
Because the UI is pluggable, the community, we've already talked about, there should be a multiplexer like Tmux where the core is just libghosty and you just focus then on the stuff above it. And if you start doing that, we could do some sneaky things too where if libghosty detects that it's running within ghosty, it could just stop.
It could just pass through and you no longer pay for that anymore. But then... Um, the benefit of lib ghost existing for other terminals is you could get all the modern features that ghosty has without every developer having to reinvent that.
So I guess I'm, the point being is I'm trying to come at this multiplexer problem from different angles because, because I think it would take time for them to truly be obsolete. Um, yeah.
You keep saying cross platform. How important is windows in a cross platform world? Um, or in your world?
In my personal world, it's not super important. But in the world of software, it's hugely important. And I could go back to Vagrant for this one. I mean, when I really focused in, I actually, one thing I did back, probably the year after we talked, back in 2013, is I bought a Windows PC, a ThinkPad, and I used Windows full-time for a year.
And that was because I really wanted to empathize with what the problems were with Vagrant on Windows. I didn't want to just get it working
in a couple hours one evening and go away i really wanted to like live in that ecosystem and understand and windows got a lot better i made installers things like that and the end result was that the vagrant growth was absurdly huge because the windows software development ecosystem is extremely large and they have a lot of paper cuts that they're dealing with and so i think the same thing with terminals i think that it's really important
It's hard enough for sort of me as an individual to do Linux and Mac sort of as a side project. So Windows didn't make it for 1.0, but it's something I really want to do for future releases.
I ask that because invariably somebody out there is thinking like, he keeps saying cross-platform, but us Windows folks don't get any love. And so... Yet.
Yet, yet, yet.
Happy to hear that there is importance there.
Yeah, yeah. And it's like, some people have got it working through WSL and... You can run Ghosty on Windows through that. I just say it doesn't work because to me, the Ghosty experience means that you're getting a truly native build, and we don't have that for Windows yet.
It seems to me like building something to work well on a platform that you don't personally use is like jobby job kind of stuff. Ghosty is a passion project, something that you want to have fun doing professionally. I think we'll get into some of the technical philanthropy conversation later on in the show. I'd like to at least hear your thoughts on that more. For sure.
But what's your, I mean, do you, I guess, what's your ambitions with Ghosty? Because you don't need to turn this into a business or anything. And so do you want to be building in Windows support when you don't have to?
So my, yeah, I think the important part of the ambition point is that it's not,
financial the ambition behind ghosty is really terminals are a really fundamental part of a software developer's life no matter what sort of ecosystem you're in whether it's web technologies desktop you know etc whether you're a student a professional basically all these dimensions terminals are very important and i don't see that going away and i sort of think like what
I don't feel like people have focused very hard on terminals. And can I sort of be that person for a while, the steward for a while, improve the ecosystem in some way, and sort of build a community that could then sort of carry that on later? But yeah, the real, I guess, to put it into one word, the real goal with Ghosty is impact. And to that end, I think that Windows support's important.
But more importantly, that's why libghosty is more important to me because I don't want ghosty to be the one and only terminal emulator application. I don't want to build an iOS application, an Android application, whatever future platforms exist. I want to enable others to do that without having to reinvent the core.
And so libghosty to me is like the actual impactful thing that's going to happen over the long term. And we could...
get into licensing later, but that's sort of part of the reason why we ended up on the MIT license as well as I really just wanted, whether you're going to be commercial or open source or whatever, whatever you wanted to do with lib ghost C, I really just wanted to enable that impact no matter what.
I'm just reminded of Daniel Stenberg with curl, you know, lib curl is the reason why curl is not to curl the command line, but curl the thing is everywhere. It's because of lib curl more than it is because of the binary curl, although they're both used a lot. But, I mean, huge impact with lib curl.
Yeah, it's a great example.
I'm glad it doesn't have to be a business. I was worried. I was like, what is the, you know, do you want to build another HashiCorp here? But probably not with this. And I think it's, to zoom out a little bit, I think it's kind of,
cool of you I suppose to you know some would say well you don't have to do anything Mitchell you can just go and fly as you do right you don't have to satiate any of these technical chops you have or you want to play around in areas you've never had a chance to play around you can just simply just go and do something else but instead you're steeping yourself in an area where you really haven't had a chance to do so and it will be impactful I think the Wikipedia of the future for you will be so cool because you could have had
just walk away, do your thing, family, whatever. And congratulations on the recent addition to your family, of course, but you don't have to do this. You want to do this. I mean, it's to me, that's cool.
Thanks. Thanks. Yeah. I, you know, I don't, whatever people write on Wikipedia, if there is anybody, anything then, then fine. But I think that, you know, part of the way I've described ghosty is this idea of, of technical philanthropy.
And, and one of the things I know about myself is, you know, like I just love programming and I love building and I knew that wasn't going to stop no matter sort of how much career success I had or, or things like that. And so, my thinking was, if I'm going to spend time on the computer programming anyway, is there a way to make that time meaningful?
And, you know, I'm sure there's more directly meaningful ways that I could spend that time. But, you know, I felt that
doing this broadly used category of software for free and and trying to make it good i guess for for a blunt term just good is yeah could be meaningful and so that's that's yeah it's definitely a part-time thing i don't spend 40 hours a week i spend barely maybe 10 or 15 on this and it's just the the way i could have fun and pursue my passion but still feel like i'm helping something
Well, friends, this is the last chance you have to get the 8Sleep Pod 4 Ultra in your hands in your bedroom before Christmas. Go to 8sleep.com slash changelog and use the code changelog if you need to to get $350 off your very own Pod 4 Ultra. I've never had better sleep. I love this thing. I sleep on it every single night. My wife and I, we absolutely love what it does for our sleep.
So what exactly is the pod? Imagine a high tech mattress cover that you can easily add to any bed. This isn't just any cover, though. It's packed with sensors, heating and cooling elements. It's all controlled by sophisticated algorithms. And it's all designed to give you better sleep.
It's like having a sleep lab, a smart thermostat, and a personal sleep coach all rolled into a single device and no wearables required. It uses a network of sensors to track a wide variety of biometrics while you sleep, sleep stages, heart rate variability, that's so important, respiratory rate, temperature, and so much more. The best part, it does all this without you having to wear any devices.
Again, no wearables required. And the accuracy rivals what you would get in a professional sleep lab. The pod uses precision temperature control to regulate your body's sleep cycles. It can cool you down to a chilly 55 degrees Fahrenheit or warm you up to 110 Fahrenheit. And it does this separately for each side of the bed.
This means that you and your partner can each have your own ideal sleep temperature going on. And the really, really cool part is the pod uses AI and machine learning to learn how you sleep, to learn your sleep patterns over time.
And it uses this data to automatically adjust the temperature of your bed throughout the night to fine tune how you sleep, to give you more REM sleep, to give you deeper sleep. And that's the part I love most. And all this functionality is accessible through their awesome mobile app. You get detailed sleep analytics, trends over time, and even a daily sleep fitness score.
Again, go to 8sleep.com slash changelog. Use our code changelog. Get $350 off your very own Pod 4 Ultra. Do it now. Sleep well for Christmas. Again, 8sleep.com slash changelog. and also by our friends over at Wix. I've got just 30 seconds to tell you about Wix Studio, the web platform for freelancers, agencies, and enterprises. So here are a few things you can do in 30 seconds or less on Studio.
Number one. Integrate, extend, and write custom scripts in a VS Code-based IDE. Two, leverage zero setup dev, test, and production environments. Three, ship faster with an AI code assistant. And four, work with Wix headless APIs on any tech stack. Wix Studio is for devs who build websites, sell apps, go headless, or manage clients. Well, my time is up, but the list keeps going on.
Step into Wix Studio and see for yourself. Go to wix.com slash studio. Once again, wix.com slash studio. Who's the we behind, Ghosty? I know that you are the, obviously, the inceptor of it, but who else? There's a community. How have you leveled up? Who's involved? Roles, responsibilities?
I have to say, I didn't get or somehow miss the email that you invited me personally and Jared, I'm sure, too, into this beta. I went into the Discord like any other community member.
Oh, you did? Yeah.
I did. I got you in there, dude. I gave him your handle. Well, I had to, I had to prove the tragic that I was me and that I wasn't just somebody saying, Hey, I'm going to podcast with Mitchell in like 30 minutes. Can you please give me the, I was like, gosh, I haven't installed this thing yet. I should play with it. And, uh, I was like, I, I just gapped getting that invite somehow.
Cause my GitHub is connected to my personal email, not change those email for some reason. And I don't check that as frequently as I do business stuff. So I really should change that.
But anyways, uh, So there is a discord. There's people in there that aren't Mitchell. They're doing things.
Yeah. The discord is, I don't know what it is now, but it's somewhere between 20 and 30,000 people. And, uh, That's way too many people. And so there's been a good volunteer community of moderators that work really hard because it's also somewhat of a chaotic experience having 30,000 people in one text channel. And so they work really hard and do a great job and not just contribute on that.
A couple of the moderators maintain the Discord bot that is used for a variety of things. In addition to that, there's been a couple hundred moderators
code contributors to go see already and the thing that stood out to me the most about that was I went back and listened to our 2012 vagrant changelog episode a week ago since I was like I wonder what I was doing back then that really threw me back and The first thing I noticed is we were talking about how Vagrant passed something like some number of stars.
But I remember it had just passed something like 100 contributors. And it was already two years old and pretty popular by the time we were talking. And we're talking about how I was so amazed by that. And I was thinking, wow, the software developer ecosystem has gotten so much bigger. Obviously, due to some of my background, it attracts more people. But
Ghostie in private beta has more stars and almost double the contributors that Vagrant had after two years of being a public project. And so that was kind of like a mind-blowing thing. But that's, yeah, it's sort of built. The we is really the community in terms of people that are working, I guess, like even multiple hours a week on this. It's probably just me, but yeah.
Just to close the loop, I have to share the levels of which I had to... Ensure. Tragic that I was me. Driver's license? This is a DM in Discord.
Hey. There's a funny detail to that, I think, is that I thought for sure when I started working on a terminal more seriously that very few people, first of all, would care. But of those very few that cared, I thought that demographically it would skew to a more mature audience. Hmm. But what I've discovered is that a lot more people care about terminal aspect.
And predominantly of those people, it is young people. When I say young people, I literally mean teenagers in school, a lot of teenagers in school up to, early twenties, early career type people. And because of that, there's some shenanigans, I will say within the discord. And so the monitor and the moderators are very sensitive.
There's been a lot of scams, a lot of phishing, a lot of stuff, just people just trying to get into the beta. And it's not that important, but you know, I think when you're younger, you're a little more zealous about these things. And so, and so the moderators I think are very,
hardened to when someone comes and says oh i i know mitchell i need the beta that they're very suspicious so yeah yeah i was like i'm about to plot with mitchell can somebody help me get in the beta please and so i ended up in dm with tragic and he says hey can i get some kind of confirmation here that you're not impersonating anyone felt random if we're actually about to talk to mitchell lol yeah and so i was like okay i opened up the calendar app and screenshot of the calendar
invite on my calendar that says we're about to talk. And he's like, hmm, not good enough. Really? Basically. I mean, he did the thinking emoji. He was like, just to be 100% sure, can you follow me on GitHub for like 20 seconds and then unfollow me? Sorry for being excessive. And so I followed Tragic for, and I'm still following him. I'll just go ahead and leave it. No big deal. That's great.
That's hilarious. So I had to go through a couple of hoops. It's a real insider's club. The hoops will all disappear soon. Well, once I got into GitHub, it said you had the invite there. So I was like, once I was actually there, it was like, hey, by the way, GitHub is telling me this. Mitchell invited you last week. You're an idiot. You didn't have to do all this. Yeah.
There you go. I'm surprised you didn't get banned, honestly. Like usually those types of things pop up and there's sort of like, because there's like 10 moderators or less, I think there's like seven moderators and 25,000 people. Most of the time when stuff like that starts happening, moderators are just like, I don't have time for this. And they just ban you from the server.
Well, he didn't. They were very nice. Tragic was nice. And that's the loop closed. But the question to get to this point was really, Who's behind Ghosty? I mean, obviously you started it. What's the plan for community? Do you have a governance model? How sophisticated and planned out have you gone with Ghosty?
Not as much as I would like due to time constraints, but it's something I'll keep thinking about. So for the 1.0 public launch, it'll just really be me and my side project. It's really my project type thing. A lot of community in terms of contributions, Discord, moderators, love all those people.
But I think that longer term, I am interested in some sort of governance model because I don't think I'm going to be working on a terminal the rest of my life. And I do want this to be impactful. So that's something I've definitely thought about. The beta testers have been involved in this. discussion we've had for almost a year based on project sustainability.
Because even though it's not something I want to pursue any financial gain for, I would like it to be sustainable for others. And so we've talked about, can we set up, whether it's, is it sponsorships? Is it this? Is it that? In order to, I don't want any of that, but in order to pay the infrastructure costs and also potentially in the future, pay contributors as well. And so that's something that
we're just talking about and we're not a hundred percent sure about, but that's sort of the extent to which I've been thinking about this so far.
Makes sense. I mean, so no BDFL, temporarily BDFL.
Yeah. I mean, yeah, for now it is definitely a BDFL model for now, but yeah, BDFL for now. Gotcha. BDFLFN. There you go. How long have you been working on it? So the first commit was actually March or April 2022. But it's very deceiving because I was still full-time working for HashiCorp. And you could just tell through the commit history. I worked on it here and there.
There was like a three-month period where I didn't do a single thing. And then, you know, it was very, very on and off because it was really just me playing around with technologies. I think I got a little bit more serious probably last about over a year, a little over a year ago. Yeah.
Did you ever consider post-hashi like, you know, farming or something? This is a cliche, but just not doing software for a while, trying something completely different. I mean, we know you fly planes, but that's more of a hobby, right?
I do fly planes. I do. Yeah, that is a hobby. But it's... I didn't get all pessimistic like a lot of people get. I still love technology and I think that technology is getting better and I think that there's a lot that could be done with it still. So I knew that I was going to stick around and do something.
The important thing I did post HashiCorp was when I really formally really left, like wasn't getting any sort of paycheck or anything and had to get healthcare on my own and all that sort of stuff. When I really left, my daughter was about... two and a half months old. And so one thing I really wanted to do was just be able to spend a ton of time with her.
So for the majority of this year, and that's a big part of why I didn't publicly release Ghostie right away. For the majority of this year, I've been home and only working during naps or at night or whatever. Every time my daughter's been awake, I've been with her. And it's only been within the past month
month or so where that started to change a little bit as she's about 15 months now she has more things that she's going to and stuff and so I've been able to carve out more like dedicated even though she's awake like working hours and so I think I did spend that time but on the other side You know, I, I'm not someone that can't work. I love working and my family knows I love working.
And so finding that time, um, showing, being able to, as my daughter gets older to like see her dad working, you know, that's important to me. And so, uh, that's, that's all part of it.
What are you doing, dad? Just writing some software over here.
She's got a – I know there's no video element to this, but I have all these stickers, like ghost stickers. They're not finalized yet, but I just have so many of these things. And she's at the age where she loves stickers, so I'll show it for you. Nice. You can see all these stickers. There's about a dozen. There's so many. And she has all of them, and there's ghost stickers all over her house.
And my wife jokes that she points at it and goes, oh, that's daddy's work because for now it is daddy's work. And so, like, that's – yeah, that's what it is.
That's cool, man. I like I love that you I mean, to be in a position to take that time, you know, right. I think even if I was in your position because I my brain can't let something go, like even if I don't need to financially gain from it, my brain won't let go of the problem set.
You know, so I would find that kind of challenging, not so much to not give my necessary time to my child that's newly born, but more so my brain, the separation of that. You can't help that. You can't help how your brain works if you can't let a problem go necessarily. That would be my my fear for me. Like if I was in your position to be like, you know what?
I can't stop my brain from thinking about a problem set.
Oh, yeah. I mean, even when I wasn't really when even when I was just doing go see, like literally at night after the baby slept, I was actually doing it. I require a lot less sleep than my wife. And so I've always been like a six hour a night kind of guy. And so I was actually when she was an infant and waking up in the middle of night.
I was just not going to sleep before she woke up that first time. I was like, I will just work, and then I will handle the baby and feed her the bottle and put her back to sleep, and then I'll go to bed after that. And so that was sometimes midnight or something. And I would sometimes run into my wife when she was awake. I'd run over to her and have my phone out.
And I'd be like, look at this, look at this. And she's like, oh, do you have a cute video of our daughter? And I'd show her the video, and it would be like font rendering. And she was so disappointed.
I think if the, if there was a nerd snipe bingo card, like if we're playing bingo for like how you would nerd snipe somebody and you had like, you know, prolific open source maintainer who builds unicorn business and retires and then comes back to reinvent a terminal and then chooses Zig as a programming language.
Like these are all things where it's like, I know why there's 25,000 people in that discord. Like you have all of the different ingredients and, Which is really awesome. And that's just a way of setting up a question about Zig. Like, why did you go that route? Because that's an interesting choice, interesting language, and a burgeoning one.
Yeah, you could find a tweet I did, I think, end of 2021, very early 2022, where I talked about how I was interested in Zig, but I had no time to use it. And it was always in the back of my mind of this interesting programming language. And I think as important background to me, I was a...
professional paid C programmer for a year or two of my life, somewhere between a year and two years of my life. And, and I like low level system stuff. I actually like C and so I wanted to, it was very, HashiCorp was very close to getting all software written in C by the way. That's very, it was very close.
It was between C and go and go one, but it was very close to C. And I wanted to, to get back to systems programming, but I, I recognize the warts that C had, and I was looking for a better C. And Zig, to me, always felt like that. And years into using Zig, I feel the exact same way. I feel better about it. it brings me joy every day to write Zig. And, and so that's really it.
You know, later on, I learned about the community. I like the community, the sort of the founder of the Zig programming language, Andrew, really, we've now hung out in person multiple times, really awesome, like kind person and his technical points of view are fantastic. And, and so everything sort of came together where I'm just having a lot of fun. Yeah. And that's sort of how it, how it goes.
Did you try Go?
Did you try Rust? Did you go straight to Zig or did you start writing it in C at first and then switch to Zig? How did it play out?
I knew Go wouldn't be a choice because I knew I wanted to do something that really, I owned every single allocation and every single instruction that would ever be run. And having an active runtime that was running was never going to be, and a garbage collector was never going to be an option. The real plausible option there was Rust.
And I didn't try it with the terminal because by then I had already had enough experience with Rust that I knew I didn't want to write Rust every day. The way I describe it is I philosophically and as a technical achievement, I have absolutely nothing but respect and I'm impressed by Rust. I think it's very impressive. But as a personal basis, it's very superficial.
When I write and read Rust, I'm not having fun. And I want to have fun. And part of the joy is writing the code. And, you know, it's very much a stylistic choice. I hate to put it in that perspective, because I think engineers want some sort of concrete objective reason of why one versus another is better. It's really a vanilla versus strawberry ice cream flavor sort of thing for me.
It's they're both great. They both are edible, you know, but I, but I choose one over the other. And, um, that's, that's really what it came down to for me.
Has any of your work affected Zig, like upstream? Has it built fixed bugs, new, new features requests? I know you did some, you know, you've done some donations to the foundation, so you're helping out in that way, but like, is there, is there a symbiosis here?
I think so. I think so. And I think Andrew and people on the project would say the same thing. So, I mean, very directly before the project, I literally contributed to the compiler. So there's that very direct personal relationship. But with the project, I mean, Zig's still such a new versioning language that there aren't very many real-world users.
And I think having this real-world use case exposed a lot of... not just bugs, but ergonomic improvements and issues. You know, one of the things that I think a very big thing, a couple of very big things that popped up really immediately was the need for package management and then beyond that, which is now sort of solved and within Zig, and beyond that, the need to enable packages
system packagers, which are separate, like, you know, one of the things I'm doing with ghosty is I'm not doing any of the packaging, I'm going to release the source, I'm going to do the Mac app, because that's kind of you need to like kind of pay and sign in, blah, blah, blah. But all the Linux stuff, if you want to Ubuntu app package, or RPM, or Nix package, like I'm not doing any of that.
And that's pretty classic, right? Like open source, like packagers are other people, you But Zig is such a new thing that I knew that would be challenging for those people.
And so Andrew did a really great job of listening to my feedback, but other real world projects and building in the system packaging mode and guidelines into Zig where I feel pretty good about when we go public that we're going to be in a place where
hopefully ghosty pops into debian repos and stuff pretty quickly but that that's i think a good example of how things go um and then just compiler stability i mean the zig compiler moves super fast and i'll regularly just say ghosty doesn't compile anymore not because you made a breaking change but because like something's actually broken and i believe they use ghosty here and there as sort of a canary of whether the compiler is stable like can ghosty build and run
If Ghostly can build and run, then that's a pretty good, it's a pretty good sort of like big integration test, right, for the whole compiler.
Have there been any features that you've built or parts of Ghosty, whether it's because of Zig or because of some other reason where it's like, this should be straightforward and then it was just a minefield of trouble or any particularly hairy technical problems you've had to solve?
I have to laugh at that because the joke I always make about my work on Ghosty is that what I really ended up building, 70% of my time, I'm just building font rendering and the other 30% of my time is a terminal emulator. So I think that the really big hairy thing, is really font rendering. It is a minefield. And when I say font rendering, I don't mean just reading a font file and drawing a glyph.
I mean, everything from Unicode handling, emoji, skin tone emoji, East Asian languages, and then drawing them as well. I mean, that whole path is... A crazy mess. And even just today, just total coincidence today, I tweeted about a bug I found with skin tone emoji. And that's just a coincidence. But my life has been dominated by font rendering. But luckily, I found a lot of joy when I get...
when I get it fixed, but I've been shocked by how much time I spend thinking about it.
And it's not in the past. You're still working on it, right? Because you just found a bug today.
I thought it was in the past. I always think it's in the past, and here we are. Right, you think it's done, and then there's another bug. But today, it's done today. We're good. Now it's in the past.
What, I mean, what in particular is so stinking hairy about it? Like, because different environments render out differently? Or what makes it so fraught?
There's a lot of layers. And it is to some artistic, right? The way fonts look and stuff. And there's not a pixel perfect specification that says... that given this font and these characters, whatever, this is how it looks. It really is mathematical with a lot of wiggle room in terms of how much anti-aliasing you use, the spacing, where it floats on the line. There's a lot of wiggle room.
And so I think in addition to sort of the core technical challenges of so many different phases of fonts, there's also like people that just come up and say, it doesn't look good. Nothing's wrong. I just don't like the way it looks. And then you kind of have to dig into why that is. And Ghosty provides a ton of knobs for those people to get fonts looking the way you want.
And then our gold standard has basically been we want our fonts to look like Mac default. So like TextEdit, honestly, is our gold standard. The way text looks in TextEdit is the way it's going to look in Ghosty by default. So yeah, that's been that. But I think also just finding... all the layers I never thought about.
So I think the first one that shocked me that I had never considered as an engineer was how do you pick a default font? You have a monospace application. In a web browser, you say font family monospace, and the web browser picks it for you. Right, like a fallback. Yeah, there's that...
doesn't exist at the os level right you have a list doesn't no you have a list of fonts they have different properties some are monospace and not that's an easy one to just break down but within the monospace now you have a bunch of different ones and like how do you choose which one you want to use and it has to be deterministic because if they launch their terminal every time and you choose a different monospace font it's going to be a problem and so yeah it doesn't exist and so like that was the first thing where i was like
why am I thinking about this? Uh, because yeah, it feels like something that OS should do for me. And so that was, that was sort of the first challenge.
And then what does turn all that app to?
I don't know how they do it, but they, they tend to use, uh, I think, I think they probably hard code. Uh, Menlo. Yeah. Is it Menlo? Yeah. Um, I think they just use the, the like Apple, like usual one. And that, so Apple's kind of easy because Apple does, they solve some of that problem.
They have those, uh, Even in the web, they have some specific OS sans and monoface.
Yeah. And you could always, Apple's easy because there's so much homogeneity across the platforms. Right. You could kind of just say, I'm going to do whatever Apple does. Linux is the really hard one. Okay. So what do you do? Basically, I look for, obviously, monospace font. That's an easy one. And then I look for one that has ASCII characters.
And then I look for one that has more ASCII characters than anyone else. And then, you know, I sort of just apply the scoring algorithm to it.
Hmm.
If it has emoji within it, it's even better because it's likely the font designer made them work together. So I tend to score things with more glyphs in it higher. If it has more faces, so if it has italic and bold as well, then it gets scored higher than something that only has a regular. So yeah, you just apply all this scoring to it and hope for the best.
And so far, the beta community has felt...
pretty good about it did you consider just getting opinionated and just packaging your favorite one and saying like this is ghosty's default is this i do i do actually um but i do as well i do as well so we if i don't find basically a font that i'm satisfied with then we fall back to using the packaged font which is jetbrains mono um with nerd fonts already applied great choice thank you thank you it's it's
all of the defaults of ghosty for the most part are the ones that i would use and so yeah but yeah so we do that as well because there are in particular a really problematic area of linux is there's a lot of installations of linux that don't have emojis for example and so we we package an emoji font so that emojis just work out of the box again these are things that don't happen on closed apple computers but online we have to think quite a lot about yeah
I ran into that because we have this little node server that basically fires up Chromium and loads some stuff into a browser and then screenshots it. And we want to use emoji in there because it's like, you know, promotions for our shows and stuff. And I developed the whole thing here on my Mac and everything was great and I deployed it to fly.
And it's just using Ubuntu that just doesn't have emoji. And so it's like fobbing back to some weird Unicode thing. I have to actually like... install an emoji font pack in the docker file or whatever just to get to actually have an emoji in that remote chromium browser pain in the butt man Linux pain in the butt yeah I mean and stylistically the sort of unburdened licensed emoji fonts are
I don't personally love. I don't think they look that good. Yeah, same. So I wish that Apple would license their Apple emoji so that it could be used cross-platform, but you can't. Legally, you can't. There's people online, obviously, who have pulled it out. You can find them, yes. Yeah, so you could find it, but as a... As a distributor of software, I cannot.
Can't do that, no. Totally. It's UI-monospace is what you do in the cascade of the CSS font stack.
One of my favorite things I tell people when they ask more and more about fonts is the best source of figuring out how to do anything is...
web browsers every every independently every person i've run into that's done a lot of text work has landed on oh yeah i read firefox and chromium source code and blink and like all these different things like and that is true of ghosty as well like whenever anyone has been like i want to support this feature and i think how do you make that work you find the answer because web browsers have solved it and they've their cross platform and things like that um yeah
Not bad ideas, too, I mean, to have a default, you know, string, essentially, you can set that says, give me the OS's native version of the monospace font. Give me that. Right. Yeah. Nice.
So what I've experienced from Ghosty is A, Demos works, B, no sign in, and C, config. So this is where most people go, right? It's like, okay, how do I...
configure this thing so if 70% of your time is font rendering my guess is like the other 30% is mostly configuration because holy cow there's a whole bunch of configuration things everything you could possibly imagine and there's not really and maybe this will change between where we are which is private beta and 1.0 or maybe this is 1.1 I don't know but like there's no config built into the Mac app
It just opens up TextEdit on your slash go see slash dot configure, whatever it is, the file. Thoughts on that? I'm sure this is a huge part of your work is like configuration, right?
Yeah, I mean, depending on the audience here, I mean, I think my thoughts on configuration are going to be loved or hated. I've created a good duopoly of people that either love HCL with Terraform or think that I've crapped on the entire industry with this thing that people have to do every day. It's one or the other. No further comment on that, but I think because of that, I think...
There's a lot of experience I have with configuration. Vagrant was Ruby. Packer has JSON and supported JSON and then now supports HCL. Then Terraform is HCL. I sort of got done the spectrum. And so I was coming into this a little with some experience and opinion. And Ghosty's primary... So its configuration file is a custom text-based non-programming format. There's no conditionals. It's just...
key equals value straight down. People have described it as very any-like, but there's no categories like any. It's just key equals value. The principle why behind that, and I suspect I'm going to have to keep defending this over and over, but the principle why behind it is that the config file and the command line arguments are...
So anything, any key equals value you could set in the file, you could do dash dash key equals value on the command line and they perfectly match. So if you know how to do the CLI, you could do the config file and vice versa. And that's a very important property I want to keep. I think it's very educational friendly to a tool. And then the other reason is because it I could parse it.
validate it, and load it in a single forward pass. So this was more of a performance thing, but I don't need to maintain an abstract syntax tree like you might have to with a YAML or something. I could have an array of bytes, you know, conceptually an array of bytes, read one at a time. I only have to keep a small, you know, fixed size back buffer, move forward, and I could parse the config.
And it is... it is definitely a detail that's probably not super important, but because of that, ghosty has the fastest config parser and you have to read the config every time you start ghosty. And so it's, it's something that I didn't want to waste startup time on. And so that's a big reason why I chose that format as well.
But yeah, I mean, I, I really haven't gotten any from the people who have actually used ghosty. I haven't gotten any pushback on it. It's hard to dislike. I mean, the only thing you might want is like conditionals and things like that. And And I just think philosophically, I tell, you know, those people you should be using Western or something that supports Lua.
Like that's, that's not something I'm never, I'm never going to make initializing a runtime loading files, evaluating code, part of the startup path of my terminal emulator. Like it's not going to happen. So yeah.
Does that have implications for plugins, extensions, et cetera? Like, or is there. Is there plans for that? Does that exist?
It has implications. I'm not sure exactly for what yet. I mean, I think the one that popped up first was people wanted a different theme for light versus dark mode. And so that was sort of the first conditional thing that popped up. We solved it in a different way. You can just specify a light and dark theme. as separate config options, pretty straightforward. But there's other ones, too.
So I think the one that's looming right now that actually hits me is that I want different key bindings between macOS and Linux. I'm somebody that spends a pretty 50-50 time between macOS and Linux. And so I want the key bindings to be slightly different. Because there's no command character when I use Linux. when I use Linux. And so there's workarounds for that that really aren't very ugly.
We have the ability to load additional config files only if they exist and not error, basically only warn if they don't, log if they don't exist. And so you could actually create, you know, Mac config, Linux config, and have it not exist on that platform. And that solves that problem to some extent. But I do want to solve that in a less duct tapey way. And so there's implications. But I think that
My view generally on... I don't want to get too abstract here, but my view generally on problems is that constraints are good. And so I think we've defined our constraints, which is that I want a forward pass, single, you know, parsable thing. I want it to be fast. I want it to be isomorphic with the command line interface and config file. And I think those constraints are set in stone.
And if you have some fundamental constraints, then you could actually start a discussion of how you solve it. I think that... Generally speaking about about software in the industry that I see is too many people are choosing the most generic thing without constraint as the answer. Like, I'm just going to let you write arbitrary code to do this or I'm like this. This is the do anything machine.
It's like I I feel better about constraints. So that's just a philosophical tangent.
What about things that's as simple as, and I'm going to compare against Warp for now because I use Warp on the daily. And I did sign in. I was not happy about it. You don't have to anymore. But we joined Warp back when you had to. It's too late. It's like the... We're fans of Warp.
We're not haters of Warp by any means. I am as well. That was one of our main points of advice with Warp was like, don't make a sign. And I guess you don't anymore. Yeah, I didn't know that.
But I'm signed in and I'm me. One thing I do like though is that whenever I... And I'm on a Mac. So whenever I type something out onto the terminal, and if I want to select it to erase it, it's Command-Shift and then the back arrow, like I would in a text editor. Yes. I do like those kind of features. And then when I do that, when I compare the same experience... in ghosty, I can't do that.
It starts typing like these and stuff like that.
Yeah. Yeah.
Like different characters. So I don't know if that's like a direct mapping or maybe it's, it's not mature yet enough and it's on your plan, your roadmap, but those kinds of things I think really make that first experience, uh, You know, key that I can just treat the command line like a text editor. That's what I hate about terminal app and other terms.
You got to like do special things to make it like a text editor where you can jump around the text and do different things to be speedy. And now I'm hitting backspace and stuff like that. And this is not cool.
Yeah, yeah. I mean, I, I think you're exactly right. I think, I think what Warp did with that is very good. You know, I don't, I don't even know if Warp's open source or anything. I don't know how they did that specifically. I know I have ideas. I know how I would do it if I did it, but I don't know how they specifically did it. But that is something. So I guess there's two answers to that. One,
is it is on our roadmap to a certain extent in the sense that Mac, I assume you're on a Mac if you're using Warp. Mac has a bunch of standard text. I think Apple calls them actions and they're named things like select previous paragraph, select next paragraph. They have like names. One of the open issues on GoSee right now is to implement those actions and just do them in some way.
And I say, so then part two is in some way, the challenge is that the thing that's actually doing the text editing is the shell and not the terminal. And this gets into a layering thing that I think an everyday person doesn't care about. And I want them to not have to care about it. I'm just talking as an, I don't care about it. Yeah. Yeah. I'm just talking as an implementer.
I'm just saying why this is being funny. No, it's all good. Most people don't care about it. But for me as an implementer, it's what makes my life hard because it's really not my problem that I could easily solve. Because what a terminal emulator does is you enter characters, we encode them as some events, and we send them to the shell. We're actually not
Editing that prompt right the shell is editing the prompt and the shell is moving when you did a back arrow I'm not even moving the cursor I'm sending a back arrow to the shell and the shell is sending a message back to me saying move the cursor left by one But it could do anything it wants in the same way that when you hit the up arrow It's not telling me to move the cursor up It's telling me paint this text which is history that I don't know anything about the shell knows about and so
It's hard for me to solve because we don't own that text input. There's very hacky things that Ghosty and other terminals do. If you shift-click somewhere into the prompt, the cursor moves there. I think it's shift-clicked or shift-command-clicked. I don't even remember off the top of my head. And when someone suggested Ghosty support that, I gave them this answer of, like, I can't do that.
They said, oh, other terminals support it. And so I went and looked, and I was like, how do these other terminals do it? They actually synthesize arrow keys is how they do it. They guess. They guess. You click one row up and four cells to the left. I'm going to send you one up arrow and four left arrows and hope your cursor gets there. And it leads to all sorts of weird stuff.
So if you like, you could do this in Ghosty. You could do it in other terminals where if you click up too many times, history will start showing up. because it's sending up arrows and history is actually showing up instead. And that's a terrible experience. And so this is a long, rambly way to say, it's not my problem, but I do want to solve it. I do want to help make it easier.
And this is one of the areas where I want a terminal to provide better tooling to shells so that we could actually do this in a very user-friendly way.
It's a great reason to get Warp to be open source because the user experience with using Warp at the terminal level from an entry level and editing level of what's going into the prompt is bar none. It's solid. I like it. It's fast on that front. It's fun to use.
The community suggested this as an option, as a configuration option. I could solve it by separating out where the prompt is and where the output is. And I think that's what Warp does. you know, your, your, your prompt input is like a totally separate box from where the output goes. And in that way, I could just defer sending stuff to the shell. You know, I could actually own the input fully.
And only when you sort of hit enter or hit tab or hit certain control characters, I could actually flush it out to the shell and be like, okay, what's the deal and sync back up. I'm not trying to over-trivialize that problem or anything. I think what Warp did is really good there. But that's how I could solve it.
But it would feel distinctly different for people that actually want a prompt that starts marching down your screen.
Well, here's what happened, though. When I fired up Ghosty for the first time and started playing with it, this happened. This scenario where I'm trying to manipulate the text I'm going to enter into the prompt.
Yeah.
And then I'm like, okay, now I know config is my next step because I got to make Dracula my theme. That's like the first thing I did. I'm like, okay, how do I theme this thing? And so when I Vim and I put the path into the config file and I entered it or I edited it and I saved it, it yelled at me and said it couldn't make the thing. I don't know why.
So I had to like touch the file first and then go edit it, which is not normal for Vim because you can usually just Vim to a path. And it creates itself.
The directory maybe didn't exist?
I think so. I have a config directory, but not a ghosty directory. So maybe it was the ghosty directory not living. So I had to touch it first and then go in and edit with Vim.
Right. Is some of that the new macOS stuff where it needs permission for all kinds of stuff? Like first time you run it? I don't think so. Okay.
But then I try to, you know, manipulate the text and just try to like mess with it. And I was like, well, now I have to add config. And so I'm back in the documentation trying to think, well, I've got to add my own key mapping so I can have this jumping around. And I imagine that somewhere in the docs I would find it. But, you know, 20 minutes later, we had this phone call.
So I didn't have enough. You didn't get there yet. I haven't gotten there yet. So here I am ranting. I think this is kind of crucial behavior, though. That's why it's such a simple thing. But I think everyone's going to have a version of my problem. When they first fire it up, they're going to have some version of input manipulation that's very important.
And it's part of your speed as a developer on the terminal is how you can manipulate what you put in. And that takes time where I have to rejigger my brain or add config, which I don't mind doing. It's just a matter of not knowing what to do out the gate.
Yeah, I completely agree. It's actually one of the last remaining discussion points before the 1.0 is some of these defaults that we want to set in that sense. Because the trade-off between these defaults is that if we put those key bindings as defaults or those behaviors as defaults, then things like TUI programs can't map them because you're taking over them.
And so do you want to actually... We're talking about whether that's important or not or if it's more important that by default people expect what you just did. And I think it's also important when I consider that it's where people are coming from. If you're coming from Terminal.app or iTerm or something, then this is likely to not really be an issue because we behave... almost identical to those.
But if you're coming from something like Warp, then yeah, it's going to be a big issue. And so... I'm not super sure. I mean, that discussion actually did lead to the sort of, I think, extreme path, which we're not going to go down because it's too complicated, of inspecting their machine to be like, are you a ZShell user? Were you a warp? Is warp installed?
Like, should we behave more like warp on first startup? Like, are we going to guess basically based on what you have? And I'm not ready to go down that path yet. We do it. We do that for other things, but I'm not ready to go down that path for things like input manipulation. But it's unfortunately complicated. But I agree with you.
I'm sure you do. What's up, friends? I'm here in the breaks with David Hsu, founder and CEO at Retool. If you didn't know, Retool is the fastest way to build internal software. So David, we're here to talk about Retool. I love Retool, you know that. I've been a fan of yours for years, but I'm on the outside and you're clearly on the inside, right? You're on the inside, right? I think so.
Yeah, I'd say so. Okay, cool. So given that you're on the inside and I'm not on the inside, who is using Retool and why are they using Retool?
Yeah. So the primary reason someone uses Retool is typically they are a backend engineer who's looking to build some sort of internal tool and it involves the front end. And backend engineers typically don't care too much for the front end. They might not know React, Redux all that well. And they say, hey, I just want a simple button, simple form on top of my database or API. Why is it so hard?
And so that's kind of the core concept behind Retool is front-end web development has gotten so difficult in the past 5, 10, 20 years. It's so complicated today. Put together a simple form with a submit button, have that submit to an API.
You have to worry, for example, about, oh, you know, when you press the submit button, you got to bounce it or you got to disable it when it's, you know, is fetching is true. And then when it comes back, you got to enable the button again. When there's an error, you got to display the error message. There's so much crap now with building a simple form like that. And Retool takes that all away.
And so really, I think the core reason why someone would use Retool is they just don't want to build any more internal tools. They want to save some time.
Yeah, clearly the front end has gotten complex. No doubt about that. I think even front-enders would agree with that sentiment. then you have back end folks that already have access to everything api keys production database servers whatever but then to just stand up retool to me seems like the next real easy button because you can just remove the entire front end layer complexity
You're not trying to take it away. You're just trying to augment it. You're trying to give developers a given interface. That's Retool. Build out your own admin, your own view to a Google sheet or to the production database. All inside Retool. Let Retool be the front end to the already existing back end. Is that about right?
Yeah, that is exactly right. The way we think about it is we want to abstract away things that a developer should not need to focus on, such that the developer can focus on what is truly specific or unique to their business. And so the vision of what we want to build is something like an AWS actually. where I think AWS really fundamentally transformed the infrastructure layer.
Back in the day, developers had to spend all their time thinking about, how do I go rack servers? How do I go manage cooling, manage power supplies? How do I upgrade my database without it going down? How do I change out the hard drive while still being online? All these problems.
And they're not problems anymore, because nowadays when you want to upgrade your database, you just go to RDS and press a few buttons. And so what AWS did to the infrastructure layer is what we want to do to the application layer specifically on the front end today.
And for me, that's pretty exciting because as a developer myself, I'm not really honestly that interested, for example, in managing infrastructure in a nuts and bolts way. I would much rather be like, hey, you know, I want S3 bucket. Boom, there's an S3 bucket. I want a database. Boom, there's a database.
And similarly, on the front end or on the application layer, there is so much crap people have to do today when it comes to building a simple CRUD application. It's like, you know, you probably have to install 10, 15, maybe even 20 different libraries. You probably don't know what most libraries do. It's really complicated to load a simple form.
You know, you're probably downloading almost like a megabyte or two of JavaScript. It's so much crap to build a simple form. And so that's kind of the idea behind Retool is could it be a lot simpler? Could we just make it so much faster? Could you go from nothing to a form on top of your database or API in two minutes? Well, we think so.
Yeah, I think so too. So listeners, Retool is built for scale. It's built for enterprise. It's built for everyone. and Retool is built for developers. That's you. You can self-host it, you can run it in the cloud, get custom SSO, audit logs, SOC 2, Type 2, professional services. Starting with Retool is simple, fast, and of course, it's free if you want to try it right now.
So go to retool.com slash changelog. That's R-E-T-O-O-L dot com slash changelog.
This goes against the Unix philosophy, but is this an argument for integration? You know, owning more of the stack? Because, you know, it's not your problem, but it is your problem. And it's like, of course, you don't want to pick what shell people use, but like, does this like... Now we need the ghosty shell or something. Cause you can solve that problem.
You know, you could have ghosty be more than just a TTY.
I, I, I fight the nerd snipe every day of my life to write a shell. I, I, that's, that's something I'm holding. When are you going to give in, man?
Come on. When are you going to give in?
I'm holding strong. Cause there's so many bug reports. So many that I get that I am like, this is a shell bug, not my bug. But then, you know, I do think I do. I don't just dismiss it. I do think, can I as a terminal emulator, uh, mitigate this bug. But ultimately, this is not my bug. And so, yeah, it's frustrating.
It's also frustrating because all the cool new post 1.0 features we want to build that we kind of touched on, it's going to be blocked on downstream adoption. right? It's like any, you know, web browser comes out with a feature. It doesn't matter until a website implements it. And so that's going to happen here too.
But if we have, I've, I've joked around building a ghosty shell that only works in the ghosty terminal emitter. So it's kind of crap because you would never use it remotely, but like, it's more of a tech demo of like, this is what shells could be if they implement all the capabilities of ghosts. It's kind of like Chrome web experience, web experiments.
Like we need the ghosty terminal experiments to like, where people visit it and with the Chrome one, like I would visit it and be like, holy crap, a browser could do this. And then it changed my whole perception of a browser, like sometimes years before any website behaved similarly. And I have talked with, with folks about doing the same thing for terminals.
this 2e works best in ghosty you know that's already happening i think more than people expect um i would i would say right now like neovim works best in ghosty and then it works it degrades great for other for other things but they're i think almost the entire neovim
maintainership is in the ghosty beta and it's a collaboration between us implementing something and NeoVim shipping it like two weeks later and most people have no idea because unless you're in ghosty a feature detects it those things don't turn on that's crazy so if you're using NeoVim you want to be using ghosty And maybe vice versa. I'm biased, but yeah, I think so. Are you a NeoVim user?
I am a NeoVim user. And I don't know how many of the actual NeoVim maintainers actually use Ghosty. They all have access. I don't know how many actually use it. But I know that more than one mains Ghosty all the time. And so, yeah, it's something that NeoVim is always going to work in there. And we're going to work really hard to make it a great experience.
Do you pay attention to DHH by any chance?
Here and there. If it's loud enough. Sometimes you can't help yourself but pay attention.
Well, not so much his voice and his words, but on YouTube, he's given demos of Kamal and other things. And I think you always get to see his terminal and his text editor and stuff like that. And he's done some cool stuff. I haven't paid attention to it deeply. I just know it looks cool.
I'm not even sure what he's... My back of the brain to do is go investigate what he's doing because it looks cool. Whatever he's using. Is it NeoVim? Is it something else? And what I've seen, too, in screenshots you've shared for Ghost, he looked cool, too. And so I'm just curious because...
I might be making this up. I can't fully remember. I'll start with what I know for sure I'm not making up, which is that I've gotten mentioned a lot on Twitter with DHH and others with people telling him or asking him to look into Ghostie. That I know for sure. That happens actually fairly regularly, probably due to the stuff that you're talking about.
What I don't know, what I can't remember is I thought He said that he only wants to use software that is publicly available that everyone could use, which is a totally obviously good take because he's shipping stuff that people want to use right away. And I don't think he said that directly in response to Ghost. I think it was just like a general thing where people sending him stuff to use.
But I imagine that that's... you know, a big thing holding him back if he even knows about go see it all. But I hope when it's public that he would at least give it a shake. I've always said, even if you don't use it, I would just like to know why, why you don't use it. And that's perfectly valuable information. Um, so yeah.
So to that point, we asked on X for people to add questions for you. And it seemed like the overwhelming question is the age old question.
is when is this going to be available to the public yeah when is 1.0 going to drop yeah so we're recording this in december and i promised it would be released in december and the plan everything still looks good for december so sometime this month i don't have a day i really don't uh it's just sometime this month i think the software is in a pretty good place there was a few blockers that i had one of them was the icon that i wanted to i wanted a fresh icon for the 1.0 that's done i i
I tweeted that out and it's in the beta builds already and that's all done. Another one that I'm waiting on is sort of like web design and website docs work. That one, you know, it's all volunteer. I'm not the best at web technologies right now, especially front end. So I have friends helping me.
with that and i don't want to pressure them it's the holiday season things like that like if if the website doesn't get done in december my plan is probably to publicly release without it and just just you know say that's coming later probably make a bunch of markdown files to kind of help people in the repo with docs but we'll see about that but i'd say that's the major thing blocking right now and then the third thing is sort of some some amount of release management we have nightly builds right now but i haven't actually written the
the GitHub action automation stuff to tag and build like a numbered release and so I'll have to do that for the 1.0 and obviously that's not a huge blocker that's probably like a day of focus so we're still looking good for December
You said the icon is in the beta build, so that means what I have open is the plan to be released version, the icon?
The winking ghost. Do you see a winking ghost? Yeah, yeah, that's it.
I had to open terminal.app as well just to sort of side by side because I'm like, this looks, you know, as my son would say, we've been here before.
Yeah, that's on purpose. That's on purpose.
I like it. It's an homage. You can tell it's, you know, darn near the same, except for the thickness of the outside border is a little bit thicker for Ghosty. And the background is bluish instead of blackish.
Yeah, obviously. There's obvious differences. I would say, if you can, open the terminal icon. than the 512 or 1,000 pixel version and open the ghosty one in the 512. One thing we did with the designer who did this is a well-known, really awesome designer.
I've been a fan for so long, so I was actually really excited to actually get an icon designed by this person that I've been a fan for his icons. But one thing he does really well, which is very Apple-esque, is that the level of detail in the icon differs based on the size of it. So if you're looking at it in the dock versus the big version, it's different. So look at the big version and compare,
It's super an homage to terminal.app, but we tried to add a level of depth and reality. So things like the aluminum border has texture. The pixels, you could see the individual pixels of the screen, and they were warped because the screen is curved. There's a soft glow around the ghost, you know, things like that.
So, yeah, I just want to call it out because he worked hard on it, and I think it's cool. And I think it also shows sort of the level of detail that we've been thinking about with this software.
I've got it open now. The little dots, the little pixels are really cool. Little subtle details. What's the designer's name?
Michael, I don't know how to pronounce the last name, Flairup. His company is Pixel Resort, I think. Yeah, you could see his whole portfolio on that. He's done hundreds and hundreds of icons over more than a decade and really big fan of his work.
To this day, after decades using computers, I still nerd out on a really cool app icon. I just, I love the beautiful app icons and like just the people that make them, you know, so I don't know this guy, but I appreciate him and I'm sure I would love to go to his website and look at all the things he's made. A lot of good stuff. Just eye candy. Just pure eye candy.
And you know how hard it is to do that well.
Yeah, and he's still doing a little bit more work for Ghosty. And I'll just hint. I mean, it's going to be more than a hint. I'll talk about what it is. It won't be in for 1.0, but probably shortly afterward. We're making it so that the icon, we're going to dynamically change the color to match your theme. So on disk, it's always got to be sort of the default.
But when it's running, Apple provides APIs where you could add a custom image. And we want to make it so that the bluish color will actually be your actual background color and the text and things like that. And it's just going to happen automatically. Nice.
Yeah, yeah. How much SwiftUI is in here? How much percentage of the code base?
I don't have it open in front of me, but I think something like 10% of the code base is Swift right now, which is kind of scary. Yeah, and that's why I think that I've harped on this so much, but that's why I think libghosty is so important because it shows the amount of work that goes into building an end state app is how much code is required and stuff. Right.
Yeah, I think there's a lot of Swift in there, a lot of Apple-specific functionality.
So you imagine over time that percentage goes down, I would imagine it would have to as you support other things, add stuff to the core, or do you think that the Swift, you'll continue to sling Swift in the... Well, I think we'll always have the sort of flagship
implementation consumer of ghosty, which will probably be like the ghosty Mac app and Linux app. And so the Swift code will only increase, but I'm not sure percentage wise what that looks like as, as the core functionality changes and stuff. I'm really not sure.
What were your other major bloggers before the 1.0? You know, you announced it was coming. I think that was a couple of months ago. Yeah. But what were things besides a rad icon update that would like block it at the website you mentioned? from failing the launch in December.
There was a number of features that there was a certain amount of stability. Obviously, stability is hard to quantify, though. It sort of is more of a feeling of when you get enough beta testers that aren't reporting bugs. That was sort of a vibe. But in terms of features, there was a list of features that we wanted to implement and performance metrics we wanted to hit.
So just things like supporting image protocols and like ways to input and making sure I basically went out and just looked at all the available functionality the terminals have and asked myself whether it's important.
to have it and that was sort of a marker because that 1.0 goal was to be the best existing terminal you know you kind of have to do most of what existing terminals do I drew the line at like terminal stuff not like UI stuff because there's a lot of terminals out there that'll do like SSH libraries and double click and you can just go straight in and things like that I sort of drew the line where
When I say existing terminal, I mean the functionality below that line. But that was sort of the goal. I mean, I think the one feature that was always, there's two things that were always, to me, a release blocker that I've not given up on. I've just like, you know, I've let go in terms of blocking the release, but we're going to still do it.
One of them is a totally graphical configuration mechanism because for Mac and Linux users, for the Mac,
majority of users they don't want to be editing a text file to doing their configuration so we do want to build a native UI to manage your config and that's still coming and for sure something we'll do and then the second thing which is I think a really big deal and I think a lot of people will probably be not very happy about with the 1.0 is search I don't know if you noticed that yet but command F doesn't work it doesn't do anything I have not noticed
So surprisingly, we have something like 5,000 active beta testers right now. Really surprisingly, it's not been a big issue. I thought within the first month of beta testing, when we had 50 people, that people would say, oh, this is not usable because there's no search. I don't use search in the terminal, clearly, because it hasn't been built yet. But I thought that would really pop up.
And we're 5,000 people in. And I think that issue by far has the most upvotes. It has something like 120 upvotes.
or 150 or something but you know it hasn't stopped a considerable amount of people from using it so that's what changed my view on let's just slip this post 1.0 it's an important thing to add but i think there's a huge number of people that'll still get value without it so it is something like you'll see in the 1.0 release blog post so i'm going to call it out directly because i don't want people to think i'm like trying to trying to make some some message about not supporting search we'll support it eventually but yeah
Well, I didn't notice that because I guess I don't use a search either. I just use control R, which is, yeah, I use Tmux and A2N and just the tools inside the shell there.
So yeah. So any Tmux user wouldn't, wouldn't notice because search doesn't work in any terminal with Tmux. Right. Yeah.
Cool. Well, what else? Is there anything that you were expecting us to ask you about that we haven't, or that you wanted us to? You're just waiting for it, and we just haven't delivered yet.
Waiting, waiting, waiting. There was a question, actually, on X that I saw that I was like, no one's actually ever asked, and I never thought about before they asked it.
Oh, is this the NeoVim one?
Yeah, yeah, yeah, yeah. And he made me think, and I was like, that is an interesting...
Let's give him a shout out. I do have it. Mark, Jakewith or Jackwith, are there any specific features besides speed that make NeoVim better in Ghosty? Is that the one you're talking about?
Yeah. And I think it's a good question because it's not, we have talked about how NeoVim is good in Ghosty, but I think more generally, the question to me was like, what makes a terminal interesting that, you know, that you wouldn't really notice, I guess, until you actually used it. And I think that that's something that people don't realize a lot.
Because I think the biggest one is there's so many terminal.app users, like serious, very online developers that are using terminal.app. And it's funny to me because it's such a bad terminal. And just to be very concrete about that, it only supports, I think, 256 colors. There's so many people out there that don't realize that terminals for over a decade have supported 32-bit color.
And you don't realize it because all terminal programs, almost all terminal programs do such a good job of gracefully degrading and just realizing what environment they're in and working. And so if you only ever ran something like NeoVim in Terminal app, it obviously works great there. You would only ever see 256 colors.
And then you run something in Ghostly and suddenly you're like, wait, why does syntax highlighting look better or something like that? It's because, you know, you're using full like RGB with some transparency and things like start popping in. And so...
Yeah, I mean, I think that one of the things that that stands out immediately is because Ghostly supports modern like input protocols, for example, you could bind every key. And I think there's a ton of people I've talked to that don't realize you can't bind in every key, not because they haven't tried it, but because they tried it, it didn't work and decided, that's just how it is.
I'm never gonna do that again. But realizing it's just because most terminals are built on like a 50 year old input stack. But if you look at
kitty or go see um i think west term also supports it alacrity does not but um if you look at if you look at like those three for example then you can now bind things like backspace and escape could be separate before like when if you bound escape and you press backspace it would trigger escape now they could actually be distinguished and things like that and i think that that enables a lot more functionality and things like that so
I guess my view is there's a lot of people out there I've talked to where it's just like, I'm happy in Terminal.app and I'm happy they're happy, but it's one of those things where I described it like a retina screen that Apple shipped. You don't realize how good it is until you use it. And I'm not even pitching Ghosty here. I'm pitching any modern terminal.
Just give it a shot because I don't think most people know what they're missing out on.
Yeah. I concur with that. Jared was, well, I think you, do you still use Terminal, Jared? I do. Okay, so you can really speak to this well. I'm speaking to you directly. No, I'm happy to hear it.
It's because he has a different way of thinking. He wants to use Mac. I'm a minimalist, so I don't want to install unless I have a good reason to. I'm not against, I used iTerm2 for a while and I was like, what is this doing for me? And maybe it's because I've been ignorance is bliss over here in the ignorant land of 256.
I think tmux requires extra config in order to take advantage of some of these modern things, which is... unfortunate because they are detectable, but yeah, that might be part of the reason too.
Yeah, possibly. So I have good things to look forward to now that I'm using ghosty. One thing I did notice, which I used to use way back in the day, I think on Linux and I love is you got this, uh, I called it visor mode, you know, fly down from the top.
Yeah.
That's a cool thing. I love that when I was in college, cause I make everybody think I look cool. And I was like, you know, like, what'd you, how'd you do that?
Yeah.
That's a cool feature.
That was definitely, I won't lie, part of implementing that feature was like the, I'll just say like marketing factor of it, just like the cool factor for sure. But, you know, really also was how many people came and said like, they must have that to use this terminal because... I term supports it. And I think I term is the only terminal that supports it.
I think so too. I think that's the one thing I lost when I switched back. I was like, I don't use it much anymore. Cause it was kind of a novelty, but it's cool. And now that I got, now I'm back to it. I'm like, Ooh, I should use this now. Can you map that to like a global hotkey? So you don't have to be okay.
Yes, you can. And yeah, there's, there's actually a couple of beta testers. blows my mind that they are full-time professional software engineers and they exclusively use that as their terminal. They don't use, they have no floating windows. I'd love to watch them work. I did too, yeah. So they're coming from iTerm and they're like, I only have one terminal
and in ghosty language it's called the quick terminal it's like I only use the quick terminal so they're finding some really interesting bugs because it was like they're sort of getting fixed now but they're using it so heavily but I never imagined people would use it without another floating window which complicates like if you have three screens which screen does it float down from and things like that they're finding some good stuff and that's all going to get fixed before 1.0 but it's very interesting how diverse the user base is out there
Let's test your config knowledge, Mitchell. I have the config open. I want to bind a key to this quick, what is it called? Quick what? Quick terminal? Quick terminal.
How do I do it? Okay, well, one, if you don't want to bind a key, it's in the menu. So if you just want to see what it looked like, it's in the menu. Oh, really?
Right. Yeah, I played there.
Yeah, I've done that. It's in view, I think. Yeah, view quick terminal.
that's not very practical as a way to use it it's more of a discovery mechanism do you still want to know the config to bind yes i do that's why i asked okay so key bind all one word k-e-i-b-i-n-d equals space or no space i don't care equals and then let's just bind it to something dumb let's just type the letter j colon yeah we'll bind it to j for now you could replace that later j colon and then toggle underscore quick underscore terminal
okay and then save it and then hit hit command comma that'll reload your config and then hit j almost a fat finger because my my oh wait the config opened up or something uh you might hit command shift comma i think i might have done that yeah oh yeah command shift comma is actually what you need okay command comma does open it yeah i was like what is this
I fat fingered it. Configuration errors. Speaking of stealing from the browsers, I also just found your terminal inspector.
Yes.
Which is very much like in the spirit of dev tools, right? Like inspect element, inspect terminal. This is cool.
I'm surprised I forgot to mention that. Yeah, I am going to. age myself a bit here especially given my discord community but I remember the pre inspector days and specifically I remember when firebug launched firebug maybe yes yes and I was an active rails developer web developer when firebug launched and yeah overnight web development got so much better.
And I felt like you could do so much more because of the visibility it gave you. And the terminal inspector still has a long way to go to get there. But that's what I was thinking of when I built that was like, I want this to be a text platform where people could build applications. And to do that, you need good debuggers and debugging tools.
And I felt that with a terminal inspector, similar to fire, we need the firebug of terminals. And that truly was the motivation for that.
Yeah, super cool. Nice and simple. DevTools has gotten very feature rich over the years when you fire it up in Chrome. And it's pretty complicated at this point. I mean, there's courses on how to use DevTools I like. And Firebug was so simple. I mean, it was game changing, but it was basic compared to what we have now. And I like how straightforward and basic this is.
I just grokked it immediately, even just as a non-developer on this thing. It's sweet.
Yeah, it's cool. And I think it educates people more. I don't know if this will be true about terminals, but I suspect it will. Because with the Inspector, I've had non...
like non-developer friends find that feature in browsers and just like click around and they've sort of mentioned to me like oh i realized i could change the color of this thing and that's how that works and you know just sort of like some sort of education and i'm hoping that there's like terminal people users that aren't ever going to build a terminal application but will open that inspector and just kind of yeah you know mess around and be like oh that's probably how that works in a terminal and yeah
I'm stoked. A new terminal option has arrived. That's right. The terminal option has arrived.
It's the and terminal. There's no ors here. Yeah, that's right. You get this and that and that. I love it. Love the icon. Love the icon work, too. Very good. Love the MIT license. I mean, what's not to love about this? I don't know. I don't know.
I don't know. I don't know. I don't know.
That's why everyone's so excited, Mitchell. I guess that's the lack of availability. Of course, if you're listening to this, it's probably out there unless you're listening to this the day that we ship. Because, you know, this is coming out mid-December. If you're not listening to this, if it's late December, if it's January, go download Ghosty right now.
What will the URL be for Ghosty? It's going to be ghosty.org. Okay. I already have it, and that's what it'll be. To match the GitHub org is ghosty-org.
Gotcha.
Let's replace the dash with a dot.
Well, you're doing it right, Mitchell. I appreciate all this, open sourcing it, the technical philanthropy, reinventing an awesome terminal from the ground up. I appreciate it. I'm here for it. You've got me out of terminal.app. We'll see if I stick around. I probably will, especially because I can just bring this quick terminal down and impress all my friends again.
If my greatest social good is getting people out of terminal.app, then I will die happy. Yeah. impact baby impact thank you very much yeah i'm happy to be back like i said i listened to that episode from 2012 and uh yeah so it's funny to be here what 13 years like a time capsule yeah it is how about is that it's cool i even sound i even sound my my my wife was listening as i had it playing and
She said I sound like a child and I was a child. So, yeah, maybe I'll look back in 13 years and say I'm now a child right now. But but you've grown up, man. Hopefully.
All right. Thanks again. Bye, y'all.
So Ghostie for Christmas 1.0 coming soon, coming this month. But will it arrive before actual Christmas Day? Will it be a present for all of us developers? Maybe the better question is, will it become the terminal of 2025 for most of us? That's the question. I know for me, it needs to have warp-like input into the terminal. I love that about warp personally.
And I'm sure that Mitchell has great heights that he'll reach with this. Lib ghosty, potentially a shell. Who knows? But I have to have warp-like input into my prompt. I just love that about warp. Okay, go to ghosty.org. That's G-H-O-S-T-T-Y dot O-R-G. But if that site isn't available yet, go to the show notes. We have links there for you. And Ghosty 1.0 is coming soon. Okay, one more note.
It was so cool to catch up with Mitchell Hashimoto after all these years, after all this accomplishment, to have the history we have with him, to go back to the beginning, before HashiCorp, the start of Vagrant, just the project. And to now see where he's gone and what he's doing now. To me, that's the coolest thing about this podcast. I love that. Okay, last interview show of the year.
Enjoy your holidays. Enjoy your family. Enjoy your time away. Enjoy the hacking you're going to do if your plan is to take some time off and just get some things done. That's fun stuff, hobbies, tinkering, new side projects, whatever. And we'll see you in Zulip throughout the break. Go to changelog.com slash community. Join our Zulip. Chat with us in real time.
There's a lot of people there, and I'm sure you'll dig it. Big thanks to our friends and our partners over at fly.io. We love fly. Give them some love this holiday season. If you're launching a new app or taking some of the production fly.io and to our sleep science experts over at eight sleep with their pod for ultra. I love that thing. It is the coolest thing ever. 8sleep.com slash changelog.
Get yours today. $350 off. You can't beat that. And to our friends over at Wix and Wix Studio, wix.com slash studio. And to our friends at Retool, retool.com. We love Retool. It's so cool. And a big thank you to the Beat Freak in Residence Break Master Cylinder. Those beats, bangin', bangin', bangin'. Love you, BMC.
Okay, friends, we'll see you this Friday for the last episode of the year for Cheney Talkin' Friends, bringing you State of the Log 2024. Lots of cool voicemails, lots of cool Breakmaster remixes. And after that, we'll see you in 2025. Thanks for listening.