Remix.run Logo
▲ Swiffy0 2 days ago

Not sure what to think of this.

Sure, a Rust implementation will perform better and use less RAM, but it's quite obvious that the transition to Rust will be done almost entirely by AI.

Don't get me wrong, the AI coded Rust version of Discord will most likely work just fine. The thing I'm wondering about is if it's a good idea to rewrite your whole codebase (which I assume is handwritten since Discord predates AI coding) with AI because now there is nobody that knows how it really works - I'm wondering what's the value of having a human-written codebase + the people who wrote it. Just feels like one shouldn't throw that into the trash like it's nothing?

▲kombookcha 2 days ago | parent | next [-]

I'm with you and I think a variety of companies are going to learn this in a highly expensive way over the next few years. Once your shared mental model of how the codebase works is gone it seems practically impossible to get it back. Like what would you even do if you change your mind in 3 years - sit everyone down to meticulously comb through all the AI code until they start to get how it works? Getting back to a similar level of understanding seems like it would take ages and effectively locks you into the new solution in a way that cannot be feasibly reversed.

▲throwaway_new_1 a day ago | parent | next [-]

>change your mind in 3 years

I think if people change their mind in six months, let alone 3 years, they would just rewrite it again with something different, or just double down on the AI rewrite to rewrite the rewrite to fix the gaps and so on. It's a rabbit hole.

What people are completely missing with AI is that when a company/someone makes the decision (which is most these days) to go heavily on the AI route, they are probably going to keep going that way.

We don't really know what’s the right balance of AI and People right now.

My personal take would be to leverage AI to fix and improve what already exists in a maintainable way and wait for others to experiment with going heavily AI. It's worked great for Apple who is generally years behind in a lot of things because they wait it out for others to experiment with things.

▲stackbutterflow 2 days ago | parent | prev | next [-]

How is this different from when you join a company and learn your corner of the codebase? In a sufficiently large enough codebase no one had the whole mental model in their head even before AI. What you did was find and ask that one person who knew enough about some part of the project to answer your questions. Now you can ask a model.

▲theLiminator a day ago | parent | next [-]

I believe institutional knowledge used to work on a ship of Theseus model. It's going to be completely different going forward.

▲robswc a day ago | parent | prev | next [-]

> How is this different from when you join a company and learn your corner of the codebase?

Because most AI generated code is incredibly verbose and noisy. This can be true for any codebase, but it is especially egregious in AI codebases. It is hard to prevent that by just saying "be concise" because knowing exactly where to be concise is the measure of true skill/intelligence.

Every time I have success with AI coding, it is because whatever I need done can work as a pure function, where the probability I have to return to it is very very low.

Making sense of a codebase is like putting together a puzzle. A purely AI generated codebase is like trying to put it together without a picture on the pieces.

▲port11 18 hours ago | parent | prev [-]

This is more like ALL the developers have just joined a company where no other devs work and can pass along institutional knowledge. You know, the thing that makes all that complexity wieldy.

▲beardbandit 13 hours ago | parent | prev | next [-]

I don’t think this changes just because you don’t do a rewrite. This is happening already as engineering leans more on AI tools in our own company.

Things ship and change way too fast and the changes are massive.

▲SoftTalker a day ago | parent | prev | next [-]

Also Reflections on Trusting Trust taken to a whole new level.

▲moralestapia a day ago | parent | prev | next [-]

I'd say they're betting on AI getting good and reliable enough to not have to go back to the "old" practice.

▲kombookcha a day ago | parent [-]

But are they betting more than they can afford to lose, is the thing.

▲moralestapia 17 hours ago | parent [-]

Yes, I wouldn't make that bet.

▲CamperBob2 a day ago | parent | prev [-]

Once your shared mental model of how the codebase works is gone it seems practically impossible to get it back.

You won't want it back. How much time do you spend surfing through your .o or .obj files today?

▲fao_ a day ago | parent | next [-]

Back in the day you'd read reference manuals which would tell you about the library, they might be hand written or a listing of the addresses and names. Today in the modern day, we still use reference manuals for writing C and C++. It's just encoded in websites, e.g. https://pubs.opengroup.org/onlinepubs/9699919799/functions/c... and https://en.cppreference.com/

But there are still libraries where familiarising yourself with the header is important, for example stb's libraries. man(1) and GNU Info were both invented to be computer-stored reference manuals, and indeed to this day you can type `man 3p open` to get the POSIX documentation of the system up in front of you.

I am not aware of many codebases that have manuals as complete as this, but back in the day (1970s-era to the 1990s-era) there would be internal documentation written as par of course for the specification created by the waterfall model of development. Post-2010 companies are very lackadaisical about documenting internal interfaces and libraries because they come from startup cultures where "move fast and break things" is the name of the game.

▲dieortin 18 hours ago | parent | prev [-]

> How much time do you spend surfing through your .o or .obj files today?

Those are not the source of truth for the application logic. But the higher level code is.

The application code describes the behavior of the program and the compiler translates it into a different representation following a set of known, deterministic rules. This is unlike an LLM producing code from a prompt, which is why the source code is still the source of truth, and not a bunch of prompts.

▲CamperBob2 11 hours ago | parent [-]

Determinism is something you'll have to give up if you want to stay employed, I'm afraid.

The solution, as usual in engineering, is negative feedback. Unfortunately, many people around here think that means "Shoot the messenger."

▲spunker540 a day ago | parent | prev | next [-]

It seems like the value is having something performant. Their choices were 1) stick to a web framework their employees know well 2) a performant native app their employees don’t know as well. And they chose 2.

If a model can tell you anything you’d hope to have a human tell you, what’s the difference? It’s a different point of failure— models can go offline, but employees can also quit anytime too.

▲superxpro12 13 hours ago | parent | prev | next [-]

Would i rather have a massively bloated cross-platform electron app, or a native app in rust assisted by ai?

the native app wins every single time. Give me native or give me death!

▲mahart a day ago | parent | prev | next [-]

I share the intuition but pragmatically if the codebase will only ever be interacted with through AI agents it probably is nothing and wouldn't matter anyway. You can probably even generate an exhaustive amount of documentation instantaneously if you are concerned about a human knowing their way around.

▲port11 18 hours ago | parent | prev | next [-]

You’d think we learned this during all the front-end rewrites of the 2010s…

▲petra 2 days ago | parent | prev | next [-]

When porting an app this way, don't functions/classes preserve the same functionality ?

▲j_w 2 days ago | parent | next [-]

Well not really? You are going from a webpage (Electron) to a native application via Rust. Say you port a React website to a Rust native application, is anything about that code actually similar?

▲lukax 17 hours ago | parent [-]

With GPUI quite a lot can be shared. Styling is similar, components can have same names. If your application logic is already cleanly separated, the resulting code can be quite similar.

▲tlonny a day ago | parent | prev [-]

I think there are lots of common patterns you find in GC’d languages that don’t translate well into idiomatic rust.

Consequently, porting my game engine from Java to Rust was more challenging than I had anticipated.

▲7bit 13 hours ago | parent | prev | next [-]

Your entire opinion is founded on assumptions.

▲gjsman-1000 2 days ago | parent | prev [-]

[flagged]

▲chneu 2 days ago | parent | next [-]

Your post is absolute nonsense. Plenty of people know exactly how everything on a plane or car works, or a CPU. I've worked with tons of people who do.

The fear of deskilling is very valid and is already messing things up.

▲gjsman-1000 2 days ago | parent [-]

[flagged]

▲bccdee a day ago | parent | next [-]

They know the tires are rated for hitting a landing strip under XYZ conditions, they know how to test the tires to ensure they're still confirming to the expectations of that rating, and they're in contact with the trusted organization that's responsible for issuing that rating. Each expert has a comprehensive understanding of their field, and the fields comfortably overlap with no gaps. For any given perspective, there are several people with the complete picture of that perspective.

Contrast this with a vibe-coded "airplane" where nobody actually understands the tires and you're basically operating on a set of assumptions. The tires are not rated and there's no trusted organization. Maybe it works, but you don't actually know. Very different; don't play language games.

▲nozzlegear a day ago | parent | prev [-]

You're putting forth a ridiculous argument. An airplane engineer doesn't need to know how to create the universe from scratch just to work their way up to maintaining airplanes, but they sure as hell understand how the major systems work, how those systems interact, and how to diagnose problems. They don't just tinker around blindly.

▲subarctic a day ago | parent | prev | next [-]

My understanding was that for every component there's someone somewhere who understands exactly how it works at least in terms of smaller components/abstractions and for each of those, recursively, someone knows how it works

▲add-sub-mul-div 2 days ago | parent | prev | next [-]

We're losing a respect and understanding of how basic competence works.

▲wolvesechoes 2 days ago | parent | prev | next [-]

> Nobody understands everything about how an airplane works, not even the lead engineers. Nobody understands everything about how a car works

Of course people do.

▲chasd00 2 days ago | parent [-]

Doubtful. The engine engineer doesn’t know the chemical engineering of modern fuels nor the code in the engine controller.

▲anthk a day ago | parent [-]

In my country in order to earn a true CS degree you need to learn both Chemistry and EE.

Also check the Homebrew CPU running a custom port of Minix 2 with in-place ported C compilers, linkers and assemblers.

▲skydhash a day ago | parent [-]

I had to learn geology and engineering drawing, because the first two years syllabus overlapped with civil and electromechanical engineering.

▲anonymous908213 a day ago | parent | prev | next [-]

"I'm clueless and don't know how anything works, therefore experts don't exist" is one of the worst takes to come out of this godforsaken tech.

▲Emjayen a day ago | parent | prev | next [-]

This sounds awfully like the self-soothing mantra slop-kiddies everywhere tell themselves.

Plenty of people have a deep understanding of software/hardware, as that's the context here. I personally can take you from usermode, through the kernel (both NT and Linux), down to the hardware interface, explaining the vast majority of systems along the way, and critically, as they relate to performance concerns.

So can plenty of others who actually know+understand things.

▲gamblor956 a day ago | parent | prev | next [-]

You picked very bad examples. There are plenty of people who know exactly how everything in a plane or car works, how taxes work, how medical billing works, how a Cpu works.

Cal used to require EECS students learn how to make a basic CPU. Students at CalTech learn how to make advanced planes as student projects.

▲alala-lala-lon 2 days ago | parent | prev | next [-]

[dead]

▲rvz 2 days ago | parent | prev [-]

This is textbook whataboutism.