Cursor AI Tutorial: Build a Full Stack App with AI in 30 Minutes | Nat Eliason

Nat Eliason shows how to build a full-stack app in 30 minutes using Cursor, an AI coding tool. He walks through creating a content remixer that turns blog posts into tweets, discusses debugging with AI, and shares how he used these tools to edit his sci-fi novel.
I mean, the big differentiator, I think is going to be that if you are somebody who wakes up and makes things that like, you want to see in the world or that you want to change or that you want to do, your job is safe. If you're somebody who wakes up and like, gets told what to do, then your job is going to be at more risk. And Cursor is a programming tool. It's a text editor for programming that's built on top of something called VS Code. There's one thing about Vibe coding is you give it instructions and then you can just go scroll Twitter or Instagram or text your friends or whatever, whatever else you feel like doing while the machine does the work for you. People have always been kind of Vibe coding. They've just been doing it by copy and pasting stuff from stack overflow. You're going to have to debug things and be willing to go figure stuff out. I do think these AI tools are going to like wipe out 80% of a lot of creative markets. A lot of businesses aren't going to need to hire copywriters anymore. A lot of writers aren't going to need as many editors anymore. But the people who are good at it are going to be five to 10 times as productive because they can augment their workflow using these tools.
All right, welcome everyone. My guest today is my friend Nat. Nat teaches the build your own Apps with AI course, which almost has a thousand students and made $200,000 in a single week. It's also the course that started my own Vibe coding journey. So I got to thank him for that. And today I'm excited to talk to Nat about. I'm going to ask him to demo exactly how he builds apps of Cursor and also how he edits his brand new sci fi novel with AI's feedback. So welcome Nat.
Good to be here. Good to chat. Yeah, I. If I had, if I had launched it one week later, the word Vibe coding would have been in the lexicon and I would have had much better branding. We all came up with that term literally a week after I did it. So I just missed out.
It's great that like on under capacity came up that term because basically give us all permission to talk about it because if someone as smart as him is doing that, then why not?
Exactly, yeah, it does count as programming. I do believe that it is just kind of an ultimate layer of abstraction. Leap forward. If you were writing Python or JavaScript or whatever, before that was getting compiled into uncompiled into lower level machine code. Nobody's really writing assembly anymore. And so these are all just layers of abstraction so that you don't need to know how to talk directly to the computer. And now we just have the most incredible one, which is that we can ask the computer to do stuff for us. And it's pretty cool. You can build pretty neat stuff that way. Yeah.
English is the ultimate higher level.
Yeah, exactly.
Yeah, yeah, yeah. But, but, dude, let's. Let's get right into it, man. Did you want to, like, show us what Cursor is and.
Yeah.
What do you want to build with Krasar?
Yes. So I think we'll do this. All right. You see my screen?
Yes.
Cool. So I think, yeah, one of the things that I talk about in the course is building like a content remixing tool, because at least for me, I enjoy writing blog posts or doing podcast interviews, but I don't enjoy writing tweets or short pieces for LinkedIn or anything like that. And so I wanted a tool that could take my long form content and create short form content from it. So I have Cursor open here. And Cursor is a programming tool. Right. So it's a text editor for programming that's built on top of something called VS Code, Visual Studio Code, which was a very popular open source code editor that they added this AI layer on top of. And I will say that if you're. If you're getting into Vibe coding, if you're getting into talking to your computer to get it to write code for you, there are these other tools out there, like Bolt and Lovable, that can help you get started as well. But I usually don't tell people to start there or I don't use that as, like, how I teach it, because those tools are almost too extracted from the programming process and they sometimes get stuck and you run into errors and they can't troubleshoot themselves, and then you just end up giving up. I actually heard this story a lot from people who joined the course is they were like, I heard Vibe coding was a thing. I went and I tried Bolt or whatever. It got stuck after a few prompts, and then I just gave up and, you know, decided not to move forward with it. And I was kind of like, no, you're really close. You just need to do it on your computer with Cursor and learn a few troubleshooting tips and whatnot that we cover in the course so that you can get through those blocks. So I like doing it on your computer. It's Also, just cool doing it on your own computer instead of a browser.
Do you mind zooming a little bit on the cursor? Is that possible?
Zooming?
Yeah, yeah, yeah.
Is that good? Okay, that works. So Cursor is a code editor with an AI agent built into it. They've recently updated it so it has this new layout, and by default it puts you into agent mode. And so the cool thing with Cursor and its AI agent is you can hop in and you can just say something like, I want to build a tool for turning my blog posts into tweets. I should be able to paste in a blog post, click a button and. And then it uses an AI API like, I'm going to use Claude, because I think Claude is a better writer than GPT. But you could prompt it with any of them and it would. It would figure out the API stuff for you, click a button, and then it uses an AI API like Claude to create a bunch of tweets from the post in my voice. So this isn't a super complex PRD project. Requirements, Doc. It's not a big plan for how this thing needs to get built. It's just a pretty simple request. I'm just saying, hey, this is basically what I want and can you do it for me, please? Then it will automatically pick a model for you and you can basically just trust this. If you're getting started, you don't need to get into picking your models or whatever. So I'm just going to hit Send and we're going to see what happens.
Yeah, this is the Vibe PM part.
So I'm going to run this command. Okay. To proceed. It's just going to ask if it can install packages and it's going to start doing things and we'll wait. I mean, honestly, this is the fun thing about Vibe coding is you give it instructions and then you can just go scroll Twitter or Instagram or text your friends or whatever else you feel like doing while the machine does the work for you. And, you know, that's. That's a pretty neat option to have at your disposal. I got a lot more active on Twitter while I was Vibe coding.
This episode is brought to you by Vanta. Whether you're a startup founder navigating your first audit, or a security professional scaling your GRC program, security has never been more critical or. Or more complex. That's where Vanta comes in. Businesses use Vanta to establish trust by automating compliance needs across over 35 frameworks like SoC2 and ISO 270.01Vanta can help you start or scale your security program by connecting you with auditors to conduct your audit and set up your program fast. Plus, with automation and AI throughout the platform, Vanta gives you time back so you can focus on building your company. Join over 9,000 global companies like Atlassian, Quora and Factory who use Vanta to manage risk and prove security in real time. Get a thousand dollars off@vanta.com Peter that's V A N T A.com Peter for $1,000 off. Now back to the episode.
Do you. In your course, you mentioned like first getting into try to write a readme file with the plan, but I guess sometimes we're too lazy to even do that, right?
Yeah, I mean, you don't necessarily need to. It'll often do a pretty good job on its own without that. And if you have a pretty detailed idea of everything that you want the app to do, then you can totally go ahead and make a readme file first because that might give it some more direction. It gives us something to refer back to so that if it runs into any problems, it knows what to build. But we can see here something a little odd is happening. It shouldn't be taking this long to like get it built, right?
Yeah.
So I'm gonna, I'm gonna go ahead and stop it because it's weird that it's taking so long. I'm just gonna try hitting send again and see what happens. We'll run this command.
Yeah, I actually, I found that like, installing libraries is often the step that has a lot of friction. Like if the library is updated or something and the alarm doesn't know about it, then it gets stuck.
Yeah, totally. Yeah, it gets a little bit confused. And so if you run into a problem like this where it's, you know, it's trying to create the app and you know it's not working for some reason. You can always just go do some of these steps manually. Right. So this gives us a clue of what it's trying to do. So it's saying create vite at latest, whatever this dot and this dash mean and then template, react, type script. Right. So you could, you could copy this and you could go to Google and you could type it in. You could say like, what, what does this mean? What is this doing? And you could see if you can do it outside of the agent because the one limit of these agents is that again, they do sometimes run into these issues. So I'm going to try something else. Okay, that's interesting. We need to provide a package name. Let me try again with the package name specified. But I think what it's trying to do is it. It thinks that there's like, something out here it should be installing. So I'm just going to go ahead and stop all of this.
Yeah.
And we'll try this one. And that did it. Right. So sometimes it just gets confused and you need to stop it so that it can figure out what it's supposed to be doing. And yeah, the problem was that it was trying to install these packages when it really just needed to do the normal template. So one thing that you need to get used to if you're vibe coding like this is kind of like not totally knowing what you're doing all the time and canceling stuff and retrying it and seeing what happens and. And being willing to just like, try a few times. So that worked. You can see it created this folder over here, Blog to Tweets. And what it wants us to do is to run this command. And again, you don't need to know what this does, but I'll give a quick explanation. So CD Blog to Tweets is going to navigate us into that folder. So that's the folder that we're working on. And then it's going to install all of the packages that the code needs to run. So if you look in this package JSON file, this is just telling it what to install. And again, if you don't understand what any of this means, that's okay. The more you do this and the more you kind of like play around with these things, the more natural it starts to feel. So we'll just run this command, it's going to hop in there, it's going to install some things.
So it's basically, it looks like it's installing Tailwind, like the front end stuff, and also anthropic SDK, like cloud SDK all in one go.
Yes. So it's installing all of those things at once. We're initializing Tailwind, which is how it's going to do the design for the site.
Yeah, you got to be careful here, man, because Tailwind recently updated to V4.
Yeah. Okay, that's a good time. So sometimes it runs into those issues as well. Right. Like it doesn't always have the latest versions in Claude or whatever AI API it's using to generate the code. And so it can get confused with versions and we'll probably run into that at some point and then we can show how to debug that. I will say, too that there's this new thing that they have in cursor called YOLO mode where.
Oh, really?
Yeah. Where you give it permission to just run commands instead of asking you. So I can even just turn this, set this to Auto run and you'll see here. Yeah, YOLO mode runs any command based on the Allow and deny list you set. I'm not going to do it right now just because like that makes me a little bit nervous, but you probably would be okay doing it.
Yeah. Austin Auto decided to embrace the yolo.
Yeah, you do?
Yeah. That's very funny.
Okay, so now we can see. We're going to start to. Basically, I'll explain a couple of these things are doing. This is all typescript stuff. This is. We created a server up here where we're going to generate the tweets and we'll go look at this file in a minute. But you can actually see this is the command getting sent to the LLM. Please convert this blog post to 3 to 5 engaging tweets, 120 characters and so on. It created all of that for us. We're going to have to fill this in with our anthropic API key to install another package. A basic version of this should be working now because it's saying, would you like to test it out? And so I'm just going to say, yeah, let's test it out.
Yeah, it'd be amazing if this stuff's working one shot. I mean, there's API key, so I guess it's not gonna.
Yeah, yeah. Without the API key, it won't work, but the UI will probably be okay. And so this is interesting. I said, yeah, let's try it out. And it realized there were some errors that needed to be fixed and so it's gonna go fix those before we try testing it. And then it says here, first make sure you've replaced the anthropic API key with. In the ENV file with your actual anthropic API key. So if we go here to env, you can see it wants us to put in our API key, which we obviously don't have. But I'm just going to go ahead and run this anyway. Ok, so now we're running into a problem where dev all this NPM run dev all command is not working. But the agent sees the issue. We need to update the package package JSON with the scripts. Let me fix that. And now it should have worked, didn't. It's going to hopefully see the issue and fix it correctly this time. But this is something that you'll run into where it'll say, I see the issue. And it'll say like, I know how to fix it. And then you try it and it just doesn't fix it. It's. It's always very confident, you know. Yeah, it always.
I see the issue now.
Yeah, exactly. I see the issue and see it now. It's confused again too, right? Because it says the server should now be running, but the server is definitely not running. Right. We got. Because both of these failed and it kind of feels like we're just running. We're running into, like, recurring problems at this point. Like, most of the code should be okay, but running the servers is really creating issues. So I'm just going to go to package JSON, accept all of these, and I want to see what happens if we run some of these independently. So this is the one that we just tried here. And it's saying this vite command is not found, which is a little strange, but I can actually see what the problem is. And again, this is something where it's like, it's nice to do this actually on your computer and not like in. In one of the browser tools because you'll start to pick up on where these agents fail and like, mistakes they make so that you know how to fix things. If you look at our code over here, I sort of messed up how the agent was working by having this blog to tweets folder within this Peter Demo folder because it's going back and forth between coding inside Blog, two tweets and coding inside Peter Demo. So it put one package JSON out here, but there's another one in here. And this is actually the one that we want. We don't actually want anything that's out here. So what I'm going to do is I'm just going to see what do we have out here that's not in there. And it's most of these files. I'm just going to drag them all into here, going to move them, I'm going to replace them and just hope it doesn't break anything. Then this SRC folder shouldn't be out here either, because we don't want two of those. And I suspect that what's going wrong, what happened is it got kicked out and then it did everything in the parent folder to avoid this problem. What I'm going to do is I'm going to close this. This might kick me out of. One sec. Let me stop sharing for a moment and then I'll share my whole Screen. All right, then I'll close this, and then we'll go to my coding folder, go to Peter Demo Blog to tweets, and we'll open this. Now we should be okay. And so now I'll say here, I'll say, most of this is working as a web app to turn blog posts into tweets using the Claude API. Can you see if we need to fix anything before testing it? And now we'll see what it does.
So basically what happened was it decided to make a folder within your project folder correct. That aspect of what happened.
Yeah, yeah. And then it kept bouncing back and forth between the two of them, and that's what we were running into. All of those code errors makes sense. And that is one issue with totally starting the project in cursor. So what I actually like to do is I'll start in Terminal and I'll make the app there, and then I'll open it up in cursor just to avoid that issue. But for the demo, I didn't want to scare people off with Terminal too much, but that is one risk that you run of just starting something in cursor. So looks like now it's going to fix what the app looks like, basically what it did outside the folder at the end last time. Wow, look at all this code. We worked really hard on this.
Yeah, yeah.
And then it's going to remind us that we need to put in the ENV key.
I was building a game and I also noticed it started making duplicate files. So I'm like, hey, can you look at your code and find duplicates and try to refactor it to make it better? I came up with 10 different things to refactor.
Yeah.
And then I asked to just do it all in one shot. And then my app didn't work anymore. So, yeah, maybe do it one at a time.
Yeah. So now what it's asking us to do, or now what it's saying is this is a little bit confusing, right? Because it's saying, start the backend server by running NPM run dev, and then start the front end development server in a separate terminal by running NPM run dev. But that's probably not because these are the same command and it's not telling us to do them anywhere in particular. I'd be surprised if that works, but we can go ahead and try it out. So I'm going to open up a terminal. So I went to Terminal, new terminal, NPM run dev, and we'll just see what happens. Okay. It's running on localhost, and then we get this error. Right. So I'm just going to copy all of this. Go back, riverside window. There we go. Say I got this error and just paste it in and then we'll see what it does.
Oh, yeah, I think I've seen this error before.
Yeah, I find that I often run into problems with Tailwind. Like, it's nice once it's working, but the setup is often kind of buggy. And like you said, they're constantly updating this stuff. And so you figure out how it works one time, and then the next time you go to use it, you have to figure it out again.
Yeah, I mean, I think there's like two ways around this, right? Like, one is to specifically ask it to stay on the old version before this upgrade. And maybe you can try to paste in some docs from Tailwind website.
Yeah, pasting in docs is a good way to do it too.
But you know, that, that. That's kind of like what stopped me from learning how to code before. Just like trying to install these freaking libraries, man. And then you don't get to build anything.
Yeah, yeah. You spend. You spend so much time just getting your initial environment set up just so you can do like a hello world. And then, yeah, it just doesn't feel worth it. So it does feel like that's the nice thing about this is like, yeah, you still have to do this debugging and you still have to figure these things out, but it's so much faster to figure them out than it used to be.
Yeah, for you.
Because, you know, it's like most people have always been kind of vibe coding. They've just been doing it by copy and pasting stuff from stack overflow instead of, you know, having having Cursor write it for you. And then you would run into an issue and you would go Google for that problem. And like, then you, you know, copy and paste that and you run into a new issue, you search for that, it's like, this isn't that much different, it's just a lot faster.
Yeah, that's a really good point. Yeah.
And so it's running into some confusion here around this. Like, export, default module exports. If this doesn't work, then I think what we'll do. Oh, that works. Okay, so now we'll try going to this again. Okay, it's working fine.
Yeah.
So let's go to my blog. Let's just grab a post.
Did you add the API key?
No, not yet. But I just want to see what happens okay, so we'll paste that in. Okay. And it's going to say, fail to generate tweets, because like you said, we don't have the API key. Now, if you go back and look at this, there's no new error, Right? This is our old terminal. This is the terminal that we're running in now. And so we're getting this error. But you might be wondering, like, well, how do I fix that? I have no idea what the problem is. So Command Shift C opens the browser console on Mac and then you can go here and you can see this is where the error is. Okay. Failed to load resource, connection refused in API generate tweets. So we'll go back here and we're going to find. Where is it? We might not even have the API. We might have actually deleted that file. Let's find out. So we'll say, now I'm getting an error. Connection refused for API.
I mean, okay, it's a little bit too late now, but, like, did you even have to build a server thing for this app? Like, you can just call the API from the client.
Yeah, you didn't have to. That was just how it wanted to do it. We could have just done this all in like one HTML file.
Yeah.
If we wanted to do it, like really, really simply. Got it.
Oh, is it installing dependencies again?
Well, I think we probably don't have these in or maybe. No, we should, but let's see. Okay, so yeah, we did have the API generated. Tweets is over here. I'm not sure what I was thinking, but yeah, I'm trying to get it to tell us that. Okay, so this is why it's only saying failed to generate tweets and connection refused, is it? We don't have like, very verbose errors here. So what you could do is when you get an error like that, you could go back into here and you could say, okay, I want like something more expressive of what the problem is that I can figure out where the issue is. But I'm just going to go ahead, kill that, open a new chat, and like you said, we know the error. It's that we don't have the API key. So we're going to go search anthropic API key. That's not right. Where is it?
I think it's some other. Yeah, there.
We go. All right, then we can just go to get API keys, we'll create a key, call this Peter Demo. Copy that. Nobody steal my API key, please. And then save it. And now make sure we don't have our server running. We shouldn't. We can go back to our terminal here and we can do NPM run dev. Okay. Should still be at that same local host 5173. Great. So we'll refresh this. I'll paste in that blog post again and we're still going to get failed to generate tweets. Okay, so what is the problem? Let's open it up, let's go to console. And it's saying connection refused again. Okay. So that's probably because we don't have it running. Right. So we have dev server and we have server. Yeah. So basically the server isn't running, which is what it was starting to say last time we chatted with it. So I'm going to open a new terminal and do NPM run server. Let's just see what happens if we do the command that it wanted us to run, which is this NPM run dev. All NPM run dev. Okay, cool. So we still get that issue. Let's just copy that.
Yeah.
See what it says.
What do you think the issue is right now is like it's not running a server or server has some problems.
It's a good question. Yeah, I mean, this is the clue here is like Unknown file extension ts. It probably needs to be TSX or it just wants us to use normal JavaScript. Like that could be the problem. But this is definitely. It's an error I've run into before and I don't totally understand it, but it's usually good at fixing it. So.
Okay.
But yeah, like you said, if we wanted to.
Yeah. I just want to say, like, just for the people who are new here, like, you shouldn't. You obviously should not paste your API key directly into your code. Right. Like that. The end file is, you know, it's like protected, right?
Yeah, yeah, yeah, yeah. The env file. Well, the nice thing about the env file is when you push your code up to GitHub, it's usually hidden by default. It's actually not listed here, which is odd. So, yeah, it's going to suggest adding env because, yeah, you don't want. You don't want your environment variables getting put on a public GitHub or being shared with anyone.
Yeah.
Okay, cool. Server is running on Port 301 and sites running on localhost 5173. So we can refresh that. We'll paste the blog post in again. Hit generate tweets. Okay. This is promising. Getting a generating response. So something's happening. See if there's any new errors in the console? Nothing. Okay. Server responded with A status of 500 internal service error. Server error. Okay, so we're getting JSON parse problems. Okay, that got the server running, but now when I try to send in a blog post to turn into tweets, the server gives me this error.
There it is. I see this issue again.
Yeah, yeah. This is one that I've run into as well with dealing with the API. Responses from the different AI. APIs often trip things up because they all come through formatted differently and sometimes you need to dump the whole thing without formatting it to see how it looks so that you can then direct the agent, like how to format the response. I should mention too that this is the fourth or the third unit in the course. We don't start with this level of complexity. We start like way simpler and build up to it because, yeah, like debugging some of these things is a little bit challenging. It could be intimidating for somebody, like just getting started. But it is also good to show that like, yeah, this isn't magic yet. You can't completely turn your brain off. Like you've gotta, you know, learn how to read this stuff a little bit, learn how to do some debugging. It's, you know, 20 times faster than programming used to be. But you do still have to figure out how to deal with these edge cases. So let's see. Hey.
Hey.
Okay, look at this.
It worked.
Yeah, it worked. Okay, we've got tweets. All right. Yeah, these are all really solid. Like, you know, they're pulling directly from the post. Yeah, and it's like, okay, cool. We like, you know, we got a basic version of it and now you get to do the fun part right? Now you get to start tweaking it so we can go to server. And instead of three to five, I'm going to say 10. And I'm just going to save that because I know that'll be fine. I'm going to open up a new window and I'm going to say I'm going to go back to app, sort of this main file and say this is successfully turning a blog post into tweets. Can you add a button to each tweet that I can click that opens a new Twitter window with that tweet pre filled so I can send it. And you can get a lot crazier with this where, you know, you save it to a database. You could set up scheduling through the Twitter API prefilled so I can send it and you can get a lot crazier with this in where, you know, you save it to a database. You could set up scheduling through the Twitter API. There's like a lot of cool ways you can expand this, but this alone is already decently useful because if you're ever looking for something to tweet, you just paste in a blog post, you get 10 ideas and you. There's like a lot of cool ways you can expand this, but this alone is already decently useful because if you're ever looking for something to tweet, you just paste in a blog post, you get 10 ideas and you quickly click and you tweet it.
And the part where you change the number from like 7 to 10 tweets, that's what the prompt is. Right. So if I want to, like, try something. Examples and stuff.
Yeah, yeah. So if we go back and we look at this, this is the prompt that's getting sent to Claude. Yeah, makes sense. You know, we can, we can tweak that however we want. The version that it wrote is pretty solid. So. Yeah, now look, we've got this tweak button and if I click it, there it is. Right?
Like one shot.
Yeah, yeah, yeah. It did a good job. And so you've got other ways you might want to format it. Maybe you want to add spaces, maybe you want to add emojis. You could do all that in the prompt too, but we've got a basic version of it working relatively quickly.
How does the tweet thing actually work? Is it calling some Twitter API?
No, it's a deceptively simple solution. It's just a URL formatting thing. So look at the URL.
Oh, I see.
It's just putting the whole thing into the URL that pre fills. This is just something you can do with Twitter where you don't need the API or anything. We would need the API if we wanted to automatically post the tweet. But if you just want to pre fill a tweet, all you've got to do is format the URL.
Yeah. So why don't we. Let's kind of just recap some guidelines for vibe coding. What would we say are your top five tips? Provide coding.
I mean, patience is definitely the biggest one. Like, you know, as, as you've seen.
It, just provide coding.
I mean, patience is definitely the biggest one. Like, you know, as, as you've seen it, just gotta have the patience to kind of like keep asking, be willing to, like, not know how some things are working and, you know, and recognizing too that the more you do it and the more you work through those problems, the better you'll get next time. Like, you are learning stuff by doing it. It's, you know, by paying attention, by seeing how problems get fixed. It gives you an intuition. And, you know, anybody listening probably heard both of us say at points, like, I know what this problem is because you've run into it before. So it. You really do. You have to not have the mindset that this is going to just work. I'm going to get to turn my brain off and have a website magically appear. Like, you're going to have to debug things and be willing to go figure stuff out, but you're going to get to do it 10 times faster than you would have a few years ago. So.
Yeah, yeah, totally agree. And like, you know, because, yeah, like, like you say we run into similar problems each time. So like, the next time, some. Sometimes I even tell cursor, like, hey, can you reflect? Like after it goes through this whole whole like, doom loop thing and then it finally figures it out, then I ask it, like, hey, tell me what you reflect on this journey and tell me what you would do differently next time. Yeah, and then I will copy whatever it says and then make sure the next time I do it, I paste that in.
Yeah, and we alluded to this at the beginning too. But there are ways you can structure it from the get go to help it. Like creating a little bit more rigorous of a plan using ChatGPT or Grok or Claude and then pasting that in into like the readme so that it has something to reference that can help keep it on track. Yeah, and you can create, like you said, cursor rules. And so those are like guidelines that it takes in with each prompt to try to follow to work the way that you want it to work.
Cool. All right, man, let's wrap up by like talking about your sci fi novel, because I know it's like, very exciting. I think it's called Hus Husk. Can you talk about. Maybe you can briefly talk about it?
Yeah, I, you know, so I wrote this book, Crypto Confidential that came out last year. Really, really fun journey that was like narrative nonfiction. And in the process of writing that, I realized just how much fun it was doing the storytelling side, learning how to tell an exciting story. And so when I was taking a break from it, I thought, okay, it might be fun to just try to write a novel and see how that goes. And ended up really, really loving it. Like, really enjoying the process having a ton of fun. And I want writing to be the main thing that I do. I mean, I want that to be my main work. And I've been chasing after that for a while. And I just honestly love doing the sci fi writing. So I kind of had this. This idea for. For a world of like. Well, if. If we did successfully transfer our minds into computers so that we could be immortal, live forever in this, like, digital paradise, there would need to be some people on the outside to make sure that the servers stayed running. That, like, nothing went wrong, there wasn't a big power failure or whatever. Right. So what does the world look like if almost all of humanity is living in this, like, digital paradise? And then you have this, like, quasi slave population on the outside who have to keep the servers running for everybody else. And that kind of laid the foundation for the world and the characters and the conflict. And so the book takes place 100 years in the future. Most of us have been wiped out by a plague, but we figured this transference protocol out and the remainder of humanity are living in these little, like, centers that are built around the massive servers where the rest of us live and.
Kind of sounds like the Matrix a little bit, right?
A little bit. Yeah, yeah, yeah. There's definitely some Matrix vibes in it, right. That, like, they're living in a matrix, like, digital world. The robots didn't take over, so it doesn't have that as the antagonist. And people know that they're in it. Right. They don't have an illusion that, like, they're in the real world. They know they're in a digital world, so there's no laws of gravity or anything. You know, it's unlimited freedom. But definitely some Matrix vibes. Definitely some, like, Ready Player One vibes. Or if you, if you ever played the game Fallout or watched the TV show, it has a little bit of that, like, post apocalyptic, you know, they're in vaults. Right. But that kind of like concentrated survivor aspect to it too.
That's awesome. Yeah. I mean, that. That kind of like, you know, it's 100 years in the future, but, like, you know, sometimes I think, like, hey, you know, you know, before I pass away, I should just like, upload all my writing and stuff into some AI and like, then my kids can still talk to me. Yeah.
I mean, certainly for us, there's going to be a way to do a version of that by the time we die, I imagine.
Yeah.
And that's going to, I don't know, be kind of weird too, right? Like, I, you know, it introduces these interesting questions of, like, you know, society does in some senses advance through death. And, you know, think about, like, how many people in the US are unhappy that we have senators in their 80s and 90s, like, still running the country? Right. Well, what if they could still be running it in 300 years? Right. Like, would that be a good thing? Right. I think you can argue both sides of that, but obviously death is sort of like the. The ultimate, you know, scary fear, like, unknown, and people will do almost anything to avoid it. Right, yeah. So it introduces a lot of, like, fun questions and it's. It's decently philosophical along with the, like, technological thriller pace to it. So I, I got to have a lot of fun with it. Got to incorporate things that I'd written about my blog for years, but in a much more exciting, like, narra setting than just, like, substack posts.
And just real quick, like, how did you work with AI to edit your novel? Or, like, yeah, what's the most value added?
Yeah, I mean, so for, like, for micro things, you know, for getting better at description or dialogue or, like, working at the paragraph level, Sonnet's feedback was excellent. It was really, really helpful for getting better at those pieces. And I could paste something in and say, how would you make this more detailed or more descriptive or stronger conflict or things like that? And it's never that good of a writer. I would never be pasting it back into my doc, but it would always have a couple of ideas that were quite good that I could be like, oh, yeah, I should do this here and this there. And so that was super helpful. And then as it was getting closer to being finished, ChatGPT Pro, like Pro Pro, the 200amonth option came online and I was like, oh, let's try this out. And so I signed up for it and I put the whole book into it. So all 100,000 words and said, like, you know, just give me your feedback. You're a professional editor at a major science fiction house. Like, how would you improve this book? And the thing that blew me away was it picked up on threads from the beginning of the book to the end of the book that weren't adequately resolved. So it pointed out a couple of, like, relationships and characters in particular, where it was like, you kind of set this thing up in the beginning and then never resolved it at the end. And, like, there needs to be some reconciliation there. And none of my other readers had pointed that out. And it was totally right. Like, that was. That was a problem, you know, and it picked up other smaller things. I was just really impressed by the stuff it noticed. And the best part is, you know, it's like, okay, it's not as good as a top tier editor at a major publishing house, but it's better than most beta readers who you might send it to. And it gives you the feedback in two minutes instead of a month. And that lets you iterate quite a bit quicker because you're not sitting around wondering what you need to do next. And so that's a really powerful tool for writers to have at their disposal, especially when you're working on a big project like a book.
Yeah, totally agree. And plus it's like available to give you feedback whenever you want, like that. That's also huge.
Yeah, and it's, you know, and it's a lot cheaper. Like 200amonth is a lot. But a good developmental editor is going to charge you 4 to $7,000. So 200 starts to look like a really good deal. You know, most people can't afford to spend four to seven grand on a self pub book, you know, just on the editing. Right. They can't afford to invest that much. And so if you can have an editor who's like 85% as good as somebody who charges that much for a twentieth of the price, like that's awesome. That's really remarkable.
Yeah, it's kind of scary for human editors, but yeah, it's great that we have this tech in our hands.
I, yeah, I mean I do think that these AI tools are going to like wipe out 80% of a lot of creative markets, you know. Yeah, like a lot of businesses aren't going to need to hire copywriters anymore. A lot of writers aren't going to need as many editors anymore. But the people who are good at it are going to be five to 10 times as productive because they can augment their workflow using these tools. And it'll at end the, it'll be interesting to see how that shakes out. I suspect we'll actually have a lot more people making things, you know, kind of like what we do now. Like the fact that you and I are doing this on a Friday afternoon and not farming is like pretty awesome, you know, and we can only do that because of these compounded years of productivity gains from all of these tools. And but we might have like a hyper compounding of productivity gains in the next decade. And so where does that, where does the now surplus labor go? Right? Are we all like life coaches and only fans models I don't know, but it's going to be interesting to see it shake out.
I mean, I think the people who are constantly exploring using AI to solve their problems and get more productive are probably going to replace the people who are not using this stuff. Right? That's going to happen.
I mean, the big differentiator, I think, is going to be that if you are somebody who wakes up and makes things that you want to see in the world or that you want to change or that you want to do, your job is safe. If you're somebody who wakes up and gets told what to do, then your job is going to be at more risk because anybody who is predominantly receiving instructions is just naturally going to be at a higher risk of being replaced by an AI tool as they get better and better.
That's a really good way of putting it, man. I didn't think about it that way. That's a really good way to. Yeah, I think that's a really good way to wrap up this conversation. But before I do, where can people find your vibe coding course and also buy your book?
Yeah, so the course is buildyourownapps.com or buildyourownapps AI, whichever you prefer. And course is really fun. It's helped a lot of people get started with this. It starts way simpler than where we did in this recording. It kind of builds up your knowledge from there, helps you work through issues. And the community is good too. So a lot of people sharing what's working for them, how they got through problems. And then for Husk, it's just@huskbook.com that'll take you straight to my Shopify store where I'm doing the pre orders. And that gets you a signed hardcover plus the audiobook and the Kindle for the price of a normal hardcover when it comes out on May 27th. If you're listening to this, after May 27th, it's on Amazon. Just go to Amazon and search Husk Book and you'll find it and you can get it there.
All right, Nat. Well, I mean, thanks for coming on the podcast again. I mean, you are my role model for deciding what you want to do as being told what you want to do.
Thanks, man. Yeah, thanks so much, Peter. It's a lot of fun.
More from Peter

Dropbox VP's Best AI Workflows to Help You Take Back Time at Work | Morgan Brown

Canva Co-Founder: The AI Playbook Behind the World's Most Popular Design Tool | Cameron Adams

How OpenAI's Head of Business Products Uses ChatGPT to Save Time at Work | Nate Gonzalez

Complete Vibe Coding Tutorial: Build a Full Stack App in 30 Min with AI | Matt Palmer (Replit)

Complete AI Course (2025): Prompting, Evals, RAG & Fine-Tuning | Adam Loving (Meta)





