<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Antigravity on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/antigravity/</link>
    <description>Recent content in Antigravity on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Mon, 16 Mar 2026 18:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/antigravity/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Antigravity: l&#39;LLM lo fa meglio</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2026/03/16/antigravity-l-llm-lo-fa-meglio/</link>
      <pubDate>Mon, 16 Mar 2026 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2026/03/16/antigravity-l-llm-lo-fa-meglio/</guid>
      <description>&lt;p&gt;Nelle ultime settimane ho scritto delle mie esperienze con Antigravity, o meglio con gli &lt;em&gt;agenti&lt;/em&gt; (più o meno) &lt;em&gt;intelligenti&lt;/em&gt; integrati in questo editor. I risultati sono stati contrastanti: a volte &lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/&#34;&gt;gli agenti si sono dimostrati molto efficaci&lt;/a&gt;, alleviando con precisione alcuni compiti complessi o ripetitivi, in altri casi &lt;a href=&#34;https://melabit.com/it/2026/02/16/antigravity-dalla-sorpresa-al-dubbio/&#34;&gt;non hanno combinato niente di buono&lt;/a&gt; facendo solo perdere una montagna di tempo.&lt;/p&gt;&#xA;&lt;h4 id=&#34;programmare-male-con-lllm&#34;&gt;Programmare male con l&amp;rsquo;LLM&lt;/h4&gt;&#xA;&lt;p&gt;Fra tutti gli impieghi più o meno utili degli LLM, uno dei più controversi è l&amp;rsquo;idea che chiunque possa usare un LLM per programmare, anche quando di programmazione non se ne sa una cippa. È il cosidetto &lt;em&gt;vibe coding&lt;/em&gt;, un concetto che si può &lt;a href=&#34;https://x.com/karpathy/status/1886192184808149383&#34;&gt;riassumere così&lt;/a&gt;: &amp;ldquo;vedo cose, dico cose, copio e incollo cose, e nella maggior parte dei casi funziona&amp;rdquo;. Non è una citazione da &lt;a href=&#34;https://www.youtube.com/watch?v=-w9EBTB8a3Y&#34;&gt;Nanni Moretti&lt;/a&gt;, lo dice Andrej Karpathy, uno dei fondatori di OpenAI.&lt;/p&gt;&#xA;&lt;p&gt;Ora, mettendo da parte le tante questioni relative alla sicurezza, alla manutenibilità di codice prodotto senza sapere bene cosa fa, alla &lt;a href=&#34;https://taylorandfrancis.com/knowledge/Engineering_and_technology/Engineering_support_and_special_topics/Regression_to_the_mean/&#34;&gt;deriva verso la media&lt;/a&gt; che implica che la qualità del codice prodotto dall&amp;rsquo;IA tenderà inevitabilmente a crollare, basta sperimentare un po&amp;rsquo; in prima persona, anche con progetti semplici, per accorgersi che l&amp;rsquo;idea del &lt;em&gt;coding per tutti&lt;/em&gt; non funziona, e che se vuoi ottenere qualcosa di buono dall&amp;rsquo;IA devi sapere bene cosa vuoi e come lo vuoi.&lt;/p&gt;&#xA;&lt;p&gt;Ci ho provato io stesso a fare &lt;em&gt;vibe coding&lt;/em&gt;: ho chiesto a Gemini di &lt;a href=&#34;https://melabit.com/it/2026/03/04/antigravity-un-driver-scritto-dall-ia/&#34;&gt;scrivere un driver per una videocamera Arducam&lt;/a&gt;, spiegandogli solo le cose indispensabili a aspettando che facesse tutto da solo.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Questo approccio però non ha funzionato. Ci sono volute ore ed ore di lavoro, di errori, di risposte inconcludenti, di correzioni e di consigli per raggiungere un risultato accettabile.&lt;/p&gt;&#xA;&lt;p&gt;E questo solo perché a un certo punto ho buttato alle ortiche l&amp;rsquo;idea di far fare tutto a Gemini e gli ho dato dei consigli su come procedere. Senza quelli sarebbe stato solo un sacco di tempo buttato via inutilmente.&lt;/p&gt;&#xA;&lt;div style = &#34;border-style: solid; border-width: 0px 0px 0px 12px; border-color: #03a87c; background-color: #defef6; padding: 1em; color:black; font-size:100%;&#34;&gt;&#xA;&lt;p&gt;Anche &lt;a href=&#34;https://emeralit-muloblog.statichost.page/&#34;&gt;Mimmo&lt;/a&gt; ha provato, in modo del tutto indipendente da me, a far scrivere a &lt;a href=&#34;https://lumo.proton.me&#34;&gt;Lumo&lt;/a&gt; un programma in Micropython per gestire la mia Arducam Mini 5MP Plus con il Pico. E anche Lumo, che è senza dubbio uno dei migliori chatbot in circolazione, non ce l&amp;rsquo;ha fatta da solo.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/br&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/Gemini_Generated_Image_jb08gsjb08gsjb08.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;programmare-meglio-con-lo-stesso-llm&#34;&gt;Programmare meglio con lo stesso LLM&lt;/h4&gt;&#xA;&lt;p&gt;Tutto questo però non significa che un LLM non possa essere prezioso quando si programma, basta solo usarlo come si deve. Bisogna spiegargli per filo e per segno cosa deve fare, mettergli a disposizione tutto il materiale che gli serve per lavorare, e piazzargli dei paletti entro cui deve muoversi.&lt;/p&gt;&#xA;&lt;p&gt;In poche parole, bisogna trattarlo come un tesista o una stagista, con poca esperienza ma tanta voglia di imparare.&lt;/p&gt;&#xA;&lt;p&gt;Sono bastati infatti due prompt scritti con criterio, il primo che definiva la struttura delle directory del progetto e istruiva l&amp;rsquo;agente ad usare fin dall&amp;rsquo;inizio &lt;code&gt;git&lt;/code&gt; per il controllo di versione del codice e &lt;code&gt;uv&lt;/code&gt; per installare i pacchetti Python che gli sarebbero potuti servire,&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;    &#xA;    &lt;p&gt;Start a new project and name it &lt;code&gt;project13-pico-camera5mp-reprise&lt;/code&gt;.&lt;/p&gt;&#xA;    &lt;p&gt;Read the &lt;code&gt;AGENTS.md&lt;/code&gt; file that defines your basic behaviour.&lt;/p&gt;&#xA;    &lt;p&gt;Create a new directory with this name and initialize an empty &lt;code&gt;git&lt;/code&gt; repository using &lt;code&gt;git init&lt;/code&gt;&#xA;    Use &lt;code&gt;uv&lt;/code&gt; for managing Python packages.&#xA;    All the code must stay in the &lt;code&gt;code&lt;/code&gt; directory, with no subdirectories within it.&#xA;    This project does not need a &lt;code&gt;data&lt;/code&gt; directory and the &lt;code&gt;output&lt;/code&gt; directory must be renamed as &lt;code&gt;images&lt;/code&gt;.&lt;/p&gt;&#xA;    &#xA;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;e il secondo che conteneva tutto quello che mi è venuto in mente per aiutarlo a lavorare,&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;    &#xA;    &lt;p&gt;I have a Rasperry Pi Pico 2W connected to a Arducam 5MP Plus OV5642 Mini Module Camera Shield (&lt;a href=&#34;https://www.arducam.com/arducam-5mp-plus-spi-cam-arduino-ov5642.html%29&#34;&gt;https://www.arducam.com/arducam-5mp-plus-spi-cam-arduino-ov5642.html)&lt;/a&gt;.&lt;/p&gt;&#xA;    &lt;p&gt;I have connected the camera to the Pico using the standard layout found in the documentation:&lt;/p&gt;&#xA;    &lt;table&gt;&#xA;      &lt;thead&gt;&#xA;          &lt;tr&gt;&#xA;              &lt;th&gt;Camera&lt;/th&gt;&#xA;              &lt;th&gt;CS&lt;/th&gt;&#xA;              &lt;th&gt;MOSI&lt;/th&gt;&#xA;              &lt;th&gt;MISO&lt;/th&gt;&#xA;              &lt;th&gt;SCK&lt;/th&gt;&#xA;              &lt;th&gt;GND&lt;/th&gt;&#xA;              &lt;th&gt;VCC&lt;/th&gt;&#xA;              &lt;th&gt;SDA&lt;/th&gt;&#xA;              &lt;th&gt;SCL&lt;/th&gt;&#xA;          &lt;/tr&gt;&#xA;      &lt;/thead&gt;&#xA;      &lt;tbody&gt;&#xA;          &lt;tr&gt;&#xA;              &lt;td&gt;Pico&lt;/td&gt;&#xA;              &lt;td&gt;GP5&lt;/td&gt;&#xA;              &lt;td&gt;GP3&lt;/td&gt;&#xA;              &lt;td&gt;GP4&lt;/td&gt;&#xA;              &lt;td&gt;GP2&lt;/td&gt;&#xA;              &lt;td&gt;GND&lt;/td&gt;&#xA;              &lt;td&gt;3V3&lt;/td&gt;&#xA;              &lt;td&gt;GP8&lt;/td&gt;&#xA;              &lt;td&gt;GP9&lt;/td&gt;&#xA;          &lt;/tr&gt;&#xA;      &lt;/tbody&gt;&#xA;    &lt;/table&gt;&#xA;    &lt;p&gt;The main documentation for the camera can be found at these links:&lt;/p&gt;&#xA;    &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Introduction/&#34;&gt;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Introduction/&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Hardware/Arducam-Shield-Mini-5MP-Plus/&#34;&gt;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Hardware/Arducam-Shield-Mini-5MP-Plus/&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Software/Quick-Start-Guide/&#34;&gt;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Software/Quick-Start-Guide/&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Pico/Camera-Module/SPI-Camera/&#34;&gt;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Pico/Camera-Module/SPI-Camera/&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;https://www.uctronics.com/download/Image_Sensor/OV5642_DS.pdf&#34;&gt;https://www.uctronics.com/download/Image_Sensor/OV5642_DS.pdf&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;https://blog.arducam.com/downloads/shields/ArduCAM_Camera_Shield_Software_Application_Note.pdf&#34;&gt;https://blog.arducam.com/downloads/shields/ArduCAM_Camera_Shield_Software_Application_Note.pdf&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;https://www.uctronics.com/download/Amazon/B0067-B0068-Pico.pdf&#34;&gt;https://www.uctronics.com/download/Amazon/B0067-B0068-Pico.pdf&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;/ul&gt;&#xA;    &lt;p&gt;The code to drive this camera with the Pico is written in C (i.e., for Arduino) and CircuitPython, and can be found here: &lt;a href=&#34;https://github.com/ArduCAM/PICO_SPI_CAM&#34;&gt;https://github.com/ArduCAM/PICO_SPI_CAM&lt;/a&gt;. You can download all the files you need from this repository.&#xA;    In particular, the files for CircuitPython are in the &lt;code&gt;Python&lt;/code&gt; directory:&lt;/p&gt;&#xA;    &lt;ul&gt;&#xA;    &lt;li&gt;&lt;code&gt;Arducam.py&lt;/code&gt;, which contains the functions to drive the camera,&lt;/li&gt;&#xA;    &lt;li&gt;&lt;code&gt;OV5642_reg.py&lt;/code&gt; which, as far as I have understood, defines the resolutions  allowed  when taking pictures, and&lt;/li&gt;&#xA;    &lt;li&gt;&lt;code&gt;boot.py&lt;/code&gt; , but I don&amp;rsquo;t know what it does.&#xA;    In the same directory there is also the script &lt;code&gt;ArduCAM_Mini_5MP_Plus_VideoStreaming.py&lt;/code&gt; which sends the video captured by the camera to a Windows application and that is of no use here.&lt;/li&gt;&#xA;    &lt;/ul&gt;&#xA;    &lt;p&gt;Please write a basic CircuitPython script that uses the functions defined in &lt;code&gt;Arducam.py&lt;/code&gt; to test that the camera works and can take photos.&lt;/p&gt;&#xA;    &#xA;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;per permettere a &lt;code&gt;Gemini 3 Flash&lt;/code&gt; di generare rapidamente uno script in CircuitPython che gira direttamente sul Pico e che fa tutto quello che gli è stato chiesto.&lt;/p&gt;&#xA;&lt;p&gt;In verità, la primissima versione dello script non funzionava, ma è bastato a Gemini modificare una sola riga del driver &lt;code&gt;Arducam.py&lt;/code&gt; fornito dal produttore per mettere tutto a posto (ha tolto uno zero al valore della frequenza).&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/one-line-diff.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/one-line-diff.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&#xA;&amp;ndash; &lt;em&gt;La linea evidenziata in azzurro indica l&amp;rsquo;unica modifica effettuata da Gemini al file &lt;code&gt;Arducam.py&lt;/code&gt;; a sinistra il file originale, a destra quello modificato da Gemini.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tutti gli altri file forniti dal produttore sono rimasti intatti.&lt;/p&gt;&#xA;&lt;p&gt;Alla prova dei fatti, il driver del produttore funzionava benissimo con il Pico e Gemini si è limitato ad imparare ad usarlo per scrivere lo script che cattura l&amp;rsquo;immagine direttamente dal microcontroller (una cosa che con un po&amp;rsquo; di pazienza avrei potuto fare anch&amp;rsquo;io).&lt;/p&gt;&#xA;&lt;h4 id=&#34;guidare-lllm-o-lasciarlo-fare-da-solo&#34;&gt;Guidare l&amp;rsquo;LLM o lasciarlo fare da solo?&lt;/h4&gt;&#xA;&lt;p&gt;La differenza rispetto al &lt;em&gt;vibe coding&lt;/em&gt; della &lt;a href=&#34;https://melabit.com/it/2026/03/04/antigravity-un-driver-scritto-dall-ia/&#34;&gt;volta scorsa&lt;/a&gt; è abissale.&lt;/p&gt;&#xA;&lt;p&gt;In quel caso Gemini aveva lavorato furiosamente per ore, combinando dei tali casini da costringermi a riavviare per ben due volte il Mac. E nel frattempo si era convinto (e mi aveva convinto) che il driver &lt;code&gt;Arducam.py&lt;/code&gt; fosse incompatibile con Il Pico e l&amp;rsquo;aveva riscritto da zero, buttando via una libreria essenziale per interloquire con la videocamera (quella indicata dalla freccia rossa),&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/diff-libraries.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/diff-libraries.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&#xA;&amp;ndash; &lt;em&gt;Modifiche alle prime righe del file &lt;code&gt;Arducam.py&lt;/code&gt;; a sinistra il file originale, a destra come appare lo stesso file dopo le modifiche di Gemini. La freccia indica una libreria importante che viene rimossa di peso da Gemini.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;e togliendo senza nessun motivo, e senza nemmeno un guadagno reale in termini di efficienza o di funzionalità (anzi!), la maggior parte delle funzioni definite nello stesso file (si noti nell&amp;rsquo;immagine qui sotto la differenza nella lunghezza del codice originale, a sinistra, rispetto a quello modificato, a destra).&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/diff-file-length.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/diff-file-length.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&#xA;&amp;ndash; &lt;em&gt;Modifiche al file &lt;code&gt;Arducam.py&lt;/code&gt;. I rettangoli rossi mettono in evidenza la differenza fra il numero di righe del codice originale (a sinistra) e di quello modificato da Gemini (a destra).&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;E non contento di tutto ciò, aveva pure stravolto il file &lt;code&gt;OV5642_reg.py&lt;/code&gt; contenente i dati di configurazione della videocamera, adducendo dei presunti problemi di memoria. Problemi che evidentemente non esistevano, visto che in questo secondo esperimento tutto è filato liscio usando il file originale del produttore.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/diff-registers.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-16-antigravity-l-llm-lo-fa-meglio/diff-registers.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&#xA;&amp;ndash; &lt;em&gt;Modifiche al file &lt;code&gt;OV5642_reg.py&lt;/code&gt;, contenente i dati di configurazione della videocamera. La configurazione originale (a sinistra) è stata totalmente stravolta da Gemini (a destra).&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;e-arduino&#34;&gt;E Arduino?&lt;/h4&gt;&#xA;&lt;p&gt;Arrivato a questo punto era inevitabile che chiedessi a Gemini di generare anche il driver per Arduino, usando le stesse informazioni che gli avevo già fornito per CircuitPython.&lt;/p&gt;&#xA;&lt;p&gt;Questa volta Gemini ha penato di più, ma soprattutto perché gli avevo imposto di effettuare solo delle modifiche minime alle librerie originali Arducam. Un vincolo che questa volta era impossibile da soddisfare, perché queste librerie non supportano nativamente il Raspberry Pi Pico.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;answer&#34; open&gt;&#xA;    &lt;summary class=&#34;answer&#34;&gt;&#xA;        Risposta&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;answer&#34;&gt;&#xA;        &#xA;    &#xA;    &lt;strong&gt;Researching Arducam Library Compatibility&lt;/strong&gt;&#xA;    I&amp;rsquo;ve thoroughly inspected both the original &lt;code&gt;ArduCAM&lt;/code&gt; library and the &lt;code&gt;Arducam_mini&lt;/code&gt; library. Neither version contains native support for the RP2040/RP2350 (Pico) architecture. Specifically, both libraries are missing the necessary definitions for &lt;code&gt;regtype&lt;/code&gt;, &lt;code&gt;regsize&lt;/code&gt;, &lt;code&gt;cbi&lt;/code&gt;, and &lt;code&gt;sbi&lt;/code&gt; for this platform, which is the root cause of the compilation errors.&#xA;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Una volta allentato questo vincolo le cose sono filate lisce e in poco tempo anche il driver modificato &lt;em&gt;ad hoc&lt;/em&gt; per il Pico ed il relativo programma di acquisizione delle immagini erano pronti.&lt;/p&gt;&#xA;&lt;h4 id=&#34;gratis-o-a-pagamento&#34;&gt;Gratis o a pagamento?&lt;/h4&gt;&#xA;&lt;p&gt;C&amp;rsquo;è chi sostiene che &lt;a href=&#34;https://www.oneusefulthing.org/p/a-guide-to-which-ai-to-use-in-the&#34;&gt;i modelli a pagamento sono molto meglio di quelli gratuiti&lt;/a&gt;. Di conseguenza, i miei problemi con il &lt;em&gt;vibe coding&lt;/em&gt; sarebbero scomparsi se avessi pagato per usare Gemini o Claude.&lt;/p&gt;&#xA;&lt;p&gt;Non è proprio così. Nel corso delle prove ho usato prevalentemente la versione gratuita di Gemini, proprio per verificare cosa succedeva all&amp;rsquo;utente non professionale che voleva provare a giocare un po&amp;rsquo; con questi strumenti. Ma quando finivano i token sono passato alla versione a pagamento di Gemini fornita dall&amp;rsquo;università, e non ho mai notato differenze significative. Su Claude non posso dire niente, perché dover pagare 200 dollari al mese per usarlo in modo serio non ha senso per chi, come il sottoscritto, non è un programmatore professionista.&lt;/p&gt;&#xA;&lt;p&gt;Ho notato però che Claude Opus e Claude Sonnet si sono sempre dimostrati molto più bravi di Gemini a risolvere i problemi che si presentavano nel corso dello sviluppo del codice. Ma poiché li ho utilizzati sempre a lavoro inoltrato, potrebbero solo essere stati facilitati da quello che Gemini aveva già fatto.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;È inutile dire che sia questo esperimento che &lt;a href=&#34;https://melabit.com/it/2026/03/04/antigravity-un-driver-scritto-dall-ia/&#34;&gt;quello precedente&lt;/a&gt; non hanno nulla di &lt;em&gt;scientifico&lt;/em&gt;. Per essere tale, dovrei almeno utilizzare tipi diversi di microcontroller e di moduli collegati, stabilire un set di prompt ben definito e misurare in qualche modo come cambia la risposta dell&amp;rsquo;agente di turno al variare delle condizioni sperimentali.&lt;/p&gt;&#xA;&lt;p&gt;Ma nonostante questo, l&amp;rsquo;esperimento ha un pregio: è &lt;em&gt;riproducibile&lt;/em&gt;. Chiunque, con una spesa ridotta, può provare a ripeterlo usando lo stesso hardware e gli stessi prompt, in modo do verificare di persona se quello che ho trovato io è corretto o no.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Una cosa che gli apostoli del &lt;em&gt;vibe coding&lt;/em&gt; da decine di milioni di letture evitano sempre accuratamente di proporre. I loro articoli sono pieni di certezze e di previsioni roboanti, ma mancano sempre di fornire il sia pur minimo appiglio che permetta di verificare i loro &lt;em&gt;claim&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Nessuno, oggi, può ancora negare che gli LLM possano essere di grande aiuto durante la programmazione, ma è difficile credere che riescano davvero a farlo senza nessun intervento umano. E questo almeno finché gli apostoli di cui sopra non si degneranno di fornirci dati chiari e ripetibili a supporto delle loro affermazioni.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Pur sapendo qualcosa di programmazione, non avevo la minima idea di come si potesse sviluppare un driver e non avevo nessuna voglia di passare dei giorni a studiare come si fa.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Tecnicamente questo file è una libreria di funzioni, ma i microcontroller non hanno un sistema operativo e quindi queste funzioni accedono direttamente all&amp;rsquo;hardware, proprio come fanno i &lt;em&gt;driver&lt;/em&gt; che controllano i componenti di un computer. Di conseguenza, in questo caso i termini &lt;em&gt;libreria&lt;/em&gt; e &lt;em&gt;driver&lt;/em&gt; sono interscambiabili.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Dico &lt;em&gt;spesa ridotta&lt;/em&gt; ma ormai la penuria di componenti elettronici ha fatto impazzire i prezzi del Pico e ancor di più della Arducam Mini 5MP Plus. Quest&amp;rsquo;ultima, dai 40 euro di pochi mesi fa ora si trova su Amazon o AliExpress a più del triplo. Per fortuna alcuni rivenditori mantengono (almeno per ora) dei prezzi più onesti.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Effetto Dory</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2026/03/09/effetto-dory/</link>
      <pubDate>Mon, 09 Mar 2026 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2026/03/09/effetto-dory/</guid>
      <description>&lt;p&gt;Lo so che gli LLM hanno &lt;a href=&#34;https://melabit.com/it/2026/02/16/antigravity-dalla-sorpresa-al-dubbio/&#34;&gt;poca memoria&lt;/a&gt;, ma non avrei mai immaginato di doverne subire così in fretta le conseguenze.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-09-effetto-dory/Gemini_Generated_Image_734ww1734ww1734w.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nota per il lettore.&lt;/strong&gt; Questo articolo è un complemento di quello precedente, &lt;a href=&#34;https://melabit.com/it/2026/03/04/antigravity-un-driver-scritto-dall-ia/&#34;&gt;Antigravity: un driver scritto dall&amp;rsquo;IA&lt;/a&gt; e andrebbe letto dopo il primo. Ma ecco un breve riassunto per i più pigri.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Non sapendo come fare a scrivere un driver per una &lt;a href=&#34;https://en.wikipedia.org/wiki/Serial_Peripheral_Interface&#34;&gt;videocamera SPI&lt;/a&gt; collegata ad un Raspberry Pi Pico, ho chiesto aiuto a Gemini 3 Flash, lavorando interamente dentro Antigravity. Dopo parecchie ore di lavoro, l’agente è riuscito a scrivere un programma funzionante in Arduino. A questo punto ho fatto un errore fatale, chiedendogli ancora di più, ma senza prendere delle precauzioni.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;premessa&#34;&gt;Premessa&lt;/h4&gt;&#xA;&lt;p&gt;Il &lt;a href=&#34;https://melabit.com/it/2026/03/04/antigravity-un-driver-scritto-dall-ia/#lia-al-lavoro&#34;&gt;codice funzionante&lt;/a&gt; generato con tanta fatica da &lt;code&gt;Gemini 3 Flash&lt;/code&gt; prevedeva che il Pico facesse da interfaccia fra il mio Mac Mini e la videocamera SPI.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Sul Mac, uno script in Python comandava la cattura di una immagine, mentre l&amp;rsquo;acquisizione vera e propria veniva eseguita dal Pico tramite un programma per &lt;a href=&#34;https://en.wikipedia.org/wiki/Arduino&#34;&gt;Arduino&lt;/a&gt; (uno &lt;em&gt;sketch&lt;/em&gt;, nel gergo della piattaforma), che è fondamentalmente codice C/C++ adattato all&amp;rsquo;uso con i microcontrollori.&lt;/p&gt;&#xA;&lt;p&gt;Comandare tutto da computer va benissimo per le prime prove, ma è molto scomodo quando si prevede di usare un dispositivo di questo genere per delle attività &lt;em&gt;sul campo&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;catture-automatiche&#34;&gt;Catture automatiche&lt;/h4&gt;&#xA;&lt;p&gt;Allora ho chiesto a Gemini di modificare il codice in modo da effettuare automaticamente la cattura dell&amp;rsquo;immagine ogni N minuti oppure premendo un pulsante, inviando poi l&amp;rsquo;immagine ad un computer tramite Wi-Fi.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;[...] However, this means that I need to use a Pico for the capture and another computer, even a Raspberry Pi Zero for commanding the capture process. Would it be possible to do everything on the Pico, eg press a button and perform the capture or via a timed process (defined in the .ino file itself) every N minutes (but there should be a mechanism that sends the images to a computer connected by WiFi, avoiding to fill the pico storage space).&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Gemini si mette subito al lavoro, sempre continuando ad usare Arduino. Dovrebbe essere un programma molto semplice da realizzare ma, per quanto Gemini ci provi, non funziona mai. Dopo molti tentativi infruttuosi mi scoccio e gli chiedo di ritornare all&amp;rsquo;ultima versione funzionante del programma.&lt;/p&gt;&#xA;&lt;h4 id=&#34;tornare-sui-propri-passi&#34;&gt;Tornare sui propri passi&lt;/h4&gt;&#xA;&lt;p&gt;E qui Gemini sbatte contro un muro imprevisto perché, nonostante la mia guida e i miei continui suggerimenti, non c&amp;rsquo;è assolutamente verso di riuscirci.&lt;/p&gt;&#xA;&lt;p&gt;Stupidamente non avevo pensato di tenere traccia delle varie versioni del codice man mano che veniva generato, e questa è solo ed esclusivamente colpa mia.&lt;/p&gt;&#xA;&lt;p&gt;Ma d&amp;rsquo;altre parte, pur essendo ben consapevole che i modelli linguistici di grandi dimensioni (LLM, &lt;em&gt;Large Language Model&lt;/em&gt;) mentre lavorano hanno una &lt;strong&gt;memoria&lt;/strong&gt; che sembra quella della &lt;a href=&#34;https://youtu.be/arnEy6qr6ZA?si=M0n4Cb98OtYmnKGB&amp;amp;t=58&#34;&gt;pesciolina Dory&lt;/a&gt;, non avrei mai immaginato che questi sistemi ultrasofisticati non fossero neanche in grado di &lt;strong&gt;ricostruire a posteriori&lt;/strong&gt; ciò che hanno fatto, pur avendo a disposizione decine e decine di file &lt;code&gt;implementation_plan.md&lt;/code&gt;, &lt;code&gt;task.md&lt;/code&gt; e &lt;code&gt; walkthrough.md&lt;/code&gt;, che descrivono per filo e per segno tutti i passaggi precedenti (li ho contati, solo per questo progetto Antigravity ha generato più di 250 file diversi).&lt;/p&gt;&#xA;&lt;p&gt;Tornare sui propri passi è una cosa che invece strumenti come &lt;code&gt;git&lt;/code&gt; e i suoi predecessori, tutti privi di una qualunque forma di &lt;em&gt;intelligenza&lt;/em&gt; che non sia quella dei suoi creatori, sono in grado di fare benissimo &lt;a href=&#34;https://blog.tarynmcmillan.com/a-history-of-version-control&#34;&gt;da più di cinquant&amp;rsquo;anni&lt;/a&gt;. Magari chi sviluppa questi agenti tanto &lt;em&gt;intelligenti&lt;/em&gt; potrebbe farci un pensierino, no?&lt;/p&gt;&#xA;&lt;h4 id=&#34;epilogo&#34;&gt;Epilogo&lt;/h4&gt;&#xA;&lt;p&gt;Alla fine, testardamente e basandomi sulle mie note,&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; sono riuscito a far ripetere a Gemini tutto quello che aveva già fatto. Ci ha messo delle ore, ha ripetuto pari pari tutti gli errori della volta precedente, ma alla fine il codice ricostruito funziona di nuovo correttamente.&lt;/p&gt;&#xA;&lt;p&gt;Già che c&amp;rsquo;ero, gli ho fatto rifare tutto anche per CircuitPython, e anche questo &lt;em&gt;port&lt;/em&gt; ha richiesto molte altre ore di lavoro e di errori. E, prima di arrivarci, Gemini ha creato dei problemi talmente gravi che macOS ha dovuto disabilitare la comunicazione delle porte USB con il Pico, costringendomi a riavviare per un paio di volte il Mac.&lt;/p&gt;&#xA;&lt;p&gt;Inutile dire che questa volta gli ho fatto tenere traccia di ogni passaggio con &lt;code&gt;git&lt;/code&gt; e ho messo pure tutto il codice su &lt;a href=&#34;https://github.com/sabinomaggi/pico-camera5mp&#34;&gt;GitHub&lt;/a&gt;, non si sa mai.&lt;/p&gt;&#xA;&lt;p&gt;Uno dei prossimi passi sarà (spero) MicroPython, ma questa è ancora un&amp;rsquo;altra storia.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Perché Arduino fa tanta fatica, pur se è una piattaforma di sviluppo per microcontroller molto più matura di MicroPython e CircuitPython? Perché, per il modello di videocamera che ho scelto, Arducam non supporta il Raspberry Pi Pico ma solo i Raspberry Pi &lt;em&gt;classici&lt;/em&gt; (quelli con il sistema operativo, per intenderci, come il Rasperry Pi 4, 5 e lo Zero), nonché tutti i microcontroller Arduino e ESP286.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Lo so che l&amp;rsquo;inglese non è un gran che, è più un flusso di pensieri che un discorso organico. Ma ci sono dettagli che mi vengono in mente mentre scrivo, e preferisco buttarli giù così alla bell&amp;rsquo;e meglio piuttosto che perdere il filo delle idee.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Non ripeterò mai abbastanza quanto sia importante tenere delle note scritte di quello che si fa. All&amp;rsquo;inizio sembra solo una perdita di tempo, mentre invece è il modo migliore per evitare di perderlo in futuro.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Antigravity: un driver scritto dall&#39;IA</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2026/03/04/antigravity-un-driver-scritto-dall-ia/</link>
      <pubDate>Wed, 04 Mar 2026 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2026/03/04/antigravity-un-driver-scritto-dall-ia/</guid>
      <description>&lt;p&gt;Fra tutti i modelli di Raspberry Pi e di Arduino con cui al momento passo la giornata, il mio preferito è senza dubbio il &lt;a href=&#34;https://www.raspberrypi.com/products/raspberry-pi-pico/&#34;&gt;Raspberry Pi Pico&lt;/a&gt;, un &lt;a href=&#34;https://en.wikipedia.org/wiki/Microcontroller&#34;&gt;microcontrollore&lt;/a&gt; piccolo ma potente, in grado di essere programmato non solo in C/C++ tramite l&amp;rsquo;IDE di Arduino, ma anche in &lt;a href=&#34;https://www.raspberrypi.com/documentation/microcontrollers/micropython.html&#34;&gt;MicroPython&lt;/a&gt; e &lt;a href=&#34;https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/&#34;&gt;CircuitPython&lt;/a&gt;, due versioni diverse (e concorrenti) di Python specifiche per i microcontrollori.&lt;/p&gt;&#xA;&lt;p&gt;A differenza degli altri modelli di Raspberry Pi, il Pico non dispone di una &lt;a href=&#34;https://en.wikipedia.org/wiki/Camera_Serial_Interface&#34;&gt;connessione dedicata&lt;/a&gt; alla videocamera, ma può utilizzare quelle con &lt;a href=&#34;https://en.wikipedia.org/wiki/Serial_Peripheral_Interface&#34;&gt;interfaccia SPI&lt;/a&gt;,&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; come ad esempio la &lt;a href=&#34;https://www.arducam.com/arducam-5mp-plus-spi-cam-arduino-ov5642.html&#34;&gt;Arducam Mini 5MP Plus&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In teoria non dovrebbe essere un lavoro difficile. Dopo aver dato una occhiata alla &lt;a href=&#34;https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Pico/Camera-Module/SPI-Camera/#1introduction&#34;&gt;documentazione ufficiale&lt;/a&gt;, si tratta solo di collegare la videocamera al Pico, scaricare il driver e i programmi di test dal &lt;a href=&#34;https://github.com/ArduCAM/PICO_SPI_CAM&#34;&gt;repository GitHub del produttore&lt;/a&gt;, copiarli sul Pico dopo aver installato la versione di Python supportata, e infine provare a scattare qualche foto.&lt;/p&gt;&#xA;&lt;p&gt;Non avrei potuto sbagliarmi di più.&lt;/p&gt;&#xA;&lt;h4 id=&#34;ci-vuole-un-driver&#34;&gt;Ci vuole un driver&lt;/h4&gt;&#xA;&lt;p&gt;Gli unici due programmi di di test disponibili, uno per Arduino e l&amp;rsquo;altro per CircuitPython, prevedevano  di utilizzare Windows per visualizzare il video prodotto dalla videocamera, una cosa insolita dato che la stragrande maggioranza di chi lavora con questi dispositivi usa Linux o macOS. CircuitPython, poi, è meno diffuso di MicroPython, e io avrei preferito usare quest&amp;rsquo;ultimo per compatibilità con gli altri componenti già collegati al Pico.&lt;/p&gt;&#xA;&lt;p&gt;Con un po&amp;rsquo; di pazienza, e avendo a disposizione un programma che insegna ad usare le funzioni principali per gestire il dispositivo, si può provare a tradurre il codice CircuitPython in MicroPython (e viceversa),&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; ma in questo caso non c&amp;rsquo;era nulla del genere a disposizione.&lt;/p&gt;&#xA;&lt;p&gt;Altra guide trovate sul web sembravano promettenti, ma alla prova dei fatti non funzionavano. L&amp;rsquo;unica opzione rimasta era quella di bypassare i &lt;em&gt;tool&lt;/em&gt; ufficiali e di scriversi da solo un driver per la videocamera.&lt;/p&gt;&#xA;&lt;p&gt;Una parola!&lt;/p&gt;&#xA;&lt;p&gt;Io so come scrivere il codice per risolvere una equazione differenziale o per analizzare dei dati di misura. Me la cavo anche con la programmazione di microcontrollori ed affini per catturare i dati dei sensori collegati. Ma qui si tratta di ben altro. Si tratta di studiare nei dettagli come funziona a basso livello la comunicazione fra il Pico e la videocamera. Un lavoro da ingegneri specializzati, che scrivono i driver che poi permettono a noi &lt;em&gt;umani&lt;/em&gt; di eseguire operazioni complesso come scattare una foto con poche righe di codice Python.&lt;/p&gt;&#xA;&lt;p&gt;E allora perché non mettere al lavoro uno degli agenti integrati in Antigravity per fargli fare quello che io non sono capace di fare?&lt;/p&gt;&#xA;&lt;div style = &#34;border-style: solid; border-width: 0px 0px 0px 12px; border-color: #03a87c; background-color: #defef6; padding: 1em; color:black; font-size:100%;&#34;&gt;&#xA;&lt;p&gt;Non sarei stato obbligato ad usare Antigravity, anche Claude Code, Google Gemini, Deepseek o uno degli altri mille LLM che abbiamo a disposizione avrebbe potuto tranquillamente lavorarci su. Ma, &lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/&#34;&gt;come ho già scritto&lt;/a&gt;, usare uno degli agenti integrati in Antigravity permette di lavorare direttamente nell&amp;rsquo;editor e di accedere al sistema operativo sottostante, una vantaggio enorme quando si deve provare e riprovare mille volte il codice prodotto.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/br&gt;&#xA;&lt;h4 id=&#34;lia-al-lavoro&#34;&gt;L&amp;rsquo;IA al lavoro&lt;/h4&gt;&#xA;&lt;p&gt;Quando si leggono tanti articoli entusiastici sul &lt;em&gt;vibe coding&lt;/em&gt;, ovvero sullo sviluppo del software eseguito dall&amp;rsquo;intelligenza artificiale senza nessun intervento o quasi da parte del programmatore umano, sembra tutto facile (tanto per citarne qualcuno, &lt;a href=&#34;https://shumer.dev/something-big-is-happening&#34;&gt;questo&lt;/a&gt; articolo che ha avuto milionate di letture oppure &lt;a href=&#34;https://www.oneusefulthing.org/p/claude-code-and-what-comes-next&#34;&gt;questo&lt;/a&gt; senza dimenticare il &lt;em&gt;tweet&lt;/em&gt; che ha &lt;a href=&#34;https://x.com/karpathy/status/1886192184808149383&#34;&gt;iniziato tutto&lt;/a&gt;).&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; In sostanza, scrivi due-tre righe chiedendo all&amp;rsquo;LLM o all&amp;rsquo;&lt;em&gt;agente&lt;/em&gt; di turno di fare questo o quello, te ne vai a pranzo o a fare una passeggiata e quando torni è tutto pronto.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Proviamo per una volta a fare lo stesso con Gemini, dandogli solo le informazioni essenziali e verificando cosa riesce a fare davvero. In questo caso queste informazioni si riducono al link alla pagina web della videocamera e a una tabella che descrive come sono collegati i pin della videocamera al Pico (sono più di tre righe, lo so, ma io sono prolisso).&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;    &#xA;    &lt;p&gt;I have a Rasperry Pi Pico 2W connected to a Arducam 5MP Plus OV5642 Mini Module Camera Shield (&lt;a href=&#34;https://www.arducam.com/arducam-5mp-plus-spi-cam-arduino-ov5642.html%29&#34;&gt;https://www.arducam.com/arducam-5mp-plus-spi-cam-arduino-ov5642.html)&lt;/a&gt;. I have connected the camera to the Pico using the standard layout found in the documentation:&lt;/p&gt;&#xA;    &lt;table&gt;&#xA;    &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;        &lt;td&gt;Camera&lt;/th&gt;&#xA;        &lt;td&gt;CS&lt;/th&gt;&#xA;        &lt;td&gt;MOSI&lt;/th&gt;&#xA;        &lt;td&gt;MISO&lt;/th&gt;&#xA;        &lt;td&gt;SCK&lt;/th&gt;&#xA;        &lt;td&gt;GND&lt;/th&gt;&#xA;        &lt;td&gt;VCC&lt;/th&gt;&#xA;        &lt;td&gt;SDA&lt;/th&gt;&#xA;        &lt;td&gt;SCL&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;        &lt;td&gt;Pico&lt;/td&gt;&#xA;        &lt;td&gt;GP5&lt;/td&gt;&#xA;        &lt;td&gt;GP3&lt;/td&gt;&#xA;        &lt;td&gt;GP4&lt;/td&gt;&#xA;        &lt;td&gt;GP2&lt;/td&gt;&#xA;        &lt;td&gt;GND&lt;/td&gt;&#xA;        &lt;td&gt;3V3&lt;/td&gt;&#xA;        &lt;td&gt;GP8&lt;/td&gt;&#xA;        &lt;td&gt;GP9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;    &lt;/tbody&gt;&#xA;    &lt;/table&gt;&#xA;    &lt;p&gt;Please write a basic Micropython code to test that everything is right and that the camera can take photos&lt;/p&gt;&#xA;    &#xA;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Gemini ci lavora su furiosamente, tira fuori codice MicroPython che non funziona, si ingegna a correggerlo in base ai miei suggerimenti e finisce sempre per fare nuovi errori (dico sempre &lt;code&gt;Gemini&lt;/code&gt; per semplicità, ma sono passato anche a &lt;code&gt;Gemini 3.1 Pro&lt;/code&gt;, &lt;code&gt;Claude Opus 4.6&lt;/code&gt; e &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; via via che finivano i token).&lt;/p&gt;&#xA;&lt;p&gt;A un certo punto, non sapendo più che pesci prendere, Gemini ipotizza anche che ci sia un problema hardware, come un collegamento sbagliato o una videocamera difettosa (ma interrogando i singoli pin della videocamera è facile verificare che tutto funziona correttamente).&lt;/p&gt;&#xA;&lt;p&gt;Dopo ore ed ore di lavoro e dato che con MicroPython non riesce a combinare niente di buono, gli chiedo di passare ad Arduino, che è una piattaforma software più matura. Ci vogliono altre ore di lavoro ma alla fine, testardamente, ce la fa, e quella qui sotto è la prima immagine in assoluto scattata con il codice Arduino generato da Gemini (l&amp;rsquo;immagine originale era al contrario e io mi sono limitato a ruotarla di 180°).&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-04-antigravity-un-driver-scritto-dall-ia/capture.jpeg&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-04-antigravity-un-driver-scritto-dall-ia/capture_small.jpeg&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Va detto che subito dopo faccio un errore gravissimo che mi, anzi &lt;em&gt;ci&lt;/em&gt;, costringe a rifare tutto da capo. Ma questo è argomento di un&amp;rsquo;altra storia.&lt;/p&gt;&#xA;&lt;h4 id=&#34;epilogo&#34;&gt;Epilogo&lt;/h4&gt;&#xA;&lt;p&gt;Una volta generato un programma funzionante in Arduino, chiedo a Gemini di rifare tutto per CircuitPython. Anche questo &lt;em&gt;port&lt;/em&gt; richiede parecchie ore di lavoro, inframmezzate da un paio di riavvi forzati del Mac che, dopo qualche &lt;em&gt;bug&lt;/em&gt; di troppo, è stato obbligato a disabilitare la comunicazione fra le porte USB e il Pico.&lt;/p&gt;&#xA;&lt;p&gt;In teoria dovrei ripetere il ciclo per la terza volta con MicroPython. Ma l&amp;rsquo;idea di perdere chissà quanto altro tempo a guardare Gemini che lavora mi fa venire i brividi e lascio perdere, almeno per ora.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;Non so cosa usano quelli che scrivono gli infiniti articoli che proclamano che chiunque, anche se non sa un tubo di programmazione, può farsi scrivere dall&amp;rsquo;IA in poco tempo un programma perfettamente funzionante.&lt;/p&gt;&#xA;&lt;p&gt;Anche se di programmazione ne so qualcosa, a me è successo solo per gli esperimenti più semplici descritti nei due &lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/&#34;&gt;articoli&lt;/a&gt; &lt;a href=&#34;https://melabit.com/it/2026/02/16/antigravity-dalla-sorpresa-al-dubbio/&#34;&gt;precedenti&lt;/a&gt;. E men che meno è successo in questo caso. Va detto, però, che sono in &lt;a href=&#34;https://vladimir.varank.in/notes/2026/02/freebsd-brcmfmac/&#34;&gt;buona compagnia&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-03-04-antigravity-un-driver-scritto-dall-ia/Gemini_Generated_Image_attiipattiipatti.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;È vero, seguendo alla lettera i dettami del &lt;em&gt;vibe coding&lt;/em&gt;, qui non ho scritto nemmeno una riga di codice e ho fatto eseguire a Gemini perfino i comandi di Terminale che potrei scrivere ad occhi chiusi. Ma è altrettanto vero che se non avessi dialogato di continuo con l&amp;rsquo;agente, se non lo avessi guidato passo passo, se non avessi corretto i suoi tanti tanti errori, a volte davvero banali, Gemini non sarebbe andato da nessuna parte.&lt;/p&gt;&#xA;&lt;p&gt;E ci sono volute molte ore di lavoro ininterrotto, fin troppe ore secondo me, per ottenere qualcosa di utilizzabile.&lt;/p&gt;&#xA;&lt;p&gt;Altro che programmazione rapida ed intuitiva. Altro che codice basato sulle &lt;a href=&#34;https://www.youtube.com/watch?v=apBWI6xrbLY&#34;&gt;buone vibrazioni&lt;/a&gt; stile anni &amp;lsquo;60. Altro che programmazione &lt;em&gt;for dummies&lt;/em&gt;!&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Se non ti rimbocchi le maniche e non ti dai da fare in prima persona con il codice, anche quello prodotto da un &lt;em&gt;agente&lt;/em&gt; più o meno intelligente, non vai da nessuna parte. Sarebbe bello essere smentito.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;L&amp;rsquo;interfaccia SPI (Serial Peripheral Interface) è una interfaccia di comunicazione seriale, molto utilizzata per collegare un microcontrollore (&lt;em&gt;master&lt;/em&gt;) ad uno o più dispositivi periferici (&lt;em&gt;slave&lt;/em&gt;) in modo veloce ed affidabile.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Mentre scrivevo l&amp;rsquo;articolo ho trovato &lt;a href=&#34;https://www.youtube.com/watch?v=l254lxm78I4&#34;&gt;questo video&lt;/a&gt;, che spiega come mescolare  nello stesso script codice MicroPython e CircuitPython. Se funzionasse anche in casi più complicati di accendere e spegnere un LED sarebbe davvero una svolta.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Sarà un caso che sono sempre post lunghissimi ma senza mai uno straccio di prova, un prompt, qualche brano di codice, dei link a supporto delle tante affermazioni non verificate e non verificabili?&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Mai nessuno, da vero nerd, dice che va a fare un po&amp;rsquo; di sesso.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:5&#34;&gt;&#xA;&lt;p&gt;Dal titolo di una famosa serie di &lt;a href=&#34;https://en.wikipedia.org/wiki/For_Dummies&#34;&gt;guide introduttive&lt;/a&gt; agli argomenti più svariati, che spaziavano da come usare il DOS a come giocare a scacchi.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Antigravity: dalla sorpresa al dubbio</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2026/02/16/antigravity-dalla-sorpresa-al-dubbio/</link>
      <pubDate>Mon, 16 Feb 2026 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2026/02/16/antigravity-dalla-sorpresa-al-dubbio/</guid>
      <description>&lt;p&gt;Per quanto Antigravity sia efficace, scavando più in profondità ci si accorge che i sistemi ad agenti che agiscono al suo interno, per quanto servizievoli e capaci di rispondere in modo preciso a &lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/&#34;&gt;tante questioni complesse&lt;/a&gt;, non sono esenti dai soliti problemi di tutti i modelli linguistici di grandi dimensioni (LLM, &lt;em&gt;Large Language Model&lt;/em&gt;) con cui abbiamo a che fare da tre anni a questa parte.&lt;/p&gt;&#xA;&lt;p&gt;Vediamo alcuni esempi pratici.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/Gemini_Generated_Image_vzsj3tvzsj3tvzsj.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;esempio-1&#34;&gt;Esempio #1&lt;/h4&gt;&#xA;&lt;p&gt;Dopo aver provato con successo ad estrarre i dati dalle &lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/#compito-1-estrazione-di-dati-dalle-immagini&#34;&gt;immagini di un mio articolo&lt;/a&gt;, mi sono messo subito al lavoro per provare a applicare il metodo ad altre figure simili a quelle analizzate la prima volta, come ad esempio &lt;a href=&#34;https://www.sciencedirect.com/science/article/pii/S0341816225007738&#34;&gt;questa&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/1-s2.0-S0341816225007738-gr4_lrg.jpg&#34; alt=&#34;&#34;&gt;&lt;p&gt;Obiettivamente, la figura è più complessa rispetto alle mie precedenti: nella parte superiore compare un istogramma che mostra le misurazioni mensili di precipitazione e altezza della neve per due località dal nome impronunciabile del Québec, dove le diverse misurazioni sono rappresentate con tonalità e colori differenti. Più in basso, ma parzialmente sovrapposto all’istogramma, troviamo un grafico a linee con le temperature medie mensili delle due località, la cui scala verticale è posizionata sul lato destro.&lt;/p&gt;&#xA;&lt;p&gt;La figura è più complessa, è vero, ma non mi sarei mai aspettato che &lt;code&gt;Gemini 3 Flash&lt;/code&gt; faticasse così tanto. Ci prova, ci riprova, ma ogni volta c&amp;rsquo;è qualcosa che non va. L&amp;rsquo;istogramma tutto sommato non è un grosso problema, ma non c&amp;rsquo;è verso di fargli capire cosa deve fare con i dati del grafico a linee. E questo anche dopo avergli spiegato dove deve guardare per determinare i valori di temperatura di ogni mese&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;Hint: To evaluate temperatures for a given month you should take a point on the temperature plot that is between the two precipitation bars &#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Sono molto sorpreso dalla difficoltà che ha Gemini a ripetere ed estendere i risultati della &lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/#compito-1-estrazione-di-dati-dalle-immagini&#34;&gt;mia prima prova&lt;/a&gt;, anche se continua a rassicurarmi sostenendo di aver &lt;em&gt;capito&lt;/em&gt; benissimo quello che voglio e di aver eseguito un lavoro &lt;em&gt;meticoloso&lt;/em&gt;.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;answer&#34; open&gt;&#xA;    &lt;summary class=&#34;answer&#34;&gt;&#xA;        Risposta&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;answer&#34;&gt;&#xA;        &#xA;I have completed a meticulous re-evaluation of Figure 4 using the &#34;midpoint&#34; method you suggested (reading the temperature at the horizontal center between the two monthly precipitation bars).&#xA;Final Corrections Applied: [...]&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Nei fatti, sembra che Gemini non abbia la minima idea di cosa sia davvero il metodo &amp;ldquo;midpoint&amp;rdquo; e si limiti solo a ripetere ciò che gli dico, modificando solo qualche parola. Se così non fosse, infatti, risolverebbe l&amp;rsquo;intoppo in pochi secondi, tirando fuori i dati giusti proprio ha fatto la prima volta.&lt;/p&gt;&#xA;&lt;p&gt;Alla fine mi arrendo. Non ha senso perdere delle ore per far fare ad un &lt;em&gt;agente intelligente&lt;/em&gt; un lavoro che fatto a mano richiederebbe solo pochi minuti.&lt;/p&gt;&#xA;&lt;h4 id=&#34;esempio-2&#34;&gt;Esempio #2&lt;/h4&gt;&#xA;&lt;p&gt;Devo ammettere di essere deluso, ma forse mi sono aspettato troppo dal mio agente intelligente.&lt;/p&gt;&#xA;&lt;p&gt;E allora cerco di semplificargli la vita, scegliendo un grafico di un mio &lt;a href=&#34;https://pubs.aip.org/aip/apl/article-abstract/86/4/042501/117168/Overdamped-Nb-Al-AlOx-Nb-Josephson-junctions&#34;&gt;vecchio articolo&lt;/a&gt; che non dovrebbe costituire un ostacolo particolarmente arduo per Gemini 3 Flash.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/042501_fig2.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Che invece si incarta e fa errori incomprensibili. Con qualche aiutino, riesce a tirare fuori i dati mostrati in questo grafico, che però ha ancora parecchi punti mancanti (messi in evidenza dai riquadri colorati) o punti aggiunti in modo fantasioso (come quello indicato dalla freccia).&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/recreate_figure_2.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Nuova delusione. Perché usare un &lt;em&gt;agente intelligente&lt;/em&gt; se si fa prima ad acquisire i punti a mano?&lt;/p&gt;&#xA;&lt;h4 id=&#34;esempio-3&#34;&gt;Esempio #3&lt;/h4&gt;&#xA;&lt;p&gt;Ma io non mi arrendo facilmente e provo ancora a fargli fare qualcosa di buono. E allora prendo una figura da &lt;a href=&#34;https://pubs.aip.org/aip/apl/article-abstract/91/25/252505/334515/Nb-Al-AlOx-Nb-overdamped-Josephson-junctions-above&#34;&gt;quest&amp;rsquo;altro articolo&lt;/a&gt;, che è piuttosto semplice dal punto di vista grafico, ma che allo stesso tempo sarebbe utile poter acquisire in modo automatico, perché la quantità di dati contenuta rende difficile digitalizzarla a mano in modo preciso.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/252505_fig1.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Scottato dalle esperienze precedenti gli chiedo prima di tutto di descrivere cosa &lt;em&gt;vede&lt;/em&gt; nella figura.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;Now could you describe in simple words what you &#34;see&#34; in figure 1?&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;La risposta è lunga, precisa e quasi senza sbavature,&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;answer&#34;&gt;&#xA;    &lt;summary class=&#34;answer&#34;&gt;&#xA;        Risposta&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;answer&#34;&gt;&#xA;        &#xA;    &#xA;    &lt;p&gt;Looking at figure 252505_1_f1.jpeg, I can see:&lt;/p&gt;&#xA;    &lt;p&gt;&lt;strong&gt;Two side-by-side graphs&lt;/strong&gt; showing current-voltage (I-V) characteristics:&lt;/p&gt;&#xA;    &lt;p&gt;&lt;strong&gt;(a) Left graph (T = 2.0 K)&lt;/strong&gt;:&lt;/p&gt;&#xA;    &lt;ul&gt;&#xA;    &lt;li&gt;Shows a &lt;strong&gt;hysteretic&lt;/strong&gt; behavior - the curve forms a loop&lt;/li&gt;&#xA;    &lt;li&gt;The current jumps abruptly at certain voltage points&lt;/li&gt;&#xA;    &lt;li&gt;There&amp;rsquo;s a clear gap between the upward and downward voltage sweeps&lt;/li&gt;&#xA;    &lt;li&gt;The vertical jumps occur around ±1 mV&lt;/li&gt;&#xA;    &lt;/ul&gt;&#xA;    &lt;p&gt;&lt;strong&gt;(b) Right graph (T = 5.8 K)&lt;/strong&gt;:&lt;/p&gt;&#xA;    &lt;p&gt;Shows &lt;strong&gt;non-hysteretic&lt;/strong&gt; behavior - smooth, continuous curve&lt;/p&gt;&#xA;    &lt;ul&gt;&#xA;    &lt;li&gt;No loop or gap between voltage sweeps&lt;/li&gt;&#xA;    &lt;li&gt;The transition is gradual rather than abrupt&lt;/li&gt;&#xA;    &lt;li&gt;The curve is more rounded at the critical points&lt;/li&gt;&#xA;    &lt;/ul&gt;&#xA;    &lt;p&gt;&lt;strong&gt;Key observation&lt;/strong&gt;: This demonstrates how the same Josephson junction behaves differently at different temperatures. At the lower temperature (2.0 K), it shows hysteresis (memory effect), while at the higher temperature (5.8 K), the hysteresis disappears and the junction becomes &amp;ldquo;overdamped.&amp;rdquo;&lt;/p&gt;&#xA;    &lt;p&gt;Both graphs show current ranging from about -15 to +15 mA on the y-axis, with voltage on the x-axis measured in millivolts (mV).&lt;/p&gt;&#xA;    &#xA;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;ma in realtà contiene un errore proprio alla fine della risposta che manderebbe a pallino tutti i tentativi di digitalizzare i dati contenuti nei due grafici.&lt;/p&gt;&#xA;&lt;p&gt;Quando glielo faccio notare, Gemini 3 Flash si corregge immediatamente e sembra quasi dispiaciuto. Ma come ben sappiamo, tutti gli LLM sono programmati per assecondare sempre l&amp;rsquo;interlocutore.&lt;/p&gt;&#xA;&lt;p&gt;Vado avanti e cerco di dargli una mano, spiegandogli per bene cosa dovrebbe fare.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;No problem. Now could you extract the values of voltage and current from the two images? Please produce a table for each image, and export the table as a csv file and a markdown file, with suffix `_table`.&lt;/br&gt;  &#xA;Since one of the I-V curves is hysteretic, I suggest this strategy for extracting the data: start from V=0, increase V up to the maximum value following one of the paths, decrease V to 0 following the other path, do the same for the negative values of V.&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Ma nonostante il suggerimento, non c&amp;rsquo;è verso di fargli fare un lavoro decente. Il meglio che ottengo sarebbe questo, che a prima vista è un ottimo risultato.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/252505_1_f1_lowres_v22.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Peccato però che ci sia un errore grave e incomprensibile, che lascio a voi scoprire.&lt;/p&gt;&#xA;&lt;p&gt;In ogni caso, l&amp;rsquo;immagine precedente è davvero il meglio del meglio del meglio, ed è stata ottenuta dopo ore di tentativi falliti (come &lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/252505_1_f1_recreated.png&#34;&gt;questo&lt;/a&gt; tentativo iniziale, o &lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/252505_1_f1_lowres_v13.png&#34;&gt;questo&lt;/a&gt;, o &lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-02-16-antigravity-dalla-sorpresa-al-dubbio/252505_1_f1_lowres_final.png&#34;&gt;questo&lt;/a&gt;) e di suggerimenti prima vaghi e poi sempre più precisi, un po&amp;rsquo; come si fa con uno studente impreparato dal quale si cerca di  tirar fuori qualche parola. Nonché di risposte che cercavano di adattarsi al suggerimento del momento, senza fare mai, o quasi mai, tesoro di tutto ciò che si era detto in precedenza.&lt;/p&gt;&#xA;&lt;p&gt;Tutti questi tentativi infruttuosi sono stati resi ancora più frustanti dal fatto che, diversi anni fa, avevo risolto lo stesso problema in modo preciso e riproducibile con appena duecento righe di codice in Python (&lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/#fn:3&#34;&gt;ricordavo male&lt;/a&gt;, non era C ma Python).&lt;/p&gt;&#xA;&lt;p&gt;E quando alla fine gli spiego per filo e per segno come si fa, suggerendogli perfino che la chiave di tutto è convertire il file originale &lt;code&gt;JPEG&lt;/code&gt; in un formato, il &lt;code&gt;PBM&lt;/code&gt; (che è praticamente una griglia di 0 o 1 a seconda che il pixel sia bianco o nero),&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;    &#xA;    &lt;p&gt;My suggestion is to change focus completely. If I were you I would:&lt;/p&gt;&#xA;    &lt;ol&gt;&#xA;    &lt;li&gt;&#xA;    &lt;p&gt;take note of the extreme values of voltage and current on the X and Y axes;&lt;/p&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&#xA;    &lt;p&gt;get rid of the extraneous information outside the plot area and of the text (if any) inside it;&lt;/p&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&#xA;    &lt;p&gt;convert the image to the PBM (or PGM) format, that gives you a clean grid of black and white (or gray and white) pixels;&lt;/p&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&#xA;    &lt;p&gt;remove the extraneous grid dots using a 3x3 or 5x5 filter (or anything like that);&lt;/p&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&#xA;    &lt;p&gt;calculate the X and Y position of each black pixel, converting the [values] to Voltage and Current (it is just a proportion).&lt;/p&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;/ol&gt;&#xA;    &lt;p&gt;Clearly you can change the order of the steps or do something different if you believe your approach is better than mine.&lt;/p&gt;&#xA;    &#xA;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;non c&amp;rsquo;è lo stesso verso lo stesso di fargli fare qualcosa di utile.&lt;/p&gt;&#xA;&lt;p&gt;Ancora più frustante è il fatto che Gemini non si è nemmeno fatto scrupolo di provare ad imbrogliarmi! Quando ha trovato il file originale dei valori misurati, che usavo per confrontare i risultati delle sue analisi con i dati &lt;em&gt;veri&lt;/em&gt;, ha provato ad usare quel file per generare i dati che gli chiedevo. Chiaramente questa volta i risultati erano perfetti, ma ci voleva una &lt;em&gt;intelligenza&lt;/em&gt;, artificiale o non, per tirare fuori una cosa del genere?&lt;/p&gt;&#xA;&lt;h4 id=&#34;altri-esempi&#34;&gt;Altri esempi&lt;/h4&gt;&#xA;&lt;p&gt;Nei giorni in cui ho provato e riprovato quello che ho descritto in questo articolo ho fatto anche molte altre prove, come fargli scrivere del semplice codice in LaTeX, o convertire in &lt;code&gt;CSV&lt;/code&gt; o &lt;code&gt;Markdown&lt;/code&gt; le tabelle contenute nei file PDF di alcuni articoli.&lt;/p&gt;&#xA;&lt;p&gt;Con il LaTeX se l&amp;rsquo;è cavato sempre bene, con le tabelle ha faticato parecchio anche quando il layout era abbastanza semplice. Inutile entrare nei dettagli, perché alla fine non ci sono grosse differenze rispetto agli esempi precedenti.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;Dopo gli ottimi risultati &lt;a href=&#34;https://melabit.com/it/2026/01/21/sorpresa-antigravity/#compito-1-estrazione-di-dati-dalle-immagini&#34;&gt;descritti nell&amp;rsquo;articolo precedente&lt;/a&gt; ero sinceramente convinto di poter usare gli agenti intelligenti integrati in Antigravity per estrarre facilmente i dati sepolti in tanti articoli scientifici di qualche anno fa, cosa che mi avrebbe permesso di eseguire delle nuove analisi comparate in modo rapido ed efficiente.&lt;/p&gt;&#xA;&lt;p&gt;Purtroppo tutte le prove più approfondite descritte in questo articolo si sono rivelate un totale fallimento.&lt;/p&gt;&#xA;&lt;p&gt;Il modello usato, quasi sempre Gemini 3 Flash (ma ho provato, anche se ho provato in modo più superficiale anche Gemini 3 Pro e Claude Sonnet 4.5),&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; ha mostrato un &lt;strong&gt;comportamento poco coerente e ripetibile&lt;/strong&gt;. Ad esempio utilizzando metodi diversi per risolvere lo stesso problema, senza che fosse mai chiaro se dietro la scelta di un algoritmo o libreria di calcolo ci fosse una precisa motivazione tecnica o se  si trattasse solo di una questione di probabilità statistica nella generazione delle risposte.&lt;/p&gt;&#xA;&lt;p&gt;Un altro problema serio è stato la &lt;strong&gt;mancanza di memoria&lt;/strong&gt;, un po&amp;rsquo; come la &lt;a href=&#34;https://youtu.be/arnEy6qr6ZA?si=M0n4Cb98OtYmnKGB&amp;amp;t=58&#34;&gt;pesciolina Dory&lt;/a&gt; dei cartoni animati. Nonostante pochi giorni prima avesse risolto con successo il problema di estrarre i dati da un istogramma, Gemini non stato in grado di riapplicare la stessa metodologia ad un caso analogo. Altre volte, una volta risolto un problema in modo parziale, gli capitava di ricominciare a lavorarci su ripartendo da zero, invece di limitarsi a rielaborare e a migliorare la risposta precedente.&lt;/p&gt;&#xA;&lt;p&gt;Ma il problema che forse mi ha disturbato di più è stata l&amp;rsquo;&lt;strong&gt;incapacità di generalizzare&lt;/strong&gt; il lavoro già fatto. Se gli chiedi di estrarre dei dati da una immagine, Gemini crea un programma adatto a &lt;em&gt;quella&lt;/em&gt; immagine, senza mai cercare di sviluppare un metodo generale applicabile ad altre immagini dello stesso tipo. Se gli chiedi di generare il grafico di un file di dati, Gemini crea uno script adatto solo per &lt;em&gt;quel&lt;/em&gt; file, che sarà impossibile o quasi adattare ad altri casi analoghi.&lt;/p&gt;&#xA;&lt;p&gt;Quando un umano affronta un problema, tende ad affezionarsi alla soluzione e cerca di riusarla e di estenderla a problemi simili. Un LLM non se ne cura e riscopre la ruota ad ogni nuova iterazione. Sembra il trionfo dell&amp;rsquo;usa-e-getta, lo spreco di risorse e di intelligenza (per quanto artificiale)  elevato all&amp;rsquo;ennesima potenza.&lt;/p&gt;&#xA;&lt;p&gt;E queste cose non le ho notate solo io, che con queste cose ci gioco soltanto. Studi scientifici molto seri &amp;ndash; che ad esempio hanno provato ad usare gli LLM per riscoprire la &lt;a href=&#34;https://arxiv.org/abs/2507.06952v4&#34;&gt;legge di gravitazione di Newton&lt;/a&gt; a partire dalle orbite dei pianeti attorno al Sole, oppure per prevedere il &lt;a href=&#34;https://pubs.rsc.org/en/content/articlelanding/2025/dd/d5dd00176e&#34;&gt;comportamento di una molecola&lt;/a&gt; in base alle diverse rappresentazioni della sua struttura &amp;ndash; hanno raggiunto le stesse, identiche conclusioni.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;La nostra analisi rivela che questi modelli si comportano, invece, come se sviluppassero delle euristiche specifiche per il singolo compito, che non riescono a generalizzare.&lt;/em&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;Il semplice aumento delle dimensioni del modello non migliora le prestazioni né la capacità di generalizzazione.&lt;/em&gt;&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Infine, e anche se a prima vista sembra il contrario, non dobbiamo mai dimenticare che gli LLM &lt;strong&gt;non capiscono davvero&lt;/strong&gt; quello che gli si chiede, sono solo molto bravi a ritrovare un ago in un pagliaio molto, molto, molto grande. Un LLM può spiegare per filo e per segno cos&amp;rsquo;è una &amp;ldquo;caratteristica I-V di una giunzione Josephson&amp;rdquo;, perché ha &lt;em&gt;letto&lt;/em&gt; un sacco di libri e di articoli sull&amp;rsquo;argomento. Ma poi, quando si tratta di collegare il concetto ideale di &amp;ldquo;caratteristica I-V&amp;rdquo; con la sua rappresentazione sperimentale riportata in una figura, fallisce miserabilmente, dimostrando di essere solo un pappagallo bene ammaestrato.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;è chi sostiene che gli LLM di ultima generazione siano in grado di scrivere da soli un &lt;a href=&#34;https://arstechnica.com/ai/2026/02/sixteen-claude-ai-agents-working-together-created-a-new-c-compiler/&#34;&gt;intero compilatore C&lt;/a&gt; o decine di migliaia di righe di &lt;a href=&#34;https://shumer.dev/something-big-is-happening&#34;&gt;codice perfettamente funzionante&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Da parte mia, e molto più umilmente, mi accontenterei che questi modelli riuscissero a produrre un file di dati o una tabella in maniera ripetibile, senza incorrere in errori inspiegabili o in risultati incoerenti. E magari evitando situazioni incresciose come quelle che ho sperimentato, in cui una volta tutto procede senza problemi e la volta successiva non si riesce a cavare un ragno da un buco.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Ho usato anche la versione a pagamento di Gemini, gentilmente concessami dall&amp;rsquo;università, senza notare differenze rispetto alla versione gratuita. Chi sostiene che i modelli a pagamento facciano cose che quelli gratuiti si sognano dovrebbe fornire prove più che solide prima di essere creduto.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;K. Vafa &lt;em&gt;et al.&lt;/em&gt;, &lt;a href=&#34;https://arxiv.org/abs/2507.06952v4&#34;&gt;What Has a Foundation Model Found? Using Inductive Bias to Probe for World Models&lt;/a&gt;, arXiv 2507.06952v4, 2025.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;B. Yan &lt;em&gt;et al.&lt;/em&gt;, &lt;a href=&#34;https://pubs.rsc.org/en/content/articlelanding/2025/dd/d5dd00176e&#34;&gt;Inconsistency of LLMs in molecular representations&lt;/a&gt;, Digital Discovery vol. 4, 2025.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Sorpresa Antigravity</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2026/01/21/sorpresa-antigravity/</link>
      <pubDate>Wed, 21 Jan 2026 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2026/01/21/sorpresa-antigravity/</guid>
      <description>&lt;p&gt;Lo confesso, quando ho &lt;a href=&#34;https://melabit.com/it/2025/12/15/fotocopiato/&#34;&gt;cominciato ad usare Antigravity&lt;/a&gt; avevo molte riserve, perché il nuovo editor &lt;em&gt;rivoluzionario&lt;/em&gt; prodotto da Google mi sembrava solo uno dei tanti cloni di &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;VS Code&lt;/a&gt; di Microsoft.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ma appena ho iniziato ad usare le funzioni &lt;em&gt;agentiche&lt;/em&gt; di Google Antigravity ho dovuto ricredermi, perché c&amp;rsquo;è davvero del buono.&lt;/p&gt;&#xA;&lt;p&gt;Certo, ci sono anche tanti limiti, ma sono gli stessi di tutti gli altri modelli linguistici di grandi dimensioni (LLM, &lt;em&gt;Large Language Model&lt;/em&gt;), che funzionano bene se li guidi passo passo in quello che devono fare, ma che hanno anche poca fantasia e vanno in affanno se gli sottoponi dei problemi nuovi e appena appena complicati.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/Gemini_Generated_Image_nu8qhynu8qhynu8q.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;editor-e-ide&#34;&gt;Editor e IDE&lt;/h4&gt;&#xA;&lt;p&gt;Google Antigravity è una &lt;a href=&#34;https://en.wikipedia.org/wiki/Integrated_development_environment&#34;&gt;IDE (Integrated Development Environment)&lt;/a&gt;, in italiano un &lt;em&gt;ambiente di sviluppo integrato&lt;/em&gt;, cioè è un editor con funzionalità aggiuntive che aiutano a scrivere e a correggere il codice.&lt;/p&gt;&#xA;&lt;p&gt;Essendo un derivato da VS Code ne riprende tutti gli aspetti positivi e negativi, primo fra tutti il fatto di essere basato su &lt;a href=&#34;https://www.electronjs.org/&#34;&gt;Electron&lt;/a&gt;, un framework multipiattaforma molto comodo per gli sviluppatori ma anche molto avido di risorse e di spazio su disco.&lt;/p&gt;&#xA;&lt;p&gt;Infatti, come avevo già notato nell&amp;rsquo;&lt;a href=&#34;https://melabit.com/it/2025/12/15/fotocopiato/&#34;&gt;ultimo articolo&lt;/a&gt;, una volta installato Google Antigravity occupa sul mio Mac la bellezza di 700 MB (696.6 MB per la precisione), un pelo di più dello stesso VS Code (683.9 MB) e qualcosa meno del &lt;em&gt;padre&lt;/em&gt; Windsurf (718.7 MB). Tanto per fare un confronto, i miei due editor preferiti, TextMate e BBEdit, occupano rispettivamente 40 e 65 MB.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sulle funzionalità di editing del codice e di supporto allo sviluppo c&amp;rsquo;è poco da dire. Sono identiche a quelle di VS Code e possono essere estese a dismisura tramite le più di 8.500 estensioni disponibili sull&amp;rsquo;&lt;a href=&#34;https://open-vsx.org/&#34;&gt;Open VSX Registry&lt;/a&gt;, un database di estensioni specifico per gli editor derivati da VS Code.&lt;/p&gt;&#xA;&lt;p&gt;In teoria si potrebbero usare le &lt;a href=&#34;https://marketplace.visualstudio.com/&#34;&gt;estensioni di VS Code&lt;/a&gt;, ma Microsoft da qualche mese &lt;a href=&#34;https://freedium-mirror.cfd/https://medium.com/@S3CloudHub/microsoft-quietly-blocked-cursor-from-using-its-vscode-extension-heres-the-line-of-code-that-40d65f14ef0f&#34;&gt;ha bloccato&lt;/a&gt; l&amp;rsquo;uso del marketplace di VS Code a tutti gli altri editor derivati (fra cui Cursor, Windsurf o Antigravity). Alla faccia dei principi dell&amp;rsquo;&lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;open source&lt;/a&gt;&amp;hellip;&lt;/p&gt;&#xA;&lt;h4 id=&#34;funzioni-agentiche&#34;&gt;Funzioni &lt;em&gt;agentiche&lt;/em&gt;&lt;/h4&gt;&#xA;&lt;p&gt;Ma cos&amp;rsquo;è l&amp;rsquo;&lt;a href=&#34;https://www.ibm.com/think/topics/agentic-ai&#34;&gt;Intelligenza Artificiale ad agenti&lt;/a&gt; (o &lt;em&gt;agentica&lt;/em&gt;)? È un sistema di IA in grado di agire in modo autonomo, raggiungendo obiettivi complessi con una minima supervisione umana e senza dover essere istruito in modo dettagliato e ben definito.&lt;/p&gt;&#xA;&lt;p&gt;È un po&amp;rsquo; come il sogno dei cuochi dilettanti: avere a disposizione un robot in grado di guardare cosa c&amp;rsquo;è in frigorifero e nella dispensa e di preparare da solo un pranzo completo dopo avergli spiegato vagamente cosa vogliamo.&lt;/p&gt;&#xA;&lt;p&gt;Ma è anche il sogno dei programmatori da bar, i &lt;em&gt;vibe coders&lt;/em&gt;, quelli che vorrebbero poter chiedere all&amp;rsquo;IA di programmare una applicazione &amp;ldquo;fatta così e cosà&amp;rdquo;, andare a mangiare una pizza e trovare tutto pronto  al ritorno, compreso il porting per le principali piattaforme e un sito di e-commerce dove venderla.&lt;/p&gt;&#xA;&lt;h4 id=&#34;mettere-antigravity-alla-prova&#34;&gt;Mettere Antigravity alla prova&lt;/h4&gt;&#xA;&lt;p&gt;Finora tutti questi esperimenti non è che ci abbiano fatto una &lt;a href=&#34;https://freedium-mirror.cfd/https://ninza7.medium.com/anthropic-gave-an-ai-a-job-the-results-were-hilarious-and-terrifying-e85a204b06f4&#34;&gt;grande figura&lt;/a&gt; ma, come ci &lt;a href=&#34;https://it.wikipedia.org/wiki/Mai_dire_mai_%28film%29&#34;&gt;insegna Sean Connery&lt;/a&gt;, mai dire mai. E allora vediamo come funzionano nella pratica le funzioni agentiche integrate in Google Antigravity.&lt;/p&gt;&#xA;&lt;p&gt;Per provarle, ho chiesto al programma di eseguire alcuni compiti specifici, spaziando da cose semplici fino ad un compito particolarmente complesso, cercando di lasciarlo libero di decidere cosa fare e intervenendo solo quando era davvero necessario. Ho scelto compiti vicini alle esigenze di ricercatore, ma credo che i risultati siano lo stesso molto significativi.&lt;/p&gt;&#xA;&lt;p&gt;Ecco come è andata.&lt;/p&gt;&#xA;&lt;h5 id=&#34;prima-di-iniziare&#34;&gt;Prima di iniziare&lt;/h5&gt;&#xA;&lt;p&gt;Prima di iniziare ho finto di usare Antigravity per la prima volta, cancellando con &lt;a href=&#34;https://freemacsoft.net/appcleaner/&#34;&gt;AppCleaner&lt;/a&gt; tutti i file generati dall&amp;rsquo;applicazione. Ho eseguito di nuovo la procedura di &lt;em&gt;onboarding&lt;/em&gt;, decidendo di &lt;code&gt;Start fresh&lt;/code&gt;, senza importare la configurazione da VS Code o da Windsurf, e di usare la modalità &lt;code&gt;Review driven development&lt;/code&gt;, senza modificare le opzioni di default.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/agent-mode.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Per quanto riguarda le estensioni, non ne installo nessuna, perché preferisco decidere da solo cosa mi serve.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/extensions.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Dimenticavo: la versione di Antigravity che ho usato per scrivere questo articolo è la 1.11.17 ma, vista la velocità dello sviluppo, è possibile che alcuni aspetti dell&amp;rsquo;interfaccia e del funzionamento del programma siano già cambiati al momento della pubblicazione dell&amp;rsquo;articolo.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/version.png&#34; alt=&#34;&#34;&gt;&lt;h5 id=&#34;compito-1-estrazione-di-dati-dalle-immagini&#34;&gt;Compito #1: Estrazione di dati dalle immagini&lt;/h5&gt;&#xA;&lt;p&gt;Cominciamo con una cosa semplice, ma molto importante quando si ha a che fare con dei vecchi articoli scientifici: estrarre i dati dalle immagini. Il mio obiettivo è verificare se è possibile istruire l&amp;rsquo;IA di Antigravity ad estrarre da solo i dati dalle figure di &lt;a href=&#34;https://link.springer.com/article/10.1007/s13762-025-06837-z&#34;&gt;questo articolo&lt;/a&gt; appena pubblicato, di cui non sono per niente orgoglioso (per usare un eufemismo), ma che i &lt;em&gt;referee&lt;/em&gt;, sorprendentemente, hanno accettato quasi senza fiatare.&lt;/p&gt;&#xA;&lt;div style = &#34;border-style: solid; border-width: 0px 0px 0px 12px; border-color: #03a87c; background-color: #defef6; padding: 1em; color:black; font-size:100%;&#34;&gt;&#xA;&lt;p&gt;Oggi, in base ai principi della &lt;a href=&#34;https://www.nature.com/collections/prbfkwmwvz&#34;&gt;riproducibilità dei risultati ottenuti&lt;/a&gt;, è diventato normale condividere tutti i dati di un articolo scientifico tramite dei &lt;em&gt;repository&lt;/em&gt; pubblici come &lt;a href=&#34;https://zenodo.org&#34;&gt;Zenodo&lt;/a&gt;, &lt;a href=&#34;https://osf.io&#34;&gt;OSF&lt;/a&gt;, &lt;a href=&#34;https://dataverse.org/&#34;&gt;Dataverse&lt;/a&gt; o magari &lt;a href=&#34;https://github.com/&#34;&gt;GitHub&lt;/a&gt;. Ma fino a pochi anni fa i dati originali erano di fatto accessibili solo attraverso le figure negli articoli, ed è proprio per questo che è fondamentale poterli estrarre dalle immagini.&lt;/p&gt;&#xA;&lt;p&gt;Ci sono parecchi programmi dedicati all&amp;rsquo;estrazione dei dati dalle figure (come &lt;a href=&#34;https://akhuettel.github.io/engauge-digitizer/&#34;&gt;questo&lt;/a&gt;, &lt;a href=&#34;https://www.digitizeit.xyz/&#34;&gt;questo&lt;/a&gt; o &lt;a href=&#34;https://cran.r-project.org/web/packages/metaDigitise/vignettes/metaDigitise.html&#34;&gt;questo&lt;/a&gt;), ma richiedono di essere guidati dall&amp;rsquo;utente, che al minimo deve definire la posizione degli assi X ed Y e i limiti delle coordinate da estrarre. Alcuni programmi riescono a funzionare automaticamente, ma solo se hanno a che fare con tipi ben definiti di immagini.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/br&gt;&#xA;&lt;p&gt;Prima di cominciare, creo una nuova directory dove salvo i grafici scaricati dalla &lt;a href=&#34;https://link.springer.com/article/10.1007/s13762-025-06837-z&#34;&gt;pagina web&lt;/a&gt; dell&amp;rsquo;articolo, proprio come farebbe un collega che volesse ripetere il mio esperimento. Già che ci sono, ci metto anche il file PDF dell&amp;rsquo;articolo, che mi servirà più avanti.&lt;/p&gt;&#xA;&lt;div style = &#34;border-style: solid; border-width: 0px 0px 0px 12px; border-color: #03a87c; background-color: #defef6; padding: 1em; color:black; font-size:100%;&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;NOTA.&lt;/strong&gt; Tutte le domande riportate qui sotto sono state copiate senza correggere gli errori di battitura e la sintassi zoppicante, causati (anche) alla voglia di vedere rapidamente cosa veniva fuori. Tutto sommato questi errori sono utili, perché dimostrano che questi sistemi riescono a comprendere le nostre richieste anche quando la forma non è perfetta.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/br&gt;&#xA;&lt;p&gt;Scelgo di usare &lt;code&gt;Gemini 3 Pro (High)&lt;/code&gt;, che in questo momento è il modello più potente presente in Antigravity, e per prima cosa gli chiedo di orientarsi nel contenuto della directory.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;In the current directory you will find a pdf file, a couple of folders and some inages in png or webp format. Is all this right?&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Gemini ci pensa un paio di secondi e poi mi conferma che è tutto corretto. Molto bene, allora&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;Now open the file containing &#34;Fig1&#34; in the filename. This is an histogram showing the concentration of several chemical species in two kinds of Shungite, type Z (darker bars) and type B (lighter bars). Could you extract the values of concentration from the images? Please produce a table with the name of each chemical species and the associated concentrations for the Type Z and Type B material. Export the table as a csv file named &#34;gemini-fig1.csv&#34; and as a markdown file &#34;gemini-fig1.md&#34;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Questa è l&amp;rsquo;immagine con cui ha a che fare Gemini&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/13762_2025_6837_Fig1_HTML.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Nonostante io sia stato volutamente vago sul nome del file, Gemini la trova senza problemi e e dopo una ventina di secondi produce i due file richiesti. La tabella generata da Gemini è questa&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Chemical Species&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type Z (Concentration %)&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type B (Concentration %)&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SiO2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;41&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;52&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;C&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;33&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;16&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Al2O3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;11&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;16&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Fe2O3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;3&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FeO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TiO2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;MnO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;S&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.5&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;MgO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.5&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Na2O&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;CaO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;K2O&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;H2O&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.5&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;minor elements&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.5&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Confrontandola con la tabella &lt;em&gt;vera&lt;/em&gt;, che contiene i valori di concentrazione realmente misurati&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Species&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type_Z&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Type_B&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SiO2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;40.8&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;52&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;C&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;33.4&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;16.3&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Al2O3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;10.6&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;15.8&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Fe2O3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;4.7&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;3.2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FeO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;3.5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TiO2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.4&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;MnO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.14&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.12&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;S&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.6&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;MgO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.6&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Na2O&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.6&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;CaO&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.4&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2.3&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;K2O&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2.2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;H2O&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.6&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1.4&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Other&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.46&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0.48&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;si nota subito che tutti i valori estratti dalla figura sono molto vicini a quelli reali, con approssimazioni minime e sempre minori dello 0,5%.&lt;/p&gt;&#xA;&lt;p&gt;Sono davvero impressionato dal risultato: Antigravity ha fatto tutto in pochi secondi e senza nessun intervento da parte mia, a parte la preparazione dei file e la scrittura del prompt. È vero che anche i normali chatbot come ChatGPT o Claude possono fare le stesse cose, ma Antigravity ci permette di lavorare direttamente sul nostro computer e con i nostri file, senza dover trasferire niente su e giù per l&amp;rsquo;interfaccia web del chatbot.&lt;/p&gt;&#xA;&lt;p&gt;Compito superato a pieni voti.&lt;/p&gt;&#xA;&lt;h5 id=&#34;compito-2-riproduzione-di-grafici&#34;&gt;Compito #2: Riproduzione di grafici&lt;/h5&gt;&#xA;&lt;p&gt;Per motivi non rilevanti qui, ho partecipato poco &amp;ndash; e più che altro in modo critico &amp;ndash; alla stesura dell&amp;rsquo;&lt;a href=&#34;https://link.springer.com/article/10.1007/s13762-025-06837-z&#34;&gt;articolo&lt;/a&gt; menzionato nel Compito #1. In particolare, non mi sono occupato come al solito di preparare i grafici, che invece sono stati realizzati da una collega in &lt;a href=&#34;https://www.mathworks.com/products/matlab.html&#34;&gt;Matlab&lt;/a&gt;, un sistema di calcolo molto amato dagli ingegneri. I quali hanno ragione, perché con Matlab si possono fare con poco sforzo dei calcoli molto complicati. Ma produrre dei grafici di qualità non è certo il suo forte.&lt;/p&gt;&#xA;&lt;p&gt;Vediamo allora se riesco a far ricreare a Gemini 3 Pro l&amp;rsquo;istogramma del Compito #1, utilizzando la libreria &lt;a href=&#34;https://ggplot2.tidyverse.org/&#34;&gt;ggplot2&lt;/a&gt; di &lt;code&gt;R&lt;/code&gt;.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;         &#xA;Now generate the R code to recreate the same graph, using ggplot2 and whenever possible the functions available in the tidyverse.&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Dopo un po&amp;rsquo; lo script è pronto e viene salvato automaticamente nella directory del progetto. Gli do una rapida occhiata e mi sembra a posto. Apro il terminale integrato in Antigravity ed eseguo lo script come mi viene suggerito,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Rscript recreate_fig1.R&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;e, a parte i colori invertiti, la figura è identica all&amp;rsquo;originale.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/recreated_fig1.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Voglio essere chiaro su questo punto: io non ho toccato nemmeno una virgola del codice generato in Antigravity da Gemini (e non lo farò nemmeno in seguito), il quale quindi riesce da solo a ricreare in &lt;code&gt;R&lt;/code&gt; una copia quasi perfetta dell&amp;rsquo;originale, &lt;em&gt;leggendo&lt;/em&gt; i dati presenti nella figura e riconoscendo tutti gli elementi di contorno del grafico, come le etichette degli assi X e Y, le scale numeriche o la legenda.&lt;/p&gt;&#xA;&lt;p&gt;Conosco abbastanza bene R e avrei potuto ottenere lo stesso risultato in poco tempo, ma non c&amp;rsquo;è dubbio che anche in casi come questo Antigravity può essere un valido aiuto per chi è a digiuno di programmazione.&lt;/p&gt;&#xA;&lt;p&gt;Io comunque sono incontentabile e chiedo a Gemini di invertire i colori&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;Sorry, but the colors are inverted. Type Z is light grey and Type B is dark grey. Please switch the colors so that they are identical to the original. Save the new R code as `Rscript recreate_fig1-1.R`&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Eseguo il nuovo script e ora i colori sono quelli corretti. Noto con piacere che anche il nome del file &lt;code&gt;png&lt;/code&gt; generato è stato aggiornato, cosa che rende più facile confrontare i diversi file prodotti da Gemini.&lt;/p&gt;&#xA;&lt;p&gt;Di nuovo, sono davvero molto impressionato. Gemini ha fatto tutto perfettamente e io non ho dovuto correggere nemmeno una riga del codice.&lt;/p&gt;&#xA;&lt;p&gt;Era un lavoro facile, non c&amp;rsquo;è dubbio, ma rimane comunque un risultato molto interessante. Anche perché stiamo parlando di un linguaggio specialistico come &lt;code&gt;R&lt;/code&gt;, che non ha certo la mole di esempi su cui addestrarsi che hanno linguaggi molto più diffusi, come Python o JavaScript.&lt;/p&gt;&#xA;&lt;p&gt;Anche questo compito mi pare superato a pieni voti.&lt;/p&gt;&#xA;&lt;h5 id=&#34;compito-3-generazione-di-nuovi-grafici&#34;&gt;Compito #3: Generazione di nuovi grafici&lt;/h5&gt;&#xA;&lt;p&gt;Gemini è riuscito a ricreare perfettamente l&amp;rsquo;istogramma dell&amp;rsquo;&lt;a href=&#34;https://link.springer.com/article/10.1007/s13762-025-06837-z&#34;&gt;articolo&lt;/a&gt;, ma vorrei verificare se ci sono delle rappresentazioni alternative più efficaci.&lt;/p&gt;&#xA;&lt;p&gt;Lascio di nuovo la palla a Gemini 3 Pro, che tira fuori due idee interessanti, un grafico &lt;em&gt;Lollipop&lt;/em&gt; e un &lt;em&gt;Dumbell plot&lt;/em&gt;, che però per varie ragioni non mi soddisfano più di tanto. Provo a fargli fare delle modifiche, Gemini esegue sempre tutto a puntino ma il risultato non migliora.&lt;/p&gt;&#xA;&lt;p&gt;Alla fine, mi convinco che il grafico più equilibrato è il solito istogramma, ma questa volta con gli assi X e Y scambiati e colori molto diversi per i due tipi di materiale.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/alternative_fig1_horizontal_bar.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Dato che, come ho già detto, sono incontentabile, prendo una figura molto più complicata dal solito articolo,&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/concentrazione_metalli3.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;e gli faccio ripetere il lavoro di generazione dei grafici equivalenti usando &lt;code&gt;R&lt;/code&gt; e &lt;code&gt;ggplot2&lt;/code&gt;. Gemini si mette subito all&amp;rsquo;opera e capisce da solo che la concentrazione dei vari elementi al giorno 0 vale per entrambi i tipi di materiale, una cosa che non è banale da capire guardando solo il grafico.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;answer&#34; open&gt;&#xA;    &lt;summary class=&#34;answer&#34;&gt;&#xA;        Risposta&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;answer&#34;&gt;&#xA;        &#xA;For Day 0 (&#34;untreated sample&#34;), I assigned the same concentration value to both Type Z and Type B in the dataset. This format suggests that both treatments start from the same baseline, which will make plotting lines easier in R.&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Vi risparmio i dettagli, dico solo che Gemini fa tutto quello che gli chiedo, e produce con poco sforzo diversi tipi di visualizzazioni diverse dei dati presenti nell&amp;rsquo;immagine qui sopra, come questa &lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/fig4_heatmap.png&#34;&gt;heatmap&lt;/a&gt; o questo &lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/fig4_sankey_grid_bold.png&#34;&gt;Sankey plot&lt;/a&gt;. I grafici prodotti non mi soddisfano al 100%, ma comunque dimostrano che Gemini è in grado di eseguire anche i compiti richiesti da utenti incontentabili come il sottoscritto.&lt;/p&gt;&#xA;&lt;p&gt;Gemini riesce anche a capire da solo che, se gli chiedo di mettere i grafici prodotti in due colonne, una per ciascuno dei due materiali studiati, quello che voglio davvero sono quelle che nel gergo di R si chiamano &lt;code&gt;facet&lt;/code&gt;. Sembra una cosa sciocca, ma significa che queste rappresentazioni più complesse diventano alla portata anche di chi sa cosa vuole, ma non sa come esprimerlo in modo preciso.&lt;/p&gt;&#xA;&lt;p&gt;Va detto, però ,che per quanto sia comodo (e anche divertente) chiedere e osservare Gemini mentre lavora, quando si arriva alle modifiche più fini si perde molto più tempo a scrivere le domande e ad aspettare le risposte che a lavorare direttamente sul codice. E questo è un dettaglio da tenere in conto.&lt;/p&gt;&#xA;&lt;p&gt;Diciamo che questo compito merita la sufficienza.&lt;/p&gt;&#xA;&lt;h5 id=&#34;compito-4-interazione-con-il-codice-e-il-sistema-operativo&#34;&gt;Compito #4: Interazione con il codice e il sistema operativo&lt;/h5&gt;&#xA;&lt;p&gt;Vediamo ora se Gemini 3 Pro integrato in Antigravity è in grado di eseguire delle operazioni basilari di gestione dei file e delle cartelle. Tutti gli esempi valgono per macOS, su cui ho fatto tutte le prove, ma anche per le varie incarnazioni di Linux e di BSD Unix.&lt;/p&gt;&#xA;&lt;p&gt;Per prima cosa gli chiedo di mettere ordine nei file generati finora, spostando gli script in R nella directory &lt;code&gt;code&lt;/code&gt;, i file dati in &lt;code&gt;data&lt;/code&gt; e i grafici podotti in &lt;code&gt;output&lt;/code&gt;. Gemini 3 Pro ci pensa un po&amp;rsquo; su e poi crea un semplice script di shell per eseguire quanto richiesto. Fa anche un errore, se ne accorge e mi chiede di autorizzarlo a correggerlo. Molto, molto bene.&lt;/p&gt;&#xA;&lt;p&gt;Ma quello che mi piace ancora di più è che aggiorna da solo tutto il codice già scritto con i nuovi percorsi dei vari file.&lt;/p&gt;&#xA;&lt;p&gt;Gli chiedo allora di aggiungere a ciascuno script in &lt;code&gt;R&lt;/code&gt; il mio solito preambolo, che crea un ambiente R ben definito. Gli do un esempio tratto da uno dei miei vecchi script. ma per il resto gli lascio mano libera. Gemini fa tutto a puntino e aggiorna di nuovo da solo tutti i percorsi dei file creati finora. Davvero impressionante!&lt;/p&gt;&#xA;&lt;p&gt;Gemini si comporta in modo ineccepibile anche con la conversione dei &lt;code&gt;tab&lt;/code&gt;, da due spazi a quattro spazi, come piace a me. Anzi, si accorge persino che deve farlo evitando errori di formattazione nel codice. Meglio di un &lt;em&gt;linter&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Passo infine al &lt;em&gt;versioning&lt;/em&gt; con &lt;code&gt;git&lt;/code&gt; che è sempre utile quando un progetto diventa appena complicato.&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;Could you now initialize a local `git` repository for this project? Versioning is very useful as soon as a project starts to become complicated.&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Va tutto a meraviglia, Gemini crea il &lt;em&gt;repository&lt;/em&gt; richiesto, fa un primo &lt;em&gt;commit&lt;/em&gt; e aggiunge anche un file &lt;code&gt;.gitignore&lt;/code&gt; sensato. Ovviamente posso interrogarlo per chiedere lo &lt;em&gt;status&lt;/em&gt; del repository o per eseguire tutte le altre operazioni con &lt;code&gt;git&lt;/code&gt; che sono abituato ad eseguire dal Terminale.&lt;/p&gt;&#xA;&lt;p&gt;Devo ammettere che ho un po&amp;rsquo; paura a far fare tutte queste cose ad un sistema &lt;em&gt;agentico&lt;/em&gt;, ma in ogni caso il risultato è perfetto.&lt;/p&gt;&#xA;&lt;p&gt;Anche in questo caso vale quello che ho scritto alla fine del Compito precedente: chi conosce bene i comandi di &lt;code&gt;git&lt;/code&gt; fa molto più in fretta a lavorare nel Terminale che a chiedere a Gemini. Però è altrettanto vero che per il normale ricercatore (ma anche per il normale utente) a digiuno di Terminale e sistemi di &lt;em&gt;versioning&lt;/em&gt;, usare un sistema ad agenti come questo può essere un ottimo modo per interagire a basso livello con il codice senza dover studiare pagine e pagine di documentazione.&lt;/p&gt;&#xA;&lt;p&gt;In ogni caso, un altro compito superato a pieni voti.&lt;/p&gt;&#xA;&lt;h5 id=&#34;compito-5-analisi-statistica-dei-dati&#34;&gt;Compito #5: Analisi statistica dei dati&lt;/h5&gt;&#xA;&lt;p&gt;Qui non la faccio lunga, anche perché sulla analisi statistica Antigravity/Gemini 3 Pro è un po&amp;rsquo; scarso.&lt;/p&gt;&#xA;&lt;p&gt;Se lo lascio libero di fare quello che preferisce, tira fuori cose senza senso, come creare delle matrici di correlazione fra le concentrazioni dei diversi metalli pesanti o cercare di confrontare le &amp;ldquo;differenze di efficacia&amp;rdquo; dei due materiali. Non è un compito facile, lo ammetto, ma dimostra &amp;ndash; se ci fosse ancora bisogno di dimostrarlo &amp;ndash; che questi sistemi &lt;em&gt;intelligenti&lt;/em&gt; sono molto utili quando gli si dice con precisione cosa fare, ma non riescono a lavorare da soli quando l&amp;rsquo;utente non ha una idea chiara su cosa vuole ottenere.&lt;/p&gt;&#xA;&lt;p&gt;Infatti, quando gli spiego per benino con che tipo di dati ho a che fare e cosa voglio ottenere,&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;The two types of shungite, type Z and type B, are different materials and they are used independently. In other words, the experiments made using type Z material is completely independent from the experiment with type B, so the two materials cannot be directly compared. This means that the stat_difference_boxplot has little sense, and the same is true for the correlation matrix which photographs a single day (I guess day 0 for only one type of material), while we are interested to time series. Therefore you should try to use some statistical analysis able to deal with time series.&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Gemini ci pensa su per un po&amp;rsquo;, fa degli errori ma riesce a correggerli da solo e alla fine tira fuori un modellino che dimostra come il materiale di tipo Z assorbe i metalli pesanti più rapidamente del materiale di tipo B. Se ci fossero più dati a disposizione, avrebbe senso ragionare un po&amp;rsquo; sul modello, ma per ora può bastare.&lt;/p&gt;&#xA;&lt;p&gt;Difficile dare un voto qui, diciamo non classificato.&lt;/p&gt;&#xA;&lt;h5 id=&#34;compito-6-estrazione-di-tabelle-dai-file-pdf&#34;&gt;Compito #6: Estrazione di tabelle dai file PDF&lt;/h5&gt;&#xA;&lt;p&gt;Qui entrarre in un territorio ostile. Estrarre automaticamente il contenuto delle tabelle contenute nei file PDF sembra una cosa banale, e invece è un argomento su cui si sono arrovellati centinaia e centinaia di ricercatori, e io fra questi. Il problema principale è che il formato PDF è orientato a gestire l&amp;rsquo;aspetto grafico della pagina, ma non &lt;em&gt;sa&lt;/em&gt; nulla del suo contenuto.&lt;/p&gt;&#xA;&lt;p&gt;Per le mie prove, ho chiesto ad Antigravity di aprire il file PDF di uno degli &lt;a href=&#34;https://protezionecivile.regione.puglia.it/annali-idrologici-parte-i-documenti-dal-1921-al-2021&#34;&gt;Annali Idrologici della Regione Puglia&lt;/a&gt; e di estrarre i dati di temperatura minima e massima misurati in alcune stazioni meteorologiche pugliesi. I dati giornalieri ora sono &lt;a href=&#34;https://reteidrometeo.protezionecivile.puglia.it/polarisopen/gis/map&#34;&gt;disponibili sul web&lt;/a&gt;, ma gli Annali in PDF rimangono una risorsa fondamentale, perché contengono i dati di temperatura e precipitazione (e altro) misurati in tutte le circa 150 stazioni della rete meteorologica pugliese a partire dal 1921, permettendo così di &lt;a href=&#34;https://iopscience.iop.org/article/10.1088/1742-6596/1065/19/192005&#34;&gt;analizzare&lt;/a&gt; com&amp;rsquo;è &lt;a href=&#34;https://www.sciencedirect.com/science/article/abs/pii/S0048969719344067&#34;&gt;cambiato il clima della regione&lt;/a&gt; nell&amp;rsquo;ultimo secolo.&lt;/p&gt;&#xA;&lt;p&gt;Il problema di estrarre i dati da questi file PDF l&amp;rsquo;ho &lt;a href=&#34;https://presentations.copernicus.org/EGU23/EGU23-15072_presentation.pdf&#34;&gt;risolto anni fa&lt;/a&gt; attraverso una combinazione di script in &lt;code&gt;R&lt;/code&gt; e &lt;code&gt;AWK&lt;/code&gt;, ma la procedura è lunga e complessa perché bisogna correggere a mano le tante incongruenze contenute nelle tabelle.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; Alla fine, per estrarre i dati di un singolo anno ci vogliono un paio di ore di lavoro attento, che non è male vista la complessità dell&amp;rsquo;analisi, ma che sarebbe molto utile riuscire a delegare all&amp;rsquo;IA.&lt;/p&gt;&#xA;&lt;p&gt;E allora provo a farlo fare a Gemini 3 Pro, scrivendo un prompt bello lungo dove gli spiego per filo e per segno cosa fare&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;question&#34; open&gt;&#xA;    &lt;summary class=&#34;question&#34;&gt;&#xA;        Prompt&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;question&#34;&gt;&#xA;        &#xA;    &#xA;    &lt;p&gt;Open &lt;code&gt;annale2013.pdf&lt;/code&gt; and go to page 6, where you will find a pair of data tables with measured precipitations [sic! sarebbe dovuto essere &amp;ldquo;temperatures&amp;rdquo;] for two weather stations. The data is arranged in pairs of columns, and each pair corresponds to a month, &lt;code&gt;G&lt;/code&gt; for &lt;code&gt;gennaio&lt;/code&gt; (january), &lt;code&gt;F&lt;/code&gt; for &lt;code&gt;febbraio&lt;/code&gt; (february), etc,. until &lt;code&gt;D&lt;/code&gt; or &lt;code&gt;dicembre&lt;/code&gt; (december).&lt;/p&gt;&#xA;    &lt;p&gt;As for the pairs, the first column is the minimum temperature and the second column is the maximum temperature.&lt;/p&gt;&#xA;    &lt;p&gt;Each row represents a different day.&lt;/p&gt;&#xA;    &lt;p&gt;At the end of each table there are some summary data, &lt;code&gt;Medie&lt;/code&gt;, &lt;code&gt;Med.mens.&lt;/code&gt; and &lt;code&gt;Med.norm&lt;/code&gt; that you can skip.&lt;/p&gt;&#xA;    &lt;p&gt;Missing data can be marked by either one or more &lt;code&gt;&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;&lt;/code&gt; signs, or by &lt;code&gt;=&lt;/code&gt; or be simply blank. In some tables there are extraneuous signs that you can skip outright.&lt;br&gt;&#xA;    Read the table and generate two different csv files, one for the maximum temperature and one for the minimum temperature, following this example&lt;/p&gt;&#xA;    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Date,Altamura,Andretta&#xA;    2007-01-01,13.4, 7.7,&#xA;    2007-01-02,15.7, 9.7,&#xA;    2007-01-03, 7.1, 2.7,&#xA;    2007-01-04, 9.5, 7.0,&#xA;    &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The header contains the date in ISO format, YYYY-MM-DD, and the name of the weather station which is written in bold at the top of each table, just under the months. All other information in thsi area, eg., &lt;code&gt;(Te)&lt;/code&gt;, &lt;code&gt;Bacino&lt;/code&gt; etc. is not useful and can be skipped.&lt;/p&gt;&#xA;    &#xA;&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Gemini prova e riprova a risolvere il problema con Python, ma i suoi script producono un sacco di errori e saltano parecchi giorni con dati validi. Del resto non è un problema facile, ci ho buttato il sangue io stesso per mesi, per cui gli do un aiutino.&lt;/p&gt;&#xA;&lt;p&gt;Ma a questo punto Gemini va in errore e non c&amp;rsquo;è verso di andare avanti.&lt;/p&gt;&#xA;&lt;p&gt;La cosa migliore sarebbe ricominciare da zero, ma nel frattempo ho raggiunto il &lt;code&gt;quota limit for Gemini 3 Pro (High)&lt;/code&gt; e dovrei aspettare diversi giorni prima di poter continuare.&lt;/p&gt;&#xA;&lt;p&gt;Non se ne parla, preferisco cambiare modello e passo a &lt;code&gt;Gemini 3 Flash&lt;/code&gt; di cui tutti parlano in questo momento. Gemini 3 Flash si mette al lavoro e mi propone un piano di lavoro che sembra sensato, ma che alla prova dei fatti produce, come ammette lui stesso, una &lt;em&gt;jumbled mess&lt;/em&gt; (un pasticcio confuso) perché ci sono &lt;em&gt;extraneous characters and unclear formatting&lt;/em&gt; (caratteri estranei e formattazione poco chiara).&lt;/p&gt;&#xA;&lt;p&gt;Gli suggerisco di usare la libreria &lt;code&gt;pdftools&lt;/code&gt; di R, che ho usato io stesso e che dà risultati infinitamente migliori dei tool analoghi per Python e alla fine, bingo!, Gemini ce la fa e produce un file dati corretto al 100%.&lt;/p&gt;&#xA;&lt;p&gt;Lo so, per essere davvero utile dovrei fargli ripetere il processo per tutte le stazioni e per parecchi anni diversi, ma per ora mi accontento, anche perché non voglio sprecare tutta la mia quota in questa attività. In ogni caso il risultato raggiunto con &lt;code&gt;Gemini 3 Flash&lt;/code&gt; è molto promettente e merita di essere approfondito come si deve.&lt;/p&gt;&#xA;&lt;p&gt;Va detto, invece, che con &lt;code&gt;Claude Sonnet 4.5 (Thinking)&lt;/code&gt; non c&amp;rsquo;è verso di fargli fare qualcosa di buono. Prova e riprova, raggiungo il limite di quota anche per questo modello  e mi devo fermare.&lt;/p&gt;&#xA;&lt;p&gt;Votazione? Gemini 3 Flash prende il massimo, mentre Gemini 3 Pro andrebbe riprovato nelle stesse condizioni del modello minore. Claude Sonnet 4.5, infine, prende un non classificato&lt;/p&gt;&#xA;&lt;h5 id=&#34;compito-7-programmazione-di-un-microcontroller&#34;&gt;Compito #7: Programmazione di un microcontroller&lt;/h5&gt;&#xA;&lt;p&gt;Un altro campo in cui le funzioni &lt;em&gt;agentiche&lt;/em&gt; di Google Antigravity potrebbero dimostrarsi molto interessanti e la programmazione dei microcontroller, come Arduino, Raspberry Pi Pico o ESP32. Ci sono letteralmente una marea di questi oggettini, e non per niente facile orientarsi fra i tanti modelli diversi e, ancora di più, fra le migliaia di sensori e moduli che gli si possono collegare.&lt;/p&gt;&#xA;&lt;p&gt;In questo caso specifico, un sistema di IA che produca velocemente del codice funzionante potrebbe essere davvero utile.&lt;/p&gt;&#xA;&lt;p&gt;Per le mie prove decido di usare un &lt;a href=&#34;https://www.arduino.cc/pro/hardware-product-nicla-vision/&#34;&gt;Nicla Vision&lt;/a&gt;, che di fatto è un Arduino con una videocamera incorporata. Il Nicla Vision è un vero gioiellino, che non costa poco ma che vale tutti i soldi spesi. Ma è anche un oggetto poco diffuso rispetto ai normali microcontroller, per cui se Antigravity riesce a programmarlo correttamente, riuscirà di sicuro a fare altrettanto con i normali Arduino, Pi Pico o ESP32.&lt;/p&gt;&#xA;&lt;p&gt;Torno quindi ad usare &lt;code&gt;Gemini 3 Flash&lt;/code&gt; e gli chiedo se conosce il Nicla Vision. Gli do anche il link alla pagina web del prodotto per aiutarlo ad orientarsi. Gemini mi conferma di sapere bene di cosa sto parlando, per cui possiamo partire può partire.&lt;/p&gt;&#xA;&lt;p&gt;Per programmare questi oggettini, io ho sempre e solo usato &lt;a href=&#34;https://www.arduino.cc/en/software/&#34;&gt;Arduino IDE&lt;/a&gt; e &lt;a href=&#34;https://thonny.org/&#34;&gt;Thonny&lt;/a&gt; e non so se Gemini può gestire il microcontroller direttamente dall&amp;rsquo;editor. Quando glielo chiedo, Gemini risponde con un comando molto semplice&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;% ls /dev/tty.usbmodem* /dev/cu.usbmodem* 2&amp;gt;/dev/null || echo &amp;#34;No usbmodem devices found&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che permette di controllare che il Nicla Vision sia collegato al Mac. Una volta che l&amp;rsquo;ha trovato, verifica se sono installate le librerie Python necessarie per comunicare con il microcontroller e, dato che non ci sono, mi propone di installarle. Giustamente mi dà anche la possibilità di scegliere se farlo a livello globale o in un &lt;code&gt;virtual environment&lt;/code&gt;, e non c&amp;rsquo;è bisogno di dire che scelgo la seconda opzione.&lt;/p&gt;&#xA;&lt;p&gt;Gemini prepara anche un piccolo script di test che fa lampeggiare il LED (il classico Hello World dell&amp;rsquo;IoT) e, quando gli confermo che tutto funziona, proclama soddisfatto&lt;/p&gt;&#xA;&#xA;&lt;details class=&#34;answer&#34; open&gt;&#xA;    &lt;summary class=&#34;answer&#34;&gt;&#xA;        Risposta&#xA;    &lt;/summary&gt;&#xA;    &lt;div class=&#34;answer&#34;&gt;&#xA;        &#xA;I&#39;m ready to start writing more complex code for your project. What would you like to build first?&#xA;&lt;div&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;p&gt;Fin qui Gemini non fa nulla di più di quello che avrei potuto fare io stesso con &lt;a href=&#34;https://brew.sh/&#34;&gt;Homebrew&lt;/a&gt; e &lt;a href=&#34;https://github.com/conda/conda&#34;&gt;Conda&lt;/a&gt;. Ma per riuscirci avrei dovuto consultare pagine e pagine di documentazione sparsa per il web. Qui invece riesco a configurare tutto in pochi minuti, e per di più imparo tante cose utili.&lt;/p&gt;&#xA;&lt;p&gt;Dato che Gemini era così ansioso di rendersi utile, gli ho chiesto di scrivere un piccolo programma che sfrutta il Nicla Vision per scattare delle foto ad intervalli prestabiliti e inviarle al Mac tramite Wi-Fi. Risultato? Ha funzionato tutto al primo colpo.&lt;/p&gt;&#xA;&lt;p&gt;E Gemini non si è nemmeno offeso quando gli ho detto papale papale che non mi fidavo a dargli in pasto la password del mio Wi-Fi, anzi ha proposto una soluzione alternativa più sicura. Ma io sono malfidato, e alla fine ho usato l&amp;rsquo;hotspt del mio iPhone con una password usa e getta.&lt;/p&gt;&#xA;&lt;p&gt;Anche l&amp;rsquo;ultimo compito è superato a pieni voti.&lt;/p&gt;&#xA;&lt;h4 id=&#34;lasciare-una-traccia&#34;&gt;Lasciare una traccia&lt;/h4&gt;&#xA;&lt;p&gt;&lt;del&gt;Una cosa seccante di Antigravity è che non dispone di una funzione per esportare un &lt;code&gt;log&lt;/code&gt; completo di quello che si fa, con le domande fatte e le risposte del modello, e magari anche i suoi &lt;em&gt;pensieri&lt;/em&gt;.&lt;/del&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Correzione.&lt;/strong&gt; Mi sbagliavo, l&amp;rsquo;abbreviazione da tastiera &lt;strong&gt;CMD&lt;/strong&gt; (⌘)-&lt;strong&gt;E&lt;/strong&gt; consente di aprire l&amp;rsquo;&lt;code&gt;Agent Manager&lt;/code&gt;, una finestra separata di Antigravity che, fra le altre cose, consente di vedere l&amp;rsquo;intera storia di quello che ha fatto Antigravity, compresi i suoi &lt;em&gt;pensieri&lt;/em&gt;. Il problema è che non c&amp;rsquo;è una voce di menu specifica per l&amp;rsquo;Agent Manager (o almeno, io non l&amp;rsquo;ho trovata) e l&amp;rsquo;abbreviazione da tastiera è visibile solo all&amp;rsquo;avvio del programma.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Correzione #2.&lt;/strong&gt; Si può aprire l&amp;rsquo;Agent Manager direttamente dalla barra degli strumenti di Antigravity: la voce corrispondente si trova proprio accanto alle icone che permettono di modificare il layout dell’applicazione e di effettuare delle ricerche. Non so perché non me ne sia accorto prima, ma è anche vero che tutti gli altri comandi della barra degli strumenti sono rappresentati da icone; per questo non è immediato riconoscere quella voce come un comando anziché come una semplice stringa, come avviene per il nome dell’applicazione che occupa il centro della barra degli strumenti.&lt;/p&gt;&#xA;&lt;p&gt;In ogni caso, dopo ogni operazione volta, Antigravity mi permette di leggere un &lt;code&gt;Walkthrough&lt;/code&gt; dettagliato di ciò che ha fatto  e, facendo click con il tasto destro sul Tab relativo,&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/walkthrough.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;mi accorgo che posso &lt;em&gt;rivelare&lt;/em&gt; il file nel Finder. Quando lo faccio, compare una cartella con un gran numero di file Markdown, con nomi standard come &lt;code&gt;implementation_plan&lt;/code&gt;, &lt;code&gt;task&lt;/code&gt;,  o &lt;code&gt;walkthrough&lt;/code&gt; seguiti dal suffisso &lt;code&gt;resolved&lt;/code&gt; e da un numero progressivo&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2026-01-21-sorpresa-antigravity/agent-files.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;che dovrebbero rappresentare la &lt;em&gt;storia&lt;/em&gt; di tutto quello che faccio con il sistema agentico.&lt;/p&gt;&#xA;&lt;p&gt;Da quanto vedo, ogni volta che chiedo qualcosa ad uno degli &lt;em&gt;agenti&lt;/em&gt; integrati, Antigravity genera tre file contenenti: (1) quello che deve fare, &lt;code&gt;task&lt;/code&gt;, (2) il piano di lavoro, &lt;code&gt;implementation_plan&lt;/code&gt; e (3) una sintesi di quello che ha fatto, &lt;code&gt;walkthrough&lt;/code&gt;. A prima vista, non è facile mettere in relazione fra loro questi file, ma il meccanismo merita di essere approfondito. Per la cronaca, tutti i file in questione si trovano in una directory contenuta all&amp;rsquo;interno di  &lt;code&gt;~/.gemini/antigravity/brain/&lt;/code&gt;, ma la directory principale &lt;code&gt;~/.gemini/antigravity/&lt;/code&gt; contiene parecchie altre directory con file di configurazione, codice generato e altro.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;Da quello che ho scritto è chiaro che usare Antigravity mi è piaciuto. Ci sono casi in cui chi sa programmare rischia di essere &lt;a href=&#34;https://mastodon.social/@recantha/115829219381438249&#34;&gt;più rallentato che aiutato&lt;/a&gt;, ma in generale, e soprattutto per coloro che sanno usare Word, Excel e poco più, le funzioni &lt;em&gt;agentiche&lt;/em&gt; di Antigravity possono rivelarsi un aiuto davvero prezioso.&lt;/p&gt;&#xA;&lt;p&gt;Nel corso della mia vita di programmatore non-professionista sono passato dallo  scrivere il codice consultando i volumoni giganteschi di documentazione a cercare le risposte su &lt;a href=&#34;https://stackoverflow.com&#34;&gt;StackOverflow&lt;/a&gt;. Per come la vedo io, le funzioni &lt;em&gt;agentiche&lt;/em&gt; di Antigravity sono come uno &lt;a href=&#34;https://stackoverflow.com/&#34;&gt;StackOverflow&lt;/a&gt; con il turbo: non si limitano a presentare delle risposte alle nostre domande, ma le interpretano, ragionano su di esse e propongono soluzioni in modo quasi autonomo.&lt;/p&gt;&#xA;&lt;p&gt;Ma, proprio come su StackOverflow, bisogna sempre fare affidamento sulle proprie conoscenze e sulla propria esperienza per separare il grano dal loglio, le risposte utili e davvero funzionanti da quelle che valgono meno di niente.&lt;/p&gt;&#xA;&lt;p&gt;Non parliamo però per favore di &lt;em&gt;vibe coding&lt;/em&gt;, cioè di poter chiedere genericamente al programma di svolgere un dato compito, per poi andarsene in giro mentre Antigravity fa tutto da solo!&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; Come si vede dagli esempi, se non si è molto precisi e non gli si spiega per bene cosa vogliamo, controllando poi passo passo ciò che Antigravity propone di fare, si rischia che l&amp;rsquo;intero processo fallisca o produca dei risultati sbagliati.&lt;/p&gt;&#xA;&lt;p&gt;Proprio come un tesista, una dottoranda, o un nuovo collega, Antigravity può darti una grossa mano se sai cosa vuoi e come lo vuoi ottenere, e se glielo spieghi per bene. Ma &lt;a href=&#34;https://bigthink.com/starts-with-a-bang/vibe-physics-ai-slop/&#34;&gt;fargli tirare fuori delle idee sue&lt;/a&gt;, non dico originali ma almeno sensate, per ora è solo fantascienza. O marketing.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Già il solo fatto che Google utilizzasse, per un suo strumento di sviluppo, del codice prodotto da un concorrente diretto mi sembrava, diciamo così, piuttosto singolare.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;È vero che TextMate e BBEdit non sono delle IDE vere e proprie (soprattutto TextMate), ma la differenza di dimensioni rimane lo stesso impressionante.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Io stesso ho sviluppato parecchi anni fa un programma in &lt;del&gt;C&lt;/del&gt;, no era in Python, che faceva tutto da solo, ma funzionava solo con le immagini di un tipo ben determinato di oscilloscopio digitale.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;La fantasia degli estensori delle tabelle meriterebbe un premio.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:5&#34;&gt;&#xA;&lt;p&gt;Anche un guru della programmazione molto indaffarato come Linus Torvalds usa il vibe coding, ma sa perfettamente quello che vuole fargli fare. E comunque lo usa solo &lt;a href=&#34;https://itsfoss.com/news/linus-torvalds-vibe-coding/&#34;&gt;per i suoi giochetti&lt;/a&gt;, non certo per sviluppare il kernel di Linux.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Fotocopiato!</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/12/15/fotocopiato/</link>
      <pubDate>Mon, 15 Dec 2025 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/12/15/fotocopiato/</guid>
      <description>&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/SVCBA-pBgt0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;p&gt;Il video qui sopra è la presentazione ufficiale di &lt;a href=&#34;https://antigravity.google/&#34;&gt;Google Antigravity&lt;/a&gt;, una IDE (&lt;em&gt;Integrated Development Environment&lt;/em&gt;) che non è solo una semplice IDE ma è &amp;ldquo;&lt;em&gt;un nuovo modo di lavorare per questa prossima era dell&amp;rsquo;intelligenza agentica&lt;/em&gt;&amp;rdquo;. Che non ho ancora ben capito cosa significa, ma che suona tanto intelligente e al passo con i tempi.&lt;/p&gt;&#xA;&lt;p&gt;E allora vediamo cos&amp;rsquo;è questo &amp;ldquo;&lt;em&gt;nuovo modo di lavorare&lt;/em&gt;&amp;rdquo; nel quale gli agenti &amp;ldquo;&lt;em&gt;ti aiutano a decollare&lt;/em&gt;&amp;rdquo;. Una espressione che in altri tempi avrebbe significato ben altro.&lt;/p&gt;&#xA;&lt;p&gt;Scarico l&amp;rsquo;ultima versione disponibile di Google Antigravity, la 1.11.17 per la cronaca, che una volta installata occupa la bellezza di 700 MB. Una volta superate le solite schermate di &lt;em&gt;onboarding&lt;/em&gt; ed essermi autenticato tramite il mio account Gmail, ecco cosa viene fuori&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/google-antigravity.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/google-antigravity.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Praticamente &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;VS Code&lt;/a&gt; di Microsoft, con in più il tool &lt;em&gt;agentico&lt;/em&gt; &lt;code&gt;Antigravity&lt;/code&gt;, che non so ancora bene a cosa possa servire e, soprattutto, se serve davvero.&lt;/p&gt;&#xA;&lt;p&gt;Del resto, me lo avevano praticamente detto durante l&amp;rsquo;onboarding, quando è comparsa questa schermata dove mi veniva proposto di configurare l&amp;rsquo;editor da zero oppure di importare la configurazione da VS Code. O da Windsurf.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/google-antigravity-setup.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/google-antigravity-setup.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Windsurf?&lt;/p&gt;&#xA;&lt;p&gt;Sì, &lt;a href=&#34;https://windsurf.com/&#34;&gt;Windsurf&lt;/a&gt;, un editor derivato da &lt;a href=&#34;https://cursor.com/&#34;&gt;Cursor&lt;/a&gt;,&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; che a sua volta derivava dal solito VS Code.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/windsurf.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/windsurf.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;La somiglianza (per usare un eufemismo) diventa evidente quando li si mette uno accanto all&amp;rsquo;altro, Antigravity a sinistra e Windsurf a destra.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/side-by-side.png&#34;&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-12-15-fotocopiato/side-by-side.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Identici.&lt;/p&gt;&#xA;&lt;p&gt;Insomma, l&amp;rsquo;IDE rivoluzionaria, il &amp;ldquo;&lt;em&gt;nuovo modo di lavorare per questa prossima era dell&amp;rsquo;intelligenza agentica&lt;/em&gt;&amp;rdquo; che &amp;ldquo;&lt;em&gt;ti aiuta a decollare&lt;/em&gt;&amp;rdquo;, non è altro che un clone di un editor che a sua volta era già il clone di un altro editor che a sua volta era il clone&amp;hellip;&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/Rm_aUj4B4dU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;p&gt;Basta &lt;a href=&#34;https://levelup.gitconnected.com/the-2-4b-clone-how-three-companies-carved-up-one-startup-in-72-hours-36039524a9bb&#34;&gt;approfondire un po&amp;rsquo;&lt;/a&gt; per scoprire che Google ha speso 2.4 miliardi di dollari per acquisire il codice di Windsurf e per assumere i due fondatori, Varun Mohan e Douglas Chen, insieme ad una manciata di sviluppatori dell&amp;rsquo;azienda.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; Ma, per timore di interventi dell&amp;rsquo;antitrust, Google ha evitato di acquistare il prodotto vero e proprio o il marchio, per cui Windsurf continua ad esistere e ad essere sviluppato indipendentemente, provando a ripetere la storia di Davide contro Golia.&lt;/p&gt;&#xA;&lt;p&gt;Insomma, è un po&amp;rsquo; come se negli anni &amp;lsquo;80 Microsoft avesse assunto Steve Jobs e Steve Wozniak, con magari anche Bill Atkinson, Andy Hertzfeld e Susan Kare, prendendo con loro anche il codice del primo Macintosh. Per poi ripubblicarlo qualche mese dopo come Windows 1.0. E tutto ciò mentre Apple continuava tranquillamente a sviluppare lo stesso codice per il Mac originale.&lt;/p&gt;&#xA;&lt;p&gt;Ho l&amp;rsquo;impressione che quelli di Google abbiano usato qualcos&amp;rsquo;altro per decollare.&lt;/p&gt;&#xA;&lt;p&gt;Ma a parte le battute, gli &lt;em&gt;agenti&lt;/em&gt; presenti in Antigravity funzionano e sono utili nel corso dello sviluppo del codice? Non lo so nemmeno io, ed è quello che vedremo in diretta la prossima volta.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Chi è interessato alle polemiche nate dopo le ultime modifiche ai prezzi di Cursor può leggere &lt;a href=&#34;https://medium.com/@chrisdunlop_37984/wtf-is-cursor-doing-with-its-pricing-i-have-to-swap-at-this-rate-63681001a08e&#34;&gt;qui&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;L&amp;rsquo;articolo citato è a pagamento, ma può essere letto liberamente &lt;a href=&#34;https://freedium-mirror.cfd/https://levelup.gitconnected.com/the-2-4b-clone-how-three-companies-carved-up-one-startup-in-72-hours-36039524a9bb&#34;&gt;qui&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
  </channel>
</rss>
