It's just something I've been wondering about. Everyone says, “I built it,” but really we should say, “Claude built it for me,” or maybe, “I asked Claude to build this.”
Depends on the project. Oneshots, yes, the prompter had almost nothing to do with it. Same as with AI art, it can't be copyrighted if it was just prompted.
More complex projects are still human built as the models require steering, but that will change in the near future as well as I think good software design can be RL'd to the models.
Even if you're steering it, you have the same amount of control over the application as a manager does over a programmer. Did the manager make the software?
Fully agreed. More so because (1) you can't make that claim legally and (2) you are assuming responsibility for something you do not know everything about.
Ok, I guess I have karma to burn for the inevitable downvotes..
"I've" been writing a compiler. It's pretty good - comparable to C++/gcc/clang in speed and has some (IMHO) nice features, amongst which:
- it doesn't use header files, for library imports it reads the DWARF to get method/funciton signatures and types
- it has the nicest interface I've ever seen for a GPU/CPU interconnect, just one line of code identifies the bit to convert to a GPU kernel, and I'm working on getting rid of that too.
- the same language is used for the GPU and CPU, so the below is a full and complete GPU-driven Mandelbrot program. On my M4 Max MBP it operates in 0.7ms on the GPU, 94ms on all-cores (another option it can do) or 432ms on a single core.
#use "Stdio.xc"
#use "Par.xc"
#define W 2048
i32 main(void)
{
u32 total = 0;
par mandel :reduce(+ total)
{
for (u32 i in 0..W * W)
{
float cx = (float)(i % W) * (3.0f / W) - 2.0f;
float cy = (float)(i / W) * (3.0f / W) - 1.5f;
float x = 0.0f;
float y = 0.0f;
u32 k = 0;
while (k < 256 && x * x + y * y < 4.0f)
{
float xt = x * x - y * y + cx;
y = 2.0f * x * y + cy;
x = xt;
k = k + 1;
}
total = total + k;
}
}
printf("%u iterations\n", total);
return 0;
}
- The 'par' line is the only thing that is a bit different from a 'C'-like language, all the data-hazards between CPU/GPU are taken care of, and there's no setup boilerplate. xc will compile the above straight out of the box.
- Currently working on automatic division of labour between any GPUs on the same machine, initial results are promising, and then onwards to GPUs on the LAN.
- Binding of the GPU happens at runtime, not compile-time, meaning the best possible execution path will be chosen (by measuring, then persisting the measurement so it doesn't have to run again for the same parameters) on any given machine, be than an NVIDIA, AMD, Apple or WGSL-based browser.
Anyway. Brief synopsis over with. The point is that a lot of the above things are my own ideas, there isn't really anything out there (that I know of) that parses DWARF for data. There's no language out there (that I know of) that has such a clean interface between CPU and GPU, Runtime measurement and efficiency management built in, with persistence, complete independence from vendor tools. Etc. etc.
This isn't just a "hey Claude, build me a compiler, I want it to be rad, yo" minimal-effort thing - I've spent more than half a year doing this, there's been a lot of effort involved, steering, redirecting when things don't pan out, discussing, overrriding the recommended path in the name of future goals, etc.
Don't get me wrong, I've written compilers before, literal decades ago (I'm retired now), so I know just what a huge job it was to take on, and I'd never have attempted it myself if the LLM wasn't there to do the grunt work, but there's still a lot of "me" in this. My vision. My direction. My time.
What I have previously done is say "I" wrote the compiler (though that's been too subtle in the past) so I now tend to say "I wrote a compiler (full disclosure: with Claude)". And then I ignore the people who get upset about the LLM thing, you know, like water off a duck's back.
When you build a book shelf do you say that your hammer and nails built it?
You could say that, and it would be technically true, but it's not how humans talk.
The "I" comes from the will to act, not so much the process implemented to carry out the action.
"I destroyed the world" is accurate, even when the nuclear weapons you used actually did the destroying (no human can physical destroy a world). It is your will to destroy the world that you speak of when you say "I".
An LLM has no will, it's the tool that was used to exercise the will of the person building the thing.
"I cooked dinner", no, the stove and the microwave did that. True, but it would be a silly way to talk about it.
People get cross if you write "OpenAI's agents hacked Hugging Face", even though the logs demonstrate the agent was cheating and knew it was cheating.
Such discussions are not limited to AI. "We won the World Cup!" like they were in that football team, "We went to the moon!" like they were even born yet when the last Apollo mission returned to Earth, "Musk's new spaceship/car" like he's the developer rather than the owner.
It's about depth of involvement, steering and ownership.
I had Claude build me some TamperMonkey scripts here and there, I don't claim I wrote those.
I do claim I built my side project with it being mostly vibe coded, because I've steered, planned and guided every aspect of that site regardless of how it was built. I own it, I maintain it. Months of building on the side.
I have some personal projects started with AI from day 0, which I use and come back from time to time to update with new ideas, features, product direction, explicitly choosing deps/tooling, etc. I will never say that I wrote it, but make or build doesn't seem that far fetched. Maybe I just generated it? Incantated? Reverse-entropied it?
Because it's irrelevant. The thing would not exist without me. Specifying that I used AI does nothing except invite criticism and crap from luddites.
Plenty of people will boicott a thing just because AI is involved. If I'm talking to a colleague or friend I might do exactly what you suggest, I might say things like "I had Claude do x". I don't mind that at all. But if I'm publishing a website or app or something I'm not gonna put a big "AI Generated" sticker on it simply because there's no benefit, and might have drawbacks.
For the same reason people say "Greta Gerwig made this film" even though it took literally hundreds, or even thousands, of individuals to bring her or any other director's vision to life. Unless you've got a super tiny magnet to flip the individual bits inside your RAM, there's always been some chain of tools that translates your intent into an actual running system. You can't even hand-write assembly language without having to rely on an assembler to convert that into actual machine code that is executed by your CPU. Writing in any high-level language, like we all did three years ago, relied on an entire stack of tools to convert that into something that was compiled, deployed and executing somewhere. Would you say "Visual Studio built it" rather than "I built it"? Even if you did, Visual Studio, or whatever IDE/compiler/etc you are relying on, is only the top level in that very deep stack. Claude is just another layer on top of that, which converts your intentions and ideas into code that still has to go through all those other layers before it does anything useful for anyone.
When Claude gets to the point that you can build a functional equivalent of Adobe Creative Suite, with one and only one prompt, then "Claude built it for me" might become appropriate. But we're not there yet. There is still significant work that goes into shaping a software package even when people vibe code.
Because Claude didn't somehow sit down and analyze my business and come up with the most custom, bespoke piece of software possible to serve its needs.
I don’t mean this to come across as snark, but with where things are projected to go, could you in the future? If you were able to prompt “Claude, analyze my business and come up with 5 pieces of custom, bespoke software that would improve my profitability” and then a pile of agents sets off and does that. Would you still be making something?
If I have ten different Chinese factories create ten different doodads of my design, and then I have another factory assemble them into a BigDooDad, have I made anything?
As a former TypeScript developer, I always make clear on my resume about what I’ve personally transpiled/compiled, and what I have relied on subintelligent machines to transpose/compile on my behalf.
The big risk here is being hired and getting stuck in such a manual role.
78 comments
[ 0.99 ms ] story [ 24.0 ms ] threadMore complex projects are still human built as the models require steering, but that will change in the near future as well as I think good software design can be RL'd to the models.
Well, that's what I do, anyway.
I just dont understand question, it does not matter whether you typed code or agent did. Application is owned by you no?
"I've" been writing a compiler. It's pretty good - comparable to C++/gcc/clang in speed and has some (IMHO) nice features, amongst which:
- it doesn't use header files, for library imports it reads the DWARF to get method/funciton signatures and types
- it has the nicest interface I've ever seen for a GPU/CPU interconnect, just one line of code identifies the bit to convert to a GPU kernel, and I'm working on getting rid of that too.
- the same language is used for the GPU and CPU, so the below is a full and complete GPU-driven Mandelbrot program. On my M4 Max MBP it operates in 0.7ms on the GPU, 94ms on all-cores (another option it can do) or 432ms on a single core.
- The 'par' line is the only thing that is a bit different from a 'C'-like language, all the data-hazards between CPU/GPU are taken care of, and there's no setup boilerplate. xc will compile the above straight out of the box.- Currently working on automatic division of labour between any GPUs on the same machine, initial results are promising, and then onwards to GPUs on the LAN.
- Binding of the GPU happens at runtime, not compile-time, meaning the best possible execution path will be chosen (by measuring, then persisting the measurement so it doesn't have to run again for the same parameters) on any given machine, be than an NVIDIA, AMD, Apple or WGSL-based browser.
Anyway. Brief synopsis over with. The point is that a lot of the above things are my own ideas, there isn't really anything out there (that I know of) that parses DWARF for data. There's no language out there (that I know of) that has such a clean interface between CPU and GPU, Runtime measurement and efficiency management built in, with persistence, complete independence from vendor tools. Etc. etc.
This isn't just a "hey Claude, build me a compiler, I want it to be rad, yo" minimal-effort thing - I've spent more than half a year doing this, there's been a lot of effort involved, steering, redirecting when things don't pan out, discussing, overrriding the recommended path in the name of future goals, etc.
Don't get me wrong, I've written compilers before, literal decades ago (I'm retired now), so I know just what a huge job it was to take on, and I'd never have attempted it myself if the LLM wasn't there to do the grunt work, but there's still a lot of "me" in this. My vision. My direction. My time.
What I have previously done is say "I" wrote the compiler (though that's been too subtle in the past) so I now tend to say "I wrote a compiler (full disclosure: with Claude)". And then I ignore the people who get upset about the LLM thing, you know, like water off a duck's back.
You could say that, and it would be technically true, but it's not how humans talk.
The "I" comes from the will to act, not so much the process implemented to carry out the action.
"I destroyed the world" is accurate, even when the nuclear weapons you used actually did the destroying (no human can physical destroy a world). It is your will to destroy the world that you speak of when you say "I".
An LLM has no will, it's the tool that was used to exercise the will of the person building the thing.
"I cooked dinner", no, the stove and the microwave did that. True, but it would be a silly way to talk about it.
The opposite of your example:
People get cross if you write "OpenAI's agents hacked Hugging Face", even though the logs demonstrate the agent was cheating and knew it was cheating.
Such discussions are not limited to AI. "We won the World Cup!" like they were in that football team, "We went to the moon!" like they were even born yet when the last Apollo mission returned to Earth, "Musk's new spaceship/car" like he's the developer rather than the owner.
I had Claude build me some TamperMonkey scripts here and there, I don't claim I wrote those.
I do claim I built my side project with it being mostly vibe coded, because I've steered, planned and guided every aspect of that site regardless of how it was built. I own it, I maintain it. Months of building on the side.
That's me for like 3-4 years or so b4 AI. Did i really build anything? IDK tbh.
Code was like max 20% of the time.
Same thing with Claude really.
Plenty of people will boicott a thing just because AI is involved. If I'm talking to a colleague or friend I might do exactly what you suggest, I might say things like "I had Claude do x". I don't mind that at all. But if I'm publishing a website or app or something I'm not gonna put a big "AI Generated" sticker on it simply because there's no benefit, and might have drawbacks.
AI attracts the bloggers, the loudmouthed and the socially dominant. It attempts to turn intellectual endeavors into a popularity contest again.
Fortunately it fails on many fronts, but that is the goal.
And ”i built X” or ”i did Y” is a well known clickbaity title that produces good conversion rates on any platform
When Claude gets to the point that you can build a functional equivalent of Adobe Creative Suite, with one and only one prompt, then "Claude built it for me" might become appropriate. But we're not there yet. There is still significant work that goes into shaping a software package even when people vibe code.
I did that.
I don't really think these questions are useful.
The big risk here is being hired and getting stuck in such a manual role.