Audio Edit - PodRocket - Zed - Mikayla Maki === Paul: [00:00:00] Hi there, and welcome to PodRocket, a web development podcast brought to you by LogRocket. My name is Paul, and today I am happy to be joined with Mikayla Mackey, and we're gonna be talking about Zed. Now, Mikayla, you are a software engineer over at Zed. And just before we hopped on this pod, you were saying you've been there probably the longest, right? And you do a lot of stuff, but that's where you are now. You're a software engineer at Zed, right? Mikayla: ~Yeah. Yeah, ~yeah, I think I was like, it was paying high count on ~like, uh, ~employee number three or something like that, or four. ~Um, ~and,~ uh,~ yeah,~ I've, I've, ~I've been,~ uh,~ with the company almost four years. It's gonna be four years in,~ uh,~ June. ~So, uh, ~it's, I've been able to see it. ~I was, ~I was part of Zed before we had any public release, and I got to see it through, ~you know, ~open beta, open source, all the way through to today, ~you know.~ Zed 1.0 a few,~ a few, uh,~ uh, a few weeks ago. ~So, ~yeah Paul: And I'm sure some people listening have heard of Zed. We're talking text editing, right? But we're talking way more than that on today's pod. We're gonna be talking about [00:01:00] GPU libraries or frameworks. ~You, ~you can correct me 'cause I'm probably wrong, whatever label I just used. ~Um, ~and some cool things that are going on in the,~ uh,~ software world. 'Cause,~ uh, you know, ~here on PodRocket we talk a lot about tooling and AI, and obviously this has to tee into that because that's the way we work in today's day. But it's ~kind of ~refreshing to talk about some real engineering work going on. So I'm excited to get into it. ~Um, ~so year four at Zed. What is Zed? You've been there for four years. ~You, ~you gotta be able to tell us what it is in a sentence. What's the elevator pitch? Mikayla: Yeah. Well, like it says on the website, Zed is the editor for what's next. ~Um, ~we are a,~ uh,~ a code editor, so we're kinda in the more in the vein of VS Code or an Atom or a Sublime. ~You know, ~it's trying to be a simple, stripped down, fast and light, but still give you ~all the, all the, ~all the tooling you need,~ um,~ to do your job, ~you know?~ We have native support for language server protocol, so you can, ~you know, ~do your renames and do all that sort of more ID,~ uh,~ IDE stuff. ~Um, you know, ~we also just try to [00:02:00] basically all the features you need for modern development that,~ that,~ that,~ uh, like, you know, ~remote development, so you can have Zed on your comp- machine and your code elsewhere. ~Um, ~Git support for managing your Git repositories and stuff like that. Just ~all, ~all the stuff you want in ~a, ~a code editor,~ um,~ without all the extra stuff you get in,~ like,~ a full, a JetBrains or whatever,~ uh,~ pro- ~uh, ~product. So yeah, Zed code editor for what's next. Paul: Do you feel like you get,~ uh,~ folks asking,~ "Well,~ can it do this?" And they're pointing to,~ like,~ an extension or something from the VS Code Marketplace. How often does that happen? What's Zed's,~ like,~ approach to that? Are you guys like, "Oh my gosh, ~we have, ~we have to bring this in. We have to do something now." Or is it,~ like,~ maybe you change the way you think? ~Um, ~yeah, it's a spectrum, right? So where in the spectrum do you guys lie? ~And, ~and,~ like,~ does that happen? Mikayla: Yeah. So to under-- ~so, um, ~so something important to know about Zed is that it was created by,~ uh,~ the founders... Sorry, not ~the, the, ~the creators of Zed created the Atom code editor,~ uh,~ back in the day. And,~ um,~ if anybody doesn't know, Atom kinda, I think, took the world by [00:03:00] storm a little bit because it was kinda trying to make a new flavor of ID. And one of its big selling points is it was super, super extensible, right? It was built on JavaScript. They actually created Electron to build Atom, and then Electron went on to,~ like,~ become much, much bigger than Atom. But,~ um, uh, ~and so it ~kind of ~brought in this new phase of,~ like,~ lightweight, simple IDEs that you could ex- build extensions on, right? And then ~kind of ~VS Code came in after that and kinda perfected the-- ~got the, ~got the mix just right. ~Um, uh, so, uh, ~and Atom always had a lot of problems because of how extensible it was, right? It was always a bit slow. The extensions, ~you know, ~there would be incompatibility errors. There would be this, there would be that. ~Like, ~there was just a lot of problems that Atom had, even as it was a very well-loved product. ~Um, ~and so a lot of Zed's development has ~kind of ~been a reaction, not a reaction, but has been shaped by that experience of,~ like,~ doing extensions too quickly, too fast ~and, ~and the s- ~the, ~the challenges of that, right? So Zed does not have very many extensions. ~Like, ~we do have an extension support, and it ~mostly, ~mostly ~it's, ~it's ~kind of ~like ~a, ~a glorified package manager, right? ~Like, ~it's for getting language servers,~ right,~ which are a [00:04:00] separate binary on your machine. It's for getting language servers onto your machine and then turning them on so that Zed can... and hooking them up to Zed, right? But it's not doing-- they're not doing too much more than that sort of management or,~ like,~ themes or whatever. ~Um, ~but to your question, what do we do when somebody says, "Oh, what about this extension? What about that extension?" Zed has always gone for,~ um,~ a r- ~uh, ~to want, going to make a rich core, right? So all the most popular extensions, all the most popular behaviors and stuff like that, we've actually built them into Zed itself. ~Um, ~there's a ~long, ~long tail of languages and tooling and support that we haven't gone for yet,~ um,~ that you do need,~ like,~ a full extensions experience for that. But,~ um,~ as an example,~ um, uh, ~people really like,~ um,~ like ~the, the inline, ~the inline git blame, right? Like where you put your cursor somewhere, and you can kinda see, oh, the person who wrote this or whatever. Exactly. Exactly. The,~ um,~ if I remember correctly, in VS Code, that's an extension. And for... Exactly, yeah. We built that in ~straight out, ~straight out of the box. So you just get that out of the box. ~So, uh, ~and same with our Vim mode and stuff like that, right? ~We, ~we take a lot of these things, and [00:05:00] we just build them into the core, and we try to make them really fast, really sleek, really integrated,~ so, like, ~everything is talking to everything else. And that, and we do that for ~like the top, ~like the top most popular things. ~Um, ~and the goal is to one day have a proper extensions API. ~Like, ~once we've gotten all these core things and we've got them all in like the shape and arrangement they need to support these features in a really solid way,~ well,~ then we'll know what we need to do, right? And we can o- we can open those up. We can open those data structures up to extension APIs. We can open it up to everybody else to build their own things on top of this really solid platform, right? We don't wanna do what happened with Atom and open extension services early and then be committed. We wanna have a really solid foundation and then open it up and people can build off of that. So ~that's, ~that's how, that's our approach to extensions is just, yeah, we'll just do them. Just bring them into core. We'll just make them all in there. ~Um, ~and extensions that you can't do that for, we'll get to them one day. Paul: ~It, ~it's nice to know you guys are thinking of it in an open format [00:06:00] eventually though, because, ~I mean, ~I'm using my ID less and less every day. I- ~it's, ~it's ... I'm in the terminal or I'm booting up terminal Vim, ~you know, ~'cause ~it's, ~it's so agentic. And VS Code feels like this 18-wheeler some days, and I'm like, "Wow, I wanna go to Zed, but oh my gosh, am I gonna lo- lock into an environment that is more purist?" ~I, I mean, ~I'm annoyed with the purists sometimes. I'm just like, "Come on,~ like, I, ~I need to get work done." So if eventually you guys are gonna,~ like,~ keep adding to the core and the extension marketplace is gonna be open, there's zero reason why one should have qualms or anxieties about not being able to do work because of,~ like,~ some purist ethos, which is something that personally has scared me. Anytime I change a tool, I'm just like, " Yeah, simpler is great, but it's also newer, and if you keep it like a walled garden, it's kind-- it could cause issues." So cool. ~It, it's, ~it's good to hear about that. Mikayla: ~Well, it's, ~it's good you bring up the AI and stuff like that 'cause,~ um, uh, ~one of Zed's big approaches ~is, ~is that bringing things in, right? And bringing things into core. And so we've ~kind of ~taken it on [00:07:00] ourselves as like we call it the Switzerland of AI, right? ~Like, ~you can come here and you can bring anything you want in any arrangement you want, and it will work in Zed, or at least that's the idea, right? ~So, um, you know, ~we have AI features just like ~every, ~every other code editor, right? ~Um, ~but the-- you can configure it in as many different ways as you want, ~you know? ~You can pay us money, and we'll figure out how to get it set for you, right? You can pay somebody else money and give us API keys, and we'll run our agent with that. You can find somebody else's agent, but run it in our UI, right? And then,~ uh,~ just this week, like I think yesterday, we launched,~ uh,~ this new feature where,~ um,~ we put terminal panels integrated into our agentic,~ um,~ parallel agency UI, right? So now you don't wanna y- you know, you don't wanna pay us, you don't wanna pay them, you don't want an agent, you just wanna u- be in your terminal, that's fine too. It still will,~ like,~ fit in our UI. We'll still make it easy to pull them up. It'll still be easy to interact, but you have your terminal right there. So we've always tried to bring a, an ethos of, [00:08:00] look, we're just gonna meet you where you're at, ~you know? ~We don't wanna tell you, "Oh, do it this way." You bring your relationships, your things to Zed, and we will make it work in the ways we can. Yeah. Paul: ~I, ~I have to give it a go then if that's the new thing you guys released, 'cause the terminal agents is the one thing that was keeping me on shore versus setting out Mikayla: Yeah. ~Well, ~so yeah, ~well ~we just had,~ so, um, ~just this year we want, we, we did this big effort to,~ um,~ rework the whole UI, and I actually was leading that effort,~ um,~ ear- earlier,~ uh,~ to make it so that,~ uh,~ it's really fast to switch between work trees, and really fast to,~ like,~ switch between different projects and stuff like that. ~Um, ~and just now we integrated the terminal into that UI as well so that you can just ~have your, ~have your diffs, have your different projects, have your different work trees, and, like, all these things kinda fit together and flow nicely together. So yeah, check it out. Paul: So speaking of UI,~ uh,~ one of the things I first saw with Z when I was scrolling YouTube Shorts was about how great of a UI [00:09:00] rendering it does, w-what of a good job it does. ~Um, ~so you, Mikaila, are somebody who has worked on some of these GPU or UI-based primitives, and you said ~you led, ~you led the UI redesign, so you're obviously very embedded into this area of development. Can you talk to me a little bit about what makes Z special here, and maybe how that played into your story getting involved so heavily with Z? Mikayla: Yeah, what makes Zed special here? So one thing that is very special about Zed is,~ um, we're, we're, we're, we're, ~we're redefining, we're trying to redefine the stack for technology, right? Like I mentioned earlier,~ um,~ the founders of Zed created Atom back in the day, and they created Electron, and Electron has become,~ like,~ the foundation for UI applications across the whole industry. ~Like, ~this is,~ like,~ basically, if you wanna make a nice UI, you do this, unless you're in,~ like,~ a specialized industry like sound or, ~you know, ~a native widget or whatever. ~Um, ~and,~ uh,~ so So the creators of Zed already had ~like ~this vision of ~like, ~okay, we know what it takes to ~like ~build these things from [00:10:00] the ground up. ~Um, ~and ~so, um, ~when Rust came around and ~like ~Rust started to become popular and prominent and stuff like that,~ um, uh, ~the founders realized that this was a really good opportunity to ~build, to like ~do it again, basically. To take all that stuff that they learned with Adam and about UI frameworks and ev- ~and, ~and UI rendering,~ right,~ and apply it with a systems language that doesn't get in your way, ~you know?~ ~Uh, ~one big problem with,~ um, you know, ~C, C++ and all those languages, they're, ~you know, ~lovely languages in their own way, and it is,~ um,~ hard to write memory safe code in them. ~You know, ~as we've seen by, ~you know, ~Android,~ uh,~ the Android,~ um,~ I believe the Android project, they found that the ratio of lines of code to memory safety bugs is about five million to one. ~Um, ~you need five million lines of code to get one memory safety bug, whereas for,~ um, uh, ~C and C++ it's about 1,000 lines of code for one memory bug. So yeah, I, yeah, I don't remember exact numbers, but I just,~ they, they had a really interesting blog p- uh, ~they had a really interesting blog post about that,~ uh,~ last year or something. Anyway,~ um,~ so with Rust making systems languages much [00:11:00] more approachable and much more resilient to these problems, right? It w- gave a firm foundation for,~ um,~ building their own UI stack, right? And starting from ~like ~nothing but what the OS gives you all the way up. ~Um, ~and so that's where,~ um,~ our UI framework came about. It's,~ uh,~ called a GPUI, right? And it's,~ uh,~ built around this concept of,~ um, uh, ~every single frame,~ it's, it's, ~it's ~kind of ~like an immediate-- it's,~ it,~ it's got immediate mode rendering. ~So, um, um, uh, ~every single frame,~ right,~ you're kinda generating a list of instructions for the GPU, right? You're like, draw a rectangle here, draw a rectangle here, draw a letter there, draw a letter there, draw a letter there, put another rectangle here, right? And your whole, every single frame, your whole app gets turned into a list of these instructions, and then we shunt them to the GPU. And ~it's, ~it's very funny,~ um,~ almost all of the frame, like the,~ uh,~ 2D UI is actually pretty straightforward, right? We're not like a video game, ~you know, ~we don't have like magic spells and giant 3D models running around everywhere, right? So our rendering actually takes less than a millisecond for the entire frame to be rendered, right? [00:12:00] Everything, most of the frame time in Zed is getting that, like going through the data structures and being like, "Okay, what letters do you want in that place? Oh, what rectangles do you want there?" ~You know, ~like going, just figuring out what we need to draw, and then the actually drawing of it is like less than a millisecond. It's so fast. ~Um- ~But from there, right? ~Like ~Zed,~ uh,~ so that's like ~the, the, the, ~the foundation, like the thing powering it all, right? But,~ um,~ the Zed,~ uh, but, ~but ~the, the, ~the GPUi, the-- When we were developing GPUi,~ right,~ we were also taking a lot of inspiration from the web dev world, right? Because let's be real, the web is the best UI platform ever created, right? It has the most richness and expressiveness. You can build incredible UIs like that. Like you can, yeah, you can always tell a web UI from like a native UI, 'cause the native UIs are always a little weird, and the web UIs are just like, holy crap. Like I remember seeing this one from ~like, ~it was like an F1 driver that the Syntax FM podcast had, right? And it was like ~they were, ~they were kinda doing an analysis of it, and [00:13:00] you could ~like ~move your mouse around and it would like scrub off the helmet and show the driver underneath for this,~ uh,~ for ~like, um, ~Max Verstappen or something like that. It was like so insane, right? That's the sort of thing the web can do that, that other UI platforms probably can do, but nobody's really doing it, ~you know?~ ~Um, ~it's not very c- very common, not super common. ~Um, um, ~and ~so, uh, ~because of the u- web's power, right? And specifically also ~React, ~React ~is, ~is an incredible framework. People can complain about it or they have either these opinions or that opinions change, but they have all those opinions because React won, and React was so good Paul: a good point. Mikayla: compared to everything else that It gave you a platform for everyone to try to s- to, to search the rest of the tech tree, right? And ~so, um, um, ~one thought, one, one thing that, that, that goes through my mind ~while, ~while we were working on, on, on this stuff is ~like, ~okay, what can we learn from these platforms? What can we learn from these tools, and what can we do ~from, ~from the get-go? ~Um, ~and so we actually have a very,~ um,~ web-inspired primitive, right? So I talked about the GPU rendering, [00:14:00] right? To generate ~those, ~those calls of ~like, ~oh, put text here, put rectangles there, right? We actually recreated some of the web concepts,~ um,~ not literally, but just,~ like,~ for,~ like,~ naming and for,~ like,~ API purposes, right? So we have,~ like,~ a div element we call it, and ~it, ~it takes like tail-- like, like ~a, ~a ta- a Tailwind-inspired,~ like,~ builder pattern, right? So we can say,~ like,~ div.p_2 or whatever, and we can,~ like,~ kinda construct these,~ um,~ these UIs like this, right? And every single frame, we go through your entire applica-- We start at ~the, the, ~the root of your window and we ask, "Okay, just ~give me, ~give me the element," right? And then for that element,~ um,~ it, it would just kinda construct this tree of elements all the way down using this web-inspired,~ like,~ syntax and layouting and stuff like that. ~Um, ~and so it actually turns out that it's ~really, ~really easy to use. ~Like, ~it has a lot of the same expressive power. It has a lot of the same abilities, right? And,~ like,~ agents can bang it out so easily. ~Like, ~it's almost as easy as writing HTML, writing our GPUI code for them,~ um,~ because we've kinda ~aligned, ~aligned ~the, ~the semantics of,~ like, you know, ~the flex layouting and grid layouting [00:15:00] and,~ like,~ g- picking those really powerful primitives that the web has, ~you know, ~created, but putting them on this, ~you know, ~completely different foundation. ~Um, ~I don't remember,~ uh,~ the re- what the rest of your question was, but ~I can, I can talk more about it. But yeah, that's like, this is, like, our-- So ~yeah, this is the UI framework we created. This is actually the second version of it. Earlier versions were more inspired by Flutter,~ uh,~ but then we were having to write our own layout algorithm, so we ~kind of ~brought in a web layout algorithm. Shout-out to,~ um,~ Taffy and the Dioxus team for writing a web standard compliant flex layouting,~ uh,~ solution in Rust. ~Um, ~and yeah, we just, we build everything like that. ~I, I, ~I distinctly remember when we went from GPUI v1 to GPUI v2,~ like,~ UI used to be a really hard part 'cause we were always fighting our layouting, and we were trying to s- fi- ~you know, ~fix bug in or whatever, and then we switched to GPUI 2, which is this more,~ like,~ Tailwind and web layout mode, and writing the UI became the easiest part, ~you know?~ You just kinda type a few divs, you do a few onClick handlers, and then you're back to, ~you know, ~writing your code. So it was interesting. It was a,~ it,~ it's been a very,~ uh,~ interesting time. Yeah. Paul: Do you see people [00:16:00] using GPUI for anything else that you have found interesting? Mikayla: Yes, actually. It's interesting. ~Um, ~we haven't been able to focus on it at Zed. Not because we don't want to and not because,~ uh, or, or, ~or because we think it's bad, but it's just because we're really busy doing all the other stuff, ~you know? Um, ~but,~ uh,~ I've been cultivating,~ uh,~ a small community around GPUI and every n- and every now, every c- every few weeks somebody will come in and be like, "Oh, I built..." ~Um, ~I think the f- one of the first things that was built was,~ um,~ a Raycast clone in GPUI, right? Like ~the, ~the,~ uh, you know, ~the command space search bar to ~like ~launch your apps or do math or whatever. ~Um, ~but other people, ~like ~there's somebody who's been posting on Discord lately about building a ~like, um, uh, ~a full game engine with it, right? And ~like ~what he's actually done is,~ um,~ taken some of the guts of GPUI and he's ~like ~rewritten,~ um,~ the renderer a little bit to have a few extra things. Like he's ~kind of ~forked it and rewritten it, right? ~Um, ~and so he can embed scenes from the game engine inside of it, but all of the UI is GPUI UI, ~you know, ~on top of that. ~Um, ~and that's like a pretty cool thing that, that somebody's doing. And [00:17:00] there's,~ um,~ there's even a,~ um,~ I think it's an investment company, like a financia- like a finances, like track your-- ~like, uh, ~in, a finances company in China who was a ~very, ~very early adopter. ~Um, ~they wanted to build UI, ~ um,~ and they wanted to build a fast UI that like worked really well and so even before GPUI was like on cr- on package managers or anything like that, it was, they adopted it and they like built a whole bunch of like fundamental things because GPUI is a lot more of a toolkit, right? Like we're not yet,~ uh, we're, ~we're definitely a framework 'cause we own your state and manage it and we're definitely all this stuff, but we haven't formalized some really core primitives like text input, right? Like we have the tools to build a really good text input But we haven't generalized them out of Zed yet. ~Um, ~and ~so, uh, ~this,~ um,~ this guy Jason in China, he built that, the rest of that. He called it GPI Component, right? And he, they have their closed source financial app that he, ~you know, ~owns and maintains. ~Um, ~but then a whole lot of people just,~ like,~ build little things with GPI Component 'cause it [00:18:00] provides,~ like,~ those primitives you need. ~So, um, ~yeah, and ~it's, ~it's one of those things where it's like people want,~ like,~ and,~ uh,~ people want to use it more than we can make it available to them right now. ~And, and it's still mo- yeah, yeah. It's, it's still a lot of, um, small, it's~ still a lot of small things, a lot more,~ like,~ hobby projects and stuff like that. But ~people, ~people like it, and I think ~it's, ~it's a... UI frameworks in Rust in particular are, is a really hard problem to crack because of the way Rust does state management and stuff like that. ~And, ~and ~the, ~the specific needs of a GUI program are, like, exactly the opposite of what Rust wants, and so it's really hard to get them,~ like,~ talking to each other in a useful way. And I think that's one of the big things that makes GPI appealing is that,~ like,~ it kinda has, it's kinda cracked that a, ~in a certain, in a certain, ~in a certain direction. Yeah. Paul: So ~how, ~how do you think the innovation that you guys have done with GPUI has pushed Zed forward in a way that you might not have been able to with the traditional stack? Mikayla: So I think the thing about that GPUi gives us is it gives us ~a, ~a baseline that we just don't have to worry about, ~you know? Um, ~in [00:19:00] the web... I-in my experience of the web world,~ right, um, ~the more you try to do something interesting, the more you have to be thinking about performance, and you have to be, like, doing these complicated things to manage it, to manage performance and,~ like,~ rendering times and stuff like that. ~Um, ~and at Zed, ~we just, ~we just don't have to think about it. ~Like, ~we do have to think about, ~you know, ~the basics of,~ like,~ don't try to draw 500 million things. Try to draw the ones you can-- that are visible instead of all of them, right? But that's,~ like,~ that's what everybody has to do. ~Um, ~so we mostly just don't have to worry about our UI performance, and that gives us a lot of space to worry about all the other aspects of the problem, right? ~Um, ~one thing that's core to Zed has been live collaboration. ~Like, ~Zed's original e-ethos,~ um,~ was about human co- human, humans collaborating live, right? ~Uh, ~founders came up,~ um,~ f- in ~Pivotal, ~Pivotal Labs, which was a very pairing-heavy culture. Zed itself is a ~very, ~very pa- pairing-heavy culture. ~Um, ~and we use Zed to do that. ~Like, ~one of the reasons we're able to be, ~you know, ~so nimble and maintain such a [00:20:00] quality code base over time has been that we are just pairing all the time and doing all that knowledge transfer and all that, ~you know, ~checking in with each other all the time. ~Um, ~and ~so, ~but to do that,~ right,~ to do that well, like we've had VS Code live share and ~like ~everyone has their in-integration, right? But to do that well, you really need to bake it in at ~the, ~the baseline, right? And ~like, ~and ~so, um, ~there's this technology called,~ uh,~ CRDTs, right? ~Um, ~and basically the idea of CRDTs is that if you think of your text as a series of operations, right? Like a series of,~ like,~ think about like keyboard,~ um, uh, ~key-key- keyboard clicks. Yeah, keystrokes. Thank you. If you think of your UI,~ uh,~ think of your buffer not as text, but as a series of keystrokes, you can ~kind of ~keep track of who saw what keystrokes when they were typing, right? And then you can use that little extra bit of information to,~ um,~ losslessly just combine everybody. So instead of having to deal with merge conflicts all the time,~ right,~ you can both be typing right next to each other and, ~you know, ~there's a network in the [00:21:00] way, maybe there's a delay, maybe it's a little slow. Nobody has any problems. Nobody has to wait for anybody because you've stored them in ~this, ~this different way that, that makes the,~ makes,~ makes it really easy to,~ um,~ to just put them together, right? ~Um, ~and so that's something we, ~um- ~So building that f- ~that, ~that technology into the foundation of Zed means that ~like, ~like it... Day one, Zed has always been built on CRDTs and collaboration, right? B- Paul: the way? Mikayla: oh, yeah, sorry,~ uh,~ conflict-free replicated,~ uh,~ d- data types. Conflict-free replicated data types. ~Um, ~yes. ~Um, ~and ~that's, ~that's, that,~ the, the, ~the... ~Well, ~conflict-free, that kind of tells you right there. ~Um, ~yeah, and so it's when you need to have ~like ~a data structure on two ends of the wire, and they need to be, they need to be in sync. They need to be conceptually in sync, right? But you have that network hop in between, and you have like maybe I can delete a character and you can add a character, right? ~Like ~who wins in that case, right? Conflict-free replicated data types allow you to form that deletion and that addition operation in such a way that you never have to worry about who [00:22:00] wins. They,~ the,~ the data structure figures it out for you, and it just makes it ~really, ~really easy to do live collaboration. ~Um, ~so Zed was built from day one,~ uh,~ before we had anything for live colla- for collaboration like this, right? And it lets us do,~ um,~ it lets us do really interesting things because we have that. ~Like, ~as an example,~ um,~ if you ever,~ uh, you know, ~Google Docs, right? ~Um, ~I don't know if you've ever edited a Google Doc, and like you've been down here, right? And there's somebody above you, and they are like typing, right? And you're, yeah, you're jumping all around, right? ~You know, you're, ~you're moving up and down, you're moving left and right, right? If you try that in Zed, like I have this demo I love to do where like we set up that situation and then I'm up above and I just hold down new line, right? The collaborator, the person on the other end, like all they see is their line numbers changing. Their code is like completely solid. Their viewpoint is completely solid, right? Because we are using this CRDT as the baseline,~ right,~ we can even anchor your scroll position, like where you are in the document based on these CRDTs. And because of the way ~they, ~they work, we can keep the experience extremely solid, [00:23:00] right? But if you're keeping track of every keystroke and keeping track of this causal arrangement of data structures,~ right,~ that takes a little bit more work than, ~you know, ~storing a string. That takes a little more data. That takes a little more arranging, right? And it's not,~ uh,~ it's not a ton more, but it's enough more that like we did it. We don't, you don't want to be fighting that performance problem and fighting your renderer and fighting your language and fighting these things, right? ~By, ~by choosing Rust and choosing GPU rendering and choosing all these things,~ right,~ we've made it so ~that, ~that the only thing we really need to worry about is our data structures and how we arrange them and how we put them out, right? All these other things, there's, they're not gonna get in your way. They're just gonna, they're just gonna work, and ~it's, ~it's all on you to figure it out. It's not, you don't have to be fighting your tools, basically. So yeah. Paul: So we're talking about multiple-- Like you said, you don't have to be fighting your,~ the,~ the text rendering. You don't have to be fighting, ~um... I mean, there's, ~there's a bunch of layers in Electron that we have to talk [00:24:00] about. ~Um, ~there's a bunch of layers. Some of these layers are being cut through. Some of them are being integrated directly in, in Zed. Which one do you think had the biggest impact for, "Oh my gosh, now we can do this and we don't have to worry"? There's gotta be like one takeaway, and maybe it's GPUi, maybe it's the fact that it's in Rust. ~Um, ~it's none of those Mikayla: Yeah. ~Hmm. ~That's a good question. ~Um ~What is the one takeaway? I think if there had to be one, I think it would definitely be Rust because,~ um,~ for two pe- for two reasons. One, right? One is that Rust makes all the rest of that tractable, ~you know, ~with its type system and with the way it's arranged. ~It, ~it is, it gives you the tools to cut through that, right? ~Like, ~it gives you the tools to enable that synchronicity ~across the, ~across the tech stack, right? ~Um, uh, ~and further,~ um, right, like, um- So, ~okay, I haven't done a lot of JavaScript in a while, so tell me if this is wrong. But I remember looking at JavaScript APIs a long time ago and realizing that [00:25:00] all of them were copying your whole array, right? ~Like, ~I would do,~ like,~ an array.sort, and it would give you a whole new array that had all these items sorted or something like that, right? And in Rust, that sort of thing,~ like,~ like in JavaScript, you don't even notice it, right? ~You, ~you're making a list and you're pushing things into it, you're taking things out of it, and it just,~ like,~ it just happens and it just works and it's just fast because that is actually a very cheap operation, right? Rust really puts in your face,~ like,~ okay, this operation is mutating. This operation is put, making a new one. ~Like, ~it really makes that hyper, hyper explicit, and it puts just enough friction in the a- ~in, ~in doing things that could cause, that, that could Paul: ~Mm-hmm~ Mikayla: ~um, you know, ~allocating memory or changing things like that,~ um,~ that it really makes you think about it every single time. And,~ um,~ and so you don't have to like, ~you know, ~make a lint and make sure you're using the mutating operations instead of the immutable operations,~ right,~ like that. ~Like, ~you don't have to [00:26:00] like, you don't have to,~ like,~ look in those things very much 'cause Rust kinda just guides you m- just by the way the language is structured and the way the type system works and the way,~ um, it's, ~it's made chosen its trade-offs. ~It, it, ~it pushes you in,~ um, in, ~in a,~ in,~ in a direction ~that, ~that where you make those choices intentionally rather than ~kind of ~discovering how ~they, ~they happen or something like that. ~Um, I, ~I will say though,~ um,~ I don't remember exactly the JavaScript languages. It's been quite a while since I, I worked with JavaScript, but,~ um,~ yeah. Paul: I can also totally see,~ like,~ if you're running a agent over Rust, it thinks about the things it sees. So if it sees memory management, it's gonna think about memory versus just,~ like,~ calling on APIs. Mikayla: Yeah. Plus with,~ um,~ the Rust compiler, right? The Rust compiler will not let you go until you've got it right. ~Um, ~or ~at least, ~at least in a way that does, is memory safe, right? And so this makes it ~very, ~very amenable to,~ um,~ agentic coding, like what we, like we saw with the bun-rustry, right? ~Right? ~It is,~ um,~ Rust,~ it,~ it, because Rust is so strict and because Rust has such a good language, you can kinda just, [00:27:00] if it compiles, it'll probably do something right-ish, ~you know?~ Maybe the logic will be wrong, maybe the business logic will be wrong or something like that, right? But,~ like,~ you know it's not gonna crash. You know it's not gonna break anything. You just know that whatever it did specifically is probably wr- is, it needs to be looked at. But,~ um,~ yeah, I think Rust is actually the best language for agentic development. I think other languages can also be good, but ~I, ~I think ~it's, ~it's hard to beat Rust in a lot of ways. ~Um, ~it might not be,~ uh,~ just because of that safety and that certainty and how good the compiler is and how good the compile errors are. Yeah. Paul: So given,~ um,~ Michaela, that you guys are focusing on like really hard in substrate on which you're gonna build Zed ~and, ~and are building Zed,~ um,~ and the affordances that you guys can get, like engineering features, UX that you might not have gotten otherwise, are there things that you're thinking of or the team's thinking of that haven't really been touted yet that have passed your mind of ~like, ~"Oh, this could totally be like tenable, and it wasn't earlier. ~It's, ~it's not something [00:28:00] that like we would've thought of." The live editing ~is, ~is a great example, ~you know, if, if, ~if that wasn't broadcasted yet. But are there other things that excite you given this substrate of like boilerplate that you guys have worked really hard on perfecting,~ um,~ that you're ready to shoot out? Mikayla: ~I am, ~I am really excited for... It's not really a technical thing, but ~I'm, ~I'm more, I'm really excited ~for, ~for native apps to make a comeback. ~Like,~ Paul: Oh, hell yeah Mikayla: Ele- yeah, Electron and web apps, they're-- ~Like, I, ~I respect them immensely for what they've achieved and what they've done, and I am also just as tired as everyone else,~ uh,~ at ~you know, a, ~a slow Electron wrapper of a website being, ~you know, ~what you download now. ~Um, ~and I think there's, it's, I think being a native app unlocks,~ like,~ different levels of access to the system, ~you know? Um, like, um, ~one thing ~that's, ~that's happened,~ right,~ is that ~like, uh, ~Linux, for example, ~they have, ~they have some,~ like,~ weird windowing stuff, right? 'Cause, ~you know, ~oh, there's this like window, win-win-window manager that like lets you add this thing in this spot or whatever, right? ~Um, ~and being a native app framework, you can just [00:29:00] do that, right? It's just like right there, and it's like right there from the get-go. ~Um, ~I know,~ um,~ I know ~like ~managing your windows and managing all that stuff can be ~like, ~like one, one big tell,~ right,~ between like Electron apps and native apps is how they approach windows. Native apps use windows really heavily, right? Like you'll see,~ like, you know, ~if you hit,~ um,~ the settings key binding,~ right,~ in VS Code versus in like JetBrains, right? JetBrains will pop up a new window, and,~ uh,~ VS Code pops up a new tab, right? And there's just like a lot of different things like that. ~And, ~and, ~you know, ~I'm not gonna say this is ~a, ~a bad choice 'cause, again, VS Code's put on the web and other places, so ~it's, ~it's a good place to, to keep it, right? But native apps can just interact more with your system, and ~they can, ~they can have different interaction styles. And so I'm excited to, to ~like ~rediscover what our computers can do, basically,~ um, with, ~with all this. Yeah. Yeah. ~Um, ~and just like ~what, ~what performance is possi- ~like, ~like ~what, what, ~what new things can we write ~if, if, if it's, ~if it's easy to w- if it's [00:30:00] makes it, if we can make it as easy to write native apps as it is to write,~ um,~ web apps. As easy, maybe we'll never get there, but ~like, you know, within a, ~within a ballpark's distance or whatever. ~Um ~yeah. Paul: Do you see GPUI ever making its way into the mobile native scene? Mikayla: Oh, yeah. ~Um, ~so actually we recently refactored GPUI so that our platform implementation was,~ uh,~ dynamically chosen. ~Um, ~and actually somebody has a library out there that puts GPUI on iOS and Android. ~Um, ~we haven't given it like... Yeah, right? ~Uh, ~we haven't given it the full,~ like,~ look yet. ~Like, ~we don't have the types to expose touch events and stuff like that. So there's ~like, you know, it's, ~it's ~more of a, ~more of a proof of concept. ~Um, well, ~their library is in proof of concept. I'm saying that GPUI's mobile support is more con- more theoretical than reality right now, right? But,~ um,~ people have already done it, ~you know. It's, ~it's native code. ~It can, ~it can work with anything. ~You know, ~I was writing, ~um... It was, ~it was really interesting. I was writing o- like Objective C. ~Like, uh, ~Objective C is like the macOS,~ like,~ native language, right? If you wanna write a ma- native macOS [00:31:00] app, ~you know, ~it's in Swift or Objective C. ~Um, ~so I was writing Objective C bindings to do our p- put platform stuff there. And then, ~you know, ~on Linux we have, ~you know, ~the whole client. They have the whole Windows Server thing, so we're doing that there. ~You know, ~like GPUI has been designed to be ~kind of ~agnostic to that stuff and, ~you know, ~we have that obstruction there. So yeah,~ we,~ we really want it as well. Like one i- one day if we're ever you know, if we ever have, ~you know, ~infinite time, we definitely wanna get like Z, a Z mobile,~ um,~ experience out there. ~Um,~ Paul: be the one-stop shop then for people like, kind of like an actual contender to React Native, 'cause there's still that platform agnostic space that's open right now Mikayla: Yeah. ~Yes, ~yes. I will say though, one, one big challenge still though is hot reloading. ~Like, ~hot reloading is a huge problem with a compiled framework like this. ~Um, ~again, Dioxus team,~ uh,~ shout out to them. They have a very fascinating library for doing this called Subsecond. ~Um, ~but the real problem is,~ like,~ end-to-end Rust compile times,~ um,~ are [00:32:00] really hard. ~Um, ~the Rust compiler itself, ~like ~if you take just the Rust compiler on,~ like,~ just a c- just a single package, it's,~ like, really, ~really optimized, right? But there's all the other parts, like putting your packages together and linking and putting the things like that. There's,~ like, some, some, ~some challenges the Rust language itself has had. I think they're d- they're actually just starting on a, ~you know, ~end-to-end compiler performance project. So ~there's, there's, ~there's n- it's not just,~ uh,~ it's not just the UI framework, but,~ like,~ the whole ecosystem is ~still getting... It's~ still on its way to getting to, to, to React Native levels. But yeah, I,~ that's,~ that's what, kinda what ~I, I, I, I, ~I imagine. I'd actually would like one day to,~ um, you know, ~if I ever have, ~you know, ~a couple million tokens and a couple months of free time, I might, ~um... ~Actually, more than a couple million tokens. ~Um, ~I'd like to make a web native backend for GPUI so that the GPUI elements and stuff like that get turned into DOM nodes. And so then we can kinda do,~ like,~ a shadow DOM, like React compiler sorta thing right there. Paul: Sneaky. Mikayla: it, ~but so, ~but so that you get,~ like,~ the accessibility, you get the full featured access, right? [00:33:00] But you're still writing Rust and you're still writing GPUI, but you still get that sort of thing. I don't know, I don't... These are very speculative, by the way. I wanna be clear, all these things I've just talked about are all,~ uh, the, the, ~the Zen Mobile and the backend are just cool ideas we've had, not, ~um... ~They're nowhere near the roadmap, and they're nowhere near, like, where we actually wanna go, right? ~Like, we're, ~we're, w- we have actually a web support right now, and it's based on,~ like,~ a canvas renderer, and we're gonna stick with that for a while. But it's just fun things we can do. Paul: No, it's good. ~I mean, ~at the end,~ we're,~ we're near-- We're basically at the end of our podcast here, but at the end, I like to ask, ~you know, what are, ~what are you looking forward or ruminating on that's not existing yet? So that's... ~It, ~it's good to get your insight there. ~Um, ~especially if people ~are, ~are listening and they're going,~ "Well,~ th-this looks cool, but I really wanna ~like ~invest somewhere that has the potential to XYZ." So Mikayla: Yeah Paul: that somebody's already proof of concepting it on mobile just to render things,~ um,~ you're thinking about the web,~ um,~ serious contender. If people wanted to find out more about GPUI or, ~I mean, ~of course Zed, put the Zed plug in [00:34:00] there too, but GPUI and the things ~you've, ~you've been working on, where's the best spot? Is it GitHub? Is there a community? You mentioned a community that you were building up as well. Mikayla: Yeah. ~So, uh, ~right now the best spot to find GPU-Y people on the web is to sign up for the Dead Zed Discord and then go to the little GPU-Y section. We have a channel for talk, chatting about GPU-Y and then a channel for talking about building GPU-Y as in ~like ~building with and then building for. ~Um, ~and that leans into the Zed plug. ~Um, ~if you wanna see, hear,~ uh,~ try out Zed or are interested in any of this stuff,~ uh,~ you can go to zed.dev,~ um,~ and,~ uh,~ check out,~ uh, uh, ~check out our project. ~Uh, ~there's links to download Zed, some of our comp- features like I mentioned, like the parallel agents feature I kinda alluded to a couple times of ~like moving, ~moving through things there. ~Um, ~and I believe there's also a link to our Discord in there. ~Um, ~and,~ uh,~ yeah, just,~ uh,~ come join our Discord and hang out on the GPU-Y channel if you're interested in,~ uh, in, ~in helping build out that future Paul: Is that where you're mostly hanging out, Mikayla? Discord? Mikayla: ~Uh, ~yep, the Zed [00:35:00] GPU-I Discord channel ~is, ~is the place. ~Um, ~I've been thinking of expanding it. ~You know, ~we have an awesome GPU-I list. We have a few other things right there, but,~ like, that's, ~that's currently the spot,~ um, that, ~that ~if, ~if you wanna talk to Zed developers about GPU-I, that's the place to go. ~Um, ~we are also available on-- There's also a website for this called,~ uh,~ gpi.rs, which kinda gives you some links to some various places and give you an example of this. ~Um, ~and you can find the framework itself on,~ uh,~ crates.io. Just search GPU-I. Paul: It's easy to remember. Mikayla: it's easy to remember, yep. Name, the name is ~the, ~the whole thing, ~yeah~ Paul: ~Well, ~Michaela, it was great having you on and learning about GPUI, something I've never heard of before, and now ~it's, ~it's something you... If you're listening, you probably need to go check it out if you're gonna get 120 frames per second native code in a Tailwind style interface. So it was neat learning about it. ~Um, ~definitely gonna go check out Zed,~ um,~ learning more about ~like ~the ethos of the team and where you guys are bringing it, 'cause it's definitely the new kid on the block. There's some skepticism around it. So h- here you are. I hope to have you back on the pod [00:36:00] at some point, and we can see how the Zed project's going, Mikayla: Yeah, ~I would, ~I would love to. I would love to. ~Um, ~we didn't talk too much about the collaboration stuff, but we have a lot of interesting stuff cooking there,~ so, uh, ~happy to chat about that more Paul: Awesome. ~Well, ~thanks for your time, Mikaela. It was a pleasure having you Mikayla: All right. Thanks, Paul. Take care