Remix.run Logo
kbrannigan 2 hours ago

Any model currently in 2026 is better than the ones of 2024. What is the quality difference really.

I mean i think if a developer has a good handle of the code the difference is marginal .

Unless we 100% offload the thinking to the model and act like a prompt manager. Maybe

hombre_fatal 2 hours ago | parent [-]

For personal projects, I defer almost everything day-to-day to the models, so it gives me a good feel for what the models are good at.

Even then, it's kind of a wash these days between the sota models, and we're talking about maybe a 10% performance difference or something. But every once in a while there's the experience of one model spinning its wheels on a bug/repro/issue while another model comes in and one-shots the solution.

kbrannigan 2 hours ago | parent | next [-]

That make sense. Let me ask you this When the project reaches a level of complexity . Do you simply reach for better models or do you reengineer it or does the project scope stop at the egdge of the model's capabilities.

I am asking because in my personal projects after a while they becomes a giant messy ball of wires and i basically trust the model to untangle it for me , by the time it untangles properly, I run into my token limits.

hombre_fatal 2 hours ago | parent | next [-]

With Opus 5 / Fable / gpt-5.6 you can simply ask them to fan out subagents to look for ideal architectural simplifications and rank their findings by impact vs confidence.

You can swap out "architectural simplification" with performance opportunities, bugs, correctness, etc. I get the orchestrator agent to then itemize it all into a file where I can keep track of which ones I've implemented.

The results are pretty astounding. I run these right before my weekly limits reset for each subscription and the findings will dictate the secondary tasks I get done during the week.

It's definitely token-heavy. I'm on the $200/mo Claude Code sub and the $100/mo Codex sub.

But it's pretty clear to me that software engineering is more or less solved and all you need is enough patience + tokens to get what you want. I think 20 years of engineering experience more lets me save on tokens rather than unlock things nobody else can build.

An example of the scope of one of my AI-engineered projects is a iterm2/ghostty-like terminal app that implements its own pty session, parsing, rendering. It's almost 2000 commits right now.

That said, I have a specific workflow that isn't just a blind "ok now make it so a screen can be split into panes". I have a plan phase focused on coming up with ideal invariants and such. But I'm not sure anymore how much of that is useful vs just yoloing a solution and then paying technical debt in sweeps, like garbage collection.

discreteevent an hour ago | parent [-]

> software engineering is more or less solved

But the example you give is of a terminal for which there are copius examples in open source code. How hard is it really for a pattern matching machine to do that?

If I was doing it I would start by forking an existing repo and I might even say then that "software engineering is more or less solved since the open source revolution"

But I don't work on things like that.

wilg 2 hours ago | parent | prev [-]

Every time I try to use a lower tier model like Terra or Sonnet I regret it, so I just use the best one the first time to keep my sanity (it sort of works). Same with effort, you gotta just max it out (though I stopped using Ultra/Ultracode) and I never use fast because I'd rather work in parallel on more than on one thing faster almost always.

porridgeraisin an hour ago | parent | prev [-]

In general, many of these stories of "one one shots it and the other spins on it" is down to trajectory divergence and can be achieved simply using another instance of the same model.

While just simply trying many times independently gets you the improvement that is due to pass@k vs 1, you can get huge improvements if on top of that, depending on your setting, you find a way to ensure some stochasticity by perturbing tool calls, etc and running multiple instances.

The general theme is, embrace the stochasticity rather than the leaky abstraction on top of it.

With modern LLMs, investing in this kind of harness tooling is much more fruitful than hoping for the best from the model.

While many basic instances of this are built in to the popular harnesses (much of cursors higher-than-usual success rate with older models was due to really excellent context mgmt), you can never beat one that is optimised for your particular codebase, infra and general setup.

Until last year or so, the context management needed varied too much at too coarse a level across different models and even model instances, but now they are all extremely robust in a much higher % of contexts and are thus way more amenable to developing context management tools for, without needing to do a research teams worth of evals.

Custom evals and harnesses are thus extremely high ROI now. We are finding companies needing to do less and less tweaks and getting much fewer regressions (you should have reg tests in ur evals) with every new usecase and every new model.

It can be really simple to start with: change your grep/rg that it uses to a script that does in effect "rg $@ | shuf".

More complex examples are: giving different subagents different tools, randomly failing tool calls, truncating file reads randomly, having a small model invent N possible failure modes causing a bug and appending that to N prompts and starting subagents from each - this all forces each to pursue different paths. $example_specific_to_your_company_setup is highest ROI though, since most companies actual failure modes are dominated by idiosyncratic API shapes and retrieval quirks that no usual harness will bother modelling.

Also important IMO to not assign any meaning or semantically interpret the CoT as an acceptance mechanism (it is ok to use it as a rejection mechanism e.g if you see it plotting a sandbox escape whether it eventually emits the exploit or not is not something you want to hedge). We have to resist the temptation and ensure we only interpret tool calls, codegen, etc in our evals and only think of the cot as "some output that pushes the conditional distribution" which may or may not semantically match the typical preceding tokens of the desired tool call.