<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Ivens Signorini</title><link>https://signorini.cloud/pt/blog/</link><description>Recent content in Blog on Ivens Signorini</description><generator>Hugo</generator><language>pt-PT</language><lastBuildDate>Wed, 17 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://signorini.cloud/pt/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>MCP Servers: o protocolo que deu mãos à IA</title><link>https://signorini.cloud/pt/blog/mcp-servers/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/pt/blog/mcp-servers/</guid><description>&lt;p&gt;Modelos de IA são extraordinários no raciocínio. São péssimos na ação — ou pelo menos eram, até terem uma forma padronizada de se estender para o exterior. MCP é essa forma.&lt;/p&gt;&#10;&lt;h2 id="o-problema-antes-do-mcp"&gt;O problema antes do MCP&lt;/h2&gt;&#10;&lt;p&gt;Em 2023, se você queria que um LLM lesse um arquivo, consultasse um banco de dados ou chamasse uma API, escrevia código glue personalizado. Cada equipe reinventava a mesma roda: uma camada fina que serializava o contexto, passava ao modelo, parseava as chamadas de ferramentas da resposta, as executava e devolvia os resultados. Não havia padrão. Cada integração era um caso isolado.&lt;/p&gt;</description></item><item><title>Quando a web não é suficiente: o protocolo bridge do Wails</title><link>https://signorini.cloud/pt/blog/when-the-web-isnt-enough-the-wails-bridge-protocol/</link><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/pt/blog/when-the-web-isnt-enough-the-wails-bridge-protocol/</guid><description>&lt;h2 id="a-web-venceu--exceto-onde-não-venceu"&gt;A web venceu — exceto onde não venceu&lt;/h2&gt;&#10;&lt;p&gt;Para a maioria dos softwares, o navegador é a resposta certa. Um app web não instala nada, se atualiza sozinho, roda em todos os sistemas operacionais e permite construir a interface com o ecossistema front-end mais rico e melhor equipado do mundo. Se &lt;em&gt;você puder&lt;/em&gt; lançar um app web, geralmente deveria fazê-lo.&lt;/p&gt;&#10;&lt;p&gt;Mas o navegador é uma sandbox, e essa sandbox tem muros. Eles existem por boas razões — uma página web aleatória não deveria poder ler o fluxo de loopback bruto do seu microfone, abrir arquivos arbitrários, falar com um dispositivo USB, ou executar um loop numérico apertado que trava um core de CPU. As mesmas restrições que tornam a web segura para navegar a tornam a ferramenta errada para toda uma classe de programas.&lt;/p&gt;</description></item><item><title>O que os sistemas distribuídos me ensinaram sobre trade-offs</title><link>https://signorini.cloud/pt/blog/on-distributed-systems/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/pt/blog/on-distributed-systems/</guid><description>&lt;p&gt;Todo sistema distribuído é uma negociação. Você não está construindo uma máquina que sempre funciona — você está decidindo, deliberadamente, como ela falha.&lt;/p&gt;&#10;&lt;h2 id="o-problema"&gt;O problema&lt;/h2&gt;&#10;&lt;p&gt;Engenheiros vindos de ambientes de nó único tendem a tratar a distribuição como um detalhe de deployment. Você escreve o serviço, containeriza, escala horizontalmente e assume que o comportamento permanece o mesmo. Não permanece. Chamadas de rede falham silenciosamente. Relógios derivam. Nós travam no meio de uma escrita. No momento em que você tem mais de uma máquina, você tem um sistema que pode discordar consigo mesmo — e você precisa de uma posição sobre o que fazer quando isso acontece.&lt;/p&gt;</description></item><item><title>Interfaces em Go: o pequeno é belo</title><link>https://signorini.cloud/pt/blog/go-interfaces/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/pt/blog/go-interfaces/</guid><description>&lt;p&gt;Se você vem de Java ou C#, o instinto é projetar interfaces grandes e fazer os tipos implementá-las. Go inverte isso completamente — e essa inversão é o ponto central.&lt;/p&gt;&#10;&lt;h2 id="o-problema"&gt;O problema&lt;/h2&gt;&#10;&lt;p&gt;A maioria das linguagens trata interfaces como contratos declarados de antemão. Você define &lt;code&gt;interface IUserRepository&lt;/code&gt; com doze métodos, e cada tipo que queira ser um repositório deve implementar todos explicitamente. O acoplamento está incorporado no momento da definição, não no momento do uso.&lt;/p&gt;</description></item></channel></rss>