Episode 37 • Joel Hooks

The Changes Gatsby and Mdx Are Making to the Internet with Chris Biscardi

Today we are joined by Chris Biscardi where we discuss:

  • Learning in public and him live-streaming open-source development
  • Gatsby as a PWA generator and its potential to become the dominant force on the internet
  • MDX's power and its potential of replacing markdown as the default content type
  • Chris' project, MNTNR, and the assistance it'll provide to open-source maintainers.


"The Changes Gatsby and Mdx Are Making to the Internet - with Chris Biscardi" Transcript


Chris Biscardi:

Joel Hooks


Joel Hooks: It's going really well. So I wanted to talk to you a little bit, like just to kick it off, about your general practice of what I would call, from my friend Sean Wang, learning in public.

Chris Biscardi: Yep.

Joel Hooks: You seem to like really just kind of embrace this idea that, "Hey, I'm learning stuff and doing things and I'm gonna share it with you." And I was wondering is that an intentional approach that you've taken?

Chris Biscardi: Yeah, that's definitely an intentional approach. I feel like I've been learning for a very long time and I'm not gonna stop learning anytime soon. And when I put out more content as I'm learning or things that have already learned, I can go back and I can find them later or people who are hitting similar problems, who maybe haven't had the context, time to develop the context that I have, can look at it and go, "Okay, well, he did this. I watched him do this. I saw him do this. Yeah, maybe he screwed it up a couple of times. But I also screwed it up a couple of times. And that helped me." So yeah, it's very intentional.

Joel Hooks: And taking it like even to the next extreme where you're, you're literally live streaming your development process and your learning process.

Chris Biscardi: Yeah.

Joel Hooks: And I was wondering, how has that experience been? You know, just broadcasting as a programmer?

Chris Biscardi: It's been a lot of fun. You know, I don't expect it to ever get to the point of some of these video game streamers, right? Where I have tens of hundreds of thousands of people watching me at any time. But it's really nice to be able to sort of develop something. Say I'm working on like Gatsby Teams or something like that, right? Or MDX or Gatsby MDX or something like that. People use these projects all the time and it's sort of hard to formulate if you've never built and distributed an open source project like how this happens. And it's really easy to build up this mental model of sort of open source maintainers as these like infallible super genius people, just because they have a bunch of repos that are open source and distributed and like a bunch of people are using them. Right?
But really, everybody sort of starts from the same place and we all learn sort of what we're doing as we're going. And most open source projects that I know of are sort of, somebody starts building it and they're not really sure if it'll work out. And then, you know, sometimes it works and sometimes it doesn't. And you sort of have to deal with that when you're doing it. And exposing that process online is a really interesting because I've found that people really appreciate sort of the transparency and it gives them sort of more of a idea of community about the project.

Joel Hooks: Yeah. I'm actually surprised and honestly I, like when I first started watching people doing it for video games, I was surprised too. And then I spent a couple months just like enwrapped every evening watching MoonMoon play Overwatch 'cause like I can't play Overwatch competitively. I have a hand injury, but watching him was like 80 percent of like the feeling of, of playing Overwatch. And it was, it's really been interesting to me. Just the immediacy you get when you are connecting that way. Right? Like we had this ability to live stream and connect that way and it's kind of amazing.

Chris Biscardi: Yeah, it was pretty amazing. And it sort of delivers on that promise of like, I know GitHub's slogan was sort of like social coding at some point. Right? But when you're live streaming, it like really is social coding. It's like a group of people working on a project at the same time, even though I'm sort of driving. Right? It's almost like mob programming or like extended [inaudible 00:03:19] programming in that sense.

Joel Hooks: Mm-hmm (affirmative)
Yeah. Have you done that as a practice, like pair programming in any of your professional capacity?

Chris Biscardi: I don't usually do it in a professional capacity when I am a, either consulting or as an employee. I do it more informally in terms of like, we'll have a junior person or a more senior person and they'll have, be having trouble with something that I know about or I'll be having trouble with something that they know about. And then we'll sort of sit around a computer or do a video hangout or something like that and walk through it. But never really as an official structured, "Hey, here's the pair programming computer, go over and sit over there and do pair programming." No.

Joel Hooks: Yeah, I haven't really had the opportunity to either. I don't know. I'm a, I've only worked remote for the past decade and over that time, you know, it's like we build up the patterns and practices of being a remote worker and communication and over communication is like a huge part of that. So to me it's an extension of this idea of remote work. We can work anywhere but we can still work together.

Chris Biscardi: Yeah, definitely. I definitely see that. So I've been doing remote and onsite for over the past 10 years or so. And you see it interestingly in like the way that you talk to people. 'Cause you'll say, you'll type something out. They'll send it and you'll look at it. He'll go, "Wow, that could be read like I'm attacking you."

Joel Hooks: Yeah.

Chris Biscardi: So then you'll just do it like a quick check in and then they'll go, "Oh. No, no, no. I didn't read it like that." And then we'll continue the conversation.

Joel Hooks: Yeah. Like the tone. And just like I, and honestly like I didn't even embrace video chat until the last couple years and I think that's 'cause it was kind of crappy, but like it seems like the tools are catching up and now, you know, like the ability to, you know, broadband's where it's at. And we're able to push video over the internet at a reasonable speed and actually have conversations without stuttering and weird artifacts and that sort of thing that makes it miserable.

Chris Biscardi: Yeah, for sure. You know, I think the habits that I pick up with remote work and sort of checking in with people as you're talking to them really apply to in person conversations as well. It's just that nobody really ever is forced to pick up on them. So unless you've done the work and figured that out yourself, people usually don't have conversations where they're constantly checking in with people.

Joel Hooks: Yeah. When I'm doing this. And I've started doing the live broadcasting internally to the Egghead member audience. And it was something that was hesitant to do because it was like, "People be even be interested in this? Would they want to watch this? Is this boring?"
We're literally watching Egghead videos like as a group and then chatting about them. And I'm like, "Would people even want to do that?" Like why would anybody have any interest in that? And then as it turns out, the response has been fantastic. Like people do want to sit down and watch videos with other people and then chat about them afterwards. And, you know, like all of this is kind of an extension of that and, you know, the idea of community and bringing people together, and like having a shared experience. And learning as we go.

Chris Biscardi: Yeah, definitely.

Joel Hooks: So you've been pretty heavy into Gatsby and that ecosystem for quite some time. I think I would, it would be fair to say you were a very early adopter of Gatsby. Is that true?

Chris Biscardi: Yeah, definitely. I was using Gatsby pre one dot O. I think I came in and started committing around zero dot seven or something like that. But yeah, it's been awhile.

Joel Hooks: And this is before they had the, you know, there was no graph QL at that point. This was kind of like early, early days of Gatsby.

Chris Biscardi: Right.

Joel Hooks: And you've seen it. You've been there pretty much since the beginning, watching it grow. And, you know, where do you see Gatsby fitting into the internet and publishing on the internet now and where do you see it going in the next year or two?

Chris Biscardi: Yeah. So, right now it's fitting in very well with anybody who's using sort of these modern frameworks like [react` 00:06:50] that are component based and things like that. And you want to sort of like get away from the monolithic Wordpress CMS installation. And I mean, Wordpress has plenty of security issues and things like that-

Joel Hooks: Mm-hmm (affirmative)

Chris Biscardi: ... that we don't really need to get into. But, so Gatsby fits really well in sort of this field where you've got this content mesh somewhere. Right? Your Wordpresses. Your Contentfuls. Your [inaudible 00:07:15], etc. Or just local unstructured data and you need to pull all of that data together and build a site based on that. So you see people doing things like building entire sites based on their Airtable Excel sheets, right? So it fits really, really well if you have data and you need to do something with that data and render a site out, that transformation pipeline is Gatsby's real core strength right now.
As for where it can be sort of in the future? I think it has a very strong chance to sort of replace a lot of the internet. All of the people that are currently running things like Wordpress, I think Gatsby has a shot at actually replacing a lot of those sites with sort of simpler, more modular sites for people. And that's part of the work that I'm doing with sort of Gatsby Teams and things like that. Making it easier for people to use Gatsby to build things when you only know [inaudible 00:08:07]. Or when you only know a piece of GraphQL and you don't really know how to build a GraphQL server, but you can like fetch your data.

Joel Hooks: Yep. Is it pure content sites or people having luck building more, like the dynamic sites? Right? Like we bring it in, we use the content mesh, which I was kinda curious about. That's just like the, everywhere we can possibly pull our content from is our content mesh. Right?

Chris Biscardi: Mm-hmm (affirmative)

Joel Hooks: And then we want to bring that in, so, you know, Gatsby's a, what we would refer to as a static site generator, but then it just becomes a react app at the end of the day. Right? Like so when it's all said and done at build time, we're building the static site, then it takes over as a react app so we can build any sort of kind of dynamic capabilities that we want into it at that point. I would assume.

Chris Biscardi: Right. Yeah. So, Gatsby does the full pre-render, so it renders out html for you, right? So you actually have your static site and it doesn't need to run anything else. Right?

Joel Hooks: Yep.

Chris Biscardi: But then you also get this very modern react app to bootstrap on the other side and it's code split and everything like that. And you've got these progressive web app features. So really what I refer to Gatsby as is sort of a progressive web app generator, not really a static site generator.

Joel Hooks: Yeah. That's a good way to put it.

Chris Biscardi: Because you get the static site aspect of it, which can replace Hugo and things like that. But you also get the very dynamic nature of it, in which case you can like throw in Apollo client and start actually building a web app. Right? It can be a replacement for create react app that actually has pre-rendering on one side and a full dynamic app on the other side.

Joel Hooks: Do you think we'll ever get to the point where Gatsby isn't a react? Do people do that? Do they use it to generate other, you know, like view for instance. Can you use it for that now? Or is it strictly react at this point?

Chris Biscardi: It's strictly react right now. There's been a couple of issues filed, things like that about potentially building view support in and things like that. It's not something that I know anybody is taking an action on right now.

Joel Hooks: Yeah.

Chris Biscardi: But I could see it happening in the future. Right? All the infrastructure underlying Gatsby doesn't necessarily prevent you from doing that, it's just that it was originally built on react and, you know, it's working out really well.

Joel Hooks: It's a pretty good bet, I think, at this point. And, you know, react is what it is and it's kind of dominating the space.

Chris Biscardi: Yeah.

Joel Hooks: So it's the easy choice if you want to use Gatsby. And I know that the other, you know, tools out there are, you know, there's tools out there for doing these same type of things with other frameworks. But Gatsby, like to me it's been interesting just because of, as a business, right? Like Gatsby's a business. It's a funded startup company, right?

Chris Biscardi: Yep.

Joel Hooks: Like, and so what are they gonna do? And like from the business strategy angle of it? And like, I would love to see somebody just completely, you know, Wordpress was great and they've had their time. But, you know, if they don't, I think embracing this idea, this idea of PWA generator, is really gonna hit pretty big. As history will tell us, I guess.

Chris Biscardi: Yeah. And I mean, you even see Wordpress moving in this direction, right?

Joel Hooks: Yeah, yeah. For sure.

Chris Biscardi: They have an API now. They have their new content editor and things like that. This is the way the world is moving and Gatsby, I think, got there basically first. So.

Joel Hooks: Yeah. And I also love it as my absolute favorite example of a complicated redux application. So.

Chris Biscardi: Yeah. Yeah. A lot of people don't realize that it uses [redux 00:11:28] under the hood because you don't actually need to know that.

Joel Hooks: No, no. It doesn't pertain to your usage of Gatsby. But if you open up the covers a little bit, it's like, "Whoa."

Chris Biscardi: Yeah. Yeah, I do that a lot. I sort of, I do things like access to redux database directly what I'm working on new features and things like that. But that's not normal usage.

Joel Hooks: No, I'd hope not. Like that's like the whole point of the project is to abstract that complexity for us and make publishing easy. Right?

Chris Biscardi: Yeah. Right?

Joel Hooks: Speaking of publishing, at least recently, a big part of your focus has been, one, the Gatsby themes, which are very exciting and I think make sense on a lot of levels. And then the other side of that is Gatsby MDX. MDX is like mark down with the ability to drop react components in it. Is that a pretty good short explanation of what MDX is?

Chris Biscardi: Yeah. It's close enough.

Joel Hooks: Yeah. So how would you describe it, though? Like if you're describing MDX to another developer, how would you describe MDX?

Chris Biscardi: No, I usually describe it to them based on their context. If they're a design systems team and they work on a design system, I say, "Hey, this is the way that you can use all your design system components to render your markdown out." If they are somebody building a documentation site, I say, "Hey, this can let you actually use react components and because you can use react components, you get to do things like embed a go playground inside of your documentation site," right? So I try to use sort of the core example for their use case and then say, "Okay, but it's all MDX and you can do all these things, but this is how it's useful to you and what it can enable you to do."

Joel Hooks: What is MDX gonna change in terms of publishing and creating content on the internet?

Chris Biscardi: I think MDX has a actually pretty strong opportunity to sort of replace markdown as the default content type. Right?

Joel Hooks: Yep.

Chris Biscardi: Because it's compatible with markdown. Right? It's the same. It's the same thing. If you want to write a markdown file, you can write an MDX file and it'll be the same thing. You could just change the file extension if you want to. And then it gives you all this power on top, right? It gives you the ability to create your header tags or your code blocks and replace them with these super power, dynamically imported react components. Right? So I think over time we'll see MDX probably expand into other frameworks as well. I know that there's some work being done on view support for MDX.

Joel Hooks: Mm-hmm (affirmative)

Chris Biscardi: And it can actually end up replacing markdown as the default platform for people to build on top of. Right? And the people that don't care, don't need to. And the people that care are suddenly gonna go, "Oh, wow. I have all of this power now that I didn't have before. I can just write a single react component and it gives me this really powerful code block. Right?

Joel Hooks: Yep. We think about markdown. Right? And it's just text.

Chris Biscardi: Yep.

Joel Hooks: And, you know, that's how we look at it. And that's, it's true. It's text, it's data. And I think a lot of times, and I know I personally will take text processing for granted and then I see something like MDX and I also see another project, the unified project-

Chris Biscardi: Mm-hmm (affirmative)

Joel Hooks: ... which I think is fascinating. And I hear almost nothing about it. And could you describe unified as it, maybe, as it relates to MDX?

Chris Biscardi: Yeah. So unified is this basically an AST manipulation tool kit. Right? If you look at markdown and you look at approaches like remark, remark is built on top of unified, right? If you want to do anything with the remark, which is the markdown AST, you [inaudible 00:14:55] unified plugins, effectively. It's the underlying layer between a markdown AST and html AST and all of the MDX extensions to those ASTs. So unified is the abstraction abstraction, as I would put it, right?

Joel Hooks: Yeah.

Chris Biscardi: It's the AST behind the AST kind of thing.

Joel Hooks: Yeah. I mean, it's getting down to the bare essentials of picking apart our text files and doing things with them, manipulating them and doing interesting things with them.

Chris Biscardi: Yeah, for sure.

Joel Hooks: So, as far as that goes, like as far as, you know, like MDX, we get to this point, we have, you know, a supercharged markdown that we can add dynamic capabilities to it. What examples are your current favorites? Like where do you send people to show like the power of MDX and what the capabilities can and will be?

Chris Biscardi: So, there's a bunch of people building, sort of design system sites, that are starting to get, so, they're actually using MDX and they've been using it for a while. And now they're starting to get to the point where they're like, "Okay, we have all of this stuff and now what can we do with it?"

Joel Hooks: Mm-hmm (affirmative)

Chris Biscardi: So we're still in the very early days, but most of the sites that I send people to are documentation for design systems, 'cause those people felt this need the most, I think, over the last couple years. Where they tried to build this documentation and they have all these components and they're like, "I don't know how to put these two things together without a lot of work." And now it takes like, no work. So, yeah, basically design [inaudible 00:16:24] and documentation sites.

Joel Hooks: Do you have any favorites? That are public?

Chris Biscardi: Yeah. So, Reach Router's documentation actually uses Gatsby MDX-

Joel Hooks: Okay.

Chris Biscardi: ... which is pretty [inaudible 00:16:32].

Joel Hooks: Yeah.

Chris Biscardi: And that's a good example. There is some work going on in carbon to use MDX. There is some work going on in seeds to use MDX. And I can give some links to you so that people can see it in the show notes, but.

Joel Hooks: Then you have a Doc Z, too, right? Which is [crosstalk 00:16:53] MDX-based, so you can, you know, anybody can pick it up and it gives you kind of a, almost to a structure framework type thing to build around.

Chris Biscardi: Yeah. Doc Z is really interesting from a Gatsby themes perspective-

Joel Hooks: Mm-hmm (affirmative)

Chris Biscardi: ... and also from an MDX perspective. I think that a lot of the work in Doc Z itself has already been written inside of Gatsby, right? So there's this sort of DV extraction, abstraction inside of Doc Z.

Joel Hooks: Yeah.

Chris Biscardi: That could just be the Gatsby content mesh data layer. Right? And it would sort of allow you to use the entire Gatsby ecosystem if you wanted to extend your documentation with a blog or something like that.

Joel Hooks: So you'd use the plugins and and that sort of stuff.

Chris Biscardi: Yeah, yeah. I mean, you'd use like SV MDX. And it would come in a nice little Gatsby theme Doc Z package. And if you wanted anything else you could use any plugin, right? You could pull in stuff from Airtable, pull in stuff from Paper, pull in wherever you want. Right?

Joel Hooks: Yeah. And I mean, I don't know, the entire concept is very exciting to me. I keep literally wanting to rewrite our entire front end using this technology and like leveraging, you know, MDX and Gatsby and the idea of, you know, PWA generator is so appealing.

Chris Biscardi: Yeah. I've seen some of those [inaudible 00:18:08].

Joel Hooks: Yeah. It's hard like to have restraint and not do the rewrite. I think just in general as a developer.

Chris Biscardi: Yeah, for sure.

Joel Hooks: Reach router's cool too. So that's using Doc Z or it's using MDX anyway.

Chris Biscardi: That's using Gatsby MDX.

Joel Hooks: Gatsby MDX.

Chris Biscardi: Yep.

Joel Hooks: And then reach router's what's actually driving Gatsby too? Is that correct?

Chris Biscardi: Yeah. Yeah. So, reach router-

Joel Hooks: That's Ryan Florence's project.

Chris Biscardi: ...replaced. Yes. Ryan Florence's project, X maintainer of react router, sort of an accessible next generation approach to routing from somebody who has built a lot of routing over the past few years for the react ecosystem.

Joel Hooks: Yeah.

Chris Biscardi: And it's really nice. It's really nice to see accessibility baked in like that.

Joel Hooks: I love what he's doing in general because that's his mission, is to build components and a router and push accessibility as a first concern. And I think that's an amazing banner to be waving that everybody needs to pay attention to.

Chris Biscardi: Yeah. It's pretty important. And I like the work that he's doing over there. For sure.

Joel Hooks: Yeah. It's good stuff. So, what else are you looking forward to this coming year? What are you gonna learn and focus on, or are you just gonna stick to what you started?

Chris Biscardi: So, I'm definitely gonna stick to what I've started. Right now I think I'm at like 24, 25 blog posts in the last 23 or 24 days.

Joel Hooks: Yeah, you're on fire.

Chris Biscardi: So, we'll see how long that lasts. Gonna definitely try to get to a month. And if I go beyond that, then, then, yeah, call that a success. There's a product that I'm building called Maintainer Systems that is basically tooling and analytics for open source maintainers. So some of these projects like Gatsby have, need to find out things like are the people at my company merging BRs in two days and everybody else merging PRs in 14 days? Which I'm definitely not saying Gatsby is-

Joel Hooks: Yeah.

Chris Biscardi: ... but you sort of need to know those things if you're gonna build a company on open source software. Right?

Joel Hooks: So, is that a maintainer systems and for open source companies like Gatsby or-

Chris Biscardi: Yeah.

Joel Hooks: ... who else would be a good example of that?

Chris Biscardi: Yeah, so like Doccer, for example.

Joel Hooks: Right.

Chris Biscardi: Worked there for a couple of years and saw the same problems. Things like Kubernetes it would be good for, etc.

Joel Hooks: Yeah, that's pretty cool. I think there's a big need for that kind of thing. And like the cross between, you know, commercial, like we need to make money and I think open source as a business is strong and something that should be encouraged. But then, at the same time, there's, you know, people are, then get used to free. So how do you-

Chris Biscardi: Yeah.

Joel Hooks: ... like cross that divide and what does open source even mean in terms of business and livelihoods and that sort of thing.

Chris Biscardi: Yeah. And if you look at the things that people are building already today and, sort of, examples for like the Rust community, right?

Joel Hooks: Mm-hmm (affirmative)

Chris Biscardi: And their bots and things like that. They apply to all levels of open source maintainership, whether you're just starting a project, you have some success, or you have major success like some of these companies have.

Joel Hooks: Yeah.

Chris Biscardi: So I'm hoping to build tools that work for the larger groups of people and also be individual maintainers in small groups and sort of give them a bit more leverage.

Joel Hooks: Yeah. And that's good too, because like that to me would be something that would grow with people as well-

Chris Biscardi: Yeah.

Joel Hooks: ... right? 'Cause you never like, I don't know that you ever start an open source project and think, "Yeah, this is it. This is gonna be the big thing." It was like you said, you know, we're all just kind of making it up as we go along and then all of a sudden you hit a good idea and other people are like, "Wow, that's really good idea." And they start joining in and-

Chris Biscardi: Yep.

Joel Hooks: ... then all of a sudden you are a maintainer.

Chris Biscardi: Yeah. Right? You are a maintainer today. Congratulations.

Joel Hooks: You know, and the email.

Chris Biscardi: [crosstalk 00:21:43] notifications hit 300.

Joel Hooks: Yeah. The emails never cease-

Chris Biscardi: Yeah.

Joel Hooks: ... for the expectations for the maintainer.

Chris Biscardi: Yeah, yeah, yeah. For sure.

Joel Hooks: Which could be a tough position for anybody. So like more resources that I think we have to support those folks that are there doing this good work, the better. 'Cause, you know, it's like, that's actually, you know, like one of the core tenants of Egghead. And one of the things I love is that somebody that's building open source can like make content and make money from the content that they produced and augment-

Chris Biscardi: Yeah. For sure.

Joel Hooks: ... the documentations with videos. And, 'cause it's hard, right? Like a lot of times, the folks that are making open source software and maintaining it don't really want to do like content marketing and sales and all that kind of stuff. So, there's a weird, you know, like there's a weird gray zone and how do you achieve that?

Chris Biscardi: Yeah, for sure. And that's one of the reasons I'm really comfortable sort of repping Gatsby. They're very aware of like the mental health issues that come with being an open source maintainer, where you're, sort of, if you have a very, very successful project, you do get those people who come in and are just yelling at you. Right? For whatever reason.

Joel Hooks: Yeah. Oh, yeah.

Chris Biscardi: And, yeah, they're very aware of that. And I'm pretty happy with the way that they're approaching sort of supporting the people that are involved in that.

Joel Hooks: Yeah, I won't shut up about Gatsby. Like I keep going on, like I sent emails to our list and I like to talk about it on the podcast and like, I really truly like appreciate what they're doing from top to bottom, not only like in the product that they're making, which is wonderful and I love, but then like the general attitude and their approach to community and development and the team that they're building and everything. They really just hit a lot of notes for me. So like, that's, you know?

Chris Biscardi: Yeah. One of the things that I really like is that they pay sort of the people who write documentation and things like that on the same scale as engineers.

Joel Hooks: Yeah.

Chris Biscardi: Which I believe Egghead does too, right?

Joel Hooks: Yeah. Yeah. It's pretty even keel across the board. Like we're all just building software, so.

Chris Biscardi: Yeah. So, I mean, that's amazing. Right? Documentation is, you don't have a product [inaudible 00:23:37].

Joel Hooks: Yeah.

Chris Biscardi: So it's really nice to see those people sort of get what they're due. Right?

Joel Hooks: Yeah. For sure. Alright, so where are you writing all these blog posts anyway?

Chris Biscardi: Christopherbiscardi.com
I usually Tweet them out as well, if you want to follow me at ChrisBiscardi.

Joel Hooks: Cool. Well, thanks for chatting with me today, Chris.

Chris Biscardi: Yeah, thanks for having me. It's fun.

Joel Hooks: Cheers.

Chris Biscardi: Cheers.