AI coding

Where are the vibecoded Photoshops?

Where are the vibecoded Photoshops?

(Revised 2026-05-19. The original version is preserved unchanged, alongside its discussion thread on Hacker News. The revision addresses confusion several readers raised in good faith. Thanks to all of them.)

A month ago I shipped SoulPlayer, a 25,000-parameter transformer running on a stock Commodore 64, written in 6502 assembly, verified by a ninety-test harness with four bit-identical reference implementations. It hit Hacker News, got covered by Adafruit, reached a few thousand readers with a long tail of replies.

A subset of those replies, some on HN, on Reddit, in DMs, in private channels, were variations of: "this is just vibecoded slop." "You didn't really build this." "AI did the work, you took the credit."

This essay is about that accusation. Not about whether AI is good or bad. Not about whether AI can or can't replace Photoshop. About the social weapon the word "vibecoded" has become when deployed against anyone who admits using AI in their workflow.

The accusation has a shape. It travels fast. It costs the accuser nothing and it costs the target a week of defending themselves. It's the same shape as every other "you don't really belong here" accusation that's been used to push people out of rooms for decades, just with new vocabulary.

To be clear: I'm not writing this primarily to defend myself. I've been doing public work for thirty years and I know how to stand my ground when trolls show up. I'm writing this because the accusation, as a pattern, is harmful to everyone in this field. The people it silences are the next generation of work. That's the cost I care about most.

I'm going to make one argument: the accusation has no evidence and never needs any. And I'm going to make it by asking a question the accusers can't answer.

So...

If vibecoding is what you say it is, if AI does the hard part, if the human just prompts and ships, if expertise is no longer a moat, then the world should be drowning in proper software right now. Not slop. Real tools. The kind people pay for, depend on, use every day. Two years of access. Millions of people with the models. The barrier supposedly fell.

...where is everything?

Show me the evidence

The vibecoded Photoshop, in the accuser's imagination, looks like this: "hey ChatGPT, make me a Photoshop so I can pretend I'm a l33t coder, lol" One prompt. Zero verification. Out pops a working app.

That's the picture. That's what vibecoding means when it's used as an accusation. Not "human collaborated with AI." Not "AI helped with parts of the work." The cartoon is the impostor and the one prompt and the magical output.

Fine. Show me one.

Where is the vibecoded Photoshop. The vibecoded Excel. The vibecoded Maya. The vibecoded Blender. The vibecoded compiler that compiles itself. The vibecoded database, the vibecoded OS, the vibecoded anything-that-requires-architectural-judgment-to-hold-together. Huh?

I am not asking for slop. Slop exists, slop is easy, slop is not the question. I am asking for the coherent, complex, non-trivial things that vibecoding allegedly makes accessible to anyone who can prompt.

Silence. Every time. The category is empty.

And the accusers never want to address that, because admitting the cartoon is empty means admitting the accusation built on top of it doesn't hold up.

Accusation without evidence

There are no vibecoded Photoshops because vibecoding does not do what the rhetoric claims it does. The accusation itself is the vibe. The accuser feels that a thing must have been easy because it was made with AI. They post that feeling as if it were a finding. The finding never has to be checked, because nobody else checks it either. The accusation travels because it feels right, not because it is right. Big difference.

The accusation that someone produced unverified output is itself being produced as unverified output. Or in other words.. The thing they accuse vibecoders of is the very thing they are doing: No definition. No test. No falsification. Just a claim, shipped fast, never checked. The accusation is the real vibecoded content. The accuser is the vibecoder. They accuse others of the very crime they are committing themselves, and most of them are unaware of doing it.

The line in the sand

Their whole attack vector is built around the premise of defending a gate that doesn't need defense, and a threat that doesn't even exist. I can prove it.

There are levels in this work. I unpacked the framework at length in a previous essay, but here's the short version.

Level 1 is what the industry usually calls coding. The syntax, the loops, the years memorizing pointer arithmetic and which header file the function lives in. LeetCode-measurable. The job interview essence. The mechanical part. The typing.

Level 2 is flow. What you do with Level 1. Knowing the right data structure. Knowing which ugly pragmatic solution to ship instead of the beautiful academic one. Reading other people's code. Taste and judgment. The reflex of rejecting solutions that almost work and shipping the ones that do. Debugging, unit testing, the quality-control part.

Level 3 is architecture. The macro decisions, made with full awareness of their consequences. What to build at all. Why this data structure and not that one. Why this trade-off and not the obvious one. Which design survives contact with the real world, and which one silently falls apart two years later. The deciding part.

The three have never been the same thing. The gate was never at Level 1. The gate was at Levels 2 and 3, where the work that holds together actually happens.

AI lowered the cost of Level 1. It didn't really touch Levels 2 or 3. The gate is exactly where it always was.

The Level 2 and 3 people can see this. They look at SoulPlayer and ask about the harness. They look at an AI music video and ask about the timing decisions or how consistency was enforced. They are at the gate. They know where the gate is. They recognize when someone else is also at the gate.

The accusers cannot see this. They are not at the gate. They were at Level 1. Level 1 was their identity, their hours, their proof of belonging, their reason to feel at home in this profession. When AI made Level 1 cheap, it did not threaten the gate. It threatened them. Because they bet their self-worth on the layer that just got rented out.

So they call the work vibecoded. They have to. The new artifact cannot be legitimate, because if it is legitimate, then Level 1 was never the gate, and they were never at the gate either. Exactly, and I feel sorry for everyone who is solely operating at Level 1 and with nothing left to contribute. If AI revealed they were never doing the deciding, that they were never doing the verifying, that they were the typist all along, then they are in deep trouble right now.

And they are finding this out in public. By panicking at the wrong things. By calling other people's work vibecoded because that is the only move left when the floor disappears under you.

I do not feel angry at them. I feel sorry for them.

I will not use this accusation

I could. I have receipts.

SoulPlayer has a ninety-test verification harness developed in Python that emits the C64 assembly and binary. Four bit-identical reference implementations have to agree before anything ships. I made sixteen AI music videos, weeks of work each, spent months developing our own custom inference toolchain in order to gain a maximum of control over the final frame. I have been the person you call when nothing else works, in rooms full of people who would never have called me on a good day. I know where the gate is. I have been at the gate since before this profession called it a gate.

My demoscene background alone would allow me to turn around and call other people's work vibecoded. I could punch down at every prompt-and-pray app on the internet and land a lot of hits.

I will not.

Because I know what the accusation costs the person on the receiving end. The shape is familiar. "You don't really belong here" is a move I've watched run on many people, in many rooms, for many reasons. Neurodivergent. Tics. Freelance. Demoscene-not-industry. Art-school-not-CS. Disabled. Different label every time, same move, same cost. It lets the accuser feel superior without doing any work. It makes the target spend their next week defending themselves instead of building the next thing. I recognize it because I've watched it. I will not run it.

I am writing this essay right now instead of finishing two other projects. So even in my case, knowing all this, the accusation is still winning, even though it has no evidence, no definition, no falsification, and no Photoshops to support it. The accusation doesn't have to be true. It just has to cost the target enough time and morale that the next person stops sharing their work.

People are afraid to say they used AI. Not because using AI is shameful. Because the accusation is shameful, and the accusation is cheap to make and hard to refute. The shame economy runs without any actual shameful behavior in the system. It runs on fear. The fear of being the next person targeted.

I will not feed that. I will not call work vibecoded just because someone used AI. I will not punch down on the prompt-and-pray crowd, even though they are wrong, because the form of that punch is the same form that has been used against me my whole life. I will not run it. And I will not duck away from the accusations either. I deliberately chose to be transparent and vocal about this.

If you've been sitting on something you made with AI, ship it. Name your tools. Don't apologize. The accusation is cheaper than the work. Yours is worth more.
And when you see someone else get called vibecoded for shipping real work: ask them about their tests. About their decisions. Show them you can see the gate. That's the move that breaks this.

QED

So.

Where are the vibecoded Photoshops? Where is the miracle prompt you built the accusation on?

I'm waiting.

— gizmo


Previously: I have no clue how 6510 assembly works. Shigeru Miyamoto has probably never compiled a line of code in his life.

Credits: @gizmo64k