 James will be talking about React and serverless. So let's talk about full stack JavaScript and how it can be made easy with various tools that we can use. Hi, James, how are you? Hey, what's going on? Very good. Perfect. So we have you there. How have you been? I'm good. It's been a while since we've seen each other. Well, yeah, it's been a while since I've seen anyone in person. So we got to hang out back in Florida in February, early March, whenever that was. Right, right. I think you were one of the last person I saw. Yeah, that was the last trip that I've taken since all this has happened. Yeah, exactly. Everything closed down just a few days after that. Yeah. It's been weird, especially for people that are used to traveling and hanging out in person. But it's worked out all right. Good, good. So your favorite framework is React. I am, yeah, I'm a React fan. And the talk that I have is, has React in the title. Not too much of it is React specific. So hopefully people that are fans of you and Angular and Ember and other frameworks will get something out of it, too. If anyone wants to learn about React, I believe you do have a series of courses available. I do, I'll actually have, in the slides, I'll have a link to. It's a React and serverless course, so it actually goes pretty well with this content. And your video just like, slowly disappeared out of the screen. Yeah, I wanted to show the results. Yeah. Over there. There you go, going back. During this pandemic time, I've had the time to invest and spend time with various video production software and hardware, and I'm still kind of playing with it, so it's still brand new. I think we all are. Doing a lot of live streaming now, and there's something new every time that I need to fix or add or something. It's a never-ending process, but we've made a lot of progress so far. Good. Let's just wait another two minutes, just in case someone from another track joins us in the JavaScript track. So we'll just wait one minute or two before we get started. Yes, is there anything that, why don't you plug us your Twitter account while we're waiting? Yeah, I'll throw it in the chat, but I am James Q. Quick on everything. So Twitter, Instagram, GitHub, Facebook, LinkedIn, and then my personal site is jamesqquick.com as well. That's actually like my first intro slide, so you'll see it all again, but it's not the time being. And part of, so on the Twitter, I would encourage people to go there. This will be part of a small part of a demo at the very end of this. It's just to show off a little bit of interaction in a static site that I think will be fun, so. Yeah, and you work at OddZero now. I'm at OddZero, yeah. We've got my OddZero pride shirt on. And a great company, I must say. Yeah, it is. If you haven't tried it, you definitely should take a look at OddZero. Yeah, and I'll give a little bit of a OddZero shout out throughout the presentation as well. Good, good. All right, well, why don't I let you get started with the actual presentation and I'll just disappear for now and let you take it over from now. All right, cool, thank you. Let me get my screen sharing appropriately. Make sure I grab the wrong one. And if you're in the chat in here, say hello, I would, it makes it feel a little less awkward to know that people are here. So if you are here, maybe comment on your experience in React and or serverless. And if you've never heard of either one, that's totally fine too. But anyway, welcome and thanks for being here. This talk is React and serverless. It's full stack JavaScript made easy. There's lots of different things you can do in JavaScript and things change very often. And so we're gonna touch on some of the, I think the more modern and to me exciting parts of JavaScript. So I'll first just introduce myself. I get the cursor over here on the right place. And I haven't figured out, I don't know where this animation is coming from. I tried to get rid of this animation of my image and I don't know where it is. I've deleted all the animations on the slide and I can't figure it out. So you get the animated picture. But my name is James Q. Quick, James Q. Quick on anything. I've got the links in the chat there. And I consider myself to be three things, a developer, a speaker and a teacher. And I've done some combination of those three things for about seven years professionally. I think it really comes down to two things. I enjoy learning and building and I do that constantly. And then I also enjoy just working with people and teaching people. And that combination of things has led me to my current role as a developer advocate at All Zero. And I've been there since January and I'm loving it. And All Zero is an amazing option if you are a developer and you're looking to incorporate authentication or authorization into your applications. That's really our goal is to make the process as easy as possible. So we take care of a lot of that stuff for you. And then my goal and my role specifically is to facilitate that as well. So doing talks and doing one-on-one sessions and just being in the community and being engaged with people that are out there. So we get one response in the chat about using serverless and AWS using Node.js. Very cool. We'll talk a little or we'll see some demos of serverless functions here as we go through. So in addition to All Zero, I actually have the benefit of being able to represent two other countries, not countries, companies as well. I am a Twilio champion. Twilio is an amazing, very fun platform for being able to see or send programmatically texts and voice and send emails and other cool stuff. So I get to represent them as a champion. And then I'm part of the Media Developer Experts Program which is sponsored by Cloudinary for media management, hosting, and transformations and things. And we'll see a little bit about both of those along the way. So let's start by just talking about the state of JavaScript as it is now. I don't know what the background is for people that are in here, but let's just kind of start from scratch and talk about where JavaScript is. And if you are part of the JavaScript community, sorry that that link is a little bit cut off there, I apologize, but you've probably heard of the state of JavaScript survey that goes out once a year and it asks people like out of these technologies that you use or have heard of or have never heard of, how are you using them, when are you using them, where are you using them, that sort of thing. And I think that the thing that just jumps out to me on this slide is that there's so many different boxes in here and this I think is just representative of JavaScript as a whole. This is one of the good things and the bad things of JavaScript, is there is a new framework every day it seems like, there's a new utility or new tool, there's new something all the time and especially in the JavaScript ecosystem, it's a never-ending world to be in. And so you look around at all these different options, the different choices that you have and you kind of get overwhelmed and I certainly feel this as well, where you don't really know where to go and that's kind of where we are with JavaScript of, if you've been in it for a long time, either you've got a bunch to learn because it changes so quickly or you're jumping into it for the first time and you get this like, don't really know where to go type feeling. So that's kind of a downside, but the benefit, the beautiful thing about the state of JavaScript that it's in now is that you can literally build anything with JavaScript. You can build what you probably already expect is your front end applications using front end JavaScript, but you can also build server side applications or your back end with Node.js using JavaScript as well. You can also build desktop applications. There's a framework is the right word or a tool called Electron.js which allows you to build desktop applications which is really, really neat using HTML, CSS and JavaScript, your web technologies. And if people do use VS code as your editor maybe, that's actually an electron application. So it's a great example of a very powerful application and perform an application that you can build with Electron. And then you can also build mobile applications with React Native. So you've got front end, you've got back end, desktop, mobile, you can do scripts and all kinds of wild things with JavaScript. And that's really the beauty of it is you can really do anything. But today we're here to talk about React and how that fits in with React and serverless in this context. So it's also good to know that in React specifically of subsection of the JavaScript ecosystem, the React ecosystem itself is very big. So there's React and you have like create React app to get started, for example, you have React Native to build native applications, Android and iOS. And then you get into this other tier of, I say newer but some of them have been around for a few years frameworks on top of React that are really here for a purpose and we'll get into that in a second but there's things like Gatsby. This is one that I use a lot. Most commonly it's thought of as a static site generator but it can do a lot more than that with this rehydration process that it has. We can basically generate static pages but can also do anything that you can do with a regular React application. Next up, no pun intended is Next.js and this is a tool that lets you blend your server side rendered pages, your dynamically generated pages with your static pages and give you the option to do both and really combine them in a neat way. And then you may not have heard of these two, Redwood.js and Blitz.js are two full stack React frameworks that help tie everything together and they have a lot of parallels and similarities to Ruby on Rails as a framework with some of the scaffolding that they have built in but just the idea of having that full stack application right inside of using React. And so these last four, these options have come into play and they have started to exist, they've come into play for a reason. And the reason is this new methodology, this new idea that you may have heard of and maybe you haven't, but it's this term called the Jamstack. And I think a lot of us may have heard it, we may have used it, we may have heard other people talk about it. I think a lot of people still don't really quite know what the Jamstack is. And it is kind of hard to be very specific about what it is, but I do think it's important that we kind of talk a little bit about what the Jamstack is and break it down for you. So JavaScript here stands for, or excuse, JavaScript stands for Jam and the Jamstack stands for the J JavaScript, the A for APIs and then the M for markup. So that's what the acronym is and then there's several different benefits and focuses for Jamstack applications. Performance is first and foremost and this is, gets into a lot of what we'll talk about in a second is static sites. And the idea of a static sites is that you build a site, you have some sort of assets and you host them on a CDN, content delivery network. And with that sort of workflow, there's not really any server maintenance for me to do. So there's higher security. I'm not having to do patches on the server, that stuff is taken care of by someone else. There's also the idea of like as a site gets really, really popular, since these are just files that get sent back down to the users as they request them, this can scale really, really high and handle lots of transactions coming in at any given time. And the last one is actually, one of the ones that's closest to heart for me is the developer experience. I, in the last couple of years, moved my personal site from WordPress to a Gatsby application that's hosted in Netlify. You'll hear a lot about Netlify in this talk and the experience of developing that and building that and the deployment model that I have tied into the Jamstack, tied into Netlify is just really, really great. So this is probably these two bigger or this one bigger bolder point at the top is probably the most important aspect of JavaScript or Jamstack for me and kind of understanding what it is and some of the implications behind it. And this says it's a progressive concept with proven components. And if you think about this, Jam and Jamstack being JavaScript APIs and markup, neither one of those things is really new to us. We've had JavaScript for years now. We've done different things with JavaScript for years. We've had APIs for years that we worked with. We've had markup and HTML or markdown or whatever we use. We've had those things to use and have used them for years and they've worked for years. The difference with the Jamstack now is that we're taking these existing technologies and we're building out this progressive concept. We're coming up with this new way of how we combine things to help solve some different issues and problems that we have. So I mentioned developer experience earlier as one of the big benefits. A big part of that is doing Git workflows where I can have continuous integration where I check code into a repository. It automatically goes through a build process and then is hosted and is live and ready to go. As a developer, I'm hands-off. I don't have to do anything other than writing and checking code and everything just kind of works. And that's part of the build process as well. During that continuous integration, there's a build step that will take the application, the code, run a build and then have that thing ready to serve from a CDN so things are super fast and super available. So if you wanna do some extra reading, a couple of links in here jamstack.org, jamstack.wtf is actually a really good example as well. And then that graphic that we just looked at a second ago is netlify.com slash jamstack. And so I've mentioned the word static sites a few times here. And I just wanna go back to really defining exactly what that is. And for me, a static site is one that it may go through a build process or it may not, but the output of that build process, if there is one, is just a set of static files and those files go and live on a server or a CDN somewhere. And when a user requests your site, there's no real time generation, those files just get sent back. So there's not really from a developer perspective, there's not really any server. There's continuous integration built in, remember that developer experience. And in these things, these sites are fast and secure. And ultimately, we'll see this more in a second with serverless functions, but hosting in this case is a breeze. Again, you have your build system and the output of your build if some sort of static files, in this case, HTML files and those things just sit out there on a host. And so I've mentioned hosting and static site hosting and CDNs several times already. And a couple of great options if you're curious, AWS is, it's been around for a long time and has static hosting along with for sale, formerly Zeit, if you've heard of them, Firebase has static hosting, Azure has had static hosting and just kind of announced an optimized version of static hosting. And then there's Netlify and you'll hear me rave about Netlify, I use Netlify for personal sites and you'll see a little bit of that in the demos that I show you here. It's been fantastic, it's super easy to use and does exactly what I want and you'll see why. But regardless of all of those options, I'm kind of curious what you think when you hear the phrase static sites, what does that actually make you think of? And I'm tempted to think that you might think of a static site to be something like this, just a basic HTML file with a heading and a piece of text. Or maybe you have heading text and a little icon and some links, or maybe you get this fancy blog post layout with a cool pink color, or maybe you go all out and you get this really cool Space Jam website from the late 90s that is still out there available for you to check out today. But regardless of what you think of with static sites, it's probably not exactly what static sites means today. And the reason is that static assets doesn't mean or don't mean a static experience. And this is really important because we talk a lot about static sites when we overlook the implications of using that word static. There's really almost nothing you can't do with static sites now. And a lot of how you combine your static sites to add functionality comes through serverless functions. And this is something I've spent a lot of time with the last six months or so. I've given several talks on static sites and serverless functions and how to combine them and do cool things. And if you're familiar with the concept, the idea of serverless, you probably know that serverless doesn't actually mean there is no server. All of these files and all of these serverless functions, they have to actually live somewhere. Something has to be able to host them and then serve them down to a user when they request them or respond to the request that come into a serverless function. So serverless doesn't actually mean there's no server. It just means that it's not your responsibility. It's not my responsibility as a developer and it's not your responsibility as a developer because the hosts that we just talked about, Netlify and Firebase and AWS and Microsoft Azure and all the other ones that are out there over. So what they say is, don't even worry about it. You just give me your code and I'll take care of the rest. And again, from a developer experience perspective, this is exactly what I'm looking for and what I imagine a lot of other developers will look for as well. So what serverless means or what this looks like in here, in this example, I've got a functions directory that is embedded in my repository. Each one of those files, get user, create user, get users, me, update user and upload are individual functions themselves. You can see the create user function here. And by adding that file to that directory in my repository and then checking that into source code, Netlify is gonna recognize that as a serverless function and it's gonna take care of the rest. So in theory, all I do is write a function and check it in and then magic happens. Netlify or a different type of host will step in and say, hey, I got you, I'll take care of the rest. I will have this stuff ready to go to respond to whatever requests come in. And that's pretty cool, especially from a developer's perspective. Again, servers are not my things. I don't wanna focus on that. I don't wanna do all the things that come along with that sort of maintenance and updates and patches and things like that. I wanna let someone else take care of the magic for me. So if you went down the Netlify route, you would see in your Netlify dashboard, as you check in a repository or check in to your repository with some files in your source code in a functions directory, for example, Netlify will pick those up. Talk Track is an example that we'll see in a second here. And inside of that, there's three functions that Netlify picked up on and it hosted for you. In this case, it's the add feedback, the add talk, and the search tweets function. And we'll see those in a second. So all of that's really cool, but I wanna take just a minute to talk about the ecosystem of the Jamstack now and what it means. And really the way I look at the Jamstack now is there's all these different options to do things. It's all about putting the pieces together and figuring out how to make them work together. And I think a cool example of this is from Netlify again, is they've got a Netlify or Jamstack examples page where you can go in and you can see websites that are built and just looking at the names in here, you see all of these technologies. You see some React in here, you see View, you see Gridsome and Nux, which are built on top of View, you'll see Gatsby and Nux, which are built on top of React. You'll see Angular, you'll see all these other tools, hosting platforms, all these different things. It's kinda cool to see that these applications are built by just putting them all together. So I'd like to share for me a couple of options if you need to store data. I think this is just kind of an awareness of the landscape. Firebase is one that does a lot of stuff, authentication and data storage and hosting. Airtable is one that I've used recently. It's basically an Excel sheet database that you can customize and work with. It has a great API, it's really cool. Postgres is a common one. FaunaDB is one that's made a big splash in the Jamstack space that I've used recently. MongoDB has been around for a while. And then one that might surprise you that you'll see here in a second is using Trello as a database. And Trello is typically a card management tool, but you can actually use that as a data source for your applications. We'll see that in a minute as well. And then we've gotten into this idea of headless CMS options of separating our data from our front end. And so lots of these have popped up, Cosmic and Prismic and Datto and Strappy. And I personally use Sanity for my site and really enjoy that one as well because it's fully customizable and really fun and easy to work with. So the final thought of the Jamstack ecosystem for me is that there's really a service for everything. Anything that you want to do, any feature or functionality that you want to add, most likely there's something out there to help you do that. So you look at the landscape of, if I want to add payments, they're Stripe. If I want to add forms, I just came across this one the other day of Quest Forms, which is releasing a V2 coming out this week. And I think that's really cool because they do all of your back-end management for forms as well as give you some front-end and back-end validation. And then there's all these other ones. I mentioned Twilio at the beginning, if you want to programmatically send text or voice or emails, we'll see this in a second. If you want to host images and do transformations with Cloudinary, if you want to add e-commerce, you use Shopify, and then I do work for Auth0 and I use Auth0 in all of the applications that I build for adding authentication and authorization to my applications. Haven't checked it out, you totally should. So all of this sounds really good. It sounds really cool to me, but I think what we should do is just actually take a look at a couple of examples of these projects. Now I'm going to grab the GitHub links and throw these in here for people that are curious. So I'll throw in the first example is TalkTrack. And you can go out and check out the source code if you want to. The second one is Dev Setups. So I want to start with TalkTrack up here. And I had this idea of I wanted to build an application where I could add all of the talks that I give as well as have some way to get feedback from users on that talk that I gave. So I would actually encourage and would appreciate if someone would head on over to this link, TalkTrack.netlify.app. This is part of the demo, so hopefully someone contributes. If not, I guess that's okay. But I've got my most recent two talks are actually today. I've got the security one is later, but this one is React and serverless. And if I click on this, I can see the date. I can see the conference. I can see a link to the slide. So if you want to go and grab the slides, you can do that there. And then I've got this rating form. And this rating form will allow you to submit feedback on the talk and then I will be able to see it. And if people contribute in some capacity, we'll actually be able to see that that feedback form will trigger, this is dangerous for a live conference talk. It should send me a text message to my phone and hopefully we'll hear that ding. And that text message will show me the feedback that you sent and that's tying into Twilio. Now this app is built with Gatsby as a static site. It's authenticated. Do you hear the ding? Can people hear that? If you can, let me know in the chat. I heard it, it's real. And maybe you can see like the picture of my wife and my dogs on here, but there is the text that just came in. But this app is authenticated with Auth0. It uses Gatsby as a static site generator. It's hosted in Netlify and this is kind of the funny part or maybe interesting part for me. Where is the right tab that I'm looking for? This one here. The data for this is stored inside of Trello. And I won't, actually I see the feedback there so I don't have to scroll down. Actually some more are coming in so thank you. And I'll turn the dings off assuming that people heard it so far. But my data is stored inside of Trello as a card and then these are coming in, these comments are coming in real time through serverless functions and being stored inside of Trello. I think that's super, super cool. I get really excited about that. And if you wanna check out the source code, you can. And you'll see inside of TalkTrack there's a functions directory. And that functions directory will show you the different functions that I have to be able to handle these things that come in. So one of them actually tests, this should be deleted so I can get rid of that. But there's also the add feedback. So when you send that feedback to me, when you fill out that feedback form it's going to call out to the serverless function. And this serverless function will grab that body information, the feedback and your email if you sent it the rating and which talk or the card ID that it's associated with. And then I will add that comment to the card. So that's where these things come down here. I apologize if I showed you email, sorry about that. And then if the text alerts, this is an environment variable inside of Netlify. If this is turned on, it will go ahead and use the Twilio client to go ahead and send that thing back to me. I think that's really, really cool stuff. And then if you scroll down, this thing just returns back out and that's basically all it's going to do. There's another cool aspect of this for the add talk functionality. If we start up here, this add talk function is wrapped with require permission and it's requiring an add talk permission. You can see this comes from an auth utils that I've got inside of this project. So when I log into this application, I can log in and I get an access token and an access token inside of it includes my permissions that then can be checked inside of here to make sure that only a user with that permission can add a talk. Now, originally when I very first showed off this demo, I didn't have any authentication in place and I had some one spam it during the presentation which is actually perfect for a developer event because that's exactly what we're supposed to is hack each other stuff. But now I've got this thing set up with authentication in a static site. That's kind of a weird mix, but I'm able to handle authentication on the front end and then pass an access token to the back end and then do a validation to make sure that only users with this permission are going to be able to come in here and kick off adding this card. Now there is one kind of mystery piece in here of where I make a post request after I create the card, I make a post request to this Netlify build hook. And the reason is with static sites, the way or static site generators, the way they work is they go and grab their data at build time and then statically or they dynamically build static pages, if that's right, but they will at build time go ahead and generate, pre-generate the static pages for the different, in this case, the different talks that I give. So all of these talk pages in here are actually static pages that are built at build time. Now when I add a new talk, this is why I then need to kick off a new build in Netlify to make sure that I get the latest information that you can see out there. And if you look inside of Netlify, you'll see inside of my deploys that I ran a couple of deploys earlier today when I added those new talks and they kicked off automatically as a developer. I don't have to do anything. It does it all for me and it's ready to go. And the last part of this, as you can see, I've still got this test function in here, but inside of my Netlify dashboard, there are the different functions that you can see are there and Netlify just picked those up because I've got them in that directory. Now the last thing I wanna show you is I don't know if anybody, actually I forgot to do this, so this probably not going to work if maybe I'll come back to this at the very end, if someone would be so kind as to tweet something with the hashtag jquicktalks, actually I think it's jqquicktalks, sorry about that, jqquicktalks. If you would tweet something with that hashtag, I'll show you an example of getting data almost real time or at least dynamically to show relevant tweets in here. So that's project number one, that's demo number one. I also have this project called devdesk and Chrome has been freezing on me a lot recently, where I had this idea of lots of times people have tweeted about their desk setups in Twitter and you have this big long thread of everybody sharing their desk setups, but there's no way for me to have like one aggregated view of like here's all of these people's setups. So I wanted to create a site where people could log in and I guess I'll go ahead and do that here, log in with their Twitter account and I've got this setup with Auth0, log in with their Twitter account there, do the authorize to get the read access, it will grab the information from Twitter, including their description. Actually I guess I'll have to show you my public profile for that. So I'll show you my public profile and it grabbed this description from Twitter and then it also has a link to in this case my users page as well as an image that I uploaded. And so as I'm logged in, I can now view here's all the information that or here's all of the different desk setups that people have posted. I think it'd be really cool and I would actually love, this is in kind of an alpha stage, but if you wanted to log in with Twitter and upload an image of your desk setup, I think that would be really cool and I would appreciate that. But this whole thing is built with the idea of React and serverless as well. So if we look inside of Dev setups, we've got that same functions directory. We've got all these functions, create user, get user, get users, me, update user and upload and all these functions get picked up by Netlify, posted as serverless functions and then this application is full stack and ready to go. Now I wanna show a little bit behind the scenes of how this works. This is using air table as a database. Again, air table is mind-blowingly cool. Or if I go into Dev setups, here's all the information for these and these are all the stuff is public information. These are just public username so I don't have to worry about sharing this. But I got a username, I've got an image ID and then if the user customizes their user link or uses link to a page that shows all the things that they use on their Dev setup as well as the description that comes from Twitter. And then lastly, these images are stored inside of a Cloudinary and because of that, I can do fancy transformations and things. And I just kinda wanna raise awareness to like, I've got air table, I've got serverless functions, I've got Cloudinary, I've got all these different things and the idea of Jamstack is being able to put all of these things together in a really performant way where I don't have to worry about the server. I get real good speed, I get great developer experience and I can do all of this with React or really any other JavaScript framework or just JavaScript in general and serverless functions. So inside of Cloudinary, here's all the different images that I've got stored here. I keep a reference to these inside of my air table table and the output of this. And Joe Lord just signed up real time that was perfect timing because it showed up right when I was looking here. But Joe Lord looks like he just logged in and signed up. And so maybe I'll get him to, or hopefully he will upload a picture of his setup in here as well. But I just, I have a lot of fun being able to do this stuff because I love trying out new technologies. I love seeing how they fit together. And to me, that's really what the Jamstack is all about is taking all of these amazing services that are out there, not having to write all the functionality yourself but leveraging those things that other people have done, putting them together to make really cool and exciting applications. And I'm wondering, I'm gonna do one refresh. I don't know if anyone has tweeted or not, but if they did, we got a couple. Thank you so much. We got a couple of tweets in here and just to show you that this is a static site that's making it a real time or not real time but dynamic call from a static site to a serverless function to get a list of these tweets. I think it's really powerful. And this is where the idea of static sites does not equal static experiences. This is a Gatsby app that most people think of as being a static site generator, but it can do so much more and it can do anything that you can do with regular React. And that I think is really, really cool. So let me slide, which I always forget which way I'm supposed to slide. Let me slide over to, or maybe I need to get out of this and there we go. So there's our demos. Again, I think those are fun and those are cool, but we're getting close to time. So let's start to get out of here. Let's start to wrap up. And the one thing I wanna show you is I've got a React and serverless course that Joel mentioned earlier. You can find information about other courses and this one, especially on my site at jamesquick.com slash courses. And in this one in particular, we get into building that full stack application using all zero for authentication, doing access tokens and doing authorization and things inside of all zero and on the server or on the serverless functions, hosting, deploying, to Netlify, all that cool stuff is inside of this one application. So I think that would be pretty interesting if you wanted to check that out. I also just realized as I tab through here that I have a typo and I'm gonna try to fix that for you by coming and grabbing the link in here. So I updated my URLs on my site and it no longer is a speaking page. It's actually the talks page. So I'll give you this one. It's actually correct on this last page. So jamesquick.com slash talks, you can go and grab the slides. If you have questions after this, find me on Twitter or anywhere really you can contact me through my website. Let me know, I'll be happy to have a conversation and answer them for you. And I think Joel is here. We've got a few minutes. I think I'm on time to have a few minutes for questions. You're right on time. So we still have a few minutes for questions. If anybody has any questions for James. James, you did share your slides in there. Thank you so much. I really enjoyed the live demos. Yeah, thank you. I try to keep up. I just posted my dev setup as well on your website. So you should have it now. Yes, if you find any bugs or anything that could be improved. I think the about page doesn't actually have anything on it. So if you have any suggestions or feedback, for people if you tried out, I would love to hear it. Yeah, that was a lot of fun. Thank you so much. If there are any questions, once again, you can post them here or in the Dev Nation Slack channel. I believe James, you will have to leave early because you do have another talk today at another conference. I've got several different things today, unfortunately. Yeah, so I'll just talk for a few minutes until if there's a question cut me off. But I'm doing some just kind of open Q and A coffee chat conversations with I went to Vanderbilt University. So I kind of volunteered some time to talk to some of the students there. So I'm doing a few of those starting in 10 minutes and then have a talk with them tonight. And right before that, I have a conference talk for React Global Summit. So today is a busy day. I'm just trying to make it through but it's been good so far. All right, thank you so much. I'll leave you go back to your other thoughts then. Thank you once again. Very informative talk. We really enjoyed it. Thank you for being a guest at our first definition day.