Top
Best
New

Posted by LiamPowell 5 days ago

Bend 2 and the Vibe-Coding Trap(blog.liampwll.com)
327 points | 235 comments
hmokiguess 4 days ago|
> The problem is that vibe coding makes it possible to build a substantial solution before learning enough about the problem to recognise that a much better solution exists.

This example and Bend aside, I find this to be the biggest struggle with the perceived intelligence we have today. It's great at producing something that works, but it is not great at calling you out when you don't know what you don't know.

It's not able to educate and course correct you unless you have great self awareness and discipline.

That said, I think this goes for everything, it's easy to fall into this trap because it is very human. We simply don't know what we don't know, so it's not uncommon to revisit an old solution only to be enlightened that there is now new information that allows you to replace it with something much better.

I don't think anything here is new or changed, if anything changed is really just the rate that we experience this. LLMs make it easier and faster for the feedback cycle to happen.

Now back to Bend, I think putting your work out there and being unapologetic about it, open source even, and willing to take feedback, will go a long way.

I am more worried about the many closed source implementations of LLM built products that are being sold and people are depending upon that don't get this great criticism from many different thinking heads.

rozap 4 days ago||
Agree with everything you say here.

> I don't think anything here is new or changed

I would argue it's a little new though. I used to write dumb little programs all the time that explored an idea which was probably bad, and in that exploration I often found that there was a better way to do it, or that I didn't know as much as I thought I did, or that another thing already existed that was much better considered than my half baked idea, etc. But there was learning that happened there, so the process was still valuable. Now you can get a working bad idea without learning anything, there is full conservation of ignorance, but a full dopamine hit from "i made this thing". I guess you could argue it's just everything happening at a faster rate, but it feels different to me, and it is pretty eerie.

hmokiguess 4 days ago||
Yeah that's the other side of it, learning that is.

Before you would pause at overwhelming, now you get to "fail forward" with less at stake because the end result can still be verifiable even if the internals are a blackbox to you.

It's a sort of "deferred" and/or "optional" learning dilemma we now exist.

You could open the box, look inside, ask questions, but you would need to care and feel engaged, which is very hard to do when the result is already there.

This is why I framed it as requiring self awareness and discipline. Very easy to get caught into the slot machine dopamine cycle loop.

skydhash 4 days ago||
Sometimes the end result is good, but the means aren’t. With the “give me something” approach of most LLM usage, often you won’t realize you have bad code full of hidden bugs. Often, the steps are “it works on my machine” follows by an error in prod.
hmokiguess 4 days ago||
Absolutely, and this is true to handwritten code as well. This is why code review, tests, constraints, and putting effort into the critical pieces of software is paramount to success.

I also would argue that in this case, the end result wasn't good but rather perceived good. It was good enough to pass a smoke test, but not an integration test, and end-to-end test, a runtime edge case, etc.

All of software development lifecycle should still apply and be relevant here, the tool just changes the rate at how it gets written and it is tempting to move faster and continue skipping other steps. Especially so in greenfield work as a solo founder with limited time.

I think at the end of the day, a good metric is your "give a shit quotient". How much do you give a shit about what you are doing is likely the most important thing into how it is going to perform.

verdverm 4 days ago|||
> but it is not great at calling you out when you don't know what you don't know.

or itself, the moment it hits some ambiguity it becomes a spaghetti throwing machine, half the time using a single attempt (arbitrarily picks answers with little logic or attention to nuance).

They've been trained to behave in ways that make them run longer, quantity over quality. I suspect this is because the people training them are extreme vine coders. Certainly seems that way by their public statements and harness releases.

I would much prefer if they stopped and asked questions. Mild improvement with markdown engineering...

lbrito 4 days ago|||
That's an excellent point and kind of summarises the tension in LLM coding between the people being told to use it (developers) and the people doing the telling (managers). The latter are laser focused on the final product, the outcome, while the former are (were) more invested in the process.

Developers intuitively know that the development process would inevitably yield learnings that would shape and change what the final product could and should be, while managers typically dismiss this in favour of an illusion of productivity.

asgr 4 days ago|||
please, don't listen to Liam. The author is completely misrepresented in the blog-post :(
baxtr 4 days ago|||
Agreed. Anyone can share insights into how to do it better?

How can we "course correct" with "self-awareness and discipline"?

hmokiguess 4 days ago||
Self awareness means would be taking a step back and knowing if you're caught in a vicious cycle, trap, loop, pursuing something mindlessly.

Discipline would be turning this into principles you practice constantly, it's more of a lifestyle rather than a skill you "obtain".

For example, starting from the position of "I am taking on an idea where I may have knowledge gaps in" you first prompt for research and validation rather than execution. Even if the end result is you were right on your original design. (Sort of a challenge, adversarial, by default)

It will slow you down, but may lead to more sticky results.

MasterScrat 4 days ago||
I fully agree with this quote, it really crystallized something i felt but couldn’t put into words.
pu_pe 5 days ago||
The original discussion about the project (https://news.ycombinator.com/item?id=49746163) is very weird. Lots of call-outs about how the author is some sort of celebrity and random accounts vouching for him, with little discussion on the substance.

Not even the demo on that release works well.

stschaef 5 days ago||
I posted a sharp critique in the original discussion, aiming to be civil while critiquing the project. I may have been a bit terse, and would probably rephrase some of it now to avoid confusion, but I don't think I was ever outwardly disrespectful.

I received several very emotionally charged responses centered in the personal credentials of the author. They felt very out of place and did not engage substantively with any of the things I said. It was indeed very weird

The author, who I hadn't heard of before yesterday, actually seems like a cool dude. He was quite responsive, normal, and engaged with my feedback, which makes other random accounts being offended on his behalf all the more uncanny

Gracana 4 days ago|||
I think people responded that way because you strongly implied he was an unserious vibecoder who was just fooling around, and you called him suspicious as fuck.

Your post and the ones that followed are a good example of the contrarian dynamic that dang often talks about. https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...

SkyBelow 4 days ago|||
>who was just fooling around

In my own professional life, I've found this to be a very divisive statement. For some, it is a sign of wasting time and effort. For others, they use this to describe themselves when they want to do exploration for the goal of finding improvements, without any clear goal because they have a few ideas but none worth putting forward. I've been told to spend time learning AI and have found that saying "Yeah, I'm playing around with it." was the wrong thing to say because it was seen as not doing anything worthwhile. It doesn't matter that I would also say the majority of my tech skills were developed when I was "playing around".

I wonder if this is purely a linguistics breakdown, or if this is tied to some deeper difference in a person's relationship to tech?

ffreire 4 days ago|||
Agree it's divisive, and I would argue it speaks more to a person's perception of work vs play more than a relationship to tech. If (the general) you think that play is for children and work is serious biz, then yeah I could see how you wouldn't take someone seriously when they say they're "playing around with it". It's usually not obvious which attitude a person has though without getting to know them a little bit.
antonvs 4 days ago|||
Yes, I think it can be a sign of a very deep difference. When they say "spend time learning AI," they mean work through some teaching materials to learn how to replicate what others are doing. This often doesn't result in a deep understanding, but it can be enough to allow them to do their job.

Ironically, people with this mindset will sometimes ask people who they recognize as having strong skills to share their magic secret, which is assumed to be some books they read, videos they watched, courses they attended, etc. If you tell them that experimenting, playing around, etc. is a key element, they may assume you're just selfishly hoarding your fount of knowledge.

latexr 4 days ago||||
> called him suspicious as fuck

I don’t see anything from your parent commenter on the other thread that deserves that classification. On the contrary, while they initially had suspicious of vibe coding, on later comments they are cordial and even admit their own misunderstanding.

What am I missing? Where does “called him suspicious as fuck” come from?

Edit: Answered below (https://news.ycombinator.com/item?id=49754311). Thank you.

burkaman 4 days ago|||
"you [...] sound sus af" at the end of the comment. sus means suspicious and af stands for as fuck.
latexr 4 days ago|||
Thank you. I did indeed miss that. I did do a ⌘F for the individual words, but it didn’t occur to me they could’ve been written like that.
thih9 4 days ago||
To be fair, writing "sus af" is different from writing "suspicious as fuck" (just like "wtf" reads differently from "what the fuck", etc).
embedding-shape 4 days ago||||
Not to mention the author themselves say "Yes, there's a lot of vibe-coding in many places [...] We'll prune AI slop over time.", and then they both moved on to discussing the actual questions.

The whole "Wow, looks AI" > "Yeah, some of it is, we'll fix it later" was such a small part of the conversation, but then there are countless of other people chiming in about specifically the "Is It Slop Or Not?", rather than the meat of the conversation. And here we are adding even more meta-comments about it.

perching_aix 4 days ago|||
OOTL, could you give a link to a relevant @dang post?
latexr 4 days ago||
https://news.ycombinator.com/item?id=25140587
OGWhales 4 days ago||||
> I received several very emotionally charged responses centered in the personal credentials of the author

I took a look and honestly the replies were a lot more reasonable than I was expecting them to be. I don't think it's that out of place for people to inform you that the author has been in this space for some time and has prior work to look at (pre-vibe coding era). Really there was one reply citing his prior work, you responded to it calling it a very strange reply and were "very confused" why they would point to his history, even though you had just said things like:

>I'm glad you're having fun vibecoding, and I like that you're interested in this area of research/engineering

To me, it makes sense why someone would say the author has been interested in this area for a long time and pointed you to some prior work that was not vibe-coded, given your comment strongly implies they are just messing around and don't know much about the field.

To be clear, I share much of your feelings in your original comment. I just felt the replies weren't so unreasonable either. At least, I was expecting them to be a lot worse.

ModernMech 4 days ago|||
I don't think it was reasonable to call other poster a bully academic in need of a therapist. Calling the project vibecoded (perj.) and sus is very mild compared to what Reviewer #2 would have to say.

I agree with the other poster that is was very suspicious initially (sus af is not how I would put it, that sounds like a generational term) the author nuked their commit history while simultaneously pointing to a (Fable-written) paper which referenced the commit history in benchmarks. Then they seemingly had no understanding of why that's trust-breaking.

So to me, it sounds like the author didn't even read the paper they wrote, because otherwise they'd have remembered referencing the commit history, and wouldn't be asking us why we'd even care about it. “They” told us care! I'm glad they restored it but apparently that wouldn't have happened without the criticism.

stschaef 4 days ago|||
I’ve posted a follow up somewhere else in this thread about how I can retroactively see why some people would read rudeness in my comment. Even though this isn’t intended, I agree I need better choice of words

What I didn’t understand when expressing confusion with the responses, and still don’t, is the personal nature of the response. It wasn’t pushing back against anything I said really, moreso it tried to bring up the credentials of the speaker; and, I guess this feels a nonsequitr

Like, if I say “I have these problems with thing X”, it doesn’t really matter who made X. Sure, it’s context I didn’t have and there is something to be gained in saying it; but, it doesn’t really change any of the critiques I had. Appealing to the authority of the creator doesn’t engage with nearly everything I said

dicytea 4 days ago||
> I guess this feels a nonsequitr

How is that a non-sequitur? You're the one who brought up the topic of credibility in the first place. The comment was simply made in response to that.

burkaman 4 days ago||||
It was a fair critique, but if you're looking for feedback I think people were probably responding to your last line.

"I'm glad you're having fun vibecoding" comes across as very backhanded and condescending. It sounds like you may have actually meant that genuinely, but it doesn't read that way in text form.

"you sound sus af" is not respectful or constructive in my opinion. It's a description of your own feelings, not a critique of the project, and there's not really any way for the author to respond besides ignoring it or saying "sorry you feel that way" or something.

I think that line undermines the rest of your comment, because I'm left thinking that you don't really expect good answers to your questions and you just think the whole thing is dumb.

stschaef 4 days ago||
Yeah, reading it again it sounds far bitchier than initially intended. Thanks for the response

I was writing the comment very stream of consciousness and not really think about how it may come across

If I were trying to boil down what I’m attempting to communicate, it would be 1. The project seems cool, but it’s also making some very strong claims that I’m hesitant to accept

2. The coolness of the thing is undermined by the presentation of it. It comes across as putting the cart is put before the horse, and the overly strong claims and marketing speak read as trying to rhetorically sway the audience rather than engage with them technically.

3. I genuinely am happy that the creator made this, but modulo the above worries I think it should be reeled in a bit. In part because of the concerns I have about the content, and further because it is the kind of language that I expect others to have a strong averse reaction to. Possibly to the point of also reaching the top of HN with their negative response

To a friend, it might be easy to capture some of this message with “you sounds sus af”, but to a stranger in the internet I see how I just sound like a jerk. Words do matter, and I think I’ll be more careful about this in the future

user43928 4 days ago||||
I'm not familiar with the author, and I'm still mildly offended by your comment.

If I have years of experience on the topic and invested significant time into the project, I'd not be as civil as the author if someone came in and essentially called it vibecoded slop.

There is nothing weird about how others pointed out that the project appears to have merit contrary to how it at first might have looked to you.

baq 4 days ago||||
You posted a passive aggressive as personam and are (or at least act) surprised for getting called out.
lirolero 4 days ago||||
[dead]
blacklemontea 4 days ago||||
[dead]
FLeXMurphy 4 days ago|||
[checks profile]

If this is your first HN account and you haven't seen the site in the prior decade, the "emotionally charged responses centered in the personal credentials of the author" is the SOP. The site has yielded to that attitude because dang never enforced a sensible code of conduct, and relies mostly on favoritism and in-groups. Who says is more important than what is said, and the critiques you give are ranked according to whom you are critical of.

Think of this as a propaganda channel of a VC startup incubator who is brazenly looking for a product-market fit for anything and everything AI. Look at the roster of the recent startups and how many are AI-focused. Adjust expectations from there.

big_toast 4 days ago|||
Do you have examples of sites that you prefer that achieve this, or have a relatively high signal to noise ratio that also have a high volume of discussion? (preferrably not an individual's blog + comment section)
FLeXMurphy 4 days ago||
Lobste.rs
big_toast 4 days ago||
Hmm.. anything else?
stschaef 4 days ago|||
I am relatively new to the site, and I guess I’m just surprised by this. I thought the dweebs here would mostly care about the technical content

But I guess I totally ignored the YC context in that interpretation

larodi 5 days ago|||
The whole original conversation was very smelly from the very start, 20k stars included on the GitHub page with lost history.
marvinborner 4 days ago|||
The Bend1 launch was very successful, with 1000+ hn upvotes [0] and with several youtube videos with up to 1M+ views [1] [2] - that's where a lot of the popularity came from, I believe. They just recycled the Bend1 repo for Bend2 even though it's a completely different language.

[0] https://news.ycombinator.com/item?id=40390287

[1] https://www.youtube.com/watch?v=HCOQmKTFzYY

[2] https://www.youtube.com/watch?v=NaytZOiX3fs

bhouston 4 days ago|||
> ...on the GitHub page with lost history.

> They just recycled the Bend1 repo for Bend2 even though it's a completely different language.

Why would you kill the source history of Bend1 completely if it has 20K stars? You can only do that if Bend1 has no users at all right?

Does that meant that Bend1 isn't actually successful in its own right but rather only as a marketing project?

I wasn't one of the suspicious people but I am now.

LightMachine 4 days ago||
(author here) Bend1 indeed has no significant active userbase

I don't think that means it was "unsuccessful" in the sense you imply, though, because the project was never meant to be used in production. It was there to display a milestone (running inets on the GPU) and I was very clear it wasn't ready to be used yet. For example, it had only 24-bit integers, a 2 GB memory cap, and other limitations that made it unpractical. I still don't know why it has so many stars. I posted it to hacker news and that just happened. I guess it just went viral without really being ready yet, which got us to where we are now.

Anyway the commit history is back now. I apologize for nuking it

jdiaz97 4 days ago||
[flagged]
AlexErrant 4 days ago|||
It _is_ sus, but you should be willing to forgive. It's not like it was done out of animus, and I assume that an academic/foreigner is unaccustomed to how production software conventions work. Their baseline is less important, more important is how quickly they learn/adopt "best practices". Y-intercept, slope, etc.

I say this as literally the first HN comment to call them out on this.

verdverm 4 days ago|||
it becomes more sus as the superfans come out

the author here is providing commentary on the vibe coding era, bend is just one example of people having ai build things for them they don't understand or haven't researched sufficiently, at least start with a vibe-search skill before the vibe-coding begins

Ai is only good at a task when the human driver is good at that task, and this is far more narrow than most realize. Someone who knows how to program will still fail on many programming tasks with agents, the field has far too much for any one person to know.

raincole 4 days ago|||
It sounds even worse. Actually far worse. It's a project already in use and the author just nuked the whole git history?
gf000 4 days ago||
It's a research language, of the more experimental and niche type.

No one uses it seriously, and the author since then reverted the nuking of the git history.

monster_truck 4 days ago||||
Does anyone know where they bought the popularity and contributors from? I would like to do this for my joke language to fool unsuspecting users into using it seriously
gf000 4 days ago|||
Probably at the same market where they sell snark. You may want to sell your excess of it, especially that as mentioned there were a popular (as in got to HN frontpage multiple times) version 1 and it's all legit and honest work, getting uncalled criticism?
monster_truck 4 days ago||
Please do not shill your crypto here, nobody wants to buy snarkcoin
LightMachine 4 days ago||||
The history is back...
nylonstrung 4 days ago|||
Yeah 100% those are purchased/fake

Lean4 itself has 9k

steego 4 days ago||
I don’t they are purchased or fake.

I can unequivocally claim that Victor receives at least two orders of magnitude more social media engagement, while Lean likely has 4-5 more magnitudes of actual users.

Serious users of Lean simply have no need or reason to star the repository.

LightMachine 4 days ago|||
(Author here) What about it isn't working for you?

Also, wrote a response to this whole thread here:

https://news.ycombinator.com/item?id=49753898

gravypod 4 days ago|||
I cannot understand the hostility being directed towards you for this project. It seems very interesting. Your reply was very well thought out. I am very confused.
nullbio 4 days ago|||
Seems to be a fair deal of astroturfing going on for some unknown reason. I can't tell if it's intentional to drum up controversy, or it's genuine because people are bitter about this for some reason.
LightMachine 4 days ago||
I think people are genuinely bitter about it, that's usually how my projects are received
LowIqHn 4 days ago||||
[dead]
yellowmoonx 4 days ago|||
[dead]
maroonballoon 4 days ago|||
[dead]
gps372 4 days ago|||
Approach itself looked impractical to me for any non-trivial system, like domain centric system of records systems which can have 100s if not 1000s of laws. Though it can be tried as a side parallel thread to see if system is still compliant and following right first principals after a few years from its inception.

I would rather wait to see how it gets adopted, if at all. Anyone aware of early reviews of the adopters of bend 2?

ramses0 4 days ago||
As a matter of fact, I've been poking at this from a slightly different direction: "axioms and invariants" within home automation scenes.

Invariants were like "if outside temp < 40 or inside temp < 65: heater.minTemp( 65 )"

Axioms were like: "if {we're home} and it's {not a holiday} the house should be {comfortable temperature}".prompt

...and then that would get decomposed and translated into interlocking code for the scene(s). I'll have to look at this language a little more closely with those kinds of constraints in mind!

You're kindof translating `*.prompt` to either prolog (yucky!), lisp, lua, or javascript (for inspectability/debuggability), but this whole bend thing might be an exact fit for the problem space! Limited set of objects and states, bounded set of "invariants" (laws), and layering on top the general state modification activities (either "evaluated every 5 minutes and reconciled" or "set the scene xyz...").

gps372 4 days ago||
Hmm, in your example, temperature is fully measurable but there might be a slight challenge in measuring if "If we are at home". Since for this you need to define more variants with measurements from motion sensors, pressure or weight sensors on beds or sofas, if a device has got connected to wifi, etc.

By the time your first round of beta testing is over, you may have quite a handful of such axioms and variants, which have been humanly validated!

Have you done any such experiment in this space?

ramses0 3 days ago||
It was my "vibe coding playground" experiment. I haven't gotten anything solid fleshed out, but conceptually I wanted the "safety layer" to only permit fully expanded, concrete references.

Then break plain language requests into tool-calling-ish shared functions [atHome(), isHoliday(), comfyTemp(), ...] and basically throw "linker errors" if a concept didn't have a definition, eg: "ERROR: concept 'comfortable temperature' not defined..."

...and yes: be able to highlight overlaps or conflicting instructions at the semantic layer... those being less important than conflicts at the safety/invariant layer.

The idea was to have a bunch of basically "is_comfy_temp.prompt" => "is_comfy_temp.lisp" and be able to right click on any of the prompts and "show source" to understand, debug, simulate, validate, etc.

As you get real trials you end up with a foundational "StdLib" of at least necessary concepts although yours and mine might contain different data/preferences. And being able to edit "comfyTemp()" in one place as opposed to spread out in a bunch of different home automations (eg: isSummer vs isWinter else also: ifHumidity && upcomingWeather || realtimeElectricRates, etc...)

jdiaz97 4 days ago|||
>Not even the demo on that release works well.

>vibe-coded project

many such cases

octoberfranklin 4 days ago|||
The whole thing smells like somebody trying to pull an LLM-fueled Sokal Hoax on the programming world.
dwroberts 4 days ago|||
HN keeps being gamed to keep vibe coded slop on the front page and give it credibility. There was another language project a few weeks ago called ‘Wyzer’ that was just completely generated and largely nonsensical (didn’t do the lofty things the documentation claimed it did) and all the comments were glowing and harshly dismissive of any critique, it was bizarre
fzeroracer 4 days ago||
The number of times I've looked into something that was highly upvoted and purported to solve a problem only for it to be unreadable crap that barely functions has definitely skyrocketed over the past few years. In a way it's similar to how 80% of people only read the headline, except it's psychosis around the equivalent of a dressed up pile of trash.
HNModsSuck2 4 days ago|||
[dead]
guhcampos 5 days ago||
[flagged]
z7 5 days ago||
> The field in question is formal verification. It’s notable that those two words appear nowhere on Bend’s webpage or in its codebase. The developer has built an entire language around a field seemingly without realising that said field exists.

I checked the developer's X account, they have written numerous posts about formal verification, so this specific claim ("without realising that said field exists") seems to be false.

f0e4c2f7 4 days ago||
It's amusing to me this entire article is centered around brow beating this and other hypothetical software authors for starting things without doing a small amount of research first to understand the very basics of what they're getting into.

If the author of the article had done just a small amount of research about bend or it's author before writing the article they would have known pretty quickly what they were saying was incorrect.

I think the larger pattern here is that nuance is one of the most valuable commodities in the AI era. If you're hand waving stuff away without even missing , you're going to miss a lot of stuff in this cycle.

This article reminds me a lot of the famous hacker news Dropbox comment.

simonw 4 days ago|||
Back in 2018 they were working on Formality, an Ethereum formal verification project. They are the Victor in this video about it: https://slideslive.com/38911748/introducing-formality

Here's the GitHub repo for that, which demonstrates familiarity with formal proofs that long predates LLMs https://github.com/VictorTaelin/Formality

LightMachine 4 days ago||
Victor here. I haven't "worked" on Formality. I've founded it. Designed every part of it. Before LLMs!

sighs

Here's my response to this ridiculous accusation: https://news.ycombinator.com/item?id=49753898

I can't internet anymore. I need a beach

N_Lens 4 days ago||
Sympathize with you mate, this article just seems like a poorly researched hit job.
verdverm 4 days ago||
The article is about vibe coding, bend is the main character because it made frontpage.

The author here says as much in the introduction, that it is not about whomever is behind bend, but the larger trend

The author here has also added bend's author's link (in GP) to the original post, they very much do not seem to be doing a "hit job" and their intent is to comment on patterns from vibe coding

mannykannot 4 days ago|||
Bend's developer has posted a well-argued response here: https://news.ycombinator.com/item?id=49753898

I am glad I saw it, as now I am interested in learning more about Bend.

crvdgc 4 days ago|||
To be fair, if the two words indeed don't appear in either the webpage or the codebase, it is a bit strange. It's like implementing a whole Google alternative without ever using the words "search engine".
ahknight 4 days ago|||
He claimed the guy did no research while himself doing no research? I'm shocked! Shocked! Well, not that shocked.
LiamPowell 4 days ago||
I don't want to change that sentence now that people have discussed it, but I have added a note to the top to make it clear that I'm just taking it as an example of a vibe-coded program because it's recent and high profile.

My critiques of the language itself are not the main point, although I do still think that it's a very bad design to have a LLM waste tokens on a proof that could be written by CVC etc..

littleroot 4 days ago|||
>I don't want to change that sentence

>but I have added a note to the top

you know what's the least you could actually have done instead? no, you don't need to retract the blog post at all, keeping it up was the right choice. Now slap a big ass apology for being an unaware snob on top of it instead of leaving a link to the author's reply, like an after thought.

killerstorm 4 days ago||||
> Look like how AI slop has unrealistic physics

> Posts a link to real moon landing footage

I'd delete the article if I was you...

You know, in academia, they sometimes retract articles, even if they believe they are directionally correct

LiamPowell 4 days ago||
I feel that that's the worst option because it only leaves people who have read it without the added context at the start. If someone convinces me that I'm wrong then I'm happy to do so though.
gf000 4 days ago||
You should add a strikethrough to your post and post a public apology to the author.
jibal 4 days ago|||
> I'm just taking it as an example

But this is grossly intellectually dishonest. You know very well how this will be read and responded to here ... and you keep saying that you're just talking about vibe-coding oh but you have serious criticisms of the specific effort. You write passive-aggressive stuff like

> For all I know they did make an informed decision regarding the tradeoffs (which I would consider to be a poor decision).

which contradicts your base assertion that their decisions were not informed. And

> My critiques of the language itself are not the main point, although I do still think that it's a very bad design ...

You claim

> The developer has built an entire language around a field seemingly without realising that said field exists.

but that is severely factually wrong, which along with a lot else suggests that you have very bad judgment. As the author writes,

> Bend proofs being verbose has nothing to do with me not knowing that inference, unification, or program search exists.

IOW, you have made a serious error in logic.

> To be fair to Bend, I completely vibe-coded this

Some advice: DBAD

You trashed the author and his work without bothering to learn anything about either one first (which is quite ironic).

I won't respond further.

thomasahle 4 days ago||
> Where this differs from Bend is that what we have supplied here is everything required to prove the correctness of the program, without having a LLM waste time and tokens on building up a 442 line proof from first principles. We can run GNATprove and get: `Success: all checks proved (12 checks).`

GNATprove uses SMT solvers, meaning it's basically a brute force proof system.

Yes, brute-force proofs are easier than symbolic proofs (lean, bend, etc.) because you don't have to supply a proof. It's all automatic.

But brute-force proofs don't scale to nearly anything of interest, which is why formal verification has been a niche field for 30 years, until now where LLM can write _actual_ proofs.

johnfn 4 days ago||
Pretty impressive to accuse the author of not knowing formal verification when even minutes of research would immediately prove the opposite (https://x.com/victortaelin/status/2100942399132312059?s=46, https://x.com/victortaelin/status/2100374221671051472?s=46).
ofjcihen 4 days ago||
It’s unfortunate because what the OP describes is a real problem. Regardless of whether or not Bend2 is realistically usable or not, the author definitely does not fit the description of the type of people who are actually causing the issue.
mentalgear 5 days ago||
> The author of Bend has completely missed that this is the current standard in the field of formal verification, if they even know that this field exists at all. They have instead come up with this whole system requiring verbose specifications and even more verbose proofs. A little research before vibe-coding an entire language and compiler could have substantially improved the result because the author would have known what to ask for.

> This example matters beyond Bend, vibe-coding makes it makes it far too easy to implement a design that’s horribly broken or decades behind the current state of the art because you can immediately get a result without ever having to do any research. If you ask a LLM for a language where it’s possible to prove that a function is formally correct by building up a proof from basic principles then it will happily do so, it will never stop to suggest to you that computers can already build complex proofs without the need for a LLM and eliminate 99% of the work. It will never tell you that what you’re building already mostly exists as work that you can build on.

---

That's why all your LLM requests to build something substantial should start with "run prior work research first". Of course, at some point everything converges (if we share our outputs open-source) and then we may have solid standard patterns and libraries and do not need to waste trillions of tokens globally to rebuild the same minor, fundamental things, each one in their silent little silo.

IF we share, it will be of course to the monetary detriment of LLM providers who will have less income overall, and of course now they can't repackage anymore all our collective input, thoughts, human 'thinking traces' that they collect in their meta-data, as their new 'innovations' any more to inflate IPOs / stock prices.

bunderbunder 4 days ago||
Although, I have known using an LLM to do your prior research to itself be a trap.

The searches it runs, and the summaries it provides, are all incredibly sensitive to your choice of words. Words you chose from a state of minimal knowledge. So it’s like a particularly perverse version of the anchoring bias: information that could have led you to a better solution is often actively filtered out of the agent’s response precisely because it leads down a different path from your first idea.

In short, if you ask an agent what’s the best hammer for driving screws, it’s liable not to mention that screwdrivers exist.

cruffle_duffle 4 days ago|||
Depending on what I’m doing I’ll dedicate a few deep research sessions to building a framework. It will generate some grounding docs that go into the repo and get consumed as we go. Said docs establish terminology, widely known formulas and methods, etc.

And yes the output of these researchers are highly sensitive to prompting. Left to their own devices the LLM will often ship some very biased prompts to its deep research agents loaded with pre-conceived ideas rather than letting the agents uncover things themselves. Then all the agents do is confirm what the prompt told them to rather then “think independently”. (Very similar to open ended interview questions rather than asking yes/no questions)

It’s is far better to spend a session writing writing the research prompt itself.

All of this takes time and tokens of course…

estetlinus 4 days ago||||
Beautifully written. Hammers for driving screws + sycophancy are horrible together.
user43928 4 days ago||||
Is it?

As in, are you sure, and can you provide concrete examples?

mylies43 4 days ago|||
I just tried it with chatGPT asking for whats the best hammer to drive in a nail, and it gave me a list of hammer suggestions :p . I drove it a bit further and specified wood screws and while it did point out a screw driver would be better it still kept recommending more specific hammers for driving the nails instead!
ModernMech 4 days ago|||
Yes this is precisely why experts drive LLMs so much better than novices. It’s also why I don’t dismiss pure LLM output as slop and uninteresting; even if we both are using the same LLM, I probably can’t make it output what you can make it output.
cmiles74 5 days ago|||
Or maybe it should be a flag to indicate that there might be more to think about before handing the task of to an LLM.
zbentley 5 days ago|||
> That's why all your LLM requests to build something substantial should start with "run prior work research first".

Yes, but I think there are incentives to not do this for many LLM providers. Doing prior-work research is slow (web searches aren't fast, LLMs are rate-limited or blocked from plenty of pages, etc.), and sometimes contradictory which annoys LLM users, many of whom like faster gratification cycles from the agent slot machine handle.

Also, writing a bunch of bespoke code instead of leveraging prior art makes a lot of users feel like they own something novel/big/important, and also poses a larger maintenance surface for the LLM to make future changes (which costs tokens).

I don't think there's, like, a conspiracy at LLM providers to set up system prompts/RAG/etc. to discourage research-and-use-prior-art-by-default approaches. Rather, OpenAI/Anthropic/Google/etc. are optimizing for real but sometimes misleading success metrics which often lead away from a research-first approach.

honr 4 days ago|||
- That should nowadays be very obvious. You start any substantial work by doing research. LLMs are [perhaps surprisingly to some] good at that. They are also pretty good at doing the plumbing. That is a godsent in the hands of a good researcher and architect. And I don't have any qualms if tokens are "wasted" on research or on the precursor work. That doesn't replace reading good books on a subject but it DOES replace finding and filling knowledge gaps.

- But that shouldn't be confused with getting the LLMs to make the decisions. I believe that would quickly ruin a good design, unless the decisions are about truly inconsequential aspects, which are very rare in language and API design.

- I don't believe that (sharing) is to the detriment of LLM providers either. Not realistically. We would build faster and the questions / research directed at LLMs would be more sophisticated. Believe it or not, they can't cache questions as easily as websearch queries. If anything, I believe the more people learn to use LLMs effectively (rather than just to generate slop), the more their usage will be ingrained in daily life. Some of that will be redirected towards current LLM providers. But perhaps more of the economic share will increasingly go to hardware providers, as more and more people will be interested to run their own models.

Forgeties79 5 days ago|||
> "run prior work research first".

As effective as “make no mistakes.”

It is trying to please you, and it always determines that the way to please you is to fulfill the original, core request. Any caveats or first steps will always be secondary to the ultimate goal of “this person wants to do X, so I will do X.”

The only first step I have found somewhat consistently useful, because as we know LLMs do not behave consistently, is when doing tech troubleshooting I will go “look at documentation for X before answering” so that it will search manuals and such. Helps avoid speculation. But even then, it’s still not full proof.

Sidebar: this is one of the core problems of LLM’s currently. You are basically arguing with them to get them to behave a certain way all the time and it’s not always clear if they’re doing what they’re being told to do. Then add the compounding layer that the longer the conversation goes on, the more likely it is to misunderstand or just ignore things as it descends into context-length-induced madness

CharlesW 4 days ago||
> As effective as “make no mistakes.”

Those aren't comparable instructions. Providing useful, related context to improve outcomes is a basic best practice, and asking LLMs to do research first is an important source of that.

Forgeties79 4 days ago||
I’ll admit I was being overly tongue-in-cheek with that. You’re right it is more useful. But it also can’t be trusted to do that reliably, it’s primary goal is to give you the core thing you asked for - and often this is regardless of the parameters you put around it.
CharlesW 4 days ago||
Fair enough, knowing when to be and not be prescriptive about implementation details is critical too!
cyanydeez 5 days ago||
Humans dont let LLMs raw dog internet web searches.
captainmuon 4 days ago||
I haven't looked into Bend 2 in detail, but it seems a bit harsh to call it "horribly broken or decades behind the current state of the art". Clearly there is a problem with formal verification languages and there is a demand for something else in that area, and the problem is the usability and syntax. I don't want to have to learn something that looks like Haskell, or to have to wrap my head around Curry-Howard correspondence. I don't want to write my conditions in something that looks and feels like C++ template metaprogramming. I recall a Hello World in something like Coq a few years ago which basically started with "first, we construct the Peano integers", and then they used this to prove that some calculation was bounded - because it seems they couldn't represent integers natively?

I just want to be able to write C#, JavaScript or whatever, and then tack on preconditions, checks and so on with the same syntax. Dependent typing and design by contract for the masses.

bunderbunder 4 days ago||
It sounds like the crux of the issue here is that you don’t want formal verification in the first place. Your last paragraph sounds more like code contracts, which is also a thing that already exists.
captainmuon 4 days ago||
Well, yeah, you have code contracts in Ada or Spec#, (very limited) fixed type ranges in Pascal, ... but no general purpose programming language lets you put an arbitrary expression in the same language in a type as a permanent condition, or lets you state facts that the compiler will prove.

Of course not, that would be equivalent to solving the halting problem, many people will say.

I wonder if that will change now: I'm happy with an imperfect sanitizer that I run every now and then and will run a couple of minutes and come back with: I've proved your conditions, I proved a violation, or I can't decide, please change your code.

IsTom 4 days ago||
> no general purpose programming language lets you put an arbitrary expression in the same language in a type as a permanent condition, or lets you state facts that the compiler will prove

Lean can be used as a regular programming language. There's also languages like idris2 and f-star, but they don't seem to have much traction.

gf000 4 days ago||
Well, they of course not defy computer science. The "trick" is that they are not Turing-complete, they mandate termination of every expression.

Also, most of them are made to prove stuff first and foremost and thus trade off a lot of performance to the point that it makes them practically unusable for many stuff (e.g. numbers may be represented as an object that has n-1 further children recursively), though Lean is an exception as you note.

IsTom 4 days ago||
> The "trick" is that they are not Turing-complete, they mandate termination of every expression.

I don't think this is a big deal for day-to-day programming. You're trying to stay in n, nlogn or maybe n^2 realm most of the time. And the kind of infinite loops you encounter (e.g. event loops) are co-inductive or have some notion of making progress.

LiamPowell 4 days ago||
> "horribly broken or decades behind the current state of the art"

This is just about vibe-coded programs in general when the approach assumed by the article is taken. For all I know they did make an informed decision regarding the tradeoffs (which I would consider to be a poor decision).

> I just want to be able to write C#, JavaScript or whatever, and then tack on preconditions, checks and so on with the same syntax.

That's more or less what SPARK (and others) do, although specifications for large programs can become nasty.

wg0 5 days ago||
Some noteworthy lines from the README.md[0]:

> - The compiler (not kernel) is 99% AI-written and has not been fully audited yet.

> - Strings are linked lists of characters, so text processing is slow.

[0]. https://github.com/bendlang/bend/tree/main

LightMachine 4 days ago||
So are Haskell's, since 20 years ago, with no options for years?

We will introducing binary buffers eventually. The project is new...

bunderbunder 4 days ago|||
“No options” simply isn’t true. Here’s a guide to many of the options: https://hasufell.github.io/posts/2024-05-07-ultimate-string-...

Now if you’re asking why the basic prelude String type remains as it is, that’s because changing it would break more code than it’s worth, at least as far as prelude’s maintainers are concerned. This is no different from how standard C strings remain a null-terminated sequence of bytes even though that’s been awful for everyday use for at least 30 years.

LightMachine 4 days ago||
Note that using linked lists for strings is actually more "parallel friendly" because you can take the head/tail and spread it around 16k GPU cores in O(1), unlike in Haskell, unlike arrays, which require a linear copy, becoming quadratic. So, the right "default type" isn't that clear on Bend, because GPUs behave very differently from CPUs.

That said, yes, we definitely should have a compact Text type. I'll add it over the weekend.

bunderbunder 4 days ago|||
Though also, parallel processing strings and other non-numeric data on that level of granularity is, IME, typically less performant. The parallelism rarely manages to offset the performance penalties incurred by decomposing the problem in a parallel-friendly way. Even on a single machine you’ve got to think about whether organizing the data in a parallel-friendly way also makes it less cache-friendly. For example, a linked list of Unicode code points is 12 bytes per character, and each character might be on a completely different cache line. Depending on language a UTF8 buffer might be 1/10 the size and have a much more compact layout in memory.
ModernMech 4 days ago||
Related:

https://www.usenix.org/system/files/conference/hotos15/hotos...

  We survey measurements of data-parallel systems recently reported in SOSP and OSDI, and find that many systems have either a surprisingly large COST, often hundreds of cores, or simply underperform one thread for all of their reported configurations.
bunderbunder 4 days ago||
Yes, love that paper.

Anecdotally I have a bit of a track record of 10xing slow systems’ throughout by converting them from distributed to single-node or from multithreaded to single threaded.

Heck I once even sped up a number crunching operation by getting it off of the GPU and onto the vector coprocessor. Because GPUs also have a bunch of extra overhead to have to amortize away.

imtringued 4 days ago|||
Splitting a linked list is an O(n) operation.

You can slice up arrays in O(1).

The default type is incredibly clear to me.

mrkeen 4 days ago|||
To clarify, It looks like Haskell got better string types around 20 years ago.
jdiaz97 4 days ago||
> > - The compiler (not kernel) is 99% AI-written and has not been fully audited yet.

so vibecoded

wg0 5 days ago||
If you have to write LAWS.bend which is pure code describing the laws then it isn't basically like those old days of writing unit tests and that too tests first hence the TDD?

So what is the unique idea here except a vibe coded compiler that generates C and everything else is handled by clang+llvm?

From README.md:

>The compiler (not kernel) is 99% AI-written and has not been fully audited yet.

Also, why the compiler is not written against and with LAWS.md so that no audit is required at all?

hnhn34 4 days ago|
> If you have to write LAWS.bend which is pure code describing the laws then it isn't basically like those old days of writing unit tests and that too tests first hence the TDD?

There is a key difference: the laws are formally verified, as in Lean or Rocq (but much faster). So it's like writing a unit test or property-based test, but when it passes, you have a mathematical proof that you will get the expected output given ANY input in the infinite space of possible inputs. In traditional TDD, you make up some test case, write some asserts, and it passes if you get the expected outputs from those inputs and only those inputs. So you have to make multiple test cases for the same thing, and you still don't have any formal guarantee of your code's correctness.

> Also, why the compiler is not written against and with LAWS.md so that no audit is required at all?

Because it is mathematically impossible due to to Gödel’s second incompleteness theorem, which states: any consistent formal mathematical system strong enough to harbor basic arithmetic cannot prove its own consistency

mohsen1 4 days ago|
> A little research before vibe-coding an entire language and compiler could have substantially improved the result because the author would have known what to ask for.

A little research before writing and publishing a personal attack like this could have substantially improved the result because the author would have known what they're writing about

Victor is not a formal verification noob as this article suggests

More comments...