December 22, 20247 min read

Cursor wrote 99% of this website's code

#ai

I'm a software engineer. I get paid to write code... and I'm not sure how long that's going to last.

Ok, I'm not all doom and gloom, frankly. But, the truth is, I'd have needed maybe 3-4 full weekends to do what I did with Cursor in 5 hours1. Actually, saying I did with Cursor is misleading. Cursor is the one who created the website. I was on the sidelines.

Needless to say, it far exceeded my expectations.

I've been following LLM-skeptic2 tech YouTubers like ThePrimeagen, so I was expecting Cursor to be a just a fancy toy. Maybe better than the GitHub Copilot I've been using, but still a toy, in the end.

I decided to give it a shot regardless, since I had the access to the Pro version through work. And, boy, I'm glad I did.

What's so great about Cursor?

"Isn't GitHub Copilot good enough"?

Well... it's good. But Cursor is way better. The main 2 things it has over GitHub Copilot are access to multiple LLMs and the Composer.

Claude 3.5 Sonnet is amazing

Talking to GitHub Copilot Chat felt like talking to a rock. Looking at my chat history, it looks like I've asked it only ~100 questions in the 8 months I had it.

It's pretty funny, actually. Looking back, my conversation pattern was something like:

  1. Ask 5 questions.
  2. Get okay-ish answers.
  3. Ask another question.
  4. Get a horrendously dumb answer.
  5. Stop using GitHub Copilot Chat for 1 month.

4 months ago, I've decided to pay out-of-pocket and get Claude 3.5 Sonnet. Aaaand that's what I've been using since then. It's hard to describe why it's better than whatever Copilot Chat is using. It's simply smarter.

As such, having the ability to chat with Claude directly from my IDE is a huge plus!3

Plus, the chat experience is amazing in Cursor. I can reference some code, an entire file, Terminal output, paste a screenshot. And all that, in a quick and intuitive way.

Just Cursor and chill, bro ⛱️

That's really what using Cursor's Composer feature, with the agent mode enabled, feels like. It's what Devin is trying to achieve, but at $20/mo instead of $500/mo.

Essentially, you write a prompt with whatever you want to implement. Then, the Composer starts iterating on the task, until it gets it right (= until there are no linting errors...).

That's huge!

Here's how it looks like in practice, so you can get a sense of what this means:

Composer agent at work. You don't need to watch the entire video.4

It didn't get things 100% right. For example, I'm using a metadata JavaScript object for the blog posts' metadata, instead of relying on Markdown frontmatter.

But it's more than a great start!

Just a few more prompts and you've probably got this feature done in less than 15 minutes.

Cursor receive task? Cursor do task!

Cursor really wrote 99% of this website's code... and I really didn't look at it.

The code I'm writing isn't particularly sensitive. It's just a Next.js app that statically generates pages. No API calls. No authentication. Nothing. So, if the code generated achieved the visual result that I was expecting, I committed it.

This means that the project's code structure is, essentially, AI-driven.

It's not horrible. One could do worse with their very own human hand. But it's obvious that when I told Cursor to "do X", well, it just did X. No refactoring before-hand. No refactoring afterwards.

This is why I have 66 manually written hex colors, with some of them being very similar duplicates.

So I'll probably want to really look at the code and refactor it, as I see fit.

"It'll suck in the real world"

Maybe. I haven't tried it at work yet, since the winter holidays have just started. But I will, when I get back (and maybe write another blog post too).

But we're already here today. Where do you think we'll be in 1 year? Or in 5 years?

I'll just say this:

I wouldn't be surprised if, in 5 years, 80% of my code is written by an LLM.

I wouldn't have had this belief just 2 days ago, before trying Cursor.

Good bye, dear WebStorm!

To clarify just how impressed I am by Cursor, I am (was?) a WebStorm user. If you haven't heard of it, WebStorm is the IDE for web development, developed by JetBrains. They're the ones who also developed IntelliJ IDEA, if that rings a bell.

I've been using JetBrains IDEs exclusively for 7 years. IntelliJ IDEA, Android Studio, CLion, PyCharm, and now WebStorm - I've used them all. My brain simply knows how to use those IDEs. I've gotten used to the shortcuts and the UI.

Cursor is VS Code-based. Things in VS Code... aren't that nice, at least out-of-the box. The shortcuts are also different 5. I'm telling you, switching from WebStorm to a VS Code-based editor is a biiig step to take.

However, the reason I've been a loyal WebStorm user this long is because I haven't really seen a reason to switch... Until now! Cursor is way ahead of WebStorm, AI-wise. So much so, that if I was still using WebStorm, I probably wouldn't have started this blog.

So you know what? Maybe 2025 will be the Year of the Cursor.

  1. I worked on the website both last night and today. As such, I wasn't sure how much time I actually worked on it.

    So, obviously, I asked my good friend Cursor to create a script to look at the Git history and find out how much time I put in. I told it to ignore long gaps in the history, as that's when I was probably sleeping.

    And... It got it right on its first try!

    I even considered publishing a little open-source tool with this functionality, since I already had the code, after all. I just had to polish it a bit and that was that.

    But then I immediately felt that there isn't much purpose in doing that. Soon enough, whoever wants to figure out the time they've worked on a Git repository, will just ask an LLM to write the script for that - exactly like I did.

    Maybe that's the successor to open-source? LLM-source?...

  2. This isn't a dig towards anyone. Being a skeptic (= "a person inclined to question accepted opinions") is a good thing. But I feel like I've been disproportionately exposed to the skeptical side of the story. It's time to doubt the skeptics! :P

  3. I know that you can now use Claude 3.5 Sonnet in GitHub Copilot as well, as of October 29th. However, it's a Preview feature, and we don't have access to those at my workplace.

  4. Yes, I know I'm a filthy light-mode user :'(.

  5. I'm using IntelliJ IDEA Keybindings, yes. But not all WebStorm actions have equivalents in Visual Studio Code.

    For example, in WebStorm, you can press ⌘⇧F12 to close all the panels you have open, so you can focus on just the editor. Use that shortcut again, and the same panels re-open. I've managed to get the first part done in VSCode, but re-opening the same panels? Nah.