<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Simone Vellei - Blog</title><link>https://simonevellei.com/en/</link><description>Blog di Simone Vellei su Go, backend, AI agents, produttività e lavoro da remoto.</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>henomis@gmail.com (Simone Vellei)</managingEditor><webMaster>henomis@gmail.com (Simone Vellei)</webMaster><copyright>© 2025 Simone Vellei. All rights reserved.</copyright><lastBuildDate>Tue, 14 Jul 2026 07:00:00 +0200</lastBuildDate><atom:link href="https://simonevellei.com/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Simulating public opinion with Phero</title><link>https://simonevellei.com/en/simulating-public-opinion-with-phero/</link><pubDate>Tue, 14 Jul 2026 07:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/simulating-public-opinion-with-phero/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/phero011.png" referrerpolicy="no-referrer">
            </div><p>A single LLM answer has a neat, confident shape. Public opinion does not.</p>
<p>When a policy changes, a product launches, or a company announces something unpopular, the interesting part is rarely the first reaction. It is what happens after people see each other reacting. Arguments harden. Coalitions form. A practical objection becomes the sentence everyone repeats. A weak point disappears because nobody picks it up.</p>
<p>That is hard to study with one prompt.</p>]]></description></item><item><title>Phero 1.0.0: the chemical language of AI agents</title><link>https://simonevellei.com/en/phero-1.0.0-the-chemical-language-of-ai-agents/</link><pubDate>Sat, 20 Jun 2026 16:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/phero-1.0.0-the-chemical-language-of-ai-agents/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/phero010.png" referrerpolicy="no-referrer">
            </div><p>After a long string of <code>0.0.x</code> releases, Phero finally reaches <strong>v1.0.0</strong>.</p>
<h2 id="we-made-it-to-100">We made it to 1.0.0</h2>
<p>There&rsquo;s a particular feeling that comes with cutting a <code>1.0.0</code> tag. The <code>0.0.x</code> versions are a workshop: you tear walls down, you move the staircase, you sleep on it and rebuild it the next morning. <code>1.0.0</code> is the moment you finally open the door and say: <em>this is ready, and I stand behind it.</em></p>]]></description></item><item><title>Prototype like anyone, ship like an engineer: ground rules for the AI-first company</title><link>https://simonevellei.com/en/prototype-like-anyone-ship-like-an-engineer/</link><pubDate>Wed, 17 Jun 2026 07:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/prototype-like-anyone-ship-like-an-engineer/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/ai004.png" referrerpolicy="no-referrer">
            </div><p>Now that anyone can build the prototype, the rarest skill is knowing which prototypes deserve to live.</p>
<p>In two previous articles I argued that AI does the easy 20% of software, writing code, and leaves the hard 80% untouched. The <a href="/en/ai-is-the-fifth-technology-to-make-developers-obsolete/" rel="">first</a> traced the pattern back forty years, the <a href="/en/the-80-percent-ai-doesnt-demo/" rel="">second</a> catalogued the 80% in nine parts a demo never shows. Both pieces did the same thing: they pointed a finger. At the PM who builds something in an afternoon and declares engineering obsolete. At the leap from &ldquo;it works in the demo&rdquo; to &ldquo;we don&rsquo;t need them anymore.&rdquo;</p>]]></description></item><item><title>The 80% AI doesn't demo: a field guide to the hard part of software</title><link>https://simonevellei.com/en/the-80-percent-ai-doesnt-demo/</link><pubDate>Tue, 09 Jun 2026 19:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/the-80-percent-ai-doesnt-demo/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/ai003.png" referrerpolicy="no-referrer">
            </div><p>A working demo is a promise the system hasn&rsquo;t agreed to keep yet.</p>
<p>In a <a href="/en/ai-is-the-fifth-technology-to-make-developers-obsolete/" rel="">previous article</a> I argued that writing code is, by Pareto, about 20% of the job, and that the other 80% is the part AI doesn&rsquo;t replace. I listed that 80% as a string of bullet points and moved on. That was a cheat. Those bullet points are the whole argument, and they deserve more than a list.</p>]]></description></item><item><title>I put a visual editor in front of my AI framework. Draw nodes, get NATS agents</title><link>https://simonevellei.com/en/i-put-a-visual-editor-in-front-of-my-ai-framework.-draw-nodes-get-nats-agents/</link><pubDate>Wed, 27 May 2026 07:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/i-put-a-visual-editor-in-front-of-my-ai-framework.-draw-nodes-get-nats-agents/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/anthill-002.png" referrerpolicy="no-referrer">
            </div><p>Every builder reaches a moment when they start to suspect their own work.</p>
<p>Mine came while I was adding yet another example to <a href="https://github.com/henomis/phero" target="_blank" rel="noopener noreffer ">phero</a>, my Go framework for multi-agent AI systems. The example looked clean. The code was elegant. The abstractions composed nicely. But there was a question I kept circling: was any of this actually modular, or had I just written boilerplate that I was too close to see?</p>]]></description></item><item><title>AI is the fifth technology to make developers obsolete</title><link>https://simonevellei.com/en/ai-is-the-fifth-technology-to-make-developers-obsolete/</link><pubDate>Sun, 24 May 2026 20:01:47 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/ai-is-the-fifth-technology-to-make-developers-obsolete/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/ai002.png" referrerpolicy="no-referrer">
            </div><p>Every decade, like clockwork, someone announces that developers are finished. The script never changes. A new technology promises to make the programmer redundant. Someone writes a triumphalist article. Decision-makers start dreaming about better margins.</p>
<h2 id="four-times-before">Four times before</h2>
<h3 id="the-1980s-fourth-generation-languages">The 1980s: fourth-generation languages</h3>
<p>4GLs promised the end of traditional programming. The finance manager would write his own reports. The sales analyst would build her own dashboard. For a while it worked, as long as the systems stayed small. Then the data grew, requirements got messier, performance began to degrade. In the end, developers were called in to rewrite everything in general-purpose languages.</p>]]></description></item><item><title>Phero joins the crew: Go agents on the NATS Agent Protocol</title><link>https://simonevellei.com/en/phero-joins-the-crew-go-agents-on-the-nats-agent-protocol/</link><pubDate>Mon, 11 May 2026 08:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/phero-joins-the-crew-go-agents-on-the-nats-agent-protocol/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/phero009.png" referrerpolicy="no-referrer">
            </div><p><a href="https://www.synadia.com/blog/heterogeneous-agents-one-fabric" target="_blank" rel="noopener noreffer ">Synadia published the NATS Agent Protocol</a> last week and the core idea is blunt: AI agents are already deployed everywhere (IDE, CI, support queue, factory floor) and none of them were built to talk to each other. The model isn&rsquo;t the bottleneck anymore. Coordinating the fleet you&rsquo;ve already deployed is.</p>
<p>Their answer is a wire spec, not a framework. Two pages of contract on top of NATS micro services. An agent is a NATS service named <code>agents</code> with three endpoints: <code>prompt</code>, <code>status</code>, and <code>hb</code>. Discovery is one round-trip: <code>nats req '$SRV.INFO.agents'</code>. Multi-tenancy, cloud-to-edge, audit trail: all inherited from NATS, none of it written twice.</p>]]></description></item><item><title>The parallel research pattern: fan-out / fan-in for multi-agent AI</title><link>https://simonevellei.com/en/the-parallel-research-pattern-fan-out-fan-in-for-multi-agent-ai/</link><pubDate>Wed, 06 May 2026 07:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/the-parallel-research-pattern-fan-out-fan-in-for-multi-agent-ai/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/phero008.png" referrerpolicy="no-referrer">
            </div><p>Most multi-agent examples run agents sequentially. One agent produces output, the next consumes it, and so on down the chain. This is easy to reason about but leaves performance on the table. If you need multiple independent perspectives on the same topic, there is no reason to wait for the first agent before starting the second.</p>
<p>The fan-out / fan-in pattern fixes this. Multiple worker agents run concurrently, each exploring the same topic from a different angle. When all workers finish, a synthesizer merges the findings into a single coherent report. The concurrency is handled by Go&rsquo;s native primitives—goroutines and <code>sync.WaitGroup</code>—with no new framework machinery required.</p>]]></description></item><item><title>The supervisor-blackboard pattern: coordinating multi-agent AI workflows</title><link>https://simonevellei.com/en/the-supervisor-blackboard-pattern-coordinating-multi-agent-ai-workflows/</link><pubDate>Thu, 30 Apr 2026 07:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/the-supervisor-blackboard-pattern-coordinating-multi-agent-ai-workflows/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/phero007.png" referrerpolicy="no-referrer">
            </div><p>Most multi-agent examples keep agents isolated. Each one gets a prompt, produces output, and hands it to the next step. That works when the data flows in one direction. But some workflows need agents to build on each other&rsquo;s work incrementally, reading and writing to a shared context. This is the blackboard pattern.</p>
<p>The idea comes from AI research in the 1970s. Multiple knowledge sources (agents) read from and write to a shared data structure (the blackboard). A control component (the supervisor) decides which agent to activate next. Each agent contributes partial results that other agents can use. The blackboard accumulates context over time.</p>]]></description></item><item><title>The evaluator-optimizer pattern in Go: iterate until good enough</title><link>https://simonevellei.com/en/the-evaluator-optimizer-pattern-in-go-iterate-until-good-enough/</link><pubDate>Mon, 27 Apr 2026 10:00:00 +0200</pubDate><author>Simone Vellei</author><guid>https://simonevellei.com/en/the-evaluator-optimizer-pattern-in-go-iterate-until-good-enough/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/phero006.png" referrerpolicy="no-referrer">
            </div><p>Ask an LLM to write something once and you get a first draft. Ask it to revise based on specific feedback and the second draft is measurably better. This isn&rsquo;t surprising. It&rsquo;s how human writing works too. What&rsquo;s interesting is that you can automate both sides: one agent writes, another evaluates, and a Go loop connects them.</p>
<p>This is the evaluator-optimizer pattern, described in Anthropic&rsquo;s <a href="https://www.anthropic.com/engineering/building-effective-agents" target="_blank" rel="noopener noreffer ">Building effective agents</a> guide. A generator produces output. An evaluator scores it and gives feedback. If the score is below a threshold, the generator revises. The loop continues until the output is good enough or you run out of attempts.</p>]]></description></item></channel></rss>