Thought it might be fun to revisit this conversati...
# of-ai
g
Thought it might be fun to revisit this conversation after one year: What if "vibe coding" is the real future of coding? Is "programming as theory building" a dead-end? Having a bit of an existential crisis here. Anyone else?
😆 1
s
Hah! It's very funny seeing this a year later, I remember the discussion though didn't really participate. It definitely felt at the time and felt for a few months that we were losing the "theory building" part of it...but I've really leaned into the vibe coding side of things and I don't know how to phrase it...maybe new "theory building" pathways have opened up for me, and now I'm able to move more comfortably at this new agent speed across a bunch of different products just fine again...
❤️ 1
t
I am also having an existential crisis. Its not my first. I got into programming in the 80s with the idea it was great I could build anything, resources felt unlimited. Then I worked at Google and realized hardcore software like Spanner took 1000 human years to make and felt demoralized that software so expensive and resource intensive in practice. Then AI came a long an I was like great, we are back to the 80s where the world is my oyster again. But now I see everything centralizing to a very specific form of coding I don't even feel is a good one and I am back to being demoralized again. You have to follow the mainstream in industry because otherwise you get left in the dust. Anyway, I think the job I work now at is probably my last software industry position, proper software development is tiresome.
🤔 3
❤️ 5
w
Feel my own comment has aged well. Seeing as I have now dived down AI "verifying" rabbit hole to a lovely conclusion, though curiously, one that only accidentally involves coding. More to come later this week friends. Very excited.
➕ 2
❤️ 2
@Tom Larkworthy so it's the velocity of a very specific way of doing AI assisted programming that's troubling you?
t
yeah it always like this. Everyone use Java, Everyone use React, Everyone use Claude Code. The constant winner-takes-all dynamics disempower the individual, which is what I liked about software in the first place, but in practice you jsut have to pay close attention to what everyone else does and try to predict the hype trends. YOU PICKED ANGULAR GO TO JAIL DO NOT PASS GO!
🤔 1
k
It might help to not conflate day jobs with fun or idealistic programming. I made this mistake for a long time. The world in there is always your oyster, but out here it never is. If you think you can't use Angular or whatever for your side project there's probably wires getting crossed somewhere.
❤️ 1
w
Yeah, in my current configuration I'm all for Claude Code though I can swap the backend LLM though I only want to directly talk with Opus. The others are too annoying.
t
yeah I am happy doing what I like in spare time, its maintaining my employability status I find exhausting and not particularly a good use of my time anymore.
💯 1
g
Glad we have some comments here. I am still trying to make sense of it all. One item I am curious about: Does spec-based development like Kiro.dev or Intent provide an adequate substitute for theory-building?
t
I would still say its the executing program that is doing the theory prooving, the spec bit is like a proof sketch and not the proof itself. Its just nice we don't have to write the minutiae anymore. I use self-improvement loops a lot at work, so if the running program is used to correct the spec then I guess maybe the spec becomes something closer to being an actual distillation of a theory.
g
[before I read last year’s thread…] I find myself using Claude for “coding” more and more, but, I feel the code is of low quality and wildly complicated, like that written by overly-eager junior programmers. I think that LLM “coding” has opened a new niche, something like coding for non-programmers (kind of like “spreadsheets” being computer programming for non-programmers). When I don’t care about the result, I use Claude, when I do care and want to push the boundaries, I write it myself. My impression: Claude has learned how to code for 21st-century machines using 20th-century techniques, from overly-eager junior programmers. Good human programmers get promoted to higher levels of incompetence and essentially stop producing lots of code, and, that “good code” doesn’t form the bulk of LLM training material. So, LLMs get to learn from a huge code-base built by junior programmers. In my mind, programming needs to step up to a new level, we need to invent new ways to cope with new problems. LLMs can’t invent that kind of thing. LLMs seem to be helpful for understanding existing code and for translating code from one language to another. We should be using LLMs to explain how UNIX V1 was architected and written, how Blue Book Smalltalk was written, how Sector Lisp was written. Or, use LLMs for experimental coding, and trying out new ideas as quickly as possible, using existing stuff.
👍 1
w
I’m bullish on the potential of current models, agree that the out-of-box capabilities leave some things to be desired, and I need to experiment in how to better motivate improved code quality.
g
a) To improve code quality, I think we need to restrict training only to "good code" (who gets to determine what that is? :-)). b) To move into the 21st century, we need to begin to seriously use something like /asynchronous/ message passing (not Erlang, nor Smalltalk, nor Go, nor “threads”, nor promises, nor baubles like “async”, nor SIMD/SIMT, nor anything “synchronous, sequential”) alongside of synchronous, sequential function calling. c) I would like to have a kind-of Claude that doesn't create 20th century code for me. I think we need o train it on a chosen, limited set of code samples and ideas. Claude is getting to know what I’m working on, but keeps producing 20th century code, instead of the stuff I want to produce. [20th century programming == essentially single-threaded CPUs, enbaubled with workarounds and half-measures like SIMD and multi-core, 21st century programming == programming for zillions of decentralized DPUs (Distributed Processing Units (instead of Centralized Processing Units) using many languages/paradigms at once].
w
I think they are smart enough without being retrained at the neural network level, but you have to get CC into the right mood and have it double check its work.
🤔 1
k
@guitarvydas That's an observation I see all around me wherever people apply AI techniques: limited-domain models, with well-delimited domains, are much more useful than generalist models. The main reason we have mostly generalist models is the difficulty and effort of selecting training data for specific domains, plus sometimes a lack of domain-specific training data.
w
I don't know the details, but it seems fine tuning a big model requires a lot of compute and training data. Is there anyone in the thread willing to fact check me?
t
Fine-tuning exists as a service https://developers.openai.com/api/docs/guides/model-optimization/ https://docs.aws.amazon.com/bedrock/latest/userguide/custom-model-fine-tuning.html so you don't actually need to run it. The OpenAI docs explain it, but also warn that it is a time-consuming process vs. prompt engineering. They also only let you fine tune 4.1 and we have moved on a fair bit since then.
👀 1