Coding with Cursor: Session 1 ft. @shpigford

Sahil Lavingia and shpigford build a picture-hanging calculator using Cursor, an AI coding assistant that generates most of the Ruby on Rails and JavaScript code. They show how Cursor's context-aware indexing and custom rules cut development time and senior-engineer hours, and discuss how AI is reshaping smaller engineering teams and the role of product managers.
Chapters
become an integral part of, of coding. Um, but very quickly it became like my— the only way that I develop anything.
Got it.
That's crazy.
Yeah. And so what was this game? What was the functionality of the game? How many prompts? Like, how long was that, you know, shipping process like?
It was— I mean, I think I had from having the idea for the game to, um, getting it on like TestFlight was 2 days or something. And like zero iOS experience, none whatsoever. Um, so like it was like I had to download Xcode as part of like that. That was like the first thing that it told me to do. So, um, it was very thorough. Um, you know, and I, you know, interestingly, I, I have found that GPT has gotten worse, over since then as far as directing, uh, or giving sort of code advice or generating code for me.
But yeah, it feels like ChatGPT has really taken over that company in terms of just the revenue. And so my guess is that they're just spending so much effort on— and all of their evals will be directed towards this sort of very consumer use case, uh, But I find that Claude and this sort of new set of tools that have come out have just like really dramatically expanded that. So before we get into Toolstash, like if you were to rebuild that same exact iOS app today, you know, you wouldn't have had to, you wouldn't need to download Xcode, but you'd also potentially be using other software. Xcode doesn't yet do all the crazy stuff that Cursor does. So maybe it's not identical, but if it were to be able to do that, like sort of how much faster even compared to then. Do you think you'll be able to get something done now?
So I do think I have a— there's a comparison here where, you know, we'll get into Toolstash here, but I built a Toolstash iOS app like 2 weeks ago using Cursor. And so, you know, I obviously was more comfortable with Xcode, but it was— I still don't know what I'm doing. As far as SwiftUI code really goes. I mean, I can kind of, you know, bludgeon my way through.
Yeah.
But, um, it wrote the vast majority of the code. So, um, yeah, yeah, it, it, I don't know, it works great for that. It's a little bit of a hassle to switch back and forth, but it works.
Yeah, I mean, I feel like it's gonna be a similar speed up to when, you know, people are like, oh well, what's the big deal? You can just, with Cursor, you can just switch, you know, you can just copy paste from, right, you know, ChatGPT, uh, and/or Claude or any other tool but I don't think people realize like copy pasting is slow. Like that's like—
and still, and we'll get, we'll get into this, but like the context stuff is, is the game-changing part of Cursor. Like, and I don't think people who have haven't tried that yet really fully comprehend how, how much different that makes it than—
yeah, I mean, just like any new technology, you think you know it by someone explaining it to you, but until you actually go through the experience of messing around and having it edit 6 files at the same time perfectly and realizing like, wow, that was like 6 hours of engineering time. God. That just was like 30 seconds.
Yeah.
And I feel it at Gumroad because we pay everybody hourly, so I can literally do the math over and over again. So for example, we pay a senior engineer $200 an hour. If I can save 1 hour of even just, let's say it takes me the same amount of time now to build something as to communicate what it is to build. And it takes all of that extra time then is basically cost that doesn't necessarily need to exist. If I can just basically tell Cursor the exact same thing that I put in Notion currently, for the engineer to then take and ship. And if I can just cut that out, you know, it's like 6 hours of $200 an hour, right? That's a lot of money.
It's funny, like, um, so you're aware, Sahil, of Maybe, um, but so for everybody else, I run a, um, personal finance company called Maybe, uh, really long story of like its trajectory. However, so we, when I first started the company, in 2021, I guess. Um, this is pre-AI as far as coding goes, and we had, uh, as far as development goes, um, 3 engineers full-time building that. That ended up— we shut it down middle of last year, um, and then relaunched it in January. But like, now we've relaunched it and like AI is a coding tool is now an option. So, so now the team has one engineer and is more than capable of pulling off the amount of work that the previous team of three, um, was doing. So like, that's, you know, it's a sort of perfect case in point of like, it— we don't— we need it— we need much smaller teams to pull off, um, similar amounts of work, I guess.
Yeah, 100%. So yeah, do you want to show us, uh, yeah, cool stash and maybe try building something and see how design and build, I guess, at the same time, which is also kind of a new thing I think that this will unlock for people.
Do you— let's see, I'm trying to share my screen.
Oh yeah, let me— do I have to enable this?
Says I'm not allowed to, to share it. Oh great, do I have to like log back in?
Oh great, yeah, let's see. I don't feel like I should be able to promote you. I love just doing stuff and then seeing all the things that don't make sense and have to fix. It's annoying. Yeah, maybe I can't. Only I can see the wrong video settings, call settings. Oops, sorry, give me a second. See if I can— oh, that's what I get for trying to use Google Meet instead of something else. But if I invite you manually, let me try inviting you manually, see if that triggers something nice. Could you DM me your email really quickly? Yeah. Oh yeah, see if I can invite you. Maybe that will work. Nope, you're already here. So you're already here. What do you— how does this work? Pin to the screen. I can share my screen, but you can't share yours. Why? I guess in a, in a standard meeting, it would normally just work, right? You'd be able to No one, no one has ever asked me for this permission before. I don't know if this is how to, uh, someone screen share on Google Meet. Okay, in the meeting, tap the screen menu and then host controls. Where the fuck is host controls?
I just accepted your invite to do something.
Oh, I found it! Oh yes, great. So now you can, uh, you can try.
There we go, there we go.
Uh, all right. Let's see, it's this. And you should be able to do that. And hopefully it works. If anyone has questions, I also just enabled chat. I did not have that enabled. So can— Awesome, I can see your screen.
Okay, I'm gonna, um, I'll leave the chat window open so if people have, uh, questions.
I can also interrupt and just—
Yes, please, if you keep an eye on the chat.
Yeah, I'm happy to do that. Okay, so yeah, someone asked, are we talking about Cursor Pro or Free? It works with Free, but Pro— yeah, you want to elaborate on that?
Yeah, so I happen to have Pro, um, for two reasons. One, I want to give Cursor money so that they keep existing. So there's that. And then the other side of it is I, I believe I would use far more than, say, $20 a month of my own API credits if I like added my own GPT keys or whatever it is. So The $20, like, I would blow through that pretty quickly. So, um, all right, I've got some notes on my end just to make sure that I cover all the points here. Um, so a couple things in Cursor that, um, I think are important to mention that I will— I may reference here throughout the thing. Um, it's important to, uh, make sure that code in that codebase indexing. I find myself having to resync a decent amount if I'm doing lots of code changes. So that's important because all the chat uses your codebase's index for context.
So— Could you up the font size a little bit? Oh, sure. 3 or 4 times. Perfect. Awesome.
Great. So just, you know, that right there, especially if you've edited a bunch of files in sort of short succession, um, resyncing index can kind of fix some things where sometimes it will try to tell you code that you've already changed. It will try to use that and its answer again. So resyncing fixes a lot of things. Other thing is cursor rules. Um, this is a relatively new cursor thing where— and this is in settings— where you can tell it to basically read your cursor rules file and, um So I have this set of cursor rules that it basically gets applied every time I'm running anything and it sort of helps with the way that cursor responds. I forget, there were a few different people who I saw different sources for this thing and I've tweaked it some myself, but I can code— there's a gist I can post with this stuff if you're interested. Um, let's see, other thing are models. Um, I really only use Claude's stuff, but I, I leave the GPT-4 stuff an option just sometimes if I want to see if there's a better answer. But really, I'm, I'm using Claude 3.5 99% of the time.
Yeah, I mean, I'm 100% Claude 3.5 on this as well. Yeah.
Um, OK, so let's jump into building something here. So these mini tools are these sort of self-contained little, you know, whatever. And it generates all these different numbers. And this is the kind of thing that like it doesn't— it's self-contained, but it matters here. Context will be important because I can reference these mini tools as I'm building a new mini tool so that it copies or uses these sort of same UX conventions, um, and even some of the same code as it's building an additional mini tool. And so, um, like the idea I had last night was like I was hanging— my wife wanted me to hang these 4 frames on this small wall, and I needed to know— there's square frames, but I needed to sort of evenly space them within the wall. And they've each got like a center point to hang on. So I'm trying to figure out like where do I need the, the hole for each of these 4 pictures. So the idea here and what I'm going to attempt to build here using, uh, Cursor is basically like a picture hanging calculator to tell me where to put the screws or the nails or whatever as I'm hanging stuff. So we'll jump into that.
And that would take me just like with the, let's say a year ago tech stack, you know, it would take me and I would go into Notion. I would spend like an hour, like scoping it out basically, you know? So that's like an hour scoping it out. Then I would like pass that off to a designer. They would probably do something in a few hours. So that's 3 or 4 hours. Then, you know, we'd pass it off. We'd go back into Notion another hour, like reformatting it to kind of incorporate all the Figma decisions we made. Maybe the engineer jumps in and asks some questions and maybe our design system has to be updated or doesn't support a component. So that's another few hours. And then the engineer has to actually build it, which might only take them like 3 hours, but still, you know, 3 hours is 3 hours. And then, so like, I would say that would take at least 10 hours of an organization's time to ship like a year ago without sort of AI involved, just like, you know, VS Code and sort of CSS, HTML. Ruby, whatever, whatever the tech stack of the time is. So like compare that to what's about to happen, right?
Exactly. And, and this is important here, um, you mentioned sort of UI stuff. Um, I find that using Tailwind, um, is the perfect thing for AI because it's so like— there's a— this direct correlation between sort of the design system and the code that it needs to generate. Like it just can grab these code pieces and not have to go check some CSS file. Like, it knows everything in place and can—
I want to know, I want to know, I want to ask people in the chat, how many people are pro versus anti? Just like chime in your thoughts on Tailwind. It's a kind of contentious topic. I will also chime in on my thoughts in a bit, but I want to hear what people think.
Yeah, so I, and I was, you know, I was— I come like, like you, Sahil Lavingia, like early I've been around on the internet for freaking decades. And like, so it was before even like, um, Sass, SCSS existed, like early HTML tables days, whatever. And so kind of had this feeling of needing to use, you know, like tried and true stuff. But man, the Tailwind stuff, like it just works so well for this kind of thing.
Either way. Wow. Is anyone who— I'm, I'm curious. Is anyone anti-Tailwind? Because literally every single person is pro so far. So I want people— I mean, given how contentious of a topic it sometimes is on Twitter, and I will then— so basically no, it seems like. So I'll go through what I think is happening. Okay, we got an anti. Om, do you want to chime in with why you're anti? Sure. Completely. Yeah. Awesome. Yeah. I mean, maybe it's just my bias as a designer, but, uh, I think it feels like WordPress, like it's great for a lot of things until it's not. So I may be in the bleeding edge case where I'm like, I want control over things and it's just more work to then do it the Tailwind way. Awesome. Daniel, do you wanna comment as well on your thoughts on that? Um, Well, he basically said building something with extremely fine-grained interactions, you know, you want a sort of a blank state. So I basically up until like 5 days ago was like super anti-Tailwind. I like having a design system. I love clean code. I love HTML, you know, H1, header, nav, all that kind of stuff. Unfortunately, that's wrong. It's just the wrong approach. And it is wrong. I think it's what's happening now is basically we're upgrading. I think the way to think about Tailwind is it's just replacing CSS. It's creating, and it will be basically, I think it will be in every browser natively, but basically the way HTML and CSS currently works, right? Is you have HTML, and then you have all these tags, and then you have the CSS file that says how these tags are actually displayed and styled. Uh, the issue— and that made a lot of sense when we're building brochure websites where you like want to do these like big whatever systemic sort of things— but now we live in a world of React components and just general components at, at any— always. And so anytime you need to deduplicate you can just use the component. And then the other thing, and this is like reason in the last 5 days I've changed my mind on this, is because you don't have to write it. If I were to write the Tailwind, or frankly read the Tailwind, it sucks. I hate— the reason I like h1 is because it's short. I don't like div class h1 because it's long. I still prefer the h1, and with Tailwind, because of the class thing, you can actually still use h1. So there's basically no downside on an accessibility whatever, nice rigorous thing. But the reason is Cursor and AI. The reason is there's two, and this is two, two things, uh, and then we'll go back to Josh. Sorry for hijacking it for a bit, but basically one, AI already knows Tailwind. So anytime you have your own design system, you have to tell the AI what it is, right? And so Gumroad has a fucking amazing design system, but the problem is it's 8,000 lines of CSS. And there's no way around that because the whole point of CSS is cascading style sheets. So Effectively, the whole point is to try to like make the whole thing systemic. The problem is systemic means you have to load the entire thing. For example, if you're a designer, you join Gumroad right now, you have to learn 7,000 lines of CSS to make a change, right? Which also means any AI has to learn 7,000 lines of CSS to make a change. However, if you use Helper, helper.ai is one of our new products, and I decided let's try Tailwind on this new thing. I know it's kind of weird and ugly. This is about a year ago, but you know, it takes some time to write or whatever, but you can jot down some plugins or hide it or whatever. Like it's still worth doing basically because we want to move super fucking fast. We understand it. We lose this consistency of a design system or whatever. But the truth is you don't really lose the design system consistency because the other thing that's happened in the last 6 months is like all these Figma, Figma Make designs and Figma design systems. So the truth is if everything's in Tailwind, It takes— all you gotta do is copy paste the new design into Cursor and say, update this to look like this. And you're done. Right. Literally you're done. So like there's zero time spent, like in my view now, I, and this is the point of technology, new technology, you have to revisit your, your art priors and biases. Cause we just have to admit that basically Tailwind is just part of the browser. It's just like using anything that border radius, border radius was not once part of CSS. Now it is right. And before that we had to like have 9 images to like make a rounded button on a navigation. But the fact that I can— basically any bug, any visual bug can now be fixed by the designer or me. And this is part of this class. It's like the CEO of a company or anyone in the company knows English, right? It's a requirement to like learn English, know English, like work at the business. We kind of expect that from everybody. What that means is as long as you know where to go in the code base, you can just select all, hit edit, and then type the change you want to make. And the change will be made. And I, for example, have written hundreds of lines of Tailwind at this point in the last few days. I still don't know Tailwind. I've never visited the Tailwind docs. I never will. I never will. It's irrelevant. It's like, why would I learn binary? I never learned binary to build web applications. I never learned Assembly. I never learned— I learned a bit of C#. You know, it is useful to— again, if you want to go, you can go, like, go just view HTML. It's not that complicated. CSS, not that complicated. Learn display flex, like, learn these things if you want. They can help you pull off certain things. But all Tailwind does is basically take the design system, put it inline, and then that's it. I mean, it's, it's, it's, it's kind of like jQuery. It is as awesome as kind of jQuery is in terms of like how fast you can move if you're willing to just inline some stuff. And we're basically back there again where like, I remember back in the day you could ship super fast with Ruby on Rails in the backend, and then you could just like jQuery your way to some cool interactions. That stopped working with React and all the sort of complexity people started demanding. And design systems, all these things. But basically we're getting back there and Tailwind is one of the ways that that's happening. So I used to be anti-Tailwind as well, but unfortunately it's— or not even unfortunately, actually it's a great thing. And by the way, you just have an IDE that hides all the Tailwind classes. And this is to me the best situation because the designer can work only looking at what they care about, which is the presentational elements of the thing. And then the engineers can actually just do HTML. They don't even have to have classes. They can literally just style it the way that, you know, they would traditionally do it. And then, you know, the designer just comes in and just like updates it to match the design system in Figma. And at some point, a lot of this stuff will be automated with Code Connect and stuff anyway. So it's gonna be sick.
I agree with everything you just said. Um, uh, yes. And I, and I hope to like actually make the point there about how Tailwind makes this really easy. Um, okay, shall we jump in?
Let's do it.
Something here. Okay. Um, so for those not aware, this is a Rails app. It doesn't really matter if you know Rails or Ruby or not, um, but that's what we're using. That's what happened to be building this again. Um, so the first thing I typically do is try to add context. Now I think there's probably some debate between people about if you should just always do chat with codebase where you're just dump the whole thing into the context, always care about all of that. I have found the responses are better if I don't let it just suck in the entire codebase unless I need some like more high-level thinking on this stuff.
But I know generally— you, uh, increase your response size a few times more if that works. Yeah, perfect.
Okay, I might have to—
I'm just— this is a handicap for you, I know. Yeah, yeah, tiny little work.
Okay, whatever, it's fine. Um, let's see here.
Okay, I mean, arguably, why do you even need to look at the code at one point? I have some thoughts on this, but that's fair, that's fair actually.
Um, yeah, well, actually, that's a good point for now at least. Um, so either way, so what I like to do, especially when I'm doing something specific like adding a tool or adding a feature to something that already exists, um, is giving it context. So I know that this is related to these calculators that I've already built. Same with the controllers. What I'll do is go in and start telling it really just look at these specific things. I care about, let's see, calculators controller. I care about the JavaScript. So it's— there's a bunch of JavaScript. I care about that. Um, those are important. This set of tools right here is important. Uh, see, so we'll do folders, views, calculators. Um, I think that's probably all I care about on that. Now what I'll also do is switch here and we're going to search for some picture hanging calculator to use this as some— What I can do then is say use that for context. I don't know what inputs I think would be useful here because I've never built one of these before. Um, let's grab that. Maybe one more. Let's—
let's not load and we'll go to this one.
Okay, I don't know, we'll see if that does us any, any good there. Um, so we'll add that one. So now What I'll do is start telling it, explaining what it is that I'm wanting to build. So I'm adding a new mini tool calculator to the site, uh, picture hanging calculator to help you properly And this, sorry, this is like a paragraph of text that I'll end up writing here.
This is great. I mean, this is, I think the, you know, maybe I'll even keep typing or I don't know if I can talk while you type, it might be tough. But I think just to talk to the people watching this, like this is kind of what the PM at a company does, right? Like you're basically, if you had a team building this stuff, you would tell a designer, engineer, you kind of set as, you know, you do the same thing, like provide them URLs of how other people have done it, you know, said, hey, on this website they do it this, this is kind of nice over here, on this website it's kind of cool over here. You wouldn't probably tell the engineer like the, you know, Calculator's controller, but that, that they would kind of know, right? Like think about like that's the value the engineer is currently bringing so far is just knowing which files, right? It's not, you can kind of guess like files with calculators in the, in the name. So yeah, to people asking in the chat, the sign is a Cursor feature. Basically, you can import into— import things into Cursor and into the context window, basically. Really super or simply just by having an ad sign.
So, um, here, like, I don't know what it is, like, how— what— I don't know what the proper way is to try to generate a visual for this thing. So, like, I find lobbing out some ideas can be helpful to the AI. I don't know that it all— I'm, I'm, uh, humanizing it too much, but, like, um, I do find that if I'm like, suggest some or at least conveying like, maybe it's one of these, I don't know. I find that I get kind of better responses.
Yeah, and it's, it's cool that you said specs, right? Because this is kind of how PMs, you know, part of what they do is provide specs, the user stories, stories and specs, right? And so that's what you're doing, you're just providing the constraints basically of what you know, you're trying to build. And maybe a button to, I don't know, inputs. I guess the refresh can be in real time.
Well, yes, I can go back and I've already told it to go like it has the context of the existing calculators as a sort of design spec.
Yeah, you can. I guess you're not saying explicitly like make it similar to those like make it like that.
But okay, I'm gonna generate this and we'll see what happens. Um, let's see. Oh, I know, let's see. So this has happened before when I'm building these tools. A lot of times the tools have an article underneath them for SEO purposes. So like, I'm going to tell it to not write that article. Um, Sometimes, at least in Rails, it wants to like create new controllers for everything, so sometimes I have to be explicit, um, on that. Okay, let's hit chat and just see what happens. So it's reading all the files that I've told it to read, as well as those websites I mentioned. Uh, let's see, I'm gonna try to fit all this in there. Um, and we'll jump into— so some of this stuff is actually— there's a It's messed up.
Like a weird bug.
Yeah. Yeah. So we'll actually— I'm gonna stop it and restart it because that'll drive me crazy.
Maybe you can do chat with codebase. Sometimes I find that that's better, like the Apple Plus.
Oh, okay.
But yeah, we'll see if this works. It's interesting. Why is it doing that?
Yeah, we'll come back to that. Um, okay, so you can see here, and like talking about Tailwind, like it's, you know, these are obviously all Tailwind classes, so it's grabbing these. These are existing helpers that I have, uh, like custom helpers that it knows about because it examined the previous calculators, so it's keeping that context. Um, here it's writing the JavaScript, uh, to pull that off.
Hold on.
Still writing. Then it knows to add the new calculator to the index view. That's like a weird bug thing too. Let me first do this view here and then we'll come back to the controller bit that it messed up on.
We'll call this, um, Picture Any—
uh, what else— the controller. So sorry, this is a little crammed on the screen here, but Controller.js. That's what this is.
Oh, you made it a folder. I made it.
I could type it again.
Soon AI will just know that and have created a file for you anyway. That's right. Really? Did you mean to create— make it this way?
Yeah, you idiot.
Tab to fix. Okay.
We'll come back to that. What else? This is the index. Good grief. That goes there. I'm curious. It didn't give me the code here, like that's a bug. But I'm wondering what— maybe reply and just say, hey, well, so I just hit apply and it, and it sort of— that's not, uh, I didn't know the con— let's see here, that's trying to do either way. Well, okay, so there it autocompletes it instead. That works.
Um, I think about how little typing just happened, right? There's lots of— almost no code. Even that was a tab.
Um, it's attempting to like— so there's a feature here with these calculators where for SEO purposes I can like pre-generate, basically can pass in dimensions for things via the URL, um, which is like what you see in all these. And it's trying to go ahead and give that same feature here. I'll let it do that and we'll come back to that after we see how this is working. This is all the code that it has generated. In theory, I'm going to swap back and this is going to magically work. It does not. Let's see.
Do you have to restart your Rails server with a new route?
No, I think I know. Let's see, uh, let's—
calculator. Well, let's see here.
What did I do wrong? Well, I don't know, let's restart. It shouldn't need to be restarted.
You shouldn't need to.
Yeah, there we go.
Okay, the human.
There we go.
The human fix. Thank God.
That's right.
Yeah, I literally— it's funny because IT Crowd, if you've ever seen it, all they do is they, they do customer support. It's a TV show, and they all they do is tell people to turn it off and on again. Have you tried turning it off and on again? And then they just— the person on the other end just hangs up because they fix that problem every time.
Okay, I have no idea what this is going to do. Um, we'll say the wall is 45 inches, and then, uh, height, I don't know.
And the thing about it, you didn't have to like CSS. It's perfect. It's basically matching your design system like as a perfect designer would. Height, we'll say— Japanese flag has been designed.
There's picture frames. The first one, we'll say there's, we'll say there's 16 inches.
Oh my God.
Um, okay. So this is progress. I don't, uh, I don't know. Let's see.
The wall dimensions.
So frame 1 position 4.3 inches from the left, 64. Let's see what happens if we— okay, let's figure out.
All right, you just decide to do that hanger type.
Oh no, I told it to like keep that in mind. Okay, so we need to— okay, like, so first thing we're going to do here, this is somewhat progress here, but like I can't remove the picture frame, right? Like, so we need it to— whether this is right or not, I'm indifferent on it at this moment, but I need to remove a picture, a picture frame.
So now you gotta loop in your designer again.
That's right. Um, okay, so add. So okay, here's a— here's an instance where I would like go back in and resync. So like it's having to— it didn't have the context of those code changes or additions yet. So if I wouldn't follow it up, it would potentially try to re-add the same code from the conversation instead of keeping in mind the content— the context of the indexed code. So like that's why I'll go in and redo the indexing, um, though it usually doesn't take.
And did you use— ever use GitHub Copilot? A couple people have asked, like, GitHub Copilot.
Yes, and I found that it was great for like the inline stuff, like adding something right here, like it would autocomplete pretty good. But now Cursor's spot on for it. So no, I don't, I don't have— I don't use Copilot at all.
Anymore. Yeah, I just canceled our GitHub subscription to Copilot last week.
Yeah. Okay, so add ability to remove a frame. So I'm gonna add it all. I'm leaving the same context that I've already established.
This is interesting because— so let me— this is how I would do it. This is the difference is what I would do is I would Apple select the whole file, hit Apple K to do edit, and then type in ability to remove frame. Why? How come do you prefer chat versus that? Or like, how would you—
well, so I don't do that because I know that it will require multiple files. So I know that it's going to—
have you tried, have you tried multi-file edit? Oh, you want to try it on screen? You want to try that? Sure. It's Apple I, I think.
Yeah, yeah.
All right, let's see.
So like here you can see that I've tried this on a different—
okay, yeah.
Um, oops. Okay, so do you have to add context on both?
Yeah, so what you do is you had a— you do, uh, yeah, you can do that or just hash.
Do the same thing.
This is something you can't do with Copilot right now.
Like, I've gotten my flow down so well with the sidebar chat that like the multi-file editing stuff. Like, I just got comfortable enough with it, but we'll see. So it's already done. Yeah, it's already added that. Okay, so we'll just accept all and see what happens.
Okay, so now we've added, uh, the nice thing is, you know, if you're confident at least in it, you didn't have to apply, hit any buttons. You can just Or just one button to apply that.
Yeah, and I can, I could go back in and say like add the as a icon in line with the inputs or something like that. Like I can make design decisions if I cared to at this point, but I don't. Um, okay, so, um, I want to, let's see. I don't feel like it's like accounting for the actual wall size, like dimensions of the wall, or showing the spacing between the frames.
So yeah, I expect to kind of have it within the context of like another like rectangle that specifies the wall.
Show the frames within the context. Well, let's see, let's add show measurements between the edges of the frames and the walls. Well, we'll see what happens there. And we're like pretty much exclusively working within these two files now. So like, that's fine from a context perspective.
And now like— the best of no-code, right? Which is like, it's code without you having to write the code.
Right. And also like, I would say it's being very wordy, um, in part because of those cursor rules that I have. Like, I'm having it explain it to me because, like, in theory I care. Um, I could, I could tell it to not— like, you don't have to give me any kind of explanation. But I mean, there's some argument to be made that because it's a large language model, if it can free— like, if it writes out what it needs to do, it will tend to do— it will tend to execute it better. If it's already had to sort of write out the game plan to begin with. But, you know, lots of people debate that. Um, okay, we just accepted all that. Uh, we'll see. Okay, let's see. This is, well, at least some kind of progress. So let's say that the wall's bigger. So I don't know. So it's, you know, it's saying that this should be 64 inches from the top. So it's vertically centering it pretty well, I would say. And then I don't know if we're just missing some dots here or something. But so it would say it's 100. I'm guessing— I don't know what this number is. So I do— so I would say like from a functionality perspective, it's correctly, you know, telling me to— from the height of the ceiling, that'd be great. And I'm guessing it's— these lines are just overlapping, um, for the widths.
But, um, have you tried removing a frame? Does it— does that work, that feature?
Yeah, um, okay, so we're gonna try, we're gonna try, we're gonna switch to our old pal GPT for a solution for here to try something out. Okay, so we're gonna take a picture of this. Hold on, um, I'm gonna get rid of this. Okay, so what, um, what's nice Oh wait, does, does Claude 3.5 have visuals?
It does, dude, it does images. Yeah, yeah.
Okay, well then we will not use GPT-4. Um, okay, so oops, here's what we're gonna do. Um, real quick, I'm gonna go back to our context just to be nice. Okay, the Horizontal measurement lines visuals are overlapping. They should not. Only show measurements between spaces. I'll see what that does. Actually, I have no idea if it's even actually outputting an SVG. I don't— I assumed it was.
SVG is crazy if it decides—
well, it's— I mean, this is SVG right here. I don't know if that's— yeah, that's exactly what it is. Okay, um, so we're gonna hit apply. It, you know, instantly goes and makes that change. Let's see.
I think about wrapping your head around the changes, like even knowing like, oh, which number changed, and like the comma and the, you know, like all this stuff.
Yeah, look at that. Let's see.
Maybe. Amazing. I mean, that is incredible. SVG is also kind of a bit like Tailwind-ish, which is— it's fine. It has rules too, like It has properties that make it like, you know, imagine typing an SVG to generate an image would be, and how many docs you'd have to check because of the syntax. But if the AI knows the syntax and you're just using natural language, all of a sudden SVG makes a comeback, right? Like, it's the best way to, you know, like, like the FlexStyle logo is like 4, 5 boxes. It should be an SVG and that SVG should, you know, it is because we generate from Figma, but just like design. The whole thing should just be Matt, basically.
So, so what I'm going to do, like, we're gonna, you know, we could sit here and noodle on this for like quite literally days if we wanted to. However, um, in the interest of like keeping this a little more interesting, I'm going to have it instead of this tell it to, um, like create, uh, step-by-step instructions for hanging these and like measuring them. And see if, um, you know, that if it's able to do that kind of okay.
Um, all right. Photo.
Okay, so I find, um, so in this case I said like DIY homeowner. So I— my sort of hypothesis is that the text that it will generate will tend to be a little bit more, in this case, friendly to someone who's like not super up to speed on like dividing fractions and like using various tools. Like it assumes I don't know as much, which is fine. Um, I don't need that or that for now.
Okay.
So here it's, you know, you can see it's going to generate some stuff for us.
I love it. I love that. All right.
So So that does give us step by step and like, and what measurements to make, in this case from the left edge of the wall. Um, and it knows, yes, for each frame. Um, I still, I don't know if this works that well. Okay, well yeah, it does. It updates the, uh, assuming like you have two little hangers on the edges of the frame, it does, it counts for that too.
You can even have, if you wanted to, like a, you know, who are you, and you could say contractor and general contractor versus like never done this before, experience level. And then completely— I mean, imagine a restaurant menu and you have a toggle and say I'm vegan, and then the entire website menu is now for you. I mean, that is so trivial to do. Oh, I mean, yes, you know, all you do is you add some classes, vegan, and you hide them.
Look, to your point, hold on, we're gonna actually do that real quick. Um, let's see, create 3 different personas for who is hanging the pictures. Say personas equals skill levels. Make the output of the instructions match that of the personas. Uh, it should be drop down selectors. We'll see if, we'll see if this works. Okay, so we can go ahead and apply that. And then there was this— an HTML file. Okay, so OK, so now if we— so, you know, like, I have no idea if that's right, but like, you know, it at least changes like—
Yeah, I mean, honestly, I mean, this is a little bit contrived, right? I think maybe a slightly better example would be, hey, like, do you speak Spanish?
Changing the language of it.
Absolutely.
And so, like, like, what, um, on these other calculators, for instance, swapping between US and metric. Like, that was— I built the whole thing, and then, like, somebody was like, uh, you know, like, not everybody uses gallons or, you know, measures things in feet and inches. So then, like, adding this US metric toggle switch was a 10-second addition to it, you know? Yeah. So, okay, what else? I mean, I, you know, like, I think there's a lot more UI stuff to make this a little bit more user-friendly, but what else do we—
I mean, the crazy thing is I feel like, you know, but what's starting to happen is like, you know, let's say this would have taken like, you know, 2 days of work or something like that, right? Like, all— as I mentioned, like, we went through it, it would have taken And honestly, I was thinking of a less scope. We've already surpassed the scope that would have taken 6 hours. Because the thing is, constantly you're compromising on the design, honestly. You're constantly compromising on design because you want a design system, you want HTML to be perfect, you want the CSS to be perfect. At Gumroad, we're constantly compromising because we're not— it's like, for example, doing the Frame 1, and it would be like a table. It would be anything sort of engineering mindset of everything has to be in a table or a list or something. Something like this. But now you can just go in. And so I still think people should work, you know, spend the time you would have spent or half of it or 1 hour at least, right? It hasn't even been an hour. It's been 20, 30 minutes and we like, we've done all this. So that's already a 12x speed increase. And yeah, the fact that you're talking and teaching along the way, you're streaming, right? Like this could have been 10, 5 minutes if you were just by yourself. And then I think it's about upping the quality of the thing you end up shipping. Because if you're like, I did this in 20 minutes, like, hey, let's spend another 30 minutes. Like, you can remove frame, put a trash icon in it, put on the right of height. Like, that MVP quality is just through the roof, you know.
Uh, well, and I mean, I, you know, you could do things like, let's make this, uh, drag and drop, or like, visually, let me just, you know, drag the corners of the frames to resize them, or like There's lots of different ways you could make this thing more interactive. And I think not having to be so set at the beginning because, oh, there's a designer that has to design the thing and then the engineer needs to know what the designer has designed and then implements the design and then you end up with this whole like feedback loop. You just go in, like build something really quick and now I can quickly iterate on that in the functionality of it instead of having to, you know, go through rounds and rounds and rounds to tweak the thing. I do all the tweaking myself.
One, one question, um, and then maybe you have to run for puppy training, which is something you can now do because AI does all the hardware for you, right? Uh, and, uh, yeah, so would you— do you think over time you'll— like, do you believe in a more incremental approach to building it, and you still sort of think, okay, it's still going to be sort of MVP, and then iterative prompts to kind of improve it? Or do you think you, you spend like an hour really trying to nail the spec and then—
I, I think, um, especially in the— so I think there's the context here, right? So when I'm, I'm the one guy working on Toolstash, but like with Maybe, that's, you know, we do have a designer, we have an engineer, we have me who's just sort of product managing or whatever, but also doing some engineering on it. We spend more time on the design stuff, but the implementation of that— and part of the reason that we have to spend a lot of time up front on the design stuff is it's a fully open source software, so we have to put the specs out for other people to be able to consume, and then they can use AI to build the thing or whatever. But I still— the way that my brain works is like, it needs to be iterative. Like, I know that I wanted a picture hanging layout tool. I had no idea what that should look like or how the UX of that should be. So I could play around in Figma for hours trying to get something right that looks okay, but I have no idea how it would feel until I built it. So the fact that I can build it and immediately start playing with it and be like, okay, this is like, this is dumb having the remove frame on the bottom of all these or whatever, or you know, the colors on this don't make sense, or I don't know, whatever. Like, I can— the fact that I can interact with this and get the feel for it within minutes completely changes the whole flow.
And this is, by the way, you can embrace— and this is, this is one of the sad facts— is like, if you have a dam, several, several dams in a river, you get rid of all of them minus one, you can't actually move that much faster. This kind of requires embracing Tailwind for like the old— sure, listening to this. Yeah, because you can't really take advantage of this stuff if there's still that loop of like, oh, now we have to update the CSS, and that CSS now can affect every page. And so now we, you know, all of a sudden you kind of have to embrace this utility class. You can do it yourself, but even honestly, I was looking at someone in the chat mentioned 37signals recommends designing in the browser, right? So I pulled up DHH's blog post, which he, by the way, wrote in 2023. This is June 2023. So this is like, you know, 13, 14 months old. He said design for the web without Figma. So he's making a controversial statement. He's saying, hey, you don't actually even need Figma. I think he was correct about that. But the last sentence he says, you know, we don't do the bulk of our design work. So they still use Figma. Of course you can. No one's saying don't do that. But, you know, we don't do the bulk. That's all done directly in HTML and CSS as it should be, right? So actually I would sort of say, well, a year later you have to rewrite this blog post. It's invalid now. It's truly invalid. I'm happy to go on their podcast and debate it with them directly because I'm going through this literally at Gumroad 'cause we have the exact same philosophy basically on building stuff. And I'm trying to like have to relearn this stuff. It's actually just done in HTML. Literally half of the complexity is CSS. So get rid of that. And I'm going through their code base because you can just view source and they have literally basically done this with their own utility classes, right? They have header class, push-double-ends, align-center, p class, and they've basically tried to solve this problem. They've come to the exact same conclusion Tailwind has. It's the same conclusion, by the way, that Gumroad has, but the problem is they're not, you know, they can't take advantage of AI because they're gonna have to load this, their entire CSS and their entire H, you know, just can't work. So unfortunately, you know, I think Tailwind, and by the way, there's zero visual, like I think a lot of people think, like I used to think Tailwind's like Bootstrap. Like you can tell, you cannot tell. Like all Tailwind is doing is mapping CSS attributes like border-radius, margin-top, blah, blah, blah, blah, blah. To, you know, or it can do other stuff too, I guess, but that's all I use it for, right? I'm just using it for the—
well, where it starts looking, uh, or it can look sort of repetitive is when you're using like Tailwind UI, which is like their additional sort of for-pay stuff, like, which is great. I mean, like, that's sort of MVP stuff. Like, a lot of this stuff would come from Tailwind UI, and then I'm just like customizing it color-wise and sizing and whatever.
Um, but yeah, how much code was that? Like, could you do like kind of a git diff or like a PR or something?
Let's see, is there a way to—
I normally what I do is I just open a PR, but I don't know if you want to do that.
Whoops, I forgot to add it.
Whoops.
Okay, let's—
Vin says, wonder what frequency you check in the generated code to your repo. Uh, maybe automatically do that with every change and write the commit message too. Makes rollbacks super easy. Um, I don't know. I don't— what do you think?
I don't, um, I think that there's too many— there ends up being too many bugs a lot of times for me to feel comfortable with or wanting it to check in that often. Um, so I don't know, I don't give it a whole lot of thought.
Um, but 280 lines of code Yeah, I mean, that's crazy. I mean, look at how much— like, just think everybody, like, how long would it take you to take this out?
And the vast majority of them still do. Was the JavaScript— like, I have no idea what any of this does. Which, so some people's argument, like, will be like, yeah, that's the problem, bro. And like, I don't care though, you know? Like, it doesn't—
but the thing is, you do know what it does because you can use it.
I can use it, right?
Like, from a— you can literally use it as a user and literally know what it does in that way, which I think people—
well, and I think the problem— so what people start arguing about though is like, okay, if you need to debug it, well, it's like, well, no, you can debug it with AI. Like, if something doesn't do what you think it should, you just go into the— like, have the AI go and debug it for you. Yeah, you know, um, you know, it's like— and I mean, what we could— we could tell it to refactor this, for instance. Like, you know, it'll probably pull out into some different, uh, little methods and stuff.
Yeah, sometimes what I ask it to do is just tell me like the, you know, 5 lines. Like, can you do this with slightly fewer, with less code? Yeah, that's literally all I say. Like, can you do this with fewer lines of code? And like, it'll go from like 86 to 53. It's often better. It's often better. And it's like, and you can, by the way, like people, like you can still read the output, right? Like you're still like, for example, like I have a friend who's, he's a pilot, he's a captain for Emirates. And he says, look, what pilots do is they take off and they land. And that's the same thing here. Like you're still taking off, you're still choosing what to build, you're still landing, you're still hitting merge, you're still QAing your own stuff. You're still playing with the feature itself. But the flying of the plane, which is like typing in a bunch of JavaScript that a gazillion other engineers have already typed in in various ways already and published on the internet, it doesn't make a ton of sense. And I see that at Gumroad, no one should be spending— basically, you should only be building new features. Honestly, you shouldn't even really be fixing bugs because fixing bugs is purely— by the way, the only reason bugs exist is because how can bugs exist when you hire such great people and you have unit tests and all these things? The reason bugs exist is because no one human being can wrap their head around the entire codebase. Bugs only exist because you basically forgot about a part of the codebase when you're building something. So inevitably, all bugs will basically be fixed by AI because AI will be the only thing that will consume the entire Gumroad codebase, basically have a bug report come in and be like, oh, Yes. Fix. And by the way, almost all things are bugs. Almost all the things that Gumroad team does is fixing a bug to some degree. I mean, we're not shipping a gazillion features a day, are we? So what else are we doing? We're mostly like reacting to customer support, payment, bugs of some degree. And so all of a sudden, there's only one dev. You have one dev that— everyone should be as powerful as the one dev that can wrap their head around the entire codebase. Like everyone should be DHH, right? Like should be— everyone should design in HTML. It's just the amount of people who are willing to learn design and taste and then also learn HTML and also learn CSS and also learn Ruby and also— literally, there's like 15 of those. There's very few people. Even I, for example, like still don't know Tailwind, right? Like I still don't know Figma, like new variable variant stuff. So what I do is I literally hire designers and engineers to basically do that for me. I'm not willing to learn Vue. I'm not willing to learn React. So I have to hire a React dev. Well, guess what the React dev now has to do? They have to just get it to a place where I can start. All I gotta do is run the development environment locally and know where roughly the files are to edit. And all of a sudden, I'm not shipping crazy, crazy, crazy features. But all of a sudden, all of those 1 to 10 hour features that I would go to a designer, go to an engineer, have them, you know, I can just do myself. I can just, and like literally like in 3 hours, I think about 40 hours of work I can do. Like in terms of how much, how many hours it would have taken the team to actually solve those problems when I can just do that all myself. And then what I do, all these people still work at Gumroad, by the way, no one should be scared about being unemployed. Because it's amazing because all of a sudden the designers come in and they're like, oh, you told— you're already— instead of having to interpret the Notion spec and have to think about, oh, fuck. Okay. Equity, equity at flex cell. This, you know, like they can just see it. It's already working. It's already stubbed out. I've already spent the time and then they can make it better. They can just make it better. They can just use Tailwind and make it even better. They can still use Figma and the design system and all that stuff on the Figma side. But then when they implement it, they're just implementing. The solution. And then the engineer can come in and say, oh, Sahil screwed this up, this is inefficient, this is going to take down, you know, whatever, right? The QA exists, it's still there, but I think it's going to make everyone so much happier because people will basically actually be able to— like, do designers like writing CSS? No. What they want to do is say, make the button rounded, right? Make it red, make it blue. Like, they want to command their thing, you know, it's an aesthetic preference. The same thing with engineers. Engineers, I don't think, like writing code. I think they like saying, they like thinking through the logical problem and then solving it. It's kind of like taking a test and then applying the solution. Might be in Ruby, might be in JavaScript, might be in Python, it might be in Vue, it might be in Swift. But to be honest, it doesn't matter because as long as you know the file you're in and the limitations of what those files can touch, You'll be able to ship, right? Just like, for example, I don't think people realize that you need to learn English to code right now. Every single person who writes code first has to learn English. So think about how much of an advantage the West, quote unquote, has, right? In that way. I mean, think about how many Indian engineers there are versus how many Chinese engineers there are. Both countries with a billion people, at least in America, one population has 300 million English speakers, one population does not. You have this massive— I don't know. That's my one take, I guess. Didn't mean to get so political all of a sudden or whatever. But I think that might be one reason. You already know so much of what you need to learn to— if-else, there's English terminologies. All of a sudden, you can now write code if you only speak Spanish. You can now copy the whole file and say in Spanish— I don't know Spanish very well, but you would say something like, "Move the button next to the input on the right," right? Like, "A la derecha, button input." I don't know, whatever. And it would do it because AI speaks English or Spanish and English and JavaScript and Ruby. And so I think the power of defaults as well, I think people really underrate when you don't use the defaults, you get off the train, you get off the AI train, right? Because you no longer get to benefit from like Tailwind and like all of the innovation cycle that's happening right now. You know, you kind of have to kind of jump on the same bandwagon. Like for example, like we're actually gonna leave Rails behind. I've decided as a company, we're gonna leave Rails behind. And that's, I'm not telling everyone to, but I think I just see the writing on the wall and I just say, okay, yeah, like basically if you think about how do you minimize context, just get rid of the backend entirely. And just imagine if the front— if the backend is now in JavaScript too and TypeScript and all the routes are in one codebase, like even more speed and, you know, and if you look at, I mean, the best products out there are like built in this way.
You'll, you'll, you'll love that. So I have the exact opposite view of, uh, we swapped, we abandoned the, uh, React codebase for Maybe and rebuilt.
I saw that. Yeah, I saw that.
Yeah. Yeah, because— and I think this is, this is, um, this is probably more to do with, um, the speed. Well, okay, so I think Rails has a lot of convention built in that goes back a long time. Um, so LLMs have a lot of that to go on, um, that standardization, whereas like any kind of JavaScript framework has changed fast enough, especially in the past 2, 3 years, that, uh, we found it very, um, inconsistent, especially if you're using something like a, like a Next.js.
Um, that is true. I do think that's true. That is fair.
Um, I think in small increments, like, the JavaScript stuff does work fantastic. It— we had an incredibly difficult time get— trying to like get scaling up especially in the open source capacity. Um, and, and we rewrote everything in Rails relatively quickly thanks to AI.
Yeah, I mean, that's the nice thing, right, is like you can also switch— like the switching costs are going to go way, way, way, way down. Yeah, these migrations used to take years, literally, for sure, but now should take weeks if not— you know, yeah, probably weeks at this point instead of years. So that's like a 52x increase in speed. Like, it's a huge Huge problem. I have—
so I've got like 15 minutes. Like, do you want me to— I can like do quick Q&A before I go.
Yeah, let's do Q&A. There's a bunch of questions people have.
Um, let's see, like, I'm— some here. And while the people are thinking, what was this?
So, yeah, I mean, do you do any fine-tuning or anything like that, or like multiple model stuff, or besides the rules? You do the rules where you say The rules are probably the closest thing.
Um, I do think—
could you show this off again, by the way, just so people can see them?
Yeah. So those, um, and I'll actually hold on.
I'll— I mean, this makes so much sense to me because right now we have onboarding documentation in Notion. So you have to basically read all this stuff, forget it, and then start writing code. Yeah, this should just be in here and then cursor.
Well, I mean, you could, you could either— what is it, um, add it. Actually, hold up, it would be under—
I love the idea of just putting in the code base because truthfully I feel like there's another change that I think is going to happen is like people should be like, it should feel like one developer working on it, right? And that means like, hey, when you check out the Gumroad repo, like you have all of the cursor rules that are like specific to Gumroad. With and flex cell might be slightly different, helper might be slightly different, maybe it might be slightly different. But if you don't use cursor, then none of these matter, right? Well, so, and what, what you could do is like, people want to be told like the defaults.
I agree, but you could like, so you can add docs either if say you have like a public Git repo or something or whatever, you can add those as docs and then like reference them if you need to whenever as far as context goes. To like internal company stuff, whether, you know, I don't know. There's— I do think there's some, probably some benefit to including some additional context around things, especially imagine you're not— okay, here's an example. Imagine you've, um, so this is a, um, what's the word, um, monolithic repo. So, um, imagine you've got multiple services all over the Well, you could import via some sort of docs file or, you know, like internal company stuff and have it know the context of all the other services while you're building in this particular microservice or whatever it might be. So I think there's lots of use cases.
Yeah, that's true.
Adding additional context.
That is true.
See, then you're asking if improvement in output with the extra cursor rules. Yes, I mean, that's, you know, I told it to be, um, like, let's see, first think step by step, describe your plan for what to build in pseudocode. So, um, that's part of the theory being that if the LLM has to like explain its steps before it implements the steps it will write better code that tends to work better. But, you know, I don't know, we're all kind of like guessing on how all this stuff functions really.
But yeah, totally, it's basically next token prediction, right? Like if you can guide— if it can guide— start guiding itself to the right answer, basically you just have to have confidence that like it's going to start thinking in the right way in the beginning instead of— it'll just follow the train of thought it starts following at earlier. Yeah, I find what it's worth—
yeah, sorry, I was gonna say, so one key thing that I— very, uh, helpful here is, um, these two lines here. So a lot of times what it'll do is it'll like try to be too vague and just be like, implement this, and then it'll have a comment of like, then implement the rest of the functionality here. It's like, no, no, I need— like, I need you to implement all of the functionality. And so, you know, some of this stuff is probably kind of unnecessary, but telling it to actually to not have placeholders, uh, will go a long way to giving you something completely usable or close to it.
Yeah, sometimes I find that it does that where it says like slash slash. Yeah, old code put here, what to do, fill this in with, and I'm like, just no, that's your job now. What are you making me work? Uh, Bill All has Hey guys, uh, first of all, thank you for the call. Uh, my question is, I noticed when you were chatting with, um, the model, you gave it a context of the most relevant files for what you were trying to do. Um, I was wondering, you know, if it's a whole new project that, you know, you've never seen before, you don't really know where everything is or how everything works, like, is it possible to just give the entire— every single file as a context? Is there a downside to that?
No, I mean, if I'm being lazy, I'll just do, you know, so the keyboard shortcut-wise, uh, you know, Command+Return. Like, if, if I'm just like quickly trying to get something done, um, I'll just do the whole code base. Or so this is pretty earlier today, I was, I was asking like, would it make sense for me to pull out a piece of code into a background job instead of, um, having it be inline? It was a database call. Um, and so I was like, I'm not sure, but like, I don't know, that, that function or like that database call was made in multiple places. So I couldn't remember where it was, so I just like said, this functionality, like, does it make sense to pull this into a background job? And it went through whole code base and told me all the different places, like, since it's— since it exists in— and then it mentioned like the 4 files it was in, um, you know, that would have X whatever performance improvement, yes, it makes sense to do that. Here is where, you know, run these database migrations, create this background job. Like, it would even tell me the Rails command to generate that stuff. Like, um, yeah, doing the full codebase thing can be very helpful all the time, including at the beginning, but also once you've got a lot more code too.
Yeah, and at the end of the day, the context length, it's right now it's about 200,000 tokens. And so I copy-pasted, for example, like the entire en localization file for Gumroad, which is about 8,000 strings of different parts of our codebase in English so that we can translate them, which we're deleting all that, by the way, because AI just does that now. So we can get rid of that. And it's about 85,000 tokens. So, you know, like this is like a 200-page book, but Gumroad is much larger than 200,000 tokens. Right? So you do— there is still an incredible amount of value in an engineer just knowing. I mean, arguably, I mean, like when I trial a new engineer who's joining the company, that's actually like one of the most important things, right? It's like, there's a bug. Which files do you go to first? How do you decide what, you know, it's a completely new code base. What would you do, right? Where would you go? Everyone has a different mentality. Around that. They might open the terminal, they might open the console, they might search the codebase for a string that shows up, right? A lot of people frankly get stuck. They end up not being able to move forward at all. But actually paring down the context of that codebase so that you can ship something, it is kind of the— you know, that is the job of what an engineer often does. Because otherwise you end up with just assignments, right? Like if you only had like one page that have zero— you're just making school assignments again. You're doing grade school math where it is— what makes it complicated, what makes surgery difficult is that evolution led to our body. And so there's a lot of crap you got to learn in order to make a single change. So basically all code bases are like that at the end of the day, right? Code gets very large very quickly. I think the legal system is also like that. Why do lawyers make so much money? It's because you can't stuff the entire Federal Register of laws into a prompt yet. You just literally can't. And if you could, well, you can't take all the precedents of the state of Delaware and do that, right? And so this, by the way, is what the paralegals do, right? They like search and they look up precedents and they find cases of law and they vet your language against it. And that's the— the job is shrinking basically. Like the actual job shrinks to more what I think is more creative, which is just like picking the prompt, like getting the right inputs and then typing the prompt, getting the right— specifying the actual feature, which is, isn't that what everyone wants to do? Right? It doesn't— that doesn't— don't people want to just be able to like be product managers? We all make fun of them, but the reason is we all want to be them. We all want to like not write code and design. We just want to make things come out of our brains and like beautiful music and beautiful art and beautiful everything. And then again, the code is there, right? So like, you don't actually lose anything because at the end of the day, you're still flying the plane. You still have access to the plane. You could still go back to manual instead of automatic at any time you wanted.
So somebody asked about using LLMs to use the most recent documentation. So I found like you have to add a document, like that's the So then you would add a new doc and then just like copy and paste in a link to the, the most recent documentation for whatever it is. I mean, it could be the, the Git repo for it, um, or, you know, like the README docs, whatever it is, you just paste it in there and it will index all of that, including like the newer stuff. So, um, I But I find it's not useful to do that until you're like head against the wall, can't figure out why, like debugging something and it keeps recommending some method that doesn't exist anymore or something like that. Then you can go in and start trying to reference more recent documentation, but Cursor lets you index that stuff for sure.
Yeah. Awesome. We'll see where you land in React and Rails in a couple years. Yeah. Yeah, I just found that we have, so we have two projects or we have four projects. Two are with a Rails backend and two are with a Node backend now, Helper and Iffy. And it's what I find is that it's not even language preference, it's just the ecosystem, the amount of tooling that exists when you— when the initial setup is frustrating and definitely like it's tough. But like, you know, for example, you don't need Docker if you have it, you just get rid of the Docker requirement and all of a sudden, like it takes 15 minutes to download Ruby on a Mac because like Ruby needs— Ruby needs Python. I learned when I was getting set up, you know, like it needs gigabytes and gigabytes of stuff and then you need these big servers to run it. Like we pay $42,000 a month for our AWS stuff. I honestly think we would pay almost nothing, like $1,000 a month, if we got rid of Rails. Because getting rid of Rails means getting rid of Ruby, which means getting rid of Docker, which means getting rid of extra large instances. You can run the entire— Gumroad should basically be able to run from a single MacBook Pro. And the only reason I think it can't is because it basically the Ruby sort of— requirement, requirement, basically, you know, and so it's not gonna happen for a while, but I think it'll thin out and it'll be more and more just like a front-end application that you just bin dev and you're just ready to go. And, um, but yeah, I, I do, we have, we have lower hanging fruit, like we have to probably move to Tailwind for everything. The beauty of it is it shouldn't take that long because you're just adding Tailwind and then you're just going page by page and just like inlining everything, uh, shouldn't be too hard. All right, anything else before I— no, I think that was good. I think that was great. Um, I'll probably edit it a little bit down and republish on YouTube. Um, and now I have another hour and a half to go.
All right, well, uh, good luck.
Thanks for jumping in. That was awesome. That was like an in media res, like right out of here. For sure.
Well, I appreciate everybody, uh, sticking around and paying attention and, uh, following along. So, um, yeah.
All right, catch you later.
Good to see you guys.
Yeah, enjoy the puppy training. Bye. Uh, let's do some more questions. I have some notes and then I will do a similar thing, uh, go through some, some stuff. Nicholas, how's it going? How do I all on you. You can just speak, I think, right? Nick, Nick, Nick, Nicholas Gomez, do you want to speak? No, no, sorry, you don't want to speak. Does anyone have any questions or any notes or comments or— I don't know, I want to kind of brain break those Even though you're not doing a lot, it's still taxing on the brain. Hey, Sahil, can you hear me? I can. How's it going? Awesome. Good, dude. Thanks for putting this on. I'd be really curious, and I'm sure some of the audience, some of your own experiences with Cursor at Gumroad. I wasn't— I didn't know you like coded. Not like to say that offensively or anything, but kind of curious how it's transformed Yeah, what you're up to, just kind of your background and context. Awesome. Yeah, let me provide some context and then some prompts, just like that's the way it goes. I feel like in AI land. So I have some notes I'm gonna run through real quickly about Cursor, and then I'll do the same thing. I'll go through how I use it at Gumroad to save us a crazy amount of time, energy, money, stress. And more. So give me, I have a whiteboard. I'm gonna do this a little bit old school and go through this. But yeah, I just wanna go through real quick. Like, I guess like why now? AI has been around now for almost 2 years with ChatGPT. But there has been, it feels like, maybe I'm wrong, I could be wrong, but it does feel like There's been a lot of examples in the last few days even with this new push of Peter Levels tweeted today about how he's trying Cursor. Justin Ross was one of the co-founders of Opendoor said he had posted his GitHub contribution chart and his GitHub contributions was empty and then completely full, full of whatever. This is unfortunately flipped. I'll see if I can fix that. But this is, that's completely, you know, a completely new thing. Actually, maybe I'll just share my screen. Maybe we'll do this the traditional way. Your whiteboard is not mirrored, if that's what— I know, yeah, it's kind of annoying. I didn't realize that. I mean, first off, I'll just share my notes. It looks good. You like the mirroredness? No, like it's not mirrored for me. Oh, it's not mirrored for you? Yeah, I can read the text, coding with cursor, and then commits on the right. Whatever you want to do. Well, anyway, I'll do this first and then I'll see if there are any other things. But, uh, uh, but yeah, why, why did this sort of thing happen? Why, why did all of these tweets start coming out, um, that people have started tweeting about? And, and I think it's basically this, uh, I think people really underrate— and you can kind of see, so I had this tweet, the sort of reason that this whole course, uh, kind of came to be is I just tweeted this out Cursor+Claw 3.5 Sonnet has made it 10 times more fun. You can know, by the way, I don't say— I know there's so many tweets about making it productive and unemploying people, right? So I just wanted to say fun. Fun to be a CEO who codes. And then whatever, a bunch of people saw it and I got a bunch of people asking basically why. This is not just AI, right? It's a pretty specific set of tools. And, and yeah, a bunch of people said stuff like this, like, I tried this before Sonnet, you know, I've switched to VS Code, I don't see the benefit, blah, blah, blah, blah, blah. And basically, my reasoning is this, which is what is actually new is virtually no hallucinations, and it's fast. So What you guys saw— oops, sorry, I don't want to show all my secret DMs. But— oh, it's still there. Annoying. I'll go back to this. But this basically means that one prompt is now many prompts, right? And so if you think about a single, you know, "I like drawing one," and if AI can make you 20% faster, which it totally was doing, or 40% faster, right? But all of a sudden, I can have 9 files edited at the same time. It's like this, right? It's massively fast. And 1 to n, right? So this 90% can effectively be 90, right? It's sort of an infinite boost. But this infinite boost doesn't work without the no hallucinations part. So this is also completely new. I think everyone who's experienced messing around with ChatGPT and blah, blah, blah, like has constantly complained about hallucinations, how you can't trust it. But if you looked at what Josh was doing, I mean, did he edit any of that code? No, he literally didn't. It was perfect. It was better than he would have shipped probably on his own. It was 280 lines of code, right? So a 1% error rate would mean 3 lines of that were wrong. And by the way, the reason there's no errors is because it's code. It's because there's a logical constraint as it's writing this stuff out. And even if there are mistakes, which by the way, there are mistakes, I'm not saying it's completely no hallucinations, but if you're in TypeScript land, it's all typed. So like the issues are very obvious because if you're, and this is the other thing I think like the Rails community misses is like they don't benefit from type checking. They think type checking is annoying. You have to type more. But the truth is type checking is fucking amazing because if you type check, you don't honestly, you don't need nearly as many tests. You don't need nearly as many specs. You don't need as much QA because you know that the thing coming in is a string or gonna be a number and the AI's writing all the types anyways. And when AI generates all your code, it knows all the types. It's very, very, very helpful to keep the code, all the context. It's like inline CSS, it's like inline JS. Instead of having to go and look up what that function does, you, you don't need to do that anymore. And so what that means is, like, if you, if you looked at, at Josh's live stream, like, he didn't consult any documentation. Like, he didn't go to, like, W3 School schools. He didn't go to Stack Overflow. He was able to just live basically side by side, app, cursor, app, cursor. And just think about how much faster you can move. He's still demoing all this stuff to us, right? So like he had to like increase the font size and everything like this. But like effectively you're like able to design and develop, you know, that thing I honestly think would have taken like 3 minutes, you know? And that's crazy town when I said 6 hours, 6 hours was like the bar. The bar before. And the, the, the reason— let me see if I can find my thing— the reason, like, where does this time saving really come from? Okay, I mentioned like the, the, the prompts, like there's so few prompts, you don't need that many prompts. But what that does is it turns every job into a prompt, right? Because what does the engineer do? They're just editing 35 files and making 700 lines of code differences. If that used to take 6 hours but it now takes 5 minutes, all of a sudden every person in the pipeline— let's say you have the CEO over here, the CEO, and I have an idea for a feature, right? I have an idea. Then I tell the designer, designer, and they have to come up with a design. And they have to like design it and then they tell the engineer, engineer to build it, code thing. And then, you know, QA or me again, basically, or support or CEO again, let's just say. And I do this again. But the thing is, I might be mad. I might be like, oh, I don't like this. It's not good enough. Right. And then all of a sudden it has to go all the way back and all the way. Like, that is crazy. And this is also selling it short because the truth is these bits are longer than the bits in between. Right. It's this translation between these layers that takes so long., right? And imagine I want to write a speech in Japanese. I write it in English right here, and then it's done in Japanese right here. But here I have to— and even the Japanese person translator is also doing like this. They're not— we're not doing that much work. But then the thing that gets shipped is this massive, you know, back and forth where I have to constantly review all their work back and And so if you can reduce all this, if you can get rid of all this because of things like Tailwind and Cursor, the designer and the engineer are now parallelized, actually. So basically what ends up happening is you have the CEO, you have the designer, and you have the engineer. Right? And you just have— what do you have here? You have the customer and that's it. And it's just like this. And the amount of efficiency gain when you effectively just have customer comes to one of these people, it might come to the designer. The designer might be the right person, right? They can design it in Figma or they can go straight to code and they can design it in code, then they can pass it off to the engineer. The engineer can pass it off to me, and then I tell that person and it's done, right? Or I, whatever, I go back and this designer tells the person, or it goes to the engineer. There's like something that has to happen. They need my feedback. I need a loop in design so that I tell them loop in design. They go back to design, all these things. So that's already like a massive speed increase. So this is like a 10x, I would say 20x roughly. But even more than that is combining all the roles completely. So then the future really is just person and person because, and that's it, right? Because someone sends me an email and says, okay, I'm on Gumroad, right? This is it. This is Gumroad. I'm a user. I'm a customer of Gumroad. And, you know, this, uh, let's say I wanna add like a link. So I added this live streaming link, uh, but I want to add an image or no, I don't wanna add an image actually. I wanna add a, I wanna make, make this a link or something like this. If I hit add link, oh, someone already fixed this cuz I already, okay, someone already fixed this. Great. Actually another one. So this is, uh, oh yeah, this, even these, even these bugs, I would, if I weren't streaming, I would actually like just start fixing them. Uh, but it says insert tweet here, right? So like, for example, I would go into Notion and I'll go into our ice, you know, the icebox. I'd say, okay, we're gonna build a new thing and I'd say, you know, change insert Gumroad. This is fine because, you know, it's like 5 minutes, not a big deal. And if it takes an hour to actually fix the thing, 5 minutes is nothing, right? So I just go in and take this, I take like a screenshot, I go back here, I take a screenshot this and go like this, go like that, you know, you know, update this to whatever. But now what I can do, and I will share my cursor screen. Let's make sure I have Gumroad open. Awesome. Oh, error occurred. One second. Stop presenting and then presenting again. Oh, an error is occurring. I don't know why I can't share my cursor screen. That's annoying. What I can do is I'll share my whole window and see if that's any better. Kind of do these things in more in parallel. Again, doo doo doo. All right. Everyone should be able to see my screen. And it's nicely presented. So, you know, basically instead of doing that, like instead of like thinking about, you know, thinking about this thing I have in the background, like Notion is here, Figma, GitHub, Merge, right? So like let's all of a sudden let's skip all this step, let's go straight here. And I mean, I guess you could use Chat with Cursor. Honestly, I don't really use that that much because I kind of know where everything is, but Let's say, let's just say that I wanted to do that, make that change, change insert tweet to insert post, see how good it is. Yeah, so I mean, it's pretty simple. I mean, this is a pretty easy one, but you'll notice it actually isn't completely trivial because you're like, oh, it's so easy. Well, the thing is, Gumroad is a 13-year-old codebase, right? So it's not as trivial as, you know, your demos. This is real life. This is not like a Twitter demo where you just impress the world by building something in one prompt. Like, this is actually reality. And what does reality look like? Oh, it looks like there's a couple different places in which we have insert tweet. We actually got rid, as I mentioned, of that localization. But before, imagine that these actually said something like, you know, i18n.t insert tweet, right? All of a sudden, there's another whole thing you have to think about. Luckily we got rid of that. You can guess why I got rid of that. So it would make shipping stuff faster. Even this should be grouped and should be done soon. But there's actually 4, there's 3 files here, right? So already like there's some complexity here. This is why I think multi-edit is so important. You know, like it really should be one prompt. Every, the goal in my view, the goal should be that one prompt. That's all. So can do that. And obviously we're starting super easy. Like a lot of people, like I think, want to do stuff, just like do the most basic simple thing, like fixing this. You might say, oh, this is so simple and easy, you don't need AI to do this. Well, then why am I doing it? Why am I doing it, right? I mean, it's, it's here. Like the bug is here. So fix the bug, right? And the reason is this process. There's a huge process to getting anything done because there's multiple steps involved. And the only way I think you can fix that is by removing all of the steps, right? Basically, it should go from one prompt to merge to production. There should be nothing in between. And I'm spending a huge amount of my time basically reducing all of the steps, uh, because if we don't, our competition will. And, and that's that's like the nature of the beast. And so, yeah, back to this, en.yaml, the rich text editor, tech. Oh, see, there's multiple of these too. See, it's not so trivial. Which one is it? This is the one in products edit, so it's this one. That's why engineers get paid $200 an hour. If you're like, how the hell do engineers make so much money? Stuff like that. Okay, so I can do the same thing. Just move it here. Should fix this 'cause it's actually this to insert and I'm gonna make this post. Boom. And I don't need to chat with the whole code base because I know that these are the 3 files that need to change. So I just hit submit. It does that. By the way, like, why can't I do 17 of these at the same time, right? Like, if I'm confident in the result of this, like, I should just go. I should already be doing something else, right? I should already be back here doing something else, finding another bug. Like, oh, I accidentally clicked this. It's kind of annoying that this doesn't say new page on it, so we should say that, right? And just open another PR and open another PR and open another PR and open another PR and open another, like, literally like dozens of PRs. I mean, and I don't know where you guys all work, but my guess is you probably don't work at a company where you're shipping that fast. But why not, right? That's what the user wants. That's what everyone wants. Ian YAML is a massive file, so this is why it's taking so long. Uh, you can tell the other two are gone. Uh, so my goal, by the way, is to delete Ian YAML. Right? This should not be a part of this shipping process. It's too slow. It wasn't too slow before, but it's slow now. So I'm just gonna go in here and I'll just cancel the apply and I'll just go find this and I'll keep it in here 'cause I wanna like, you know, make it less of a PR, right? We're gonna delete this whole thing later. So I just go into here and I just say, oh, I'm in main branch. So I probably don't wanna be in main branch. I probably wanna be in a different branch. So what branch should I be in? Let me just check out a new branch. What branch? I don't know. Insert post seems reasonable to me. Why do I even have to come up with one? It's stupid, right? Like it's work. Like, who cares? It doesn't matter what the fucking branch name is called. Uh, so that, that's another whole thing that will go away in the next few years, like commit messages and all this kind of stuff. So you can see it updated to that, and you say, even this, like, why am I typing anything at all? Literally all typing is error. Like, what am I doing? I'm already done. I've already done the hard work. Yeah, literally all this crap I have to do. It's crazy how much work is involved that is completely useless. Completely pointless. Why? Who cares? Doesn't matter. Great. Oh, I didn't commit yet. Oh, great. Cool. Yeah. Why do I even need to do that? Just auto-fucking-commit. Commit insert tweet. Okay. Why you won't let me? Why won't you let me? I'm already here. Okay, I'm just gonna do this on my other thing. Insert tweet and push. And the reason is probably because I, I've been messing around with my terminal recently, so Yes, he didn't save. Okay, okay, well that was a failed demo, but that's all right. Do it manually just so you can see how long it would have taken manually. Oh, it says tweet URL here. That's not good. Oh, that's— oh, tweet URL. Uh-oh, see, that's bad. Well, why do we even need to say post? Just say URL. So let's just fix that. By the way, this is another thing that like if the design, if the engineer or the designer was doing it right, they may have just fixed the one thing, but now I can actually have more of an impact. Pretty cool. Like the product gets even better. Oh, see, this is tab. It knows what I wanted to do because I've done that before. So I just hit tab and it fixes it. So URL. URL, um, and then because I don't know why that didn't work, I will just do it again. Where's my terminal? Oh, I hid the terminal. Okay, I'll bring it back. So I'll just commit this, which is just what I do, is Just commit all the files and push. Oh, I don't have the— oh yeah, I switched my terminals. It's kind of annoying. I switched my terminal yesterday, so I lost all my shortcuts. Well, do you have my things? Yes. Awesome. Well, if you wanted to do that manually, what I would have typed is this, like that, right? All I'm doing is I'm committing it with that message. By the way, all this is stupid. It's like, that's why I wanted to use this, but for some reason it wasn't working. Like, I shouldn't even need a terminal anymore because like all writing code is kind of a waste, waste of time. Uh, so yeah, so I open the PR and then the beauty of Gumroad is we have a well-tested repository with 16,000 tests in it. So all the tests will run and tell me if this is worth merging or not. Right? And so basically what should happen is someone will review it at some point, approve it, but then the test will run. It'll take about 11 minutes with a gazillion CPUs running to make sure that nothing has broken based on this change. And then it'll go to production, right? So all of a sudden, like, let's say that was even 15 minutes of other people's time because the engineer has to get spun up, check out the branch, like all of that work, right? There was— it was not instant, uh, right? 15 minutes, $200 an hour is— I don't know what's a 50% tip on $200 an hour, it's like $30, uh, $30 is saved, right? And if you think about the S&P 500, even though it's down today, it's still trading at a 27 PE. So every dollar you save is worth about $27 to investors. So that $30 was 30 times 27 is $810 I just generated, right, by doing that. Literally, you watch that happen. I generated about $810 worth of equity value for my business. Uh, pretty cool. So Yeah, pretty cool. Let me see if anyone has questions. I'm going to do— see if I can find more of these. More questions. If you asked above, just ask again and I'll go through it. And then I'm going to go through my notes and then we're going to see if I can find other things to fix. I mean, to be honest, the 10x engineer has never been a joke. Like, it's literally true. The 10x engineers, I mean, I know gazillions of people who can ship 10 times faster than the average engineer. I mean, yeah, it hasn't been a joke for, I don't know, since the '90s, I would say, probably. Software enables that and enables vast amounts of scale. For the folks that aren't engineers, which languages and to what depth would you recommend? Stop thinking like that, frankly, right? I mean, like, you are an engineer. Like, all an engineer does is type text into a box. Like, all I'm doing, I'm doing the job of an engineer. And like, everyone should be able to wrap their head around what I just did. And if they can't because they're like, oh, well, you have to set up Ruby on your computer, it's like, well, that's my problem. I need to make it easier so that everyone considers themselves an engineer, right? Like, every single person should consider themselves a designer. Every single person should consider themselves a customer support person. Uh, that's the goal. That's the goal here. Oh, someone said 15 minutes is $50. Oh yeah, $50 at $200 an hour. Really? Are you sure? I don't think so, but maybe I'm wrong. Oh, you're right, it's $50. Wow, my math is so bad. 60 minutes in an hour, not 100. Uh, funny. Uh, AI wouldn't have made that mistake, by the way. Uh, but, uh, yeah, someone asked about how to prevent node_modules from getting into the codebase context. Like, is this a problem you've run into, or are you like speculating on problems that may happen in the future? Uh, because to be honest, like, most of these, most of these questions are not real problems. Like, just try it and there won't be issues. Uh, The only issues are basically local issues. Like, they're things like, oh damn, it's annoying that we can't use Tailwind yet, you know, things like that. It's like things that are our problems. I mean, you're speculating. This is a good example. It could be a ton of tokens. Like, I'll tell you, the answer is AI smarter than you. It's already predicted your question or already solved it. Turns out like Node modules don't feed into the code vest contest. Like, that's just someone smart already had that question and has figured it out for you. So only worry about things when they become real problems for you. Otherwise, you're wasting your time and you're discounting all these smart places. Are you guys planning to use a full TS codebase in the future? Yeah, we'll probably move Gumroad— I mean, Gumroad is moving slowly to React. Flexile will move more to Vue. Helper is already Node and Next.js, and Iffy is also Next.js. My guess is, I mean, if I had to make a— if I was placing a bet, I would bet that all of our apps are going to be fully Tailwind and Next.js apps in 2 years. And I could be wrong. I mean, I'm happy to be wrong, but that's my feeling. My feeling is that Next.js has won. View has been around since 2015. It's fine. We use Vue at Flexile. It's very nice. I mean, again, my personal preferences don't really factor in here. What matters is how fast we can ship product and Tailwind and Next.js seem to be the tools that people are doubling down on in order to do that. So yeah, that's my feeling. But for now, well, first, we probably won't leave Rails anytime soon. That's a huge project. But we'll probably sort of like limit the work on Rails and move more and more stuff to frontend. So yeah. What do you think about starting a company now in the age of AI? One-person company possible? I mean, it's been, again, it's, I mean, most companies are one person, so there's nothing new under the sun here. All that's happening is that there's even more automation., right? Like most businesses are run by one person, so that, that business will now be able to do more. Like that restaurant that's run by the mom and pop can now source, spend, you know, like in the hour that they spend searching for tomato sauce, they can get an even better supplier, right? They can get, do more price discrimination, they can reach out to more. Like the, the size of the firm will look just like the size of the firm does. It's just like the scale, um, each person will do is going to be so much more. Maybe you could say that companies will shrink over time. I could see that Facebook should probably be 10 times smaller than it currently is, but the truth is like their market price is so high that they can afford to pay people and it's whatever. It's like, I think the market is pretty darn efficient at most of these things. Do you think this will drive engineers to also become something like entrepreneurs? Like, no, not at all. It will not do that whatsoever. And again, it's nothing new under the sun here. All that's happening is like more automation. So all these people want to become writers, but it's like if the invention of paper didn't make you a writer, nothing will. If you would've written pen on paper as a monk, as a scribe, then you will probably be a writer today. And if you wouldn't have done that, then you will not. And like, there's no AI that's gonna help you. 'Cause you're basically saying, I'm only gonna become a writer once AI does the writing for me. It's like, well then you're not a writer ever, right? It's like, am I a musician when I hit play? No, I'm not a musician if I hit play. So, you know, like if you're waiting for some moment in the future to happen, like it's never coming. I mean, like the, it's been completely possible for, How old was Zuck when he started Facebook? What's new? Think about how bad things were back then. Think about Stardew Valley. Think about Game of Thrones. Maybe I would say outside of the software development ecosystem, which has been cheap for a long time, you could say, well, Christopher Nolan should be able to make Batman 4 by himself or with a team of 10 people instead of 100 or 200 people. Well, that's probably true because we haven't yet consolidated all of the data of all that, what the cameras have shot and all the editing cycles and all that stuff into AI. It's much more expensive to train models on video than text. But text is done. Text is a completely solved problem at this point. We have AGI for text. We already have that. So if your job involves text, and most, many jobs do, then Whatever state you're already currently in is kind of the state you're gonna be in. And then if your state's not changing, then basically, well, the company you work for will eventually disappear and be replaced by a company that looks quite different. But the company itself, I think hopefully we'll be able to make the transition from Rails to JS, but the truth is most companies don't. The reason your bank software looks the way it does is because they didn't They failed to make— they used to be modern tech. Every product that you use used to be state-of-the-art. And so when you use a shitty ATM, it's just because it's old and it hasn't been updated for the newfangled technology, right? And the new monitors, the new screens, the new batteries, the new Wi-Fi adapters, the new this, the new that, whatever. So it's existential, honestly. If you're working on an old code base like Gumroad, you should move to the future and holding back because you don't like Tailwind or you don't like Rails or Ruby or React or whatever it may be, it just doesn't really matter at this point. It's kind of like, I would say, learning English, right? No one, I think, debates the value of learning English. Who cares? Is English a better language than Hindi or Chinese or— who gives a fuck? I mean, they're all shit. They're all amazing. Who cares, right? Like, we all speak one language to get work done, and we're gonna go, right? And so I would love to believe that engineers will become entrepreneurs, but like, there's nothing stopping them today. I mean, like, right? I mean, Zuck is an engineer who became an entrepreneur. I mean, like, most founders I meet are engineers who become entrepreneurs, so I don't think there's really anything new. I mean, I would say engineers can now be better designers, so if like being a designer was stopping you from being an entrepreneur, or being a good writer was stopping you from being an entrepreneur, or being a good filmmaker. There are other things that stop you, but everyone— I think entrepreneurship is actually super easy. There's nothing hard about the entrepreneurship part of what I do. I just literally fucking whiteboard some ideas. It's like, who gives a shit? What matters is designing and building and doing customer support. And that is the role. If you think about Google, why is Google Google? Google. Design, building, customer support. That's all they do. And if you don't have customer support with Google, it's because you don't give them enough money. I mean, if you're a Fortune 500 company, you're giving Google a gazillion dollars a year, guarantee you have customer support. So I mean, I just think everyone can do everything. And so what does that look like? It means that people have less excuses, but yet people will still have them. People will not have good names for their product ideas. Things like that. Ah, da da da da. Would you ever hire someone with better promptability over raw technical ability? I mean, there is no difference. That's the same thing. The better you are at your raw technical ability, the better you are at your promptability because all the prompt is doing is just playing code golf in your head. You're taking the entire 2,000 lines of code you would've written and you're figuring out how do you say this in 200 English words, right? Uh, and I'll try to use maybe some examples soon, but, um, raw technical ability literally equals promptability. Literally, that is what prompting is. I mean, what do I do as CEO? I prompt the team, right? So like, that's all I do is say, what do you guys think about this? What do you guys think about that? You know, uh, it's— yeah. Is learning to read code at least to a basic level necessary? I mean, it depends, uh, like your definition. Like, I don't know any Tailwind, but I can still write Tailwind. But arguably I know Tailwind because I know margin-top in CSS. So, uh, I think learning to read code— I mean, you already read code, right? I mean, like, let's open up some code. This is some Gumroad code. I mean, literally, this is the code. I mean, I can show you, like, this code is this. This is a popover with a trigger and it shows insert— or I changed this name to insert tweet, but— or sorry, changing it to insert post. But this is it. I mean, if you can't wrap your head around the fact that there's a div and then there's a span within the div, which is the icon rendering. By the way, if you don't understand it, I mean, just copy it, add to chat and be like, explain this please. I suck at coding. By the way, this is, I think, much helpful of a framing. A lot of people say, I don't know how to do something. Much better to say you suck at it. Way better, right? Do you run or not run? Everyone fucking runs, but you suck at running. And so let's try to move to here and say you are a designer. You're just a shitty fucking designer. You just suck at design, but you are a designer. You are an engineer. You just suck at engineering. You suck at— by the way, engineering is just math and physics. So just say you're an engineer who sucks at math and physics. You know, that's, that's, and tell the AI you suck too, and they'll help you out. So anyway, let me do that and see what, see what it says. I don't even know what it, I would never ask this, but yeah, I mean, you know, oh, it's, oh, see, look, we, it's funny, we edited the image. This is a good example of like why you need to get rid of technical debt. It's like, this is something in my head, but I know that we updated this icon without actually changing the name in the design system. All right. So this is a good example of like, why do we even, why do we just have the SVG of the X right in here? And you'd be like, oh, that's like ugly. It's like dirty. It adds more lines of code. It's like, well then just hide it. Like just download a plugin. Like I downloaded this plugin cuz I don't like looking at Tailwind if I'm building shit. And it just hides the classes. So like all of a sudden you can work with Tailwind without seeing any of the Tailwind, right? It's all gone. So, uh, what's the— you know, there's basically no reason to reject this stuff, I think, at this point. Uh, yeah, so, you know, you can just ask, ask kind of questions. But yes, it is 100% necessary to learn how to read code, at least to a basic level, but you're not saying anything. You're like, is it necessary to breathe? It's like, yes, it is necessary to breathe. It is. For the one-person company, how would you recommend designing? Honestly, just go straight back. I will never use Figma again, frankly. I have zero interest in— I love Figma. I'm an investor in Figma, but I can just— why would you use Figma if you can just build stuff? And design stuff in code. I can show you an example. So for example, on Friday or Saturday, I can't remember, we have this product called Helper. And I can go through, like I mentioned, how we do stuff currently. So you can go into our Helper roadmap and you can see all these things that need to get done. There was a whole design needed column. It was like 10 of these, right? So we need to charge for Helper. Helper.ai, if anyone's curious. We need to have— we're building this feature where you can answer with a workflow. So instead of replying to every ticket, you should kind of like set up a workflow and it'll answer all tickets like that. You know, there's some bugs with the prompt proper spacing, adding keyboard shortcuts. And so I went through— this is in 2 hours— I went through and you could see, I mean, you could kind of see it here and like, you know, 4 days. 4 days ago, 3 days ago, I guess. So I went through and I went through every single, literally all of them, because there's zero left, zero left. And these features would take weeks to ship, right? Because it has to get scoped, design, design asks questions, design system and Figma, right? Like all of this stuff. And like already some of them have been merged. So this, this is one, uh, that I did. Uh, so someone had a question in Slack, so let me show you like what that process would look like. Someone asked about helper and said, where is it? Oh yeah, here it is. So here's an example. I just open this in a new window and close this one. All right, cool. So there's a conversation that happens, right? Engineers using Helper, our customer support tool. Da da da da. There's like a long conversation Friday at my time, 2 AM. We have people all over the world, so probably not 2 AM where they are. 2 AM, da da da. This is, you know, like, 30 minutes, right? Uh, whatever. This is like some, you know, whatever, some conversation happens and then it gets filed, it could get filed into. So I just comment and I say, what if we added visit to the message sent flash message next to undo? This is what Notion does when moving a page. If you ever noticed that, if you move a page in Notion, right? Look, it does that thing. So someone says it's better and like, This is like, you know, an hour, but I was doing other stuff too. I opened this PR. I literally go into Cursor and I go into Cursor and I say, I literally just basically say this, right? Add visit to the message prompt. And it generates this code. I have not read any of this code, by the way. I literally, as I'm scrolling, I'm still not even reading it because it doesn't matter. Right. If you want to read it, let's read it. Let's go slower. If you want to learn how to code, now's your chance. We're learning how to code right now. Let's open up the font size. Let's remove whitespace. So this shrinks a bit, hopefully. Yeah. So what you're doing, action, this, whatever this variable is changing to actions. Okay. Oh, I also added an exclamation point. Actions, visit, it just adds this new one as text, as a callback. I don't know any of this. I still don't know what any of this means, but it seems reasonable to me, right? You're basically pushing like on click, I guess, it's going to on action click, presumably it pushes this change to the URL structure. And this URL structure matches this, so it seems right to me. And then this is why I hate coding. It's like shit like this, you have to make sure you didn't fuck up. So Cursor does all that perfectly, changes the action to action. I wouldn't have known this, but I guess this is like, I don't even know, React, Next.js, who's to blame or credit for this change. But I guess this is how you make it an array of dictionaries. So that's cool. I didn't know that. I learned something. Actions. This, I don't know. Sure. Sounds reasonable to me. I don't know any of this stuff. Sure. This is actually really cool. Like, I think this is actually a benefit. Like, this is like a user experience benefit because it adds this finally set busy thing. I was like, okay, well, what, what is that then? I'm kind of curious. And then I realized what it does is actually busy already exists. So it's actually fixing something, which is what it's fixing is you can't click the button twice. So that's something I would have done. And then imagine how much more time it would have been if I opened the PR without that. An engineer would comment and be like, hey, you know, if they even noticed, yeah, you know, like you can double-click this and that's weird. Like you want to make it only one click. So AI somehow knew based on this context, you know, and basically shipped this thing. So this is you know, 80 lines of code. I, all I did was fill that out, open a PR, he approved it. That's all he had to do. That's all the engineer had to do. Like they had to test it and they had to give it back to me and then it got merged. So that's an example of something that really only 1 hour, 2 hours or something and that became like 2 minutes. And I have examples of this. Like another one was, and I'll go through my notes later. This one where I wanted to add something in the sidebar. So imagine here, you know, you'd have like a little thing just like this. And this is what it came up with. This is the first iteration it came up with for Helper. So it's slightly different design aesthetic to Gumroad, but I didn't have to tell it anything. It just knew. Based on the context, how to make it look like. And then this is why I got— I get paid money. Literally all I did— this is— and this is still valuable, but now the designers can focus on this aspect, which is like, well, it should be yellow. Why should it be yellow? Well, the reason is it's the most important button on the entire screen, and the designer knows that. And so we should use like the important button. So that's what the designer value becomes. And I lowercase this, so, 'cause I think it's easier to read auto replies. It makes it feel like it's a single word. And so that's what I changed. I lowercase this and I made it yellow and that's it. And then I opened a PR so you can go back here and it's the payment gate. And I just said that. Yeah. And now guess what? The engineer can just build it, right? They can just go in. I still don't know what any of this means. It doesn't matter because if I wanna make a change, I just highlight the whole thing and I say, make it more rounded or make this, this or make that, that or that, that, or, you know, like I literally, I arguably, as I was mentioning to Josh, like why do I even need to see any of this stuff, right? Like I should just be able to see like payment gate. Actually, arguably I should just be able to see this, like the component itself. Right? I mean, why do I even need to look at the code at all? So yeah, so I went through and in like 2 hours one night, I literally just went and I just went through the codebase and I just did this. And like, think about each one of these is like a multi-hour feature. And they're not all perfect, by the way. Here's the payment gate. I already showed you guys. Answer with workflow. So we're adding this new button, answer with workflow. It pops up this modal. It has these tickets listed so you can see which ones it would be applied to. And then you hit answer tickets and then that's it, right? And so I went through and I just cursor my way. I selected the files. You know, I just stubbed this out. So this is, you know, this is my failing. I'm not good enough engineer. I'm not ramped up enough on the code base to actually do this myself, but that's fine. I don't have to automate the whole thing, right? I can just take like this part of the engineer's job. Like I'm now able to do all of this. The CEO is now here. Right. All of that. So now all of the billable hours, all of the stuff that the investors have to pay for, because I got paid a full-time salary, so it doesn't matter if I fuck around all day or work all the time, right? So all of a sudden investors are just paying for this part. Imagine how much money you're saving just doing this. Right. That's it. Because all there's like the backend engineer, by the way, just does one prompt. To fill out all this and they're done, right? I mean, it should be one prompt for them, just like it was one prompt for me. So all of a sudden this sliver becomes like this thin, right? All of a sudden you get rid of all this crap and you get rid of this too, because I'm happy because I'm the one who did the design. Like I did the functionality spec. So I— this is gone, this is gone. This is gone. All this is gone. I'm doing all this now. And it's free to the company basically, right? So like all of a sudden, like 20 hours is now 10 minutes of billable hours, right? Which means 20 hours, you can ship 20 things, 30 things, 40 things, 50 things. I mean, our entire roadmap for 2025 is going to get done by the end of this year. Like, literally, I mean, like, I'm— I— we don't know what we're going to build next year. We literally don't know because every— everything, you know, you know, one, one year, how many, how many, how many months are left in this year and next year, right? So there's about 2 quarters left. There's really 1, 1.5 quarters left. So like I said, 5 months, right? And then a year. So 17 months, right? So if you get a 17x increase in speed. That's 1 month. So in 1 month, because, right, all of these are done. I mean, this was literally a quarter. I mean, like, each one of these, to go back to this, right, I wanted to add a thing. So you click bad, you supply reasoning, it goes into the LLM, right? Persist mailboxes, I attempted to do this, right? You just use the local storage and you set this, right? Whatever. I don't know. Maybe it's wrong, maybe it's right. Non-reply. If there's no reply drafted, I wanna show this, right? Beauty. Like, think about how, like, where's the CSS? Where's the, like, there's, think about how little context this AI needs to ship that feature when you use Tailwind, right? Like, this is it. There's no CSS that has to get loaded in. It's already in the brain of the AI, right? All of this. And it did all of this. It filled it in properly. It filled all this crap in. And the engineer is just going to take this and within 2 hours, 3 hours of their time, get it to production. I did this. This is like a backend fix, but similarly, I had AI write it because I don't know how to update this properly. So I had AI would do this one in one prompt. This one I started as well, copy to clipboard. Awesome. This is another reason, like why would you roll your own copy to clipboard component? Just use something that already exists. This is probably well tested, it's probably accessible, it's probably well designed, it's probably built by Facebook engineers who get paid a million dollars a year. Why would you do it yourself, right? I fixed these because I didn't like them. I like the fact that they're lowercase. So I just went through and said, make these all sentence case. It also improves things. I can notice like this was mismatching this. Well, it turns out this is better. So like AI is often right when you're wrong. It did the copy thing. It came up with its own interaction for it, which I like. It's great. It's better than what I would've done. Boom, boom, boom. Presumably it's using this the right way. Super easy to understand what's going on. This is the prompt. Copy the clipboard, this is what it copies, or this is the function that runs when it copies it, whatever. Again, these are all really trivial stuff, right? I'm not doing anything kind of crazy. Uh, this is updating to use Claude 3.5 Sonnet keyboard shortcuts. This is a, this was a fun one, by the way. I love this one. Uh, it did a really cool clever thing, which is it updated the button component to add a shortcut key. And think about how much— like, I literally don't think about writing code, right? Like, so like, if I had to look up like, okay, how would I do this? Okay, how would I do this? Okay, so I mean, this is literally like a technical interview question, right? You'd be like, okay, you have a button. And just to show you guys, like, this is like the work that Cursor is doing that you don't have to do anymore, right? right? So, like, okay, let me figure this out. I might fail, but you have save and you want the save. Basically what I wanna do is I wanna underline the save, right? So I just wanna underline the save. Okay. So basically you have to pass two things. You have to pass the, the, the, the thing that you want, right? And then, okay. So then in the button function, like I guess in the render of the button, instead of just rendering like whatever button.text or like .prompt or whatever, you now have to loop through this. I don't know how fucking loops work in TypeScript, but you'd have to basically split this into each character. So, you know, for character in— this is wrong, I'm not writing Python, by the way. I'm not even— yeah, but for character in the text, and then you need to do an if, you know, c equals shortcut. So button.shortcut, I guess. Whatever, you know, render, and then you want to render the a, you know, like maybe span class. Oh, can't be class underline because, uh, you know, that's custom to my design system. I'd have to load in all the CSS. So it's probably whatever. I don't know what Tailwind does, but like tx underline or some shit. Um, probably, right? Text decoration underline. So probably like td underscore u would be my guess. So like Let's make a guess. Let's make a guess. That's what you're supposed to do. pd u, and then you put the shortcut button shortcut, or c, actually either one would work, but whatever. And then you close it. And then else, if it's not matching, you would just render the actual C. So you just render C, right? So then, yeah, so you have this like button and it renders. Okay, so even think about how much I have to think about processing. Okay, there's a button component, there's like two things that go in and this and the C and like think, think, I mean, like if you don't know how to code, like think about how much Stuff is happening. I mean, this is like if you pay $50,000 a year to go to Columbia and, you know, their data structures and algorithms class or something, you know, somewhere in the first couple years of school you'll learn this. Like, you'll learn for, if, else, whatever. All English, by the way. English words, right? As I mentioned, like, uh, not porqué. There's no porqué in any of these languages. Uh, so let's see, let's see, uh, Let's see what happened. Okay. Shortcut key string passes the shortcut key. It rendered. There's a render label. Okay. That's new. It's a new function. Why does that exist? Oh yeah. Because like you have to, there's some rendering that has to happen now every time instead of just like hard fixing the label. So what does that look like? I mean, not like my code, for example, right? That's not, but by the way, if I just wrote this into the prompt, it would get it. I know this because I didn't have to write this. I mean, this is one prompt, right? I just said like update the button, you know, update the button to like take in, you know, like basically underline one of the, the one that matches the thing. Okay. So it did it basically. It, wow. It's like better than what I would have done. I think it's kind of cool. Which is it. So like, okay, here's my version of it. Uh, the reason that people don't like it is, uh, uh, is basically this, like, this for loop. So every single, you know, imagine you have a super long thing, like every single one has to say S, is it this or not? A, isn't this or not? V, is this or not? E. Imagine I'm getting interviewed at Gumroad. That would be, if I were the person being interviewed, I would have presented the solution and then the senior software engineer interviewing me would have said, "Awesome job, Sahil. That's a great first attempt, but it's pretty inefficient, right? You have a for loop that runs for every character." It doesn't matter, honestly, because our computers are insanely fast. You never notice it, but You know, like, I don't know, it's also not super readable. Like, what, what's happening? Like, could you, could you basically refactor this, uh, to get, you know, to get out of the, uh, you know, the for loop, right? And so I could go to AI and just ask, and it'd probably tell me how to do it. Um, but basically what's happening is it's taking this save, it's finding the key It's underlining it by putting a span around it, and then it's taking the stuff before and putting it before, and it's taking the stuff after and putting it after, and you're done. And that's cool, that's clever, and that's what this code does, right? It's, uh, first it's checking that these things exist, uh, maybe that's not even necessary, the engineer can decide. On that, it might not actually be if you're assuming that there's always a shortcode, or the label is always a string. So maybe that's not necessary. And this, by the way, I could always say this, right? Like, is the type checking on label necessary? And boom, all of a sudden the engineer doesn't have to think. They can just move faster. Oh yeah, that was a good thing you would have thought about. It's not necessary. Clean. Done. By the way, Why can't an AI take a look at this comment and address it? Why does another human have to do it? So that's a whole other level of efficiency gain that's going to happen soon, which is bonkers to think about. But that's what it did, right? It got the— this is nice. It lowercases it to make sure it's always going to match. It lowercases both of them. So if the S is capitalized or the A is capitalized, I just don't think about that. And then It gets it, it gets the index if it's present. So if it's not present, don't do anything. Don't even run any of this code. Return the label sliced from 0 to the index. So the stuff before the index and the stuff after the index, and then just do a span class. Oh, I guess it's underlined. So I guess Tailwind hasn't underlined, it's just underlined. Cool. Good to know. Uh, And then, you know, it just gets the labeled at the index position, which is the shortcut key. You can put shortcut key here, I guess, too. This is kind of nice because it's, it's like very cognitively simple and refreshing, right? It's like, take the label, slice the beginning slice, and then take the index, put it there in the underline, and then the remaining. And like, I don't need comments. I don't need AI. It's like, it's just, it's better. It's literally better than what 90% literally of engineers would come up with, including myself, as you literally, as you just saw. So this thing is producing like better quality code, uh, than, you know, than— so I did another one, highlight essential text. I think this is gonna be super cool as a feature. So imagine you get, uh, a long support ticket and, you know, at the bottom it says, so could you please delete my account? It's like all this stuff, but all you really care about is, so could you delete my account? Like 3 words, right? And so how do we do that? I don't know. I literally didn't know. So I just asked AI how to do it. And similarly to this kind of thing, it came up with a reasonable sort of solution, which is you just need to save it somewhere. So it creates the migration for it. But All it does is generate with this prompt. Actually, it's kind of bonkers to me because I thought there'd be more work involved, but actually because it's already rendered in HTML, all it does is run this prompt. So this is the alpha of the feature we're shipping, right? All this feature is, is wrapping around this one prompt, which is automatically highlight the important parts of support tickets, keeping the original contact content. Intact, but visually emphasizing the key information. This is why I get paid the big bucks, right? This is why our product is gonna be better than other people's products. Other people would have done this bit, which is exactly what the problem states, what the AI probably would've done, what most of my competition, our competition would've done. I believe we're able to build better products than our competition. But why? Like, why do I believe that? It's not because we're better engineers, though we are, and we're better designers, though we are. It's we're better at those things because we can empathize with the user and what they want. And what the user really wants is they just wanna see delete your account. Meaning the goal is not to highlight the essential text, but to dull the rest of the text. Right? And so that's what I did here. Do this. It's the same desire. So I don't wanna manipulate the, the scope. It's still the goal is to highlight the essential text, but the way you do that is by adding this class, which is, I can say because it's just Tailwind, right? Literally it's just Tailwind. So add this class text-gray-500 around anything that is considered non-essential to answering the ticket. It makes a request to Claude, it comes back, and instead of displaying the normal text, it shows the highlighted text, which all it does is that. And so this complicated feature that would go through design and all this variation and suggestions and options and this, like, if you know as the person who wants the feature built exactly what it should do, like, just fucking design and build it yourself. Basically, right? And so that's what it does. How many more to go? Oh yeah, there's another feature, which is basically if you forward an email to the help support, you wanna include it. So it does that, right? I kind of like this aesthetic. It actually came up with this by itself. I would've probably gone with like a box, like another sort of circle within. And by the way, you could do that. You could just say like, hey, could you update this to be a rounded box is slightly darker than the parent box, uh, so it looks more like a thing. But I kind of like it, honestly. I think it's nice. I mean, this is one of the nice things about AI is it goes with the defaults. And so you end up with boring software, but the truth is that's what boring software wants. And if you want more, less boring, just pay the designers, just go into Tailwind and make it different, right? Just do whatever they would have done anyway. They can still do, they just do it directly in the code instead of in Figma. Uh, what else is here? Conversation summaries. Oh, this was another one. I mean, this was a great one too, because this was actually a customer support person. And this is, it's kind of crazy because we already just optimized the crap out of this flow, but it's about to get even more, more efficient. Uh, but let me show you guys this too. Here you go. Oh, sorry, let me do the same thing, pop it out again. Here you go. Cool. Awesome. Check this out. Check this out. A customer support person at Gumroad suggested this feature. Wouldn't it be cool if this happened? Not sure how feasible this is. This is what prevent stuff from happening, right? This is like, it would be cool if I could do all this myself, but I can't. So it would be cool though, wouldn't it? So you put it in Slack and then it goes to Notion, then it goes to Figma, then you're right. And so what I said was, well, honestly, the design system that we have in Figma is pretty good. It should be in a place where it's possible for everyone to ideate things. Never worked in Figma before. This is why I say when people say, oh, I'm not a designer. It's like you are a designer, you're just shit. He's never worked in Figma before, but here's a rough idea. Not only did he give me a design, he gave me a fucking prototype. Isn't that crazy? Like what most people— most just, just for the record, like most people who apply to Gumroad as designers are not at this level of conscientiousness, right? So like, why would we hire any designer who's not willing to just like, I mean, like your, like our customer support team can now do this. And soon they're going to be building stuff, right? So the bar, like, how do you get a job? It's incredibly difficult. Getting a job is like getting married. Like you have to find the perfect company that needs you because the truth is, you know, most people don't at this point. So anyway, so I, you know, I had some feedback. You did another version. We talked about it. And then I said, this is like Thursday at 7 PM. Friday morning, I guess I respond. Yeah, so I guess I respond. Oh yeah, I responded right away, I guess 2 minutes later, try mocking it up. So again, never worked in Figma before. Here's a rough idea. This is 4 hours later, like Friday at 12:30 AM Thursday. I mean, what? Like, like people say they're not designers. Are you not willing to spend 4 hours? Do you know? Uh, that's it. And all of a sudden you can literally build prototypes. So he built it. This, he built this. He literally hooked up the links to links. I can click them and they go places. Summarize conversation, it shows this, it works. Oh, he hooked up the X. How many designers send me this and don't hook up the X? I'm telling you, most people. So, I mean, incredible. Incredible. It's like, it's crazy. It's crazy. So, you know, I had some feedback. I said, what if they were inside the conversation? Inline might be better. Again, this is why I get paid the big bucks, not to actually design or code, but just to write English. And what am I doing? I'm basically prompting him, right? I'm just the prompt engineer in this case. And yeah, so we have some back and forth, blah, blah, blah. Let me whip up another design. This sounds like AI talking. You know, let me whip up another. It's amazing. You know, 3 hours. So, you know, that's 3 hours of billable hours, which I'm happy to pay, by the way. But think about all that time that like soon AI Make Designs is going to come out and this would have been like 10 minutes for him instead of 3 hours, right? Did some more. I just replied, we'll code up a version tomorrow or Monday. It didn't actually have like the, you know, the day of say, I basically just went into Cursor. I just pulled this out and I just said, do this. I said, what do you think? Alternatively did another version of it. He likes it. It looks much less cluttered. Awesome. You know, we designed this feature together and then I just made some changes and I opened the PR and then, you know, I didn't do all the work yet, right? All I'm doing is displaying this conversation summary in the right place. But all of a sudden, like, an engineer can come in and like grok what I'm trying to do. This is way better for an engineer, in my view, than going into Notion, going to Helper, finding, you know, this— by the way, I don't even know if we need Notion anymore, right? We don't. Why? Why? Like, why do we need Notion? Like, what's the point? Seriously, I don't, I don't get it. Like, what, why do I spend the time? Answer with workflow. Product scope, putting all this stuff out, which I did this before I learned about Cursor, I think, or whatever, and I brought them. But then guess what? I learned about Cursor. I downloaded it, I got it to work, and then I just did it all myself. Like, I waited for a designer to get to it, July 10th, and then I just went in and said, hey, I subbed it out. You know, and I did the parts I could. I opened the PR, I linked to it. There's like 100, 250 lines of code in here. And the cool thing is engineers can come in and they can just keep going. It's all version controlled, right? So I can go to bed and wake up the next morning and the thing will have shipped. And the thing about All of these things, they should all be done literally by the end of this week. And this was like, you know, this would have taken 3 months because you have 2 engineers, they need a lot of, you know, back and forth, design gets looped in, design needs to update the design. Like there's so many steps that are just completely, completely gone. Okay. So yeah, so just to go through quickly, here's the actual prompt, uh, that I went through. Uh, this is what I typed: above the settings navigation item, add a section that is a payment gate. So, you know, like for example, I'm telling it payment gate, right? Like that's alpha, right? Like that's something that like a junior engineer designer may not know that terminology. How do I know that? It's cuz I've spent a lot of time learning this craft., right? So like that's still incredibly valuable. Uh, just like if you're a writer, like learning the dictionary is still essential because guess what? All these words are in the dictionary, right? So like it's still important to learn. Uh, add a section that is a payment gate. It shows that you have 0 out of 100 automatic replies sent and will have to pay to send more. Design it, it, I should have said, nicely and in our style. Simple, minimalistic. High copy, rounded button, centered text, maybe a— for example, all of this, why can't that just be cursor rules? Why do I have to teach people our design system, right? All of our design system can be turned into English. All of it. We use rounded buttons, not square buttons. We title case— we don't title case, we sentence case. We like serif over sans serif, like literally everything. And I can show you this actually, because I can show you the Gumroad design system. So let's open Figma. Yeah, we have a design system that, that Figma— I'm literally just waiting for Figma to launch this thing. But yeah, so Gumroad has these guidelines. All right, so boom, you go in here, you go in here, and it works, right? It's all right here. We spend the energy figuring all this stuff out. It's not an accident that Gumroad looks fucking good, right? It's not me fucking around. All this stuff has already been figured out. Long time ago, all of our colors and this. So we should just frankly be using Tailwind, and the only thing that we need— should need to feed in is one Figma file that has our colors, our fonts, you know, whatever. Like, why, why do we even need multiple files? We should have a single— like, sure, it's useful to like spin up stuff, but we only really need one, uh, design system file. How we do illustrations the shapes, the whatever, the overlays, the shadows. We spent a ton of time thinking about this such that we should never have to think about this again until we do a completely new design system. And this works, by the way. Here's an example. It can work for sales. See if I'm logged into my Cloud account. But this works for sales. In fact, I created this. For sales. And I said, uh, you know, anyone can use this. Anyone can just write sales emails like we write, like I think we should, uh, and everyone— I'll give you all of my secrets away. It's in my book too. I wrote a book if anyone wants to read. There's a chapter on sales. But really it's just a prompt. Every book should just be a prompt that you copy-paste. I mean, that's all you really want anyway, right? And so let me say I found someone on Twitter, uh, Matt Mullenweg from WordPress. I heard he does dividends, so I was like, Okay, hey Matt from WordPress, big fan. Let me imagine I hire like a really bad salesperson, right? Big fan, big fan. Wanna pitch you on this startup I just joined, buy stuff from Gumroad. Let's say I misspell that. It helps do dividends. Yeah, actually, let's remove that because that's like too much alpha. Like, that's even too good to like specify that. That makes it too good of an email. So, it helps you dividends. Do— would you like chat? Okay, like, like, whatever. I mean, this is how people talk if they want to talk in their personal lives. And it just takes it and it just changes it. Pretty good. Honestly, I'd say this is better than most sales emails I get personally. I get a lot of sales emails. Hi Matt, as a WordPress enthusiast, big fan, big fan. As a WordPress enthusiast, uh, I thought you'd be interested in Flexile. It's a groundbreaking tool that simplifies dividend management, produces like yours, Flexcel. Okay, well, I would have preferred it say something about Gumroad because I think Gumroad has more of a brand thing. You might be more familiar with it, say, solving our own problem, right? So then what do I do right now? I would tell the sales agent like, hey, this is how I would have done it, right? In Slack or something like that. But I should never need to do that again. I just go in here and I just say, oh, don't reference Gumroad. That's probably fine. All right, boom. Save it. Go back, take the original one. Okay, this is kind of weird. A game-changing tool. Like, what the fuck? Who talks like this, man? This sucks. Same instructions, do it again. Boom, boom, boom, boom. Right, and keep doing it. I mean, imagine— I mean, I spent like 3 seconds on on this, man. Like, imagine if I just spent 30 minutes, 1 hour. Like, basically any single person in the world can now do sales for Flexile. I mean, like, at this level, there's still more, but like, this initial— I mean, like, but, and there's people building like AI startups for sales. Like, why though? I don't need it. I have Claude that provides me the model. I have Gmail, right? I mean, like, I don't need— like, it's free. It's like $20 a month. I don't like— I don't need it. This is all it is. It's like a single prompt. Like, don't build a product, uh, where it's— you're just wrapping around a single prompt. I think you can build a product that's wrapping around hundreds of prompts. And by the way, that's kind of my point, is you can— your competition, like, you, you can still compete, but like, just like Gumroad is compelling, not because we have one feature, but because we have all of these features. We had to build all of this stuff. If we're just Stripe payment links, but pink, no one would use it, right? We built all of these things. So basically the bar for what you need to ship in order to be relevant is crazy high. And it has been for a long time. Parker from Rippling came up with this concept called compound products. So Rippling does a lot of shit. Basically every product should be a compound product. There's no real excuse. The bottleneck was just shipping code. Right? Literally, uh, it should not be like you should get as much functionality like Flexile, Helper, Gumroad. They're terrible basic products compared to Google Maps, compared to Facebook, compared to Instagram, right? And so those products should be that crazy good in like a year. Basically, that's what's going to happen. Uh, if they're not, then everyone gets fired because I don't need anyone. I mean, either you're able to deliver crazy amounts of value, or I do it myself. Again, that's always been true, nothing new. People will find ways to deliver a tremendous amount of value. That's why I get paid the big bucks. It's just to make it yellow. I just put in a couple of tweets in here that I thought were pretty compelling and interesting. From Cheyenne, I'm more bullish than ever on simple tech stacks. A good metric is the number of concepts you need to understand to get going. Reduce these to the minimum necessary, right? So basically, this is all, almost all of my focus at this point is like, how do I reduce the burden of shipping? How do I reduce the burden of shipping? We're going to get rid of our staging environment at Gumroad. We don't fucking need it. We don't need it. Why do you need a staging environment? Production is the staging environment. What if it's broken? Then fix it, right? I mean, if it's— there's this assumption that things take a long time to do, which is why you need staging, is because if it breaks, it's going to take a day to fix. But we need to completely move into this world. Like someone asked, like, why do you commit? Why did— like, why not auto-commit? Even Josh Biggerford was like, "Oh, that's a bit aggressive, don't you think?" It's like, actually, it's not aggressive at all. The idea that humans commit code is insane. It makes no sense. You should just build, you should just name your feature and start building your feature. It just syncs with GitHub and as soon as it's done, you open a PR and someone else looks at it and merges it, right? I mean, like, committing— like, what the hell? You, you literally— it's gonna be like, hey son, back in my day when I was, you know, I learned to code, we committed, we committed code. We typed gca -m space quotation mark cp. Nobody wanted to type. That's why we just typed fix and cp. But no one actually solved the fucking problem of the commit in the first place. You know, I mean, that's basically what's gonna happen. I'm gonna have that exact same conversation when I'm 80 years old. Uh, anyway, I mean, at that point it's gonna be like, you wrote code? Like, you actually were still writing the code? Uh, which I have a cool demo I want to build in the next 3 weeks of something that I think we could, we could build. Uh, but, uh, yeah, I mean, I think I covered Covered that. Next week I wanna talk about legal finance and ops and how Cursora and Claude and all these things apply to that. And then I actually wanna ship a lot of features. So I'm gonna spend the last two sessions actually just shipping and shipping. We're gonna ship basically two very different code bases to show you kind of examples. Helper is like new Next.js, Tailwind, Ideally, we just move exceptionally fast on that. And then Gumroad will be slower, not Tailwind, but we should still be able to do a lot. And especially things like, you know, like for example, like, oh, I wish this had new button. Like, okay, well just fricking open the code base, right? Just do this real quick. Let's go. Okay, well what is this called? This is how I work. I just look for, I just try to find it in the Codebase. Okay, why is this not even loading for me? Okay, I don't know. Well, whatever, it's fine. I can just search insert page. Okay, there's no insert page. See, this is annoying. Why isn't there? This should be there. This is a flaw. It's because there's no insert page listed there, right? Uh, well, that's annoying. Well, let me just chat with my codebase, see if it can actually find it for me. Toolbar, toolbar editor. Probably one of these two, you would think. There isn't. Okay, dynamic. Okay, will you show me where it is? Insert or page, page. No, not here. Weird. Rich text editor page insert. Yeah, see, so that's— it's like, it's like the fact that the UI is not great is almost evidence that the code is not great, and it like kind of feeds meet each other. Oh, insert posts. That's similar. Interesting why I can't find that. Yeah, I don't know why that's not actually— okay, there, not closer to it. Toolbar. All right, there's this guy. It's in a span for some reason. I don't know why. Okay, toolbar, create— oh, create page. Oh yeah, that's right. Okay, I found it. Cool. Create page. So I just do this. I, I don't even know what, what's in this file. It doesn't really matter. I just Apple A, Apple K. I say make it so that create page is text that exists next to the icon that represents that action. Submit edit, have a blast watching it just go through the entire code base. I think, I mean, this is it. I could have been more specific with this, but this is like the level of quality of Claude. I mean, this is like a 750-line file. Uh, but it's going through it and you can see it go through it right here. It's not making changes. It's only going to change the things, you know, and I— you can kind of tell it's probably just going to do that thing, right? It's just going to add like some text on screen. But again, I want to go do something else and so I'll come back later. Uh, and you know, I'll do my little talk, I'll answer some questions, and we'll come back and see if it actually Oh, why did this go away? Cool. Okay, so I talked about why now, why it's so critical, what's gonna change, not as much as you think. Basically, you're just bottlenecked by your own laziness, your own energy. The only reasons those 15 things in the top are not actually shipped is because I ran out of energy. I could have kept going and I just ran out. And so, uh, yeah, the way I kind of think about it is that basically every army needs these, these roles. Generals, soldiers, archers, cavalry. You always have them. Like they're, they just fulfill different functions. There's like different ratios to like how good they are at certain things. And so like when new technology comes in, like a sniper rifle, you still have cavalry, you still have archers, you still have soldiers, but like the sort of ratios between them change a lot. So I think that's what's gonna happen is that the ratios are gonna shift. That is, you know, in this case you have, you know, like customer support, you know, you have your designers, you have your engineers, right? All of a sudden, maybe you don't need any designers or maybe you need 30,000 designers because they can all code. They're these basically everyone will compete. These are the actual people who compete against each other. Like if customer support can do design, then maybe we don't need designers. But the designers may do customer support or they might do engineering. So it's like, it's kind of a game of musical chairs and everyone has to just fight for a remaining chair. The other thing I read is some study, and you can probably even tell by my guess is people who are tuning in or watching this on YouTube, but like there is a gender gap it seems with learning AI. I think that's normally, that's probably just largely because men are obsessed with making money and AI is just like, just associated with making money, saving time, all that kind of stuff., but it's broadly useful to everybody. I think it's like copy paste. So I don't know if send this to someone of the opposite gender, you cannot help but balance the gender gap if you do this, just whatever you are, the opposite would be cool. And this is kind of the framing is basically like every single person is becoming my worst fear, honestly, running Gumroad is I like, YC company decides to compete with one of our products, right? Because we can't compete with them. I'm old. I don't have the energy of an 18-year-old kid. I don't need to win as badly. They can work harder. They're not in a relationship. They can just, you know, outcompete, outship. But all of a sudden, I feel like I now— the ball's back in my court because all of a sudden, if I can— the YC company only has 2 people who can ship 60 hours a week. But if I can turn my entire team into these kinds of people, which I will be able to do, then all of a sudden I have 30 YC founders and they only have 2, right? So like, I think there's going to be a— the, the olds, uh, will regain power. Just to show you that thread on Twitter, if I can find it. That was very— oh yeah, so like, I started Neo in 2022 versus— like, this is purely basically cursor. I mean, this is the fact that he's not actually coding, right? He's he's PMing a software engineer and he knows how to code. As I asked him, I knew, I had a guess, would this be Cursor+Quad? And he says both. How did I know? How did I know? What were the chances I got that right? Could have literally, there's a gazillion IDEs and I nailed it. So if you're using something else, I don't know, maybe reconsider. Very, very helpful. You still need to have the fundamentals, but the fundamentals you can learn in middle school, high school, It's like learning addition. You don't have to learn that much to be able to do complex math. He's been writing code since he was 15. And then Trurom, he's a partner at Andreessen Horowitz. This guy probably makes a lot of money, doesn't need to be coding, probably doesn't like fixing bugs, doesn't like syntax errors and all that crap. And he's shipping again. Without Claude, Cursor, and Copilot, there's no way I can do this again. So imagine you're an 18-year-old. You think you're gonna outcompete these people, and then all of a sudden they have— it's like, basically, imagine everyone is moving from playing tennis in real life to playing a video game called Tennis. All of a sudden, who's the best in the world at that video game? The tennis players who are retired. They could not continue to play tennis. Their body's physically capped out. All of a sudden, they're back in the game. There's robot suits they can wear to play tennis again. And so I really think there's a lot of crazy, crazy stuff about to happen. And this is why these companies— why are Elon Musk companies amazing? It's because he's actually the design engineer. So the Elon Musk effect is going to start perpetuating. More and more people will be able to take advantage. Just like the truth is there's very few people you are as competent in as many things. And then here, let me just show you guys this video. But this is a video I recorded. This is the first time I basically used Cursor. This is about a month ago. So this is what I first used it for, which is I basically wanted to remove something from the code base. I selected all the files. I used search on the left to find all the files. And it went through, oh yeah, it took like literally like half of my time is just like picking the files, right? Ba ba ba, ba ba ba. Remove from the UI and the codebase and then it just does its thing. You fast forward a bit. I just hit apply. It makes those changes. I open the PR, it gets merged and deployed. And by the way, deploying is automated already. Merging should be automated. Basically only QA by another engineer needs to happen. So it should be like prompt, button click, button click in production, right? And like no, no Notion, no Figma. Like none of that is gonna be necessary for shipping. You can still ideate in Figma, you can still ideate in Notion, but if you're shipping, it's just gonna be so much faster if you're willing to commit to just building it in this way, right? Like think about a, A designer who can go in and do this is going to ship 30,000 times faster than a designer who has to open Figma up, right? Like the time it takes to, to like set up, like learn a design system in Figma. You already know the design system. You're looking at the app, right? Like you're looking at the app you're designing. Why do you need a design? If you're smart, you can reverse engineer what the design system— like you are looking at the Gumroad design system. You need to open open up the design system to know, like, all of this stuff? No, it's right here. You know our design system, or at least the relevant parts. And if it's not here, it's not relevant, is it? Uh, so yeah, I mean, people worry about Tailwind and like, oh, what if like consistency and this and that? And it's like, well, it knows it, it's right here. If it's not, if it's not able to figure out a design system from this stuff, then like we're not doing a good enough job, right? So yeah. Uh, what else do we want to cover? Let me see if I missed anything. Uh, 3 hours is a long time, but I told you it can go by pretty, pretty fast. Um, let me move this off and review my notes. Uh, yeah, I mean, basically the next thing I'm going to do, uh, is I'm going to remove the deployment process from Gumroad. I'm just going to get rid of all of the steps and just go back to what it used to be like, which is you you just merge to main, it auto-deploys, and not like this, people are gonna start shipping like 100 times a day instead of 1 time a day. It's gonna be awesome. But yeah, next week we'll actually ship some more stuff for, oh no, I'm gonna talk about legal finance also. I think that's really important. But yeah, this is basically here. Let me show you my roadmap. This is like what I'm gonna be doing this week as the CEO. So you can see what I'm about. Not keeping any secrets. This is my personal to-do list. This is literally like what I look at, what I'm gonna look at tomorrow when I decide what to work on for the day. Oh yeah, I showed you guys this really good example of one prompt. Yeah, so basically how do I ship stuff like 20 times faster? Because we, I mean, that's like, why would you not? You know, make shipping stuff. How, how do I do this? Well, first inline CSS. Unfortunately, there's no real way around this. Designers need to be able to design in code. And the only way you're gonna be able to make that possible is with inline CSS. So that's gonna happen. So make that a checkbox. Make design. So Figma is gonna launch this. All of a sudden, you're only gonna need a single design system, one design system. And feature, you know, basically one design system file as I showed you guys. And then, you know, this plus prompt in code, but even this you might not even need because like the examples are there. So really this is just like English to generate design, you know, feature designs in Figma. All of a sudden it's gonna be prompts to like generate mockups. So like, for example, Josh had to go straight to code. One downside of that is you, you maybe lose some creative thinking. So all of a sudden the creative thinking is like the designer gets to do like 30 mockups, like 30 different variations, which is really what I want to see anyways. I just want to pick between like a few things. Code Connect is this new Figma feature. It's going to link the two. It's always going to combine these two. So basically you'll have these components, uh, for your components and code. So that automatically any engineer wants to make a change to a component, like I wanted to add shortcut key, right? All of a sudden it would flag and say, hey, you can't do that because it's like type checking, like in Figma, the, the button doesn't have that. Well, guess what? Currently you have to tell the designer to make that change, right? Because that's in Figma land. But why? The designer— the engineer knows exactly what to do. The engineer can click the button. It's not that hard for engineer an to learn Figma. I guarantee you that. And so the engineer should actually just go right into Figma, make the design system change, and get QA from the designer on the implementation details, right? So this is gonna— basically Code Connect is frickin' awesome and people are sleeping on this. No one knows it exists. And then what does this mean? Every single person does just does customer support. So just like I built Answer with Word workflow, which goes from like 1 ticket answered to 10, or, you know, 2. Soon you're gonna have answer with GitHub pull request. It's just like 200 lines of code merged, you know. And then all tickets answered. Because the— you actually— the reason you have customer support is because you can't ship that fast. But if you could ship that fast, like, just ship the feature, you know. Uh, we're also going to make it way faster to get onboarded. It takes too— if it takes 3 hours to get onboarded, that's fast. If it takes 10 hours to ship a feature, but if it takes 10 minutes to ship a feature, onboarding should be instant. Another reason we need to move to Tailwind is like, you shouldn't have to learn that. AI, when you get stuck, there's a new tool called Warp, warp.dev, which we're starting to use, which is basically a team terminal. So just like everyone has to mess with their own terminal and commands and all this stuff that you even saw me messing around with, I should never need to. The engineer should give me everything I need and everyone in the company should be like, oh, there's a script if you need that. If you get stuck, you hit this. And AI can be in all this stuff. So like, for example, why do I type git commit? It should be like commit code, right? Commit my code. Like, that's what I should type, English. So WarpDev is like kind of our AI terminal, team terminal. You know, basically all things should be a single line of code. You know, like if you want to download the Gumroad repo, it should just be like setup.sh. And then run server. That's it. You can run one line of code to run all of this locally. Should not take more than that. But right now it takes 10 of these, 30 of these, right? So that's gonna be the future. We're gonna work on that. All technical debt we gotta get rid of because, not all, some is good. Design debt is fine, but tech debt, like things that just basically mean you have to educate the AI just get rid of it, right? We have a 6-week trial at Gumroad. That makes no sense anymore with how fast people can ship now. So we're gonna change our 6-week trial to probably 10 hours of billable work. And you just have to ship. You get 10 hours, you basically have to ship something and you get to bill for 10 hours of work. And 6 weeks, guess what? You can find out if you get a job at Gumroad in 10 hours. So this is like, down from 120 hours because it's like 2 times 6, 20 times 6 weeks, right? So this is 110 hours of your time back if you're not a good fit. Boom. And then finally, shipping. Customer support ticket comes in, we discuss it in Slack, put it in Notion, then it goes into Figma, goes into design. Why? Why is it any— why? Why? That's all it needs to be. Why? And arguably, why do we even need GitHub? Why do I even need to open GitHub? Why can't I just have Helper? Why can't I go here and just right-click and change and it just opens the GitHub PR for another engineer to deal with, right? Like, why do I have to go here? Why can't I just say this? Why can't there be a button that says edit? I hit edit and it— I just say, you know, say what I did. It knows the route. The route, therefore, it knows all the components on the page. So like, why can't I just have a thing and just say, hey, right-click, change font size, make it shorter, right? I can't because there's a whole fucking design system. System that you have to learn. But if this is the design system, it's literally just what you're looking at, then it becomes way easier to just sort of— like, CEOs should just basically be able to right-click and be like, da da da, and then it just goes. All right. That was 3 hours of stuff. Hopefully it was productive. Hopefully it was useful. I will trim it down and publish it on YouTube and probably take out the live stream because no one wants like a 3-hour video. But I'm going to go through some questions and see what people have questions about. Also, I'll pin myself and then I can use the background. All right. Ben says, I'm a designer. I just add make this design pixel perfect in the style of a top meta designer on Instagram to my prompts. I think he might be sarcastic, but he's completely correct, which is like my favorite kind of sarcasm, which is like, that's exactly right. Like if you wanna design like Facebook, like don't hire a designer. Like there's zero point in hiring a designer because like the only reason to hire a designer is brand design. I tweeted about this today. I said design doesn't exist. Design is just gonna do engineering, but brand is design. If you think about what makes Gumroad good, it's not like no one thinks about the buttons and the things. It's like specific visual details, right? For example, a button on Gumroad is like this, and then there's a thing like that, right? And it's black. Right? So like you still have to tell the AI to make that and that, you know, so yeah, 100%. Like you literally can do that. I do it. I say make this look like minimal, like Helvetica, like 2015 Sahil style, or you want like stripe, like high gloss. Yeah. I mean, totally, totally do that. It's really awesome. And by the way, this is what designers should do anyway, right?, right? Like, you should be, you should be like designing. Like, you should not be like copy-pasting someone else's design. If you're doing that, then just don't hire a designer. There's no real point. Uh, it's like hiring a bricklayer. Like, you're, you're hiring a pixel pusher like a bricklayer. Like, you want an architect. You want to hire architects, right? You want to hire people who are coming up with completely new designs. Uh, I mean, Antonio says, uh, when it comes to actual UI design, UX design, who's going to rein in the crazy PM? I mean, the CEO. I mean, someone, you know, that's the CEO's job is to edit. You know, you still have editors in the flow. Don't you need Notion so others can understand what folks are doing? I mean, GitHub. I mean, again, like the only reason is because people are not committing as they write code. But like, if people are committing as they write code, like that's what people are doing, right? The only thing people are doing at Gumroad is shipping. So, and answering customer support tickets, which is why I think in this future, like you could live in a world in which you just have like inbound support ticket feature gets built and deployed and then email You write back with the email, right? I'm giving you guys some alpha into what we're building at Helper, by the way, but I don't want to say too much. But yeah, 100%. I mean, that's all you need. You don't need Slack, you don't need Figma. These tools basically assumed that engineers were a minority of the company, not everybody in the company. Otherwise, yes, 100%. You would— most, most people would prefer this way of working. All right. Any questions? Someone says 99% of people cannot see the diff between two design systems. Well, the thing is with when you switch to Figma, you're not— or Tailwind, you're not switching design systems. Like you're you're just changing the implementation detail of your design system. Your design system exists in Figma, right? Not in code. Code is implementation. Your design system, for example, you're an architect, your design system is in the construction drawings, not in the building itself. The building itself erodes, right? It needs to be modified based on the grade and the soil and the policy of the city you're building in. The architect has a perfect idea of what it should be in a— it's just in Figma, it's the design system, it's the construction drawings. So yeah, I think, I think, I think like re-implementing the design system in code is just like a bit weird. Like it should happen at a component level, a functional component level, like a button, not like spacing or like padding or like par— you know, stuff like that. Paragraphs make sense, it's a paragraph tag. But beyond like tags, like I don't think it should matter. Curious how, Colleen asks, curious how this new approach will tie to company vision, goals, KPIs. Do you see any checks before responding to a customer support ticket? Not sure all items are, I mean, at the end of the day, like it honestly is incredibly easy to QA, right? Like all I do is watch a video of a feature and say, looks good to me and merge it, right? So I think you could scale the CEO infinitely. I mean, like, this Elon can run 6 companies because frankly being a CEO is incredibly easy and not time-consuming at all. Uh, you're just saying yes or no to stuff. And so as long as you're okay with some wasted effort, which is totally fine because it's wasted effort anyway, scoping stuff in Notion, it's now just the whole thing is built when you say no to it. I think it's going to be great. I think you're just basically going to ship 10, 20, 30 times more than you were able to before. Tech debt's gonna go way down. People are just gonna embrace new tooling. But yeah, I think basically Gumroad and like the tool, I mean, you'll see it, like visit gumroad.com in like 6 months, it'll be completely different. It's gonna be pretty cool. What if your reviewer disagrees with the AI output? Uh, yeah, I mean, basically you just, you just write back in English just like an engineer wrote the code, right? You just say, hey, could you do it this way instead? Um, but just, you just say it in English and then it's done, you know? So yeah, I mean, it's the same tooling. You, this, all of this completely degrades, uh, sorry, gracefully degrades, right? So if you don't want to embrace Tailwind, well, just don't use it on your stuff. But Tailwind should still exist in the code base because so valuable for people who want to use it to be able to ship that way. So yeah, I mean, Gumroad is already here. I mean, we've been in this world for a long time in terms of how automated we are. For a long time it was just me as the only full-time employee. We're doing $20 million in revenue. So like $20 million with one part-time, full-time employee, free AI, like free any of the stuff I just talked about. So like take that scale and 20x it basically, right? Roughly. And 20x, what that means, uh, this— the reason I use 20x is one month is one— becomes one day because there's 20 business days in a month, right? So A 20x speed increase basically means, let's say it takes you a month to, and it does, right? I mean, like, think about one week, including back and forth, one week to scope, one week to design, and I'm being optimistic here, to be honest, but one week to eng build, and then one week to merge, get all the feedback in, whatever. To deploy, right? So right now it takes about a month for like a, you know, a major feature you're adding to Gumroad, you know, take a month. Now it should take a prompt or two, right? So one hour. I'm gonna be optimistic. I'm gonna be very optimistic— or sorry, no, very conservative on this side. So I'm gonna say one hour. One hour. I mean, think about how much we've been able to do in 3 hours. Like what Josh shipped, how much we're talking, like the 50— so much, so much. So 1 hour to scope, really it's like 0.1 hours. 1 hour to design, 1 hour, 1 hour, right? So 4 hours. So 1 month 4 hours. So it, so like someone emails in and says, hey, Gumroad should build this feature. I say, cool, we'll have it done in a month, but we can't have it done in a month because we have like other month projects, right? So in 6 months we can do your thing. But if all of a sudden it's 4 hours, one, maybe I should just do it now. I should move it to the top of the queue. Uh, or all these other things take 4 hours. And what I think will happen is we will just get rid of Notion because there won't be anything there. Because everything we want to do, we've done. Like, our— like, literally, I mean, like, what, what, what remains? Like, every single feature we're just gonna ship, and these projects will just get feature complete, basically. Uh, I have ideas for what we want to do as a company, I think, but, uh, but yeah, it's pretty, pretty crazy. So anyway, that was a lot. Uh, I'll edit this video. Hopefully it was useful. Uh, we're gonna do legal, finance, ops, and then we're going to talk about I'm gonna basically just like actually ship. I can't imagine how much shit we're gonna ship, but like probably 20, 30 PRs is my hope over Gumroad and Helper over the next month. So we do monthly updates at Gumroad and I'm thinking about switching to weekly honestly, because like so much stuff has happened in the last 4 days that the team's only gonna learn about like by the end of the month. Kind of crazy. Or not learn about, they see it all the time, like realize how serious it is. Is serious. This is, it's pretty serious stuff. All right, catch you, catch you later, everybody. See you next week.










