Remix.run Logo
theptip 7 hours ago

I love this post. It’s also interesting to revisit in the age of agents.

Using the language of the article, I’d say “push all your innovation tokens into agents” is probably a good move. This means the tech your agents work with should all be boring tech.

Another way of saying this is “use in-distribution technology”. If agents are substantially better at Rust than Zig, probably you should use Rust, even if Zig is “better”. The amount that Zig is better is going to get swamped by the amount that in-distribution agents are better.

(This is not a claim that Rust actually is better, just a hypothetical fact pattern for discussion.)

dwedge 7 hours ago | parent | next [-]

It's a total tangent but AI being so good at developing rust means that my first impression of seeing a rust project has totally changed.

4 or 5 years ago if I had to weigh up two options and one was written in rust it was almost a sure thing that the program was snappy, fast, reliable and that the author was competant.

Now it's a sure fire sign that the project was probably vibe coded. Not saying it can't still be good, I just have a different first impression now

Animats 4 hours ago | parent [-]

> Now it's a sure fire sign that the project was probably vibe coded.

Groan. That's sad.

jason_oster 3 hours ago | parent [-]

Compare to what happened to Python. That will cheer you up!

jaggederest an hour ago | parent [-]

Hey, at least python is now extremely consistent: it's an unpleasant tarpit regardless of whether it's human or AI generated. Ruby, too, rip my native programming language.

I remember in the pre-AI era I was doing a quick sample contract employment with a company that had >200 columns in their user table and was manually enumerating them in every query, multiple times. They were using SELECT $1,$2,...$184,$185 from tablename with an enormous list of columns referenced only by offset. That's not python's fault, but I've weirdly seen it more often in python codebases.

Pannoniae 3 hours ago | parent | prev | next [-]

I admit I have a hard time following this logic. If an agent has a baseline intelligence, you can... instead of using boring technology, just DIY/NIH the simplest custom solution which fulfills your requirements. And you'll usually do a better job than a general-purpose software library.

Even if in the other approach, the LLM knows the stack better, you're just going to push the complexity into your client code, so it's not like it's a huge gain to use boring tech stack.

t-writescode 3 hours ago | parent [-]

That’s definitely not true, and I’ll give two incredibly common examples:

1: arraylist. A library will probably do better than you. It’s already written and common.

2: webservers. Sure, you can write one yourself with sockets and a bunch of buffers and string management… or, you could use one of the 100s of existing ones. Which one? Probably a stable and established one.

inigyou 21 minutes ago | parent [-]

How many times has the stable and established X surprised you with some unexpected behavior?

Once upon a time I wanted a URL /like/this/with%2Fslashes/ where a path parameter could, in rare cases, contain an encoded slash. Legit according to every RFC I checked. Works fine in browsers. But I couldn't get the web server to not convert it to a / before hitting my code. And woe betide thee who wants to make nginx return a custom error code 444.

hahahaa 3 hours ago | parent | prev | next [-]

I find agents default to popular which heavily overlaps with boring although you could steer them more boring for sure.

epolanski 7 hours ago | parent | prev | next [-]

One thing I learned about AI is that, e.g., if you're making websites you're much better off going for php/ruby/elixir, even if you don't like the languages much.

Pipelines and deploys gets much easier and faster than the very common TypeScript monorepo, and so does communication between server and client.

And I say that as a TypeScript and Effect aficionado who has no particular love for neither php or ruby, but they are extremely solid choices to move fast, well, and get excellent performance and tooling out of the box.

infamia 7 hours ago | parent | next [-]

Great point! I'd also add that Django's another solid choice for boring tech that LLM agents will know very well and will very likely continue to do so. A fair bit of SWE Bench and other Python benchmarks are Django related tests, which the LLM vendors care very deeply about keeping their scores up. Also, Django's docs are excellent, so strategically pointing an LLM to them in a prompt can often produce great results.

ipsod 6 hours ago | parent [-]

Django is the only thing I've used where I've vibe-coded an app, then looked at the code and not been appalled.

michaelchisari 6 hours ago | parent | prev | next [-]

PHP has had a lot of conventions so the training data is all over the place. Ruby is a nightmare in that regard. Can't speak to Elixir but I'm surprised to hear someone say LLMs producing good code in either language.

On the other hand, Go code from 2012 and Go code from 2026 looks virtually the same. Conventions are respected, go fmt is the one single formatter, "use the stdlib" is a popular mantra and the code is readable by design.

If I were to codegen a project I wouldn't use anything but Go at this point.

bluehatbrit 3 hours ago | parent [-]

I've been using elixir professionally and for hobby work for the past 7 years now. Language models are damn good at it, and have been for some time.

The language isn't huge, the documentation has always been very good, and the patterns extremely consistently across the community. I almost wonder whether it's smaller community has been a benefit, as LLMs have been trained on a tighter set of code samples.

I can't speak for Ruby or PHP.

epolanski 3 hours ago | parent [-]

I also like Elixir, and I've used it for a handful of projects, the language may not be huge, but is conversely bloated by macros.

I dislike macros and languages allowing developers to get creative with their own DSLs.

10000truths 5 hours ago | parent | prev | next [-]

> Pipelines and deploys gets much easier and faster than the very common TypeScript monorepo

Can you elaborate more on the slowness you've seen with deploying TypeScript codebases? My experience is that it's improved significantly over the past decade or so. tsc is still kinda slow for large projects, but the rewrite to Go should improve things significantly. Pre-install/post-install scripts can also be slow, but I've always disabled those and haven't yet run into issues. The JS-written bundlers can also be slow, but I use the non-JS ones (esbuild, parcel, bun, etc.) and they're fast enough for me to not care. The main build bottleneck I can think of for a modern TypeScript project would be build plugins, since those are still written in JS/TS.

stickfigure 3 hours ago | parent | prev | next [-]

Alternatively, if AI is doing most of the work, why not pick a platform that performs? If the cost of the code (and preferences of the developers) are factored out of the equation, pick based on operational cost.

Serving traffic with Ruby and Python is significantly more expensive than serving traffic with Java or Go.

add-sub-mul-div 7 hours ago | parent | prev [-]

The willingness to reshape society for the benefit of AI rather than shaping AI around humanity paints a very dire picture of the coming decade.

Gormo 6 hours ago | parent | next [-]

Is that what's happening in this example, though? Ditching TypeScript in favor of PHP seems to be a net positive in favor of having a reliable, performant tech stack. From certain perspectives, TypeScript is itself a form of technical debt: writing code in one language just to transpile it into another interpreted language just to add type safety to correct for human error seems like a heavy layer of complexity just to make development teams work faster.

If we get to the point where AI tools are able to consistently able to produce desired results within strict performance and security constraints, without having to make the same tradeoff between delivery velocity and final quality, why would we not have them target the lowest level feasible for implementation, and cut out all of the middleware cruft that makes everything slow and take up ten times the RAM it actually needs to?

dwedge 7 hours ago | parent | prev | next [-]

I disagree. We've been doing this for two decades already. A lot of monoliths were rewritten in a way that best fit the AWS pricing model of the time with the software itself seemingly being an after afterthought. (I'm not here to discuss whether monoliths or micro services are better, I'm just saying the choice of how they were rewritten was too often mostly for AWS pricing)

epolanski 7 hours ago | parent | prev [-]

I think you're completely misreading what I wrote.

PHP (lets use this as an example) brings already many benefits over a common solution like a TypeScript monorepo mostly operational simplicity. That was already true before AI.

It's boring, very fast and easy to deploy, offers straightforward horizontal scaling, no need to orchestrate containers and/or multiple runtime processes, has excellent html rendering (nothing in JS-land really does), and has very solid framework solutions like Laravel where everything works out of the box.

Those merits existed before AI already.

The issue was that you had to buy into PHP as a language, which was a horrible experience.

But if AI writes most of the code? Suddenly PHP becomes an excellent candidate to choose for many use cases.

If anything, AI makes the choice of programming and languages and software about finding the right tool for the job. Somehow the industry instead keeps vomiting React/Tailwind slop which are the right tool for 1% of the jobs.

I hope to have cleared the concept.

6 hours ago | parent | next [-]
[deleted]
Gormo 6 hours ago | parent | prev [-]

[dead]

7 hours ago | parent | prev [-]
[deleted]