12 ms·
How I write code using Cursor
- charlesemori625 2y ago[dead]
- vishal-padia 2y agoIn the article, you mentioned that you've been writing code for 36 years, so don't you feel IDEs like cursor make you feel less competent? Meaning I loved the process of scratching my head over a problem and then coming to a solution but now we have AI Agents solving the problems and optimizing code which takes the fun out of it.
- ninacomputer 2y agoWas going to ask a similar question. Where in the experience of Cursor do you feel like you're losing some of the agency of solving the harder problems, or is this something you take in mind while using it?
- Schnitz 2y agoI’ve “only” been coding for 20 years, but it’s the tedious problems, not the actually technically hard problems that cursor solves. I don’t need to debug 5 edge cases any more to feel like I’ve truly done the work, I know I can do that, it’s just time spent. Cursor helps me get the boring and repetitive work out of coding. Now, don’t get me wrong, there was a time where I loved building something lower level line by line, but nowadays it’s very often a “been there, done that” type of thing for me.
- com2kid 2y agoIf I need an RNG rolled to a standard distribution, I can either spend 5 minutes looking it up, learning how to import and use a library, and adding it to my code, or I can tell Cursor to do it for me. Crap like that, 100 times a day. "Walk through this array and pull out every element without an index field and add it to a new array called needsToBeIndexed, send them off to the indexing service, and log any failures to the log file as shown in the function above". Cursor lets me think closer to the level of architecting software. Sure having a deep knowledge of my language of choices is fun, and very needed at times, but for the 40% or so of code that is boring work of moving data around, Cursor helps a lot.
- TibbityFlanders 2y ago[dead]
- fassssst 2y agoFor me it’s like riding an e-bike. More fun because I can go faster and see and do more.
- ramijames 2y agoAnd you get less tired. I can complete more work because I'm not always getting stuck in minutia. I can focus on architecture, structure, and refactoring instead of line-by-line writing of code. I'm not saying that I don't like writing code. I'm just saying that doing a lot of it can be mentally exhausting. Sometimes I'd just prefer to ship feature-complete stuff on-time and on-budget, then go back to my kids and wife without feeling like my brain is mush.
- crucialfelix 2y ago"An e-bike for the mind" as Steve Jobs might have said.
- computerfriend 2y agoI have a motorbike, yet I prefer cycling because the exercise feels good and is good for me.
- __mharrison__ 2y agoI have compared AI to an emtb. Was riding one on slick rock trail in Moab which has some areas with consequences earlier this year. If you don't know how to handle a bike, the ebike won't help you in these situations. (You might even get yourself in a tricky spot). But if you know how to ride, it can be really fun. Same with code. If you know how to code it can make you much more productive. If you don't know how to code, you get into tricky spots...
- yoyohello13 2y agoThis is actually a great analogy. You get to accomplish a lot more, much faster, but you lose much of the benefit to your fitness.
- ativzzz 2y ago
- ziofill 2y agoI’ve been using cursor for a while now and I think that if a problem is simple enough for an LLM to work out on its own, it’s probably not worth scratching one’s head over…
- szundi 2y agoAgreed with added experience of mine: sometimes Cursos gives me a simpler yet perfect solution. And I am grateful for it.
- eru 2y agoI'm not sure that's a good heuristic? People love playing Tetris or solving crossword puzzles, and machines are much better at them than us.
- Refusing23 2y agoI dont think people need to think, that the AI is supposed to make complicated code i think for the most part its meant to help you "get past" all the generic code you usually write in the beginning of a project, generic functions you need in almost all systems, etc.
- vishal-padia 2y agoI don't agree, in the initial stages solving problems without LLMs will give a good enough knowledge about the intricacies involved and it helps develop a structured approach while solving a problem!
- deleted 2y ago[deleted]
- forgotoldacc 2y agoI feel like in the early stages of becoming a programmer, learning how to do all those little baseline problems is fun. But eventually you get to a point where you've solved variations of the problem hundreds of times before, and it's just hours of time being burnt away writing it again with small adjustments. It's like getting into making physical things with only a screwdriver and a hammer. Working with your hands on those little projects is fun. Then eventually you level up your skills and realize making massive things is much easier with a power drill and some automated equipment, and gives you time to focus on the design and intricacies of far more complicated projects. Though there are always those times where you just want to spend a weekend fiddling with basics for fun.
- szundi 2y agoCompletely agreed. Don’t be afraid to embrace this. You have to give it an active month until it starts to work in your hands though.
- valenterry 2y agoThat should be when you move to more sophistcated (and also complex/complicated) languages that relieve you from as much of this boilerplate as possible. The rest is then general design and archiceture, where LLMs really don't help much with. What they are really good for is to get an idea of possible options in spaces were you have little experience or to quickly explain and summarize specific solutions and their pros and cons. But I tried to make it pick a solution based on the constraints and even with many tries and careful descriptions, the results were really bad.
- mewpmewp2 2y agoI think it is not the boilerplate of the programming language necessarily, but it is more to do with boilerplate of common business logic. E.g. even say form validation, I have done it countless of times and I can't be bothered to write out rules for each field again, but AI can easily generate me Zod schema with reasonable validation based on the database model or schema. It probably does better validation rules than I would do quickly on my first try. Then I use these validations both in the backend and frontend.
- phito 2y agoI don't find figuring out the syntax of a new language interesting. There's absolutely no fun in that. I know what I want to do and already understand the concepts behind it, that was the fun part to learn.
- manmal 2y agoDo they really solve the hard problems though? For me, the LLMs solve the low level problems. Usually I need to figure out an algorithm, which is the actual problem, and finally give some pseudo code to the LLM and surrounding code so it can generate a solution that looks idiomatic. In some cases, LLMs act as a stackoverflow replacement for me, like „sort this with bubble sort, by property X“. I’d also ask it to write some test cases around that. I won’t import a bubble sort library just for this, but I also don’t want to spend any more time than necessary, implementing this for the nth time.
- mewpmewp2 2y agoI think you are still thinking just on another level. E.g. you go on a walk, you fantasize about everything you are going to do, and it builds up in your head, then you come back, it is all in your head and AI will help you get it out quickly, but you have already solved the problem for yourself and so you are also able to validate quickly what the AI does.
- vishal-padia 2y agoyes this!!! Whenever I write a prompt, I tend to divide it into smaller prompts, and in this process, my brain thinks of multiple ways to solve the problem. So yes, it's not limiting my thought process. I didn't notice this thing until I read this.
- tomyedwab 2y agoI do think that is a real risk, yes. I don't want to use LLMs as a crutch to guard against having to ever learn anything new, or having to implement something myself. There is such a thing as productive struggle which is a core part of learning. That said, I think everyone can relate to wasting an awful lot of time on things that are not "interesting" from the perspective of the project you are working on. For example, I can't count the number of hours I've spent trying to get something specific to work in webpack, and there is no payoff because today the fashionable tool is vite and tomorrow it'll be something else. I still want to know my code inside and out, but writing a deploy script for it should not be something I need to spend time on. If I had a junior dev working for me for pennies a day, I would absolutely delegate that stuff to them.
- alonsonic 2y agoFor a lot of people the fun and rewarding part is actually building and shipping something useful to users. Not solving complex puzzles / algoritic challenges. If AI gets me in front of users faster then I'm a happier builder.
- TibbityFlanders 2y ago[dead]
- christkv 2y agoI have not tried cursor using a combination of copilot and chatgpt o1. Is cursor considered a better solution? I find it takes the tedium out of work and allows me to focus on the important bits. Right now working on a flutter app and it’s great to be able to quickly try out different ideas iterating quicker towards a final design than before LLMs.
- NitpickLawyer 2y ago> Is cursor considered a better solution? It's the best I've tried so far. I only tried copilot when it came out, so it might have improved a lot since then, perhaps someone using both now can chime in. There's two things I like about cursor - the overall multi-file edit -> I use this for scaffolding whatever I need, at a high level, and claude 3.5 seems a bit better than 4o for this. The tab thing really works, and it will surprise you. They don't do just autocomplete, they also do auto-action complete so after you edit something, your cursor (heh) goes to the next predicted place where you're likely to make an edit. And it works ootb most times, and a few times I've gone "huh, might have missed that, if it weren't for the cursor going there". So that's my current workflow. Zoomed out scaffolding and then going in and editing / changing whatever it is that I need, and cursor has two really strong features for both cases.
- zdragnar 2y agoDidn't sublime text have this with snippets? I vaguely recall setting some up with tab stops for the parts that need manual completion. Not AI, but it was nice to have back 10-ish or whatever years ago.
- Maxion 2y agoNo, that was a completely different thing.
- NitpickLawyer 2y agoI've seen something like you mention in vscode for snippets - that is fixed pieces of code with some variables, and the IDE skips to them w/ tab, so that you can fill in the values. But that's only for already made snippets, afaik. The tab autocomplete in cursor is more of a "next action autocomplete", wherein the LLM (a 70b fine-tune from what the team said) will "autocomplete" the next action that makes sense in context. Imagine changing something in a fn definition, and then the cursor jumps to the line where you used that fn. I'm sure something like this example could be hardcoded in an IDE, but this works ootb in a general way.
- deleted 2y ago[deleted]
- deleted 2y ago[deleted]
- elashri 2y agoMy problem with all AI code assistants is usually the context. I am not sure how cursor fare in this regard but I always struggle to feed the model enough of the code project to be useful for me on a level more than providing line per line suggestion (which copilot does anyway). I don't have experience with cursor or cody (other alternative) and how they tackle this problem by using embeddings (which I suppose have similar context limit).
- szundi 2y agoCursor is pretty uniqe and advanced in this regard. They tell a lot about this in the Lex Fridman podcast, very interesting.
- bufferoverflow 2y agoCursor has 10K tokens context window. Which is quite low compared to the top LLMs. https://forum.cursor.com/t/capped-at-10k-context-no-matter-api-key-or-cursor-pro/3442/3 https://forum.cursor.com/t/capped-at-10k-context-no-matter-a...
- elashri 2y agoThe main and best model according to many is Claude 3.5. But it provides maximum of 200k [1]. While I understand cost effectiveness and other limitations with embeddings. But maximum context of just 5% is probably too low with any standard. [1] https://support.anthropic.com/en/articles/7996856-what-is-the-maximum-prompt-length https://support.anthropic.com/en/articles/7996856-what-is-th...
- throwup238 2y agoYou have to switch to long context chat to get the full 200k (I don’t think this works for Composer though).
- extr 2y agoAll the SOTA LLM solutions like this have nearly the same problem. Sure the context window is huge, but there is no guarantee the model understands what 100K tokens of code is trying to accomplish within the context of the full codebase, or even into the real world, within the context of the business. They are just not good enough yet to use in real projects. Try it, start a greenfield project with "just cursor" like the ai-influencers do and see how far you get before it's an unmanagable mess and the LLM is lost in the weeds. Going the other direction in terms of model size, one tool I've found usable in these scenarios is Supermaven [0]. It's still just one or multi-line suggestions a la GH Copilot, so it's not generating entire apps for you, but it's much much better about pulling those one liners from the rest of the codebase in a logical way. If you have a custom logging module that overloads the standard one, with special functions, it will actually use those functions. Pretty impressive. Also very fast. [0] https://supermaven.com/ https://supermaven.com/
- friggeri 2y agoI recently started using Cursor for all my typescript/react personal projects and the increase in productivity has been staggering. Not only has it helped me execute way faster, similar to the OP I also find that it prevents me from getting sidetracked by premature abstraction/optimization/refactoring. I recently went from an idea for a casual word game (aka wordle) to a fully polished product in about 2h, which would have taking me 4 or 5 times that if I hadn’t used Cursor. I estimate that 90% of the time was spent thinking about the product, directing the AI, and testing and about 10% of the time actually coding.
- eru 2y agoInteresting. Have you published the game anywhere (eg GitHub or so)? Have you written about your experience anywhere in greater length?
- namaria 2y agoYou're happy to have gone from thinking of cloning something to cloning something using a cloning tool quickly?
- friggeri 2y agoApologies for the misunderstanding, I just caught the typo, should have read "ala wordle", not "aka wordle", the game is fully original. Using AI enabled me to spend more time thinking about game mechanics.
- bsaul 2y agoYour remark raises a question : how much of your daily work is truely original ? Unless you work in R&D i've got some bad news for you..
- deleted 2y ago[deleted]
- achierius 2y agoYou don't have to be a researcher to do original work. Out of ten people on my team one has a PhD, but we're all doing more-or-less unique work a large fraction of the time.
- pama 2y agoWhat are the closest Emacs packages and flows for something similar to Cursor? Is the ability to use a tab in this way something that can be simply instructed or finetuned?
- viraptor 2y agoNot in the same way. Places like Cursor and Continue have their own tuned and minimal models which can work really fast. In an interview, Cursor people also mentioned some extra magic they do like streaming the changes/context in as you type and potentially doing some speculative processing before you even type things. You would need to write lots of new code which, as far as I understand, doesn't exist in the open source world at this point. And neither do the appropriate models. I'm sure we'll get there, but I haven't seen anything even close available.
- HarHarVeryFunny 2y agoAnthropic have a streaming API (incrementally stream responses back to client) that I believe Cursor uses.
- viraptor 2y agoThat's the basic part. Cursor people talked about effectively streaming in and other ideas. See https://youtu.be/oFfVt3S51T4 https://youtu.be/oFfVt3S51T4
- lelele 2y agohttps://github.com/karthink/gptel https://github.com/karthink/gptel https://github.com/lanceberge/elysium/tree/main https://github.com/lanceberge/elysium/tree/main
- benreesman 2y agoI’m doing an experiment in this in real time: I’ve got a bunch of top-flight junior folks, all former Jane and Google and Galois and shit, but all like 24. I’ve also been logging every interaction with an LLM and the exit status of the build on every mtime of every language mode file and all the metadata: I can easily plot when I lean on the thing and when I came out ahead, I can tag diffs that broke CI. I’m measuring it. My conclusion is that I value LLMs for coding in exact the same way that the kids do: you have to break Google in order for me to give a fuck about Sonnet. LLMs seem like magic unless you remember when search worked.
- dartos 2y ago> LLMs seem like magic unless you remember when search worked. Yikes. I didn’t even think about this, but it’s true. I’m looking for the kinds of answers that Google used to surface from stack overflow
- supaflybanzai 2y agoKagi… Fully switched over more than a year ago and never looked back.
- jansan 2y agoThe best way to get useful answers was (and for me still is) to ask Goggle for "How do I blah site:stackoverflow.com". Without the site filter, Google results suck or are just a mess, and stackoverflow's own search is crap.
- abricq 2y agoThis last month I decided to try the Jetbrain equivalent of Cursor, for their IDEs (https://www.jetbrains.com/ai/ https://www.jetbrains.com/ai/). It's a pluging well integrated in the code editor that you can easily summon. I work in Rust and I had to start working with several new libraries this month. One example of them is `proptest-rs`, a rust property testing library that defines a whole new grammar to define the tests. I am 100% sure that I spent much less time to get on-boarded with the librariy's best practices and usages. I just quickly went through their book (to learn the vocabulary) and asked the AI to generate the code itself. I was very surprised that it did not do any mistakes, considering that sort of weird custom grammar of the lib. I will at least keep trying for another months.
- ruszki 2y agoHow do you know that it didn’t make any mistakes, which you wouldn’t make if you learned the usage of that library without AI? Even before AI generated code, people made mistakes about which they didn’t know, because they never read the documentation for example, and it “worked”… except the unintended side effects of course. Adding an AI layer into the picture makes this definitely worse.
- eru 2y agoHow's the AI worse in this respect that having a coworker or teammate that you review code from?
- ruszki 2y agoResponsibility
- abricq 2y agoIt's not that you ask it to write 200 lines of code at once, and blindly trust it. It's more that you start to use the lib, ask it to generate one helper method at the time, for an isolated task. Which leave you time to "review" the code that it wrote properly. Even when a human writes code, it needs to go through peer-review. So the exact same applies with AI. It's the job of the reviewer (in this case, the one who invokes the AI) to make sure that the one who wrote the code does not do mistake, which can include going to read the doc in more detail.
- e2e4 2y agoAny thoughts on how does cursor compare to cline (claude.dev) and aider?
- Epa095 2y agoAnd Cody! Which has a pretty decent free tier.
- rubslopes 2y agoI tried Cursor but I honestly didn't see a huge improvement over VSCode + Continue.Dev. Cursor is better at editing multiple files, and it's cheaper than using the API directly... But I prefer VSCode + Continue.Dev (for chat) + Supermaven (for completions). Cline, on the other hand, is a whole different beast. It edit multiple files, run the program, checks the shell for errors, go back to the files, edit them, run it again, and even access localhost:8000 to check. It's incredible! But if you use the recommended Sonnet 3.5, it'll eat your money very fast. I've been using Cline + 4o-mini for a few days. Sometimes it's magical; it's the first time I truly feel that I have an assistant. I tell it 'run, check for errors, and correct them' and I leave to grab some coffee. The bad side: I got lazy and once I almost let it delete rows in a table because it misunderstood what I said.
- cmcconomy 2y agoI'm a skeptic, but this weekend I worked with Cline in vscode (using free gemini nano backend and free mistral backend via openrouter) and managed to make some progress on a flutter app I'm working on. Flutter/Dart isn't something I'm actually familiar with though I have a lot of dev experience, so I was able to distinguish between poor advice and good advice from the agent. There was a good share of frustrating code deletion happening that required stern instruction adjustment. For work I'd be concerned about sharing our IP and would want to be on an LLM tier that promises privacy, or maybe even a local LLM. All in all I was more impressed than I thought I would be.
- CrendKing 2y agoI've been using AI to solve isolated problems, mainly as a replacement of search engine specifically for programming. I'm still not convinced of these "write whole block of code for me" type of use case. Here's my arguments against the videos from the article. 1. Snake case to camelCase. Even without AI we can already complete these tasks easily. VSCode itself has command of "Transform to Camel Case" for selection. It is nice the AI can figure out which text to transform based on context, but not too impressive. I could select one ":, use "Select All Occurrences", press left, then ctrl+shift+left to select all the keys. 2. Generate boilerplate from documentation. Boilerplate are tedious, but not really time-consuming. How many of you spend 90% of time writing boilerplate instead of the core logic of the project? If a language/framework (Java used to be, not sure about now) requires me to spend that much time on boilerplate, that's a language to be ditched/fixed. 3. Turn problem description into a block of concurrency code. Unlike the boilerplate, these code are more complicated. If I already know the area, I don't need AI's help to begin with. If I don't know, how can I trust the generated code to be correct? It could miss a corner case that my question didn't specify, which I don't yet know existing myself. In the end, I still need to spend time learning Python concurrency, then I'll be writing the same code myself in no time. In summary, my experience about AI is that if the question is easy (e.g. easy to find exactly same question in StackOverflow), their answer is highly accurate. But if it is a unique question, their accuracy drops quickly. But it is the latter case where we spend most of the time on.
- eru 2y ago> Boilerplate are tedious, but not really time-consuming. In the aggregate, almost no programmer can think up code faster than they can type it in. But being a better typist still helps, because it cuts down on the amount you have to hold in your head. Similar for automatically generating boilerplate. > If I don't know, how can I trust the generated code to be correct? Ask the AI for a proof of correctness. (And I'm only half-joking here.) In languages like Rust the compiler gives you a lot of help in getting concurrency right, but you still have to write the code. If the Rust compiler approves of some code (AI generated or artisanally crafted), you are already pretty far along in concurrency right. A great mind can take a complex problem and come up with a simple solution that's easy to understand and obviously correct. AI isn't quite there yet, but getting better all the time.
- komali2 2y agoI am the least knowledgeable user of emacs ever, however just some notes as I read this > For example, suppose I have a block of code with variable names in under_score notation that I want to convert to camelCase. It is sufficient to rename one instance of one variable, and then tab through all the lines that should be updated, including the other related variables. For me that would be :%s/camel_case/camelCase/gc then yyyyyynyyyy as I confirm each change. Or if it's across a project, then put cursor on word, SPC p % (M-x projectile-replace-regexp), RET on the word, camelCase, yyyynyyynynn as it brings me through all files to confirm. There's probably even better smarter ways than that, I learn "just enough to get it done" and move on, to my continual detriment. > Many times it will suggest imports when I add a dependency in Python or Go. I can write a function in python or typescript and if I define a type like: function(post: Po and wait a half second, I'll be given a dropdown of options that include the Post type from Prisma. If I navigate to that (C-J) and press RET, it'll auto-complete the type, and then add the import to the top, either as a new line or included with the import object if something's already being imported from Prisma. The same works for Python, haven't tried other. I'm guessing this functionality comes from LSP? Actually not sure lol. Like I said, least knowledgeable emacs user. As for boilerplate, my understanding is most emacs people have a bunch of snippets they use, or they use snippet libraries for common languages like tsx or whatever. I don't know how to use these so I don't. I still intend to try cursor since my boss thinks it might improve productivity and thus wants me to see if that's true, and I don't want to be some kind of technophobe, however I remain skeptical that these built-in tools are at least any more useful than me just quickly opening a chatgpt window in my browser and pasting some code in, with the downside of me losing all my bindings. My spacemacs config: https://github.com/komali2/Configs/blob/master/emacs/.spacemacs https://github.com/komali2/Configs/blob/master/emacs/.spacem...
- xlii 2y agoOk, so… I’m looking at the Python example with HTTP Endpoints and I already have questions. Why both functions are inlined and why FastAPI is used at all. I’m also not seeing any network bindings. Is it bound to local host (doubt it) or does it immediately bind to all interfaces. It’s a 3 second thought from looking at Python code that I know only enough to write small and buggy utilities (yet Python is widely popular - so LLM have ton of data learned in). I know it’s a demo only but this video strengthen my feeling about drop of critical thinking and a raise of McDonalds productivity. McDonalds is not bad: it’s great when you are somewhere you don’t know and not feeling well. They have same menu almost everywhere and it’s like 99% safe due to process standardization. Plus they can get you satiated in 20 minutes or less. It’s still type of food that you can’t really feed on for long; and if you do, there will be consequences. The silver lining of it is that it most likely cut off all people from the field who hate the domain but love the money, as it’s exactly the problem it automatizes away.
- ramraj07 2y agoCould you clarify what your problem with FastAPI here is? Also did I understand correctly that you’re not very well versed with python in general but still decided to criticize the decisions the model and the author made in that language?
- xlii 2y agoI have doubts about the design and on spot decision of using FastAPI. It’s kind of chicken and the egg problem. If author knows FastAPI then it’s great, but if not then should verify its applicability. It might not be the choice they’d make and need to verify both library and other solution if it’s not the fit. If I’d get suggestion like that I’d immediately go to documentation because I don’t know consequences. Experienced person might make a conscious choice, unexperienced - implicit one which might not work in context. As for the design - I’m against inlining handlers. It’s not like Python is the only language that allows it, but I would suspect consequences are very similar. But maybe that’s idiomatic thing. Had this be coming from documentation I’d had much more faith than a random LLM suggestion.
- Giorgi 2y agoThat article reads just like half-a--ed chatgpt prompt designed to shill Cursor because it became irrelevant after introduction of Canvas tool.
- NitpickLawyer 2y ago> to shill Cursor because it became irrelevant after introduction of Canvas tool. Haha, no. A web interface won't make a full-fledged IDE irrelevant. Canvas is really cool for a quick session in the browser, when travelling, while in bed, on a plane, etc. It's neat and works. But it's nowhere near the IDE experience. Cursor is still a full IDE in the background, with all the bells and whistles that come with it. So if you're working on anything more complicated than one-off scripts, you'll still benefit a lot from having it, over a web interface.
- Giorgi 2y agoHaha, yes. I assume we will see more Cursor related shilling as it becomes irrelevant, don't we? Even this comments reads like an ad.
- sensanaty 2y agoAlso good to note the author is currently involved in building - yet another - ChatGPT wrapper, so I'm not surprised at all he's hyping and shilling AI tools/Cursor.
- hum3hum3 2y agoOK I have been writing code for 50 years but can only use cursor for home use. From my experience, I echo the authors comments. You do have to be careful with larger suggestions that it makes sense but the syntax will be right. It is just faster.
- qwertox 2y agoI tried Cursor and while I was extremely surprised by the ability to do multiline edits in the middle of the lines, I could not get to accept how aggressive it was when trying to autocomplete/auto-edit segments of code while I was just typing. It was like a second person being in the editor having a mind of its own constantly touching my code, even if it should have left it alone. It felt like I was finding myself undoing stuff it made all the time.
- vegapulse 2y agoCursor is awesome. Have been using it for a month now, greatly improved efficiency.
- delackner 2y agoFor me, all these tools suffer from the same basic question, how can I put proprietary private source into a tool notorious for siphoning up and copying everything you say to it?
- viraptor 2y agoBusiness tier: "Enforce privacy mode org-wide".
- oliver_jack 2y ago[dead]
- OtomotO 2y ago"For example, suppose I have a block of code with variable names in under_score notation that I want to convert to camelCase." Oh my, oh my... How have I done this all these years before "AI" was a th- hype? I did it without wasting even a fraction of the CO2 needed for these toys. "AI" has some usecases, granted. But selling it as the holy grail and again sh•tting on the environment is getting more and more ridiculous by the day. Humanity, even the smarter part, truly deserves what is coming. Apes on a space rock
- ciconia 2y agoWatching the videos in the article, the constantly changing suggested completions seem really distracting. Personally, I find this kind of workflow totally counter-productive. My own programming workflow is ~90% mental work / doing sketches with pen & paper, and ~10% writing the code. When I do sit down to write the code, I know already what I want to write, don't need suggestions.
- viraptor 2y agoIt's a tool. You get used to new tools. These days I can easily process "did something interesting appear" in the peripheral vision at the same time as continuing to type. But the most useful things don't happen while I write. Instead it's the small edits that immediately come up with "would you also like to change these other 3 things to make your change work?" Those happen in the natural breaks anyway, as I start scanning for those related changes myself.
- exe34 2y ago> in the peripheral vision this seems physiologically unlikely.
- viraptor 2y agoWe do it all the time. I can type while talking to people. I can also read/process the text ahead while saying out loud what I read a few words back. We do a lot of things concurrently when dealing with text - I'm not staring at the cursor when writing code either. (Unless you meant it literally. No, I didn't mean actual peripheral vision. Just noticing things beyond what I type.)
- exe34 2y agoI did mean it literally. the solid angle covered by the fovea is tiny.
- theshrike79 2y ago
- swang 2y agoTrying to remember: Was cursor the one that took yc money and basically reskinned some open source project, the project that was stolen, or neither..?
- viraptor 2y agoYou're thinking of PearAI, which copied Continue. https://techcrunch.com/2024/09/30/y-combinator-is-being-criticized-after-it-backed-an-ai-startup-that-admits-it-basically-cloned-another-ai-startup/ https://techcrunch.com/2024/09/30/y-combinator-is-being-crit...
- fsto 2y agoNope, that’s PearAI, a fork of Continue and vscode and its ChatGPT generated license Pear Enterprise License
- easyKL 2y agoRecent interview to Cursor developers: https://lexfridman.com/cursor-team https://lexfridman.com/cursor-team
- white_beach 2y agothanks
- foreigner 2y agoSo the Cursor AI can make edits to the .cursorrules file that's meant to control it? Hmm...
- blixt 2y agoI have the opposite experience with Chat and Compose. I use the latter much more. The "intelligence level" of the Chat is pretty poor and like the author says, starts with pointless code blocks, and you often end up with AI slop after a few minutes of back and forth. Meanwhile, the Compose mode gives code changes a good shot either in one file or multiple, and you can easily direct it towards specific files. I do wish it could be a bit smarter about which files it looks at since unless you tell it about that file you have types in, it'll happily reimplement types it doesn't know of. And another big issue with Compose mode is that the product is just not really complete (as can be seen by how different the 3 UXes of applying edits are). It has reverted previous edits for me, even if they were saved on disk and the UI was in a fresh state (and even their "checkout" functionality lost the content). The Cmd+K "edit these lines" mode has the most reliable behavior since it's such a self-contained problem where the implementation uses the least amount of tricks to make the LLM faster. But obviously it's also the least powerful. I think it's great that companies are trying to figure this out but it's also clear that this problem isn't solved. There is so much to do around how the model gets context about your code, how it learns about your codebase over time (.cursorrules is just a crutch), and a LOT to do about how edits to code are applied when 95% of the output of the model is the old code and you just want those new lines of code applied. (On that last one, there are many ways to reduce output from the LLM but they're all problematic – Anthropic's Fast Edit feature is great here because it can rewrite the file super fast, but if I understand correctly it's way too expensive).
- Fizzadar 2y agoI’ve yet to switch to Cursor as my main editor (Sublime still wins on performance by miles, plus no distracting tab anything), but I do hop in when stamping out boilerplate and repetitive code for which it is great, but it’s only a minor performance bump. I have also used cursor to write Kubernetes client code with great success because the API space is so large it doesn’t fit into my head that well (not often writing such code these days) so that has been incredibly helpful. So it’s not revolutionising my workflow but certainly a useful tool in some situations.
- epolanski 2y agoSome uses I have, e.g. a notepad in Cursor with a predefined set of files and a prompt e.g. to implement storybook stories and documentation out of components I use. I give it the current file I'm working on, and it will generate new files and update documentation files. Similarly for E2E or unit tests, it often suggests cases I would've not thought about. The people that are negative about these things, because they need to review it, seem to be missing the massive amount of time saved imho. Many users point to the fact that they spend most of the time thinking, I'm glad for them, most of the time I spend is glueing APIs, boilerplates, refactoring, and on those aspects Cursor helps tremendously. The biggest killer feature that I get from similar tools (I ditched Copilot recently in favor of it) is that they allow me to stay focused and in the flow longer. I have a tendency to phase out when tasks get too boring, repetitive or stressed out when I can't come up with a solution. Similarly going on a search engine to find an answer would often put me in a long loop of looking for answers deeply buried in a very long article (you need to help SEO after all, don't you?) and then it would be more likely that I would get distracted by messages on my company chat or social media. I can easily say that Cursor has made me more productive than I was one year ago. I feel like the criticism many have comes from the wrong expectations of these tools doing the work for you, whereas they are more into easing out the boring and sometimes the hard parts.
- _1tem 2y agoAll of the examples given in the article are contrived, textbook-style examples. Real world projects are far more messy. I want someone to talk about their flow with Cursor on a mature codebase in production with lots of interlaced components and abstractions. I have a feeling that blindly building things with AI will actually lead to incomprehensible monstrous codebases that are impossible to maintain over the long run. Read “Programming as Theory Building” by Peter Naur. Programming is 80% theory-in-the-mind and only about 20% actual code. Here's an actual example of a task I have at work right now that AI is almost useless in helping me solve. "I'm working with 4 different bank APIs, and I need to simplify the current request and data model so that data stored in disparate sources are unified into one SQL table called 'transactions'". AI can't even begin to understand this request, let alone refactor the codebase to solve it. The end result should have fewer lines of code, not more, and it requires a careful understanding of multiple APIs and careful data modelling design and mapping where a single mistake could result in real financial damage.
- kristopolous 2y agoI really honestly don't get the hype. VSCode with some copilot plugins seems to do effectively 100% of this fork and last time I scrolled through cursor's 1000+ open github issues, they didn't seem responsive or know how to fix things.
- 234120987654 2y agoWow, I did not expect to see such negativity in this thread. Most of them read to me like the "Dropbox is just an FTP"-narrative. Yes, you and your pride can do most of these things in 0.3ms and better, but so will 1 million more people now. You can do most of the things the author showed with your craftfully set-up IDE and magic tricks, but that's not the point. I don't want to spend a lifetime setting up these things only to break when moving to another language. Also, where the tab-completion shines for me in Cursor is exactly the edge case where it knows when _not_ to change things. In the camel casing example, if one of them were already camel cased, it would know not to touch it. For the chat and editing, I've gotten a pretty good sense as to when I can expect the model to give me a correct completion (all required info in context or something relatively generic). For everything else I will just sit down and do it myself, because I can always _choose_ to do so. Just use it for when it suits you and don't for when it doesn't. That's it. There's just so many cases where Cursor has been an incredible help and productivity boost. I suspect that the complainers either haven't used it at all or dismissed it too quickly.
- miningape 2y ago> You can do most of the things the author showed with your craftfully set-up IDE and magic tricks, but that's not the point. Wrong you can do most of the things the author showed with a fresh install of vim/emacs or by logging in to a fresh install of vscode/intellij - In other words no lifetime was spent on this, I like having as bare an experience as possible so I can use the same setup on any computer. > I don't want to spend a lifetime setting up these things only to break when moving to another language. Editor configs don't break across languages? > For the chat and editing, I've gotten a pretty good sense as to when I can expect the model to give me a correct completion (all required info in context or something relatively generic). For everything else I will just sit down and do it myself, because I can always _choose_ to do so. Just use it for when it suits you and don't for when it doesn't. That's it. A lot of people don't have this level of wisdom or the skills to pick and continue without AI. Would I be wrong for assuming you've been programming for at least 10 years? I don't think AI is bad for a senior who has already earned their scars, but for a junior/no skill developer it stunts their growth simply because the do expect the model to give them a correct completion, and the thought/action of doing it without an AI is painful (because they lack the requisite skills) so they avoid it.
- anonyfox 2y agoPersonal observation from a heavy LLM codegen user: The sweet spot seems to be bootstrapping something new from scratch and get all the boilerplate done in seconds. This is probably also where the hype comes from, feels like magic. But the issue is, that once it gets slightly more complicated, thinks break apart and run into a dead end quickly. For example yesterday I wanted to build a simple CLI tool in Go (which is outstandingly friendly to LLM codegen as a language + stdlib) that acts as a simnple reverse proxy and (re-)starts the original thing in the background on file changes. AI was able to knock out _something_ immediately that indeed compiled, only it didn't actually work like intended. After lots of iterations back-and-forth (Claude mostly) the code balooned in size to figure out what could be the issue, adding all kinds of useless crap that kindof-looks-helpful-but-isn't. After an hour I gave up and went through the whole code manually (few hundred lines, single file) and spotted the issue immediately (holding a mutex lock that gets released with `defer` doesn't play well with a recursive function call). After pointing that out, the LLM was able to fix it and produced a version that finally worked - still with tons of crap and useless complexity everywhere. And thats a simple straightforward coding task that can be accomplished in a single file and only few hundred lines, greenfield style. And all my claude chat tokens of the day got burned for this, only for me at the end having to dig in myself. LLMs are great to produce things in small limited scopes (especially boilerplate-y stuff) or refactor something that already exists, when it has enough context and essentially doesn't really think about a problem but merely changes linguistic details (rewrites text to a different format ultimately) - its a large LANGUAGE model after all. But full blown autonomous app building? Only if you do something that has been done exactly thousands of times before and is simple to begin with. There is lots of business value in that, though. Most programmers at companies don't do rocket science or novel things at all. It won't build any actual novelty - ideal case would be building an X for Y (like Uber For Catsitting) only but never an initial X. Personal productivity of mine went through the roof since GPT4/Cursor though, but I guess I know how/when to use it properly. And developer demand will surge when the wave of LLM-coded startups get their funding and realize the codebase cannot be extended anymore with LLMs due to complexity and the raw amount of garbage in there.
- fragmede 2y ago> After lots of iterations back-and-forth (Claude mostly) the code balooned in size to figure out what could be the issue, adding all kinds of useless crap that kindof-looks-helpful-but-isn't. After an hour I gave up and went through the whole code manually (few hundred lines, single file) and spotted the issue. That's what experience with current generation LLMs looks like. But you don't get points for getting the code in/by the LLM looking perfect, you get points for what you check-in to git and PR. So skill is in realizing the LLM is running itself in circles, before you run out of tokens and burn an hour, and do it yourself. Why use an LLM at all if you still have to do it yourself? Because it's still faster than without, and also that's how you'll remain employable - by covering the gaps that an LLM can't handle (until they can actually do full blown autonomous app development, which is still a while away, imo).
- KronisLV 2y agoHonestly, seems like a cool tool and I could see myself using something like it instead of just my current GitHub Copilot subscription. Sure, you probably don't want to blindly copy or accept suggested changes, but when the tools work, they're like a pretty good autocomplete for various snippets and I guess quite a bit more in the case of Cursor. If that helps you focus on problem solving and lets the tooling, language and boilerplate get out of the way a little bit more, all the better! For what it's worth, I'm probably sticking with JetBrains IDEs for the foreseeable future, since they have a lot of useful features and are what I'm used to (with VS Code for various bits of scripting, configuration etc.).
- pratibha_simone 2y agoMany pro comments above, but I like it as a coding newbie!
- ertucetin 2y agoI also found myself feeling a bit dumb after using Copilot for some time. It felt like I didn’t have to know the API, and it just auto-completed for me. Then I realized I was starting to forget everything and disabled Copilot. Now, when I need something, I ask ChatGPT (like searching on Stack Overflow).
- metaltyphoon 2y agoSame. I find myself having to pause and let Copilot finish. At some point, you lose/ not retain anything which you don’t use. I’m not sure I want to give that.
- johnisgood 2y agoCursor is unusable for many as long as https://github.com/getcursor/cursor/issues/598 https://github.com/getcursor/cursor/issues/598 is not fixed. I would like to use it, but I literally cannot because of this bug!
- cryptica 2y ago> Subsequently, but very infrequently, I will accept a totally different completion and the previously-declined suggestion will quietly be applied as well. This sounds like a nightmare. I think the biggest problem with AI at the moment is that it incorrectly assumes that coding is the difficult part of developing software, but it's actually the easiest part. Debugging broken code is a lot harder and more time consuming than writing new code; especially if it's code that someone else wrote. Also, architecting a system which is robust and resilient to requirement changes is much more challenging than coding. It boggles the mind that many developers who hate reading and debugging their team members' code love spending hours reading and debugging AI-generated code. AI is literally an amalgamation of other peoples' code.
- fragmede 2y agoWow reasons I can think of are the emotional overhead of not being a total dick to the person who's coffee is being reviewed is, if you're not an asshole, is higher than for an unfeeling bot. (Unless that bots name is Roku.) The other thing is you just go in and fix said code instead of writing a comment and then waiting an undetermined amount of time for a reply.
- socketcluster 2y agoI think AI is still nowhere near where it needs to be to provide business value in software development. As an experiment, some time ago, I tried to build a TODO app entirely with AI prompts. I used a special serverless platform on the backend to store the data so that it would persist between page refreshes. I uploaded the platform's frontend components README file to the AI as part of the input. Anyway, what happened is that it was able to create the TODO app quickly; it was mostly right after the first prompt and the app was storing and loading the TODOs on the server. Then I started asking for small changes like 'Add a delete button to the TODOs'; it got that right. Impressive! All the code fit in a single file so I kept copying the new code and starting a new prompt to ask for changes... But eventually, in trying to turn it into a real product, it started to break things that it had fixed before and it started to feel like a game of whac-a-mole. Fixing one thing broke another and it often broke the same thing multiple times... I tried to keep conversations longer instead of starting a new one each iteration but the results were the same.
- cynicalpeace 2y agoThe article is about Cursor. You don't need all your code to fit in a single file. It sits in your IDE. You don't need it to create your app entirely. I just tell it what I need, and where, and it makes me 20x faster. It solves the problem you're describing exactly.
- logicallee 2y agodo you feel like it needs a major architectural change or breakthrough leap in abstraction before it can provide business value in software development, or would far larger context window sizes be enough for it to provide substantial value already? For me it feels like it just starts to break after a certain length, but may not require a breakthrough new architecture to provide more value. Just larger context window sizes, so it can do the same thing it does on smaller pieces of code, on larger pieces of code, too.
- socketcluster 2y agoCan be, yes. I think besides the context window size though, there is the issue that performance seems to decline as the input size increases. It can become a problem before you reach the context window size limits.
- poulpy123 2y agoI recently tried again github copilot, and I was much more convinced of its use. I'm using it mainly as a better autocompletion tool, and I sometimes use the chat for discovering/understanding librairies and errors, because google is now too polluted by SEO spam. I'm not trying to generate programs with it, I find it still far too weak for it. However, and while I believe the current models can't really reach it, there is nothing in my eyes that prevents to create an AI good enough for that
- artdigital 2y agoIs Cursor still sending everything you do to their own servers? Last time I looked into it, that’s what was happening which made it an absolute no-go for corporate use. Using Cody currently with our company enterprise API key
- cynicalpeace 2y agoIt's amazing how little of my colleagues don't use Cursor simply because they haven't taken the 10 minutes to set it up. It's amazing how many naysayers there are about Cursor. There are many here and they obviously don't use Cursor. I know this because they point out pitfalls that Cursor barely runs into, and their criticism is not about Cursor, but about AI code in general. Some examples: "I tried to create a TODO app entirely with AI prompts" - Cursor doesn't work like that. It lets you take the wheel at any moment because it's embedded in your IDE. "AI is only good for reformatting or boilerplate" - I copy over my boilerplate. I use Cursor for brand new features. "Sonnet is same as old-timey google" - lol Google never generated code for you in your IDE, instantly, in the proper place (usually). "the constantly changing suggested completions seem really distracting" - You don't need to use the suggested completions. I barely do. I mostly use the chat. "IDEs like cursor make you feel less competent" - This is perhaps the strongest argument, since my quarrel is simply philosophical. If you're executing better, you're being more competent. But yes some muscles atrophy. "My problem with all AI code assistants is usually the context" - In Cursor you can pass in the context or let it index/search your codebase for the context. You all need to open your minds. I understand change is hard, but this change is WAY better. Cursor is a tool, and like any tool you need to know how to use it. Start with the chat. Start by learning when/what context you need to pass into chat. Learn when Cmd+K is better. Learn when to use Composer.
- snowstormsun 2y agoNope
- joenot443 2y agoYou wouldn't be the first engineer to fade into irrelevance because they were too proud to adapt to the changing world around them. I'd encourage you to open your mind a bit.
- zkry 2y agoI've noticed that tools like Cursor doesn't really seem to make difference in the end. The good software developers are still the good software developers, regardless of editors. I don't think you should be upset or worried that people aren't adopting these tools as you think they should. If the tool really lives up to its hype then the non-adopters will fall behind and, for example, be forced to switch to Cursive. This happened with IDEs (e.g. IntelliSense, jump to definition). It may happen with tools like Cursive. I certainly don't feel this way but if I'm proven wrong thats good.
- gaploid 2y agoUsing ChatGPT and AI assistants over the past year, here are my best use cases: - Generating wrappers and simple CRUD APIs on top of database tables, provided only with a DDL of the tables. - Optimizing SQL queries and schemas, especially for less familiar SQL dialects—extremely effective. - Generating Swagger comments for API methods. Joyness - Re-creating classes or components based on similar classes, especially with Next.js, where the component mechanics often make this necessary. - Creating utility methods for data conversion or mapping between different formats or structures. - Assisting with CSS and the intricacies of HTML for styling. - GPT4 o1 is significantly better at handling more complex scenarios in creation and refactoring. Current challenges based on my experience: - LLM lacks critical thinking; they tend to accommodate the user’s input even if the question is flawed or lacks a valid answer. - There’s a substantial lack of context in most cases. LLMs should integrate deeper with data sampling capabilities or, ideally, support real-time debugging context. - Challenging to use in large projects due to limited awareness of project structure and dependencies.
- taldo 2y agoCursor has been an enabler for unfamiliar corners of development. Mind you, it's not a foolproof tool that writes correct code on the first try or anything close to that. I've been in compilers, storage, and data backends for 15ish years, and had to do a little project that required recording audio clips in a browser and sending them over a websocket. Cursor helped me do it in about 5 minutes, while it would've taken at least 30 min of googling to find the relevant keywords like MediaStream and MediaRecorder, learn enough to whip something up, fail, then try to fix it until it worked. Then I had to switch to streaming audio in near-realtime... here it wasn't as good: it tried sending segments of MediaRecorder audio which are not suitable for streaming (because of media file headers and stuff). But a bit of Googling, finding out about Web Audio APIs and Audio Worklet, and a bit of prompting, and it basically wrote something that almost worked. Sure it had some concurrency bugs like reading from the same buffer that it's overwriting in another thread. But that's why we're checking the generated code, right?
- davidczech 2y agoI've had similar experiences. I've basically disengaged any form of AI code generation. I do find it useful to pointing me to interesting/relevant symbols and API's however, but it doesn't save me any time connecting plumbing, nor is that really a difficult thing for any programmer to do.
- wanderingmind 2y agoAs an aside, do we really need a new IDE for AI copilot? What makes Cursor better than say Cody, which is just an extension on VSCode which helps me stay with the mature IDE that has all the bells and whistles I need.
- tucnak 2y agoCursor -is- Visual Studio Code, bar the AI-specific tooling.
- Hrun0 2y agoI have tried both cursor and cline (formerly continue dev), and I don't seem to see the incredible performance boost using cursor like a lot of people say
- kristopolous 2y agoI think some people are writing dumb code for a living
- phist_mcgee 2y agoAnd let me guess, you aren't?
- rubslopes 2y agoSmall correction: Cline is former Claude Dev. Continue Dev is a different extension which continues with the same name.
- Hrun0 2y agoOops, yeah you are right
- knuckleheads 2y agoI use and am happy with Cursor and Chatgpt. Cursor will write out the syntax for me if I let it, sometimes wrong, sometimes right, but enough to keep a flow going. If there are larger questions, I just flip over to chatgpt and try and suss out what is going on there. Super helpful with tailwind and react, speaking as a dba and backend systems person.
- rco8786 2y agoCurious why you don't just use Cursor's built-in chat?
- DeathArrow 2y agoFrom what I see, it's not better than GitHub Copilot for my use case. I work in large code bases, where the code in one files depends on the code in other files. Copilot seems to only be aware of code in current file, unless I write very long prompts to direct it to specifically look in some other files. So for making changes to existing code, Copilot isn't helpful and neither seems to Cursor. I can use Copilot to write some new methods to parse strings or split strings or convert to/from JSON or make http calls. Bat anything that implies using or changing existing code doesn't yield good results.
- profunctor 2y agoIf you are using vscode in the copilot chat you can use @workspace and it tries to get the relevant files and context.
- blitzar 2y agoAi assistant tuned for your sepecific large code base seems like the best final destination. I am not sure if this is on the horizion, miles away or just something that is of such little marginal benefit that it would only be useful internally for a handful of orgs. Certainly for writting my emails for me I would quite like an Ai fine-tuned to my written voice.
- cloudking 2y agoAre you using the @codebase feature? It will perform a search across the codebase for files relevant to your query and suggest changes across files. https://docs.cursor.com/chat/codebase https://docs.cursor.com/chat/codebase
- rco8786 2y agoHave you actually used Cursor? It does not seem like it. I'd suggest trying it before dismissing it. > Copilot seems to only be aware of code in current file Cursor does not have this limitation
- hipadev23 2y agoFrom my experience using both: * Cursor is massively faster than Copilot * Cursor is absolutely aware of the codebase when you add it to the workspace (ctrl/cmd+b)
- mherrmann 2y agoIn my experience, Cursor writes average code. This makes sense, if you think about it. The AI was trained on all the code that is publicly available. This code is average by definition. I'm below average in a lot of programming languages and tools. Cursor is extremely useful there because I don't have to spend tens of minutes looking up APIs or language syntax. On the other hand, in areas I know more about, I feel that I can still write better code than Cursor. This applies to general programming as well. So even if Cursor knows exactly how to write the syntax and which function to invoke, I often find the higher-level code structure it creates sub-optimal. Overall, Cursor is an extremely useful tool. It will be interesting to see whether it will be able to crawl out of the primordial soup of averages.
- cynicalpeace 2y agoThis is true. But with a little push here and there you can usually avoid the sub-optimal high level code structure. That's why it makes so much sense to have it in the IDE. You can see in general anything AI produces is pretty average. But people who buy software don't care that the code behind it is average. As long as it works. Whereas people who buy text, images and video do care.
- haolez 2y agoI've been having some difficulties with deprecated code and old patterns being suggested all the time. But I guess this is an easy issue to fix and will probably be fixed eventually.
- jonathaneunice 2y agoExactly right. Cursor makes it easy to get to "adequate." Which in the hundreds of places that I'm not expert or don't have a strong opinion, is regularly as good as and frequently better than my first pass. Especially as it never gets tired whereas I do. It's a great intern, letting me focus on the few but important places that I add specific value. If this is all it ever does, that's still enormously valuable.
- kleiba 2y agoSlightly OT, but perhaps someone can help me out: what's a tried & tested setup to integrate a locally running AI coding assistent into Emacs?
- wruza 2y agoParallelize a task, write a server that exposes. It’s not code. Show code.
- niemandhier 2y agoI had horrible experience with a number of ai tools for infra-as-code. My theory is, that in that case it’s hard to predict what to do from context and libraries are at the same time hyper specialized and similar. Example: Creating a node and attaching a volume using ansible looks similar for different cloud providers but there a subtle differences in how to speciy the location etc.
- lars_francke 2y agoThis mirrors my experience. I've tried various tools (including Cursor) and my problem is that they often (more than 50%) generates non-working code. Why does it do so? Because the ecosystems change so fast and they have been trained on old versions of various libraries (by definition) but when I use the latest version it's a constant uphill battle. And there are so many different combinations of how to use libraries together.... I can't be the only one facing this issue but I didn't see a lot of discussion around this. So, as someone said: It's generating at most average code and most of it is outdated and sometimes vulnerable because... Well that's what's out there. I still use these tools but mostly to know how a solution could look roughly and then start to do my own research and to avoid the black page problem. Sometimes just to learn what to even Google for especially in ecosystems I'm unfamiliar with.
- greenie_beans 2y agoi had an interesting experience with cursor. i use it everyday btw i had two csvs. one had an ISBN column, the other had isbn10, isbn13, and isbn. i tried to tell it to write python code that would merge these two sheets by finding the matching isbns. didn't work very well. it was trying to do pandas then i tried to get it to use pure python. it took what felt like an hour of back and forth with terrible results. in a new chat, i told it that i wanted to know different algorithms for solving the problem. once we weighed all of the options, it wrote perfect python code. took like 5 minutes. like duh use a hashmap, why was that so hard?
- __mharrison__ 2y agoChat knows how to merge CSVs with pandas. You just need to know how to prompt it correctly. (Or at least it did at the start of this year when I gave a keynote at PyCon Philippines with that exact use case.)
- greenie_beans 2y agoseems simple and obvious but not when the columns have different keys, and there could be one or more keys to match upon. i would be curious to see how you can prompt that? and you are correct, you just need to know how to prompt it correctly by going back to first principles, just like what i did.
- __mharrison__ 2y agoTossing in the first few rows of the CSV in the prompt helps.
- greenie_beans 2y agono kidding? this industry should stop telling people: "you are just prompting wrong" when they've never seen the prompting session.
- kobe_bryant 2y agoJust once I'd like to see an article like this from someone who's not currently working on an AI tool (some sort of Khan Academy tutor in this case)
- yen223 2y agoI've gotten a lot of mileage from simonw's blog, who as far as I know isn't working on any (paid) AI tools. https://simonwillison.net/ https://simonwillison.net/
- ainiriand 2y agoSomeone experienced enough could give some insights about how does it work with big monorepos and/or legacy code?
- breckenedge 2y agoCursor will use embeddings to figure out if it needs more files for additional context, or you can manually add them. It’s one of the weakest parts of the experience. Probably varies from repo to repo. Still not really capable of large scale automatic refactors.
- causal 2y agoAgreed. Even long-context models lose track of what they're doing pretty quickly as the size of the code base grows. Cursor et al seem great for make small changes in context, or big changes in small apps. But I don't trust them to make large-scale refactoring decisions. That said, if you can define really rigorous interfaces between parts, you can often get more mileage by just keeping those interfaces in context while asking for some kind of refactoring or implementation.
- szemy2 2y agoCan someone please elaborate how Cursor is different to Copilot?
- rco8786 2y agoThe founders did an episode on Lex Fridman's podcast that covers the technical sides of Cursor far better than I ever could: https://www.youtube.com/watch?v=oFfVt3S51T4 https://www.youtube.com/watch?v=oFfVt3S51T4 But to summarize, Copilot is an okay ChatGPT wrapper for single line code completion. Cursor is a full IDE with AI baked in natively, with use-case specific models for different tasks, intelligent look-ahead, multi-line completion, etc. If Copilot is a horse, Cursor is a Model T.
- sexyman48 2y agoFor me, the main draw is Cursor's repo-wide indexing (presumably a RAG pass). I asked Copilot to unify two functions, one at the top of a massive file, and the other at the bottom. Since they were so far apart, Copilot couldn't see both functions at the same time. Cursor didn't give me a great answer, but it did give *an* answer.
- szemy2 2y agoYou can pass in @workspace before the prompt (in copilot chat) and it looks at the full context. It works OK, I could imaging Cursor being more powerful in this!
- rco8786 2y agoThere's a lot of people in these comments who are talking about the state of off-the-shelf LLMs for writing code, and they are missing the point of this article. The article is about Cursor, the IDE. It is much, much more than a ChatGPT wrapper. I'd encourage everyone to give it a shot with the free trial. If you're already a VSCode user, it only takes a minute to setup with your exact same devenv you already have. Cursor has single-handedly changed the way I think about AI and its capabilities/potential. It's truly best-in-class and by a wide margin. I have no affiliation with Cursor, I'm just blown away by how good it is.
- marviel 2y agoGood Taste, Management / Communication Skills, Code Review Ability. If you have these skills, the productivity gains from tools like Cursor are insane. If you lack any of these, it makes sense that you don't get the hype; you're missing a critical piece of the new development paradigm, and should work on that.
- vineyardlabs 2y agoRelated question. For those who do any kind of programming for fun on the side, how do you feel about using tools like cursor for those projects. Is it a cool productivity enhancer that allows you to focus less on the code and more on the end-product, or does it suck the fun out of it for you? I work in an environment right now where feeding proprietary code/docs into 3rd party hosted LLMs is a hard no-go, and we don't have any great locally hosted solution set up yet, so I haven't really taken the dive into actively writing code with LLM assistance. I feel like I should practice this skill, but the idea of using a tool like Cursor on personal projects just seems so antithetical to the point that I can't bring myself to actually do it.
- mattxxx 2y agoHere's a few cursor perks: 1. Auto-complete makes me type ~20% faster (I type 100+ WPM) 2. Composer can work across a few files simultaneously to update something (e.g. updating a chrome extension's manifest while proposing a code change) 3. Write something that you know _exactly_ how it should work but are too lazy to author it yourself (e.g. Write a function that takes 2 lists of string and pair-wise matches the most similar. Allow me to pass the similarity function as a parameter. Use openai embedding distance to find most similar pairings between these two results)
- HarHarVeryFunny 2y agoInteresting to hear the perspective of an experienced developer using what seems to be the SOTA coding assistant of Cursor/Claude. I thought his "Changes to my workflow" section was the most interesting, coupled with the fact that coding productivity (churning out lines of code) was not something he found to be a benefit. However, IMO, the workflow changes he found beneficial seem to be a bit questionable in terms of desireability... 1) Having LLM write support libraries/functions from scratch rather than rely on external libraries seems a bit of a double-edged sword. It's good to minimize dependencies and not be affected by changes to external libraries, but OTOH there's probably a lot of thought and debugging that has been put into those external libraries, as well as support for features you may not need today but may tomorrow. Is it really preferable to have the LLM reinvent the wheel using untested code it's written channeling internet sources? 2) Avoiding functions (couched as excessive abstractions) in favor of having the LLM generate repeated copies of the same code seems like a poor idea, and will affect code readability, debugging and maintenance whereby a bugfix in one section is not guaranteed to be replicated in other copies of the same code. 3) Less hesitancy to use unfamiliar frameworks and libraries is a plus in terms of rapid prototyping, as well as coming up to speed with a new framework, but at the same time is a liability since the quality of LLM generated code is only as good as the person reviewing it for correctness and vulnerabilities. If you are having the LLM generate code using a framework you are not familiar with, then you are at it's mercy as to quality, same as if you cut and pasted some code from the internet without understanding it. I'm not sure we've yet arrived at the best use of "AI" for developer productivity - while it can be used for everything and anything, just as ChatGPT can be asked anything, some uses are going to leverage the best of the underlying technology, while others are going to fall prey to it's weaknesses and fundamental limitations.
- baudpunk 2y agoI recommend that naysayers for technologies like Cursor watch the documentary Jurassic Punk. When comparing the current AI landscape to the era of computer graphics emerging in film, the parallels are pretty staggering to me. There is a very vocal old guard who are stubborn about ditching their 10,000+ hours master-level expertise to start from zero and adapt to the new paradigm. There is a lot of skepticism. There are a lot of people who take pride in how hard coding should be, and the blood and sweat they've invested. If you look at AI from 10,000 feet, I think what you'll see is not AGI ruining the world, but rather LLMs limited by regression, eventually training on their own hallucinations, but good enough in their current state to be amazing tools. I think that Cursor, and products like it, are to coding what Photoshop was to artists. There are still people creating oil paintings, but the industry — and the profits — are driven by artists using Photoshop. Cursor makes coders more efficient, and therefore more profitable, and anyone NOT using Cursor in a hiring pool of people who ARE using it will be left holding the short straw. If you are an expert level software engineer, you will recognize where Cursor's output is bad, and you will be able to rapidly remediate. That still makes you more valuable and more efficient. If you're an expert level software engineer, and you don't use Cursor, you will be much slower, and it is just going to reduce your value more and more over time.
- cynicalpeace 2y agoGood take. It really makes you realize that as much as engineers like to pretend they're purely rational and analytical, we're just as emotional as everyone else.
- phist_mcgee 2y agoThis website would make you believe that all your peers exhibit Spock levels of rationality, when really it's a combination of hubris and a desire to be right on the internet
- kristopolous 2y agoI think llms are useful and also that cursor is not. It's a specific thing and it doesn't suit me. I've seen the glittery eyed hype on hn before and it basically means it will become a common tool. Whether it's good or not, that's a different question.
- snozolli 2y agoI don't know if the author will read these comments, but there's a missing word: the architecture of I am building.
- adamontherun 2y agoI've been working with Cursor for a few months. I learned quickly to stay away from the hype around creating entire features using Composer. Found a ton of value in using it to work with context from the codebase as well as external documentation. Shared my 8 pro tips in this post towards the bottom https://betaacid.co/blog/cursor-dethrones-copilot https://betaacid.co/blog/cursor-dethrones-copilot
- deleted 2y ago[deleted]
- JadoJodo 2y agoI’m surprised more people don’t use Supermaven. Its completions are quite a bit faster than Cursor and it also integrates into IDEs (Jetbrains), not just editors.
- imetatroll 2y agoTake the video of "building an HTTP REST api". On the one hand it is lighting fast to create something basic. On the other hand it misses so many details... proper error responses that the frontend - presumably there is one - can use, translations, setting up the db, infra, deploy, testing, etc. There is so much more to getting something ready for the real world. As a learning tool and for one offs AI can be very nice.
- dankwizard 2y agoWhy is 60 - 70% of my screen whitespace on this website (Or maybe more accurately... light pink space?) If cursor made those margins, humans 1 cursor 0
- fs0c13ty00 2y agoI actually like it. Better readability and the empty space can be used for showing citations, which the author seems to do a lot.
- dankwizard 2y agoIf you're going to employ large empty space, at least make it dark themed.
- amunozo 2y agoI've been using Copilot in VSCode as I have it free as a student. I wanted to try Cursor, but money is tight. Are they that much different? If so, what makes Cursor so special?
- nephy 2y agoI find LLM’s to be much worse than the junior engineers I work with. I have tried copilot and I always end up disabling it because it’s often wrong and annoying. Just read the docs for the things you are using folks. We don’t need to burn the rainforest for autocomplete.
- snowfarthing 2y agoI am currently convinced that the only thing useful about AI so far is that it's reviving nuclear power plants -- granted, they are to power AI engines -- but I hope that they'll be kept running after this AI fad passes!
- sumshelf 2y agoI've been using Cursor and Claude 3.5 Sonnet for about two months. My typical workflow with Cursor involves the following steps: I ask Cursor to generate the code. Then, I have it review its own code. Next, I ask it to improve some code based on the review. Sometimes I ask it to explain the code to me. Finally, I make any necessary manual adjustments. The only downside is that I tend to use up my fast request limit pretty quickly.