Remix.run Logo
lukebechtel 8 hours ago

> We don't know any C++ at all, and we vibe-coded the entire project over a few weeks. The core pieces of the build are…

what a world!

falloutx 3 hours ago | parent | next [-]

First time I am seeing realistic timelines from a vibe-coded project. Usually everyone who vibe codes just says they did in few hours, no matter the project.

ben_w 3 hours ago | parent | next [-]

Hmm. My experience with it is that a few hours of that will get you a sprint if you're lucky and the prompt hits the happy path. I had… I think two of those, over 5 weeks? I can believe plenty of random people stumble across happy-path examples.

Exciting when it works, but I think a much more exciting result for people with less experience who may not know that the "works for me" demo is the dreaded "first 90%", and even fairly small projects aren't done until the fifth-to-tenth 90%.

(That, and that vibe coding in the sense of "no code review" are prone to balls of mud, so you need to be above average at project management to avoid that after a few sprint-equivalents of output).

Aurornis 2 hours ago | parent | prev [-]

It’s possible to vibe code certain generic things in a few hours if you’re basically combining common, thoroughly documented, mature building blocks. It’s not going to be production ready or polished but you can get surprisingly far with some things.

For real work, that phase is like starting from a template or a boilerplate repo. The real work begins after the basics are wired together.

yoyohello13 7 hours ago | parent | prev | next [-]

Everyone should read that section. It was really interesting reading about their experiences/challenges getting it all working.

AndrewKemendo 8 hours ago | parent | prev [-]

I would’ve walked for days to a CompUSA and spent my life savings if there was anything remotely equivalent to this when I was learning C on my Macintosh 4400 in 1997

People don’t appreciate what they have

imiric 6 hours ago | parent | next [-]

Did you actually learn C? Be thankful nothing like this existed in 1997.

A machine generating code you don't understand is not the way to learn a programming language. It's a way to create software without programming.

These tools can be used as learning assistants, but the vast majority of people don't use them as such. This will lead to a collective degradation of knowledge and skills, and the proliferation of shoddily built software with more issues than anyone relying on these tools will know how to fix. At least people who can actually program will be in demand to fix this mess for years to come.

metaltyphoon 6 hours ago | parent | next [-]

I don't understand how OP thinks that being oblivious how anything work underneath is a good thing. There is a threshold of abstraction to which you must know how it works to effectively fix it when it breaks.

hdgvhicv 24 minutes ago | parent | next [-]

I’m vaguely aware that transistors are like electronic switches and if I serve my memory I could build and and/or/not gate

I have no idea how an i386 works, let alone a modern cpu. Sure there are registers and different levels of cache before you get to memory.

My lack of knowledge of all this doesn’t prevent me from creating useful programs using higher abstraction layers like c.

jedberg 5 hours ago | parent | prev [-]

You can be a super productive Python coder without any clue how assembly works. Vibe coding is just one more level of abstraction.

Just like how we still need assembly and C programmers for the most critical use cases, we'll still need Python and Golang programmers for things that need to be more efficient than what was vibe coded.

But do you really need your $whatever to be super efficient, or is it good enough if it just works?

kshri24 5 hours ago | parent | next [-]

One is deterministic the other is not. I leave it to you to determine which is which in this scenario.

afro88 4 hours ago | parent | next [-]

Humans writing code are also non deterministic. When you vibe code you're basically a product owner / manager. Vibe coding isn't a higher level programming language, it's an abstraction over a software engineer / engineering team.

kshri24 an hour ago | parent [-]

> Humans writing code are also non deterministic

That's not what determinism means though. A human coding something, irrespective of whether the code is right or wrong, is deterministic. We have a well defined cause and effect pathway. If I write bad code, I will have a bug - deterministic. If I write good code, my code compiles - still deterministic. If the coder is sick, he can't write code - deterministic again. You can determine the cause from the effect.

Every behavior in the physical World has a cause and effect chain.

On the other hand, you cannot determine why a LLM hallucinated. There is no way to retrace the path taken from input parameters to generated output. At least as of now. Maybe it will change in the future where we have tools that can retrace the path taken.

jfreds 24 minutes ago | parent | prev [-]

This is true. What are the implications of that?

pqtyw 3 hours ago | parent | prev [-]

Perhaps there is no need to actually understand assembly, but if you don't understand certain basic concepts actually deploying any software you wrote to production would be a lottery with some rather poor prizes. Regardless of how "productive" you were.

ben_w 2 hours ago | parent [-]

Somebody needs to understand, to the standard of "well enough".

The investors who paid for the CEO who hired your project manager to hire you to figure that out, didn't.

I think in this analogy, vibe coders are project managers, who may indeed still benefit from understanding computers, but when they don't the odds aren't anywhere near as poor as a lottery. Ignorance still blows up in people's faces. I'd say the analogy here with humans would be a stereotypical PHB who can't tell what support the dev needs to do their job and then puts them on a PIP the moment any unclear requirement blows up in anyone's face.

neilwilson 6 hours ago | parent | prev | next [-]

That’s what a C compiler does when generating a binary.

There was a time when you had to know ‘as’, ‘ld’ and maybe even ‘ar’ to get an executable.

In the early days of g++, there was no guarantee the object code worked as intended. But it was fun working that out and filing the bug reports.

This new tool is just a different sort of transpiler and optimiser.

Treat it as such.

wizzwizz4 5 hours ago | parent | next [-]

> There was a time when you had to know ‘as’, ‘ld’ and maybe even ‘ar’ to get an executable.

No, there wasn't: you could just run the shell script, or (a bit later) the makefile. But there were benefits to knowing as, ld and ar, and there still are today.

jstummbillig 4 hours ago | parent [-]

> But there were benefits to knowing as, ld and ar, and there still are today.

This is trivially true. The constraint for anything you do in your life is time it takes to know something.

So the far more interesting question is: At what level do you want to solve problems – and is it likely that you need knowledge of as, ld and ar over anything else, that you could learn instead?

wizzwizz4 2 hours ago | parent [-]

Knowledge of as, ld, ar, cc, etc is only needed when setting up (or modifying) your build toolchain, and in practice you can just copy-paste the build script from some other, similar project. Knowledge of these tools has never been needed.

imiric 6 hours ago | parent | prev | next [-]

If you don't see a difference between a compiler and a probabilistic token generator, I don't know what to tell you.

And, yes, I'm aware that most compilers are not entirely deterministic either, but LLMs are inherently nondeterministic. And I'm also aware that you can tweak LLMs to be more deterministic, but in practice they're never deployed like that.

Besides, creating software via natural language is an entirely different exercise than using a structured language purposely built for that.

We're talking about two entirely different ways of creating software, and any comparison between them is completely absurd.

anthk 5 hours ago | parent [-]

People negating down your comment are just "engineers" doomed to fail sooner or later.

Meanwhile, 9front users have read at least the plan9 intro and know about nm, 1-9c, 1-9l and the like. Wibe coders will be put on their place sooner or later. It´s just a matter of time.

anthk 5 hours ago | parent | prev [-]

Competent C programmers know about nm, as, ld and a bunch of other binary sections in order to understand issues and proper debugging.

Everyone else are deluding themselves. Even the 9front intro requieres you to at least know the basics of nm and friends.

5 hours ago | parent | prev | next [-]
[deleted]
AndrewKemendo 5 hours ago | parent | prev | next [-]

It would’ve been nice to have a system that I could just ask questions to teach me how it works instead of having to pour through the few books that existed on C that was actually accessible to a teenager learning on their own

Going to arcane websites, forum full of neckbeards to expect you to already understand everything isn’t exactly a great way to learn

The early Internet was unbelievably hostile to people trying to learn genuinely

hrldcpr 3 hours ago | parent | next [-]

*pore through

(not a judgment, just mentioning in case the distinction is interesting to anyone)

rabf 5 hours ago | parent | prev [-]

I had the books (from the library) but never managed to get a compiler for many years! Was quite confusing trying to understand all the unix references when my only experience with a computer was the Atari ST.

Workaccount2 6 hours ago | parent | prev [-]

It's just another layer.

Assembly programmers from years gone by would likley be equally dismissive of the self-aggrandizing code block stitchers of today.

(on topic, RCT was coded entirely in assembly, quite the achievement)

lifetimerubyist 8 hours ago | parent | prev [-]

It’s worse. They’re proud they don’t know.

doug_durham 4 hours ago | parent | next [-]

"They" are? I didn't see that in the article. It sounds like you are projecting your prejudices on to a non-defined out group.

risyachka 7 hours ago | parent | prev [-]

Its like ordering a project from upwork- someone did it for you, you have no idea what is going on, kinda works though.

kmijyiyxfbklao 6 hours ago | parent | next [-]

Since there are no humans involved, it's more like growing a tree. Sure it's good to know how trees grow, but not knowing about cells didn't stop thousands of years of agriculture.

Jaysobel 6 hours ago | parent | next [-]

The Gas Town piece reminded me of this as well. The author there leaned into role playing, social and culture analogies, and it made a lot more sense than an architecture diagram in which one node is “black box intelligence” with a single line leading out of it…

kshri24 5 hours ago | parent | prev | next [-]

I wouldn't say it is a tree as such as at least trees are deterministic where input parameters (seed, environment, sunlight) define the output.

LLM outputs are akin to a mutant tree that can decide to randomly sprout a giant mushroom instead of a branch. And you won't have any idea why despite your input parameters being deterministic.

dpc050505 4 hours ago | parent | next [-]

You haven't done a lot of gardening if you don't know plants get 'randomly' (there's a biological explanation, but with the massive amounts of variables it feels random) attacked by parasites all the time. Go look at pot growing subreddits, they spend an enormous chunk of their time fighting mites.

kshri24 an hour ago | parent [-]

Determinism is not strictly anti-randomness (though I can see why one can confuse it to be polar opposites). Rather we do not even have true randomness (at least not proven) and should actually be called pseudorandom. Determinism just means that if you have the same input parameters (considering all parameters have been accounted for), you will get the same result. In other words, you can start with a particular random seed (pseudorandom seed to be precise) and always end up with the same end result and that would be considered deterministic.

> You haven't done a lot of gardening if you don't know plants

I grow "herbs".

> there's a biological explanation

Exactly. There is always an explanation for every phenomena that occurs in this observable, physical World. There is a defined cause and effect. Even if it "feels random". That's not how it is with LLMs. Because in between your deterministic input parameters and the output that is generated, there is a black box: the model itself. You have no access to the billions of parameters within the models which means you are not sure you can always reproduce the output. That black box is what causes non-determinism.

EDIT: just wanted to add - "attacked by parasites all the time", is why I said if you have control over the environment. Controlling environment encompasses dealing with parasites as well. Think of well-controlled environment like a lab.

doug_durham 4 hours ago | parent | prev [-]

In what world are trees deterministic? There are a set of parameters that you can control that give you a higher probability of success, but uncontrollable variables can wipe you out.

kshri24 an hour ago | parent [-]

Explained here [1]. We live in a pseudorandom World. So everything is deterministic if you have the same set of input parameters. That includes trees as well.

I am not talking about controllable/uncontrollable variables. That has no bearing on whether a process is deterministic in theory or not. If you can theoretically control all variables (even if you practically cannot), you have a deterministic process as you can reproduce the entire path: from input to output. LLMs are currently a black box. You have no access to the billions of parameters within the model, making it non-deterministic. The day we have tools where we can control all the billions of parameters within the model, then we can retrace the exact path taken, thereby making it deterministic.

[1]: https://news.ycombinator.com/item?id=46663052

ambicapter 6 hours ago | parent | prev | next [-]

Very interesting analogy

amlib 6 hours ago | parent [-]

Except that the tree is so malformed and the core structure so unsound that it can't grow much past its germination and dies of malnourishment because since you have zero understanding of biology, forestry and related fields there is no knowledge to save it or help it grow healthy.

Also out of nowhere an invasive species of spiders that was inside the seed starts replicating geometrically and within seconds wraps the whole forest with webs and asks for a ransom in order to produce the secret enzyme that can dissolve it. Trying to torch it will set the whole forest on fire, brute force is futile. Unfortunately, you assumed the process would only plagiarize the good bits, but seems like it also sometimes plagiarizes the bad bits too, oops.

risyachka 5 hours ago | parent | prev [-]

Its not like tree at all because tree is one and done.

Code is a project that has to be updated, fixed, etc.

So when something breaks - you have to ask the contractor again. It may not find an issue, or mess things up when it tries to fix it making project useless, etc.

Its more like a car. Every time something goes wrong you will pay for it - sometimes it will get back in even worse shape (no refunds though), sometimes it will cost you x100 because there is nothing you can do, you need it and you can't manage it on your own.

eks391 3 hours ago | parent [-]

Trees are not static, unchanging, pop into existence and forget about, things. Trees that don't get regular "updates" of adequate sunlight, water, and nutrients die. In fact, too much light or water could kill it. Or soil that is not the right courseness or acidity level could hamper or prevent growth. Now add "bugs". Literal bugs, diseases, and even competing plants that could eat, poison, or choke the tree. You might be thinking of trees that are indigenous to an area. Even these compete for the resources and plagues of their area, but are more apt than the trees accustom to different environments, and even they go through the cycle of life. I think his analogy was perfect, because this is the first time coding could resemble nature. We are just used to the carefully curated human made code, as there has not been such a thing as naturally occuring, no human interaction, code before

datsci_est_2015 7 hours ago | parent | prev [-]

Great analogy. “I don’t know any C++ but I hired some people on Upwork and they delivered this software demo.”

whateveracct 6 hours ago | parent [-]

Con fuckign gratys, u can buy compute