| ▲ | gavinray 2 hours ago |
| I wrote this same concern in February: what happens when it's easier to build custom software than spend one search looking for mature libraries? https://gavinray97.github.io/blog/llm-build-cheaper-than-sea... |
|
| ▲ | xscott 2 hours ago | parent | next [-] |
| One positive result is that you get a lot more variation in vulnerabilities. That probably sounds negative, but it isn't. As an example, a black hat doesn't get 70% of web sites from one shared bug in PHP. They need to target specific sites, and the exploit isn't likely to work in very many other places. |
| |
| ▲ | andai 2 hours ago | parent [-] | | I don't get it, in this scenario, would people also vibe code (the equivalent of) the PHP interpreter? | | |
| ▲ | dcss_gardener an hour ago | parent | next [-] | | I've been playing around with LLM red teaming different server stacks with known or intentionally vulns in there and seeing how much damage they can do. The one situation where they really can't get anywhere profitable is a unikernel webapp. With no source and no shell they find the vuln but the worst they can do with it is possibly poison or exfiltrate data as a one off, or crash the server. Often they can't even figure that out. Can't even leave themselves a reliable way back in. Of course the traditional problem with unikernels is that you have to port EVERYTHING you need yourself. But the cheapness of this is exactly what we're talking about so. Looks like security through obscurity's back on the menu. | |
| ▲ | AirMax98 23 minutes ago | parent | prev | next [-] | | I think a better comparison for the parent is probably left-pad. | |
| ▲ | xscott an hour ago | parent | prev [-] | | Yeah I guess, if they liked PHP. Could make a new version of ColdFusion if that's your thing too. Genetic monocultures like bananas are at risk from a single species of fungus. |
|
|
|
| ▲ | andai 2 hours ago | parent | prev | next [-] |
| A few years ago, after ChatGPT but before agentic, I was asking AI for help with some projects. It kept recommending really good, well designed APIs, and gave me code snippets for them. One small issue: they didn't exist! It had just hallucinated them! Which was a real shame, since they were much nicer than the actual stuff I ended up finding. I just realized, thinking about this now, that these days (and perhaps even back then), I could just say "ok now take this code and build the missing library so it actually works!" |
| |
| ▲ | freedomben 19 minutes ago | parent [-] | | Heh I remember that well. It got me super excited quite a few times until I tried to find the actual library :-D |
|
|
| ▲ | WillAdams an hour ago | parent | prev | next [-] |
| When worldwideweb.app was first being developed an the RFCs and so forth for web servers and protocols were being discussed, one of the sticking point was what to call a URL --- the initial suggestion was "Universal Resource Locator", but the argument was made that users and writers were not librarians and that the distributed nature would preclude a given web page having a universally agreed-upon location and name, so instead the present "Uniform Resource Locator" was adopted. What if there was a code sharing site where it was unambiguous what a given snippet of code would be named and where it would be stored, so that a user could just browse it and find a list of implementations for a given problem? This of course runs up against one what John Ousterhout notes is one of the most difficult problems in computer science --- naming things --- in his book: https://www.goodreads.com/en/book/show/39996759-a-philosophy... I've tried to do it on a small-scale with my own work, storing bits of (la).tex code in a single file, but on reviewing it, I'll often find that I have written a given solution a second time and given the macro a slightly different name.... |
|
| ▲ | hansvm an hour ago | parent | prev | next [-] |
| Even before LLMs I found building custom software to be easier than using mature libraries for almost every task. I don't think this is a new problem. |
| |
| ▲ | jayd16 an hour ago | parent [-] | | Maybe take a step back and consider that your tastes or circumstances are rare. | | |
| ▲ | hansvm 31 minutes ago | parent [-] | | Perhaps. I just never found it useful to spend a day learning the failure modes and edge cases of a general-purpose library I could hack into my use case with enough wrapper code handling the impedence mismatch when I could spend a day building exactly what we need, with the added benefit of owning the code when requirements inevitably change. Like, I'll use numpy at least half the time for numeric code; I'm not a masochist; but most libraries just don't pull their weight. |
|
|
|
| ▲ | nonethewiser 2 hours ago | parent | prev | next [-] |
| Less external dependencies. I noticed Claude was vendoring (copy-pasting) Lucide icon svgs into my codebase (with proper attribution) because I was only using a small handful of them. That's awesome. |
| |
| ▲ | packetlost 2 hours ago | parent | next [-] | | Except when it's a license violation or in something that ends up having a security vulnerability. | | |
| ▲ | nonethewiser 2 hours ago | parent [-] | | >Except when it's a license violation or in something that ends up having a security vulnerability. What's more secure isn't so simple. If you vendor something with a vulnerability then it wont be patched. But vendoring may also mean you took the 2% of the library you need and not the 98% which reduces the surface area for vulnerabilities. And it can cut the other way - you may update a package that was previously good and is now vulnerable (regressions, supply chain attacks). There is a balance that must be struck, and I think LLM's strike a better balance than people do. Dependencies are a convenience with a cost and LLM's can trivially copy or re-implement things that we cant. | | |
| ▲ | packetlost an hour ago | parent [-] | | > But vendoring may also mean you took the 2% of the library you need and not the 98% which reduces the surface area for vulnerabilities If you aren't using a library function you're not vulnerable to exploits in that code: unused but imported code is inert (possible usable as a gadget if you're vulnerable elsewhere, but at that point you're screwed anyways) and most compilers/runtimes completely eliminate it. > you may update a package that was previously good and is now vulnerable (regressions, supply chain attacks) There are better mitigations to this than not using a library. You still completely ignore the license violations. |
|
| |
| ▲ | gavinray 2 hours ago | parent | prev [-] | | Great for static assets, potentially not-so-great for "load bearing" ;^) code | | |
| ▲ | andai 2 hours ago | parent | next [-] | | Every time I try to get a npm based project running (or one of my forks of one), half the packages don't exist anymore or I need to spend hours fixing breaking changes. It's usually more straightforward to just rebuild it from scratch — not to mention infinitely more satisfying — and that was true before AI! | | |
| ▲ | gavinray 2 hours ago | parent [-] | | Language ecosystems tend to exist on a continuum. I love TypeScript but dread the dependency management because it's so often bit-rotted. On the other hand, I routinely build Java/JVM projects with dependencies that haven't been updated in a decade that compile without issues. Somewhere in the middle are most languages, I think. |
| |
| ▲ | nonethewiser 2 hours ago | parent | prev [-] | | Yes it does depend on the dependency, and a static asset is on one end of the extreme. It depends on the "load bearing" code. Obviously something like crypto is not something we should implement ourselves but core business logic would be "load bearing" in another way and is probably not something you want to farm out to a dependency. |
|
|
|
| ▲ | otabdeveloper4 37 minutes ago | parent | prev [-] |
| We've all been there. What happens is that you end up hiring someone to fix the unmaintainable mess a few years later when the pile of shit collapses. (LLMs accelerate this and "a few years" can easily turn into "a few months".) |