<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Gemini on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/gemini/</link>
    <description>Recent content in Gemini on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Wed, 04 Mar 2026 18:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/gemini/index.xml" rel="self" type="application/rss+xml" />
    <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>
  </channel>
</rss>
