<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ion</title>
    <description>The latest articles on DEV Community by Ion (@ionionascu).</description>
    <link>https://dev.to/ionionascu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F58537%2Faedcf365-44e0-4643-9cf6-e4c4e40a4513.png</url>
      <title>DEV Community: Ion</title>
      <link>https://dev.to/ionionascu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ionionascu"/>
    <language>en</language>
    <item>
      <title>Remember Pair Programming? I Gave Both Seats to Claude and Codex</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Tue, 30 Jun 2026 10:56:15 +0000</pubDate>
      <link>https://dev.to/ionionascu/remember-pair-programming-i-gave-both-seats-to-claude-and-codex-3aed</link>
      <guid>https://dev.to/ionionascu/remember-pair-programming-i-gave-both-seats-to-claude-and-codex-3aed</guid>
      <description>&lt;p&gt;There was a time when people liked to boast about how many tokens they burned. That phase is mostly over. Tokens are not as cheap as they were, and anyone paying for their own usage has always treated the meter as a real number. I pay for Claude Pro, ChatGPT Pro and GitHub Copilot Pro out of my own pocket. So I want two things that pull against each other: get the most out of them, and not spend more than I have to. The result is a small loop where one model writes, another reviews, and a build command gets the final say.&lt;/p&gt;

&lt;p&gt;For coding I like VS Code, but when I want an agent, my first option is Claude Code. I have used it heavily to build &lt;a href="https://medetra.app/" rel="noopener noreferrer"&gt;MedEtra&lt;/a&gt; in my spare time. I understand iOS in pieces, but I am not a Swift developer, so you could fairly call what I do there vibe-coding. The difference is that I vibe-code from inside a long career in IT, with firm opinions about what good code looks like even in a language I do not write fluently.&lt;/p&gt;

&lt;h2&gt;
  
  
  The loop I actually use
&lt;/h2&gt;

&lt;p&gt;My manual loop is nothing exotic. I ask Claude Code, usually Opus, to implement a requirement. When it finishes I read the diff myself, then I hand the same change to Codex, which is usually GPT, and ask it to review. I do not always agree with what Codex finds. When a finding looks valid, I pass it back to Claude Code to check and, if it holds up, to fix. I go around a few times until I am happy. There is a human in the loop at the points that matter: the code has to compile, and I have to like the UI.&lt;/p&gt;

&lt;p&gt;When I had a free evening I decided to automate the boring parts. I am not the first person to wire Claude Code and Codex together like this, and I could have copied or installed a solution that already works. I would rather build my own and learn how the pieces fit. I wanted to do it as a single script, for two reasons. I did not want to install yet another tool, and I wanted to watch the data move with my own eyes instead of trusting a framework to move it for me.&lt;/p&gt;

&lt;p&gt;I built it the same way I described above. I wrote the requirement and a rough draft of the script, then asked Claude Code to implement it fully. Codex reviewed it and made a few changes of its own, partly because my Claude Code token allowance for the day had already gone up in smoke. Claude Code did another pass, I did a pass, and at some point we were all happy. So here it is: &lt;a href="https://gist.github.com/ionionascu/706ff2507e5ecfb1a4761f135c4bad14" rel="noopener noreferrer"&gt;cc-codex-loop.sh&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it is shaped this way
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpwvsygjko7h2h4oxfs02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpwvsygjko7h2h4oxfs02.png" alt="Deterministic constraint / build gets the final say" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In an earlier article I argued that multi-agent workflows can quietly amplify mistakes. The short version: chain enough probabilistic steps together and each agent treats the previous output as good enough. It builds on it, adds structure, sounds confident. A small wrong assumption at step two is questioned by nobody, elaborated by step three, and by step five it has become load-bearing and invisible. The pattern that survives this is not “more agents”. It is LLM, then a deterministic constraint, then LLM, then another deterministic constraint. A compiler or a test suite is a hard boundary. It can reject an output and force a correction in a way another model’s opinion cannot.&lt;/p&gt;

&lt;p&gt;This script is that argument turned into bash. It is deliberately shallow. There is no planner, no researcher, no swarm. Two agents, one optional test command, and a hard rule that they only ever talk about one thing: the diff.&lt;/p&gt;

&lt;p&gt;If the shape feels familiar, it should. This is pair programming, with both seats handed to models. One drives, one reads over its shoulder and objects, and they trade the keyboard until the change holds. The useful part was never the ceremony. It was the friction: two views of the same change, forced to meet in one working tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the script does
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj681xdke333w04kn6afu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj681xdke333w04kn6afu.png" alt="How the script works" width="800" height="945"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The unit of work is a request file, &lt;code&gt;REQUEST.md&lt;/code&gt; by default, where I write the task in plain English. Optionally I set &lt;code&gt;VERIFY_CMD&lt;/code&gt; to a build or test command. That command is the deterministic anchor from the theory above, the part that is allowed to say "no" without negotiating.&lt;/p&gt;

&lt;p&gt;The script refuses to run on a dirty tree. That sounds annoying until you see why. With a clean checkout, the git diff between the baseline commit and the working tree is exactly the change for this request and nothing else. That diff is the contract passed between the two models. They can inspect context when they need it, but the argument is anchored on the change. They argue about the diff.&lt;/p&gt;

&lt;p&gt;The loop, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Claude Code implements the request in the working tree. It does not commit, and it ends with a short summary of what it changed.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;VERIFY_CMD&lt;/code&gt; is set, the script runs it and captures the result.&lt;/li&gt;
&lt;li&gt;Codex reviews only the diff plus the verification result, hunting real defects rather than style. It has to end its review with one line: &lt;code&gt;PASS&lt;/code&gt; or &lt;code&gt;ISSUES&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On &lt;code&gt;ISSUES&lt;/code&gt;, the findings go back to Claude Code, but not as an order to comply. Claude adjudicates each one against the actual code and the original request. It fixes the findings that are real and explicitly rejects the ones that are not, ending with &lt;code&gt;FIXED&lt;/code&gt; or &lt;code&gt;REJECTED&lt;/code&gt;. It keeps its session across rounds, so it still remembers what it built.&lt;/li&gt;
&lt;li&gt;The loop stops on one of three outcomes: Codex passes, Claude rejects every finding, or it hits &lt;code&gt;MAX_ROUNDS&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That fourth step is the one I care about. The easy way to build this is to make the implementer obey the reviewer. That is also how you get two models politely talking each other into a worse answer. Letting Claude push back, and treating “the reviewer and the implementer disagree” as a reason to stop and call a human rather than a reason to loop, is the small defense against the exact failure mode I wrote about.&lt;/p&gt;

&lt;p&gt;When it ends, a cheaper summariser writes the summary. Sonnet at low effort is the default; Haiku is there if you want to squeeze the cost further. There is no point spending Opus tokens to describe work that is already done. You get a full &lt;code&gt;SUMMARY.md&lt;/code&gt; with the request, the per-round verdicts, the verification output, the files changed and the diff, plus a one-page version printed to the console. Everything lands under &lt;code&gt;.ccx-loop/run-TIMESTAMP/&lt;/code&gt;. If you want Claude's raw session, it is under &lt;code&gt;~/.claude/projects/&amp;lt;project&amp;gt;/&amp;lt;session-id&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A minimal run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;VERIFY_CMD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"npm test"&lt;/span&gt; &lt;span class="nv"&gt;MAX_ROUNDS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3 ./cc-codex-loop.sh REQUEST.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Questions this usually raises
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why bash?&lt;/strong&gt; Because it runs almost anywhere with almost nothing installed, and I did not want a dependency tree standing between me and a hack. I do not particularly love bash. It loves me back about as much. It works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why a script and not a UI tool or a proper framework?&lt;/strong&gt; Because I wanted to learn, and a script is the only version where I can see every prompt and every byte that crosses between the two models. If you would rather have this in Python or Go, paste the script into your favourite model and ask for a translation. That is roughly the whole point of the thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why no human between rounds?&lt;/strong&gt; For now, because I control the original request and I read the final diff anyway. The hook to put a human approval step between Codex and Claude is obvious, and I will add it the day it saves me more time than it costs. Not before.&lt;/p&gt;

&lt;h2&gt;
  
  
  Warnings before you run it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need the pieces already installed and authenticated: the Claude Code and Codex CLIs, plus &lt;code&gt;git&lt;/code&gt; and &lt;code&gt;jq&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It does not sandbox the commands the agents run. Run it in a repo you trust, ideally a disposable worktree or container, and avoid using it in projects with local secrets lying around. Reading the final git diff is necessary, but it will not show side effects outside the repo.&lt;/li&gt;
&lt;li&gt;It is a hack, not a framework. No planning step, no fan-out, no retries beyond the loop. I will improve it when an improvement pays for itself, and not for the sake of a tidier script.&lt;/li&gt;
&lt;li&gt;If you dislike bash, use your favourite gen-AI tool to translate it. The design is the part worth keeping, not the syntax.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The point
&lt;/h2&gt;

&lt;p&gt;The lesson is that the wins do not come from adding another agent. They come from giving the few agents you have something hard to push against, and from letting them disagree out loud instead of nodding the chain toward a confident, well-formatted, wrong answer. Two models, one diff, and a build that either passes or does not. That is most of it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: As I’m not a native English speaker, I used AI tools to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@ionionascu/remember-pair-programming-i-gave-both-seats-to-claude-and-codex-1e3c0cbcf270" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>I Built a Small Agentic Trading App. It Cost Me a Few Hours and About $0.20 Per Run.</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Fri, 13 Mar 2026 17:09:53 +0000</pubDate>
      <link>https://dev.to/ionionascu/i-built-a-small-agentic-trading-app-it-cost-me-a-few-hours-and-about-020-per-run-3ikj</link>
      <guid>https://dev.to/ionionascu/i-built-a-small-agentic-trading-app-it-cost-me-a-few-hours-and-about-020-per-run-3ikj</guid>
      <description>&lt;p&gt;I’ve been writing code for many years now. Not as much these days, but I started when I was eight. With BASIC. After this many years, you develop a particular mindset. It helps sometimes and causes problems other times. When you see a problem, you immediately think about writing a solution. But you should first investigate what’s already out there.&lt;/p&gt;

&lt;p&gt;So when I see articles and hear people talking about AI agents and orchestration frameworks and multi-agent architectures and all that, my first instinct is: if you know code, you just need a few lines, a couple of API calls, and an LLM. That’s it. That’s your agent.&lt;/p&gt;

&lt;p&gt;I wanted to test that instinct. So I mixed it with something I actually care about: trading.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;The idea was simple. I wanted an app that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gets some input from me (optionally)&lt;/li&gt;
&lt;li&gt;Calls a few APIs to gather market data and news&lt;/li&gt;
&lt;li&gt;Sends everything to an LLM with the right context&lt;/li&gt;
&lt;li&gt;Saves the output for future runs (a basic form of memory)&lt;/li&gt;
&lt;li&gt;Sends me the result via email and push notification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am not comfortable enough to let it place or cancel orders automatically. Maybe later. For now, &lt;strong&gt;I just want it to think and tell me what it thinks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And what it tells me is pretty concrete. The output of each run includes a specific recommendation: WAIT, BUY at a particular price (or NOW), SELL at a particular price (or NOW), amend existing orders, and so on. It’s not a vague “the market looks bullish” — it’s an actionable next step with reasoning attached. I still make the final call, but the model does the legwork of pulling everything together into a decision.&lt;/p&gt;

&lt;p&gt;To keep things simple, I used Claude models. I already have a Pro account, so I just activated the API and topped it up. Then I asked Claude Code (Opus) to help me scaffold the whole thing. A Python app using LangChain, calling some APIs, talking to Sonnet, saving output, emailing me, sending push notifications.&lt;/p&gt;

&lt;p&gt;I also put everything in a Docker container and deployed it to my local K3s cluster running on a Raspberry Pi 5. It runs as a set of cronjobs: once before the market opens, and a few times during market hours.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdes7u51n3mgwoyq20en8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdes7u51n3mgwoyq20en8.png" alt="The entire infrastructure. It fits in my palm." width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It does stuff. It actually works.&lt;/p&gt;

&lt;p&gt;Now, I should be upfront: I am not a professional trader. I trade from time to time, and I am certainly not a millionaire. So I have to admit that part of it also feels a little bit speculative. But here’s the thing — the summary the LLM provides in its output, the rationale behind the decision, actually makes sense. When I have time to read the news myself (actual news, not AI-generated summaries), the reasoning lines up. It’s not just pulling recommendations out of thin air. It reads the same data I would read, and it reaches conclusions I can follow. That doesn’t make it right every time, but it makes it auditable, which is more than I can say for my gut feeling at 7 AM.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Implementation Details
&lt;/h2&gt;

&lt;p&gt;Let me go a bit deeper into what’s under the hood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why LangChain?&lt;/strong&gt; Partly to learn it, and partly because I actually want to extend the solution. For example, in the future I could use Sonnet as a faster and cheaper model for the first pass — a quick sanity check — and then, if an actual trade decision is needed, escalate to Opus for verification. LangChain gives me a reasonable abstraction layer for that kind of routing. I also used Tavily for news data, configured as a tool inside LangChain. But I want to be clear — I could have done all of this without it. LangChain is a convenience here, not a requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic user prompt.&lt;/strong&gt; The prompt I send to the model has several dynamic variables that get filled in at runtime: current position, pending orders, historical orders. To populate these, the app first makes API requests to my broker. This is just plain REST — no fancy orchestration needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No historical price data (yet).&lt;/strong&gt; One gap worth mentioning: my broker doesn’t expose historical price data through its API, and I don’t want to pay a separate data provider for it. I’ll find a solution eventually, but for now the prompt doesn’t rely heavily on price charts or technical indicators. Instead, it leans on analysis and context from other sources on the internet — news, market commentary, analyst takes — which Tavily pulls in. It’s a trade-off, but it keeps things simple and cheap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local override mode.&lt;/strong&gt; When the app runs locally (not as a cronjob), I have the option to feed it manual input. I can paste in some news I found interesting, or force a particular instrument price so the app doesn’t need to look one up. This turned out to be surprisingly useful for testing and for those moments when I want to say “forget the current price, assume it’s at X — what would you do?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory.&lt;/strong&gt; I don’t save the whole LLM output. The system prompt has multiple steps, and one of them explicitly asks the model to produce a “run summary” — a condensed version of its reasoning and recommendation, designed to be useful as context on the next run. That summary gets saved to a file. On the next run, it’s loaded and injected into the prompt. So the model can see what it concluded last time, what it recommended, and whether conditions have changed. No vector database, no embeddings, no retrieval pipeline. Just a file with a structured summary that the model itself wrote for its future self.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notifications.&lt;/strong&gt; I use my own Gmail account to send emails to myself. For push notifications, I use my Home Assistant instance — it already knows how to push to my phone, so I just call its API. Simple, reliable, already running.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Costs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5ti4gxv95i2rszkmtbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5ti4gxv95i2rszkmtbp.png" alt="Total cost per run. Less than a bad coffee." width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each run costs about $0.20. That’s the Claude API usage for one cycle of: ingest context, read news, reason about the position, produce a recommendation. For the news data, I use Tavily’s free Researcher tier, which should be more than enough for the number of monthly runs I need at the moment. So the only real cost is the LLM.&lt;/p&gt;

&lt;p&gt;A proper trader would probably want to optimise this. Maybe use a local model for some steps. Maybe look for a model specifically fine-tuned for financial reasoning. Maybe care about latency.&lt;/p&gt;

&lt;p&gt;But for me? I just want to have fun and learn. $0.20 per run is a rounding error compared to what you’d lose on a single bad trade made on gut feeling at 7 AM before coffee.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture (If You Can Call It That)
&lt;/h2&gt;

&lt;p&gt;Let me sketch what this looks like end to end:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowt9m7bnoincdi6s2vc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowt9m7bnoincdi6s2vc3.png" alt="Just a few steps. Most of them are just API calls and string concatenation." width="800" height="729"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cronjob triggers&lt;/strong&gt; the Docker container on K3s (Raspberry Pi 5).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broker API calls&lt;/strong&gt; fetch current positions, pending orders, and order history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tavily tool&lt;/strong&gt; (via LangChain) fetches relevant market news.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt assembly&lt;/strong&gt;: all the dynamic data gets injected into the user prompt, along with the previous run’s output (memory).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Sonnet&lt;/strong&gt; processes the full context and produces a recommendation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output is saved&lt;/strong&gt; to a file (next run’s memory).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email + push notification&lt;/strong&gt; sent to me with the recommendation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human in the loop&lt;/strong&gt; (me) decides whether to act on the model’s recommendation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s eight steps. Most of them are just API calls and string concatenation. The “agentic” part is really step 5 — the LLM reasoning over structured context with tool access. And step 8 is just a guy looking at his phone over coffee.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Obvious Question
&lt;/h2&gt;

&lt;p&gt;Now, the obvious question. For a developer who can write code, &lt;strong&gt;why exactly do you need a fancy orchestration framework to build something like this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I keep seeing products and platforms that promise to let you “build AI agents without code” or “orchestrate complex multi-agent workflows” with drag-and-drop interfaces and visual pipelines. And I get it — there’s a market for that. Not everyone writes code.&lt;/p&gt;

&lt;p&gt;But if you do write code, what you need is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An LLM API&lt;/li&gt;
&lt;li&gt;A few REST calls&lt;/li&gt;
&lt;li&gt;Some string templating for prompts&lt;/li&gt;
&lt;li&gt;A file system (for memory)&lt;/li&gt;
&lt;li&gt;A way to send notifications&lt;/li&gt;
&lt;li&gt;A container runtime (optional, but nice)&lt;/li&gt;
&lt;li&gt;Some logging, if you need audit or debug data (add as needed — it’s just code)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it. That’s the agent.&lt;/p&gt;

&lt;p&gt;I’m not saying LangChain is strictly necessary either. I used it because I wanted to learn it and because the tool abstraction is convenient for the Tavily integration. But I could have done the same thing with raw API calls and a hundred lines of Python.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The orchestration is just code. It always was.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The value of an LLM agent is not in the orchestration layer. It’s in the prompt design, the context assembly, and the quality of the model’s reasoning. Everything else is plumbing. And developers have been doing plumbing for decades.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fposnv6hywkufnuppusaj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fposnv6hywkufnuppusaj.png" alt="The model made its call. I’ll get to it." width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: This is a personal learning project. Nothing here should be taken as financial advice. Also, as I’m not a native English speaker, I used an LLM to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/ai-in-plain-english/i-built-a-small-agentic-trading-app-it-cost-me-a-few-hours-and-about-0-20-per-run-d00031bc0b3c" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>softwareengineering</category>
      <category>python</category>
    </item>
    <item>
      <title>Are Multi-Agent LLM Workflows Quietly Amplifying Mistakes?</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Fri, 13 Feb 2026 12:18:14 +0000</pubDate>
      <link>https://dev.to/ionionascu/are-multi-agent-llm-workflows-quietly-amplifying-mistakes-lhb</link>
      <guid>https://dev.to/ionionascu/are-multi-agent-llm-workflows-quietly-amplifying-mistakes-lhb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zho3l91lsanebvs462d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zho3l91lsanebvs462d.png" alt="A pipeline that looks sophisticated yet slightly fragile" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Multi-agent systems are everywhere right now.&lt;/p&gt;

&lt;p&gt;Planner agent. Executor agent. Critic agent. Formatter agent. Sometimes even a "manager" agent coordinating everything.&lt;/p&gt;

&lt;p&gt;The story is usually the same: if one LLM call can be useful, then several specialised agents working together should be more reliable and produce better results.&lt;/p&gt;

&lt;p&gt;But I'm not fully convinced.&lt;/p&gt;

&lt;p&gt;Not because multi-agent systems are useless. They can be powerful. I'm just not sure we are always clear about &lt;strong&gt;why we use them, and what trade-offs we introduce when we chain probabilistic systems together.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thinking of an Agent as a Function
&lt;/h2&gt;

&lt;p&gt;Let's simplify the discussion and treat an agent like a function.&lt;/p&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;p&gt;f_0_llm_0_step_n(prompt[1..n], data, output_step_n-1)&lt;/p&gt;

&lt;p&gt;In plain English:&lt;/p&gt;

&lt;p&gt;An agent, running a specific model (say llm_0), performs step n using one or more prompts, some dynamic data (code snippets, documents, context), and the output of the previous run. It then produces a result.&lt;/p&gt;

&lt;p&gt;That result is passed to the next agent:&lt;/p&gt;

&lt;p&gt;f_1_llm_1_step_n(...)&lt;/p&gt;

&lt;p&gt;And so on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiel1p4hl5fhtptu482e0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiel1p4hl5fhtptu482e0.png" alt="Agents as composed functions" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we create a composition:&lt;/p&gt;

&lt;p&gt;f3(f2(f1(x)))&lt;/p&gt;

&lt;p&gt;Each f is powered by an LLM. And &lt;strong&gt;each LLM call is probabilistic.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Every LLM Call Can Be Wrong
&lt;/h2&gt;

&lt;p&gt;No matter how good the model is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It can misunderstand the requirement.&lt;/li&gt;
&lt;li&gt;It can hallucinate details.&lt;/li&gt;
&lt;li&gt;It can omit constraints.&lt;/li&gt;
&lt;li&gt;It can be confidently wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If we assume each step has some probability of being correct (call it a_i), then in a simple independent chain, overall correctness looks roughly like:&lt;/p&gt;

&lt;p&gt;a_total ≈ a1 × a2 × a3 × ...&lt;/p&gt;

&lt;p&gt;Even if each individual step is "pretty good", multiplying several steps together is not comforting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fld9ew1t31ikt3kf0zm0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fld9ew1t31ikt3kf0zm0s.png" alt="Probability compounding" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But I should be honest about what this model hides. The formula assumes errors are independent across steps. In practice, they're often not. Agents share the same context, sometimes the same model weights, and frequently the same blind spots. If agent 1 misunderstands an ambiguous requirement, agent 2, reading agent 1's output, will likely inherit that misunderstanding. &lt;strong&gt;Correlated failures can make things worse than the multiplicative model suggests&lt;/strong&gt;, because the "correction" you'd hope for from chaining doesn't materialise when all the agents are confused in the same direction.&lt;/p&gt;

&lt;p&gt;On the other hand, if agents are operating on genuinely different aspects of a problem, the correlation drops and you get closer to the independent case, which is actually more optimistic.&lt;/p&gt;

&lt;p&gt;The point is not that the formula is a precise model. The point is directional: &lt;strong&gt;chaining probabilistic transformations does not automatically improve reliability&lt;/strong&gt;, and in many setups it degrades it. The exact shape of that degradation depends on how correlated the failure modes are.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Yes, But Agents Can Correct Each Other"
&lt;/h2&gt;

&lt;p&gt;A fair counterargument is: this is too pessimistic.&lt;/p&gt;

&lt;p&gt;People will say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We use critic agents.&lt;/li&gt;
&lt;li&gt;We use voting.&lt;/li&gt;
&lt;li&gt;We do retries.&lt;/li&gt;
&lt;li&gt;We enforce JSON schemas.&lt;/li&gt;
&lt;li&gt;We run compilers and tests.&lt;/li&gt;
&lt;li&gt;We keep temperature low.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And yes, these things change the math.&lt;/p&gt;

&lt;p&gt;If you add deterministic constraints between steps, you are no longer doing a blind probabilistic chain. You are building something closer to:&lt;/p&gt;

&lt;p&gt;LLM → deterministic constraint → LLM → deterministic constraint&lt;/p&gt;

&lt;p&gt;That is why agent workflows often work much better for code generation than for pure reasoning. A compiler or a test suite is a hard boundary. It can reject invalid outputs and force correction.&lt;/p&gt;

&lt;p&gt;So the argument is not "multi-agent is always bad".&lt;/p&gt;

&lt;p&gt;The real risk appears when we build &lt;strong&gt;deep chains without strong external anchors.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Problems That Look Like One
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feubqh32m8inm2835cc4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feubqh32m8inm2835cc4r.png" alt="Epistemic drift" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The issue I worry about most in deep chains is what I'd call epistemic drift. But when I try to pin it down, it splits into two distinct problems that need different solutions.&lt;/p&gt;

&lt;p&gt;The first is error accumulation. Each agent tends to assume the previous output is "good enough". It builds on it, improves it, adds structure. If agent 2 introduces a small wrong assumption, agent 3 doesn't question it. It elaborates on it. By agent 5, &lt;strong&gt;the wrong assumption is load-bearing and invisible.&lt;/strong&gt; This is a propagation problem, and the fix is intermediate validation: check facts, run tests, enforce constraints between steps.&lt;/p&gt;

&lt;p&gt;The second is confidence inflation. As the chain gets deeper, outputs become more organised. They sound more authoritative. They look more complete. But &lt;strong&gt;coherence is not the same as correctness.&lt;/strong&gt; A well-formatted, well-structured document can be built on a shaky premise and still read as though every claim was carefully verified. This is a calibration problem, and it's worth noting that it isn't unique to multi-agent systems — a single LLM call can also produce overconfident nonsense. But multi-agent chains make it worse, because each successive agent treats the previous output as settled ground rather than as probabilistic input.&lt;/p&gt;

&lt;p&gt;The distinction matters because people often propose critic agents or voting as the solution. Those help with error accumulation. &lt;strong&gt;They do very little for confidence inflation.&lt;/strong&gt; A critic agent reading a polished, internally consistent document has the same struggle a human reviewer does: the text doesn't signal where its weak points are.&lt;/p&gt;

&lt;p&gt;And in both cases, the deeper the chain, the harder it becomes to locate where things first went wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging Becomes Hard
&lt;/h2&gt;

&lt;p&gt;With one LLM call, debugging is simple: inspect the prompt and output.&lt;/p&gt;

&lt;p&gt;With five agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent introduced the wrong assumption?&lt;/li&gt;
&lt;li&gt;Which agent "fixed" something that wasn't broken?&lt;/li&gt;
&lt;li&gt;Which step created the hallucinated constraint?&lt;/li&gt;
&lt;li&gt;Which retry changed the meaning?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Multi-agent workflows increase the number of places where subtle divergence can happen. I think of it as &lt;strong&gt;increased epistemic surface area&lt;/strong&gt;: more surfaces where mistakes can stick.&lt;/p&gt;

&lt;p&gt;This matters in areas like architecture decisions, long-horizon planning, policy and compliance, regulated environments in finance or healthcare or infrastructure. In these contexts, a small drift can turn into an expensive mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Humans Are Also Probabilistic
&lt;/h2&gt;

&lt;p&gt;To be fair, humans are not deterministic either.&lt;/p&gt;

&lt;p&gt;Humans misunderstand specs. Humans propagate assumptions. Humans get tired, biased, distracted. You could model a human step as:&lt;/p&gt;

&lt;p&gt;h(context, bias, fatigue, memory)&lt;/p&gt;

&lt;p&gt;So the comparison is not "agents vs perfection". It's agent chains versus human chains. And sometimes multi-agent systems may be no worse than multi-human workflows.&lt;/p&gt;

&lt;p&gt;The strongest version of the counterargument goes further: multi-agent systems with critic loops are basically peer review, and peer review empirically reduces error rates. That's true. But there's a reason the analogy breaks down. Human peer reviewers bring genuinely independent perspectives. They have different training, different experiences, different biases. When a second engineer reviews your design, they might catch the thing you missed precisely because they think differently.&lt;/p&gt;

&lt;p&gt;LLM agents, even when given different system prompts, share the same training data, the same learned biases, the same blind spots. A "critic" agent running the same model as the "creator" agent is not an independent reviewer. &lt;strong&gt;It's closer to asking the same person to review their own work after taking a coffee break.&lt;/strong&gt; It might catch surface errors, but it's unlikely to challenge the deeper assumptions because it shares them.&lt;/p&gt;

&lt;p&gt;This doesn't mean multi-agent critique is worthless. It means the error reduction you get from it is probably smaller and less reliable than the error reduction you get from genuine human peer review, and we should set our expectations accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Multi-Agent Often Means Multi-Model
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xb1cfyfpat5lnqosnm7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xb1cfyfpat5lnqosnm7.png" alt="Multi-agent often = multi-model cost routing" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is another reason multi-agent systems are popular, and it's not always about "better reasoning".&lt;/p&gt;

&lt;p&gt;It's cost.&lt;/p&gt;

&lt;p&gt;In practice, a lot of multi-agent pipelines are also multi-model pipelines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a cheap model for classification or routing&lt;/li&gt;
&lt;li&gt;a mid-tier model for extraction&lt;/li&gt;
&lt;li&gt;a strong (expensive) model for reasoning&lt;/li&gt;
&lt;li&gt;a cheap model again for formatting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So when people say "agentic workflow", sometimes they actually mean: we split the work so we can run most steps on cheaper models.&lt;/p&gt;

&lt;p&gt;That's not a bad idea. It's rational.&lt;/p&gt;

&lt;p&gt;If you run everything on the strongest model, costs explode. So people route tasks.&lt;/p&gt;

&lt;p&gt;But this introduces a specific risk: the smaller, cheaper models often become gatekeepers. If a cheap model misclassifies a task as "simple", the expensive reasoning step might never run. Now the system is not optimising for correctness. &lt;strong&gt;It is optimising for cost, and correctness becomes a side effect.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I want to be precise here, because this is not inherently a flaw of multi-agent design. A well-built system can route uncertain inputs upward, using confidence thresholds, fallback paths, or escalation logic. The problem is that many systems don't. The default in most frameworks is to route based on classification alone, without a notion of "I'm not sure, send this to the bigger model." And when cost pressure is the main driver, the incentive is to keep things on the cheap path.&lt;/p&gt;

&lt;p&gt;The other issue with mixing models is that you're now mixing failure modes. Different models have different biases, different calibration, different hallucination patterns. You are no longer chaining one probabilistic system. You are chaining several different ones. That doesn't make the system inherently worse, but it does make behaviour less predictable and debugging harder. When something goes wrong in a multi-model pipeline, you're not just asking "what went wrong?", you're asking &lt;strong&gt;"which model's particular flavour of wrong caused this?"&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Human Validation Problem
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0c4rozk0hmy7fvo8smb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0c4rozk0hmy7fvo8smb.png" alt="Validation economics / review paradox" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also an economic problem around validation.&lt;/p&gt;

&lt;p&gt;The obvious extremes are: validate every intermediate step (which destroys the automation benefit) or validate only the final output (which means rerunning the whole pipeline when it's wrong, and re-validating from scratch because stochastic outputs change between runs).&lt;/p&gt;

&lt;p&gt;Most production systems land somewhere in the middle. You identify high-risk steps and validate those. You let low-risk transformations run autonomously. You put hard checkpoints at the boundaries where errors would be most expensive.&lt;/p&gt;

&lt;p&gt;That middle ground is reasonable, and it works. But it's worth noticing what it implies: the value of the multi-agent system now depends entirely on how well you've identified where the risk concentrates. Get that wrong and you're either over-validating (killing the efficiency gains) or under-validating (letting errors through at the exact points that matter).&lt;/p&gt;

&lt;p&gt;In other words, &lt;strong&gt;agent workflows don't remove validation cost. They require you to be much more deliberate about where you spend it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When Do Multi-Agent Workflows Make Sense?
&lt;/h2&gt;

&lt;p&gt;In my view, multi-agent workflows make sense when they are constrained and anchored.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;each step has a clearly bounded responsibility&lt;/li&gt;
&lt;li&gt;deterministic validation exists between steps (tests, schema checks, compiler, policy engine)&lt;/li&gt;
&lt;li&gt;intermediate outputs have stable structure&lt;/li&gt;
&lt;li&gt;chain depth is limited&lt;/li&gt;
&lt;li&gt;retries are controlled and predictable&lt;/li&gt;
&lt;li&gt;there is traceability (you can see what changed and why)&lt;/li&gt;
&lt;li&gt;routing logic includes uncertainty-aware escalation, not just classification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In that world, multi-agent can genuinely improve quality and reduce human workload.&lt;/p&gt;

&lt;p&gt;But without those constraints, &lt;strong&gt;adding agents can increase complexity faster than it increases correctness.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Question
&lt;/h2&gt;

&lt;p&gt;The real question is not "Are multi-agent systems good or bad?"&lt;/p&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are we increasing reasoning depth, or just adding reasoning layers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes multi-agent systems create better output. Sometimes they create more confident output.&lt;/p&gt;

&lt;p&gt;Those are not the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;We've seen this pattern before in software engineering.&lt;/p&gt;

&lt;p&gt;More lines of code did not mean more value. More microservices did not automatically mean better architecture. More tokens do not necessarily mean more productivity.&lt;/p&gt;

&lt;p&gt;That last one is worth sitting with for a moment, because the industry consensus on microservices is instructive. We didn't conclude that microservices were wrong. We concluded that &lt;strong&gt;they require operational maturity to work&lt;/strong&gt; — good observability, clear service boundaries, robust deployment pipelines. Without that maturity, they made things worse. With it, they could be genuinely better than the monolith.&lt;/p&gt;

&lt;p&gt;I think multi-agent systems are at a similar inflection point. The pattern is not wrong. But it demands more rigour than most teams are currently applying. It demands deterministic anchors, good traceability, honest assessment of where errors concentrate, and a willingness to keep things simple when the constraints aren't there yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More agents do not necessarily mean more correctness.&lt;/strong&gt; But well-constrained agents, with strong validation boundaries and honest routing, &lt;strong&gt;can earn their complexity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The danger is in the middle: systems that look sophisticated, that sound confident, that cost less per token, &lt;strong&gt;while quietly amplifying the exact problems we wanted to solve.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: As I’m not a native English speaker, I used ChatGPT to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@ionionascu/are-multi-agent-llm-workflows-quietly-amplifying-mistakes-3f2200c1683a" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>genai</category>
      <category>softwareengineering</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Why Not One-Time-Use Banks (in Terraform)? Gen-AI Says: Maybe.</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Fri, 23 Jan 2026 10:49:27 +0000</pubDate>
      <link>https://dev.to/ionionascu/why-not-one-time-use-banks-in-terraform-gen-ai-says-maybe-1ai3</link>
      <guid>https://dev.to/ionionascu/why-not-one-time-use-banks-in-terraform-gen-ai-says-maybe-1ai3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7oh2p6dah34uqedrk7t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7oh2p6dah34uqedrk7t.png" alt="A regulated bank, reimagined as a reproducible software system." width="799" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;You are the CEO of a Tier-1 bank (e.g. Jamie Dimon) who is also an elite systems programmer and architect (e.g. Linus Torvalds), with deep expertise in Java, distributed systems, and AWS.&lt;/p&gt;

&lt;p&gt;Design and build the minimum legally compliant software and AWS infrastructure required to launch a UK-regulated bank.&lt;/p&gt;

&lt;p&gt;Requirements&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud: AWS only&lt;/li&gt;
&lt;li&gt;Jurisdiction: UK&lt;/li&gt;
&lt;li&gt;Capabilities: hold funds, receive money, send money to other banks&lt;/li&gt;
&lt;li&gt;Currency: multi-currency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You must produce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core banking architecture (double-entry ledger, accounts, transactions)&lt;/li&gt;
&lt;li&gt;Executable AWS infrastructure templates (Terraform or CloudFormation)&lt;/li&gt;
&lt;li&gt;Java service skeletons for ledger and payments&lt;/li&gt;
&lt;li&gt;Security &amp;amp; compliance components (IAM, encryption, audit logs, AML/KYC hooks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Clearly state:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is fully implementable in software&lt;/li&gt;
&lt;li&gt;What requires regulators or external banking partners&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Be concrete and implementation-ready. Do not simplify regulatory constraints.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No fluff&lt;/strong&gt;. &lt;strong&gt;No “high-level overview”&lt;/strong&gt;. &lt;strong&gt;No hand-waving about “innovation”&lt;/strong&gt;. Just: design and build a bank, ideally with a cool Terraform template you could apply to your preferred cloud provider (or, if you’re feeling adventurous, maybe even your own Raspberry Pi cluster).&lt;/p&gt;

&lt;h2&gt;
  
  
  From as-a-Service to as-a-System
&lt;/h2&gt;

&lt;p&gt;We are already comfortable with &lt;strong&gt;platform-as-a-service&lt;/strong&gt;, &lt;strong&gt;infrastructure-as-a-service&lt;/strong&gt;, &lt;strong&gt;database-as-a-service&lt;/strong&gt;, and increasingly &lt;strong&gt;AI-as-a-service&lt;/strong&gt;. These models work because complexity is neatly &lt;strong&gt;encapsulated behind APIs, templates, and contracts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What’s changing with modern LLMs is the &lt;strong&gt;boundary of what can be encapsulated&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You no longer just rent compute. You can ask for entire systems, described in natural language and emitted as infrastructure code, service skeletons, and architectural decisions.&lt;/p&gt;

&lt;p&gt;At that point, the “service” is no longer just a hosted product. It becomes a &lt;strong&gt;reproducible system blueprint&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is the mental leap behind the phrase:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bank-as-a-Service&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not a Stripe-style API wrapper.&lt;br&gt;
Not a fintech middleware vendor.&lt;/p&gt;

&lt;p&gt;But a design-complete, regulation-aware, infrastructure-ready banking system, generated from a prompt.&lt;/p&gt;

&lt;p&gt;With Terraform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0qd1r1xpxk7kmcbp9nv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0qd1r1xpxk7kmcbp9nv.png" alt="From institution to system: when a bank becomes a reproducible blueprint." width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A short personal example
&lt;/h2&gt;

&lt;p&gt;This realisation didn’t start with banks for me.&lt;/p&gt;

&lt;p&gt;I’m currently working on an application called &lt;a href="https://apps.apple.com/gb/app/medetra/id6751812151" rel="noopener noreferrer"&gt;MedEtra&lt;/a&gt;. Recently, I wanted to run a small survey to explore a few product ideas.&lt;/p&gt;

&lt;p&gt;The traditional route would be obvious:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pick a survey-as-a-service platform (or something ending in “Forms”)&lt;/li&gt;
&lt;li&gt;configure questions&lt;/li&gt;
&lt;li&gt;export results&lt;/li&gt;
&lt;li&gt;integrate storage later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, I went to a Gen-AI coding model and simply asked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;here are the questions&lt;/li&gt;
&lt;li&gt;suggest improvements&lt;/li&gt;
&lt;li&gt;target platforms: web + mobile&lt;/li&gt;
&lt;li&gt;data storage: my own backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was it.&lt;/p&gt;

&lt;p&gt;The model generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the survey structure&lt;/li&gt;
&lt;li&gt;validation rules&lt;/li&gt;
&lt;li&gt;storage schema&lt;/li&gt;
&lt;li&gt;deployment-ready code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, it became very clear to me that &lt;strong&gt;entire categories of “-as-a-service” businesses are exposed&lt;/strong&gt; — not because they are bad products, but because they are thin abstractions over logic that can now be generated on demand.&lt;/p&gt;

&lt;p&gt;Banking is obviously orders of magnitude harder.&lt;/p&gt;

&lt;p&gt;But the direction of travel is the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why banks-as-a-service is plausible, not imminent
&lt;/h2&gt;

&lt;p&gt;Let’s be honest. The technology is &lt;strong&gt;not fully there yet&lt;/strong&gt;. The regulatory burden is &lt;strong&gt;non-negotiable&lt;/strong&gt;. And no LLM today can safely operate money movement autonomously.&lt;/p&gt;

&lt;p&gt;But that’s not the point. Cryptocurrencies, stablecoins, and virtual cards have already demonstrated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;demand for programmable money&lt;/li&gt;
&lt;li&gt;appetite for alternative rails&lt;/li&gt;
&lt;li&gt;willingness to trust software with value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a sense, this is not a revolution — it’s an &lt;strong&gt;extension&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;virtual cards&lt;/li&gt;
&lt;li&gt;embedded finance&lt;/li&gt;
&lt;li&gt;ledger APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;full banking systems as generated artefacts&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference is scale and accountability, not principle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond banks: Facebook-as-a-Service?
&lt;/h2&gt;

&lt;p&gt;Once you accept the premise, the examples get uncomfortable.&lt;/p&gt;

&lt;p&gt;Why not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facebook-as-a-service?&lt;/li&gt;
&lt;li&gt;CRM-as-a-system?&lt;/li&gt;
&lt;li&gt;Government-forms-as-code?&lt;/li&gt;
&lt;li&gt;School-management-as-templates?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a platform’s value is primarily:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workflow logic&lt;/li&gt;
&lt;li&gt;schema design&lt;/li&gt;
&lt;li&gt;UI conventions&lt;/li&gt;
&lt;li&gt;integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…then Gen-AI can increasingly generate the platform itself.&lt;/p&gt;

&lt;p&gt;Not host it.&lt;br&gt;
Not brand it.&lt;br&gt;
Generate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable conclusion
&lt;/h2&gt;

&lt;p&gt;Gen-AI is not just automating tasks. It is &lt;strong&gt;commoditising system design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The differentiator is shifting from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;who built the software&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;who operates it&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;who is accountable&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;who holds the licence&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;who carries the risk&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In banking, that last point is everything.&lt;/p&gt;

&lt;p&gt;And that’s why the prompt matters.&lt;/p&gt;

&lt;p&gt;Not because we can launch a bank with Terraform tomorrow — but because we are getting closer to a world where &lt;strong&gt;the hardest part of building institutions is no longer the software&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that opens up a wide range of new opportunities.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If this resonates, I suspect many “-as-a-service” business models will need to rethink what, exactly, they are selling.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: As I’m not a native English speaker, I used ChatGPT to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/ai-in-plain-english/why-not-one-time-use-banks-in-terraform-gen-ai-says-maybe-05decd7ca749" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>genai</category>
      <category>systemdesign</category>
      <category>architecture</category>
      <category>cloud</category>
    </item>
    <item>
      <title>The Return of Assembly: When LLMs No Longer Need High-Level Languages</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Wed, 22 Oct 2025 12:30:14 +0000</pubDate>
      <link>https://dev.to/ionionascu/the-return-of-assembly-when-llms-no-longer-need-high-level-languages-1dak</link>
      <guid>https://dev.to/ionionascu/the-return-of-assembly-when-llms-no-longer-need-high-level-languages-1dak</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34zr8yzhj83f3w2r4xas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34zr8yzhj83f3w2r4xas.png" alt="AI-generated illustration (via ChatGPT) representing the idea of large language models generating assembly code directly from plain English." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most people in IT have at least heard of assembly language. Some even saw it during university - just enough to know it exists, but not enough to use it for anything real.&lt;/p&gt;

&lt;p&gt;Assembly used to be the secret behind high-performance code. Games like &lt;strong&gt;Quake&lt;/strong&gt;, graphics engines, and device drivers often had big chunks written in assembly for one simple reason: &lt;strong&gt;speed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But times changed. Modern developers rarely touch assembly anymore, and for good reasons. Until recently, it simply didn't make sense for most projects.&lt;/p&gt;

&lt;p&gt;Well, at least, that's what I thought - until I tried something on my Mac a few days ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Assembly Disappeared
&lt;/h2&gt;

&lt;p&gt;Assembly slowly vanished from mainstream software development because it was too much work for humans to handle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's &lt;strong&gt;not portable&lt;/strong&gt; - an assembly routine that runs on x86 won't work on ARM, RISC-V, or a GPU.&lt;/li&gt;
&lt;li&gt;It's &lt;strong&gt;not maintainable&lt;/strong&gt; - every line depends on the quirks of a specific CPU.&lt;/li&gt;
&lt;li&gt;It's &lt;strong&gt;also not forgiving&lt;/strong&gt; - one wrong instruction and you crash the process or corrupt memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Higher-level languages like C, Java, or Python fixed that. They gave us portability, readability, and safety. We stopped thinking about registers and flags, and started thinking about business logic.&lt;/p&gt;

&lt;p&gt;Compilers got so good that we forgot there was assembly underneath. For human developers, this was a big win. For LLMs, though, those constraints don't really apply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Humans Have Limits. LLMs Don't - at Least Not the Same&amp;nbsp;Ones
&lt;/h2&gt;

&lt;p&gt;Humans forget things. We can't hold every detail of a large project in our head. That's why complex systems end up consuming too much memory, leaking resources, or deadlocking.&lt;/p&gt;

&lt;p&gt;LLMs, on the other hand, can "see" entire codebases at once. With enough context tokens, they can process hundreds of files, reason about dependencies, and never lose focus.&lt;/p&gt;

&lt;p&gt;So I started thinking: if an LLM can understand requirements directly in English, &lt;strong&gt;why do we still need to go through a high-level programming language at all?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why not just ask the model to write assembly code directly for the target hardware?&lt;/p&gt;

&lt;h2&gt;
  
  
  From English to Assembly on My&amp;nbsp;Mac
&lt;/h2&gt;

&lt;p&gt;Each CPU architecture - x86, ARM, RISC-V, GPUs - has its own instruction set. But that's not really a problem anymore. You can simply be explicit in your prompt.&lt;/p&gt;

&lt;p&gt;In my case, I told Copilot something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Target Platform&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Hardware**&lt;/span&gt;: MacBook Pro 16-inch (November 2024)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Processor**&lt;/span&gt;: Apple M4 Max (ARM64 architecture)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Operating System**&lt;/span&gt;: macOS
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Execution Environment**&lt;/span&gt;: Terminal applications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No compilers, no C, no libraries. Just plain English. Copilot produced a short, valid assembly routine for my Mac. Then I asked it to write a test harness to verify it. It chose Python automatically, wrote the code to load and call the routine, and checked that &lt;code&gt;3 + 5&lt;/code&gt; returned &lt;code&gt;8&lt;/code&gt;. It worked.&lt;/p&gt;

&lt;p&gt;It was simple - just adding two numbers - but it &lt;strong&gt;proved the point&lt;/strong&gt;: I didn't need to know the registers, calling conventions, or even the assembler syntax. The AI handled all of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Assembly Might Make Sense&amp;nbsp;Again
&lt;/h2&gt;

&lt;p&gt;For humans, assembly was too low-level to manage. For LLMs, it's just another language - no harder than Python or JavaScript.&lt;/p&gt;

&lt;p&gt;They could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate code directly optimised for the target CPU or GPU.&lt;/li&gt;
&lt;li&gt;Adapt automatically to architecture differences.&lt;/li&gt;
&lt;li&gt;Explore micro-optimisations that compilers might miss.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Generate an ARM64 routine for matrix multiplication optimised for Apple's M-series cache layout."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The LLM could write it, benchmark it, refine it, and repeat - all automatically. That's something no human could realistically do across multiple hardware targets.&lt;/p&gt;

&lt;p&gt;Of course, there are risks. LLM-generated assembly might not be deterministic or reproducible. It may fail silently or produce slightly different code for the same request. And debugging machine code generated by a neural network sounds like a nightmare.&lt;/p&gt;

&lt;p&gt;But then again, we already trust compilers we don't fully understand. This is just one level deeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements in Plain&amp;nbsp;English
&lt;/h2&gt;

&lt;p&gt;One of the most exciting parts of all this is how &lt;strong&gt;LLMs turn requirements into code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's like Behaviour-Driven Development (BDD), but without the intermediate steps. You describe what you want:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The function should return the sum of two integers and store the result in memory."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The LLM translates that into assembly, or C, or Python - whatever fits the goal - and can even test it immediately. In theory, product managers could write requirements that are executable from day one, without developers writing scaffolding or boilerplate.&lt;/p&gt;

&lt;p&gt;Languages would become more like intermediate representations - still useful for humans, but optional for machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Comes&amp;nbsp;Next
&lt;/h2&gt;

&lt;p&gt;Here's where I think this could go in the next few years:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLMs trained per architecture&lt;/strong&gt; - ARM, x86, RISC-V, CUDA, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-driven compilers&lt;/strong&gt; - translating English or pseudocode straight into optimised machine code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic debugging&lt;/strong&gt; - where you ask "why is this logic wrong?" instead of inspecting registers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that happens, the boundaries between &lt;strong&gt;design&lt;/strong&gt;, &lt;strong&gt;coding&lt;/strong&gt;, and &lt;strong&gt;compiling&lt;/strong&gt; could blur completely. Developers will focus on describing intent, not syntax. LLMs will handle the low-level reality. And maybe, just maybe, &lt;strong&gt;assembly will make sense again&lt;/strong&gt; - not because we understand it better, but because our tools finally do.&lt;/p&gt;




&lt;p&gt;If you'd like to see the tiny "add two numbers" experiment I mentioned, I've shared it on GitHub: github.com/ionionascu/llm-to-assembly&lt;/p&gt;

&lt;p&gt;This is not a production-ready project - it's a simple proof of concept. The code focuses only on the happy path and is not designed to be fault-tolerant or cover all possible test cases. Invalid inputs or edge conditions may cause segmentation faults or crashes, and that's expected.The goal was never to build robust software, but to explore whether an LLM could generate functional assembly code directly from plain English.&lt;/p&gt;

&lt;p&gt;TL;DR: This project isn't about "vibe coding" or skipping engineering discipline. It's a small, controlled experiment meant to explore what happens when large language models can reason directly at the hardware level - not a suggestion that we should replace careful software design with AI prompts.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: As I'm not a native English speaker, I used ChatGPT to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@ionionascu/the-return-of-assembly-when-llms-no-longer-need-high-level-languages-79bc43c0822c" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>assembly</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
