Skip to main content

almost 3 years ago Syntax Podcast

Supper Club × How Descript Built A Next Gen Video Editor In The Browser With Andrew Lisowski

Wes Bos

Wes Bos Host

Scott Tolinski

Scott Tolinski Host

Topic 0 19:57

State machines help manage complex components like drag and drop

Wes Bos

each panel itself has its own state machine.

Wes Bos

And re really, the thing that drove x state home for me,

Wes Bos

So, for example, with these extended panels, you can,

Wes Bos

was, when I was interviewing David, he said,

Wes Bos

in your React code, you can just be firing events whenever. So, like, when the mouse goes down, just Fire the mouse down. It doesn't really matter what state you're in. And then the state machine like, parts of the video into local storage, and we're able to, and it just makes it really nice to work with.

Wes Bos

it simplifies your code immensely because, like, your react code just becomes, okay. When these things happen, fire off some events, and then the the machine can go, oh, I'm in this state. I know what to do with this event. And,

Wes Bos

there there can be multiple of them on the screen, and then it was additionally introduced that you can dock them on certain parts of the screen. So now I have to have a thing that controls multiple panels at once and knows how to position them and update them. So what I ended up doing is, for for overdub, it's running in the cloud. And then our newest feature, which is kind of a video AI feature, we just came out with it. It's called eye contact.

Wes Bos

you can have you don't have to load up the whole file. It just starts streaming down what you need, and then it uses web codex to render that into our canvas. That's so cool, man. Web tech. It's, like, always astounding how much you could do with it because I you know, just even recently, I was getting into, like,

Wes Bos

And then when docking is enabled, So they have, like, a cool one called, like, presence, which helps with animations and won't unmount a component

Topic 1 27:15

Radix helps avoid recreating accessibility functionality from scratch

Wes Bos

consistent But I really want AI to enhance me and not to replace me. So, like, publicize that one. But, like, for for anybody listening, build your own apps to discover things like this Yeah. I did the same thing with music. Like, I have 2 music apps that I am literally the only user of, and they keep me up to date on music just because I built them. Yeah. That's the the coolest thing. I I definitely second what you know, the the, I follow a bunch of interesting people on GitHub, and There you would not believe just how many interesting projects pop up Mhmm. In that feed because somebody interesting has starred something somewhere along the way. And,

Wes Bos

and that was a whole lot of code. You have there's different modes you're in. You have to announce When something changes, you have to announce

Scott Tolinski

absolutely wild where I have to keep reminding myself that I can use them, where in the syntax side, I was Working on, you know, doing something with media queries, and I'm like, this would be so much better as a container query. Why am I like, why is my brain not there yet? I've been asking for this my entire career.

Scott Tolinski

Yeah. In fact, we we just actually dove into that quite a bit on the new syntax site using, somewhere in the back end? So,

Wes Bos

defined a drag and drop, who made this library and is very, very knowledgeable about the space to improve this. So, and we've done that in the open also. So all the improvements that we've paid for this guy to do to to this area of our app, anybody else could actually install this package and start building similar stuff. Wow. It does use FFmpeg, building consumer facing apps. Like, No matter We're moving to turbo repo, ever so slowly.

Scott Tolinski

there's anchoring,

Wes Bos

You talked your libraries, but also, like, build tools as well. I'm very curious about that. Yeah. So, it's it's all in TypeScript. The the front end is

Wes Bos

Yeah. It's a it's a lot to handle. Like, as I said, I did the tree view, and the just implementing the tree view spec, it was A lot. And then it's like, oh, well, now you need drag and drop, and nobody's actually

Wes Bos

ARIA Specs. So you I I literally went and looked at every single open source tree view, and I was like, how do they handle it? And real there was no no cohesion. Everybody did it differently. So I tried to go with, like, the best option and then provide, like, some screen reader text to be like, hey. You're on our tree view. Here's how you might use it. Yeah. I I did. I I was like, okay. I'm gonna go build a drag and drop from scratch. And I built it in, I don't know, probably 50 lines of code. It's not too difficult with the drag and drop API. Then I was like, okay. Now I'm gonna make it keyboardable, and Stitches,

Scott Tolinski

you know, top layer API with Popover API, you have,

Wes Bos

both writing, TypeScript, JavaScript?

Scott Tolinski

which is like a whole thing because popover is implemented

Wes Bos

effort right now. That is a it's a community group that's working on every Offline

Scott Tolinski

in like, they're kind of required because you can't do the whole position relative business with a Top layer. I mean, it it's it's a wild world, and there's a lot of really cool stuff coming. But, yeah, right now, it is still a very rocky road for that. So much cool stuff coming.

Scott Tolinski

You know, design documents in Figma or something. Yeah. We we keep those,

Wes Bos

It used to be like a single repo with just a load of code in it. Now, over the past 2 years, one of my jobs was organizing and, like, Making it into a more functional monorepo so we could use a lot more of the tools and, like, separate our concerns.

Wes Bos

It's a place where you you would hope the platform could have, like, brought some more primitives to help us out, and I I think there is an effort Going on right now for that to happen, like, I know there's been a lot of work around, like, custom styled selects, which are, like, the bane of everybody's existence. Yeah.

Wes Bos

Like, why why ARIA, and, like, literally, that it has, like, But then some of my components just got so big that it was, like, hard hard to even reason about all the different states.

Wes Bos

like, you would need to build your own components that I don't necessarily have documented. And You pretty much have to go with a library like this if you're building a complex app because I imagine doing all the accessibility stuff yourself would be

Wes Bos

so much over the past year. Like, the, the evergreen browser effort by, like, all of them to, like, make sure that CSS is up to date. Like, We got con container queries. That's like Yeah.

Wes Bos

Documenting all of these UI libraries? Because you're right. We should have it in this should just be part of the browser. Right? We should have the ability to have a drop down menu that's accessible, and we I'll have to,

Scott Tolinski

What a so you guys also have, like, a full marketing site. Mhmm. Is the marketing site

Scott Tolinski

cohesive in a way through, to the app or either of the apps in terms of design language, or do you just keep those is that it is truly

Wes Bos

My whole career, I've I've been hearing no container queries ever. Too too bad for performance, and now we have them. It's It's crazy. It's it's dump it out all out for them, Send it to them, and they were able to send us back a video.

Scott Tolinski

in Most browsers in a way that's easy to polyfill, but anchoring is not,

Scott Tolinski

connected at all man, that's that's really cool. They call them AI balls. I would like that for every photo I take because I found out we I just went on vacation, and I just found out that when I take a selfie,

Wes Bos

right, accessible,

GitHub home page shows what's trending among people you follow

Scott Tolinski

stuff gets so much social traffic. It's wild. Like, I I I don't wanna spend any time there myself,

Wes Bos

so valuable just to, like, keep your your hand on the pulse of what's happening in your community.

Wes Bos

but every now and then better. Yeah. It could be so because it's always just, like, freeCodeCamp, some very cool dudes. Yeah. Totally.

Wes Bos

you know, like, at the top of it because, Like, those are the ones that people are starting,

Scott Tolinski

LinkedIn

Wes Bos

it'll put that all at the top and group it all together. Whereas on the home page, you might See, oh, 2 people started this 2 hours ago. 4 people started 10 hours ago. It just kind of, like, groups it all in a much easier to process way, and I I find a lot of stuff like that. Oh, that's good. Is that publicly available, or is that just, and then the the built in tools for debugging your broken tests are like Of all the companies that contacted me, 40 different keyboard interactions. So, like, that one was, like, a it was a hue huge effort to do that. And then another one, which I'm actually a little more proud of because I didn't just follow a spec, was our extended panel. So, like, it's a pop over that you can reposition on the screen and then dock in different places.

Wes Bos

Yeah.

Wes Bos

Projects. Yeah. I I I feel like you could build, like, a a nice social network on top of GitHub that, like, All programmers would just flock to.

Scott Tolinski

But the amount of people that do discover things on LinkedIn is kind of shocking. Yeah. It's a much different culture than, the social networks I'm I'm used to.

Wes Bos

So if you don't already do this, I would say go follow all the people that you think are interesting. That'll make interesting things pop up on your feed. I built my own little app on top of the GitHub API that organizes all of the GitHub home information into a way that I can see, like, What's trending? So, like, it'll it's just a list where, like, if 10 people start a thing,

Wes Bos

That could be our our Twitter replacement, but I don't think anybody wants another LinkedIn. It's it's funny that you said mentioned LinkedIn because

Scott Tolinski

I definitely

Wes Bos

and, they could do a much better

Wes Bos

The home page kinda sucks, but the Are you hipster smoothie? Is that you? I am. Yeah. That is that is me across all platforms if you wanna find me. Gotcha. Man, that's we had,

Scott Tolinski

I I love that, especially if you're, you know, the type of person who's inclined to look at code to learn things. Yeah. The GitHub trending is is okay,

Topic 3 56:34

Lexical for building text editors, from React's Dominic Gannaway

Wes Bos

it was hard. Like, at Descript, we use Draft JS, and we We jump through a lot of hoops

Wes Bos

And your second one? And my second one is, So it's It's really just like a pretty standard React tech stack. Like, we use Jest.

Wes Bos

look like it's a part of the script. Whereas in Lexical, it's all just built straight in. So and it's really easy to, like, extend it and, like, add your own custom nodes. So if you're building your own, like, text Editor thing and you're looking for a framework to do that with, I would highly recommend Lexical because, like, over a weekend, I was able to build a Collaborative script editor, and it was, like, dead simple. Wow. Sweet.

Wes Bos

shad c n /uiorui.shadcn.com.

Wes Bos

became evident. Like, it wasn't the most accessible thing If you wanted to add, like, more UI

Wes Bos

This one is it's a,

Wes Bos

text editor framework for re It's made adding features really easy because it's like, oh, we just wanna extend the state machine in this part. Like, 1 one I just Added was to our numeric field, which is also built on a state machine.

Wes Bos

not as good. Like, Draft JS itself had to pick up on a lot of shortcomings that Content Edible had. And as they built it, they reported all of their findings to the various browser teams. So over the years, a lot of the the Draft JS code base kinda just

Wes Bos

e things into the document,

Wes Bos

amount of knowledge in this area. And what you can view Lexical as is his 2nd attempt at making a content edible framework. Okay. And it's the successor to Draft JS. Yeah. I was gonna ask how this fit in there. Yeah. Yeah. So when Draft JS was built, Content editable in the browser was We can actually with AI and, like, Convincingly with AI, is there really all that much demand for putting

Wes Bos

well, not just for React. It's for everything.

Wes Bos

So he has an immense

Topic 4 09:55

Web streams help with fast start up by loading only needed media

Wes Bos

that kinda did what we wanted to do called lib a v j s.

Wes Bos

in the web. There's some awesome versions of it, but,

Wes Bos

It's an Emscriptum packages that make up Radix components Mhmm. To make my own components.

Wes Bos

process the video? Like, I know you just not being able to set the bit rate. I don't know if I don't know if you're I don't wanna put you on the spot there, but, Okay. We'll make sure that's linked up. Awesome. Thank you so much for coming on. Really appreciate all your time.

Wes Bos

And, what what it is is it hurts for me to look at. But with Playwright, it's, like, super simple.

Wes Bos

we found a library that had, like, 30 stars,

Wes Bos

based You could use Tailwind if you want. You could use CSS modules if you want. You could use style components.

Wes Bos

Let's talk about,

Wes Bos

It's doing a a lot of that stuff, So, you can use this to just, like, jump start a project. So you're going and you're like, oh, I need to select. You just run their CLI. It adds a select into your your code base. You can start using it. It looks beautiful. It functions how you want, And then you realize, oh, I I actually meant a drop down menu. Then you add that, and you can just, like, iteratively add all the different UI pieces to your code base and just Yeah. Get your the tool you're building off the ground, like, instantly, basically.

Wes Bos

Like, how do you actually

Wes Bos

thingy that, like, has a bunch of the, like, FFmpeg put them at different places on the screen.

Wes Bos

but There is no FFmpeg,

Wes Bos

that's I now have better upload, so it's not so much of an issue.

Wes Bos

we you showed it in here. Alright. Yeah. The the 2 big ones in my mind are this and React ARIA. React ARIA is,

Wes Bos

web stuff?

Wes Bos

lower level Interviewed somebody from the company modules. No longer around anymore, but they produced, Radix

Topic 5 24:36

Uses Tailwind for layout styling and CSS Modules for components

Wes Bos

UI library, so it comes unstyled. So you can style it However you want.

Wes Bos

from my view, when creating a design system,

Wes Bos

is, I I've been described as coworkers as a machine.

Wes Bos

Add to it because, I think you can try it in some use cases? Yeah. I'm also excited for that project. Like, What Tobias did with Webpack is is amazing.

Wes Bos

it's like Tailwind plus CSS modules in the end, So all the letters are really thin, 80 characters tends to take up all that much, and you can fit a lot of columns of code on your screen at once.

Scott Tolinski

a class and then apply it? CSS module style? Import

Wes Bos

style utility library that's mostly just for layout, but it's

Wes Bos

star styles,

Wes Bos

we have, like, a tailwind Became not needed. And then over the years of having it exist, like, the shortcomings, flex, flex call. All those things that make it really easy to lay out your components, that's handled by, like, Our tailwind style library.

Wes Bos

Like, around halfway through the project, I realized that we needed a tailwind style thing to, like, Sure, it can run on your machine, but can it run a 1000 times on CI without ever breaking?

Wes Bos

What I've devised for our repo through communication.

Scott Tolinski

to do our styling. So you're doing, like, the whole import, you know, a browser component to this, the video

Wes Bos

one of, like, the the key rules when When creating components is a component doesn't care about its width, and it doesn't care about its margin. So anything that has to do with layout, a component should not care about. And that makes it really easy to go. Okay. I'm using this component, and now I'm the parent, and I'm controlling those things.

Topic 6 47:18

Andrew's podcast Dev Tools FM features interviews with developer tool makers

Wes Bos

And so I, like, reported it to them. They're like, oh, this is top priority because it's data loss. Right?

Wes Bos

I use the Apple, whole, like, trackpad.

Wes Bos

rather than just like, oh, you can generate a video that's not really even usable. So, like Mhmm. For example, like, we tried to put DALL E 2 in the product, but, like, which, like,

Scott Tolinski

over it.

Wes Bos

So for my font, I use Iosevka, can only handle,

Wes Bos

for

Scott Tolinski

nonstop gouging you, over the course of years to release absolutely nothing. So, How does Descript handle, like,

Wes Bos

topiary keyboard, Crazy hard to, like, understand

Scott Tolinski

0, like progress in that app, and it's just, like,

Scott Tolinski

So very very stoked about that. About the the polar opposite of Descript because,

Wes Bos

I really hope that it works for me. Are you? Okay. Good. Because, like, I literally told me at Reactathon, and I went straight. Yeah. I I went straight to the the engineering team. They're like, yep. This is a problem. We've been working on it.

Scott Tolinski

supper club questions, which is the things that we tend to ask Everybody, just,

Wes Bos

Like, it's

Wes Bos

It's amazing to have a person that, like, act like, is basically the number one user of the product and can give you, like, actual insights into, like, How how we should be

Wes Bos

A text editor's theme and font.

Wes Bos

The the main difference about it, it looks really ugly at first, but it optimizes That horizontal space is so much more valuable than the vertical space for me. Yep. And then for my editor theme, I use Versus code, and I wrote my own Theme.

Wes Bos

The founder of Descript is the,

Wes Bos

which feels real nice, but, I'm I'm not really all that tied to it. What about

Wes Bos

former founder of Groupon.

Wes Bos

progressing and, like, what the true north star is rather than just like, oh, this guy runs a product. It's like, no. This guy wants this product To be, like, the next thing for video editing. Sweet. I'm glad to hear that that's being worked on because I have I've been whining about ScreenFlow for probably 8 years now.

Wes Bos

am I looking forward especially, like, all these AI editing features and whatnot. Like, these are things I need,

Wes Bos

I'm working on a MacBook Pro, And, editor for,

Scott Tolinski

in it, there's

Wes Bos

No. So, like, we haven't really been pursuing that angle as much because it just doesn't make sense for our users. Cool. Well, I am pretty stoked about Descript. I've been I've been coming back to it they basically communicate up to a 2nd parent state machine that handles all of the docking and the re resizing and repositioning horizontal space.

Wes Bos

couple months to see I have a a couple issues still outstanding with the export quality,

Wes Bos

Mhmm. And freaking guy Really? Just I I was like we're tweeting about it, and he just DM's me. He's like, let's jump on a call. I was like, holy like, this guy cares a lot about making this a kickass product. You know? Like, it's Oh, yeah. He just jumped on a call immediately with me, and I explained to him the actual issue. So a really cool guy. Yeah. One one of the biggest surprises when I got to Descript coming from a 10,000 person company was how much I interact with the CEO

Scott Tolinski

Yeah. I'm over it too.

Wes Bos

Maybe they're longer than that. Yeah. They're making it into just like a glorified PowerPoint, you know, and it's

Wes Bos

AI companies is like we're trying to make the AI features make sense for you which I then tamed by using x state and,

Wes Bos

and how much he loves the product.

Scott Tolinski

0 innovation.

Wes Bos

I'm like it's it's still my editing thing. It's still the best thing for me, but, man,

Wes Bos

that I could not get back, In there to be able to process and export the video, or is it literally using all web

Wes Bos

You guys took 3 3 weeks or 3 months to fix this thing, so

Scott Tolinski

we needed disruptors in this space, for sure. I found a a bug in ScreenFlow where

Scott Tolinski

It it's it's been a a pleasure. Let's get into some

Wes Bos

and like, load in a bunch of JavaScript just to make that that type work. But to give brow browser vendors a little credit, they have added

Wes Bos

I, like,

Wes Bos

like,

Wes Bos

Still images that don't really look all that real into your videos? I don't know, but I'm Pretty sure it's a lot. It's either local storage or IndexedDB.

Scott Tolinski

Well, thank you, Andrew.

Wes Bos

which

Wes Bos

Oh, good. Good. Because,

Scott Tolinski

There is

Topic 7 21:58

State machines prevent bugs by disallowing impossible states

Scott Tolinski

or any of those, like, neat little tools they have for you?

Wes Bos

You weren't used to not be able to drag the border to, like, drag the field while You were editing because the state machine just didn't allow that, so I just added a new event, mouse down on border, and the only state that reacts To that is while you're editing. So, like, I can be sure that I didn't really break anything else and easily add on new features. Nice. Oh, that that's a really good, like, explanation of of why you would want to use a because, like, I've been in so many apps before where, like, you hover over something, And then, like, you hover off a little bit weird, and then you open something else, and they're, like, overlapped. And you're like, I can't get out of this. Like, I can't click the x because This piece of UI is is in the way or or whatever. But, like, if you literally

Scott Tolinski

Did did you end up using the, visualizer what makes Descript a really interesting app technically, we're gonna be talking about some of the redesign and design system effort

Wes Bos

eliminates an enormous category of bugs.

Scott Tolinski

Yeah. Radix. I would say that. It's rad. Yeah.

Wes Bos

So you obviously have

Wes Bos

does this look right? Are there extra things that this thing should be doing? And it's a it's an interesting way to collaborate. I'm trying to understand or Maybe just ask some more questions about the the radix. You

Wes Bos

So but I'm just looking at this libavjs.

Wes Bos

it's a it's a component library. Right? Like, it comes with a whole bunch of different a pop over, a progress, Scroll area, select separator, slider, switch tabs, toast, toggle. Right? And then, like, send that. If there's there's something in there that you don't have, then Then you have to go ahead and extend it and make your own version of that.

Scott Tolinski

Wow.

Wes Bos

For them, or how how do you write your CSS?

Wes Bos

I haven't. They're really cool, though. It like, the The the two way updates are are a lot of fun to watch. Like, you can write some code. It updates your graph. You can you can update your graph. It updates your code. It's a a super cool feedback loop.

Wes Bos

I think I think, in my case, those

Wes Bos

And that state does not exist. There's no possible chance for it to open up. That's that's really well put. Yeah. So if you if you have, like, a bunch of state Variables like 4 different booleans, and then you're like, oh, man. I have to, like, set this one to that when this happens and vice versa.

Wes Bos

radix? Radix? How do you say it?

Wes Bos

CSS in each of these components

Wes Bos

that tool is Best for sharing with non developers because Mhmm. Since it's just a a graph and a little bit of understanding can get you to understanding the graph, you can easily Share that with a PM or a product designer and be like, And with the

Wes Bos

have to define every single state

Wes Bos

are you writing

Topic 8 06:30

Native app is Electron, Web app uses Web Codecs and streams media as needed

Wes Bos

is a really good I d a really good place to start building videos. So with Descript and all the stuff we have, you can go in. You can start writing your video. You can chop it up into scenes. You can create the whole video without ever saying a word And then,

Wes Bos

was is I just, like, looped over it and dumped the video tag into a Canvas element. But, like, with web codecs, it will, like, literally allow you to

Wes Bos

you don't have to do that dumping. Yeah. I I believe that,

Wes Bos

individual frames of the video, right, without having to dump it into a campus. It is a it is still a canvas Chunk, I believe, but, on on Twitter,

Wes Bos

What what I did then Alright. Let's move into sick picks and, shameless plugs. Did you bring a sick pick for us today? I did. Yeah. So, the first one is lexical.dev.

Wes Bos

and then have with our AI voices just to add the same type of plug in system because I feel like it just allows for such creativity.

Wes Bos

A full video that you could publish. But if you like the video, you can just pop in with our recorder and start, like, recording over the parts where you think your voice would fit best. Nice. That's really cool. And, like, the the web codec stuff, I've dipped into a little bit here and there just when when playing with video. And, like, in the past, when I've Descript from what it used to look like, to what it currently looks like. And a lot of like, I was literally just given pages and pages of between all of them. And without x date, I think it would just been, like,

Wes Bos

Be able to scrub through it and then take a, like, a screenshot of the one that I wanted and download that as a thing. And, Ace.

Wes Bos

Worked with video in the browser.

Topic 9 15:11

Recorder handles failures gracefully with backup of backups

Wes Bos

That's that's pretty high. Yeah. Firefox allows 2 gigs, and Safari allows 1 gig.

Wes Bos

80%. So if you've got a 100 gigs free, Chrome is allowed to have 80% of that, and every origin, so every domain name is allowed 75%

Wes Bos

And then download it to the user's IndexedDB and then be able to, like, alright. I'm going on a plane. I'm gonna watch Wes's course. And then when you connect, it will It will sync up, and it looks like I'm probably able to do that. I think I'm I'm I'm moving away from Vimeo anyways, you're using web tech, but, like, is there any, like, WASM based stuff So it's nice to be able to like, it will learn your voice. Right? Do you know how do you work on any of that stuff? How does that work? I don't work work on it, but I I can tell you about it. So, like,

Scott Tolinski

an app. You know? Yep. And only allows you to record into Chrome. Makes sense now. Yeah. That does make a lot of sense now. Wow. Wes, you just unlocked,

Wes Bos

downloads for my video courses, Radix. Radix? Radix.

Wes Bos

Float an element float an image and wrap the text around it. And it's another thing to build, like, a, like, a proper I like, I made, like, a little thing for my TikToks that I would import a video, and then I would

Wes Bos

complex UI with lots of interaction and drag and drop and all that type of stuff. So you said you were involved in or or the lead in building a lot of this UI? Yeah.

Wes Bos

and it's

Scott Tolinski

So I'll probably be able to do that at the same time. Yeah. You know, is now I mean, that's probably what Netflix does or they offer, say, for offline watching.

Wes Bos

I really enjoyed the, like, subcomponent pattern where you have, like, a root, a trigger, a content, a set of components that all go to go together under 1 object.

Wes Bos

I I myself am a a React developer. And throughout all the design systems I've created, designs, and I took that and translated it into a design that worked really well together.

Wes Bos

finally, because they they jacked their rates on me.

Wes Bos

some paragraphs and an h two tag and the, like, the local first ones. But,

Wes Bos

when you do that, you take yourself out of all of The niceties of, like, tracking how how far you are and if you want to bookmark something, like, all of the features of being able to track where you are in the video It's just here's a bunch of MP 4 files, and you can you can watch them on VLC. So what I would like to do is to be able to just say, like, make this available offline, Different parts of the video, it's it's astounding how much knowledge he has about this area. That just goes to show you if you, gain enough expertise in anything, you can be Desirable for for big time work. Kidding. It's it's true. Like, it's it's tricky stuff. Like, we so we use Riverside. I'm sure you do as well, and and we hit little half the people are like, Use a for loop. That's impossible to read, and then the other half are like, just learn reduce. You know? It's it's just, like, weird area where you when you learn something obtuse,

Wes Bos

fails, you can see the part file that fails. We don't we don't try to hide it from you in any way. Cool. Yeah. I I'm just looking it up.

Wes Bos

Yeah. Yeah. I wonder. Did they do that in the browser? Alright. Let's we'll dive into it. That'll be a whole show. Yeah. But Let let's talk about, the actual UI of the Descript app because

Wes Bos

Chrome and Chromium based browsers allow 80% of the disk space to be used, And from that, 75% can be used by each origin.

Wes Bos

it's one thing to design how they built, like like like heavy lifting tech. Like, not like like Notion is is pretty heavy, but, like, So 80%.

Wes Bos

Over the course of 9 months, I I took,

Wes Bos

Riverside has a And like you said, data losses, it can't happen. And it took them, like, 3 months to fix it, and I was, like, so frustrated with that. I was, like, literally, I lost a video

Wes Bos

I was I was inspired by a lot of the tech that I found on my podcast.

Wes Bos

of that.

Wes Bos

because I've been thinking about it a lot is, like, I offer Looking at it, right, I need to cock my eyes up a little bit.

Topic 10 32:52

Playwright helps create reliable tests by waiting until actions are possible

Wes Bos

to to make sure that I didn't break all these different keyboard interactions. And by the time I was done testing the tree view, we had 50 different tests. And those Those tests have caught so many bugs.

Wes Bos

for y'all? Personally, it's the design system test because, like, I'll go back to my tree view example. That was the that was the component where I was like, okay. I need to add Some tests

Scott Tolinski

In this e to e, like,

Wes Bos

it also has a trace in the failed test report. So you go to the failed test, you click on the trace, And then you can see a whole timeline of the the test that ran. You can hover over it, see how it changed. You can see all the network calls. You can see the console, And then you can even inspect the page at various points in time. So it's like almost

Scott Tolinski

world that you found to be the most

Wes Bos

a time travel debugger. Not quite it's not quite replay, Those are, like, the the easy ones and the ones that came with Radix, but, Radix doesn't have everything. So, like, as a part of that, I implemented

Wes Bos

And I just added a little helper that, like, on every test, you can destructure storybook. You can tell storybook where to go, Then you get a page object that you can interact with. So it's just like the

Wes Bos

You get an HTML report with all the failed tests. It shows you the steps it was taking, what it waited on. It'll put a video in there. And then the thing that blows everybody's mind when I show them too is You can resize them and make them bigger and smaller.

Scott Tolinski

You know, 1 out of every 8 runs I'm gonna do, something odd is going to fail.

Scott Tolinski

and Cypress does a lot of these things too, like being able to,

Scott Tolinski

not reliable in the sense that,

Wes Bos

the time to test is very, very quick. Did you have, like, any specific types of tests And when you have very when you have very complex things,

Scott Tolinski

important we pick a few different ones here. But first and foremost, what kind of computer mouse and keyboard are you working in?

Scott Tolinski

that's good to hear that you you're

Scott Tolinski

the system in Cypress failing. So,

Scott Tolinski

dive into,

Scott Tolinski

You know, the dom at any given point, like a a failed test. But the one thing that I found with Cypress

Scott Tolinski

on this to be really reliable. We have added this to our new repo. I haven't ridden any tests with it just yet, but,

Scott Tolinski

or the code failing and not just

Scott Tolinski

that it was my test failing

Wes Bos

definitely in my future here. So glad to hear you had such a great with it. Yeah. And they make it really easy to extend. Like, we, the 1st place we started using it for was testing our storybook,

Scott Tolinski

Cool. Yeah. I I have quite a bit of experience with Cypress,

Wes Bos

they started breaking. And I was like, oh, man. My test broke immediately. And they actually were finding issues because, like, 1 out of every 10 times this weird little time out thing happened, and it was something we would have never caught on our own. But since we were running tests in CI nightly, we found it really quickly.

Scott Tolinski

And I never felt totally confident utterly important, Especially with design systems. I was gonna say you mentioned monorepo. Do you what what tech did you use for your monorepo?

Wes Bos

they're they're so good. It's like I can't I can't even explain, like, how good they are. Like, a a test fails in CI.

Wes Bos

it does a lot of waiting,

Topic 11 43:51

Working on using AI voices to smooth audio edits seamlessly

Wes Bos

Like, Descript was was early on. Like, Descript was before all of the chat g p t and all this stuff, like, sort of blew up.

Wes Bos

Oh, it's it's all running in the cloud. So,

Wes Bos

to holy crap,

Wes Bos

Are Those models running in the cloud, or is it or is it running on your computer?

Wes Bos

in, like, 6 months. And,

Wes Bos

Move suddenly, but it's a really hard problem because there's like Yeah. There could be so much going on in the picture. Like, say this plant back here is, like, swaying.

Wes Bos

commercials where, like, The Rock is Eating something Yeah. Is terrifying. It's it's funny it's funny how quickly we went from LOLAI Yep.

Topic 12 00:00

Transcript

Announcer

is the Syntax supper club.

Announcer

This

Announcer

so buckle up and grab that old handle because this was going to get wide eyed as old.

Scott Tolinski

Today, we have a really Awesome guest from Descript,

Scott Tolinski

Welcome to Syntax.

Announcer

I sure hope you're hungry.

Announcer

Wash those hands, pull up a chair, and secure that feed bag, because it's time to listen to Scott Tolinski and Wes Bos attempt to use human language to converse with and pick the brains of other developers. I thought there was gonna be food,

Announcer

Hoo. I'm starving.

Topic 13 51:58

Uses Iosevka font optimized for horizontal space

Wes Bos

I So,

Wes Bos

So Is it available? Yeah. Sure. Sure. I've been a programmer for, like, 10, 12 years now. I've always had a passion for

Wes Bos

So

Wes Bos

so I made my own.

Wes Bos

JavaScript on microcontrollers,

Wes Bos

and I have to have large text so that you can see it, right, if you're watching it on your phone or you're you're half screen watching it.

Wes Bos

GitHub dark high contrast. So I I I saw the GitHub dark theme that they came out with a few years ago, and I was on, like, the built in high contrast theme. And it was just like, I couldn't See anything, so I just made everything as contrasty as possible. I want, like, the code to jump out at me, so fire and forget events.

Wes Bos

GitHub is a a great tool, but, like, I don't think many people use it like this.

Wes Bos

now we've got his I've I've logged in to him a few times. Oh, really? Yeah. He he's a cool guy. Really cool guy. That's what I love about conferences too. It's just, like, you just go like, I think we went out for lunch, and And just like me, all kinds of really neat people. There was, like, 6 people out there, and I was like, these are all Well, that's good.

Wes Bos

So

Wes Bos

Nick Hare, when we talked about,

Scott Tolinski

What do you do to stay up to date on web stuff?

Topic 14 01:03

Descript focuses on making AI useful rather than just generating random stuff

Wes Bos

to talk about,

Wes Bos

Yeah. I have a podcast.

Wes Bos

It's called Dev Tools FM. We talk to people who make developer tools, ask them why they built them, things they learned along the way, And then usually, like, some future facing questions and WebDriver, Well, running a podcast where I look at all the new things happening really helps with that.

Wes Bos

Welcome to Syntax. How's it going, my man? It's going pretty good. I'm excited to be here. Yeah.

Wes Bos

about the field they're in. Right on. Right on. So why don't you give us a a quick rundown of

Wes Bos

I actually started it when I started Descript.

Wes Bos

a better rundown of the actual product.

Wes Bos

somebody on the podcast

Wes Bos

the big 2 are Figma and Descript, which is graphics editor and video editor, and they're all built with with web tech. And How that's even possible blows my mind, so I'm pretty excited to have you on. So thanks a lot. Yeah. When I when I joined Descript,

Wes Bos

What Descript is. I know I gave a sort of a it's a freaking web editor, but, like, you can give us a better

Wes Bos

Figma was one of the things that I looked at, and I was like, okay. That's amazing.

Wes Bos

who you are, what you do, as well as

Wes Bos

I I think we should mention just right off the bat, for anybody listening, I know people sorta dip their toes in. Descript is a freaking video editor built with browser tech.

Wes Bos

Blows my mind. I'm really excited to have this interview. I've been trying to get

Wes Bos

Is Descript gonna be that for video? And over the past 2 years, we've taken a lot of steps to get to that vision. Nice. Oh, that's awesome. And and we should also say, like, you have a podcast as well. You wanna shout that out right off the bat? Yeah.

Topic 15 58:27

Shad CN generates Tailwind styled Radix components

Wes Bos

like you just get the code and then like you're not npm installing. You're not it's not a high order component. It's literally just some code, and you edit that thing, and that's it. You don't have to update it or anything. That's your code now, you know, but just like a base. That's a template back from back in the day. My code now. Yeah. The only thing it adds to your project is, like, some dependencies, like, on Radix. But past that, you can choose to update with them, or you can just Take that as a starting place and, like, build your own your own components off of it. Beautiful.

Scott Tolinski

Head on over to syntax.fm

Wes Bos

Yeah. Thanks for having me. Yeah. You're welcome. Yeah. Awesome. Alright.

Scott Tolinski

And don't forget to subscribe in your podcast player

Wes Bos

That's and it just you just download,

Wes Bos

drag, drop, put it in your code base? You just run npx shad c n add component name, and then adds it straight to your your code base. Scaffold Very simple. Yeah. Been been hearing about that a lot lately, which is just

Wes Bos

Alright. Shameless plugs. My shameless is an easy one. Go to go listen to dev tools f m. We we try to put out, a lot of content. Like, as as Scott asked me, how do I keep up to date? I keep up to date by listening to experts in the field talk about things they're passionate about. So,

Wes Bos

So what this is is,

Wes Bos

into a directory, But then, to make it make sense within our product, and I think that's really kinda what sets Descript apart from other, like, And then as more and more requirements were added to that, it just became, like, this beast of a component,

Scott Tolinski

for a full archive of all of our shows.

Wes Bos

already prestyled with Tailwind.

Scott Tolinski

Ace.

Wes Bos

if you wanna hear some good conversations with some cool creators, come on by.

Wes Bos

it's a library, but it really isn't. It's more of a generator framework, and what it generates is design system components.

Topic 16 03:16

Andrew wanted to move from platform work to being hands on with products

Wes Bos

timeline based editing like you might be familiar with in,

Wes Bos

at first glance, you might just think it's like a transcription A year and a half ago, we

Wes Bos

around 2 years ago, I wanted to make a change and, I am a a very like, there's a lot of people have a lot of things to say about Webpack, but I still think of the bundlers Dominic built, both React DOM and Draft JS.

Wes Bos

they were doing something very interesting, and they had that, marketing video by Sandwich, which Any marketing video by sandwich

Wes Bos

editing a timeline to edit your video, You transcribe everything up front, and then you edit the script. And then we try to lean really hard into And for a few years, I basically just worked completely in the open.

Wes Bos

And we have a whole host of cool AI things that we do. And now that we're moving to web, we have to do a lot of very interesting things to make that work in a browser because video is It's quite a big thing. It's like So that I've stuck with it. I've tried to switch to other ones, but every time I put another one in my editor, everything gets really wide. And I'm like, I can't See his bar. Sorry. I just go I go straight back. Yeah. Oh, I should try that because, like, that that's a problem with me as well because I do coding tutorials, and I have to have a Small screen, I tried to move to a mouse, and, like, I instantly started getting wrist and elbow problems. Mhmm. And then I moved back to a trackpad and everything was okay. I I don't know what the I like that too. Yeah. Yeah. I don't know if there's ergonomic science behind it, but I've never had problems with it. And then I use A real force some m model.

Wes Bos

go away from more platform y things to, like, being able to get my hands in the product. And so I made the transition to Descript because,

Wes Bos

So what Descript is

Wes Bos

the script based interaction rather than the time line based interactions.

Wes Bos

is, webpack is so flexible, and you can do so much with it. And, that's why I'm really excited about Projects like RS pack that are saying, like, okay, web pack,

Wes Bos

whatever media that you have. But, what what we really are is we're trying to redefine the video editing experience to go from I was actually talking to someone on my podcast about the 2nd choice, which is, like, Run Docker containers on the cloud and do, like, heavy lifting in a Docker container somewhere and just stream that to the browser. That was an option, but the option that really got all of our engineers excited

Wes Bos

which is a lot more natural. So instead of, Like, how do you make that look good too? So, like, that's something that we've been trying to solve, but it's like, video AI is is harder even though that it's like a booming space right now. Oh, yeah. Yeah. Yeah. Everybody's seen the AI

Wes Bos

gets me.

Wes Bos

the tools on your Mac or Premiere, things like that, to a script based editing,

Topic 17 36:18

Critical to thoroughly test core design system components

Scott Tolinski

What about, like, turbo pack? Have you dove into that at all?

Wes Bos

that's when I eventually built my own automation

Wes Bos

heavily on Lerna

Wes Bos

I think Vite and, by extension, Rollup are much more user friendly,

Wes Bos

Ours is, like, I'd say hodgepodge right now. Like, it was on yarn yarn workspaces.

Wes Bos

Is is that out yet? The last time I looked, it wasn't quite out. Yeah. Yeah. I have no idea. I would imagine that is

Scott Tolinski

not ready, but I think you can

Wes Bos

and,

Wes Bos

I haven't yet.

Wes Bos

those tools. And, to make a UI but it's good enough to get you to the point where it's like, okay. We can actually see the issue that happened. And, like, literally, right as I implemented something you got? It it is publicly available, but I didn't set up the auth Right. So now when I go to it, my browser thinks I'm trying to hack myself. So Yeah. I might not I might not,

Wes Bos

or My my own release automation tool, is the most powerful. Whether you wanna say it's the most user friendly is a much different argument.

Wes Bos

When I was at Intuit, we were, like, heavy in the monorepos. We were, like, the 1st JavaScript team at Intuit to start doing monorepos.

Wes Bos

And back then, we relied

Wes Bos

Just pretty much the standard tools. What about sorry. Did you say what your build tool was? Oh, well, we use a A lot of Webpack.

Wes Bos

But the control you have in Webpack is is still unparalleled.

Wes Bos

it it is good in some respects. We just wanna make it really fast. Yeah.

Wes Bos

on top of Learner called auto.

Topic 18 45:04

Most AI processing happens in the cloud due to GPU constraints

Scott Tolinski

I don't look at the camera. I look at I look at, like, the button

Wes Bos

So say if you're, like, recording a video and you're reading a script on your screen, your eyes are going back and forth reading the script.

Wes Bos

Miedeross,

Wes Bos

link up a video.

Wes Bos

he has a Process video and audio and get the Almost impossible.

Scott Tolinski

pushing to take the picture or I'm looking at the screen. So, like, my wife's eyes are always looking at the camera, and mine are always, like, looking slightly to the left. Like yeah. That's a a really fascinating tool. Yeah. The Those are the AI features that get me excited. Like, runway

Wes Bos

make it look like your eyes are looking at the camera for most of the time. And, like, now every video that comes out for me or my coworkers, I'm just Staring at the eyes trying to sit figure out, are those AI eyes? Because they're they're staring straight at the camera right now.

Wes Bos

Matt

Wes Bos

tools Tools that allow me to, like, utilize it in ways like this are are super cool. So, like, we have some stuff coming out with GPT also. Like, everybody had the race to put GPT in their product. We've been taking a very slow calculated approach trying Yeah. So with, Radix, it it's a headless

Wes Bos

and he posted a video this morning being like, I'm using the new Descript feature. And I watched the whole thing being like, what is the feature?

Wes Bos

And and then at the end, he yeah. And at the end, he showed himself looking down and reading his laptop, and I was like, oh, damn. Wow. And that that really helps me because I have this issue not here, but I I have the issue where

Wes Bos

AI, it's cool. Like, stable diffusion, it's cool.

Wes Bos

So,

Wes Bos

It's it's honestly amazing. Yeah. I will

Topic 19 40:30

Some AI processing had to move backend due to browser constraints

Wes Bos

If you misspoke, I do it all the time where I I'll say, and the boolean will be true, and then I edit the thing, and I realize, shoot. No. It's false. It's literally the exact opposite thing, or I misspeak or I I say something like, at home where I have the I have the camera a bit too high, and I'm not necessarily a bunch of podcasts,

Wes Bos

So a lot some of those things are, like, our AI effects. Like, the events that the current state is for. So, say, if you're editing

Wes Bos

You have a little bit more access to the system.

Wes Bos

it's not blockchain.

Wes Bos

my my favorite miss misspoke

Wes Bos

But if you're moving to the web and you want it to be accessible to everything everybody, you have Start moving more and more of those things into the back end.

Wes Bos

like, there's this, like, thing you could take called branch chain amino acids, And I called them blockchain amino acids, like, without That's very funny. Without noticing it at all. It's like,

Wes Bos

Of all the companies doing AI things at the time, and I think even now, like, Descript focuses on making AI useful.

Wes Bos

of syntax Was we were talking about supplements on one of the fitness shows.

Wes Bos

there there's a couple things to it. Like, at the at the very beginning, Descript sort of came out where

Wes Bos

That's That's Bitcoin.

Wes Bos

I called it,

Topic 20 00:39

Andrew Lizowski from Descript discusses building a video editor with web tech

Scott Tolinski

Andrew Lizowski. We're gonna be talking all about Descript. We're gonna be talking about,

Scott Tolinski

Along with just in general, the cool stuff they have going on over at Descript. So, Andrew,

Topic 21 38:14

Webpack is powerful and flexible though not the most user friendly

Wes Bos

You're just like, well, I I know it now. You know?

Wes Bos

anytime I post, like, a reduce you are in the editing state. If you hit the escape button, you come out of the escape button. You had to hit man, it's Like, shout out to people that work on on these libraries because that stuff is certainly tricky, and you literally have to have it. Like, legally, you have to have it in in your application. Right? Yep.

Wes Bos

it's really just amazing how much that you can manipulate with it.

Scott Tolinski

Yeah. Even if it's ugly or hard to read or or, you know, any of those things, once you know it, it it Suddenly makes a lot more sense. Even, like, for me, like, Redux

Wes Bos

the The plug in system in Webpack, while a lot of people say is confusing, Like, if you look at people like, Zach Johnson of Module Federation, like, Module Federation is a thing because

Wes Bos

Yeah. But I I do agree with all the critics. Like, configuring webpack and knowing how to configure it are not Not fun bits of knowledge I have, but I do have them. Yeah. Yeah. And if you've if you've gained them, I've had, And,

Wes Bos

The package they use for that tappable, I've actually used in, like, 6 other projects

Scott Tolinski

and you have them, it probably feels like a superpower at this point. Yeah. Yeah. I was Thinking about that earlier with,

Wes Bos

with Vercel behind him trying to make, Like, Webpack 2 essentially a thing. Mhmm. I I I think it's it's destined for good things at least. I I like the power, like, Yeah. That's really not a yes most of the time. And what I found with Playwright is it really helps you get To, like, perfect CI because, Like,

Topic 22 11:24

libavjs compiled from FFmpeg handles video processing

Wes Bos

This is a compilation

Wes Bos

it's at one point, I'm like, come on, Riverside. But at the other side of it, I know that this

Wes Bos

little weird things that pop up, and job at surfacing kind of these niche little

Wes Bos

And I was, like, I didn't know you could put 6 gigs In local storage, I was curious where they were putting that. You do I know this is not your thing, but do you know, like, what the limit is?

Wes Bos

Oh, I was always wondering about that because, like, right now, I'm I'm uploading mine, and I'm only 34% uploaded because I'm on a a slow upload. And

Wes Bos

Compilation of libraries associated with handling audio and video in FFmpeg.

Wes Bos

This kind of stuff is probably just riddled with edge case,

Wes Bos

Libbey so he he figured out just parts of FFmpeg? I think so. The the the man is very smart, and this is the probably the most technical part of our web video stack. And there there's a reason we hired him. I don't for sure. I've been following the Slack threads and just, like, the the minutia that they get into about, like, libraries, and then we use that to Do a lot of that stuff, and we actually contracted the guy who, Like, one of the big things with automated tests is flakiness.

Wes Bos

it will sometimes be, like, Like, 6 gigs of video that it needs to to upload, and it takes a couple hours if I'm on a slow connection.

Wes Bos

Bumps and issues all the time, and it and

Wes Bos

You gotta find these really smart people to figure it out. Yeah.

Wes Bos

We've been using Riverside for our podcast too, and We've only had a few hiccups, but 1 hiccup, testing the core parts of your system, Yeah. X8 solves that problem. It makes it makes those impossible states impossible, one of the things that, like, got me really excited about Descript when I joined the company was

Wes Bos

we we basically lost our recording. And,

Topic 23 04:22

Descript converts timeline editing to script editing for more natural workflow

Wes Bos

but in the end, they're just drawing vectors in the browser. Descript is trying to And do whole videos from all the way up to 4 k, so that that takes a lot of work. And I guess that that's a a good lead into a question I had even getting into some of the stuff about video. Given that there is, So, we we use Canvas for that.

Wes Bos

impressive, but, like,

Scott Tolinski

with browser APIs like get user media, or is that being done,

Wes Bos

Figma's

Scott Tolinski

Webcam interaction stuff, is that being done

Topic 24 42:17

Descript focuses on making AI enhance creators rather than replace them

Scott Tolinski

really easily. That's something I would absolutely love because I feel like I,

Scott Tolinski

pause sometimes, you know, I don't give proper

Scott Tolinski

So then I do end up having situations where I cut really harshly into

Wes Bos

There's a lot of tools that are like, we're a random number generator. Come give us your stuff. We'll generate stuff for you, but it doesn't really, like, get The core of creativity are putting the user in the seat of power, and a lot of Descript's AI features, I flipped that. And you're a creator, and you have AI tools that help you. So, like, in your, like, audio, component Dominic from the React team.

Scott Tolinski

Especially if I goof up, I wanna take that take immediately again.

Wes Bos

past that. So, like, the 2nd really cool feature built on overdub is so say you're editing some audio and you look at the wave forms, and there's, like, this, like, sharp cliff. You can hear it, and it's kind of like a pop.

Wes Bos

Wait a day for it to train, but we recently came out with updates that make it, like, seamless and a lot faster, Information on your home page is, like, really, all it is is a generator that will put out, Radix components and you fire a drag event, the drag event does nothing because the person's editing. So you you make impossible states Impossible.

Wes Bos

Into my text. Interesting. Wow. That's cool. And then, like, the the obvious next question after that is but there's not just only audio, Andrew.

Wes Bos

like, that goes all the way from transcription, which is AI based, to the voices that you were talking about. The voice clones have actually gotten a lot better recently.

Wes Bos

We have smooth edits now where we can use your AI voice, And you can say, oh, this cut right here, use my AI voice to make it seamlessly transition, and you can get rid of all of those, like, Descript was the most exciting because, Like, in the electron app, we are running, like, Multiple servers to do things.

Topic 25 13:23

Riverside stores high quality video in IndexedDB

Wes Bos

key value text. Right? Mhmm. Yeah. And then IndexedDB allows you to go a little bit deeper

Wes Bos

I can't I can't remember off the top of my head. We at Descript, we actually use IndexedDB quite a lot too, and a bunch of A bunch of third party scripts do too, so Yeah. I I think it's called there's 2 ways you could go to add those things. You could add them all as props, which is kind of heavy.

Wes Bos

you could

Wes Bos

in the thing. I remember looking deep into, like, what the limit of I I think it was IndexedDB

Wes Bos

was, and there was like, every device was a little bit different, and it was also depending on how much

Wes Bos

can you have to rely on the browser, but you also can't rely on it too much. So we have to do some things in the back end. I have I have a question about, like, a a practical, how everything connects.

Wes Bos

Free space was available on the person's computer as well. Yeah. So so that's another thing you have to, like, contend with when making a video editor for web is, like, It's running in a browser, so you only have so much storage space. Like, our goal with, Descript for web is that it runs on a Chromebook. Like, Anybody can run it on anything. So, So we have that for everything. So we have popovers,

Wes Bos

your mileage may vary there. Yeah. Interesting. I think I think it is IndexedDB because local storage is just, Yeah. That must be why, What about like, what does your stack look like for yeah. Mocha choco latte.

Topic 26 18:41

Uses Radix for components like popovers, dropdowns, context menus

Wes Bos

the tree view Speck from,

Wes Bos

Was this the 1st project you dove into State machines with? Yeah. I hadn't really done state machines all that much before. I had looked at them and gone, oh, that looks confusing. I don't really need that in my code.

Scott Tolinski

that's something that it's one of those, tools that I've always wanted to get into, but I've never really, Like, committed to it. You said over over after using it, you became a fan.

Wes Bos

drop downs, context menus.

Scott Tolinski

Became a big fan. Oh, cool. So you are you're using Xstate. And,

Topic 27 08:28

Web Codecs allows reading video frames without Canvas

Wes Bos

on every show for the past, like, 3 or 4 months. We did a whole show on what streams were, hipster brown,

Wes Bos

Yeah. Yeah. That's that's tricky. I, like, I famously or not famously, but I've Remember, I during the pandemic, we came up to our cottage, and I had this, like, bootleg LTE Internet. And I tried switching to Figma so many times,

Wes Bos

And I just could not do it because I was kept choking out the my upload, and and it wouldn't upload fast enough for me to be able to, like,

Scott Tolinski

frame buffer stuff in Rust, grabbing individual for and it was just such a Giant pain. And at the end of the day, I ended up going with Webtech,

Wes Bos

And, like, that was sort of a trade off of

Wes Bos

efficiently work on it.

Scott Tolinski

it was taking so long to do Anything. And granted you would have more control or whatever, but it's just always astounding the amount of work you can can get done in Descript. Wow. What a, what a testament to that. I feel like we've been talking about web streams

Scott Tolinski

just because

Wes Bos

and then they just keep they keep popping up. Like, we have Ryan Florence on, and they're streaming you can stream from the server to the client, and then then here you were on talking about it's It's all streams. Right? Like Yeah. If there's one thing to sorta get good at in JavaScript right now, it's probably understanding what streams are. Yeah. That that and another theme I've I've found is Local first, but they're those 2 ideas are really kind of at odds. Like, in in a perfect world, you really do want, like, a local first d script, but, also, like, do you want Hundreds of gigabytes of videos just sitting around in your browser's local storage?

Topic 28 14:31

IndexedDB usage is high but varies across browsers

Scott Tolinski

situation here because I I've used, You know, I've been doing video for YouTube since, like, 2012, and I've used, like, every editor on the under the sun. And one of the things that always bugs me a lot is, like, ScreenFlow. Right? You if you record a little bit or even there's some others. You record a little bit, maybe perhaps something crashes or, you know, there's an issue in the recording,

Scott Tolinski

And you end up losing that whole recording because what they do is they throw it into some weird container format that you can then never recover.

Scott Tolinski

is that, like, a consideration or, like, a major concern? Oh, definitely.

Scott Tolinski

That situation as it's recording, if something were to happen or interrupt, I'm bad at saying things. I think gonna call it. I would've said Radix, Wes. Radix? Radix.

Topic 29 25:46

Components don't set width or margin, handled in parent with Tailwind

Wes Bos

What I found was the easiest way is just using class names and tailwind style stuff. So, like, we have, like,

Wes Bos

And then, the components themselves, just respect that and don't don't set margin or width. Sounds kinda neat. Yeah. That that's really cool. I like that it's it's all headless as well. We did a whole show on a few of these different headless UIs, and this is not one that had popped up, so I'm glad that you,

Topic 30 31:35

Uses Jest, React, TypeScript, Webpack, and adopted Playwright for testing

Wes Bos

I really think Playwright got it right. With Cypress, I used it, Like, once or twice, and it has a an interesting API that doesn't really meld with my brain.

Wes Bos

And it's all it is is a way to automate controlling a browser,

Wes Bos

Playwright is really like, it helps you in the fact that all the assertions that you do or, like, the actions you try to take, It doesn't just do them. It goes, okay. Can I do it? And then I'll have time outs for, like, trying for 30 seconds to do something. So that helps.

Wes Bos

what's the other one? if you try to export a video with the same name, It prompts you to say, hey. Would you like to overwrite this file? And I go because I always export a TikTok version and a wide version for Twitter, and then it'll be, sometimes I'll forget to rename it, and I found a bug where it would just delete the file before it asked you.

Wes Bos

and there's been attempt after attempt to make, a nice Automation tool for JavaScript, Yeah. So, in the in the Tron version, we have like, the core of it is basically FFmpeg.

Wes Bos

API, and it's, like, almost English, but not quite. And it just which I found from a guy on Twitter.

Wes Bos

One thing that I was instrumental in is I brought in Playwright, which Huge fan of Playwright. Such a cool tool. So well done.

Wes Bos

Yeah. It's, like, a chaining Oh, wow. That's the real kicker.

Wes Bos

and,

Wes Bos

Cypress? Cypress. Yeah. So, yeah, Cypress and Playwright are the 2 big ones in, like, automated browser testing if, you've been around A while, there's also there is Selenium

Wes Bos

The coolest thing about Playwright is, like, in with all the other automation things I've ever worked with, you have to manually wait for things.

Wes Bos

And adding more more of that. Rundown of what that is in comparison to,

Topic 31 26:25

Radix is headless so components can be styled with Tailwind, CSS Modules etc

Wes Bos

Like, they definitely handle all the cases more. Like, I think I could've probably built a tree view with them a lot faster, I can't wait to get rid of yeah. Open UI is the community, The engineering doesn't own that website at all. I think it's a Webflow website, probably. Okay. Yeah. Yeah. Keep it easy. Yeah. Yeah. Cool.

Wes Bos

I u like, I use probably, like, a dozen or so of the undocumented One thing you can't be certain of is that a user has a GPU, and the GPU can do things. So a lot of the cool AI stuff that has to happen can't necessarily happen on a user's machine. So we've had to do a lot of work to put all that in the cloud and to make it reliable too. And The AI stuff is actually really cool because was on, like, a platform y team, and,

Wes Bos

And Radix is really nice, and, like, I've learned a lot from the repo.

Wes Bos

Like, I I encourage any developer. If they're using a library, go read what the library is doing, and that's gonna that's gonna help you improve a lot too.

Wes Bos

but I chose to go with Radix.

Wes Bos

until all of its animations have run. So there's, like, Lots of really nice little things in there that, Video is also a problem. So, like, when I was first editing my podcast with Descript, the unfortunately, the biggest comment that I got back from everybody watching it was like, Why are there so many cuts? Why are the heads moving around so much? And that's because I was, like, I was making the audio perfect, but I wasn't making the video perfect. So, like, we're we're definitely researching and trying to solve that problem of, like, video overdub where you, like, take out a filler word and you don't, like, our Playwright test for Webb, So, like, it used to be you had to, like, submit a voice, So, we we figured out How they were storing the high quality,

Topic 32 39:23

Once you learn something obtuse like Webpack, it becomes a superpower

Scott Tolinski

Yeah. Slam dunk the thunk, monk. Yeah. Because whatever happened to a a regular regular old redux, a mocha choco

Scott Tolinski

I want to do this in Redux, and people are like, oh, you gotta

Scott Tolinski

was one of those things that I looked at

Wes Bos

use the Redux duck thunk. You gotta use all these different ones. That's like thunk. Yeah.

Wes Bos

So earlier, you said that a bunch of stuff had to be moved to the back end on Descript. Can you talk a bit about that? Yeah. So going from an electron app to a web app, there's a lot of things you can't do anymore.

Scott Tolinski

a long time ago and was like, Yeah. This just feels like a lot of stuff, and it's hard for me to know what's connected to what, what's connected to what. But then once or drop a review if you like this show.

Scott Tolinski

you got the hang of it, you know where everything goes. You know what you're looking for. It all makes perfect sense. But Yeah. When you throw a reduct saga in there. Oh, yeah. Or any of those extra Oh, every time that you ask a question on Reddit, It'd be like,

Topic 33 05:08

Descript uses Web Codecs and relies heavily on running in the browser

Wes Bos

was, leaning more into web tech in, like, it actually running in the browsers. Cool. So, what we ended up with is,

Wes Bos

We have a recorder. It's kind of like a Loom style recorder that integrates, yeah. When when we were building this, we had 2 choices.

Wes Bos

it relies heavily upon web codex, which is like a new standard that's coming to browsers. It's not available in everything, so that's why for now, Descript for web is only in Chromium based browsers. But by the end of the year, we should have Safari too because they plan to ship web codec support. Is the, native app or the native app that which is built with Webtech, right, is that an electron based, or or what is that based on? Yeah. It's It's an electron app.

Wes Bos

with the editor really well. So that's That's part that for the web transition, we don't have fully baked out yet. But by the end of the year, we plan to bring that same experience into the browser because, and we leaned heavily into Radix.

Wes Bos

While, like, most people use Descript for, like, editing files they already have,

Wes Bos

It's it's a big electron app. It's actually 2 electron apps right now because, And we've added things,

Wes Bos

we've found that Descript is also since it's just a document,

Topic 34 02:36

Andrew always had a passion for building consumer facing apps and side projects

Wes Bos

over

Wes Bos

my team took that as an opportunity to go, okay. Everything we can do can be open source. So everything was open source.

Wes Bos

the, like, the first half of my career, I was very much into open source, and my role at Intuit

Wes Bos

what of those 12 years you choose, there's probably a side project that I have kicking around that I'm I'm fiddling with.

Topic 35 07:48

Canvas is used for video processing with Web Codecs

Wes Bos

because we had to, like, be better in some regards. So, like, currently, opening up a project on in the Electron app takes a bit longer than it does on web because on web, we just stream things. So, like,

Wes Bos

like, when you open up a project. One of the things that was kind of Surprising when we made the transition to web was, like, a lot of things were actually faster With the recorder product, any any perceived data loss at all is like that that is a huge ding against the product. So we try to take every step that we can that there's a backup of a backup of a backup. So, like, if your recording But what's cool about This project is it comes from,

Wes Bos

And then, also, we don't actually load up all the files,

Share

Empowering developers for over 286197222386 milliseconds!