In short
Podcast Summary: The Changelog - We ain't afraid of no Ghostty! (Interview with Mitchell Hashimoto)
Episode Overview
- Title: We ain't afraid of no Ghostty!
- Guest: Mitchell Hashimoto
- Description: Mitchell, co-founder of HashiCorp and creator of Ghostty, discusses his new terminal emulator.
- Release Date: December 2023
Key Themes and Discussions
Introduction to Ghostty
- Mitchell Hashimoto introduces Ghostty, a new terminal emulator, which aims to improve user experience in terminal interactions.
- It is set to reach version 1.0 by the end of December 2023, marking it as a significant milestone in its development.
Transition from HashiCorp to Ghostty
- After co-founding HashiCorp and taking it public in 2023, Mitchell wanted to explore new programming areas, specifically focusing on desktop software and graphical programming.
- Mitchell emphasizes that he did not initially set out to create a terminal emulator but saw an opportunity to improve existing terminal experiences.
The Need for Modern Terminal Emulators
- Mitchell discusses the historical lack of innovation in terminal emulators compared to web browsers, which receive frequent updates and features.
- He believes that terminals can be exciting platforms for developers, similar to how browsers are used for graphical interfaces.
Goals and Features of Ghostty
- The primary goal for Ghostty’s 1.0 release is to create an efficient terminal that is fast, cross-platform, and user-friendly.
- Unlike other terminal applications, Ghostty is designed to be a "drop-in replacement" that incorporates modern features while delivering a great user experience.
- Mitchell highlights specific features that set Ghostty apart, including:
- Graphics support - Allows for modern text rendering techniques.
- Fast configuration parsing - Simplifies the setup process without sacrificing performance.
- Enhanced color support - Moving beyond the limited 256 colors found in some traditional terminal applications.
User Experience Considerations
- Mitchell explains that many features are aimed at improving user experience, including the integration of modern input protocols that allow for better key mapping.
- Ghostty aims to provide a seamless experience for users transitioning from other terminals.
Community and Contribution
- The development of Ghostty has been heavily influenced by community feedback, with a significant number of contributors involved in its beta phase.
- There is a focus on creating an inclusive governance model for the project, with the intention to keep it open source and community-driven.
Future Developments
- Post-1.0 plans include adding a graphical configuration interface and enhanced search functionality within the terminal.
- Mitchell expresses his commitment to making Ghostty a sustainable project that continues to grow with community input and feature enhancements.
Miscellaneous
- The discussion touches on broader themes of technology philanthropy, with Mitchell highlighting his desire to give back to the developer community through impactful software.
- The episode concludes with mentions of the podcast's sponsors and announcements related to upcoming content.
Key Takeaways
- Ghostty aims to be a modern terminal emulator that incorporates the best features from existing tools while providing unique enhancements.
- Mitchell Hashimoto is passionate about blending his technical expertise with community engagement to shape the software's development.
- The terminal space is ripe for innovation, similar to how web browsers evolved over the years.
Conclusion This episode provides valuable insights into the motivations behind Ghostty, the development process, and the vision for its future, all while highlighting the importance of community involvement in software development. The release of Ghostty is greatly anticipated within the developer community, marking a potential shift in how terminal emulators are perceived and used.
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Transcript
Automatic transcript. May contain errors.0:07Well 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 changelaw.com. It is the public cloud for developers like us, like you, who ship.
0:46And you can learn more at fly.io. Okay, let's go, Steve.
0:57What'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-minded 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?
1:32In 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.
2:05You 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.
2:40And what machines are is just these VMs that are designed to start really fast or designed to stop and 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.
3:13But like you still need to understand what they're doing to get the most use out of them. Very cool. OK, 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.
4:04We're here with Mitchell Hashimoto. Mitchell, it's been literally forever in literally since how Adam says it, literally, not how I use it, but how he use 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 on the Hacker News, I think the first time. I remember that day. That was 2010. I don't know. But yeah. I don't know which day it is either. But yeah, I remember that because I was like, oh, this solves one of my problems I have in life.
4:38And 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. I have to slow down to say HTTP.
5:12I 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 ghosties Mitchell's new project, it is a terminal. A 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 could ask. Yeah, I mean, I think the important thing to know is I didn't set out a couple things, I guess.
5:51I didn't set out 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. 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 no pun intended. And for me, that meant non-infrastructure, non-server side, desktop side, software, using a GPU, something I never used while we were at HashiCorp, at least not too much. Graphics programming, just everything, the polar opposite of what you could think of what I've been doing.
6:37I 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. Yeah, the terminal's been played with a little bit recently. You got Warp. I believe there's Wave. Those are like the two most recent attempts at a terminal of the future, so to speak.
7:17You 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, you know, 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, I don't think it's controversial to say that it's one sort of the graphical interface ecosystem of the world.
8:00Like if someone's building a graphical interface today, nine out of ten times, probably more than nine out of ten 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.
8:36And if you look at a terminal, they get, I don't know, you could 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 just sort of am wondering, what happens if you do make it exciting? Or does it become exciting? I don't know. 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 yeah. Well, two tools that I use every day as a working developer is a browser and a terminal. And, you know, all of us on this call have been around the block a couple of times.
9:11I mean, many people listening weren't there in 2010 when you first released Vagrant on Hacker News. And yet, the 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 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 just getting to 1.0. So I know you've been working on it for a while. Where did you start and how did you set out? I mean, you have to kind of stake your claim.
9:45Like this terminal is going to be different than terminal.app, for instance, in these ways. 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.
10:26and cross-platform and 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 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.
11:06Cross-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 Wes 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? Is it? 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.
11:47Because 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 files, you know, 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 and 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.
12:25Another 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 it, 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.
13:07And 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 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.
13:52iTerm 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. Like I think GoC 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 like render 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.
14:28And 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 TUIs before and the text-based interfaces and just the ease 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? 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 previously. 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.
15:18And 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, right? Like it's been there. It's been a tool. As Jared said, it's a daily driver for me, for him, for many of the developers out there. But it's not always the platform for which you do things. Like Vim is a thing, obviously, you 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 TUI platform, are you thinking like beyond version one is maybe more native ways to do TUIs kind of thing?
15:59What are your thoughts on beyond 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? 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?
16:42And 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 people 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 like drag a file into Vim and have it open a new tab. Going a little bit further, if you right 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.
17:19And that doesn't feel great. In the native Vim, 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 seems weird because I'm painting them as a dichotomy, but I don't think they're necessarily a dichotomy.
17:49The 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. 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?
18:22It opens directly in the browser. or 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.
18:58So 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.
19:46However, I do think that terminal multiplexers make the terminal experience worse, 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 uh graphics protocols like we support graphics protocols tmux doesn't um 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 then yeah and one of the things i am thinking is the ability.
20:42My 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, you know, 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.
21:15It'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 Zellage and stuff are great, but I think that philosophically I would, I would love to see them disappear. Not the people. Not the people. Not in reality, but philosophically. Not the people, but the software. Yes. Render it 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, right?
21:51You've chosen to go a different route, which is to innovate on the thing itself to make it a platform versus obfuscated into something, you know, 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 it, the way we focused on it has been the application. But I think long-term what Ghosty actually becomes is what I call libGhosty, 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 all of the terminal stuff.
22:28You could just focus on sort of the UI part. and that's not theoretical that's how the mac ghosty 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 i the community we've already talked about there should be a multiplexer like tmux where the core is just lib ghosty and you just focus then on the 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.
23:04It could just pass through and you no longer pay for that anymore. But then the benefit of libGhosty 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 the point being is I'm trying to come at this multiplexer problem from different angles, because I think it would take time for them to truly be obsolete. You keep saying cross-platform. How important is Windows in a cross-platform world or in your world? In my personal world, it's not super important, but in the world of software, it's hugely important.
23:41And 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 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.
24:21And 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 know, you can run Ghosty on Windows through that.
24:58I 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. Like Ghosty is a passion project, something that you want to have fun doing. 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.
Read the full transcript
25:34And 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 or professional, basically all these dimensions, terminals are very important. And I don't see that going away. And I sort of think like, what if I don't feel like people have focused very hard on terminals.
26:11And can I sort of be that person for a while for 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, like 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.
26:51And so LibGoC 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 you wanted to do with LibGoC, I really just wanted to enable that impact no matter what. I'm just reminded of Daniel Stenberg with Curl. You know, libcurl is the reason why curl, not to curl the command line, but curl the thing is everywhere. It's because of libcurl more than it is because of the binary curl, although they're both used a lot.
27:27But I mean, huge impact with libcurl. So, 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. Yes. 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 could 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.
28:07And 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 think that's, to me, that's cool. Thanks. Thanks. Yeah. Yeah, I, you know, whatever people write on Wikipedia, if there is anybody, anything, then fine. But I think that, you know, part of the way I've described Ghosty is this idea 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.
28:46And 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 trying to make it good, I guess, for a blunt term, just good, 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.
29:27And it's just the way I could have fun and pursue my passion, but still feel like I'm helping something.
29:44Well, 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. And this isn't just any cover though. It's packed with sensors, heating and cooling elements. It's all controlled by sophisticated AI algorithms.
30:23And 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. 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.
31:03It can cool you down to a chilly 55 degrees Fahrenheit or warm you up to 110 Fahrenheit. And this is 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.
31:39You 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 up 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, Two, leverage zero setup dev, test, and production environments.
32:25Three, 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.
32:52who'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 uh 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 you did i did i got you in there dude i gave him your handle well i had to i had to prove to tragic that i was me and that i wasn't just somebody saying hey i'm at a podcast with mitchell in like 30 minutes can you please give me the yeah 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 because my github is connected to my personal email not changelogs 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 so there is a discord there's people in there that aren't Mitchell.
33:47They'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 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 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.
34:32Since 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 were 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 GoSee and private beta has more stars and almost double the contributors that Vagrant had after two years of being a public project.
35:08And 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.
35:50But 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 20s, early career type people. And because of that, there's some shenanigans, I will say, within the Discord. And so the moderators are very sensitive. There's been a lot of scams, a lot of phishing, a lot of stuff, 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.
36:30And so, and so the moderators, I think, are very hardened to when someone comes and says, oh, I know Mitchell, I need the beta, that they're very suspicious. So, yeah. Yeah, I was like, I'm about to pod 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. and so I was like okay I opened up the calendar app and screenshotted the calendar invite on my calendar that says we're about to talk and he's like hmm not good enough basically I mean he did the thinking emoji and he's 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 that's hilarious so I had to go through a couple hoops it's a real insiders club the hoops will all disappear soon once i got into github it said you had the invite there so i was like once i was actually there's like hey by the way github is telling me this mitchell invited you last week you you're an idiot like you don't have to do all this there you go i'm surprised you didn't get banned honestly like usually those types of things pop up and they're 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.
37:54Well, 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? Like 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 the you know my side project it's really my project type thing a lot of community in terms of contribute contributions discord moderators love all those people and but i think that like 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 so and i do want this to be impactful so that's something i've definitely thought about um the beta testers have been involved in this discussion we've had for almost a year based on project sustainability.
38:53Because 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 100 % 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.
39:32But yeah, BDFL for now. Gotcha. BDFL-FN. There you go. How long am I working on it? Uh, 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, um, probably last about over a year, a little over a year ago. Um, yeah. Did you ever consider post-Hashi like, you know, farming or something?
40:10This is a cliche, but just not doing software for a while, trying something completely different. I mean, I know we know you fly planes, but that's more of a hobby, right? I do fly planes. I do. Yeah. That is a hobby. Um, but it's, uh, 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.
40:44When 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 Ghosty 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 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.
41:23And 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, And she's at the age where she loves stickers.
42:01So I'll show for you. 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 that's what it is. That's cool, man. 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 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. 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.
42:44The 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 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.
43:21I 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 like sometimes, you know, like 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, you know, I'd show her the video and it would be like font rendering. And she was so disappointed. I think 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.
44:13Like, those 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, 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 a, yeah, that's an interesting choice, interesting language and a burgeoning one. Yeah, you, you could, uh, I, I, 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, to use it. and it was always in the back of my mind of this interesting programming language and I think it's an 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 I like low level system stuff I actually like C and so I wanted to, 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.
45:13And I wanted to get back to systems programming, but I recognized 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. I love, it brings me joy every day to write Zig. And so that's really it. 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 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 and see at first and then switch to zig how did it play out i knew go wouldn't be a choice because my i knew i wanted to do something that really i I owned every single allocation and every single instruction that would ever be run.
46:11And 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. You know, 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. I just, when I write and read Rust, I'm not having fun.
46:45And 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 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 as 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.
47:29But like, 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, Zigg's still such a new burgeoning 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. 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.
48:07And then beyond that, which is now sort of solved and within Zig, and beyond that, the need to enable 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 an Ubuntu apt package or RPM or Nix package, I'm not doing any of that. And that's pretty classic, right? Like open source, like packagers or other people. But Zig is such a new thing that I knew that would be challenging for those people.
48:41And 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's, I think, a good example of how things go. 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 something's actually broken. And I believe they use Ghosty here and there as sort of a canary of whether the compiler is stable.
49:20Can Ghosty build and run? if Ghosty 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 of the 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 But what I really ended up building, 70 % of my time, I'm just building font rendering.
49:54And 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 it fixed, but I've been shocked by how much time I spend thinking about it.
50:41And 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. 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. For today at least, yeah. 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.
51:22It 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 have to like, 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.
52:02So like text edit, honestly, is our gold standard. The way text looks in text edit 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 like 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. Like a fallback. Yeah, that doesn't exist at the OS level, right? You have a list. It doesn't. No, you have a list of fonts. They have different properties.
52:38Some 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 that was the first thing where I was like, why am I thinking about this? Because yeah, it feels like something the OS should do for me. And so that was sort of the first challenge. And then... What does Turnolite app do? I don't know how they do it, but they tend to use...
53:09I think they probably hard code it. Menlo. Menlo, yeah. Is it Menlo? Yeah. I think they just use the Apple usual one. And so Apple's kind of easy because Apple does... They solve some of that problem. They have those... even in the web they have some specific os sans and monof face 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 um i look for obviously monospace font that's an easy one and then i look for one that has ASCII characters.
53:50And 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. If it has emoji within it, it's even better because it's likely the font designer made them work together. So I, I tend to score things with more glyphs in it higher, uh, 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?
54:30I do. I do actually. I do as well. I do as well. So 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 with nerd fonts already applied. Great choice. Thank you. Thank you. 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 package an emoji font so that emojis just work out of the box.
55:04Again, these are things that don't happen on closed Apple computers, but on Linux, 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 things 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 falling 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.
55:45Pay in the butt, man. Linux, pay in the butt. Yeah. I mean, and stylistically, the sort of unburdened licensed emoji fonts, I don't personally love. Like, 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, like 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 distributor of software, I cannot. Can't do that, no. Totally. It's a 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.
56:32Every, 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 they're cross platform and things like that. Yeah. Not bad ideas, too. 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.
57:16Tmux 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 text edit on your you know dot 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.
58:03I've created a good duopoly of people that either love like 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. And 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 and 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.
58:46There'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 equivalent. 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.
59:20And 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 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, 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 definitely a detail that's probably not super important.
59:54But 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 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 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. Like, I mean, the only thing you might want is like conditionals and things like that. And I just think philosophically, I tell those people you should be using Westerm or something that supports Lua.
1:00:23Like that's not something, I'm never gonna make initializing a runtime, loading files, evaluating code, part of the startup path of my terminal emulator. Like it's not gonna happen. So yeah. Does that have implications for plugins, extensions, et cetera? Like, is there plans for that? Does that exist? It has implications. Variations, 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.
1:01:04But 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. 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 log if they don't exist. And so you could actually create macConfig, Linux config and have it not exist on that platform.
1:01:41And 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 problems is that constraints are good. And so I think we've defined our constraints, which is that I want to 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 if you have some fundamental constraints, then then you could actually start a discussion of how you solve it. But I think that generally speaking about software in the industry that I see is too many people are choosing the most generic thing without constraint as the answer.
1:02:30Like, I'm just going to let you write arbitrary code to do this. Or I'm like, this is the do anything machine. It's like, I feel better about constraints. So that's just a philosophical tangent. yeah what about things that's as simple as and i'm gonna compare against warp for now because i use warp on the daily and cool i did sign in i was not happy about it you don't have to anymore but we joined warp back when you when you had to so yeah yeah it's too late it's like the we're fans of warp we're not haters of warp by any means i am i am as well i am so i 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 so 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 like type something out onto the terminal and if i want to like 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 d's 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 kind of things i think really make that first experience 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 gotta 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.
1:04:05And now I'm hitting backspace and stuff like that. And this is not cool. Yeah, yeah. I mean, I think you're exactly right. I think what Warp did with that is very good. You know, 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 more, 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.
1:04:42They 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, I'm 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.
1:05:23Because 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 hit 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.
1:05:52And 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 that you, you clicked one row up and four cells to the left.
1:06:27I'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, 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 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 a entry level and editing level of what's going into the prompt yep is bar none it's solid like i like It's fast on that front.
1:07:15It'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. 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. 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. it's not a I'm not trying to over trivialize that problem or anything it's it's I think what warp did is really good there but that's that's how I could solve it but it would feel distinctly different for people that actually want a prompt that starts you know marching down your screen yeah well here's what happened though is when I fired up ghosty for the first time and started playing with it this happened this scenario where I'm like trying to manipulate the text I'm going to enter into the prompt yeah and then I'm like okay now I know I know config is my next step because I got to make Dracula my theme.
1:08:11That's like the first thing I did. I'm like, okay, how do I theme this thing? And so when I Vim and then I put the path into the config file and I entered it or I edited it, then 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.
1:08:40Right. Some of that, the new Mac OS 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 to solve that problem.
1:09:07So 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, right, when they first fired 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 like not knowing what to do at 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.
1:09:45Because the tradeoff 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, you know, like it's, we're talking about whether that's important or not, or if it's more important that by default, people expect, you know, what you just did. And I think it's also important, like, when I consider that it's where people are coming from, like, 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.
1:10:18But if you're coming from 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 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 z shell 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 um it's unfortunately complicated but i agree with you yeah i'm sure you do what's up friends i'm here in the breaks with david shu 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.
1:11:14I 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 frontend. They might not know React, Redux, all that well.
1:11:47And 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 frontend 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 to 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 to get or there's an error, you got to display the error message.
1:12:19There's so much crap now with building a simple form like that. And Ritual takes that all away. And so really, I think the core reason why someone would use Ritual is they just don't want to build any more internal tools. I 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. And then you have backend 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.
1:12:53You'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 backend. 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 a 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.
1:13:36Back in the day, developers spent 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, just go to RDS, 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.
1:14:14I would much rather be like, hey, 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?
1:14:46Could 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? 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. Custom SSO, audit log, 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.
1:15:29This 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 because 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 you're gonna give in man come on when you're gonna give i'm holding strong because 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.
1:16:11I do think, can I as a terminal emulator 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. It's like any 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 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 ghosty.
1:16:50It'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 folks about doing the same thing for terminals. This TUI works best in Ghosty, you know? That's already happening. I think more than people expect. I would say right now like Neovim works best in Ghosty. It works, it degrades great for other things.
1:17:30but I think almost the entire NeoVim maintainer ship 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. I mean, I think it's - 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.
1:18:09And so, yeah, it's something that NeoVem 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 yeah 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 you know my back of the brain to do is like go investigate what he's doing because it looks cool like whatever he's using is it yeah you know is it neovim is it something else and then what I've seen too in screenshots you've shared for Ghosty look cool too and so I'm just curious because they look cool I might be making this up.
1:19:00I can't fully remember. I know I know the one. Okay, 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 Ghosty. 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.
1:19:31And I don't think he said that directly in response to Ghosty. 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 Ghosty at 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 you don't use it. That's perfectly valuable information. 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?
1:20:08When 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. 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 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, it's all volunteer.
1:20:42I'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. If the website doesn't get done in December, my plan is probably to publicly release without it and just 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 amount of release management. We have nightly builds right now, but I haven't actually written the GitHub Action automation stuff to tag and build like a numbered release.
1:21:20And 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 builds. 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.
1:21:59And the background is bluish instead of blackish. Yeah, obviously. There's obvious differences. I would say if you can open the terminal icon, then the 512 or 1000 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. 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 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.
1:22:34So look at the big version and compare because 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, 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.
1:23:09What's the designer's name? Michael, I don't know how to pronounce the last name, Flareup. 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 a 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 i mean just eye candy just pure eye candy and you know how hard it is to like 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.
1:24:03So 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. So 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.
1:24:44So, 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 the core functionality changes and stuff. I'm really not sure.
1:25:23What were your other major bloggers before the 1.0? 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 block it, the website you mentioned, from failing to 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.
1:25:55So just things like supporting image protocols and like ways to do input and making sure. I basically went out and just looked at all the available functionality that 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.
1:26:31But 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 vast 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.
1:27:12I 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 or 150 or something.
1:27:47But, you know, it hasn't stopped a considerable amount of people from using it. And 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 posts. So I'm going to call it out directly because I don't want people to think I'm like trying to make 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 search either i just use ctrl r which is yeah 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 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 we just haven't delivered waiting waiting waiting um but there was a question actually on on x that i saw that I was like, no one's actually ever asked.
1:28:41And I never thought about before, before they asked it. So was this the Neo Vim one? Yeah, yeah, yeah, yeah. And I, he made me think and I was like, that is an interesting question. Let's give him a shout out. I do have it. Mark, Jake with or Jack with, are there any specific features besides speed that make Neo Vim 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 Neo Vim is, is good in Ghosty, but I think more generally the question to me was like, what, what, makes a terminal interesting that you wouldn't really notice, I guess, until you actually used it.
1:29:15And 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. Like it's only supports, I think, 256 colors. And 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.
1:29:55And 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 ghosty and suddenly you're like wait why does syntax highlight 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 ghosty 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, eh, that's just how it is.
1:30:35I'm never going to 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, I think Wes term also supports it. Alacrity does not. But 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 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 like i'm happy they're happy but it's one of those things where i described it like a retina screen that apple shipped like you don't realize how good it is until you use it and i'm not even pitching ghosty here like i'm pitching any modern terminal like just give it a shot because I don't think most people know what they're missing out on.
1:31:30Yeah, 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 use 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. 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.
1:32:04But 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, I call it visor mode, you know, fly down from the top. Yeah, That's a cool thing. I love that when I was in college because 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.
1:32:40But, but, you know, really also was how many people came and said, like, they must have that to use this terminal because iTerm supports it. And I think iTerm 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 because it was kind of a novelty. But it's cool. 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 beta testers. Blows my mind that they are full-time professional software engineers and they exclusively use that as their terminal.
1:33:18They don't use, they have no floating windows. I would love to watch them work. I did too. Yeah. So they, they're coming from iterm and they're like, I only have one terminal and, and, and, uh, ghosty language is 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, 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 like things like that, they're finding some good stuff and uh it's all it's all gonna that's all gonna get fixed before 1.0 but it's it's it's very interesting how how diverse the user base is out there let's test your config knowledge mitchell i have the config open if i want to i want to 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 Oh, really?
1:34:11Right. I've played there. Yeah, I've done that. It's in Vue, I think. Yeah, Vue 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 keybind, all one word, K-U-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 command comma that'll reload your config and then hit J.
1:34:52I must have fat fingered it because my, oh wait, the config opened up or something. You might have hit command shift comma. I think I might have done that, yeah. Oh yeah, command shift comma is actually what you need to reload. Command comma does open it. Yeah, I was like, what is this? Yeah. Oh, I fat fingered it. configuration errors speaking of stealing from the browsers i also just found your terminal inspector yes it's very much like in the spirit of dev tools right like inspect element inspect terminal this is cool i'm surprised we actually i was surprised i forgot to mention that yeah i i am gonna 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.
1:35:43And 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 fire bug 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.
1:36:19And it's pretty complicated at this point. I mean, there's courses on how to use DevTools. I like, and fire bug 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. Just to even just, I just grokked it immediately, even just as a non-developer. on this thing. It's just, it's sweet. Yeah, it's cool. And I think it educates people more. Yeah. Like, I don't know if this will be true about terminals, but I suspect it will because with the inspector, I've had non-developer friends find that feature in browsers and just like click around.
1:36:52And 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, it's 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 we'll 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.
1:37:24You 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 that's why everyone's so excited mitchell i guess that's the uh 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 coming out mid-december if you're not listening to this if you're if it's late december if it's january go download ghosty right now what will the url be for ghosty uh it's gonna be ghosty.org okay i already i I already have it.
1:38:01And that's what it'll be to match the GitHub org is ghosty-org. So, yeah. Gotcha. Let's replace the dash with the 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. Impact, baby. Impact. Thank you very much.
1:38:40Yeah, I'm happy to be back. Like I said, I listened to that episode from 2012. So it's funny to be here, what, 13 years later. Like a time capsule. It is. How about that? It's cool. I even sound, 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 you've grown up, man. Hopefully. It's crazy. All right. Thanks again. Bye, y 'all. So Ghosty 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?
1:39:20Maybe 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. LibGhosty, 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.
1:40:26Enjoy 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.
1:41:11I love that thing. It is the coolest thing ever. Eight sleep.com slash change law. Get yours today. 350 bucks 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 Breakmaster Cylinder Those beats, banging Banging, banging Love you BMC Okay friends, we'll see you this Friday for the last Episode of the year for Chainshawken 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.
1:41:56Thanks for listening.
1:42:22Thank you.
1:42:51Thank you.
From the publisher
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.
