Epic Web Conf late-bird tickets are available now, hurry!

Get your tickets here

Join the community and network with other great web devs.

Time's up. The sale is over
Back to overview

Michael asks Kent about his site rewrite

Kent wants to get you pumped about Season 4 of Chats with Kent, introduce a new podcast you can participate in, and tell you all about his new website built with Remix!

Kent's spent the last several months completely focused on rewriting his website, recording new episodes for Chats with Kent, and creating an all new podcast called the Call Kent Podcast.

Michael Chan joins Kent to ask him about the motivation to rewrite kentcdodds.com with Remix. Kent explains what technology he used to create the unique experience on the site and why Gatsby falls short of the needs of most apps. Michael also asks about the new teams feature of kentcdodds.com and how it helps you get more out of the content.

Kent also introduces the new Call Kent Podcast where people like you "call" in right in your browser and record a ~2 minute question or discussion topic. Then your recording and Kent's response is turned into a podcast episode. It's a fun new way to engage and participate in the greater KCD community.

Lots of exciting stuff to unpack in this first episode of Season 4 of Chats with Kent!

Homework

  • Stay Curious

  • Checkout remix

Guests

Michael Chan
Michael Chan

Transcript

Michael Chan:
Hey, friends. This is your friend Chantastic or Michael Chan. And I am joined by my friend, Kent C. Dodds. Say hi, Kent.

Kent C. Dodds:
Hi Kent.

Michael Chan:
I have a feeling that that's going to be a theme maybe in this season. So, this is a funny way to start a podcast season. Obviously, we've done podcasting together, the two of us, a bunch. But this is like a weird way to start your show. I've listened to it quite a bit and I've never heard another host. It's always you.

Michael Chan:
So, tell me a little bit about this season. What to expect? What we're in for? And why I'm here.

Kent C. Dodds:
Yeah. So, Season 4 is awesome. It's the biggest season of Chats with Kent. We've had twice as many as the next closest, I think. And it's just awesome. We have several people who just couldn't stop talking with them. So we've got back-to-back episodes like yours in I think Season 1 or 2.

Kent C. Dodds:
And, yeah, so there're just so many fantastic people that I talk with and both people that you might be familiar with and people that you're getting to know for the first time. We have just awesome conversation. So I'm really excited. And this has been a really long time coming because it took me a long time to launch this site.

Kent C. Dodds:
But I wanted to launch Season 4 with the relaunch of the site because I felt like they could ride each other's wave of excitement and hype and everything. But the cool thing about Chats with Kent is it doesn't exactly matter when things launch or when the episodes launch because they're evergreen advice and just helping people become better people.

Kent C. Dodds:
And so, I'm just really excited for folks to get to listen to Season 4. And I wanted to open up the season with you interviewing me so that I have a chance to get people as excited as I am about the relaunch of kentcdodds.com.

Michael Chan:
I love it. I love it. Now, admittedly, I have a little bit of privileged information in that I have seen the relaunch of kentcdodds.com. And so hopefully, you're seeing at the point of listening to this but it is super cool. It is super cool. And we're going to focus a lot of our attention today on how the new site is going to empower people to learn in new ways and have new experiences with you as a creator and friend.

Michael Chan:
So, I guess first of all, I'm just curious what's the high level? We've talked about like how there's going to be a new season. But then why relaunch your website? You're probably doing pretty decent on traffic and whatnot over some of the motivations that we're like, "You know what, I think it's probably time right now to build a whole new site."

Kent C. Dodds:
Yeah, actually you mentioned I'm doing pretty decent on traffic so I thought I'll just pull it up right now. Currently today, we haven't actually relaunched today. When you're listening to this, the relaunch will happen. But right now, in the last 30 days on my old site on Netlify, I have had 150,000 unique visitors and almost half-a-million page views in the last 30 days. And 206 gigabytes of bandwidth use and ebbs and flows like you can totally see the weekends and stuff.

Kent C. Dodds:
But my site gets a lot of traffic. And that's primarily my blog posts are the biggest driver there, a little bit of the podcast as well. And primarily in the United States and I think India is a coast second, third, Germany is in there. And Western Europe, the UK is in there, pretty high as well.

Kent C. Dodds:
So, my site, it's been around in its old state for several years. Actually I think I launched it when I went full-time as an educator back in 2018. Was that 2018? Yeah. So, it's been there for a little while. It's in need of a refresh. And probably the biggest thing was I'm super down with static site generation or as I lovingly refer to it as spinner site generation.

Kent C. Dodds:
So, I've got the workshop pages on my old site. And I call into the Tito API to find out if I've scheduled any of those workshops so that people can buy tickets right from my site. And there's a loading state and I can't avoid it because this is Jamstack and we don't make any requests until we hit the front end.

Kent C. Dodds:
Now, I could rebuild every time I schedule a new thing or whatever or every time somebody buys a ticket and the amount of tickets left is reduced. But who wants to do that? Rebuilding took 15-20 minutes every time. If I wanted to do a typo, I had to rebuild the whole thing. And I know that the Gatsby team has been working super hard on their iterative build thing or incremental builds and stuff.

Kent C. Dodds:
But that just seemed like here's a knife with no handle. And now, here are band aids to patch up all of the slices that you put in your hand by using this knife with no handle. It's an enormously complex solution to a problem that I don't feel should exist.

Kent C. Dodds:
And so, when Ryan Florence and Michael Jackson came out with the developer preview of Remix, I jumped all over that. And I was like, "Yes, this is the thing that I want to use for everything that I build in the future." And I started with my site. And now, my new site can do everything that my old one could do and way more.

Kent C. Dodds:
And so, yeah, that was the impetus for me rewriting my site was. I needed to refresh as far as the design was concern. But also, I was really frustrated to have to wait 16 minutes every time I wanted to fix a typo and just having the limits and having to have spinners all over the place and stuff. So, yeah, I'm much happier with what I've got now.

Michael Chan:
This is really interesting. I think that there's been a lot of ... with as much money that goes into branding and hyping the Jamstack, I feel like there is a lot of questioning that strategy from people who have had experiences like yourself where there's a lot of ... or at least questioning the boundaries. I'll put it that way. I think question the boundaries.

Michael Chan:
And I've had conversations with Ryan Florence as well about how ... maybe some of those boundaries are a little bit questionable. But pretty clearly, if you have a user object then you probably don't want to be doing it with Jamstack.

Kent C. Dodds:
Yeah.

Michael Chan:
There's a boundary there that can almost very clearly be made. And so, maybe for your last site, it's like primarily static content like blog posts and all of that kind of stuff. But as you have needed more real time information about users, about customers, about people who have signed up for workshops, etcetera, it sounds like you were hitting the edges of how great Jamstack could be.

Michael Chan:
And so I'm curious. With that in mind, what are some of the new features that you were enabled to or empowered to do with basically that full application level website?

Kent C. Dodds:
Yeah. Man, so many things. And I think when you decide on SSG from the beginning because you're like, "Well, my stuff is pretty much just static. So I'll just go with the simpler SSG." It turns out it's actually not simpler by any stretch of the imagination, necessarily.

Kent C. Dodds:
But also, you inadvertently limit yourself into saying no when you have ideas. You're like, "I could do this but that would just take a lot of effort." And you don't realize that the reason it would take a lot of effort is because of the decision you made early on. And if you just made a different decision early on then it wouldn't take a lot of effort.

Kent C. Dodds:
And so, I've been really kind of surprised, pleasantly surprised, at how many things were just so ... I would just have an idea and be like, "Oh, yeah. All right, I'll just do that. It's really easy." And so yeah, lots of things that I've been able to do with this.

Kent C. Dodds:
So I mean, first off, the most important is dark mode of course. That's not something you can't do with SSG. You could totally do that with Gatsby or static builds from Next or whatever. But that was like a number one requested feature from everybody is dark mode, and myself included. I like myself a good dark mode.

Kent C. Dodds:
And so, we got that implemented. And actually, dark mode is an interesting one for Remix because you never want to have a flash of the wrong theme. And so, we don't know what the user's preference is going to be on the server. We only know that on the client. And so, we have to send something. And then on the client, we need to set up the dark mode situation.

Kent C. Dodds:
And with Next or Gatsby, you can just put a little script in the head that can determine whether or not it's going to be light or dark mode. And that's really simple. But with Remix, it's a little different because you actually hydrate the entire document. You get control from the HTML element on down.

Kent C. Dodds:
And so, by the time your script is running, you're already hydrating or you've gotten to that point anyway. So, that was actually really fascinating and interesting. And because I have a real server, I can actually determine or persist what the user's preferred theme is because I can store that in a cookie.

Kent C. Dodds:
And so, you can't do that with SSG. There are no cookies when you just stick things on a CDN. And so, that was a really nice benefit, is being able to persist this without using local storage or something in the browser so I can render the right thing on the server. I take a different approach. And I can have a little bit more flexibility on the way that I do even dark mode.

Kent C. Dodds:
But yeah, I decided early on that I wanted to have user accounts and I wasn't sure why. I just wanted to have something. I thought, "Well, maybe we could do some Discord integration or something. But then I remembered Pokemon Go and how fun it was to choose one of these three teams. And then just be part of a group.

Kent C. Dodds:
And the teams are made up like when I played Pokemon Go years ago, I basically never ran into other Pokemon Goers. And maybe there are other people who are way into it. I guess I ran into people sometimes but it wasn't ever really a big thing that I did with other people. But it was still fun to be a part of a team and see, "Oh, there's a red gem over there. I'm going to go smash that thing and bring it over to my site and whatever."

Kent C. Dodds:
And so, I decided to implement teams on my site. And so now on the blog posts and the blog page, it will show you which team has the highest ranking. And each individual blog post has rankings for who owns that blog post. It will change the color of the links and everything based on who's the leader of the blog post.

Kent C. Dodds:
And when you're looking at the whole list, it will show you a little color icon for who owns which blog post. You can do a search that says, "All right, show me all of the blog posts where blue team is the leader or all the ones where red team is not the leader." So if I'm on red team and I want to become the leader, then I'm going to go to that blog post where we're not leading and read it and get marked up as another point for my team.

Kent C. Dodds:
And then we have that integrated on the Discord side. So, if you connect with Discord, then we can add your team or add a role on the Discord and now you're part of an exclusive chat, voice and video chat as well with your team. So, you can plan a raid and be like, "We're going to go read this blog post together. And we're going to talk about it or whatever." And just rack up a ton of points for us.

Kent C. Dodds:
And so, I'm really excited about what people do with the teams. And I have a couple of ideas of other things that we can do with teams. But that's another big one that I'm excited about with one of the many features that I added to the site.

Kent C. Dodds:
And that was way easier to do once I had established, "Okay, I am a server-rendered site and I have an actual database. And so, I can keep record of all this stuff." And it feeds into a lot of other features but I'll stop talking now.

Michael Chan:
I'm curious at a high level and I don't think that we ... I imagine that you'll probably continue to write and share this information over the next weeks and months about what you're actually doing. But at a very high level, what are some of the ... now that you're not doing static site generation and you actually have to make decisions on a full stack of technologies, could you give us the high level about what that stack looks like as of right now?

Kent C. Dodds:
Yeah. So, Remix is a very early technology. And so, it doesn't come with as much out of the box as you might get from something like Next or there aren't as many abstractions built for it. And so, that was challenging in some ways because I had to do a lot of wiring up of different abstractions together.

Kent C. Dodds:
But Remix is really well suited for abstraction that is not related at all to Remix or React. And so, that was nice. But anyway, for a couple of the pieces of my stack. So, of course, I'm using React. That's what Remix uses at the moment. Maybe in the future, Remix will support other frameworks. I expect it will.

Kent C. Dodds:
But for the time being it's React and I love React. And so, I'm on React with Remix. My database is Fly or it's hosted on Fly which is fly.io. And it's a Postgres database. So, one of the reasons that I chose Fly was so that I could have a distributed architecture where I have a primary region and that's in Texas. And then I have five other regions all over the world where my application is deployed along with Postgres.

Kent C. Dodds:
And so, I've got a Postgres cluster. Other than the primary region, all the other replica regions are just read-only because that's what we do most of the time anyway. We're just reading a lot from the database. And so, what's cool about this is it means that my app is superfast all over the world. And it's still just a regular node app. I don't have to make all the tradeoffs that come with deploying to Cloudflare workers or something like that which is awesome. But I don't have to make those tradeoffs. I can just do a regular node app.

Kent C. Dodds:
Now, that doesn't mean that Fly is dead simple. It's also a startup. And so, there are a lot of missing pieces and stuff. But they've been super helpful. But yeah, so it's super cool. My app is superfast all over the world, thanks to Fly and Postgres being hosted right next to my node server.

Kent C. Dodds:
And I'm also using Redis for caching because it does take some time to compile my MDX blog posts. And so, I cache those and I cache various other third party APIs and stuff like that. So nobody has to wait for that. And I put that in Redis. And that's also deployed to all those same regions hosted on Fly. So, it's like five milliseconds to pull something big out of Redis and send it to the user. So it's pretty, pretty quick.

Kent C. Dodds:
And because Postgres is hosted right next to the server as well, that's also going to be 15 milliseconds for a query there. So, it's pretty fast at getting people their responses. We're sitting at around 200 milliseconds of response time most of the time. So yeah, it's pretty quick. And because Remix makes interacting with cache headers so it's seamless once you are start interacting with the site. And it does a lot of really awesome, prefetching and stuff.

Kent C. Dodds:
It feels like a static site-generated site where it's just files on a CDN. But there's so many pieces to the site that are unique to you as a user which is really cool. And we can talk about that more. But other things on the stack is I'm using GitHub Actions to deploy to Fly. And that's awesome. GitHub Actions been amazing. I have ESLint and TypeScript and Jest and Cypress all running on the GitHub Action.

Kent C. Dodds:
I have one GitHub Action that can detect if I've made any content changes. And if I have, it will tell my server to go and re-request the content from GitHub. So it updates in 20 seconds. So whereas before, if I needed to fix a blog post typo, it would be a 16-minute redeploy the entire site, bust every piece of every cache, and just a disaster, I hated that so much. Now, it's like a 20-second proposition.

Kent C. Dodds:
And if I've only changed content, then my site will not redeploy at all. And so, I save a lot of trees that way, I guess.

Michael Chan:
That's an interesting outcome. I want to ask something about that real quick. Because I feel like it was easy to gloss over, but it sounds like you're using GitHub as your CMS, I guess.

Kent C. Dodds:
Yeah.

Michael Chan:
And so it's not immediately stored on the database. I mean, it is getting processed and you're doing some magic there. But the content in its original source lives in GitHub.

Kent C. Dodds:
Yeah. And I don't know if I would recommend doing what I've done for most people. I get a lot of poll requests from people improving my content and stuff. And if I were to put my CMS behind something, then I would either need to give those people access to be able to make changes or I would just have to field the countless emails from people telling me that I don't know how to spell receive or whatever.

Kent C. Dodds:
It's so much easier to press the green button to merge somebody's poll request than to say, "Thank you for your email," and then go and update it in my CMS. And so because that's been the pattern for a really long time where people are just more than happy to contribute their fixes and stuff, I wanted to keep that. And so yeah, using GitHub as a CMS worked out really nicely for me.

Kent C. Dodds:
But the big thing was I didn't want to have to redeploy when I had a content change. And so, I hit the GitHub API to go get the content. And so, I can get that at runtime. And then I cache all of that in Redis so that I'm not hitting the GitHub API every time and slowing every request down and stuff.

Kent C. Dodds:
And then on top of that, too, on my old site, if somebody wanted to translate my blog post, that's totally cool as long as they credit and everything. And I would just have them add a list item to the top of the blog post like French, Polish or whatever. And with this site, I've changed it and made it more official.

Kent C. Dodds:
And so now, it will be even easier for people to make a translation and then just make a little poll request to add to the list, and it's styled nicely and everything too. Actually, because it's so much easier, I expect more poll requests like that. And so, that's even further another reason why it's good for me to use GitHub as a CMS.

Kent C. Dodds:
So, the last couple of things, I'm using Tailwind. I'm really big fan of Tailwind. It's awesome. We're using the just-in-time compiler. So, for all of the styles on the whole site ... I should have looked at this ahead of time but we're probably sitting around 10 kilobytes of CSS for the whole site which is great. Tailwind is awesome for that. And I didn't have to do as much work as I would have if I had just built it myself.

Kent C. Dodds:
So, Remix makes CSS problems go away. They just magically vanish because you have your CSS file and you say, "I want this CSS file on this route." And then when that route is gone, that CSS file is also gone and so you never worry about clashing. It's amazing.

Michael Chan:
Yeah.

Kent C. Dodds:
Clashing is just not a problem with Remix. That's fantastic. There are other problems and tradeoffs and things. But that's a very significant one. And so many developer hours have been put into avoiding namespace collisions and stuff like that, how can I delete this CSS, or how can I change it without impacting other stuff like that.

Kent C. Dodds:
PayPal, we had 90% unused CSS in the app that I worked on. And that is not unusual. That is very common. And that's why we have the CSS in JS and everything. And those tools are still awesome. But wouldn't it be great if you just didn't have the problem that makes you want to use those tools. And that's what Remix is.

Kent C. Dodds:
So yeah, just to wrap things up, I'm also using API or MSW for mocking everything locally. So I can run the entire site locally even with interacting with the Discord API and the Transistor and Simplecast APIs and stuff and Tito. It's all mocked so I can run it. I can go up into the mountains with no connection and still work on my site. That has been phenomenally awesome. You'll definitely see more of that for me in the future.

Kent C. Dodds:
And then MDX Bundler is this little tool I built that allows you to bundle MDX, because MDX is source code. It's not like a markdown static file. You're importing stuff and stuff. So you need to bundle that. And so I wrote MDX Bundler that combines XDM which is like the next-gen MDX thing with ESBuild and bundles. You just point it to a directory or you have all of these files in memory. You hand it to that. And it gives you back a bunch of code that you can eval which is what I do.

Kent C. Dodds:
I mean, there's no other way to do that. And I'm also using Xstate for the call recorder which has been awesome. And then the last thing is Reach UI. I'm using Reach UI all over the place. Reach UI is phenomenal. So, that's my stack.

Michael Chan:
Cool. So, I want to diverge a little bit. I want to talk about how those technologies might come up in the future with you. But I want to talk about what those technologies first enabled you to do on your site. So, something that seems very new right now is this notion of Calls. And at least I haven't seen that before.

Michael Chan:
And so, I'd love to know what that means for you and what that means for people who are getting the Kent c. Dodds experience?

Kent C. Dodds:
Yeah. So, Calls is a new podcast. It allows people to call in with a discussion topic or a question. They record right in the browser for about two minutes. And then I can listen to it right in the browser and I record my response. And then when I say, "Okay, this is good. Let's turn this into a podcast episode," then my server will use FFmpeg to manage all those together with some cool sound music and stuff. And stick it up on a podcast that people can subscribe to.

Kent C. Dodds:
Basically, I'm planning on this being a daily thing, each episodes around 10 minutes or less. So, it's pretty quick. And people can ask follow-up questions and stuff in separate episodes. So, it's a really cool and interactive part of the site that is really unique. I got the idea from a podcast that I listened to called Ride the Lightning, the Tesla Unofficial Podcast which is a weekly podcast.

Kent C. Dodds:
And one of the things that he does is he provides a phone number that you can call in. It will record your question or whatever and email him an mp3 file. And then he puts it together in a bunch of calls each episode. And I just thought that was so cool, a really awesome way to connect with the community. And remember, you're actually working with or talking with real people and stuff.

Kent C. Dodds:
And I wanted to have that, but I knew that it was a silly amount of work for him to be like, "Now, you've got to normalize the audio. And you've got to download it. And you've got to do all the stuff." So, I didn't want to do that. So I spent way too much time working on making this a real thing, and it's cool. I paid Jay. I don't know what his last name is. But everybody knows Jay, he's great.

Kent C. Dodds:
He put together the waveform thing so as you're recording, it shows the waveform. It looks really cool, actually, to make it like a legit thing. And yeah, it's a ton of fun. Another part of what it does is I did a lot of questions from people. And often I'll redirect them to office hours, which is fantastic because now, more people can hear the question, I can take all the questions that I get and put them in a single hour a week rather than having them interrupt my day every day all week.

Kent C. Dodds:
But often, the questions that are asked there are like ... I don't need to share my screen. They don't need to share theirs. They're just kind of asking career advice or, "I thought about what you suggested here and what do you think about that," and whatever. And so, it just appeals really nicely to audio. And I love consuming podcasts. I just think it's a really nice way to consume information while I'm doing the dishes or whatever.

Kent C. Dodds:
And so, I decided, "Let's just make doing a colon sort of podcast, really easy for both me and the people calling in." And we've had a lot of people already. And I expect to do this for the foreseeable future and redirect people to that podcast so I can increase the level of impact. So I'm more motivated to answer all the questions that I get.

Kent C. Dodds:
And then also, I can actually answer the questions that people are asking me. So anyway, that's what the Call Kent podcast is all about.

Michael Chan:
I love it. I love it. And it's definitely something that would have been a huge pain or impossible with your previous stack.

Kent C. Dodds:
Yes. I cobbled together a bunch of serverless endpoints and stuff like that. But it would have been basically just as much work to do that as it has been to do it with a real server-rendered thing. And the experience wouldn't have been as good because you land on the page. And either I need to rebuild it every time somebody submits a call or something or I have to load it when I land on the page. And that's why I call it SSG spinner site generation because you got spinners all over the place.

Michael Chan:
Now, you've mentioned that there's some really cool things that you're doing with teams. And I'd love to hear more about how you're making that content interactive. So the blog posts, the podcasts, all that kind of stuff, how you're making that interactive for teams, how you're connecting the dots between Discord and your website and your courses, etcetera?

Kent C. Dodds:
Yeah. So, one of the things that I decided to do was I wanted ... well, the designer that we got had a brilliant idea of making it so that anytime you got to the bottom of the screen, you weren't left at a dead end, but that there was something else to direct you to. Well, on some of the pages, it's just a link to another page. But on many of the pages, it's related content to what you're looking at right now so other blog posts and that sort of thing.

Kent C. Dodds:
And I didn't want to recommend a blog post to somebody that they were reading right then. So I knew I had to do some checking there. But also that they read recently. It wouldn't make sense if you just get recommended the same three blog posts and you read it, and you're just in this circle.

Kent C. Dodds:
And so, I wanted to have something that was a little smarter. And so, using some pretty basic, metrics is the wrong word, but parameters I guess, I determine whether you've actually read the blog post. It's pretty much just like, "Did you scroll the whole thing and were you on the paper for about 60% of the time that it would take to actually read it?"

Kent C. Dodds:
And so if you did, then that gets marked as a read. And you only get one of those a week. So if you read it twice in a day, that doesn't count. But once you've read it, you're not going to get recommended to read that again. I may add like if it's been like a year, then we'll recommend it again or something.

Kent C. Dodds:
But yeah, so we keep track of all of the times that a blog post has been read. And then, we decide who is the team lead or the leading team based on how many recently active users have read this blog post in the last six months relative to how many active users there are on the team.

Kent C. Dodds:
Because let's face it, most people are going to choose a blue team. I don't know why. My favorite color is blue, but most people just choose blue. Not as many people choose red. And even fewer people choose yellow. I don't know. That doesn't make sense. But that's the way that it is.

Kent C. Dodds:
And so I didn't want the blue team to always be winning. Actually, if you want to make sure that your reads have a bigger impact then choose a yellow team. Because we divide everything by how many recently active users there were. So, anybody who has read a blog post in the last year counts to that number.

Kent C. Dodds:
And so then using that, we decide, okay, what the team rankings are and we show how close you are to being the leading team and stuff. And hopefully, that sparks some conversation with people somebody like reads a blog post and they see their ... they just need six other people to read it. And then they're just as the leading team so they go and get their friends on the Discord and say, "Hey, listen, we just need six people to read this blog post. And we'll be leading on this post. So, everybody go read it."

Kent C. Dodds:
But yeah, because I have the data about the blog post and the data about what posts you've read, I can give you really nicely-catered recommendations. So, we normally have three recommendations on the page. One of them is one that's related to you just finished reading. Another is one that's just completely random. Another is a recent blog post I think. But none of them are blog posts that you've read recently.

Kent C. Dodds:
And so yeah, this is the thing that I could not reasonably do with static site generation without some sort of loading spinner. Literally, you could not do this with static site generation because like you said, once you have a user, all bets are off. You're not generating individual build for every user.

Kent C. Dodds:
And it's really cool actually to be able to do that sort of thing. And I'm hoping to eventually be able to do the same with the Call Kent podcast, Chats with Kent, other pieces or content. And we do the same thing on the workshop pitches as well. We recommend different workshops based on what you're looking at right now and stuff like that, too.

Michael Chan:
I love that. I'm really getting a good picture about what the value of having a very dynamic blog or personal site is. And honestly before this call, I didn't really understand. I mean, I knew that there were a lot of things you could do. But being able to cater the user experience to what they're looking for on a blog is actually really fascinating because it really is like you see a lot of previous and next, you see a lot of recommended based on the content of this post as I see it as the author of this post.

Michael Chan:
But having that dynamism in there of like I read these things, and now you know better what to recommend to me for the place that I'm at in my journey is really exciting.

Kent C. Dodds:
And as you say that, I feel like I have to mention the privacy policy, too, because people are like, "Oh, my gosh, Kent is watching me as I read." I will never sell anything, any of your data. So, if you go to my website slash transparency, it's this big thing that tells you like how I make my money, what my mission is, even all of my revenue streams and what percentage of my income, those revenue streams are, the things I'm invested in.

Kent C. Dodds:
I've had multiple people asking me if I'm invested in Remix. I am not. And so, that's why I decided to add what my investments are. And I've got my goals with regard to sustainability and everything. And also, terms of service and privacy policy are on there. And I am in the business of helping you learn things as quickly and retention-focused as possible.

Kent C. Dodds:
And I feel like I can do that much better knowing more about the things that you've already read and maybe a few more things about the behavior of you on the site. And I didn't want to just say, "Well, here are the most popular blog posts," because they're popular because they're popular. Because they're on that list, they become read more often. And so I didn't want to have that problem either.

Kent C. Dodds:
And then another thing on the transparency page, I also have public analytics. I'm using Fathom and they allow you to make your analytics public. So, anybody can go and look what the analytics are and what I track from an analytics perspective. The whole site is open source so you can look at everything that I'm doing.

Kent C. Dodds:
And then, I also actually have public metrics. So, somebody is working on a Remix specific metrics site called Metronome. It's really cool. And they allow those metrics to be public as well. So I have a shared URL. So, you can go look at how fast or how slow my Remix site is. And maybe you can fix it if you care that much.

Michael Chan:
I love it. So, I want to transition back to the technology thing. So, we've talked about how the technology that you've chosen to enable these new features and to empower users with these new capabilities connects better with your audience. And then we talked about what your goal is in that.

Michael Chan:
But I'd love to know now, headed back to the technology side. You've invested a lot into newer technologies. And I'm curious, does that have any impact on what we can be expecting from you in the future in terms of course creation, blogs, newsletter tweets, all that kind of stuff?

Kent C. Dodds:
Yeah. Definitely tweets. Yeah. So, when I went full-time educator... oh gosh, it's three-and-a-half years now. I can't believe that. Is that right? I don't know. It's been a long time.

Michael Chan:
It sounds about right. I mean, especially when you consider the pandemic inserted, it's a year-and-a-half, to anything that happened before it.

Kent C. Dodds:
That's so true. Yeah. So it's been a long time, however long it was. But when I first started, I was like, "Well, maybe I'll just do this." The biggest concern for me was am I going to stay relevant? How do I make sure that I don't lose my relevance as a software engineer? Because I'm teaching people how to build and ship products with teams, but I'm not doing that anymore. And time has changed.

Kent C. Dodds:
So, I need to make sure I stay relevant. And that hasn't been a big problem for me because I like experimenting with the new stuff and playing around. But at some point like when all you are building is workshop exercises and demos, I mean the bookshelf app that I built for Epic React was no small thing, and several maybe 10 or 15,000 lines of code. But still building with the team and all of that.

Kent C. Dodds:
And so, when I started, I was like, "I'll do this couple of years and then maybe go back to industry for a while and then come back out." And like, "We'll just do that until I die," or something. And so, this was actually very serendipitous. And it wasn't actually intentional. I wasn't like, "Okay, I'm going to take a year off or something and just work on building something that."

Kent C. Dodds:
It just happened because I, as I described earlier, how I decided to rewrite my site. And I'm really happy that I did this because now I have so many things that I want to share with the world about what I learned in working with all these amazing technologies. And it's not just frontend stuff either. Deploying on Fly has been awesome. So I'll probably have stuff about deploying on Fly.

Kent C. Dodds:
And Postgres is definitely not a new technology or anything but it's been really awesome to work with when you pair it with Prisma. And you will definitely see Prisma stuff for me in the future as well. I'm just blown away by Prisma. And, of course, TypeScript has always been on my list.

Kent C. Dodds:
Contrary to popular belief, I've actually been using TypeScript for a very long time. I was using it at PayPal. Everybody thinks that I just barely started using TypeScript. I don't know why, maybe because I just started asking questions. But I did recently start moving my educational stuff over to TypeScript in my open source. And maybe that's why. But yeah, I have had TypeScript on my list for a long time. That will be the first thing I work on, is getting something about TypeScript out.

Kent C. Dodds:
And I learned a lot about TypeScript and building the site, too. And then, of course, Remix will be the biggest thing. I have so much to share with people about Remix. We'll probably have stuff about Tailwind as well. But, man, Remix, there's so many awesome things I want to teach people about what makes Remix so great and how you can make great websites with Remix.

Kent C. Dodds:
So yeah, I have a handful of workshops already planned out, outlined and everything that I'm thinking about scheduling to go along with the launch of the site. So, if you're listening to this, go check out the workshops page because I might have something scheduled there for you to sign up for.

Michael Chan:
I love it. I love it. I think there's a lot, a lot, a lot of exciting things that are going to be coming from you. And I am excited to learn from you. I think that that's probably great for kicking off this podcast season. And I'm curious, is there anything that we missed before we send people on their way?

Kent C. Dodds:
Not really. I'll mention a couple of little things. So, another feature that we didn't mention about the site is Cloudinary. And I guess this technically could be part of my stack. But I moved everything off of my site into Cloudinary. And my goodness, Cloudinary is amazing. And all of the images that you're looking at on the site are optimized perfectly for your device and for your screen size. And that is just the magic of Cloudinary. It's so cool.

Kent C. Dodds:
Also, the Twitter embeds on my blog posts and stuff. I decided I hate the Twitter widget. It is awful. And so, I wrote my own remark plugin that fixes up Twitter embeds so it's like a custom thing there. And so, you are going to see a fair amount of data savings as well just from that. So that's also a neat feature.

Kent C. Dodds:
And then, one other thing is the Epic React store. This is not really into the site but I just had to mention it. And I know people can't see this. But for you to see, this is a little koala that has an Epic React shirt on it. And it is like 8 inches tall and it sits on my desk. And it's way better than the rubber duck that I actually also have on my desk.

Kent C. Dodds:
But yeah, so you can get your own at the Epic React store along with the super comfortable jacket and a bunch of other Epic React stuff. So that was something else that I released recently that doesn't exactly go along with this, but I thought I'd mention it because the adorable koala is just staring me in the face.

Kent C. Dodds:
So anyway, I'm just really excited about what this site rewrite means for the overall KCD community. I feel like the Discord is going to have a heavier integration with it in the future. And that Discord is serving the community in a really great way and where the community helps each other.

Kent C. Dodds:
So, it's been really fun and I'm really excited to take everything that I learned over the last, I don't know, 10 months of working on this site and teaching everybody how I did it so that we can all build better websites.

Michael Chan:
I love that. And that sounds like a really great way to end. Now, for those listening right now, this is just the beginning of your journey on the Chats with Kent podcast, a lot of great content and episodes ahead. Do you want to take it away, Kent and tell them what to expect and close out?

Kent C. Dodds:
Yeah, thank you. So, every episode of the Chats with KENT podcast talks with an interesting person about an interesting subject, and encourages you to do something to improve your life. And I always talk with the guest beforehand and say, "What is the change you want to see in the world? And how can we use this 30 minutes to help encourage people to make that change in their own lives?"

Kent C. Dodds:
And so at the end of every episode, you hear a homework assignment or a key takeaway or something for you to actively do. Of all the episodes, I didn't think about what this one would be. But I think if I were to say one thing, it's just to stay curious and go look up Remix because that's the next big thing.

Kent C. Dodds:
And yeah, we actually do have an episode about Remix in this season. So, go listen to that, I guess. So yeah, I'm super excited to hear back from people about what they think of the podcast as well. So yeah, do that. Let me know.

Michael Chan:
Awesome. Well, that's a great way to send you off. Enjoy your journey on the new kentcdodds.com and then also in the new Chats with Kent podcast. And if you have follow-up questions, try out the new calls feature. I might give it a try actually just to see how it all comes together.

Kent C. Dodds:
Excellent. Yeah. I'd love to hear from you, Michael. Thank you.

Michael Chan:
Cool. Thanks so much, Kent.

Kent C. Dodds:
Okay. See you.

Sweet episode right?

You will love this one too.

See all episodes

Featured episode

Jhey Tompkins Chats About Building Awesome Demos

Season 4 Episode 24 — 34:07
Jhey Tompkins