83 comments

[ 0.22 ms ] story [ 35.2 ms ] thread
How much of iOS is vibe coded?
> I also noticed a pair of very bizarre apps, both branded with the yellow “Don’t tread on me” flag: DuressKeyboard & UnlicenseLauncher. What’s most curious is that they have been in development for quite some time, yet all the changes are done not with git but through the GitHub web file editor! Someone go find that person and teach them to use git.
Reminds me of a professor that displayed snippets of Haskell on MS Word in her lectures, formatted by hand. I don't blame her, this was >20 years ago, before Ctrl/Cmd + +/- became commonplace for zoom/font size.
My first startup job after college I was astonished to find that one of our most productive engineers was a deaf furry who used Windows Notepad as his dev environment. His code always compiled first time and was nearly always right. It really was something to behold.

"The way that works for you is the right way."

Not that many years ago (maybe 2012-2014), we were taught working with R using only the base-R. Its' native script editor was a Windows Notepad or something equivalent. We used this for years.. Professors as well. For some reason we didn't know about RStudio or any other fancy IDE.
> Hey Claude, make a load-bearing time machine set to 2016 – a time when I was a happy kid, nothing bad ever happened and all was good in FOSS-land.

> Make no mistakes

Don't forget the copium!

[delayed]
Perhaps cause OP used "recently updated" apps? Vibecoded apps tend to have a higher update speed, thus skewing those results?
Seems like the wrong question to ask. I've been programming my whole life but basically stopped writing code by hand in 2026. The LLM writes better code than I do, much better.
Skill issue then
I just asked Astra to bring an old Windows XP game to the browser. It objdump'ed the whole thing, built a fitting Win32-like wrapper that exposes required functionality like DirectDraw, DirectSound, SEH etc., then wrote an x86-32/x87 interpreter in WASM, benchmarked how the game runs, lifted the hotspots of the executable to WASM too and now it is playable!

I mean, I'm proud of my low-level skills too but this is some Fabrice Bellard level sorcery. Very, very few humans are able to do this without AI tools.

If there are very few humans that can do this is because the market for such a task is very small and thus there is little incentive to learn how to do it or produce tools that can do it.
But good code isn't just "does it work", it's also

- is it understandable

- is it maintainable

- how much work is adding new features

- is it written in a way that adding new features means rewriting a lot of it

- is it written in a consistent style

- and lots of other things

I use AI to write a lot of my code, but the only time it's clearly "better" than a competent human is for one-off things.

That being said - AI + human is, without any doubt in my mind, better than either one alone.

Absolutely, the Win32-WASM layer it wrote is some of the most evil looking code I have seen in my life. But realistically, why keep it maintainable for humans if you won't find anybody that can work on it without AI anyways?

If we humans are just doing code style checks, file organizing and doc cleanups I feel we have demoted ourselves to code janitors. This is neither fun nor going to last.

Personally I've always strived for minimalism, to find the smallest, fastest, simplest solution possible so I'm pretty jaded now, too...

Code is a human formalism that is only incidentally made executable. The elegance of code represents understanding of the problem to its most minute detail. LLM code being recognizably terrible shows it still doesn't understand what it produces to the full extent, and just as with people, it will inevitably compound to it becoming unable to efficiently work on it. And if the human abdicates that responsibility too, then there is no code, only subtly broken software.
As a bit of an observation on that specific project... By hand as a human you could spend six months of the equivalent of a full time job doing that. Even if you had extensive knowledge in all of its discrete pieces. One of the things coding focused LLM are great at is doing things that have no reasonable prospect of economic necessity to do (no for profit company is going to pay you a FTE salary for six months to do that task, because there's no possible revenue in it). But the LLM can be pointed at it and get it done in a day or two with some periodic architecture and decision making by the human, for probably under $50.
Only people disliking AI for coding are the gatekeepers who think they are magicians and the plebs shouldn't be able to code like them, unless they become gud.
This is a false generalization. Lots of AI dislikers do so for a wide variety of reasons. I dislike it and don't care how other people use it.
"There are naïve questions, tedious questions, ill-phrased questions, questions put after inadequate self-criticism. But every question is a cry to understand the world. There is no such thing as a dumb question". (Carl Sagan)

Just because you don’t seem to be interested in the answer - then don’t read it? - doesn’t make the question wrong.

The AI machine can write better code, it can also write an interpreter which implements function calls by instantiating a new interpreter + entire standard library per function call. Or it will build a 300kloc cathedral of scaffolding and maintain that forever, never writing actual code. Or it will create a CI system that takes 2 hours to run and constantly fails, and the agent loops there all day, fixing a small bug and waiting 2 hours.

Agentic engineering faces all kinds of new problems that couldn’t exist before, and need experienced engineers to solve them.

With the "intelligence" of code focused and capable llm in the last six months, the main problem I'm seeing now is problems where some total amateur who has no previous knowledge of coding tries to one shot a project. People who have previous experience and know how to architect things (and when to stop an LLM from doing something wrong that will cause maintenance and scale and extensibility problems in the future) are doing much better building actually useful things.
This one shot thing I just don’t understand. The way I’m using it, it takes weeks of constant prompts because it never does exactly what I ask no matter how well I specify. I just don’t see how it’s possible to one shot anything unless you don’t have strong requirements on the output.
I had pretty good success with a language learning app. Initial prompt below, about an hour to get it working very close to how I imagined, then extended to Japanese, French, and audio generation.

======================================

Hi! I'd like to create an app for interactively learning Chinese using AI. My current idea is:

- The AI generates a Chinese sentence at a specified vocabulary level (e.g. HSK2)

- The user translates the sentence into English, and the AI evaluates the response. If the answer is wrong or is partially correct but could be improved, the AI offers a hint. If correct, the AI confirms and explains any particularly important vocabulary or grammar points that the sentence demonstrates.

- The user should be able to click on an individual character once to see the pinyin, and again to see its definition and any helpful techniques to remember it (radicals, similarity to other characters, visual meaning)

- The app should also be able to go the other way, giving the user an English sentence and having them translate to Chinese.

App details:

- UI is a web app

- The AI should be pluggable. We'll start with a local Ollama install running gemma4, but it should be easily possible to add support for Claude/OpenAI/Gemini or other models (may need to provide an API key).

- Not actually sure if we need a backend. It might be useful to keep track of characters or concepts that the user has difficulty with, or to keep track of what sentences the AI has previously generated so it doesn't become repetitive.

- Build everything in a Docker container (or multiple if needed with docker compose)

I can see this being a one-shot thing because the brief is pretty light; beyond broad strokes, you haven't specified much for it to actually do. Any UI that's also a webapp would satisfy this brief, but that's exactly what I mean; e.g. if you want a specific UI, there's a lot more back-and-forth that's involved. It'll one shot a UI, but it's very rarely the UI you want down to all the interactions and placement of buttons.
Yeah, that's fair. I didn't have an exact UI planned so I gave it flexibility, and it made reasonable choices that only needed a bit of tweaking to be quite usable.
For me the usefulness of a survey like this has nothing to with how effective LLMs are themselves. It's more that when someone's able to produce an app in an afternoon, and submitting the app to F-Droid becomes a checkbox, how confident can you be that they'll continue maintaining the app? Sure if it's open source you can have your own LLM maintain it, but at that point what's the value in having it on F-Droid?
FDroid can be very strange…

””” F-Droid is not hosted in just any data center where commodity hardware is managed by some unknown staff. We worked out a special arrangement so that this server is physically held by a long time contributor with a proven track record of securely hosting services. We can control it remotely, we know exactly where it is, and we know who has access. ”””

What do you find strange about trying to protect against tampering and theft?

I find it strange how little people seem to care these days and just widely share their users and company data across clouds. Plenty of supply chain attacks to learn from.

Who/whatever does the layout and organisation of app categories is a blithering idiot and finding apps is best done with an external search as the internal one hides apps even when searched for directly by name. And the fdroid app is relentless systems deperformance burden that often just failed, and updating manualy is simpler as a chore done after any android update. Love a lot of the apps, and the concept of fdroid, but the fdroid UI is not good at all.
If they work, does it matter?

Separate from building your own code, ,of course you may have your own standards to apply.

But for apps, well, I never had a chance to see how good or bad the code was before AI was about, so why should I care now, so long as what I paid for does what it says it does (and nothing nefarious..)

Some programmers have ethical concerns around the use of LLMs. It's like saying "my clothes still work, why should it matter if child labour made them?"
I don't know wnything of the ethics of any real meatbag developers that are working on the code or app I install on my phone either. I fail to see how, for pre-packaged code specifically, it being AI or not is a problem; ~ rather, surely all the concerns we have about AI code (hopefully properly developer reviewed.. - which I suspect is where the real problem lies) apply to developer written code also, when it comes to pre-packaged apps.
This seems tenuous. The LLM is not being exploited.
> If they work, does it matter?

The blog post provides something akin to answer to this question:

You see, the main allure of LLMs is that they allow the developer to be more lazy. That’s kind of the whole point! You just prompt, sit back and relax. So it should not surprise you to hear that this attitude is then reflected in everything the vibe-coder touches

As I understand it, one of concerns is that with the lowered barriers there comes a flood of low quality software, vibe coded by very lazy and not very talented people.

This might be actually more of a human problem, but it's a problem nevertheless.

I had no visibility of developer attentiveness or lack thereof, not skill or code quality before AI was around, for any apps I downloaded to my phone.

I fail to see why worrying about AI code quality is any different to worrying about developer code quality when it comes to pre packaged apps.

(comment deleted)
You can't call people lazy because they use LLMs, just like you can't call people lazy because they travel by train/plane/cars instead of their own feet.
> You can't call people lazy because they use LLMs

I haven't done that at all.

> If they work, does it matter?

If you're using an LLM to write your code, odds are very high it does not work.

It's an emotional problem. I love writing code to solve intricate problems. But knowing that a faster, and maybe better LLM solution is just a prompt away? Somehow that takes the joy out of it. Why spend hours, when you can get an equivalent result in minutes?

I will be curious to see how I feel about AdventOfCode this year...

Is the goal solving a problem or spending time over it?

Because then why do you ride a vehicle when you could walk?

Why do you use fire when a well-positioned mirror with sun could do?

Why a piezo ignition or lighter when a stick and lots of friction would do as well?

Approximately nobody today is a professional walker or firestarter, so those are different.

And to the extent they do exist (athletes and survivalists) they might agree there is no "point" except the joy they derive from doing it themselves.

The problem is that formerly there was more alignment between the joy of solving problems with a human's mind and the business need to have problems solved.

The don’t tread on me person is fascinating. I wonder if they wrote the software from their phone using github codespaces in browser?
Please stop labelling a project as slop just because it has been developed using AI. Coding agent are now replacing the IDE and code is now mostly written by the agents.
> Coding agent are now replacing the IDE and code is now mostly written by the agents.

If you're doing that, you are producing slop. So it should be called out as slop.

I did not say I don't read any produced code; I said I don't write it manually. What I wanted to demystify is that you can generate everything with AI and still put a lot of work into design choices, good code structure, and so on, without producing any slop.
Please stop telling people what to do. Also, the discussion of the merits of LLM code writing is far from over. Author of TFA actually provided an interesting data point, you are just rehashing an often heard opinion.
Why are you so aggressive? I am not rehashing opinions, I'm writing my opinion. Also, I'm not even saying that the author did a bad article. So your comment is a bit out of line.
I'm somewhat surprised about PipePipe. I had a look on the commits of the various components and nothing looks out of place to me. Commits look rather reasonable, comments are useful, not verbose and don't show obvious LLMisms.

What are the AI smells there?

It would be nice to expand a bit on the reasoning behind the verdicts.

Every codebase that is being actively worked on (closed/open source) will contain code that's AI generated. With the rising abilities of agents, expectations are sky rocketing in terms of productivity.

If you're as productive as an engineer in 2016, you're not at the level that's expected. A 7 day workflow back then should take you maybe a day or less to work on today.

I've worked with "engineers" that make one commit in 2 months and it's a spelling correction. I'm pretty sure that being 7 times faster than that is still quite slow compared to me :) I hear a lot of breathless enthusiasm, but this article is possibly the first time I'm seeing the question answered "If AI is so great, where are all the applications?"
I have been working on a sub 1500 line rust init system for over a week. Hundreds of prompts. All with a local LLM running on my own GPUs because I expect to build with total sovereignty but also zero dependencies, no libc, no alloc, no std, and a test suite that proves the 20 implemented raw syscalls all use the right values by comparing against Linux kernel sources. This would be the only privileged code in my operating system so I must have absolute confidence it is perfect.

It would be too annoying for a human to ever write code to standards this high, and would have taken me months to write by hand, but with the help of AI I was able to get it done and built in a way I can easily review and reason about.

I have a memory safe baremetal tiny linux init now built to my exact requirements.

AI can help experienced engineers write better code in less time.

> I must have absolute confidence it is perfect.

Then you shouldn't be using LLMs, which write worse code than humans do.

I don’t even disagree that “AI can help experienced engineers write better code in less time”, but “It would be too annoying for a human to ever write code to standards this high” when the standards are “zero dependencies, no libc, no alloc, no std, and [correctness]” and the project is <1500 lines of Rust implementing 20 syscalls is a little much. All software ever written before 2023 was written by humans, remember?
Of course. The humans that could have written this -eventually- certainly exist, but they could not have collaborated with me to get me these results on my exact schedule in a week for the few dollars of pay I spent on electricity.

That is the real difference.

And they never will, with that attitude.
> It would be too annoying for a human to ever write code to standards this high,

These are standards of a normal university operating systems course (assuming a university worth its salt anyway). Ridiculous to present it as some kind of feat that was "impossible" or even that rare.

Sure, a very smart and patient human could write this by hand in a long enough time horizon and unlimited budget. I should have said impossible in any realistic amount of time any responsible sponsor or employer would pay for.
I'm sorry, this is simply not true.

this https://codeberg.org/lrvick/nit/src/branch/main/src/system/r...

is textbook definition of boilerplate. you need to be patient to cross-reference syscall tables but certainly not smart.

Again, students learning about operating systems do similar things as a normal part of their education process.

I'm not saying LLMs wouldn't help with this (in fact, this is the type of thing that becomes pretty much a no-op with them) but the notion that this is "impossible by any realistic standards" is risible, and if you have actually contributed to the kernel like you say, you should know better.

Rather than patiently referencing syscall tables by hand, the LLM wrote tests to actually compare each of these to the kernel syscall tables to make my life a lot easier and avoid regressions or mistakes. Complex tests to write, that saves me a lot of time as a security reviewer. Can change any value and watch tests fail.

https://codeberg.org/lrvick/nit/src/branch/main/tests/kernel...

That is the point. Getting to results that satisfy all the security and functionality requirements in much less time.

LLMs are just as Linus Torvalds likes to say "Auto complete on steroids".

The parsing code isn't even correct, though. I'm sure it works for the current input source code, but it's a clear sign of an LLM developing by iteration, rather than actually understanding the problem and coming up with a correct solution.

How often does "this table of constants was transcribed incorrectly" even come up as a bug class? Is it worth writing a buggy C parser for a failure mode that doesn't happen? Do you expect that Linux is going to change their constant definitions out from under you?

> This would be the only privileged code in my operating system

What does that mean? Are you building a system without a root user or something?

Correct. It does the bare minimum system calls to boot the system, then exec to an unprivileged service manager on a read only nosuid, nodev filesystem.

I design confidential compute systems.

Cool, but I fail to see how it is relevant in the context of the article? You clearly have the knowledge, expertise and discipline to incorporate LLM in a workflow that, taking your word for it, delivers a very good result.

That makes you a) more unique than you realize b) not all that relevant in the context of the article.

a) Because a lot of people tend to lean towards use that absolutely leads to atrophying of skills and knowledge. b) well the article does explain the criteria it used fairly well and your project would not show up there. Well, also because your project isn't an android app.

My project is -dramatically- more complex than an android app, and no LLM has ever trained on a project like this before because something this shape never existed before so it is kind of a worst case for LLMs and still fine.

Android apps on the other hand, LLMs have enough training data to rapidly generate whatever you can think of with much less experience required to refine it into a quality result.

I am mostly pushing back on the notion of dismissing software as low quality just because the author used LLMs.

It is frankly amazing we can point an LLM at a proprietary ad-ridden app and get to an ad-free open source and privacy respecting clone in a weekend now.

Many of the projects here predate 2022, so they wouldn't be "ai-generated" in that sense.
> Text just doesn’t carry enough meta information for any kind of assessments to be even close to accurate.

Well, that is true, but I have seen how one japanese developer, who has had low english language skills, suddenly writes epic text. So it is clear that he is using AI when interacting with other people. This is a problem because a lot of it is just AI slop fake interacting. I don't want to interact through any AI filter; it means the other human being is not interested in communicating with me, so why would I want to communicate with an AI slop controlled human? It makes no sense.

As for software: IMO documentation is very important. Many projects lack good documentation. This is valid for both AI slop created projects and real humans created projects. There are too many software developers who hate writing documentation. I don't want to use such software anymore.

Unfortunately AI slop documentation often sucks too. They just spam you down with words that mean nothing. And are very verbose. This is also totally useless.

It seems as if software designers indeed fail hard in the last years. Quality standards used to be higher in, say, 2005 to 2010, compared to now and the last five years.

> Their mere existence makes educating yourself and going on fun side projects much less rewarding.

It's not just AI though. Look at Google search. Use it. It is totally useless now. Google crippled it deliberately some years ago. Now you'd think alternatives are better, but they also suck. DuckDuckGo? Qwant? They, oddly enough, manage to be even worse crap than Google search, which is amazing. Crapification has become the default now.

This reminds me of another time... Let's travel back to 1980 and interview a local grey beard:

Everything these days is shell scripts! They are even selling them like they have the same value as a C program! csh will never be real C. The kids have no idea what a stack is or how to optimize system calls. The performance is awful and they barely work! The way scripts spawn processes can bring a multi-user terminal system to its knees!

I mean, sure, I write some scripts now and then, but the real logic always goes in C. And just the other day my boss gave me a shell script he coded over the weekend and said putting it in production should be easy!

Over the weekend I was checking out BSD and I couldn't believe the number of scripts I found. I fear for the future of my career and computer science in general. Our field might die out before it can even get off the ground.

how did critics become suddenly concerned with virtue and beauty with AI? Wouldn't it be better to judge these apps on their utility?

The authors are sharing their creativity, and spending time & money to publish apps with a free license.

I have disdain for how entitled open source consumers are. Before AI, demanding free accounts, support , resources, traffic, cpu -- after AI demanding bespoke hand-written code be given out for free.

Even before AI, I just looked at file size to determine whether an app was worth installing. There used to be tool to search the Google Play Store and sort by size. If it's a basic utility and more than a few MB, it's probably riddled with bloated libraries and ads.
What stops a bad actor from buying a bunch of these apps on fdroid adding malware to them and then having fdroid handle the distribution for you? I people did something similar with a bunch of plugins in the wordpress plugin archive.
F-droid doesn't simply distribute build apps. It requires the source to be open and will build the apps itself. This does not guarantee there will be no bad actors trying to slip in malicious code. I do believe they also do initial audits before an app is allowed in their repos. It also often takes a while for an app update to show up in F-droid, I am not sure if that is due to auditing updates or something else though.

More here:

- https://f-droid.org/en/docs/Inclusion_Policy/

- https://f-droid.org/en/docs/Security_Model/