Aaron
00:00:00 – 00:00:04
Are you ready for this?
You're not gonna fanboy out too much, are you?
Aaron
00:00:04 – 00:00:29
I'm gonna try not to.
Okay.
We are incredibly excited and very lucky to have a guest today.
I will introduce him briefly.
His name is Kent c Dodds, and he is a pillar of the JavaScript community.
Aaron
00:00:30 – 00:00:33
Kent, why don't you go ahead and introduce yourself?
Kent C. Dodds
00:00:33 – 00:00:44
Well, thank you for that kind of mini intro.
So my name is Kent C.
Dodds.
I live in Utah with my wife and 4 kids.
And hopefully, they don't make an appearance today, but I make no promises.
Kent C. Dodds
00:00:44 – 00:01:06
So I am the co founder and director of developer experience at Remix.
And Remix is a web framework that enables you to build really excellent user experiences with a laser focus on web fundamentals and user experience.
And when I'm not working on Remix, I am sleeping.
Just kidding.
I also have other interests outside of things.
Kent C. Dodds
00:01:06 – 00:01:17
I am really big into one wheel riding.
If anybody's enjoyed the time on the wheel, it's blast.
And I'm big into snowboarding and stuff here in Utah.
So before Remix, I was a full time educator.
I created epicreact.devandtestingjavascript.com.
Kent C. Dodds
00:01:19 – 00:01:28
Tens of thousands of people have gone through my course material there as well as on Egghead and Frontend Masters.
And, yeah, I like teaching people, and I love the web.
Aaron
00:01:28 – 00:01:50
Kent, so first on the React side, you have, of course, Epicreact.
You seem to have a real mission, and I think the way that you state it is I am trying to help people change the world, which is really interesting.
Right?
Like, it's a meta level and I love it.
People talk about, yeah, I would like to change the world or build a tool that changes the world.
Aaron
00:01:50 – 00:01:58
And you're saying, I think I can help teach people programming.
I think I can help teach people tools that will help them change the world.
Kent C. Dodds
00:01:58 – 00:02:13
Mhmm.
Yeah, precisely.
I realized that I'm a pretty good coder.
I created a testing library that's the de facto standard testing tool for React and various other frameworks for UI stuff on the web.
And I've created various other libraries that are widely used, which is cool.
Kent C. Dodds
00:02:13 – 00:02:48
And I I'm a maintainer of Remix now, but I have realized that I'm actually pretty good at teaching.
And if I can teach other people to do all the things that I could spend my time doing, then I have actually increased my impact on the world by a great margin.
And so my mission, as stated on my website, is to help others make the world a better place by teaching them how to make quality software.
And so if I can make an impact on a little community in India by teaching people in India how to make better software and same all over the world.
So that's been my mission for the last several years.
Aaron
00:02:49 – 00:03:10
So there's probably some people listening.
They're still at a stage in their career where they're figuring it out.
They're trying to find their footing, but they also think that they would like to help other people.
Do you have any anecdotes or anything in particular that have happened over the years?
Do you have one story that you feel like really stands out as sort of representative of the impact that you can have when you make time for this?
Kent C. Dodds
00:03:10 – 00:03:43
Yeah.
I think no story in particular, but I think a lot of people who want to get involved in answering people's questions and helping maximize other people's impact and value, a lot of the times people struggle with thinking like, oh, somebody's already done this.
And, yes, they have.
It is very difficult to find something that nobody's already done.
Yet I still do it, and it ends up working out really nicely because you can reach people that I can't and that other people can't, just in the way that you teach, in the way that you think about problems.
Kent C. Dodds
00:03:43 – 00:03:55
And so there's a town in Texas that has 3 Starbucks at an intersection.
There's one intersection without a Starbucks boat.
That's nuts.
Why did they build 3 of them?
Now aren't there already Starbucks?
Kent C. Dodds
00:03:55 – 00:04:26
And of course, there are, like or you always see, like, a McDonald's and a Burger King right next to each other.
So what if the thing already exists in the world of education, in the world of the Internet?
The pie is so big that even if you get a little slice, it's still pretty significant.
And so, yes, it's technically a zero sum game because education is just as much about time as it is anything, and we all have a finite amount of that.
But there's just so much opportunity that I don't care if it's been done before and you haven't done it before.
Kent C. Dodds
00:04:26 – 00:04:57
And on top of that, it's not just about reaching a lot of people.
The other piece of that is solidifying the concepts for yourself.
So that is kind of my secret in developing my skills was forcing myself into situations where I have to teach people stuff, and that acts as a forcing function for me to learn this stuff really well.
So I would just recommend for anybody who wants to get out there and really improve their own skills and also help other people learn and understand things better is to don't let that little voice in your head stop you just because of the people who have done it before.
Aaron
00:04:58 – 00:05:14
Did you find, as you were teaching React and writing these testing libraries for React, did you find that you were covering the same things over and over, the same rough edges, and that's what led you to Remix?
Or how was Remix born out of what you were doing before Remix?
Kent C. Dodds
00:05:15 – 00:05:31
Yeah.
Okay.
So I'll tell you the story of how Remix came to be.
So I did not create Remix.
I am a co maintainer and a cofounder of the company, but I actually wasn't around when the company was initially created, and I was more of a consultant when Remix is being initially worked on.
Kent C. Dodds
00:05:31 – 00:06:04
So the way that this happened is Brian Florence and Michael Jackson, they're the creators, not the king of pop, but the creator of JavaScript libraries.
They had been running this business called React Training for years together, I think since 2015, somewhere around there.
And they created React Router.
This library is used in around 7 out of 10 applications built with React, which is an enormous number of applications.
Just to put things into context, by the best measures that we have, React is 3 times as widely used as all of the other UI frameworks combined.
Kent C. Dodds
00:06:04 – 00:06:30
So React is just an enormous part of what's actively being developed on the web.
And React Router is used by the vast majority of those apps.
So a huge huge library that they've been working on for a really long time.
And with their training business that supplemented their work on React Router, when COVID came around, their training business was like focused on in person training.
So that was totally destroyed by COVID and everybody was like, well, you you know, we still want you to come in.
Kent C. Dodds
00:06:30 – 00:06:45
We're not sure how long this is gonna be, so we're not gonna schedule a remote thing.
Like, we we still want you to come in.
So, like, they had to lay lay off a bunch of the trainers that they'd recently hired and things, and now they're thinking, like, we gotta make money somehow.
And so they had this novel idea.
How about we write software and get paid for it?
Kent C. Dodds
00:06:45 – 00:07:04
And so they decided to make a framework and have it be licensed.
So you pay a subscription to be able to use the framework.
This is not unheard of, but it's pretty uncommon.
But they figured if we just get a couple thousand people on this, then we can churn.
And and the cool thing about that model is the more users you get, the more funding you get to build a better framework.
Kent C. Dodds
00:07:04 – 00:07:22
So it's actually in the open source world, the more users you get, the less time you have.
What do you get out of more users?
It's just like more issues and stuff, I guess, And pull requests, which are really appreciated, but take a lot of time.
And so I actually kind of liked the idea that they had to model it that way.
They did eventually go open source, but I'm kind of getting ahead of myself.
Kent C. Dodds
00:07:22 – 00:08:01
So as they started working on this framework that they'd been thinking about for a really long time on developing a fully fledged framework that's based on React Router.
They approached me multiple times with ideas and questions and just looking for feedback, and I was really impressed by what I saw.
What I saw was something that had a focus on the web platform rather than just like reinventing the browser and all of the things that the browser has at your disposal, like we've been doing for a long time in this single page app world.
And I saw something that made server side rendering and client side hydration really cohesive.
And so I was just really impressed by what Ryan and Michael were working on.
Kent C. Dodds
00:08:01 – 00:08:17
So when they did open it up as a developer preview, I was one of the first to buy a license, and I rewrote my site using Remix.
And I was just blown away by how productive I was and actually just had a bunch of extra ideas of things that I wasn't planning on doing just because I had extra time.
Aaron
00:08:18 – 00:08:29
So real quick for folks, just to kind of give them the context because you're saying that it was initially commercially available, what was the pricing like?
What did that look like for developers?
Kent C. Dodds
00:08:29 – 00:08:36
Yeah.
Yeah.
For individuals, it was $250 a year.
And then for teams, it was like a grand a year or something like that.
Aaron
00:08:36 – 00:08:37
Yeah.
That's great.
Kent C. Dodds
00:08:37 – 00:08:56
And it's super reasonable.
How much do you spend on your MacBook?
This tool was super impactful.
So I actually I really like the pricing model.
But, yeah, in August of last year, Michael and Ryan had, of course, been thinking about this quite a bit and just thinking, you know, it's not just about working every day and getting a paycheck.
Kent C. Dodds
00:08:56 – 00:09:35
It's also about impact, and we can have a much larger impact if we open source this so more people can use it.
And so they decided that, well, how about we get some VC funding and we hire some people, and then we can figure out a good way to monetize this so that it can be sustainable.
And so that's what they did.
They got, 3,000,000 at a 50,000,000 valuation and hired a couple people.
And at the time before that happened, I was talking to Ryan and Michael because I was thinking, hey, I'm thinking about updating Epic React and testing JavaScript, that they have to buy a license for?
Kent C. Dodds
00:09:35 – 00:10:09
And and I went out to lunch with Ryan, and he said, you know, we actually we might do like a free thing soon.
In fact, we're thinking about getting funding.
And I was like, okay, now that's kind of interesting.
And so when they got funding, I was still planning on just doing my own thing teaching remix.
And around like October time, Ryan started talking with me about potentially just coming on board and being in charge of their developer experience stuff, so documentation and education, the CLI, a lot of the touch points for developers, the community, because I'm actually pretty good at that stuff.
Kent C. Dodds
00:10:09 – 00:10:30
And so in our conversations, we finally decided it would actually be really cool rather than being like a teacher who's on the outside of things trying to tell people how to use that thing, be like on the inside saying, here's how we say that you use this thing, which is a pretty Okay.
So that's super interesting to me on the charging.
Aaron
00:10:30 – 00:10:59
Okay.
So that's super interesting to me on the charging for a framework because I think from Andrew and Maya's perspective, we've got Laravel, which is free and open source and monetizes on Laravel related SaaS products.
Right?
So the whole ecosystem kinda evolves around this central open source thing and there are these great paid products and that's what allows Laravel to survive.
On the other side, we've got Rails, which everyone knows comes out of Basecamp.
Aaron
00:11:00 – 00:11:21
So DHH has more money than God, and then that helps support Rails.
Right?
So this is a third way where y'all were gonna actually or did actually charge for the thing, and then a 4th way where you stopped charging for it and you got VC funding.
So how did the VC funding work for an open source framework?
I don't understand that.
Kent C. Dodds
00:11:22 – 00:11:44
Yeah.
Yeah.
So, ultimately, like, VCs wanna get their money back, like, it's an investment in something.
And so when at the end of the day, Remix is either going to switch to or start doing stuff like Laravel, where we have related services, or we'll do something like Basecamp or Rails, where we develop a product that's built on top of it.
We've got to find a way to make money, and we're absolutely thinking about all of these things.
Kent C. Dodds
00:11:45 – 00:12:27
But as far as getting VC funding for open source, there is a company or a fund called OSS Capital that is invested in similar types of things.
And the end goal is to find a way to just get a huge amount of adoption and then monetize to the users of the framework.
We've got a couple of plans, and, of course, we could also just get acquired, which happens as well, where it's acquiring the technology and the talent to continue to develop it.
And from that perspective, it's like a big company starts investing heavily from a usage standpoint and decides that they don't want the framework to get distracted by making money or get distracted by other people's use case.
They just want, like, our use cases are the only ones that matter now.
Kent C. Dodds
00:12:27 – 00:12:42
And so that's another option.
Now, of course, luckily, lots of the time, companies aren't always so different.
And so like our use use cases are the only ones that matter now, typically applies to like most companies anyway.
But yeah, so that's another avenue that we could go in.
But like I said, I kind of like the original pricing model.
Kent C. Dodds
00:12:42 – 00:13:06
The biggest reason to change from licensing the software to making it open source is just the level of impact that you can have.
If you license a software, you're just instantly making a lot of people not interested at all, and for good reason, I suppose.
And so, yeah, because we wanted to have a really big impact on the web, we decided that licensing wasn't gonna work, and VC funding was the direction to go.
Aaron
00:13:07 – 00:13:18
So I love that story.
I think it is.
It's awesome because you're Kent C.
Dodds.
And you were a big deal even back on Epicreact.
Aaron
00:13:19 – 00:13:39
That's not just a course.
Many people have courses.
Epicreact is a course among courses.
You set the standard, and I know there were a lot of people involved, and a lot of people's hard work is represented in that, But it was extremely well executed.
I think it set the standard.
Aaron
00:13:40 – 00:14:09
And so even before the idea that Kent c Dodds plays with somebody else's tooling and says, I think this is the future, and I wanna go all in on it.
And you're trying to figure out how to do that even on your own before you team up with them as a cofounder.
I think that's just such an authentic story.
It's so good, and I'm glad it worked out the way that it did where you're, like, right in the fold with them working on the tooling, working on the education.
I love that story.
Kent C. Dodds
00:14:10 – 00:14:29
Oh, thank you, Andrew.
One of my personal values is authenticity and genuine, just like trying to be a genuine person, transparency.
I actually do have a transparency page on kensydotts.com.
You can go see, like, where do I make my money?
And I actually made that because I was just gushing over remix and OneWheel and a couple other things.
Kent C. Dodds
00:14:29 – 00:14:39
And people were like, are they paying you for this?
And it actually was a little bit offensive to me that somebody would suggest that I'm not being authentic.
And so I'm like, no.
Here's where I make all of my money.
Here's the companies I actively invest in.
Kent C. Dodds
00:14:39 – 00:15:04
All of that stuff is there.
Because, yeah, authenticity is important to me.
And for anybody who's curious, I actually gave a talk at a local conference called Utah Jazz, where I talk about remix, and I just go nuts gushing over Remix.
And this is at least a month before Ryan and I had started talking about me coming to join up with Remix.
So I really do genuinely feel Remix is the next big thing, and that's why I joined.
Kent C. Dodds
00:15:04 – 00:15:16
So there's a fine line between, of course, you would feel that way.
You work there.
And, of course, you would work there.
You feel that way.
And I just really feel like when I joined with Remix, a lot of people were like,
Aaron
00:15:16 – 00:15:46
well, yeah, of course.
That's awesome.
So let's dig in on that a little bit because I think on the React side, a lot of people that would listen to a podcast called Framework Friends would be familiar with React because React is a pan framework tool.
Just like you said in the introduction, React is massive.
You think of other pan framework tools like Tailwind CSS, their ability to have an impact and different people use them in different ways.
Aaron
00:15:46 – 00:16:23
You mentioned single page applications.
I've never worked on a single page application, but I work in an app that has React every day.
And because there's sort of that different philosophy that some people use where it's like pull out the heavy machinery and bolt React on in the contexts where it makes sense if you got a page builder or workflow editor or something like that.
So I think the impact of React isn't even limited to people subscribing to a particular philosophy.
It's just so broadly used, sense that Remix is different in terms of where it slots in.
Aaron
00:16:23 – 00:16:26
This is not a pan framework tool, is it?
Kent C. Dodds
00:16:26 – 00:16:57
Remix actually integrates nicely with other things.
But as far as, like, server rendering a web app with Rails and Remix, that's not the end of state.
You can use them together for a migration, and you can keep Rails around for an API.
But the end of state would be Remix is in charge of all UI stuff, and Rails could just be in charge of back end ORM, whatever back end things that you're doing.
And Remix kind of slots in there, taking the place of whatever UI framework you wanted for your front end if you had one in that case.
Kent C. Dodds
00:16:57 – 00:17:18
Remix also though can be used for a back end completely.
Even if you wanted to use a completely different UI framework, you could use Remix as your API layer too.
This is why I say Remix is very different from probably what anybody's thinking until they they take a little time to look at it.
We call Remix Center Stack.
There are 2 primary categories of frameworks.
Kent C. Dodds
00:17:18 – 00:18:01
You've got your primarily back end frameworks like Rails and Laravel that handle a lot of good back end stuff for you and then send some HTML to the client, And then they try to shoot some grappling hooks over the network chasm with whether it be like Hotwire or whatever else.
There's, like, Phoenix and Elixir and all that stuff too.
So the other end of that is, like, Next and Gatsby and SvelteKit and things that are primarily front end frameworks that try to shoot grappling hooks across the network chasm for hitting API routes and stuff like that or API, just endpoints.
Remix actually constructs a solid bridge across the network chasm and manages that completely for you.
And in fact, when you're developing a Remix application, it actually feels more like a teleporter than it does a bridge.
Kent C. Dodds
00:18:01 – 00:18:18
Remix just manages that all for you.
And what's really cool about this is that for any of your listeners who are like, yeah.
I hate spas.
They're the worst because now you've got all of this craziness that you have to deal with on the front end of managing state and stuff that I don't have to worry about normally.
So like, for those of you who are, yeah, I love my MPA.
Kent C. Dodds
00:18:18 – 00:18:40
It's so simple and whatever.
Remix has the same mental model.
So if you're used to an MPA, and you like that, you know, multi page app experience from a developer experience standpoint, that is the mental model of Remix.
And the evidence of this is that Remix apps work without JavaScript on the client at all.
You don't need to have JavaScript on the client for all of your app things to work.
Kent C. Dodds
00:18:40 – 00:19:08
Now on the other end of this, there are some serious problems with MPAs, and it's the reason that spas were invented, and that's for what about transitions?
When you do a client side transition and having an animated transition there, you're gonna need to sprinkle some JavaScript in there.
What about if you want to do Optimistic UI or some pending state?
You're gonna need some sprinkles of JavaScript in there if you're doing MPA.
Focus management, like all sorts of things that are challenges for MPAs is when you need to start sprinkling JavaScript.
Kent C. Dodds
00:19:08 – 00:19:34
And when you start sprinkling JavaScript, you're duplicating logic, you're duplicating templates.
That is not fun.
And so that's why a lot of people just said, the heck with this MPA thing, I'm gonna jump on the single page app train, and we'll just do everything in the browser.
But there are a lot of big problems with that too.
Like now all of a sudden, you're managing a cache of the server state, and you have to have this application state management, and you're running into Redux and all of the other craziness that we've been experiencing the last 6 or 7 years with client side only stuff.
Kent C. Dodds
00:19:35 – 00:20:16
So because Remix is center stack, and it's managing the network chasm for you, we can have the mental model of an NPA, but then you have the user experience of a spot.
And so, like, we can manage the client side transitions and animated transitions, animating in error messages, managing focus for the user, all of that stuff.
It feels like you get all of those benefits without having to worry about sprinkling JavaScript.
You just get the whole JavaScript, and you don't have to worry about duplicating templates or everything because we're server rendering React, and then we're client rendering React, and it's all of the exact same component.
And so as you're working on a Remix application, you're not thinking about application state management, but you are still thinking about the cool things that you wanna think about.
Kent C. Dodds
00:20:16 – 00:20:32
The reason that we started doing JavaScript in the clients in the first place for all of those animations and focus management and things like that.
The sort of requirements that our users are expecting of our applications in the modern day.
So that's why we call it Remix.
It's remixing MPAs with SPAs.
Aaron
00:20:33 – 00:20:54
You talked about the network chasm quite a bit in being center stack and the different paradigms of back end grappling to the front, front end grappling over to the back.
And you said, we built a bridge.
There's no tenuous grappling hooks.
It's a solid rock solid bridge.
In practice, and it's okay to get super technical, in practice, what does that actually mean?
Aaron
00:20:55 – 00:21:14
From my understanding, that, to me, sounds a little bit like LiveView or Hotwire or LiveWire, where you're on the front end, but you're, like, able to call the back end, but you're not manually writing Ajax.
Someone else is handling it for you.
Is that close?
And if not, what do you mean by we built a bridge?
Yeah.
Kent C. Dodds
00:21:14 – 00:21:35
Yeah.
That I think that is relatively close.
And my inexperience with Rails and Laravel are going to show here.
But what makes Remix really special in this particular instance is let's establish a couple things on the technical side here first.
So the way that the browser works without any client side stuff is when the user clicks on a link, that's a transition.
Kent C. Dodds
00:21:35 – 00:21:46
When they submit a form, that's also a transition.
I'm used to talking to front end folks.
For you all, this is gonna be like, yeah, of course.
That's exactly how it works.
But for a lot of people, they were introduced to forms with event dot prevent default, like on submit.
Kent C. Dodds
00:21:46 – 00:22:14
Like, they don't know how forms work, but forms are exactly like links, except that you can include a post body or query string.
That's the only difference there.
And in both cases, when you get to where you're going, you're getting 100% fresh information.
So you do a full page refresh, and now you're getting new HTML.
If there was a mutation that happened in between the last page and the next page, you're getting the latest up to date HTML from that.
Kent C. Dodds
00:22:14 – 00:22:49
So that's how things work without any JavaScript in the client.
Now when you start doing fetches from the client, you have to manually do all of those updates yourself.
And I think this is the level where where Rails and Hotwire and things operate is manually making those updates on the client based on the request that was made.
And React suffers from the same thing by a lot because now we're managing state and things on the client.
So what makes Remix so special is that when things are hydrated and again, you're like, you don't have to hydrate, but like it we want JavaScript on the client to enhance the experience.
Kent C. Dodds
00:22:49 – 00:23:00
Remix's big shtick is progressive enhancement.
We are way into that.
And so when it's hydrated, Remix is making a fetch.
It's not gonna do an actual like, it is gonna say, hey, forum prevent default.
I'm gonna make this fetch.
Kent C. Dodds
00:23:01 – 00:23:24
And so when that happens, that fetch request goes out, and Remix suddenly becomes a browser emulator.
So it's doing what the browser would have done if there wasn't JavaScript on the page.
Not exactly.
If you're looking at the network tab, it is the way the implementation is slightly different.
But as far as the way that you think about it, and the way the user experiences it, it is emulating what the browser would have done without the full page refresh.
Kent C. Dodds
00:23:24 – 00:24:05
And so what that means is that the code that you write to create the DOM nodes and stuff, which is just React components, or like in the future, I should mention that we will support other UI libraries as well.
So we've got Vue in the pipeline, and we'll have Preact and various others as well.
Because you're writing these components, these components are running on the server for the server render, and then they run on the client for hydration.
And so when there's some sort of data update, Remix is the one making sure that the fetch is made to go make a mutation, and then it also revalidates all the data that's on the page that drove the initial page load in the first place.
And so it'll kick off a rerender, and you just literally rerender the components that were originally rendered on the server.
Kent C. Dodds
00:24:05 – 00:24:24
Now they're just gonna rerender on the client.
And so that's why we can say that the mental model is just an MPA because you're not thinking about getting all of that data up to date.
Remix is just emulating what the browser would have done and triggering a rerender of your React components.
And now your React components say, oh, here's the data, so I'll go ahead and render that stuff now.
Aaron
00:24:24 – 00:24:29
Wait a minute.
Where is it emulating what the browser would have done?
It's doing that server side?
Kent C. Dodds
00:24:29 – 00:24:59
So, yeah, from a technical level, Remix is really focused on routes, and we have these route modules.
These are your the file, the JavaScript file, that has certain exports, and we have conventional exports for loading data, that's called your loader.
For mutating data, that's basically handling form submissions, that's called your action.
And then you have the default export, and that's the UI that you want to have rendered for that particular route.
And we have nested routing, we could go on a nice long conversation about how nested routing makes remix development amazing.
Kent C. Dodds
00:24:59 – 00:25:20
So, like, all of the code that you write in your loader and your action in that one file only runs on the server ever.
So you can connect directly to the database, You could call it a downstream API, whatever you want to do, like private keys, whatever you want.
It doesn't matter.
It's all only running on the server.
The default export, as well as a couple others that are components for, like, handling errors and stuff, that will render on the server.
Kent C. Dodds
00:25:20 – 00:25:39
So it does run on the server.
And then when the application hydrates, it will also run on the client.
So the emulation part, what's going on here is Remix will take care of that form submission for you.
It'll say, oh, prevent default.
Now let me do what the browser would have done, just like slightly differently because we're doing a fetch now.
Kent C. Dodds
00:25:39 – 00:26:05
So it will actually call your action, but your code, your piece of the code from there only runs on the server.
And then you return whatever you need to return like, hey, status 200 or 404 or whatever you want to.
So Remix is managing that whole network communication.
When it comes back, Remix will say, hey.
Like, the way that the browser works is when you get a response from a post, it'll follow the redirect or it's gonna rerender the HTML that came back or whatever.
Kent C. Dodds
00:26:05 – 00:26:26
So I'm just gonna do the same thing.
We're gonna revalidate all the data that's on the page, which will trigger a rerender of all the components that rely on that data.
And of course, like, there are situations where you might not wanna do that and you can optimize for that, but the default is the simple thing that is most correct.
And that is, mutation was made.
We have no idea what impact that could have on our UI, so let's just go update it all.
Kent C. Dodds
00:26:26 – 00:26:35
And it turns out that this is really simple to think about, really nice to develop with, really great for the user experience, and really fast as
Aaron
00:26:36 – 00:26:46
well.
Okay.
That's super helpful.
I didn't know that about the named exports running in different spots.
That helps me understand because you do brand as a full stack framework.
Aaron
00:26:47 – 00:27:29
We actually had a conversation on Twitter, you and I, where you said that we're center stack, but we're slowly eating more and more of the stack.
So what I wanna know or what I wanna talk about is in a traditional web app, you've got stuff like cronjobs and communicating with the database and sending transactional emails.
And based on what you just said about the named exports and running in certain places, it sounds like there is a back end only kind of place where you would write your, what do we call it, business logic.
We'll say where you would write your hardcore, you know, in air quotes, business logic that does the ORM communication, all of that kind of stuff.
In that paradigm, where does Remix fit currently?
Aaron
00:27:29 – 00:27:40
I know you have plans to eat the stack, but currently, do you have mailers and Cronjobs and ORMs, or is that what, I guess, Remix stacks, is that where that kinda comes into play?
Kent C. Dodds
00:27:40 – 00:28:00
First of all, I'll just say that the network chasm is the hardest part of any web app as far as I've seen.
I mean, there are some pretty hardcore things with the Facebook algorithm.
I'm sure that's pretty complicated for Facebook.
But for the vast majority of web apps, the thing that most people are spending their time on is dealing with that network chasm.
That's what Rails and Laravel have been working on for a long time.
Kent C. Dodds
00:28:00 – 00:28:19
Hotwire is not the first iteration of this solving this problem.
Right?
And so that I think is one of the things that makes Remix so unique is that I feel like we've really nailed down that piece.
And we started branding ourselves as center stack because traditional full stack frameworks would scoff when we had say we're full stack.
And, technically, we are.
Kent C. Dodds
00:28:19 – 00:28:28
Like, we're front end and back end.
And so from that perspective, we're full stack.
But, yeah, people were like, well, you don't have a mailer or a cronchop thing.
So if you can't call yourself full stack alright.
Fine.
Kent C. Dodds
00:28:28 – 00:28:50
We're center stack.
And that actually is pretty profound.
So as far as, like, where we stand today, we actually did create the stacks thing that come with preconfigured ORM and various other, like, testing, all of that stuff.
Because we don't currently have a official opinion for those things.
And so we say, hey, there are some other tools that integrate really nicely with this one.
Kent C. Dodds
00:28:51 – 00:29:04
And so we're going to create basically a template for you if you don't have an opinion about that stuff.
That's the reason why we like this full stack ideas because I don't have an opinion.
I don't care.
I just want it to work.
And so, like, Rails just kinda gives it all to me.
Kent C. Dodds
00:29:04 – 00:29:24
That's the reason why it's so nice.
The stacks are a stopgap for us while we develop official opinions.
The big challenge though is that when you're working in the JavaScript ecosystem, it's very big.
There are a lot of opinions and ideas and trade offs that you're making.
I like that we don't have a built in ORM currently.
Kent C. Dodds
00:29:24 – 00:30:00
Maybe one day we will, but I like that we don't force people into that.
There are a lot of different databases JavaScript has always been the area of the programming language world that is experimenting mad scientist type of stuff.
And on top of that, because we are appealing primarily to JavaScript engineers, we need to have a really nice migration strategy.
It can't just be like, oh, you just set up an Nginx server that serves traffic to the server and then over time.
That is a strategy that works for some people, but I prefer something that's more incremental and something that works with people's existing stuff.
Kent C. Dodds
00:30:00 – 00:30:17
And so not having an opinion on that makes it easier for migrations as well.
So anyway, to get to the answer of your question, no, we don't have an ORM, but our stack does use Prisma, and it's great.
No, we don't have a mailer.
There are NPM modules that'll handle a lot of that for you.
We don't have a cron job or like a queuing system.
Kent C. Dodds
00:30:18 – 00:30:34
There are good options for that in the JavaScript ecosystem too.
And so yeah, when you use Remix, you do need to make decisions around those things.
But again, we solved probably the hardest part of building a web app already.
And relative to that problem, I think we can solve those pretty easily in the future.
Aaron
00:30:35 – 00:31:13
From an outside perspective, it's helpful for me to understand the whole center stack thing because that's not a paradigm that's ever been in my head.
Looking at the JavaScript ecosystem, I see just options aplenty.
You can grab a module or a package for anything you want.
So giving people that ability and kind of the way that y'all have not made a decision, but you've made several decisions with the Stacks concept where you've bundled together different flavors, almost, of where you could use it, That seems like a great strategy for now.
Do you have plans to go all the way down to ORM?
Aaron
00:31:13 – 00:31:26
Or am I thinking about when you say we wanna eat the rest of the stack as well, am I thinking about that wrong in that you'll probably never get to ORM because you don't want to and there are other things that you do want
Kent C. Dodds
00:31:27 – 00:31:28
to eat?
Aaron
00:31:28 – 00:31:28
I don't know.
Kent C. Dodds
00:31:28 – 00:32:06
It kinda depends on where things ultimately go for Remix because, eventually, we are gonna start building services out of things.
And so, yeah, if we get into a mailer, then we're gonna build a hosted version of that thing, and that's how we're gonna make money.
If we decide that we are going to start hosting, then, yeah, we'll probably also host your database for you, and it will put together an ORM for accessing that data.
So the sustainability model for Remix will probably lead into what we end up deciding to do.
And the other thing is, I don't know the Rails and Laravel or the Ruby community very well, but in the JavaScript ecosystem at least, there are really great solutions to these problems already.
Kent C. Dodds
00:32:06 – 00:32:20
And it'd be kinda weird to go off and try and implement our own.
I really like Prisma.
If you want an ORM, Prisma is a great one.
And so another thing that we could do is just, and we kinda did this with React.
Like, we decided on the UI library to use at least to start.
Kent C. Dodds
00:32:21 – 00:32:35
And so we could just decide, hey.
We're gonna put our flag in the ground for Prisma, and that's our ORM, and it just comes built in, but we're using Prisma under the hood.
So that's another potential strategy that we could take is just say, hey.
Listen.
There's already a great solution for this.
Kent C. Dodds
00:32:35 – 00:32:55
We will reduce the amount of decisions you have to make by building it in, Or maybe we'll just stick with the stack strategy because that seems to work out pretty well.
And, like, people can fork it and make their own stacks for their own company, and that ends up.
Like a lot of companies are doing that actually.
They're just making their own stack for their company.
And the only drawback to that is because it's not built in, there will be like slightly Yeah.
Kent C. Dodds
00:32:55 – 00:33:03
It's not clear to me at all whether that's a strength or a
Aaron
00:33:04 – 00:33:19
Yeah.
It's not clear to me at all whether that's a strength or a weakness.
I think from the outside looking in, we sort of look at the JavaScript ecosystem on the server side in particular and think there's just no consolidation.
Right?
And there's other ecosystems like that as well.
Aaron
00:33:19 – 00:34:05
I won't call anybody out, But it's not even really a call out because on the other hand, like, maybe that's a valuable attribute of that ecosystem that there's this ongoing competition.
When we were talking about the reactivity stuff and the different solutions that have emerged in different ecosystems, it's largely been like a solution per ecosystem, at least on my radar.
So you start with Elixir and Phoenix and LiveView, and then you have sort of similar approaches with HTML over the wire in the Laravel ecosystem with LiveWire.
And then in Rails, we have 2 prominent ones.
So we have Stimulus Reflex and CableReady, and then we have the Hotwire, which is the on brand or the first party kind of thing that's been put forward there.
Aaron
00:34:06 – 00:34:30
I found it really helpful to read what you wrote about the network chasm and to give that a name.
The other concept that you touched on in that article, which I would point other people to, across frameworks, across development tools, the critical thing for people to conceptualize is that the front end is a cache, always has been.
Even in 1995, it was a cache of
Kent C. Dodds
00:34:39 – 00:34:41
a network IO boundary.
Aaron
00:34:41 – 00:35:17
Yeah.
And so as we've come up with these different solutions, it's interesting to me that we talk about them and have talked about them and have alluded to the idea that they're, like, all kind of solving it in a similar way.
When we were talking to Chris McCord, we said, like, how his approach basically inspired all these other tools that were kind of similar.
But the reality is if you've played with them, the nuts and bolts are actually different.
They have certain strengths that they were able to leverage for their solution, And it's different in Laravel, and it's different in rails, and it's gonna be different with what you're doing, what you described as, like, building the bridge.
Aaron
00:35:17 – 00:36:12
But it's interesting to me that I could totally see it's kinda like a a crazy idea, but I could totally see it getting to the point where the network chasm, it's so obviously the biggest problem that we're solving on the web, this thing that we inherited from Tim Berners Lee, that you're picking a development tool, you're picking a programming language, you're picking a framework based on how well it solves that problem.
I think that's not a zero chance possibility that ends up happening.
And so it's interesting to see the competition.
You're potentially then going to be competing on that particular solution.
I'm not saying it's gonna work out that way, but having this conversation makes me think, if you want something better than what we have in rails, we only have 2 options.
Aaron
00:36:12 – 00:36:21
You have to go somewhere else.
And everything that you love about rails goes out.
You're throwing the baby out with the bathwater.
Mhmm.
Kent C. Dodds
00:36:21 – 00:36:59
This is actually one of the things that I would say about React because a lot of people complain that if you decided on React, now you have a 100 other decisions to make because React is just the view.
And a lot of people would look at that and say that's a bad thing.
And yes, that aspect of it is a bad thing, but the other aspect of it is that if you are using something that has everything baked in and you're not super excited about one piece of it, then you're just gonna, like, work around it.
You're gonna try and make it work or whatever.
In React, if you come into an app and you're like, hey, this library we're using to handle this piece of our our app isn't working well for us, You're gonna go find another one.
Kent C. Dodds
00:36:59 – 00:37:22
And if you can't find 1, you're gonna build 1.
And so it's a very different impact on the community with regard to innovation That rather than saying, oh, well, I'm the one at fault, like, I'm the one getting off of the rails here, and so, like, I need to change the way that I'm thinking about this problem.
You actually say, hey, whoever wrote that library, they probably got it wrong.
I can write my own and do something different.
So it's not just a bad thing.
Kent C. Dodds
00:37:22 – 00:37:40
There's also something to be said for the level of innovation, and I don't think that anybody could argue against the outrageous amount of innovation that's been going on in the React community because they just decided, hey, we're just gonna do one piece of this, and you have to find all the other stuff that you're gonna piece together.
So it's trade offs.
Aaron
00:37:41 – 00:37:50
I buy on your website, you say, are you having trouble keeping up with JavaScript?
I can help.
And I think, yeah, you know what?
It isn't necessarily a weakness.
Aaron
00:37:51 – 00:38:14
I wanna touch on one more technical thing.
We've talked a lot about the development.
What is the deployment story?
So it seems like there are a lot of serverless platforms out there and even server full serverless ones fly where it's like, we have servers everywhere, but you don't really worry about it.
So I'd be curious, do y'all have a blessed path?
Aaron
00:38:14 – 00:38:20
Or do your stacks actually preconfigure that for you?
Or what's kind of the deployment story for a Remix app?
Kent C. Dodds
00:38:21 – 00:38:41
So Fly is my personal favorite.
My own site runs on Fly, and I like it because it's pretty simple.
It's like a long running server, like what we're used to, rather than all the trade offs you make when you go serverless.
And there are benefits, of course, otherwise, it wouldn't exist.
But, yeah, I really like Fly, and I deploy to multiple regions all over the world, and so it's like lightning fast everywhere, and it's awesome.
Kent C. Dodds
00:38:41 – 00:39:13
So the cool thing about Remix and one of the really important things from the very beginning was being able to deploy anywhere.
And so there are not very many JavaScript runtimes that exist that cannot run Remix.
And in fact, you'd be surprised how many CDNs enable you to run JavaScript at request time.
So Cloudflare has their Cloudflare Workers, Fastly has their Fastly compute at edge, AWS has Lambda at edge.
And of course, like, AWS also has their Lambdas, but, like, they also have edge stuff on their CDN.
Kent C. Dodds
00:39:13 – 00:39:27
Akamai has EdgeWorkers.
So, like, you can run JavaScript on the Edge on CDN.
So even if you're like, yeah, we're never gonna ship Node at this company.
There are surprising lots of companies that feel that way.
I worked at PayPal, so like I was all in on node and production.
Kent C. Dodds
00:39:27 – 00:39:52
But, yeah, if you're at a company like that, well, you probably still can run JavaScript in production on a server because it's just everywhere.
And Remix is ready to run-in all those environments.
And we also run on Deno as well.
So if Deno is something that you're into, which is rad, we had a demo of an app running on Deno that responded in less than 20 milliseconds on fly.
Running on fly in Deno, 20 millisecond response.
Kent C. Dodds
00:39:53 – 00:40:07
That was nuts.
And it's like doing stuff on the server too, not a lot, but it was pretty crazy.
Deno's outrageously fast.
We had the same 18 milliseconds on Cloudfly workers.
We would find the user's geolocation based on their IP address on the server and send it back.
Kent C. Dodds
00:40:07 – 00:40:09
That's all the app was doing.
But, like, 18 milliseconds,
Aaron
00:40:09 – 00:40:11
it's nuts.
So, like, once
Kent C. Dodds
00:40:11 – 00:40:19
you get less than 200 milliseconds, it actually doesn't matter.
So anyway, it's pretty wild.
I mean, of course, somebody's gonna yell at me in the comments.
Yes, it does matter.
Yeah.
Kent C. Dodds
00:40:19 – 00:40:24
Okay.
For some things.
But, yeah, for the vast majority of situations, it doesn't matter after 200 milliseconds.
Aaron
00:40:25 – 00:40:29
Sometimes it's valuable just to do that to prove that it can be
Kent C. Dodds
00:40:29 – 00:40:29
done.
Aaron
00:40:29 – 00:40:33
To have a proof of concept that this could be our future.
Kent C. Dodds
00:40:33 – 00:40:51
Yeah, absolutely.
And that you can render React.
Like, some people, for some reason, think that rendering React on the server is like the path to slowness.
And I'm sorry, that is not true.
If you're even at like a full page that has, like, tons of stuff on it, if that doesn't render in less than 8 milliseconds, I don't know what you're doing.
Kent C. Dodds
00:40:51 – 00:41:13
They're, like, much less than 8 milliseconds.
Like, on a a server render, yeah, that would be pretty outrageous.
So anyway, deploying anywhere and another reason why we decided to go with the stacks is because a lot of people didn't know anything about deploying a server.
A lot of our audience, our primary goal is to get React Router users using Remix.
It's like an upgrade for them, incremental upgrade story.
Kent C. Dodds
00:41:13 – 00:41:26
Yeah.
I just mentioned that.
By the way, if you're using React Router, you can get on to Remix in 10 minute increments.
It's not like a stop all development and migrate.
It's a 10 minutes today, 10 minutes tomorrow, and over time, you eventually will get to Remix.
Kent C. Dodds
00:41:26 – 00:41:52
So, yeah, the idea is we're targeting a lot of these mostly front end engineers, and, they don't wanna deploy a server.
So that's part of the reason why we went with stacks 2 is, like, it's all preconfigured.
The indie stack and the blue stack both deploy to fly with SQLite and Postgres both on fly, and the Grunch stack deploys to AWS Lambda.
And then, like, Netlify made the k pop stack.
We've got, like, the disco stack for Cloudflare that Cloudflare is maintaining.
Kent C. Dodds
00:41:52 – 00:41:56
We've got various others for deploying just to helps people not have to think about deployment.
Aaron
00:41:56 – 00:42:45
Sort of the perfect lead in to talk about the way that you brand things.
And I feel like there's multiple layers there.
You've got the remix related branding, which is just the idea that you're naming all this stuff and giving it a look and a color.
And then I would encourage every developer who is listening, if you haven't looked at Kent's website, take a little time and go take a look because it's also a master class in personal branding and just really going all the way on presenting your ideas and your beliefs and what it is that you're trying to do to, I have to imagine, maximize your impact because it makes it accessible.
And in in some ways, like talking about colors, go team yellow, you're winning right now.
Aaron
00:42:46 – 00:42:54
If you're wondering what that's all about, go check out Kent's website in the blog posts and in the community and the Discord.
You wanna talk about that a little bit at all levels?
Kent C. Dodds
00:42:54 – 00:43:03
Yeah.
Yeah.
Sure.
So when I was working on rewriting my site, I got somebody to design everything because I'm not a designer.
Got an illustrator for some cool illustrations.
Kent C. Dodds
00:43:04 – 00:43:13
And when I finished my site, I was like, oh, my gosh.
I'm done already because the remix just made me really productive.
What else can I do?
And I decided to do authentication.
I hand rolled it my own authentication.
Kent C. Dodds
00:43:13 – 00:43:44
I hadn't done that in a long time because I could, and it was pretty simple.
And I decided, hey, we'll just, track which blog post people are reading so we can give them actually useful recommendations and not recommend something they've already read.
And then, oh, man, like, what if I did some sort of Pokemon Go sort of thing where, like, the blog posts, you know, you choose your team, and then the blog post is owned by the team that has the most of their users have having read that blog post.
And it just made it, like, this fun game thing that was just really fun.
And so, yeah, it lines up well with remakes in particular.
Kent C. Dodds
00:43:45 – 00:44:01
Ryan and Michael are nineties kids, and they were super into music.
Ryan had a band, and I think Michael too.
Michael's got an amazing singing voice.
If you can convince him to sing for you, like, he is very, very, musically talented.
I'm a couple years younger than they are, but I totally was into music at that age.
Kent C. Dodds
00:44:01 – 00:44:20
I did more of the, like, piano and singing and that sort of edge of things.
I was not on the guitar like Ryan, shredding, but that's just been a big part of their vibe.
And so because the idea of remix is to remix the late nineties, early 2000s with the modern tech, we decided that our brand is late nineties stuff.
So fanny packs.
That's brilliant.
Kent C. Dodds
00:44:20 – 00:44:21
And
Aaron
00:44:21 – 00:44:22
That's brilliant.
Kent C. Dodds
00:44:22 – 00:44:36
Yeah.
The actually, on the stacks thing, we originally were gonna say, here's the fly stack, and here's the AWS stack.
But there's so much in those stacks.
Like, we also have TypeScript preconfigured for you and Cypress for testing and, like, other testing tools.
We have Prisma in there.
Kent C. Dodds
00:44:36 – 00:44:52
So you can't just call it that, you know, and we have 2 fly stacks that deploy to fly, so they can't both be a fly stacks.
1 is SQLite, 1 is Postgres.
So we're like, well, what do we call these?
And so Ryan's like or maybe it was Michael who said, let's just do music genres.
And our conference that we did, it was very much a music vibe.
Kent C. Dodds
00:44:53 – 00:45:10
Between the speakers.
We were playing nineties hits and stuff, and it was just a lot of fun.
I'm not allowed to make any of those decisions because I wasn't as into that as Ryan and Michael were.
So I'm like, yeah, I know Nirvana, but I'm not sure I can name any of their songs.
But I know their songs.
Kent C. Dodds
00:45:10 – 00:45:21
I just don't put the 2 together.
I don't know famous people either, so they don't let me make any of those sorts of decisions.
But it is definitely a big part of our brand, and it I think it makes it fun.
Aaron
00:45:21 – 00:45:44
Okay.
So you mentioned about the brand, how you're remixing the nineties, and, you know, you got all your fanny packs and stuff.
The brand is incredible, so you guys are totally nailing it there.
You mentioned kinda offhand that you're remixing forget exactly what you said, but it basically it sounded like old web technologies with new web technologies.
And you've mentioned before that you really rely on web fundamentals.
Aaron
00:45:44 – 00:45:50
So this is two times you've mentioned it now.
Can you tell me just kind of crisply exactly what that means?
Kent C. Dodds
00:45:50 – 00:46:00
Yeah.
Yeah.
Totally.
It's funny, especially reinventing what the browser already does.
Like, why are you doing this?
Kent C. Dodds
00:46:00 – 00:46:15
So reinventing what the browser already does.
Like, why are you doing this?
So we kind of took a step back and said the browser can do a lot of really cool things for us.
The web platform can do a lot of cool things.
So rather than implementing our own in memory cache, we'll just use the cache headers and stuff.
Kent C. Dodds
00:46:15 – 00:46:53
Really simple things like that that seems simple for you, but they're pretty profound for the front end world to start thinking about, okay, let's we could set some cache headers because we got a server now.
And so a lot of people are like, especially in the UI world, we're thinking like, oh, great, another framework that I have to go and learn.
And we like to say that we're not really another framework.
People who are using Remix find themselves spending more time on the Mozilla developer network learning about the web platform than they do on the Remix docs.
Because what we do is we take whatever platform you're deploying to, and we normalize it to the web APIs.
Kent C. Dodds
00:46:53 – 00:47:37
So I like to say that Remix is the jQuery for platforms, where jQuery normalized all of the weirdness of the APIs that different browsers had to a single API.
So it was easy to think about.
You could go to a different project or have, like, know, regardless of the browser, and you're running on the same basic foundation.
And if you're thinking about deploying to Node or to DNOW, you're using Express or you're using Koa or you're deploying to serverless on Netlify or AWS or Vercel or Cloudflare Workers, all of these have different APIs for request response.
And what most frameworks will do is that they give you a way to or make their own API and wrap those things so that you can use their fancy API.
Kent C. Dodds
00:47:37 – 00:48:20
And Remix decides to have adapters for each one of those and turn the request and response to the web fetch API for request and response.
And so this comes with the benefit of your knowledge being a lot more transferable.
And provided that your code actually will run on those platforms, like the code that you write runs on those platforms, your code is transferable to those different platforms as well.
And so because of our focus on using forms for mutations, what a novel idea, or using links, you know, actual anchor tags for transitioning, using the URL to control state on the page, All of these things and this focus really leads to a situation where you don't feel like you're learning remix, you feel like you're learning the web.
This is a really awesome feeling as a web developer.
Kent C. Dodds
00:48:21 – 00:48:40
It's actually one of the reasons I loved React when I was moving from AngularJS.
I was really frustrated because I had to leave all of my AngularJS specific knowledge at the door.
And with React, I was learning JavaScript, and I I really like that.
And with Remix, it's a very similar feeling where I no longer have to learn about this library or that library.
I just learn the web.
Kent C. Dodds
00:48:40 – 00:48:42
It's a piece of Remix that I really I think is important.
Aaron
00:48:43 – 00:48:55
I love that.
So tell us a little bit, you hinted at this earlier.
Tell us about what it's been like transitioning from a commercial product to open source.
What's the adoption been like?
What's the reaction been like?
Aaron
00:48:55 – 00:48:57
What does the future look like?
Kent C. Dodds
00:48:57 – 00:49:23
So I think we have a couple of things going for us before I start talking about specific numbers and whatever.
First of all, Remix is an evolution of React Router, and React Router has been around since the beginning of React, so like 8 years or so.
Ryan, Michael, and I are all pretty prominent figures in the React community and the web community in general.
So, like, when we tell people to take a look at something, they'll give us the benefit of the doubt and give it a look.
And then if the framework's good, then they'll stick around.
Kent C. Dodds
00:49:23 – 00:50:06
And then also, Remix was released as a developer preview for a year before it was open sourced.
So with all of that context, we had 500 paying subscribers or license holders by the time we open sourced.
So with all that context, Remix has actually out stripped all of the similar new kids on the block when it comes to UI frameworks, like web frameworks, in terms of downloads and usage by, like, actually a really wide margin for lots of comparable web frameworks or people who are trying to do similar things.
You think about like your Redwood and your Astro and your SvelteKit and stuff like that.
We have 11 meetups all over the world that were all started up in the last 6 or 7 months with almost 2,000 members that are meeting every month.
Kent C. Dodds
00:50:06 – 00:50:33
We held a conference in Salt Lake City just a couple weeks ago that we had 330 attendees at our first conference 6 months after open sourcing.
We sold out our sponsors weeks before the conference.
So, like, try to hold a conference for something that open sourced 6 months ago.
Good luck.
So I don't hesitate to say that never in the history of the web has there been a web framework like Remix that has grown a fraction as fast as it has.
Kent C. Dodds
00:50:33 – 00:50:51
We have something like 12,000 members on our Discord channel.
I think it's something like 17,000 stars on GitHub, however you wanna count that.
So, like, it's pretty significant what we've accomplished in such a short time.
And like I said earlier, Ryan, Michael, and I had a pretty big following.
We tell people, hey, check this out, they're gonna do it.
Kent C. Dodds
00:50:51 – 00:51:16
But if it wasn't good, they would not stay, and they are staying, and they're really into it.
And what's also really cool is we're getting people from all over the spectrum.
We're getting, like, UI heavy focused people who are like, wow, this really simplifies my UI.
And we're getting back end people who I'm not gonna name any names, but, like, somebody who is really involved in Rails is really digging Remix right now.
And people who are really involved in Ember are super into Remix.
Kent C. Dodds
00:51:16 – 00:51:45
People who are at Netflix and Microsoft and Tesla and, like, GitHub, we're talking with them a lot.
It's resonating really, really well with a lot of people, and I think the evidence of that is the rapid growth of the community.
So it's a really, really exciting time for the web.
I think that Remix is gonna make a really positive impact on the web in simplifying what it means to build a web application that has an excellent user experience and developer experience.
And that's why I quit my full time teaching thing that was going great so that I could join up with Remix and make this impact.
Aaron
00:51:45 – 00:52:05
I'm really excited for the success that you all are having with this.
I love hearing about the conference that you ran that went really well for you.
I am also having visions of Aaron and I coming out, meeting up with you and Ryan and Michael and with their singing voices.
I don't know.
Kent C. Dodds
00:52:05 – 00:52:05
Maybe there's some extreme sports in Utah,
Aaron
00:52:05 – 00:52:10
and then we go Utah, and then we go for karaoke later.
Kent C. Dodds
00:52:10 – 00:52:17
Dude, we we have literally have karaoke at our after party.
That's part of the what we jam to.
So yeah.
Totally.
We'd love to have you there.
Aaron
00:52:17 – 00:52:21
Aaron, cancel the Framework Friends conference.
We're going to Utah.
Kent C. Dodds
00:52:22 – 00:52:39
We're already selling tickets to Remix Conf 2023.
We don't have a solid date yet, but we've got dozens of people who have already gotten tickets, and we've sold 7 or 8 sponsorships already.
And they don't even know where or when it's gonna be.
So, yeah, we will definitely keep you up to date on the goings on in the Remix community.
Aaron
00:52:40 – 00:52:54
Alright.
I have one last question for you as we wrap.
Where are you looking for inspiration?
So it seems like Remix is doing a ton of novel stuff.
Are you looking to other ecosystems or perhaps 1999 web standards?
Aaron
00:52:54 – 00:52:58
Where are you looking for inspiration as you're building this stuff up?
Kent C. Dodds
00:52:59 – 00:53:22
Probably a better question for Ryan and Michael.
My contribution has typically been in providing feedback and giving some ideas, but they're the ones really implementing this framework and doing awesome job with it.
But I can tell you that from a nested routing standpoint, that was heavily inspired by embers router years ago.
Ryan has been doing this thing since before CSS was invented, and Michael's been into this for a long time.
I'm the new guy.
Kent C. Dodds
00:53:22 – 00:53:44
I've been doing this for just about 8 years.
And each one of us has worked at really big companies on big code bases.
I can't remember exactly, but I think, like, a silly amount of routes on a Rails app at Instructure, where Ryan was working at, Michael was at Twitter, I was at PayPal.
We're all serving, like, I shipped apps to millions and millions of people.
So a lot of our insights are coming from experience of shipping really big apps to lots of people.
Kent C. Dodds
00:53:44 – 00:54:05
And then we are definitely keeping an eye on the goings on in the community.
Like, a lot of people are talking about partial hydration and React server components and stuff.
We keep an eye on those things.
But we're actually really focused on what is the end user experience like.
And for lots of the innovation going on right now in the UI world, we're seeing a lot of talk of puzzles to solve and problems to solve.
Kent C. Dodds
00:54:05 – 00:54:38
But let's talk on how those puzzles impact the user experience.
And so we keep an eye on those things, but we're actually not actively investigating stuff like partial hydration and stuff because we're actually not seeing any tangible benefits to that from, like, any sort of metric standpoint.
So Ryan was, like, way into the rails world.
Michael invented mustache at Twitter, and we've all been heavily involved in the React world for a long time.
And we're taking advantage of lots of the really cool things that are coming in the React ecosystem as well, like suspense for data fetching and streaming and stuff like that.
Kent C. Dodds
00:54:38 – 00:55:04
In fact, if you wanna take advantage of React 18 streaming, then Remix is the best way to do it.
There's no better API for that, unless you wanna build your own Remix, I guess.
And then as far as community management and stuff, that's my primary where I'm hanging out and as well as, like, just the developer experience, the docs, and the CLI, and stuff like that.
I'm looking at Stately actually is really impressive to me.
And Tailwind is another one that they're just, like, growing really well and and doing an amazing job with their docs.
Kent C. Dodds
00:55:04 – 00:55:07
So, yeah, those are a couple of places we're getting inspiration.
Aaron
00:55:08 – 00:55:25
Kent, I want to thank you so much for taking time to be with us today and tell us the whole story.
It's really exciting.
We'll check-in with you again in the future, and we can get updates and see how it's going for y'all.
This was a really great chat.
Can you let everybody know, I alluded to it before, that people should check you out online.
Aaron
00:55:25 – 00:55:26
Where can people find you?
Kent C. Dodds
00:55:26 – 00:55:41
Yeah.
Kettcdodds.com is the best place.
Remix.run is the Remix homepage as well.
Now it's actually kind of fun to scroll through because Ryan put together some really cool experience, like, storytelling as you scroll.
And then, like, you'll find me on the all the socials on my website.
Kent C. Dodds
00:55:41 – 00:55:54
And, also, thank you all for having me on.
Like, you're very thoughtful interviewers, and it was really interesting conversations here.
So I appreciate you giving me some of your time.
And, for your listeners, thanks for listening, giving me some of your time today too.
Aaron
00:55:55 – 00:55:58
Framework Friends is edited by Paul Barr at Peachtree Sound.
Aaron
00:55:58 – 00:56:01
Our intro music was created by Corey Griffin.
Aaron
00:56:01 – 00:56:10
You can find us at frameworkfriends.com.
Andrew's on Twitter at Andrew Culver.
And Aaron is on Twitter at aaron defrances.