It's really not. Maybe vibecoding, in its original definition (not looking at generated code) is fundamentally different. But most people are not vibe coding outside of pet projects, at least yet.
It's really not. Maybe vibecoding, in its original definition (not looking at generated code) is fundamentally different. But most people are not vibe coding outside of pet projects, at least yet.
Even putting aside the AI engineering part where you use a model as a brick in your program.
Classic programming is based on assumption that there is a formal strict input language. When programming I think in that language, I hold the data structures and connections in my head. When debugging I have intuition on what is going on because I know how the code works.
When working on somebody else’s code base I bisect, I try to find the abstractions.
When coding with AI this does not happen. I can check the code it outputs but the speed and quantity does not permit the same level of understanding unless I eschew all benefits of using AI.
When coding with AI I think about the context, the spec, the general shape of the code. When the code doesn’t build or crashes the first reflex is not to look at the code. It’s prompting AI to figure it out.
We're telling them what to do in a loop. Instead we should be declaring what we want to be true.
You can certainly write in imperative or functional but you are still telling the computer what you want. LLM use impercise language can generate loose binding the actual reality people one. They have there use cases too but they have a radically different locus of control. Compilers don't ask you to give up percision either they will do what you tell them to do. AI can do whatever it thinks is the most likely next token which is foundationally different from what we do when we engage in programming or writing in general
A compiler will tell you what is wrong. On top of that the intent is 100% preserved even when it is wrong.
An LLM will transform an arbitrarily vague input into an output. Adding more specification may or may not change the output.
There is a fundamental difference between asking for “make me a server in go that answers with the current time on port 80” and actually writing out the code where you _have to_ make all decisions such as “wait in what format” beforehand. (And using the defaults is also making a decision - because there are defaults)
Compilers have undefined behaviour. UB exists in well defined places.
Even a 100% perfect LLM that never makes mistakes has, by definition, UB everywhere when spec lacks.
Major corporations have had outages thanks to AI slop code. Lol the idea that people aren't vibe coding outside of pet projects is hilarious.
You specify the problem in natural language (the vibes) and the LLM spits out source (the code).
Whether you review it or not, that is vibecoding. You did not go through the rigor of translating the requirements to a programming language, you had a nondeterministic black box generate something in the rough general vicinity of the prompt.
Are people seriously trying to redefine what vibecoding is?
No, you're not.
> Are people seriously trying to redefine what vibecoding is?
Yes, you are.
As additional proof, the dictionary definition of vibe coding is "the use of artificial intelligence prompted by natural language to assist with the writing of computer code" [1]
It seems like vibecoders don't like the label and are retconning the term.
[1] https://www.collinsdictionary.com/dictionary/english/vibe-co...
That tweet coins the term, we agree there. The activity it describes is using natural language to generate software. Whether you add a review process or not doesn't substantially change that. Sure, Karpathy says he doesn't "read the diffs anymore". Why does he say "anymore"? Clearly he was reading them at some point. If not reading any diffs was a core part of the activity, that wouldn't be the case, the tweet itself clearly outlines that as optional. He's clearly not talking about a core part of the activity.
I do think the dictionary definitions, such as they are, are coming from a real place: some people do use the more general definition. And you seem to already know about both definitions. So why argue so belligerently and definitively in the first place? Parent comments you were replying to were obviously using the original definition. Talking about “retconning” is obviously silly given this timeline. Meaning in language is not a race to be the first to make it into a dictionary. It’s a very new phenomenon that new terms make it so quickly into a dictionary at all, and they’re always under review. So maybe factor that into your commentary?
This all started with the parent comment telling someone else (belligerently and definitively) using the broader definition that they were wrong.
And to be clear, nobody accused the people who lashed out here. They reacted to general statements that people are vibe coding.
I also don't understand why the term vibe coding couldn't contain a spectrum of responsible use. Just say you're reviewing your vibe coded commits!
Clearly the issue here is about how vibe coders perceive the term vibe coding. Some of them feel that it's demeaning and are trying to wiggle their way out of the label by arguing semantics.
I don't think you've shown that the narrow definition is the original one. That's just a claim with no evidence or argument for it.
If you think the tweet is that evidence, I disagree. The tweet itself could be used to support both definitions. Personally I think it's more inline with the broader definition (see previous posts in this thread).
You are still just stating opinions without any arguments. If you think the tweet is crystal clear evidence of your point, please show why. If you think my interpretation is strange (even though I've already shown you two normative sources that agree with me), please show why.
Look, there's already a term for unreviewed nonsensical genAI output: slop. The original tweet does not comment on the quality of the cod; slop otoh is specifically about the quality of the output. Call it slop if you want to specify that it's unreviewed.
Downvotes are not proof of anything. I'm getting roughly 0.5 downvotes per post, that's to be expected when multiple people are disagreeing with me about something they care about. And HN has been flooded by LLM enthusiasts for the past couple of years. This is not surprising.