<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Arduino on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/arduino/</link>
    <description>Recent content in Arduino 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/arduino/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>Babbo Natale in ritardo</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2024/03/15/babbo-natale-in-ritardo/</link>
      <pubDate>Fri, 15 Mar 2024 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2024/03/15/babbo-natale-in-ritardo/</guid>
      <description>&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2024-03-15-babbo-natale-in-ritardo/IMG_2221.jpeg&#34; alt=&#34;&#34;&gt;&lt;p&gt;Babbo Natale è arrivato un po&amp;rsquo; in ritardo quest&amp;rsquo;anno, però mi ha portato un bel po&amp;rsquo; di Raspberry e Arduino, con accessori in quantità. Tutto pagato da un Ministero, che è sempre una bella soddisfazione.&lt;/p&gt;&#xA;&lt;p&gt;Ora ho il &lt;a href=&#34;https://melabit.com/it/2024/02/04/mac-studio/&#34;&gt;Mac Studio&lt;/a&gt;, ho i Raspberry, ho gli Arduino, ho tutti i sensori che mi servono; non ho più scuse, devo mettermi a lavorare sul serio!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Golf a rischio</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2016/08/21/golf-a-rischio/</link>
      <pubDate>Sun, 21 Aug 2016 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2016/08/21/golf-a-rischio/</guid>
      <description>&lt;p&gt;È un periodaccio per la Volkswagen. Prima il dieselgate, lo scandalo delle emissioni truccate dei motori diesel, esploso un anno fa negli USA e che costerà all&amp;rsquo;azienda di Wolfsburg almeno 15 miliardi (!) di dollari di multe e rimborsi ai consumatori statunitensi (ma non a quelli europei, la Commissione Europea come al solito, forte con i deboli ma debolissima con i forti ha deciso di non perseguire la Volkswagen).&lt;/p&gt;&#xA;&lt;p&gt;Poi la pubblicazione dell&amp;rsquo;esistenza di una &lt;a href=&#34;http://www.bloomberg.com/news/articles/2015-08-14/vw-has-spent-two-years-trying-to-hide-a-big-security-flaw&#34;&gt;falla nel sistema di accensione&lt;/a&gt;, che consente di mettere in moto da remoto le auto del gruppo costruite a partire dal 1995 anche se non si dispone del telecomando con chip RFID che in teoria dovrebbe proteggere l&amp;rsquo;auto dalle attenzioni dei malintenzionati.&lt;/p&gt;&#xA;&lt;p&gt;Ora la scoperta di una grave &lt;a href=&#34;https://www.wired.com/2016/08/oh-good-new-hack-can-unlock-100-million-volkswagens/&#34;&gt;vulnerabilità del sistema di sblocco della serratura&lt;/a&gt;. Un semplice congegno elettronico da 40 dollari, costruito utilizzando il diffusissimo micro-controller Arduino, permette di clonare il telecomando ed aprire a distanza la serratura delle Volkswagen, Audi, Seat, Skoda, costruite negli ultimi quindici anni. Fanno circa 100 milioni di auto a rischio.&lt;/p&gt;&#xA;&lt;p&gt;La Volkswager ha fatto di tutto per evitare che questi problemi venissero resi pubblici, arrivando persino a &lt;a href=&#34;https://www.theguardian.com/technology/2013/jul/26/scientist-banned-revealing-codes-cars&#34;&gt;perseguire legalmente&lt;/a&gt; i ricercatori che hanno scoperto le falle nei sui sistemi di &lt;em&gt;sicurezza&lt;/em&gt;. Meglio nascondere la testa sotto la sabbia che tutelare i clienti cercando di risolvere il problema.&lt;/p&gt;&#xA;&lt;p&gt;Intanto i veri &lt;em&gt;cattivi&lt;/em&gt; probabilmente usano già queste tecniche per rubare le auto di alto livello del gruppo. Oppure per rubare oggetti di valore senza lasciare tracce. Ci sono i &lt;a href=&#34;https://www.wired.com/2016/08/oh-good-new-hack-can-unlock-100-million-volkswagens/&#34;&gt;video che lo dimostrano&lt;/a&gt;: la polizia non ci si raccapezza, le assicurazioni non pagano, i danneggiati vengono considerati dei truffatori in cerca di un finto risarcimento.&lt;/p&gt;&#xA;&lt;p&gt;Soluzioni? Una sola, proposta dagli stessi ricercatori che hanno scoperto le falle di sicurezza: usare la serratura meccanica. Come facevo a fine anni settanta con la 500 (quella vera) di mia madre.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
