<?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/it/blog/</link><description>Recent content in Blog on Ivens Signorini</description><generator>Hugo</generator><language>it-IT</language><lastBuildDate>Tue, 06 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://signorini.cloud/it/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>L'evoluzione di Java: dalla 1.0 alla 27, e l'header degli oggetti che si è ristretto</title><link>https://signorini.cloud/it/blog/java-evolution-compact-object-headers/</link><pubDate>Tue, 06 Oct 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/it/blog/java-evolution-compact-object-headers/</guid><description>&lt;p&gt;Java è arrivato alla versione 27 nel settembre 2026, trent&amp;rsquo;anni dopo il JDK 1.0, e uno dei cambiamenti più rilevanti di questa release non compare in nessuna riga di codice: ogni oggetto nella JVM ha ora, per impostazione predefinita, un header di 8 byte invece di 12.&lt;/p&gt;&#10;&lt;p&gt;Qui si incrociano due storie. Una è l&amp;rsquo;evoluzione del linguaggio e della piattaforma, release dopo release. L&amp;rsquo;altra è l&amp;rsquo;header degli oggetti: che cos&amp;rsquo;è, perché costava così tanto e come Project Lilliput è riuscito a ridurlo senza rompere la JVM. Ridurre l&amp;rsquo;header è stato possibile solo perché, nel corso di varie release, la piattaforma ha rimosso o riscritto vecchi componenti che occupavano quei bit.&lt;/p&gt;</description></item><item><title>MCP Server: il protocollo che ha dato le mani all'AI</title><link>https://signorini.cloud/it/blog/mcp-servers/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/it/blog/mcp-servers/</guid><description>&lt;p&gt;I modelli AI sono straordinari nel ragionare. Sono pessimi nell&amp;rsquo;agire — o almeno lo erano, finché non hanno avuto un modo standardizzato per estendersi verso l&amp;rsquo;esterno. MCP è quel modo.&lt;/p&gt;&#10;&lt;h2 id="il-problema-prima-di-mcp"&gt;Il problema prima di MCP&lt;/h2&gt;&#10;&lt;p&gt;Nel 2023, se volevi che un LLM leggesse un file, interrogasse un database o chiamasse un&amp;rsquo;API, scrivevi codice glue personalizzato. Ogni team reinventava la stessa ruota: uno strato sottile che serializzava il contesto, lo passava al modello, analizzava le chiamate agli strumenti dalla risposta, le eseguiva e reindirizzava i risultati. Non esisteva uno standard. Ogni integrazione era un caso isolato.&lt;/p&gt;</description></item><item><title>Quando il web non basta: il protocollo bridge di Wails</title><link>https://signorini.cloud/it/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/it/blog/when-the-web-isnt-enough-the-wails-bridge-protocol/</guid><description>&lt;h2 id="il-web-ha-vinto--tranne-dove-non-lha-fatto"&gt;Il web ha vinto — tranne dove non l&amp;rsquo;ha fatto&lt;/h2&gt;&#10;&lt;p&gt;Per la maggior parte dei software, il browser è la risposta giusta. Un&amp;rsquo;app web non installa nulla, si aggiorna da sola, gira su ogni sistema operativo e ti permette di costruire l&amp;rsquo;interfaccia con l&amp;rsquo;ecosistema front-end più ricco e meglio attrezzato del mondo. Se &lt;em&gt;puoi&lt;/em&gt; consegnare un&amp;rsquo;app web, di solito dovresti farlo.&lt;/p&gt;&#10;&lt;p&gt;Ma il browser è una sandbox, e quella sandbox ha dei muri. Esistono per buone ragioni — una pagina web casuale non dovrebbe poter leggere il flusso di loopback grezzo del microfono, aprire file arbitrari, parlare con un dispositivo USB, o eseguire un ciclo numerico stretto che blocca un core della CPU. Le stesse restrizioni che rendono il web sicuro da navigare lo rendono lo strumento sbagliato per un&amp;rsquo;intera classe di programmi.&lt;/p&gt;</description></item><item><title>Cosa i sistemi distribuiti mi hanno insegnato sui compromessi</title><link>https://signorini.cloud/it/blog/on-distributed-systems/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/it/blog/on-distributed-systems/</guid><description>&lt;p&gt;Ogni sistema distribuito è una negoziazione. Non si costruisce una macchina che funziona sempre — si decide, deliberatamente, come fallisce.&lt;/p&gt;&#10;&lt;h2 id="il-problema"&gt;Il problema&lt;/h2&gt;&#10;&lt;p&gt;Gli ingegneri che provengono da contesti single-node tendono a trattare la distribuzione come un dettaglio di deploy. Si scrive il servizio, lo si containerizza, lo si scala orizzontalmente, e si assume che il comportamento rimanga lo stesso. Non è così. Le chiamate di rete falliscono silenziosamente. Gli orologi deviano. I nodi si arrestano a metà scrittura. Nel momento in cui si hanno più di una macchina, si ha un sistema che può essere in disaccordo con se stesso — e serve una posizione su cosa fare quando accade.&lt;/p&gt;</description></item><item><title>Le interfacce di Go: piccolo è bello</title><link>https://signorini.cloud/it/blog/go-interfaces/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://signorini.cloud/it/blog/go-interfaces/</guid><description>&lt;p&gt;Se arrivi da Java o C#, l&amp;rsquo;istinto è quello di progettare interfacce grandi e far implementare i tipi su di esse. Go inverte completamente questa logica — e questa inversione è il punto centrale.&lt;/p&gt;&#10;&lt;h2 id="il-problema"&gt;Il problema&lt;/h2&gt;&#10;&lt;p&gt;La maggior parte dei linguaggi tratta le interfacce come contratti dichiarati in anticipo. Si definisce &lt;code&gt;interface IUserRepository&lt;/code&gt; con dodici metodi, e ogni tipo che vuole essere un repository deve implementarli esplicitamente tutti e dodici. L&amp;rsquo;accoppiamento è incorporato al momento della definizione, non al momento dell&amp;rsquo;uso.&lt;/p&gt;</description></item></channel></rss>