Some days after programming for several hours, and using Cursors "auto complete" I've noticed the experience will start degrading. Like it'll begin forgetting that Nim code doesn't use curly braces, or the suggestions get really meh.
It almost feels like the LLM or whatever it uses gets "tired". Obviously it's not and I'm just anthropomorphizing it. Though it's funny how deep those instincts run.
Though I do wonder if Cursor puts you on a lower tier LLM or lowers the compute if you've been using it constantly for hours. It could also be that their server load goes up at certain times of day when some regions come online. Similarly even "chat mode" degrades at times. I've moved to the pay-per request claude-3.7-max cause it's more consistently available and way cheaper than claude-code.
I'm curious if others see similar things with Cursor, or if maybe it's Nim specific somehow as they're all trained more on C or Python code.
I guess I can confirm it somewhat. For me ordinary auto-completion almost always works well but when I make it generate code in its chat window sometimes the quality is off.
The biggest problem IME is that often some procs are just dummy implementations with a comment like "in a real production implementation we would do X". (As if I had asked for pseudo-code...)
and it cant see already written modules and overwrite functionality above existed.
That’s really frustrating on larger pieces of code. Even if it’s added to your context it’ll still often ignore them.
I’m starting to think that “header files” might be helpful. If you have a file with the proc prototypes it’ll tend to do better and less likely to rewrite it.
I wonder if nimdocs could be modified to just spitout just procedures and data types.
then it totally misunderstood libraries api in nim or c related to cryptography, hallucinate about it and uses it all wrong.
Haha definitely. Cleaning up AI slop sucks. Even if the code works it’ll often be pretty verbose.
Surprisingly underrated to write top down and start with a terse main loop. Maybe it's my bias from starting in APL like combinator loving languages, but implementation should always be delegated. Yes you're going to have to refactor main way more, but I think it much better to expand beyond then shrink to fit(like I think nimony is a beautiful example of) than the lazy bottom up "vibe coding" of best effort stitching. Sure if you just want it to work that's fine, but that is not architecture it's a sloppy pool of fingertraps.
For clarity not a luddite, just consider what of you, you are delegating because, there be **daemons**
p.s in 2025 the multi agent stuff is all the rage again and there is much overlap in the syntax and semantics of process communication