Content Warning: adult language
Chris Biscardi: [0:00] going to the stream and not just me because otherwise, I'll be talking to myself. Cool. We're going to talk about some stuff today like sector, MDX, digital gardens kind of stuff. I'm Chris Biscardi and I do a bunch of stuff relating to that kind of thing.
[0:22] Kurt, why don't you introduce yourself.
Kurt Kemple: [0:24] Yeah, I'm Kurt Kempel. Dev advocate at Apollo currently, and I'm just very much into this idea of digital gardens and pushing things out really and doing things in public, in MDX in general. I can't wait to talk about this stuff.
Chris: [0:42] John.
John Otander: [0:42] Yeah, my name is John Otander. I work at Gatsby. I'm working on stuff like Gatsby themes, MDX, walks, the UI, and fun open source projects.
Chris: [0:53] Cool. Joel.
Joel Hooks: [0:55] I'm Joel Hooks. I collaborate on egghead.io. I'm the head virtual assistant of egghead. I started it with John Linguists and continue to run that with a group of awesome people.
Chris: [1:08] I just link the JS in the chat that has a bunch of links to Twitter accounts and things like that, and stuff we're going to talk about.
Kurt: [1:17] Cool.
Chris: [1:19] Joel, apparently, you're a little low on volume.
Joel: [1:24] Yeah, I can do that. Is this better?
[1:26] [crosstalk]
Chris: [1:26] That sounds good. Yeah, sounds better to me.
[1:31] Kurt, do you want to get us in? Get us rolling with the Twitter conversation to start this whole thing?
Kurt: [1:38] Yeah. I don't have the link to the tweet up. I imagined that was probably in the guest's. I essentially tweeted out that...
[1:45] [crosstalk]
Kurt: [1:47] There we go. Yeah, I tweeted out that I had an idea where I wanted an experience for creating content that was similar to bear or USCs in the fact that it was marked-down base app but with first class support for MDX.
[2:02] I thought that when you combine those two and we start to look at things like blocks UI and what's possible with MDX, and some stuff that I was experimenting with AWS where you can authorize into static apps and interact and create things dynamically.
[2:18] I see this huge, I guess, area of possibilities where we can create these documents that are living yet still static to a sense that can be shareable. Then we can with MDX embed literally anything that we want into them. I've been using Zapier for quite a while now and really getting into it.
[2:42] One of the things that I love about it is the experience of being able to authenticate into different services. Then use those services throughout Zaps, which is like workflows. You're essentially automating processes.
[2:56] I experimented with authing into services inside of MDX and static sites when I was creating a amplify playground at AWS. You can off in and then the documentation would at that point become living. You could spin up services, delete services, and do all this from a static site.
[3:15] It was extremely interesting to me and I saw a lot of potential to it, but I just didn't have really the bandwidth recently to take the idea further. I just put it out there on the Twitter, "Hey, this is an idea." It just sparked off this conversation and started getting in more in-depth about MDX.
[3:34] What does it look like now if the things that are possible especially with sector tools and the stuff you're doing with toast? It just digital gardens. It's all this stuff interconnects and weaves together. That's essentially how we ended up here. I can't wait to talk more about this.
Chris: [3:51] Cool, yeah. I think that we've got, actually, a group of people who all are into the digital garden MDX, etc., phase. We can talk about a bunch of stuff that you mentioned. I'm interested in hearing some of these crazy ideas that you were alluding to.
Kurt: [4:09] Yeah, some of the things that I was thinking about...Sorry, I'm pulling this up. I thought I wrote this down. Here we go.
Chris: [4:25] I thought I wrote it down in the thing that I'm talking about to build to write it down.
Kurt: [4:28] Yeah. Here's the thing. I'm actually trying to explore right now going through notes. I actually just realized that I was actually writing it in Gatsby. I was trying to go through my notes app on the desktop, but no, I was actually writing it in Gatsby. That's why I couldn't find it.
[4:42] Essentially, people have been starting to share a lot of snippets and code. I feel this is the step one and the potential. When you look at something like Jupyter Notebooks, which are like this already.
[5:01] They're these interactive shareable based on open source structure, well, notebooks for lack of a better term, but the cool thing about them is that they have Runnable code inside of them, and it's starting to support more and more things.
[5:16] I'm thinking about, what does it look like to have docs or writing experience for building your content, where you're writing in markdown but you want to use something like, I don't know, embed videos, or do something like that?
[5:31] You get the drag-and-drop experience of GitHub, of what it's like to add an image. Instead, it could be anything like URLs to different tools or services. Or maybe it's higher level, if you don't want to be that low level, if you don't want to have to write the stuff out yourself.
[5:47] That's where something like Blocks UI comes in. What if Blocks existed for all of these different services and applications that exist? You look at something like Zapier and they've been able to create integrations for literally over 1,000 different platforms.
[6:04] As long as can OAuth into them you'd be able to do whatever. This means if people had the same permissions under OAuth to work on Google Docs. You can literally embed Google Docs and work from a Google Doc within another document.
[6:17] I'm not saying 100 percent that you would, but it does open up the door of shared embedded spreadsheets, and being able to do that. Having these public digital spaces where as long as you meet the authorization requirements, it's basically public and open for you to edit. Almost like a Wiki at that point, in the sense.
[6:35] To me, that's where the digital garden starts to come in, where it's like a community garden. Instead of tending it by yourself, it's a group of people who are tending this. Yeah.
John: [6:48] This is interesting to me, because egghead as a business, and what it is to me and the way we approach it fundamentally is as a community garden. We've got into this point over the last nine months where we have these learner advocates, which are people that we are bringing in.
[7:06] We're asking them to watch videos, attend workshops and take notes. Right now, we're using a GitHub repository. Frankly, it sucks, right? What we would like is something where we could bring like, "How do we all do this together? How do we increase our shared cognitive understanding of these complex topics?" in a multiplayer environment with Presence, and all that kind of stuff.
[7:28] It's really exiting. Paper, Notion and these other products have been doing it in Google Docs. Actually, it does Presence really well. It's all there, but it's not it. It's not rich. It's not the promise of interactive PDFs, which I'm glad we're not solving that problem.
[7:48] How we get rich documents that we can interact with and really enhance our general understanding is super exciting.
Chris: [7:57] We have a question about what is Blocks UI? That explanation that both of you just went on extremely encapsulates the last two years of my life, of MDX and digital gardens, writing, authoring and things like that. John, do you want to answer what is digital garden...Or what is Blocks, sorry. I'm getting my words mixed up.
John: [8:21] Blocks is exploration in what coding can actually become in a low code-type environment. The idea is that JSX itself becomes the design tool representation. You can sit there and drag code on, remove code and manipulate your code without having to actually touch it.
[8:43] At the same time, you can unpack that code or open up a different frame and edit that same thing that you drag and drop in. That opens up doors to where you can create templates and pages to create a publishing workflow for your digital garden.
[9:01] You can change your header and actually manipulate that code without having to write JSX and learn how to do that. At the same time, it allows for maybe folks that are just getting into programming to be able to be productive right off the bat, and actually write React code without having to learn everything all at once.
[9:24] It's this next step of abstraction that allows folks to contribute to the same coding environment but without having to necessarily know how to use React hooks right off the bat because that's a learning hurdle, and that type of stuff. Yes, that's how I would describe it.
Chris: [9:47] I think that we are at a point right now, right before this all takes off, where some subset of people have realized what MDX is. It's been really well described in this stream today.
[10:05] Whereas it can be anything from your writing raw marked down by yourself all the way through to a notion like editor that is collaborative with presence and etc. I think that having an open specs maybe language agnostic format for that is an incredibly enticing proposition.
[10:28] Because it means that we can build a lot of different pools on top of it. That since, Kurt, you asked me about sector or we were talking about sector in Twitter, that is what sector is. I was writing a ton of blog post last year, wrote over a hundred over the course of a year.
[10:47] Got introduced to the concept of digital gardens probably through Joel. Don't remember where I first heard about them but that's likely story, right?
Kurt: [10:58] Yup.
Chris: [11:00] Yeah, sector originally was just...I'd been doing a lot of content, a lot of writing, a lot of blogging, a lot of publishing. Sector was the first step towards taking the years' worth of small little pains that I was taking away from my workflow every single time and building it into a product.
[11:20] Then once I started that, I started down the way of building a notion-y type editor that serve like closer to IA writer but still much more, like you wouldn't have to write tables manually. You would just insert a table and you would get a table, and not a bunch of lines. Like, "Oh, I don't know if I wrote it correctly." There's quality of life stuff there.
[11:46] It to grew into a couple of different things, and I have a couple of different prototypes. John was using one of the early ones that's still in production. That led to toast. That led to toast because there are a number of places that have create MDX support today.
[12:06] They all have certain drawbacks. A lot of them have drawbacks especially for content creation where if you want to render say like an MDX file on a particular page and you're bundling all of your application, you have to throw all of the import through webpack so that they're included in the bundle.
[12:25] If you're writing this big interactive deep blog post where you're writing custom components, that doesn't really work because the more your write, the more you're punished for having deep interactive content, because they're included on every page.
[12:41] That's where toast started from. Sector is like the CMS for MDX if you would think of it that way. Then toast is the other end of it. How do we render a site that is like MDX forward or MDX first in a way that is scalable?
[13:02] Can you have a couple of hundred post on your site and maybe one of the ones I want to write is an introduction into color theory on the Web. I want to have color pictures all over the page and things like that and custom components, third-party dependencies.
[13:15] I've been talking about this on Twitter for a while and stuff like that. I think we're all on the same page here, for sure.
John: [13:23] I have a question. When you say that in one of things. I've seen in a lot of performance stuff you've been talking about, toast and how it had to reduced overall performance and build times, and a lot of those static site issues.
[13:35] Are you saying when I deploy my static site and I have all that interactivity in a single post, I'm probably spreading that across the entire site? The entire site is punished because of that one post and then multiply that by every post where I want to be customer bespoke with how I presents or like the miniature applications that MDX allows me to insert in my writing. Is that a way to explain that?
Chris: [14:03] Yeah, that's very, very close to what I was saying. Basically, the way that sites are generated today, is that everything gets thrown through webpack at some point. There are ways around this. You can include raw script tags on every page for every blog post. Then you have to guarantee that, that third party server is never going to go away.
[14:26] If I use unpackaged, unpackaged looks very stable right now. I want to include whatever on the page, and I do it, and then unpackaged goes away in the future, all my blog posts break. There's something...
John: [14:39] You can't pay unpackaged. You can't pay Michael to use unpackaged. Its future is, even that it's unknown, but it's even more unknown.
Chris: [14:46] Yeah. It looks stable, it might not be given what I know about business. I'm positive.
John: [14:56] I'm pessimistic too. You could monetize it, but he has other things he's working on. It's a, "I wouldn't be able to build a business on either, just in the same way I wouldn't build a business on Twitter, who I also can't pay."
Chris: [15:11] Toast by default doesn't include the client side router and things like that. When you're rendering a page, you're rendering the MDX file and the imports. Then it's just that page in the imports. That unbundling ideas, where a lot of the performance, improvements came from.
[15:27] It's not necessarily a lot of performance work that I've put into it. I'm just not using webpack. I'm not shipping a runtime. I'm not shipping a bunch of extra stuff. I'm not shipping preloading. I'm not shipping a bunch of...
John: [15:40] Did you say you're not using webpack.
Chris: [15:41] I'm not using webpack.
John: [15:42] Is that even possible in the modern web development. I know it is. It's amazing, actually. I don't even think people think of it as an alternative, but it is a true live fact that you don't have to use webpack.
Chris: [15:54] Yeah, for sure. I think that there are some nuances there. We think of webpack as a bundler, like parcel, and etc., and roll up a bundlers. There is something that I am using in toast, which is called snow pack.
[16:09] Really, I'm just using it, because all of these third party packages are written in CommonJS syntax and stuff like that as a bunch of different files. The performance characteristic of an unbundled application is such that the depth of the import tree is what matters.
[16:26] If I import a PageRenderer, and the PageRenderer imports something else. Something else, something else imports lodash. Lodash, as a package, imports a deep tree of dependencies, because a lot of the functions interdepend on common infrastructure.
[16:42] You end up loading 100 different piles if you don't pre-bundle lodash into a single EF module, or a tree shakable ES module, or something like that. That's where Snowpack comes in.
[16:53] It's basically, doing the work that I think will be done by package maintainers in the future at build time, but it's doing it like in your pre-installed paid. It's npm install preact or something. Preact works really well with ES modules. It gets shoved in as a single file, as opposed to the 10, 12, 15 files that is.
Joel: [17:17] Yeah, that's really interesting.
Chris: [17:26] I think we're all on the same page here with MDX. John, do you want to talk a little bit about like MDX 2. and the work that's going on around there?
John: [17:37] Yes.
Kurt: [17:38] [inaudible] great.
John: [17:41] Actually, the MDX v2 itself goes back to what we're talking about before about becoming this language-agnostic format. Shout out to Titus Wormer. He is the creator of Unified. He started working on a, basically, completely revamped JSX parser for MDX.
[18:00] Those are essentially like two things. Firstly, it provides a reference implementation. If you know, I want to create MDX in Rust and use the JSX template and language or I want to use go or something like that.
[18:15] Additionally, it adds in the JSX representation to the AST as well. All the unified ecosystems like UNIST aware utilities and that type of stuff has suddenly start to work. You can visit all of my YouTube components and maybe I want to modify them or change their props or something like that.
[18:37] Those suddenly become possible. In addition to that, we also now have the ability to officially support View, support React, and a bunch of these other things. It becomes this thing where MDX itself is not just a React format. It's a greater ecosystem format. It's a Web format for interactive and immersive documentation.
Chris: [19:03] If your tool has JSX support then it's potentially...You're able to use that in the MDX ecosystem. Is that fair?
John: [19:13] Yeah. Part of what you can do now is a lot of the different static site builders, they all have their own template and language in one way or another. This will allow other tools rather than have the bespoke template and language.
[19:29] You can just use JSX and then you determine how you decide to render it. That can potentially even be Web components under the hood if you wanted. Depending on what render target you're looking for, on this website, I'm using this content where I render a YouTube embed that's based off the Web component spec.
[19:50] This other website uses that same MDX document but maybe it targets React Native or something like that. It allows you to essentially dictate your own rendering based off what you're attempting to hit as you render it.
Joel: [20:08] It takes the spirit of portability. To me, it's huge with marked down. For years, I've been marked down only for everything. One of the concerns with MDX is now I'm fighting against that portability.
[20:21] The future of MDX is coming back and embracing that same portability and allow us to carry those forward with less concern. I think it still ends up there on a little friction. It's potentially possible which is a really excellent thing I would say.
John: [20:38] Yeah, there's definitely...There's always friction because as you create these more interactive documents and you have button clickers and you're using React hooks like in your MDX file and of course, you sort of "I will only work in the React ecosystem."
[20:54] It starts to open up those doors where it's like these things can become portable particularly too like since it's become more hackable. You can, "Oh yeah, I have these three rendered targets I hit and I've created..."
[21:08] My favorite example is tomato box which is the best component. You can have those implemented in three different ways. Ready to roll.
Chris: [21:18] Why don't you have a tomato box on your wall?
John: [21:21] I need that. I need tomato lights shinning behind me because I look so lame.
Joel: [21:29] Full tomato.
John: [21:32] Cool LED thing.
Chris: [21:34] We have a question in chat from Jason Leinsdorf who's asking what's the actual implementation story for this. One of the things that makes MDX wonderful is that it just works PM versus formats like portable text that are arguably more flexible but that require so much setup to make them work.
[21:54] I can take this one because I've been doing a little bit of the viewing, create elements stuff over the last year. Basically, what you need for MDX to support some new framework currently or in 2. world is that you need a create element call which most modern frameworks have these days.
[22:14] Vue has one. React has one, etc. It's what JSX compiles to. Because MDX targets JSX, all you need is that create element call. As long as you're not importing React and trying to render it in Vue which I mean would technically still work but...
[22:35] [crosstalk]
Chris: [22:35] yay.
[22:38] All you need is the create element call to be defined and then to be used in the MDX file when it compiles. JSX compiles to a create element call and also a fragment call but the fragment call is something that is neither here nor there.
[22:54] The create element calls the one that is important, and then there's a little bit of context that is really useful to have but not necessarily critical for basic features.
[23:09] Then there's the thing that I am super interested in is after we isolate the subset of JavaScript in JSX that MDX officially specs and supports, something that I think John mentioned earlier is like a Rust implementation where you could write MDX and have it compiled to Rust.
Joel: [23:36] I don't understand that but it sounds cool. I'm like, "Are we going to talk about Wissam soon?" Is this a Web assembly at the end of the day?
Chris: [23:46] This is not a Wissam thing. This is just like you could target Rust as a language thing by writing MDX.
Joel: [23:56] The potential targets for compilation end up being LLVM style where you can spread it across whatever you want to spend the time and effort. That time and effort over the course of development of MDX and data rating is going to become less and less.
[24:13] Right now, it will probably take a lot of effort. A year from now, it's going to take less and it's going to take less and less effort until at the end of the day, you have a pretty horrible format with a lot of comparable targets because people have already done the work.
Chris: [24:25] Yeah, and that's the benefit of MDX as a public open source back as opposed to being the implementation details of JavaScript.
[24:32] [crosstalk]
Joel: [24:32] Is there a spec online?
Chris: [24:37] Yeah.
Joel: [24:37] I read unified and stuff. I've never seen the actual MDX spectrum.
John: [24:41] Yeah, me too. I actually come with a more involved spec where there'll be a split into two pieces. Right now, the existing spec is unified specific but we will be re-working that to make it like...This is the format. This is how you parsed it and here's a reference implementation using unified.
[24:58] It will then be split into two pieces too. One is if you're using JavaScript or your using imports and this more powerful features. This is how you implement those.
[25:10] Maybe you're using some type of go static site generator where you have a subset of MDX you wants like port particular JSX elements and that type of stuff. That will also be specified and a language agnostic subset.
[25:25] You'll have these two pieces written, choose which one you want to go with, where. For the most part, if you are looking to compile things that are purely truly static, you might want that sort of subset-based implementation.
Chris: [25:39] Yeah. That's probably lead to something that I'll mention for sector since we're talking about serve like specs and API format and stuff, is that you can define a subset of components that can be used in your MDX docs that don't need to be implemented until run time.
[25:59] Sector can define things like tags, etc., or YouTube embed or whatever. Sector inherently supports all of these different frameworks because it's targeting MDX and at run time whenever you build MDX in the view or React or whatever, all you need to do is have an implementation in that framework for whatever component it is.
[26:22] Literally, the component you write is the API for that. You've got this thing where if you want to put it in the work on the backend, you can render it wherever you want.
John: [26:36] For more than a gala to it, it works similarly just like how other template languages and stuff like work whether it's liquid or what have you but it's something that you can drive that, like how I wrote you might like because you'll receive it.
[26:51] In the backend, there's YouTube with ID and the style tag then you can be like, "Actually, I'm just going to be make this an i-frame," or "I'm going to make this an optimized thing that feeds in those other cool stuff that..."
Joel: [27:05] You layered design systems on top of it. At the end of A2. All that stuff falls on top of it but isn't really a concern. We just have a nice portable format that we can deal with and apply those. Like the implementation details fade away and gives you a lot of flexibility to determine the final presentation and platform and all that fun stuff.
Chris: [27:24] Yeah, which is basically calling them higher level block. Which brings us back into blocks.
[27:30] [crosstalk]
Joel: [27:30] I don't know if everybody even knows this. I assume the people that we're chatting with know it. Notion is a block editor. Like fundamental and [inaudible] and then ROM is a block editor. That's like these tools that are all hot and everybody's loving it right now for note-taking, collaboration, multi-player, and all that fun stuff are effectively block editors, right?
Chris: [27:58] Yup. Basically, when we talk about what kind of editors can you build for MDX, we've got things all the way on the left which is you can write raw MDX. You can write a string.
[28:09] Somewhere in the middle, there's an IA writer thing where it's like a really nicely presented string of MDX. Maybe some link highlighting and stuff like that. Then all the way over here, there's the notions of the world and whatnot where you have full-on tables and when you use a component, you get everything in it, etc.
[28:31] Which are really interesting in terms of spectrum and block sits somewhere along that spectrum as well as the sector editor and whatnot. There's multiple MDX editor efforts happening at the same time that will allow you to do slightly different things but also will be interoperable.
[28:56] We do have a question. What is a digital garden? I think that maybe Joel might be the best person to answer that.
Joel: [29:05] Maggie Appleton and I were talking about this beforehand because she gave this wonderful presentation last week about React but it was really about metaphors like cognitive metaphors and how we think about things.
[29:18] For me, for the longest time, I didn't blog at all. I build egghead as a business and which would have...Now, I'm like, "Ah," because I've lost all this context that I could have been writing and sharing. I had in my head this idea that I had to write blog post and to me, a blog post was something that took our weekend.
[29:41] It was a fully flushed out tutorial and I had to polished it and get it to where I was proud of it and could feel people wouldn't laugh at me when I publish it.
[29:53] Now, frankly, pardon my French, when I say "Fuck it, I'm going to publish whatever I want and I'm going to publish partially finished notes, and I'm going to write my thoughts down. I'm going to put it out there."
[30:03] I'm not even pushing publish. I'm just pushing it at the GitHub and it happens to be published. I don't want to publish and I know Chris feels strongly about this.
Chris: [30:09] I do.
Joel: [30:10] What I want to do is plant seeds. I want to go along and I want to plant little seeds. I plant these seeds across a lot of different...I use way too many services and I don't necessarily recommend that but I plant my seeds wherever I want.
[30:23] I had different gardens that I tend. I travel around and I water those seeds. I pull weeds. I organize them. I make nice little flower beds for people to look at. I have a rose garden that you can walk through and smell my hybrids.
[30:37] There's vegetable gardens over there. That metaphor to me, you can expand it out and when I wake up, I want to tend my garden. I want to go out. That's the work that I love to do. In my heart of hearts, if all jobs paid the same, I'd be a research librarian. That's what I am and I feel that.
[30:56] This approach and this mindset, more than anything, has allowed me to address and really...Last year, I came in to this idea and I started exploring this amazing...I have a Twitter list that you can follow of weird content thinkers. Are we all on it?
Chris: [31:18] You could link that.
Joel: [31:21] The weird content thinkers and people thinking about this in different ways, and not as a performance aspect. I'm not out here. I'm not writing to be your clown. I'm writing because I want to think about things and I love to think and share and work with people.
[31:39] Lately, I've been having the feeling of...to extend the metaphor, and it really fits beautifully. If you've ever seen a thriving community garden where people come together. They weed and they harvest, and they work together to nourish each other and come together with a form of community, togetherness, and sense of purpose, and a true community of practice.
[32:04] You could really get that in this work. We're developers. That's a rich knowledge base. There's so much to share. So many ideas. It's a brand new field for all intents and purposes.
[32:15] We're all thinking. We're all creating in this ability to come together and garden together and do these things. The tools have been shitty for years and they're just starting to get good. People like Chris and John and Kurt are thinking outside of the box. These weird content thinkers.
[32:32] They're making this possible. It's really exciting for me. I'm kind of pedestrian. I'm not writing any sort of specs for a new cool format. Folks that do do that, thank you very much, John, for the works that you've put in like laying the foundation that we can all...
[32:50] This is the fertile soil to which we could get to till. I appreciate it very much. I love the monologue. Thank you for giving me the opportunity, Chris.
Chris: [33:03] I needed some time to type so I'm glad that you just took that and run with it.
[33:11] Like you said, I feel very strongly about a publish button. You don't need a publish button. Fundamentally, you just don't especially if you're doing this digital garden or taking this digital garden base approach where everything that you write is either in some stage of being new or meddling or mature or whatever.
[33:34] Things combine each other things, etc. I was having a conversation with somebody recently. They were basically like...I think it was you in Twitter, Kurt. Josh used that at something to their site where they created a new content type and put it at a sub-URL, and then have the new content type over there.
[34:04] I've done this on my own site before I used to have Dev Tips. The Dev Tips will get automatically tweeted out with nice code images and things like that, which is another thing by the way. The things that you're gardening have multiple uses that are not just being published to your website.
[34:22] All of that was written in MDX as well. MDX is very powerful programmable, multi-platform, distributable piece of content. My opinion on this is everything should be flat in your digital garden. No organization by default.
[34:45] Then the layers on top of that are curation layers. You're not separating things into new content type. Although that is a nice thing for people who are new to digital gardens and mentally wrap their head around what it's supposed to be. Just split it up into here are my notes and here are my blog post.
[35:02] Once you get past that and past the mental barrier, all you're doing is creating a bunch of content. If you want to render it differently, you can throw a tag in a front matter or a tag in an MDX exporter, whatever.
[35:16] You get a different layout when it goes to publish. The things that are very valuable are the path from feed to plant to flowering. Then cycling back through that to the next bloom. What is the next bloom on top of the stuff that you've already built?
[35:38] I think that works best as a layer of soil and fertile ground which is this flat directory of content. Then curation layers on amalgamation layers on top of that.
Kurt: [35:53] I really like that analogy. After we talk about that, I started thinking about that as well because it's not technically separate content. You don't have separate gardens for tomatoes, peppers, and different things.
[36:06] They all live in the same place. It's just what you do with them once they bloom and they're ready to be plucked. It's then we can do different things. We might even have fruits and vegetables in there.
[36:17] Something else I wanted to note about the idea of digital gardens and why it's so appealing to me is that a couple of months ago, I had three blog posts on my blog. They didn't like the same three blog posts for, I don't know, like a year about.
[36:32] Because when it comes to having the time to sit down and complete something from start to finish, it's very hard for me and then often I end up getting overwhelmed by it and giving up. I never see it through. By having the idea, releasing my mind and saying, "Oh, I'm just going to just publish whatever the idea is."
[36:51] I now have over a dozen probably. Most of them are pretty fully bloom. I've come back and made updates up to them because as soon as it's public and it's out there and I start talking about these ideas with people then I have a little bit of information and I just jot it down and save and push to GitHub.
[37:10] It's like you said, there's no publish button. I push to GitHub and then it goes out to the world. That, in turn, the next time it got shared or talk about, something new is realized. To me, that's the living part. That's the community part, that's the sharing part.
[37:24] The blog post probably ends up being much different than what it would have been if I had try to do a polished piece and released it because now, I've gotten feedback all along the way from an entire community.
[37:38] To me, that's the part that's the most valuable and helps push me to continue to produce content. I'm a little bit out of time.
Joel: [37:50] Metaphors aside, I love a good metaphor. I love beating it to death for a long, long time. I'll continue to do so like digital garden. You are going to hear about that from me for years.
[38:03] If you want a real concrete to where you start thinking about digital garden, to me, Tiago Forte's "Progressive Summarization," ideals where you take something that's raw, that's text. Take the transcript from this conversation.
[38:22] You take that and the next level of that is you take that transcript, and you go through in bold stuff that you thought was cool. You take that to a next step and you highlight that and then you separate them out and write a tiny summary of your feelings of that context all the way up to...
[38:36] You make a mural that represents the full scope of the digital garden metaphor in your town square that everybody can...That's a level 5 or that's a level 12. You know what I'm saying? You progressively summarizing. You build these things in.
[38:53] In a lot of way, like what I want out of a digital garden. I talked to Chris and John about this a lot. We have a little Twitter DM thread that's been going through probably a year now where I'll drop in a weird idea ever now and then.
[39:05] I want to connect all these things. I want to progressively summarize over a long period of time and have that all connected and the context saved because the context is so interesting to me.
[39:17] You can read my summary but then being able to trace that thread back to the original idea that was sparked in this conversation. I can think of sentences that mentors have told me over the years that I've worked for years to unpack and if you have notes, you can connect back to each other like that.
[39:35] That understanding is shareable, for one, and really delightful once you start to experience it and practice.
Chris: [39:43] We got a really interesting comment from Laurie here. It says, "I feel like digital gardens come with an assumption that people won't skewer your in-progress stuff." It's up to the number of disingenuous engagements that you get. Do you have something to say about that?
Joel: [40:01] I enjoy a lot of privilege in that people can skewer my stuff and I don't give a shit. I'll block them and I'll move on with my life.
[40:06] If it doesn't make me feel sad, that's not true for everybody. I don't like that and I don't have a good solution for it. It's a true fact. I can literally put out whatever I want. It's not going to harm my career. I don't have to worry about anybody's repercussions.
[40:19] It's not going to affect me anymore negative out of "Yeah, well, up yours." That's my response. I don't think that's true for everybody. I don't have a lot of perspective in that regard.
[40:31] It is a fact. People are out there. Turn off comments and use the black button is my best advice but there's an asterisk for that as well.
Kurt: [40:43] I strongly agree. It's definitely coming from a place of privilege and finally getting over the worry of caring what people think and try to mitigate it as much as possible.
[40:54] Like Joel said, I don't have comments on my blog and I turn off comments on YouTube videos. You can thumbs down it if you really want to. You have to seek me out to tell me that my content sucks.
[41:09] At that point, yeah, there's a block button and not everyone's going to like it. Some people are jerks and this is definitely going to affect other people way more than me. Yeah, I think it's something that I hope becomes the norm and as it normalizes and people understand that this is supposed to be a living and growing...
[41:32] The more we get away from the mindset of something has to be a beautiful, complete, polished gem, the less there is to say about it. If it's a living, breathing thing, it doesn't leave opportunity for it to suck because it's a growing idea. That's my two cents on that.
Joel: [41:49] John, you had a good point in the chat and that as a community, as a community garden, we need to be using our shared collective and individual privilege to protect the other members of our community. I think that's really important and probably...
[42:04] It's not just about me. I need to use that influence that I have to help other people and to the extent that I'm able.
Chris: [42:13] Yeah, I totally agree with that. One philosophical approach to shipping stuff that is not quite done comes from my art background. I was an art major. I did art for a very long time. I did graffiti when I was younger.
[42:30] I think that my younger self graffiti's experience gave me a really interesting perspective on nothing I do is ever done. I just stopped working on it.
[42:48] We have a question here. That is, any actionable steps to setting up your own digital garden?
Joel: [42:57] Yes.
Chris: [43:04] I think that that's perhaps a very, very, very wide question. You can do it however you want. The best way to do it is however you get started the fastest. The thing that matters is that you're publishing.
Joel: [43:16] To me and it depends on how technical you are. The reason it's a yes is because there's so many layers to it. To me, tools like Notion, actually if you're not able to implement your own blog using Gatsby, which is my go-to right now personally, I have been recommending a lot.
[43:37] Just do it in Notion. Write a notion, it's pretty shareable. It's all right. You can export as mark down. It wouldn't be my forever suggestion but it's a good enough for now suggestion for me in a lot of ways.
[43:50] Frankly, you can WordPress.com or whatever other options that are typical. It's more of like mindset over the technical implementation at the end of the day.
[44:02] Progressive Summarization in Tiago Forte's building a second frame both give you practical hands-on tips on collecting the end story and putting the knowledge together for yourself in context which is really fundamentally maybe one of the hardest parts of it for me anyway.
Kurt: [44:24] Yeah, I'd say for me, one of the things is create the least amount of friction between you putting something down and it getting published. That's a good place to start. No matter what that format is, Dev 2, they even have a whole comments Q&A section that's meant to be notes.
[44:42] There's no reason it can't live there. It's about finding the avenue of something that you think you can stick with where you can get something published. Where you don't physically have to press a button or do something.
[44:53] Once it's down it's out and that's really essentially the goal.
Joel: [44:58] Dev.2 is actually I would say a community garden and a very friendly and inclusive place where there's moderation stuff and people's BS is not tolerated at all and probably a good place to put your thoughts down in a positive and supportive form, for sure.
Chris: [45:18] Yeah, like I said, the most important thing here is that you're publishing at all. If your question is, how do I get started? Choose the path of least resistance. Go to WordPress.com, go to dev.2, go to wherever.
[45:31] When you start caring about it later, bring your stuff on your own site, get your own domain. Set up your own site. That doesn't need to be your first step ever.
Joel: [45:43] Like I said, you can Johnny Appleseed all over the countryside at the end of the day.
Chris: [45:51] Actually that's a really good point because even if you're say on Twitter or some other social network or Dev 2 or whatever, even if you post the exact same thing five times, there will still be somebody that follows you that wants your content that does not see it.
Joel: [46:10] It's true. Today I posted a Twitter thread that was the same content as an email I sent to my newsletter. Those are the same content as a post I made on my blog. It's fine. Nobody cares, nobody seen it. It doesn't matter, I can put it anywhere I want, and try to worry less about that sort of thing too.
[46:27] Like, "Oh, somebody's probably already read this," or "Somebody's already seen my post somewhere." Guess what? Nobody's seen anything. It's fine.
Kurt: [46:36] Yeah, the Web is a huge place.
Chris: [46:39] There's a discussion in chat going on about publishing as a term and what it means. I'd like to think about it personally as the separation of the deployment of your code with the activation or release of your code.
[46:55] You've got code. You write it, you ship it. It's there. People may not be seeing it. You may not be marketing it. It may not be part of the launch yet. Then it's part of the launch later.
[47:06] Separation of the deployment and activation of your code from the marketing of that feature. That's the same with your content. You can push your content out there and the people who really care, the people that really want to be in your community will know and pay attention and see it.
[47:23] Then the ones that are in the wider community that you're trying to reach, you've reached with the marketing blast. You reach with tweeting about it whether sending emails, etc.
Kurt: [47:33] To be honest, most people are going to see anything you create until you market it anyway. I've been working on a blog post on Zapier for I don't know how long and it's been published for two months.
[47:44] I just got it to a place where it's like this is super interesting. I felt like it's pretty well-formed that I want to share it so, I shared it yesterday. They have zero page views before that.
[47:54] Like you said, unless someone is following super closely, they're not going to just stumble upon it. They have to be actively searching for your blog and at that point, they probably care about those thoughts if they're that deep into looking through your content.
Chris: [48:10] Do any of you have opinions on how to handle RSS feeds with the digital garden? Because I do. If you don't then I will talk.
Kurt: [48:18] I don't.
Joel: [48:20] I think I have an RSS feeds still. We use them heavily at egghead because it's our answer to when are you going to build a mobile app. We have robust RSS feeds. We don't need a mobile app and it's a true fact.
Chris: [48:35] True fact. My opinion on RSS feeds is that the people who read my blog through the RSS feeds are the people who interact with me the least out of all the people that read my content and my blog post and my writing, etc. I remove the RSS feed when I move from Gatsby to Toast, and I've gotten zero comments about it.
[49:03] Before I was putting a bunch of effort into making sure that my RSS feed was up to date and look great, and you can read everything in the RSS feed reader. Then I stopped and nobody cared or at least the people who cared didn't even care enough to tell me.
Joel: [49:17] RSS has been kind of killed by the powers that be in a lot of ways too because it has a lot of utility and there's good readers, and that's really gone away to a large extent.
[49:28] I'm honestly fed up with robots in general and RSS falls into that category for me. Automation and robots doing...I love it. I'm a nerd and I love it. There's a lot of tasks that I do that I still want to be mostly automated away for myself to make producing easier but, in terms of announcing, I want to actually control that message a little bit more.
[49:54] I want it to be more thoughtful and not just like, "Bleh, I made some stuff, there you go." That's important to me. I think that's in line with what you think about RSS.
Chris: [50:09] Yeah. In chat, somebody is commenting. "Didn't even notice Chris' RSS feed was broken in my radar until now." That's somebody I know sees my stuff all the time because I post it and they comment on and stuff.
Kurt: [50:23] I don't even know if I have RSS feed. If I do, it's because I used the Gatsby starter and it was already in there.
Joel: [50:32] Good one.
Chris: [50:35] Maybe to close this out, we can talk a little bit about [inaudible] have been, what you all think about stuff like Web dimensions and stuff like that in the context of digital gardens in community digital gardens.
Joel: [50:48] What's the micro thing where you could micro-tagging or what was it where you could...
Chris: [50:52] performance?
Joel: [50:53] Yeah. Does that still exist? I was like that.
Chris: [50:56] RTFA and stuff like that?
Joel: [51:00] Conceptionally, not that I don't know I've ever even...Just the way that sort of thing was around and existed. I don't know if that's even relevant because it didn't blow up or take off.
Chris: [51:12] I can't think of anything that is not a search engine that would look at that stuff and know what it is and use it. I guess if you're not using Open Graph tags then the RTFA formats and stuff like that might be useful. If it's not RDFa microformats.io, FoxScans it. FoxScans, Open Graph are tags and everything else to do.
[51:37] There's a couple of different microformats, as it were. I don't think that any of them really ever took off in any meaningful way. If you're using like semantic.html, I think you're covered for all of the use cases that people would actually in the real world care about today.
Joel: [51:58] That makes sense.
Chris: [51:59] I will say Webmentions are cool. I don't know that they're critical. I don't know that they're super useful. I have a little bit of an opinion on the IndieWeb. I don't know overarching movement and that they don't focus enough on the user experience. Things like webmentions, etc., don't get as much play as they could.
[52:26] They don't get on as many sites as they could, because it's not super easy to use them, it's not easy to integrate them with other things. You have to go to three different services, and you don't know who runs them, and they're not reputable, etc.
[52:38] I want to be able to pay somebody to have webmentions, and that service exists for a while, and there's nobody to pay.
Joel: [52:47] I think, it's like webrings which you can't use that terminology to actually make a webring, because it's trademarks, but I like that idea. Is it related to webmentions? I've never really looked into it. I was looking at the page just now.
[53:02] [crosstalk]
Chris: [53:03] Webmentions are basically, if you thought about a webhook that had the content of a Tweet associated with the URL on your site. You get that webhook somewhere, and then you store it, and then you display that, and somebody comes to that URL on your site. It's analogous like pingbacks and stuff from the WordPress space, etc.
Kurt: [53:26] Jason said it's like distributed comments.
Joel: [53:32] Yeah, it's a nightmare. Is that right [inaudible] .
Chris: [53:41] Cool concept, but everyone I know who tries it ends up getting weird walls. I would...
[53:45] [crosstalk]
Joel: [53:45] Yeah. There's a lot of that, because Twitter is what it is and everybody here uses Twitter to some extent. I'm deep, I'm 13 years into this Twitter, whatever. I've seen a lot of people try to compete with this and make federated solutions, which I feel like is the way to go and that we'll have to get there.
[54:06] How do you get there in the IndieWeb web way? Fund being a huge issue, consolidation, effort and user experience. Things like Mastodon or Scuttlebutt are really cool ideas, but I can't share that with anybody I know outside of people, you three. Actually, have them understand what I'm talking about, and use it and interact with me.
Chris: [54:38] We are just about running out of time here, so I'm going to wrap it up. I'm not entirely sure how to wrap this up because it feels like this conversation could go on forever. The links to all of our Twitter accounts and the things that we talked about are in that Gist that I linked earlier.
[54:52] This will be a recording. It will be a VOD on Twitch for a while. I will post this somewhere else as well. Somebody asked me to do a summary write-up, so I'll be doing that. Getting in my progressive summarization, as it were. It's all reps. It's all about reps. I will throw it to each of you three if you all want to close out with anything.
Joel: [55:15] I'd like to circle back in 6 or 12 months and revisit this and see where we're at at that point. This is a conversation that's ongoing for me. It's an infinite game I'm going to be gardening for a long, long time. This is something I'd love to...I really respect y'all's opinions and what you've done to push these ideas forward. Thanks again.
Chris: [55:40] Thank you all for showing up. Go for it.
Kurt: [55:42] I was just going to say the follow up. I appreciate you for having me on here. I just had a few ideas, but to be here with the creators of three of the biggest kind of ideas that I'm really into right now was awesome. Thank you so much for having me on.
Chris: [55:58] Thanks for sparking it, Kurt. That was great. Thanks for agreeing to do it on stream and recorded and whatnot.
Kurt: [56:05] For sure.
John: [56:06] Thanks for having me as well. Check out the MDX v2 Umbrella issue if you have thoughts on the evolution and where we're going.
Chris: [56:14] Cool. That's it for us stream. I'm going to end the stream now. Thanks, everyone, for hanging out.
Member comments are a way for members to communicate, interact, and ask questions about a lesson.
The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io
Be on-Topic
Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.
Avoid meta-discussion
Code Problems?
Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context
Details and Context
Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!