Vibe coding is closer to script kiddy
Programmer Humor
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
I don't know what vibe coding is, but I'm assuming it's when you relax in your chair, lean back, place your hands on the keyboard and just type. Let the vibes guide your code.
Vibe coding is when you're not coding, just typing prompts into AI in hopes it will produce a legible code.
i tried that one time. it was the only time i tried to use AI for something actually useful that i needed. i wanted to write some simple JavaScript that would rapidly flash 3 equally sized images on the screen of a handheld linux machine. the AI provided a list of instructions of software and other prerequisites i would need. after installing everything and entering in the code provided into the software, it immediately started yelling warning signs at me about the code. nothing ran. it was all useless. it felt like talking to a paranoid schizophrenic. the ai was so sure of the code, and insisted that i must be making a mistake, and kept apologizing and providing more useless code. it was literally just like talking to a paranoid schizophrenic at a bus stop, insisting all the crazy shit they're saying REALLY makes sense, if only you'll let them explain it to you further.
what trash.
I had a fun one this week! I needed to make an SQL query that would aggregate rows by invoice and date, but only aggregate 5 then overflow to a new row. I also needed to access the individual row data because the invoice items weren't summed, they were displayed on separate columns!
I ask my senior if there's an easy way to do this, he comes back with "chatgpt says you can assign row numbers then get individual row data with % row number"
I go to Gemini and ask "how to aggregate rows by 5 and get individual row data out?" It says "you can't" (since when has Ai's been able to say you can't do X) So I ask it about the modulo operator and it gives me an example that doesn't really work. After screwing around for a while I give up and decide I'll just run this query 3 times. 1 for rows 1-5 then for 6-10 and one more for 11-15 that's so many rows surely no one will break this.
Given how it "learns", asking for the same homework questions people have asked for on stack overflow a thousand times already would likely give a decent answer.
Asking it something new will produce plausible looking gibberish.
It has no idea which is which. It doesn't know where the limits of its knowledge lie. It just knows that the answer looks like code and is very confident, and that any follow up issues can be dealt with by outputting more nonsense code and an excuse.
These AIs really suck at writing correct code but I've had good success in having them write code generators. I recently made it write a script that takes a SQL create table statement and converts in to TS and gives insert update, delete and whatnot and also creates a simple class that handles the operations.
I had to write the original code by hand but having it write code that writes boilerplate which I correct is pretty good.
Other code is hit or miss IMO
I consider boilerplate code output like that to be well within reach of simple tools though. Tools that didn't need a year to learn from hundreds of terabytes of examples, 20GB of VRAM, or the power use of a small city.
Don't get me wrong, I still write more than 98% of code by hand and of course, I can write those functions myself in 30m myself but I can get it in 60s with the AI. LLMs can write code to that does parse - > model - > map - > format with only one or two easy to fix bugs.
It's in the very niche cases where it's just tedious to write something out that LLMs actually work. "Write an API client that uses [library] that handles these requests/responses" comes also to mind as something that would work.
I'm using now also to learn react native where I get bugs I'm very unfamiliar with and SO doesn't give me a good answer.
I've also had decent success at having it review my code with "how would I further optimise this code" and it gives me some pointers and then writes buggy code but the approach is correct usually and I can implement it myself.
Almost, finish that first sentence with "the ChatGPT prompt and copy-paste the result without reading."
I also don't know what vibe coding is, but my guess is it's coding while high.
It's when you relax the sphincter of your mind and let the llm gape you with its knowledge.
OPEN ME YOUR MIND
Its when you start a new program without any clear intention or goals and just use current emotion to guide you.
Branding, my dude. It’s called vulnerability as a service
VaaS the Stampede
Vaush the Stampede
Hehe horsey
Oh, a logical time bomb!!!
No love for the 'declarative' programming paradigm? You can actually do some useful work with SQL or Ansible...
Are those Turing complete? (Legit question, I'd love to know)
There are scripting extensions to SQL that definitely are. There are some features in some SQL servers that make it Turing Complete even without scripting stuff.
https://stackoverflow.com/questions/900055/is-sql-or-even-tsql-turing-complete
Like HTML5+CSS3 being Turning Complete, it's easy to add features that accidentally make you hit the threshold. Many would argue that it's a sign complexity has run away from you, and I tend to agree.
I fully support promoting CSS to be Turing complete if I never have to touch JS for the UI elements ever again.
Frezik has a good answer for SQL.
In theory, Ansible should be used for creating 'playbooks' listing the packages and configuration files which are present on a server or collection of servers, and then 'playing the playbook' arranges it so that those servers exist and are configured as you specified. You shouldn't really care how that is achieved; it is declarative.
However, in practice it has input, output, loops, conditional branching, and the ability to execute subtasks recursively. (In fact, it can quite difficult to stop people from using those features, since 'declarative' doesn't necessarily come easily to everyone, and it makes for very messy config.) I think those are all the features required for Turing equivalence?
Being able to deploy a whole fleet of servers in a very straightfoward way comes as close to the 'infinite memory' requirement as any programming language can get, although you do need basically infinite money to do that on a cloud service.
Pure SQL, as in relational algebra, is LOGSPACE/PTIME. Datalog is PTIME-complete when the program ("query") is fixed, EXPTIME-hard otherwise.
It's all quite tractable, but there's definitely turing-complete declerative langugages. Not just pretty much every functional language, but also the likes of prolog.
Functional is also declarative because control flow is implicit/unspecified.
What's actually missing is logic programming, of which the likes of SQL are a subset.
Tf is "return oriented"?
Do you know what a memory stack and assembly are?
If you want code that does assembly operations A, B, and then C, you might be able to accomplish it by scanning loaded memory (or its corresponding binary) for bits that, when translated into assembly, do:
A
D
return
This set of three instructions is a gadget. In practice, it's a location in memory.
And then you find another gadget.
B
C
return
Then, if you don't care about D, or D does something irrelevant that won't screw up what you're trying to do, or won't crash the program, you can replace the stack with the addresses of gadgets one and two. When gadget one returns, the stack is popped and then gadget two executes.
Since the computer did ADBC and D was irrelevant, the system executed your ABC malware and now you win.
Is finding gadgets that execute actual malware hard? Surprisingly not!
When you write code for a "runtime" that wasn't intended to run your code.
When you write code for a “runtime” that wasn’t intended to run your code.
That definition would be too broad, as includes any type of exploit.
In ROP, you modify the stack to write return addresses and then return to jump to the first of these addresses, the return addresses go to parts of the executable that end with a return instruction (gadgets), so it will always return to the next of your return address.
(That video is maybe not the easiest introduction to ROP.)
Having ROP in here as normal programming paradigm, as opposed to vibe coding, made the meme so much better.
Seems like not a real programming paradigm, and I don't mean in a No True Scotsman way. It really is in a separate category of thing. Could've said logic programming or stack-oriented programming.
Yeah fair enough now that I think more about it. IDK I just find the concept really cool so I included it.
It's fine memes are permitted to make jokes and it's more of a paradigm than vibe coding.
The one paradigm that's actually missing is logic programming, I would've gotten rid of unstructured to include it. The whole paradigm thing really only started with Dijkstra's rant about unstructured gotos (not the ones C has, in C you can't jump to the middle of another function).
I mean, if my boss understands that the output of vibe coding rarely works, i'm happy to chat with the AI all day if I keep the same salary.
NGL I'm waiting for the first lawsuit where an engineer is sued by a company by vibe coding as they were told and caused irreparable harm to the company as the whole product has to be redone from the ground up.
caused irreparable harm to the company as the whole product has to be redone from the ground up
Lol this is most projects for most companies I've worked for, long before AI came on the scene. Somehow these multi-year multi-million dollar disasters were never fatal.
But the product is also redone from the ground up by vibe coding because lessons are impossible to learn and corporate is infallible.
I wouldn't mind some corps vibing themselves into bankruptcy.
Mr neither 🤣
You lost me at return oriented programming. Getting something working out of that is way more difficult than doing it out of vib coding. (Way more impressive though)