<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sviluppo &#8211; R.B.log</title>
	<atom:link href="https://www.robertobeccari.it/category/sviluppo/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.robertobeccari.it</link>
	<description>Costruire il futuro con codice, intelligenza e visione</description>
	<lastBuildDate>Wed, 21 Oct 2026 20:02:05 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.robertobeccari.it/wp-content/uploads/2015/10/cropped-161193_1482348350_790694714_n-32x32.jpg</url>
	<title>Sviluppo &#8211; R.B.log</title>
	<link>https://www.robertobeccari.it</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">101702527</site>	<item>
		<title>Se tutti copiano, chi inventa?</title>
		<link>https://www.robertobeccari.it/2026/10/22/se-tutti-copiano-chi-inventa/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 06:45:00 +0000</pubDate>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[sviluppo]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=2510</guid>

					<description><![CDATA[Sette app in pochi giorni A inizio ottobre uno sviluppatore di Atlanta, Brandon Thomas, ha pubblicato ArtCraft: sette applicazioni open source che rifanno Photoshop, Lightroom, Illustrator, Premiere e le altre…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>5 Minute, 28 Second                </div>

            </div>
<h2 class="wp-block-heading">Sette app in pochi giorni</h2>



<p class="wp-block-paragraph">A inizio ottobre uno sviluppatore di Atlanta, Brandon Thomas, ha pubblicato <a target="_blank" rel="noopener" href="https://getartcraft.com/apps">ArtCraft</a>: sette applicazioni open source che rifanno Photoshop, Lightroom, Illustrator, Premiere e le altre della suite Adobe. Scritte in Rust, con Claude Opus 5.5, rilasciate con licenza MIT o Apache 2.0. Qualche giorno dopo sono arrivati anche i cloni di Word, Excel e PowerPoint.</p>



<p class="wp-block-paragraph">In otto giorni i repository hanno superato le 42.000 stelle su GitHub. Il clone di Photoshop da solo ne aveva più di 23.000, insieme a 447 issue aperte.</p>



<p class="wp-block-paragraph">La reazione è stata quella che vi immaginate. Sui social e su Reddit si legge che il software proprietario è finito, che Adobe ha i giorni contati, che finalmente l&#8217;open source si riprende quello che le Big Tech gli hanno preso. Uno dei fondatori di ArtCraft l&#8217;ha chiamato una specie di karma cosmico. Intanto tra i repository più in tendenza su GitHub è finito uno strumento che promette di far smontare a un agente qualsiasi applicazione.</p>



<p class="wp-block-paragraph">Capisco l&#8217;entusiasmo. Chi ha pagato per anni un abbonamento Adobe, con penali di disdetta e il cloud obbligatorio, ha più di un motivo per godersi il momento. Però da tech lead, e da persona che il software lo costruisce per i clienti, sento il bisogno di frenare un attimo. Ci sono due domande che in questo coro non sento fare.</p>



<h2 class="wp-block-heading">L&#8217;open source vive se qualcuno ci investe</h2>



<p class="wp-block-paragraph">Sia chiaro: l&#8217;open source è uno dei motori di innovazione più potenti che abbiamo. Linux, PostgreSQL, Kubernetes, gran parte dello stack su cui lavoro ogni giorno. Nessuno di noi tornerebbe indietro.</p>



<p class="wp-block-paragraph">Ma questi progetti non sono nati dal nulla e non stanno in piedi da soli. Dietro Linux ci sono aziende che pagano migliaia di sviluppatori. Dietro Kubernetes c&#8217;è stato Google, e poi una fondazione finanziata da chi su Kubernetes ci guadagna. L&#8217;open source che dura è quasi sempre quello attorno a cui qualcuno ha costruito un modello economico.</p>



<p class="wp-block-paragraph">Quando quel modello si rompe, succede quello che abbiamo visto con Elastic, Redis, HashiCorp. Aziende che avevano scelto l&#8217;open source hanno cambiato licenza, perché altri prendevano il loro lavoro e lo rivendevano senza restituire nulla. Ogni volta la comunità si è indignata. Ogni volta il problema era lo stesso: chi investe deve poter recuperare l&#8217;investimento.</p>



<p class="wp-block-paragraph">C&#8217;è poi l&#8217;altro lato, quello di chi il software lo adotta. Un&#8217;azienda che sceglie uno strumento non compra solo funzionalità. Compra la ragionevole certezza che tra tre anni esisterà ancora, che le vulnerabilità verranno corrette, che i file di oggi si apriranno domani, che ci sarà qualcuno da chiamare quando qualcosa si rompe.</p>



<p class="wp-block-paragraph">Un clone in alpha con centinaia di issue aperte e un team di quattro persone non offre niente di tutto questo. Può diventarlo, e glielo auguro. Ma oggi è un prototipo impressionante, non un&#8217;alternativa su cui un&#8217;azienda può basare il proprio lavoro. Chi lo confonde con una sostituzione pronta all&#8217;uso fa lo stesso errore di chi giudica un progetto dalla demo.</p>



<h2 class="wp-block-heading">Se copiare costa una settimana, chi paga la ricerca?</h2>



<p class="wp-block-paragraph">La seconda domanda mi preoccupa di più. Photoshop non è diventato Photoshop in una settimana. Dietro ci sono più di trent&#8217;anni di tentativi, funzioni nate e abbandonate, migliaia di conversazioni con fotografi e designer per capire cosa serviva davvero. Quel lavoro è la parte costosa. Scrivere il codice, a un certo punto, è stato il meno.</p>



<p class="wp-block-paragraph">Il reverse engineering, anche nella versione &#8220;clean-room&#8221; che ArtCraft rivendica, parte dal comportamento osservabile. Copia la risposta. Non rifà il percorso che ha portato a quella risposta, e non saprebbe rifarlo per la prossima.</p>



<p class="wp-block-paragraph">Ora provate a mettervi nei panni di chi decide un budget di ricerca e sviluppo. Se una qualunque innovazione visibile può essere replicata in pochi giorni da un piccolo team con un modello, il ritorno di quell&#8217;investimento si accorcia drasticamente. La conseguenza razionale è investire meno, o chiudersi di più: brevetti, codice offuscato, funzioni spostate sul server dove nessuno le può osservare. Non a caso ad aprile Airbus ha annunciato l&#8217;acquisizione di un&#8217;azienda specializzata proprio nel proteggere il software dal reverse engineering fatto con l&#8217;AI.</p>



<p class="wp-block-paragraph">Qui c&#8217;è un paradosso che i più entusiasti non vedono. I cloni copiano lo stato dell&#8217;arte di oggi. Se smettiamo di finanziare chi lo spinge avanti, tra cinque anni avremo ottimi cloni di software fermo al 2026. Il copiatore vive del lavoro dell&#8217;innovatore. Senza l&#8217;innovatore resta poco da copiare.</p>



<p class="wp-block-paragraph">E vale la pena notare un dettaglio: nemmeno ArtCraft è beneficenza. Le app sono gratuite, ma il progetto si finanzia vendendo l&#8217;accesso al proprio modello di generazione di immagini, integrato nelle app stesse. L&#8217;open source, qui, è un canale di distribuzione. Legittimo, ma è un modello di business come gli altri.</p>



<h2 class="wp-block-heading">Quello che non si copia guardando lo schermo</h2>



<p class="wp-block-paragraph">Non credo però che la ricerca sparisca. Credo che si sposti. Se le funzionalità visibili diventano facili da replicare, il valore si concentra su ciò che dall&#8217;esterno non si vede.</p>



<ul class="wp-block-list">
<li><strong>La conoscenza del dominio.</strong> Sapere perché un fotografo lavora in un certo modo vale più dello strumento che lo asseconda.</li>



<li><strong>I dati e l&#8217;integrazione.</strong> Un prodotto inserito nei processi di un cliente, collegato ai suoi sistemi, non si sostituisce clonando l&#8217;interfaccia.</li>



<li><strong>L&#8217;affidabilità nel tempo.</strong> Aggiornamenti, sicurezza, compatibilità, supporto. Tutto quello che un&#8217;azienda compra quando sceglie un fornitore.</li>



<li><strong>La relazione.</strong> Chi conosce il cliente sa cosa costruire dopo. Il clone sa solo cosa è già stato costruito.</li>
</ul>



<p class="wp-block-paragraph">Il vantaggio competitivo basato sulle feature si sta comprimendo. Quello basato sulla fiducia e sulla continuità, secondo me, vale ogni giorno di più.</p>



<h2 class="wp-block-heading">Cosa ne faccio io, da tech lead</h2>



<p class="wp-block-paragraph">Nel mio lavoro questa storia si traduce in due abitudini.</p>



<p class="wp-block-paragraph">La prima riguarda le scelte tecnologiche. Quando il team propone uno strumento open source, la domanda non è &#8220;è gratis?&#8221; e nemmeno &#8220;funziona?&#8221;. È: chi lo manterrà tra tre anni, e con quali soldi? Se la risposta è &#8220;quattro persone entusiaste e tante stelle su GitHub&#8221;, ci va un piano B.</p>



<p class="wp-block-paragraph">La seconda riguarda il valore di quello che facciamo per i clienti. Se un&#8217;interfaccia si può rifare in un pomeriggio con un modello, il nostro valore non è mai stato l&#8217;interfaccia. È capire il problema, mantenere il sistema, farlo evolvere quando il contesto cambia. È lo stesso discorso che faccio da mesi sul software generato con l&#8217;AI: scriverlo è diventato facile, tenerlo in piedi no.</p>



<p class="wp-block-paragraph">L&#8217;open source resta una delle cose migliori che il nostro settore abbia prodotto. Proprio per questo merita più di un applauso ogni volta che qualcuno clona un prodotto famoso. Merita la domanda scomoda su chi pagherà la prossima idea, quella che oggi ancora nessuno può copiare.</p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="2510" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="2510" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="2510" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="2510" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="2510" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="2510" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2510</post-id>	</item>
		<item>
		<title>Come si forma un junior quando la prima stesura è gratis</title>
		<link>https://www.robertobeccari.it/2026/09/24/come-si-forma-un-junior-quando-la-prima-stesura-e-gratis/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Thu, 24 Sep 2026 07:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Intelligenza Artificiale]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=2451</guid>

					<description><![CDATA[Ogni generazione di sviluppatori senior ha pensato che quella dopo avesse la vita troppo facile. Chi ha imparato senza Stack Overflow ha guardato con sospetto chi ci è cresciuto dentro,…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>5 Minute, 41 Second                </div>

            </div>
<p class="wp-block-paragraph">Ogni generazione di sviluppatori senior ha pensato che quella dopo avesse la vita troppo facile. Chi ha imparato senza Stack Overflow ha guardato con sospetto chi ci è cresciuto dentro, e chi è cresciuto con Stack Overflow ha detto le stesse cose sui framework che nascondono tutto. Quasi sempre si sbagliavano: gli strumenti alzavano il livello del punto di partenza e la competenza si ricostruiva un po&#8217; più in alto.</p>



<p class="wp-block-paragraph">Prima di scrivere il resto di questo articolo mi sono chiesto se non stia facendo esattamente lo stesso errore. Non ne sono del tutto sicuro. Però credo che questa volta ci sia una differenza che vale la pena guardare da vicino, e non riguarda quanto è potente lo strumento: riguarda <strong>in quale punto del percorso toglie attrito</strong>.</p>



<h2 class="wp-block-heading">Lo stesso strumento fa due cose opposte</h2>



<p class="wp-block-paragraph">Quando io uso l&#8217;intelligenza artificiale per generare un modulo, sto delegando qualcosa che so fare. Leggo il risultato e vedo subito se la gestione degli errori è messa dove serve, se quella query diventerà un problema con dieci volte i dati, se quella scelta mi vincola su una cosa che tra sei mesi dovrò cambiare. Non lo vedo perché sono più intelligente: lo vedo perché quelle tre cose le ho già sbagliate, e le ho pagate.</p>



<p class="wp-block-paragraph">Quando un junior usa lo stesso strumento, sta delegando qualcosa che non ha mai fatto. Il risultato è identico. Quello che manca è tutto quello che succedeva <strong>prima</strong> che il risultato arrivasse.</p>



<p class="wp-block-paragraph">È lì che si formava la competenza. Non nel codice finito, che era anzi la parte meno interessante, ma nelle quattro ore passate a capire perché non partiva, nel dead end preso e abbandonato, nell&#8217;errore letto tre volte prima di accorgersi che diceva esattamente cosa fare. Quelle ore sembravano tempo perso, e in senso stretto lo erano: producevano poco. Producevano però un modello mentale di come le cose si rompono, che è l&#8217;unica cosa che poi permette di guardare del codice e sentire che qualcosa non torna prima di sapere perché.</p>



<p class="wp-block-paragraph">Quell&#8217;attrito non era un difetto del processo. Era il processo.</p>



<h2 class="wp-block-heading">Il plateau invisibile</h2>



<p class="wp-block-paragraph">C&#8217;è un effetto collaterale meno ovvio e secondo me più insidioso.</p>



<p class="wp-block-paragraph">Prima, il livello di un junior si vedeva dal suo output. Il codice diceva dov&#8217;era: cosa aveva capito, cosa stava ancora imitando, cosa non aveva mai incontrato. Era un segnale rumoroso ma leggibile, e serviva a due persone — a chi lo seguiva, per calibrare il lavoro da assegnargli, e a lui, per sapere dove si trovava.</p>



<p class="wp-block-paragraph">Oggi quel segnale è quasi sparito. L&#8217;output di un junior con un buon assistente è spesso indistinguibile da quello di una persona con cinque anni di esperienza. Sembra una buona notizia, e in parte lo è. Ma significa anche che nessuno dei due — né chi guida né chi impara — ha più un modo semplice di sapere a che punto è la crescita. La differenza salta fuori tutta insieme, e sempre nel momento peggiore: il primo problema che non assomiglia a niente di già visto, il primo incidente in produzione, la prima volta che lo strumento propone una soluzione plausibile e sbagliata.</p>



<p class="wp-block-paragraph">Il rischio non è avere junior meno capaci. È avere junior che sembrano competenti, si sentono competenti, e scoprono di non esserlo in una situazione dove quella scoperta costa cara a tutti.</p>



<h2 class="wp-block-heading">E poi c&#8217;è il problema economico</h2>



<p class="wp-block-paragraph">Qui la faccenda smette di essere pedagogica.</p>



<p class="wp-block-paragraph">I compiti che davamo ai junior avevano tutti le stesse caratteristiche: ben delimitati, a basso rischio, ripetitivi, con un risultato verificabile. Erano i gradini bassi della scala, e servivano esattamente a quello — far salire qualcuno.</p>



<p class="wp-block-paragraph">Sono anche, con precisione quasi comica, i compiti che oggi l&#8217;intelligenza artificiale svolge meglio. Più veloce, a costo quasi nullo, senza bisogno di supervisione.</p>



<p class="wp-block-paragraph">Quindi il problema non è solo &#8220;come faccio a insegnare&#8221;. È che il lavoro con cui si insegnava non ha più una ragione economica per esistere. Chi decide come allocare le persone su un progetto si trova davanti a una scelta che dieci anni fa non c&#8217;era: quel task lo do a una persona che deve imparare, sapendo che ci metterà tre giorni invece di venti minuti e che il risultato sarà peggiore, oppure lo chiudo stasera. La seconda opzione è sempre difendibile sul singolo progetto, e sistematicamente disastrosa sui tre anni.</p>



<p class="wp-block-paragraph">Nessuno prende mai la decisione di smettere di formare le persone. Si arriva lì una consegna alla volta.</p>



<h2 class="wp-block-heading">Cosa provo a fare, senza sapere se basta</h2>



<p class="wp-block-paragraph">Non ho una risposta pulita. Ho alcune cose che sto provando, con risultati diseguali.</p>



<p class="wp-block-paragraph"><strong>Prima scrivi, poi confronta.</strong> Su un pezzo scelto — non su tutto, sarebbe insostenibile — chiedo che la prima stesura sia fatta a mano, e solo dopo generata. Il valore non è nella versione scritta a mano, che quasi sempre è peggiore. È nel confronto: perché lo ha risolto così, cosa non avevo considerato, cosa invece nel mio era meglio e va tenuto. Il confronto insegna moltissimo, ma funziona solo se hai qualcosa da confrontare.</p>



<p class="wp-block-paragraph"><strong>La review si sposta dal codice al ragionamento.</strong> Non chiedo più solo se funziona. Chiedo perché quella scelta, cosa è stato scartato, cosa si rompe se il carico decuplica, cosa succede se quel servizio esterno risponde lento invece che dare errore. Se le risposte non ci sono, il codice non passa — anche quando funziona perfettamente. Non è pignoleria: è che il codice che nessuno sa spiegare è codice che nessuno potrà cambiare.</p>



<p class="wp-block-paragraph"><strong>Il debug di roba scritta da altri, presto.</strong> Un incidente in produzione insegna in un pomeriggio quello che un task assegnato non insegna in un mese, e non è delegabile: l&#8217;assistente ti aiuta a leggere lo stack trace, non ti toglie la responsabilità di capire perché quel sistema è fatto così. È anche l&#8217;unico attrito rimasto che non si può comprimere.</p>



<p class="wp-block-paragraph"><strong>Proprietà lunga su qualcosa di piccolo.</strong> Un componente vero, in produzione, seguito per mesi. Le conseguenze delle proprie scelte che tornano indietro dopo sei mesi sono il maestro più efficace che conosco, e sono l&#8217;esatto opposto della logica del task chiuso in venti minuti.</p>



<h2 class="wp-block-heading">La cosa che non so</h2>



<p class="wp-block-paragraph">Resta aperta un&#8217;obiezione seria, che mi faccio da solo.</p>



<p class="wp-block-paragraph">Forse la competenza che stiamo cercando di preservare non è più quella che serve. Forse il mestiere si sposta davvero verso il giudizio, la revisione, la capacità di decidere cosa vale la pena costruire — e forse quelle si possono allenare direttamente, senza passare dalle quattro ore sull&#8217;errore di compilazione. Se è così, quello che ho scritto qui sopra è nostalgia travestita da metodo, e tra dieci anni farà sorridere come le prediche su Stack Overflow.</p>



<p class="wp-block-paragraph">Non riesco a escluderlo. So solo che il giudizio, per come l&#8217;ho visto formarsi nelle persone con cui ho lavorato, è sempre arrivato dopo aver sbagliato abbastanza volte da riconoscere le forme. E che non ho ancora visto nessuno svilupparlo guardando funzionare cose che non ha capito.</p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="2451" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="2451" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="2451" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="2451" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="2451" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="2451" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2451</post-id>	</item>
		<item>
		<title>Il debito di comprensione</title>
		<link>https://www.robertobeccari.it/2026/09/21/il-debito-di-comprensione/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Mon, 21 Sep 2026 07:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Intelligenza Artificiale]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=2453</guid>

					<description><![CDATA[Il debito tecnico ha una qualità che oggi rimpiango: si vede. Lo riconosci mentre leggi. La funzione da quattrocento righe, il campo chiamato flag2, la logica di business finita dentro…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>5 Minute, 38 Second                </div>

            </div>
<p class="wp-block-paragraph">Il debito tecnico ha una qualità che oggi rimpiango: si vede.</p>



<p class="wp-block-paragraph">Lo riconosci mentre leggi. La funzione da quattrocento righe, il campo chiamato <code>flag2</code>, la logica di business finita dentro il controller, il modulo che tutti sanno di dover riscrivere e nessuno riscrive mai. Fa male al momento del contatto, e questo è esattamente ciò che lo rende gestibile: un dolore immediato è un segnale, e sui segnali si può decidere. Sai cos&#8217;hai, sai più o meno cosa costerebbe sistemarlo, e se scegli di non farlo è una scelta.</p>



<p class="wp-block-paragraph">Da un paio d&#8217;anni sto vedendo accumularsi qualcosa di diverso, che non ha nessuna di queste proprietà. Lo chiamo debito di comprensione, per mancanza di un nome migliore.</p>



<h2 class="wp-block-heading">Definizione</h2>



<p class="wp-block-paragraph">È codice corretto, funzionante, spesso scritto meglio della media del progetto che nessuno in azienda sa spiegare.</p>



<p class="wp-block-paragraph">Non &#8220;nessuno ha letto&#8221;. Nessuno <strong>sa spiegare</strong>: perché quella scelta e non un&#8217;altra, quali alternative sono state scartate, cosa succede se l&#8217;input arriva in un formato leggermente diverso, quale vincolo del sistema quel pezzo sta rispettando senza dirlo. Il codice è lì e fa il suo lavoro. Il modello mentale che lo ha prodotto non è mai entrato in nessuna testa.</p>



<p class="wp-block-paragraph">La differenza rispetto al debito tecnico è che qui non c&#8217;è niente da vedere. Il linter è verde. La copertura dei test è buona, perché i test li ha generati lo stesso strumento. La complessità ciclomatica è più bassa della media del repository. Nessuna metrica che usiamo oggi si accorge di questo debito, per la semplice ragione che tutte le nostre metriche guardano il codice, e il codice non ha alcun problema. Il problema è dall&#8217;altra parte, nelle persone, e lì non misuriamo niente.</p>



<h2 class="wp-block-heading">Non è nuovo, è solo accelerato</h2>



<p class="wp-block-paragraph">Vale la pena essere onesti: questo debito è sempre esistito. La persona che se ne va portandosi via l&#8217;unico modello mentale di un sottosistema. Il modulo scritto in una notte prima della consegna e mai più guardato. La libreria integrata copiando l&#8217;esempio della documentazione e funzionante per motivi che nessuno ha indagato. Codice che nessuno capisce ne abbiamo sempre avuto.</p>



<p class="wp-block-paragraph">Quello che è cambiato è il tasso di accumulo. Prima il debito di comprensione cresceva alla velocità con cui una persona poteva produrre codice senza capirlo e quella velocità era bassa, perché scrivere codice che non capisci è comunque faticoso e lento. C&#8217;era un limite fisico che faceva da freno, non per virtù ma per attrito.</p>



<p class="wp-block-paragraph">Quel limite non c&#8217;è più. Oggi una persona può immettere in un sistema, in una settimana, più codice non compreso di quanto ne avrebbe prodotto in un anno. E può farlo mentre tutti gli indicatori di qualità migliorano.</p>



<h2 class="wp-block-heading">Come si manifesta</h2>



<p class="wp-block-paragraph">Il debito di comprensione non si annuncia. Si vede di riflesso, e quasi sempre in fenomeni che attribuiamo ad altro:</p>



<p class="wp-block-paragraph"><strong>La modifica piccola che nessuno vuole prendere in carico.</strong> Un cambiamento apparentemente banale su una certa area, e in pianificazione cala il silenzio. Non è pigrizia: è che nessuno sa cosa si romperà.</p>



<p class="wp-block-paragraph"><strong>Le stime che si gonfiano su zone precise del sistema</strong> senza che nessuno sappia dire perché. Se chiedi, ti risponderanno &#8220;quella parte è delicata&#8221;. Delicata di solito significa opaca.</p>



<p class="wp-block-paragraph"><strong>&#8220;Funziona, non toccarlo&#8221;.</strong> La frase più costosa dell&#8217;intero mestiere, e il sintomo più diretto.</p>



<p class="wp-block-paragraph"><strong>I bug risolti aggiungendo codice invece che togliendolo.</strong> Chi ha il modello del sistema rimuove la causa; chi non ce l&#8217;ha aggiunge una condizione attorno al sintomo. È un indicatore che si legge nei diff, ed è piuttosto affidabile.</p>



<p class="wp-block-paragraph"><strong>La riscrittura che sembra più economica della modifica.</strong> Su un componente di sei mesi fa. Quando arriva questo, il debito non è da pagare: è già stato pagato, in perdita.</p>



<h2 class="wp-block-heading">Un modo per misurarlo</h2>



<p class="wp-block-paragraph">Non ho una metrica automatica da proporre e diffido di chi la propone. Ho un esercizio, che si fa in mezz&#8217;ora su una lavagna.</p>



<p class="wp-block-paragraph">Si elencano le aree del sistema, e per ognuna si scrive quante persone sono in grado di spiegarla <strong>senza aprirla</strong>: cosa fa, perché è fatta così, cosa la rompe. Non &#8220;quante ci hanno lavorato&#8221;. Quante la sanno spiegare.</p>



<p class="wp-block-paragraph">È il bus factor applicato alla comprensione anziché all&#8217;accesso, e il risultato è di solito peggiore di quanto chiunque si aspettasse soprattutto sulle parti costruite di recente e in fretta, che sono anche quelle che in retrospettiva sembravano essere andate meglio.</p>



<h2 class="wp-block-heading">Cosa lo riduce</h2>



<p class="wp-block-paragraph"><strong>La regola del &#8220;spiegamelo&#8221;.</strong> In revisione non passa ciò che l&#8217;autore non sa spiegare, anche quando funziona perfettamente. Il criterio non è &#8220;l&#8217;ho letto&#8221;, è &#8220;so dirti cosa succede se&#8221;. Va detto chiaramente al team che questo non è un test di lealtà verso gli strumenti: vale identico per il codice scritto a mano, e ha sempre dovuto valere. È solo che prima capitava di rado di scrivere qualcosa che non si sapeva spiegare.</p>



<p class="wp-block-paragraph"><strong>Documentare le decisioni, non il codice.</strong> Il codice generato è già ampiamente commentato, spesso più del necessario, e quei commenti dicono <em>cosa</em> fa che era la parte già leggibile. Quello che manca è il perché: quali alternative sono state considerate, quale vincolo ha deciso, cosa era vero al momento della scelta e potrebbe non esserlo più. Bastano dieci righe per decisione, tenute vicino al codice.</p>



<p class="wp-block-paragraph"><strong>Chiedere le alternative scartate al momento giusto.</strong> Il momento in cui il contesto è massimo è quando il codice viene generato, non sei mesi dopo. &#8220;Cosa hai considerato e perché hai escluso il resto&#8221; è la domanda che trasforma un output in una comprensione, e costa trenta secondi allora contro tre giorni poi.</p>



<p class="wp-block-paragraph"><strong>Rotazione deliberata.</strong> Chi non ha scritto una parte deve metterci le mani prima che sia un&#8217;emergenza. È l&#8217;unico modo per scoprire quanto è opaca mentre scoprirlo costa poco.</p>



<p class="wp-block-paragraph"><strong>E contrarlo consapevolmente, quando serve.</strong> Come per il debito tecnico, non è la contrazione il problema. Per uno script interno, un prototipo, una cosa che vivrà tre settimane, generare qualcosa che nessuno capisce è perfettamente razionale. Il debito diventa pericoloso quando è una scoperta invece che una decisione — quando ci si accorge di averlo il giorno in cui bisogna ripagarlo.</p>



<h2 class="wp-block-heading">Perché conta più di prima</h2>



<p class="wp-block-paragraph">Il debito tecnico ha un&#8217;ultima proprietà consolante: è ripagabile con lavoro. Anche molto, anche noioso, ma lavoro e oggi il lavoro di riscrittura costa meno di quanto sia mai costato.</p>



<p class="wp-block-paragraph">Il debito di comprensione no. Non si ripaga generando altro codice, perché il codice non è mai stato il problema. Si ripaga solo con il tempo di persone che si siedono e ricostruiscono un modello mentale che nessuno ha mai avuto, partendo da un artefatto che non è stato scritto per essere spiegato. È l&#8217;unica forma di debito che gli strumenti che lo producono non aiutano a estinguere.</p>



<p class="wp-block-paragraph">Il debito tecnico si vede nel codice. Il debito di comprensione si vede solo nelle persone — e per questo, quando lo vedi, di solito è tardi.</p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="2453" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="2453" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="2453" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="2453" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="2453" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="2453" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2453</post-id>	</item>
		<item>
		<title>Il futuro dell’IA è adesso: come Claude 4 e Gemini stanno rivoluzionando il coding</title>
		<link>https://www.robertobeccari.it/2025/06/03/il-futuro-dellia-e-adesso-come-claude-4-e-gemini-stanno-rivoluzionando-il-coding/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 03 Jun 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[Intelligenza Artificiale]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=2336</guid>

					<description><![CDATA[L’Intelligenza Artificiale (IA) sta vivendo una fase di crescita tumultuosa. Ogni giorno vediamo nascere modelli sempre più potenti, capaci di svolgere compiti complessi con una rapidità e un’accuratezza inimmaginabili solo…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>2 Minute, 52 Second                </div>

            </div>
<p class="wp-block-paragraph">L’Intelligenza Artificiale (IA) sta vivendo una fase di crescita tumultuosa. Ogni giorno vediamo nascere modelli sempre più potenti, capaci di svolgere compiti complessi con una rapidità e un’accuratezza inimmaginabili solo pochi anni fa. Ma quanto è veloce davvero questo progresso? Negli ultimi giorni, un confronto diretto tra due protagonisti del settore, <strong>Claude 4 di Anthropic</strong> e <strong>Gemini 2.5 Pro di Google</strong>, ci offre un chiaro indicatore della velocità con cui le tecnologie IA stanno evolvendo.</p>



<h2 class="wp-block-heading"><strong>La sfida tra Claude 4 e Gemini 2.5 Pro: numeri e performance</strong></h2>



<p class="wp-block-paragraph">Google annunciava con orgoglio Gemini 2.5 Pro come il modello più performante per il coding, con un’accuratezza del 63% sul benchmark SV bench, uno standard riconosciuto per valutare la capacità di scrivere codice.</p>



<p class="wp-block-paragraph">Tuttavia, la leadership è durata pochissimo. Solo pochi giorni dopo, Anthropic ha rilasciato due versioni aggiornate di Claude — <strong>Sonnet 4</strong> e <strong>Opus 4</strong> — che hanno rapidamente superato Gemini con un’accuratezza rispettivamente dell’82% e dell’80,2%. Questo significa un miglioramento di oltre 17 punti percentuali in meno di un mese, un ritmo di crescita impressionante e senza precedenti.</p>



<h2 class="wp-block-heading"><strong>Oltre i numeri: le capacità pratiche che fanno la differenza</strong></h2>



<p class="wp-block-paragraph">Non si tratta solo di benchmark teorici. Nei test reali, Claude 4 ha dimostrato di saper tradurre queste performance in vantaggi concreti:</p>



<ul class="wp-block-list">
<li><strong>Velocità e qualità nel coding</strong>: nel creare un gioco endless running, Claude Opus 4 ha prodotto codice più velocemente e una UI più gradevole rispetto a Gemini 2.5 Pro.</li>



<li><strong>Anteprima del codice in tempo reale</strong>: Claude è in grado di mostrare un’anteprima del codice p5.js direttamente nel browser, una funzionalità che Gemini attualmente non offre.</li>
</ul>



<h3 class="wp-block-heading"><strong>L’“AI super agent”: il controllo diretto su browser e sistema operativo</strong></h3>



<p class="wp-block-paragraph">Un’altra caratteristica innovativa di Claude 4 è la sua capacità di:</p>



<ul class="wp-block-list">
<li><strong>Interagire con il browser</strong>: navigare su siti web e recuperare informazioni aggiornate.</li>



<li><strong>Controllare il laptop dell’utente</strong>: monitorare parametri come la batteria e interagire con il sistema operativo.</li>
</ul>



<p class="wp-block-paragraph">Questa capacità di agire autonomamente, senza interruzioni per ore (fino a 7 ore consecutive), trasforma Claude in un vero e proprio “super agente” digitale, capace di gestire compiti complessi e prolungati. Google sta sviluppando un progetto simile, <strong>Project Marina</strong>, ma attualmente risulta meno performante.</p>



<h3 class="wp-block-heading"><strong>Implicazioni sul futuro del lavoro</strong></h3>



<p class="wp-block-paragraph">L’emergere di agenti IA capaci di controllare browser e dispositivi solleva riflessioni importanti sul mondo del lavoro, in particolare per attività amministrative e di routine. Se queste AI possono svolgere tali compiti meglio, più velocemente e senza stancarsi, molte professioni potrebbero subire una trasformazione radicale o addirittura scomparire.</p>



<h3 class="wp-block-heading"><strong>Gemini Ultra e la sfida multimediale</strong></h3>



<p class="wp-block-paragraph">Il confronto non è però a senso unico. La versione più avanzata di Gemini, <strong>Gemini Ultra</strong>, ha un vantaggio che Claude non possiede ancora: la capacità di creare video sincronizzati perfettamente con l’audio, grazie alla tecnologia <strong>Veo3</strong>. Questo apre nuovi scenari per la produzione di contenuti multimediali, un campo dove l’IA sta guadagnando terreno a grandi passi.</p>



<h2 class="wp-block-heading"><strong>Conclusioni: la corsa all’innovazione è appena iniziata</strong></h2>



<p class="wp-block-paragraph">La sfida tra Claude 4 e Gemini 2.5 Pro è un chiaro esempio di quanto velocemente stia evolvendo il settore dell’Intelligenza Artificiale. Le capacità tecniche, le applicazioni pratiche e le nuove funzionalità stanno ridefinendo costantemente i confini del possibile.</p>



<p class="wp-block-paragraph">Questa accelerazione non solo migliora gli strumenti che abbiamo a disposizione, ma ci proietta verso un futuro in cui la super intelligenza non è più fantascienza, ma una realtà concreta e imminente.</p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="2336" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="2336" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="2336" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="2336" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="2336" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="2336" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2336</post-id>	</item>
		<item>
		<title>Programmatore: Esecutore o Creativo? Un viaggio oltre i luoghi comuni</title>
		<link>https://www.robertobeccari.it/2025/04/16/programmatore-esecutore-o-creativo-un-viaggio-oltre-i-luoghi-comuni/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Wed, 16 Apr 2025 08:00:00 +0000</pubDate>
				<category><![CDATA[Intelligenza Artificiale]]></category>
		<category><![CDATA[Società]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=2256</guid>

					<description><![CDATA[Introduzione C&#8217;è una narrazione diffusa, soprattutto in certi ambienti aziendali tradizionali, secondo cui lo sviluppatore sarebbe una figura puramente esecutiva. Una persona a cui viene detto &#8220;scrivi questo codice&#8221; da…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>2 Minute, 10 Second                </div>

            </div>
<p class="wp-block-paragraph"><strong>Introduzione</strong></p>



<p class="wp-block-paragraph">C&#8217;è una narrazione diffusa, soprattutto in certi ambienti aziendali tradizionali, secondo cui lo sviluppatore sarebbe una figura puramente esecutiva. Una persona a cui viene detto &#8220;scrivi questo codice&#8221; da un architetto o un analista, e che si limita a trasformare specifiche in righe di codice senza metterci nient&#8217;altro. Questa percezione non solo è riduttiva, ma alimenta anche un&#8217;idea pericolosa: se il programmatore è un semplice esecutore, allora un&#8217;intelligenza artificiale può facilmente sostituirlo.</p>



<p class="wp-block-paragraph">Ma c&#8217;è un&#8217;altra prospettiva. Ed è quella in cui credo fermamente: quella dello sviluppatore come figura creativa, capace di dare forma alle idee e trasformare intuizioni in realtà digitale.</p>



<p class="wp-block-paragraph"><strong>La visione esecutiva: il programmatore come &#8220;operaio del codice&#8221;</strong></p>



<p class="wp-block-paragraph">Questa visione nasce da un&#8217;impostazione fortemente industriale del lavoro. In passato, con i modelli a cascata e la netta separazione dei ruoli, il flusso di lavoro era molto rigido: analisi, progettazione, sviluppo, test. Ogni anello della catena aveva un compito definito e poco spazio di manovra.</p>



<p class="wp-block-paragraph">Il programmatore diventava così l&#8217;ultimo anello della catena, responsabile solo di tradurre in codice specifiche già decise altrove. In questo contesto, l&#8217;idea che un&#8217;IA possa sostituire questa figura è comprensibile: se si tratta solo di eseguire istruzioni, l&#8217;automazione sembra inevitabile.</p>



<p class="wp-block-paragraph"><strong>La visione creativa: il programmatore come architetto delle soluzioni</strong></p>



<p class="wp-block-paragraph">Ma la realtà di chi sviluppa software è ben diversa. Programmare non è solo scrivere codice: è risolvere problemi complessi, prendere decisioni di design, trovare soluzioni eleganti e scalabili. Ogni riga di codice racconta una storia di scelte, di compromessi, di intuizioni.</p>



<p class="wp-block-paragraph">Un buon sviluppatore non si limita a ricevere istruzioni: partecipa attivamente alla definizione della soluzione, propone alternative, anticipa problemi futuri. In altre parole, crea.</p>



<p class="wp-block-paragraph">Pensiamo a quando ci viene proposta un&#8217;idea vaga: &#8220;Vorrei un&#8217;app che aiuti le persone a organizzare meglio il loro tempo&#8221;. Non esistono specifiche dettagliate, né flussi definiti. Tocca a noi, come creativi del codice, dare forma a quell&#8217;intuizione, immaginare l&#8217;interfaccia, scegliere la tecnologia giusta, costruire l&#8217;esperienza utente.</p>



<p class="wp-block-paragraph">In questo, l&#8217;intelligenza artificiale non è una minaccia, ma uno strumento potente. Ci libera dal lavoro più ripetitivo e ci permette di concentrarci ancora di più sugli aspetti creativi e strategici del nostro mestiere.</p>



<p class="wp-block-paragraph"><strong>Conclusione: riscoprire la creatività nello sviluppo</strong></p>



<p class="wp-block-paragraph">Il programmatore non è un mero esecutore, ma un artigiano digitale, un creatore di esperienze e soluzioni.</p>



<p class="wp-block-paragraph">Riconoscere questa dimensione creativa non è solo un modo per valorizzare il nostro lavoro, ma anche per guardare con maggiore lucidità al futuro: un futuro in cui l&#8217;IA sarà alleata e non sostituta, e in cui la nostra capacità di immaginare e costruire continuerà a fare la differenza.</p>



<p class="wp-block-paragraph"><em>&#8220;La creatività è solo connettere le cose.&#8221;</em>&nbsp;— Steve Jobs</p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="2256" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="2256" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="2256" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="2256" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="2256" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="2256" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2256</post-id>	</item>
		<item>
		<title>Software e Accessibilità</title>
		<link>https://www.robertobeccari.it/2022/02/18/software-e-accessibilita/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Fri, 18 Feb 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Accessibilità]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Produttività]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[accessibilità]]></category>
		<category><![CDATA[sviluppo]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1778</guid>

					<description><![CDATA[Da diversi anni lavoro a progetti legati alla pubblica amministrazione. Nel tempo mi sono reso conto di cosa voglia dire realizzare un sito/app accessibile. Imparare ad usare screen reader, i giusti costrutti della struttura, della pagina e gli attributi corretti per far capire ad una persona con handicap visivi o auditivi, come poter accedere ai contenuti proposti. ]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>7 Minute, 37 Second                </div>

            </div>
<p class="wp-block-paragraph">Da diversi anni lavoro a progetti legati alla pubblica amministrazione. Nel tempo mi sono reso conto di cosa voglia dire realizzare un sito/app accessibile. Imparare ad usare screen reader, i giusti costrutti, come strutturate le pagine e usare gli attributi corretti per far capire ad una persona con handicap visivi o auditivi, come poter capire meglio e più velocemente i contenuti proposti.</p>



<p class="wp-block-paragraph">La prima cosa che posso dire è questa, <strong>una persona disabile ha meno difficoltà di quelle che possiate pensare, sono abituati a superare gli ostacoli (non solo nel software) e questo in molti casi li rende più smart di noi utenti &#8220;normali&#8221;</strong> che dobbiamo capire con occhi e udito quello che ci viene proposto. Mi è capitato di lavorare con alcune persone non vedenti e sono rimasto ammirato dal loro approccio, capivano i contenuti della pagina (fatta con i giusti criteri) prima e meglio di me. Loro puntano al contenuto e alle informazioni, noi ci perdiamo nei fronzoli della pagina.</p>



<p class="wp-block-paragraph"><em><strong>Con questo non voglio dire che non serve rendere accessibile il software, <span style="text-decoration: underline;">il contrario</span>, noi sviluppatori <span style="text-decoration: underline;">con uno sforzo minimo</span> possiamo aiutare queste persone, e non solo, a capire con più facilità quali siano i contenuti che proponiamo sul nostro sito o nella nostra applicazione</strong>.</em></p>



<p class="wp-block-paragraph"><strong>Di seguito vi riporto i ventidue miti da sfatare sull&#8217;accessibilità</strong> suggeriti da <a rel="noreferrer noopener" href="https://a11ymyths.com/" target="_blank">a11ymyths.com</a> e riportati nel mio progetto <a rel="noreferrer noopener" href="https://www.calendarioavventodev.it/" target="_blank">calendario dell&#8217;avvento per sviluppatori</a> (sono aperte le iscrizioni per il 2022). Approfitto per ringraziare tutte le persone che si sono iscritte e che mi hanno dato suggerimenti su come migliorare e rendere i contenuti interessanti. </p>



<p class="wp-block-paragraph">Iniziamo&#8230;</p>



<h3 class="wp-block-heading" id="01-l-accessibilita-riguarda-solo-un-piccolo-gruppo-di-utenti">#01 L&#8217;accessibilità riguarda solo un piccolo gruppo di utenti</h3>



<p class="wp-block-paragraph">Non così piccolo.&nbsp;Circa il&nbsp;<strong>15%</strong>&nbsp;della popolazione mondiale, o circa&nbsp;<strong>1 miliardo di</strong>&nbsp;persone, vive con disabilità, sono la più grande minoranza del mondo.&nbsp;Il numero delle persone con disabilità è in forte aumento. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Una curiosità&#8230; una delle migliori App completamente accessibile al mondo (sia web che mobile) è quella di Amazon, il loro obiettivo è vendere e se non fossero accessibili si perderebbero una fetta del mercato.</p></blockquote>



<p class="wp-block-paragraph"><a href="https://www.who.int/en/news-room/fact-sheets/detail/disability-and-health" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="02-gli-utenti-disabili-non-utilizzano-il-mio-sito-web">#02 Gli utenti disabili non utilizzano il mio sito web</h3>



<p class="wp-block-paragraph">Come puoi essere così sicuro?&nbsp;Molte persone con disabilità come daltonismo, capacità motorie limitate, ecc. utilizzano i siti Web proprio come gli altri utenti.&nbsp;Inoltre, molte&nbsp;<strong>tecnologie assistive non sono rilevabili</strong>&nbsp;in alcun modo.</p>



<p class="wp-block-paragraph"><a href="https://www.w3.org/WAI/people-use-web/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="03-rendere-accessibile-un-sito-web-e-costoso-e-richiede-tempo">#03 Rendere accessibile un sito Web è costoso e richiede tempo</h3>



<p class="wp-block-paragraph">Potrebbe non essere così se l&#8217;accessibilità fosse considerata dall&#8217;inizio del progetto grazie ad un team di sviluppo con le competenze adeguate.&nbsp;Quando l&#8217;accessibilità è diventata un&#8217;abitudine, il&nbsp;<strong>tempo di sviluppo non cambia</strong>&nbsp;o cambia di poco.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Implementare l&#8217;accessibilità by design ha un costo molto ridotto rispetto ad un adattamento a posteriori.</p></blockquote>



<h3 class="wp-block-heading" id="04-possiamo-aggiungere-rapidamente-l-accessibilita-prima-del-rilascio">#04 Possiamo aggiungere rapidamente l&#8217;accessibilità prima del rilascio</h3>



<p class="wp-block-paragraph">Non funzionerà.&nbsp;Forse alla fine potrebbero essere aggiunte cose semplici come testo alternativo o etichettatura dei moduli, ma alcune&nbsp;<strong>UX complesse dovrebbero essere pianificate per essere accessibili</strong>.&nbsp;In alcuni casi, rendere accessibili le funzionalità al termine del processo di sviluppo può richiedere il refactoring completo.</p>



<h3 class="wp-block-heading" id="05-l-accessibilita-riguarda-solo-l-aggiunta-di-testo-alternativo-alle-immagini">#05 L&#8217;accessibilità riguarda solo l&#8217;aggiunta di testo alternativo alle immagini</h3>



<p class="wp-block-paragraph">In effetti, la mancanza di testo alternativo per le immagini è&nbsp;<a rel="noreferrer noopener" href="https://webaim.org/projects/million/" target="_blank">uno dei maggiori problemi di accessibilità</a>&nbsp;.&nbsp;Ma oltre a questo, ci sono molte cose da considerare mentre si rende accessibile la&nbsp;<strong>struttura dei titoli </strong>del sito Web,&nbsp;<strong>i controlli funzionali</strong>&nbsp;,&nbsp;<strong>il contrasto del colore</strong>&nbsp;e molto altro.</p>



<h3 class="wp-block-heading" id="06-l-accessibilita-al-web-e-solo-una-responsabilita-dello-sviluppatore">#06 L&#8217;accessibilità al Web è solo una responsabilità dello sviluppatore</h3>



<p class="wp-block-paragraph">È un lavoro di squadra.&nbsp;<strong>I progettisti</strong>&nbsp;creano interfacce utente accessibili, gli&nbsp;<strong>sviluppatori</strong>&nbsp;le realizzano,&nbsp;<strong>gli ingegneri QA</strong>&nbsp;eseguono i test di accessibilità, i&nbsp;<strong>PM</strong>&nbsp;si assicurano che l&#8217;accessibilità sia inclusa nei processi del team,&nbsp;<strong>il team legale</strong>&nbsp;verifica se un prodotto sia privo di rischi dal punto di vista dell&#8217;accessibilità,&nbsp;<strong>i gestori dei</strong>&nbsp;contenuti regolano il contenuto per renderlo conforme.</p>



<p class="wp-block-paragraph"><a href="https://accessibility.digital.gov/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="07-l-accessibilita-aiuta-solo-le-persone-con-disabilita">#07 L&#8217;accessibilità aiuta solo le persone con disabilità</h3>



<p class="wp-block-paragraph">Fortunatamente&nbsp;<strong>aiuta tutti</strong>&nbsp;.&nbsp;È risaputo che l&#8217;applicazione dei principi di accessibilità migliora l&#8217;esperienza complessiva dell&#8217;utente e rende un sito Web più comodo da usare.</p>



<h3 class="wp-block-heading" id="08-rendere-accessibili-i-siti-web-non-comporta-vantaggi-aggiuntivi">#08 Rendere accessibili i siti Web non comporta vantaggi aggiuntivi</h3>



<p class="wp-block-paragraph">Per elencarne solo alcuni: più utenti, più entrate, migliore reputazione, meno rischi di essere citati in giudizio, migliore competenza dei team di sviluppo e molto altro.&nbsp;Alla fine, fare&nbsp;<strong>una cosa buona</strong>&nbsp;non deve sempre richiedere una ragione redditizia.</p>



<h3 class="wp-block-heading" id="09-l-accessibilita-puo-essere-riparata-dall-overlay-di-accessibilita">#09 L&#8217;accessibilità può essere riparata dall&#8217;overlay di accessibilità</h3>



<p class="wp-block-paragraph">Assolutamente no.&nbsp;C&#8217;è&nbsp;<a rel="noreferrer noopener" href="https://overlayfactsheet.com/" target="_blank">un&#8217;iniziativa</a>&nbsp;firmata da centinaia di professionisti che sostiene la rimozione dell&#8217;overlay di accessibilità web.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Questo a mio avviso è un punto di discussione molto interessante relativo al lungo termine e come integrazione a strumenti che già l&#8217;utente possiede e che possono andare in contrato con queste pratiche</p></blockquote>



<h3 class="wp-block-heading" id="10-l-utilizzo-di-strumenti-automatizzati-e-tutto-cio-che-devo-fare-per-rendere-accessibile-il-mio-sito-web">#10 L&#8217;utilizzo di strumenti automatizzati è tutto ciò che devo fare per rendere accessibile il mio sito web</h3>



<p class="wp-block-paragraph">Sarebbe facile, ma no.&nbsp;Di solito i test di accessibilità automatizzati possono rilevare solo&nbsp;<a rel="noreferrer noopener" href="https://marcysutton.com/evinced-automated-accessibility-testing" target="_blank">il 30-50% di tutti i problemi di accessibilità</a>&nbsp;.&nbsp;In effetti, alcuni siti Web&nbsp;<a rel="noreferrer noopener" href="https://www.matuzo.at/blog/building-the-most-inaccessible-site-possible-with-a-perfect-lighthouse-score/" target="_blank">possono essere costruiti in modo</a>&nbsp;tale da superare i test automatici anche se il sito Web è totalmente inaccessibile.</p>



<h3 class="wp-block-heading" id="11-l-accessibilita-e-riservata-agli-utenti-non-vedenti">#11 L&#8217;accessibilità è riservata agli utenti non vedenti</h3>



<p class="wp-block-paragraph">Certamente, l&#8217;accessibilità influisce sull&#8217;esperienza degli utenti non vedenti, ma riguarda anche gli utenti con altre disabilità visive come il daltonismo.&nbsp;Naturalmente avvantaggia anche le persone con altre forme di disabilità, legate all&#8217;udito, alla mobilità, alla parola o alla cognizione.&nbsp;Funziona anche per utenti anziani.&nbsp;In breve, per tutti gli utenti.&nbsp;È&nbsp;<strong>essenziale per alcuni ma utile per tutti</strong>.</p>



<p class="wp-block-paragraph"><a href="https://www.w3.org/WAI/fundamentals/accessibility-intro/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="12-l-accessibilita-e-facoltativa">#12 L&#8217;accessibilità è facoltativa</h3>



<p class="wp-block-paragraph">Fino a quando la tua azienda non è stata citata in giudizio.&nbsp;Scopri le cause di&nbsp;<a rel="noreferrer noopener" href="https://www.nad.org/2011/06/16/nad-files-disability-civil-rights-lawsuit-against-netflix/" target="_blank">Netflix</a>&nbsp;e&nbsp;<a rel="noreferrer noopener" href="https://www.cnbc.com/2019/10/07/dominos-supreme-court.html" target="_blank">Domino</a>&nbsp;per capire che il prezzo per non essere accessibile potrebbe essere troppo alto.&nbsp;Ci sono&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/policies/" target="_blank">molte leggi</a>&nbsp;che possono richiedere l&#8217;accessibilità di un sito web.</p>



<h3 class="wp-block-heading" id="13-l-accessibilita-riguarda-solo-la-prevenzione-di-azioni-legali">#13 L&#8217;accessibilità riguarda solo la prevenzione di azioni legali</h3>



<p class="wp-block-paragraph">L&#8217;accessibilità riguarda i tuoi utenti.&nbsp;Ovviamente, prevenire le azioni legali è importante per qualsiasi azienda, ma anche&nbsp;<strong>la soddisfazione degli utenti</strong>&nbsp;e la&nbsp;<strong>reputazione dell&#8217;azienda</strong>&nbsp;apportano molto valore.</p>



<h3 class="wp-block-heading" id="14-l-accessibilita-consiste-solo-nel-seguire-le-wcag">#14 L&#8217;accessibilità consiste solo nel seguire le WCAG</h3>



<p class="wp-block-paragraph">Di solito parte da&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/WCAG21/quickref/" target="_blank">WCAG</a>, ma nella vita reale un sito Web conforme potrebbe non essere ancora completamente accessibile.&nbsp;L&#8217;accessibilità riguarda la comprensione dei bisogni di tutti gli utenti, nonché l&#8217;empatia e la consapevolezza.</p>



<h3 class="wp-block-heading" id="15-l-accessibilita-puo-essere-ottenuta-solo-aggiungendo-attributi-aria">#15 L&#8217;accessibilità può essere ottenuta solo aggiungendo attributi ARIA</h3>



<p class="wp-block-paragraph">Naturalmente,&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/standards-guidelines/aria/" target="_blank">ARIA</a>&nbsp;è una parte importante dell&#8217;accessibilità, ma la regola d&#8217;oro di ARIA è&nbsp;<a rel="noreferrer noopener" href="https://w3c.github.io/using-aria/#rule1" target="_blank">&#8220;Non usare ARIA&#8221;</a>.&nbsp;Molti attributi ARIA potrebbero non essere necessari se&nbsp;vengono utilizzati tag&nbsp;<a rel="noreferrer noopener" href="https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML#good_semantics" target="_blank">HTML semantici.</a></p>



<h3 class="wp-block-heading" id="16-non-abbiamo-bisogno-di-essere-conformi">#16 Non abbiamo bisogno di essere conformi</h3>



<p class="wp-block-paragraph">Forse ne hai bisogno.&nbsp;Esistono numerose leggi e regolamenti che possono richiedere a un sito Web di seguire i principi di accessibilità.&nbsp;Vale sicuramente la pena controllarli.</p>



<p class="wp-block-paragraph"><a href="https://www.w3.org/WAI/policies/" data-type="URL" data-id="https://www.w3.org/WAI/policies/">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="17-solo-gli-esperti-di-accessibilita-possono-implementare-correzioni-di-accessibilita">#17 Solo gli esperti di accessibilità possono implementare correzioni di accessibilità</h3>



<p class="wp-block-paragraph">Per fortuna no.&nbsp;Chiunque abbia alcune capacità di accessibilità può implementare e testare i siti Web per l&#8217;accessibilità.&nbsp;In effetti, non è solo facile da imparare, ma a volte è un processo piuttosto divertente.&nbsp;Non richiede un&#8217;esperienza specifica per eseguire i&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/test-evaluate/preliminary/" target="_blank">controlli facili</a>.</p>



<h3 class="wp-block-heading" id="18-l-accessibilita-e-come-una-funzionalita-lo-fai-una-volta-e-poi-ce-l-hai">#18 L&#8217;accessibilità è come una funzionalità: lo fai una volta e poi ce l&#8217;hai</h3>



<p class="wp-block-paragraph">L&#8217;accessibilità è una pratica, non una caratteristica.&nbsp;Significa che bisogna prendersene cura regolarmente, sia quando si lavora su funzionalità che quando si eseguono lavori di manutenzione.&nbsp;La conoscenza dell&#8217;accessibilità dovrebbe essere trasmessa quando un nuovo membro del team si unisce o quando i requisiti cambiano.</p>



<p class="wp-block-paragraph"><a href="https://ethanmarcotte.com/wrote/accessibility-is-not-a-feature/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="19-l-accessibilita-puo-essere-risolta-fornendo-una-versione-del-sito-web-separata-per-le-persone-disabili">#19 L&#8217;accessibilità può essere risolta fornendo una versione del sito Web separata per le persone disabili</h3>



<p class="wp-block-paragraph">Quella è sempre stata un&#8217;ipotesi sbagliata.&nbsp;Molti team di sviluppo hanno&nbsp;<strong>imparato</strong>&nbsp;a proprie spese che mantenere diverse versioni del sito Web e mantenere tutti i contenuti aggiornati&nbsp;<strong>costano molto di più</strong>&nbsp;rispetto alla creazione dell&#8217;unico sito Web completamente accessibile.</p>



<h3 class="wp-block-heading" id="20-le-persone-con-disabilita-non-usano-il-web">#20 Le persone con disabilità non usano il web</h3>



<p class="wp-block-paragraph">È sbagliato.&nbsp;Infatti, in alcuni casi internet è&nbsp;<strong>l&#8217;unico modo</strong>&nbsp;con cui le persone disabili possono comunicare con il mondo.&nbsp;Inoltre, laddove le &#8220;persone abili&#8221; utilizzano le loro sensazioni naturali come la vista e l&#8217;udito,&nbsp;<strong>le persone con disabilità devono fare affidamento sulle tecnologie</strong>.</p>



<p class="wp-block-paragraph"><a href="https://www.w3.org/WAI/people-use-web/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="21-i-ciechi-non-guardano-i-film">#21 I ciechi non guardano i film</h3>



<p class="wp-block-paragraph">Lo fanno sicuramente.&nbsp;Con l&#8217;aiuto delle&nbsp;<strong>descrizioni audio</strong>&nbsp;possono guardare e ascoltare qualsiasi contenuto multimediale come fanno tutte le altre persone.</p>



<p class="wp-block-paragraph"><a href="https://www.w3.org/WAI/media/av/description/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="22-l-accessibilita-puo-essere-verificata-solo-da-persone-disabili">#22 L&#8217;accessibilità può essere verificata solo da persone disabili</h3>



<p class="wp-block-paragraph">Bene, di solito le persone disabili sono i migliori tester: usano le tecnologie assistive a tempo pieno.&nbsp;Tuttavia,&nbsp;<strong>tutti possono imparare</strong>&nbsp;a testare l&#8217;accessibilità dei siti Web.</p>



<p class="wp-block-paragraph"><a rel="noreferrer noopener" href="https://www.w3.org/WAI/test-evaluate/" target="_blank">Maggiori informazioni</a></p>



<h1 class="wp-block-heading" id="conclusione">Conclusione</h1>



<p class="wp-block-paragraph">Quindi amici sviluppatori e designer, da domani sforziamoci un po&#8217; di più a migliorare il mondo per tutti quanti. </p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1778</post-id>	</item>
		<item>
		<title>I programmatori sono obsoleti</title>
		<link>https://www.robertobeccari.it/2017/11/08/i-programmatori-sono-obsoleti/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Wed, 08 Nov 2017 13:59:13 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=284</guid>

					<description><![CDATA[E&#8217; una cosa che non ho mai fatto, sapevo però che prima o poi avrei infranto questa regola. Mi è capitato sotto click il link ad una pagina di presentazione…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
<div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>2 Minute, 51 Second                </div>
</p></div>
<p>E&#8217; una cosa che non ho mai fatto, sapevo però che prima o poi avrei infranto questa regola.</p>
<p>Mi è capitato sotto click il link ad una pagina di presentazione di un prodotto, non faccio nomi e premetto (sono l&#8217;uomo che premette, Cit.), non conosco il prodotto. Questo post fa riferimento a cosa hanno scritto nella pagina di presentazione del prodotto per poterlo vendere. Sicuramente la versione italiana è stata tradotta in modo automatico, c&#8217;è qualche problema qua e là, ma vediamo insieme cosa hanno scritto.</p>
<p>La pagina contiene tre punti chiave che descrivono il prodotto, si parte con questa.</p>
<blockquote><p>C&#8217;è una ragione per cui lo sviluppo software tradizionale non giova al vostro business. È il codice software. Il modo in cui istruiamo oggi i computer non è tanto diverso da come lo facevamo 50 anni fa: specialisti digitano simboli criptici all&#8217;interno di file di testo. Assembler. COBOL. Java. Sono tutti la stessa cosa. Cambia solo il nome.</p>
</blockquote>
<p>Certo, ogni programmatore che conosce il &#8220;codice software&#8221; e che scrive &#8220;simboli criptici&#8221; in file di testo, sa benissimo che tutti i linguaggi sono uguali e che cambia solo il nome.</p>
<blockquote><p>La liberazione dalle catene del codice software fornisce risultati immediati. Creerete e modificherete le applicazioni più rapidamente. Vi estenderete in nuovi canali e lancerete nuovi prodotti quando vorrete. Darete straordinario valore al vostro business.</p>
</blockquote>
<p>Anche questo passaggio è un punto chiave della presentazione, quando ci liberiamo dalle catene del &#8220;Codice Software&#8221; abbiamo subito risultati, cosa perdiamo tempo a scrivere codice, ormai non serve più a nulla. E poi&#8230;</p>
<blockquote><p>Una volta tolto di mezzo il codice software, le possibilità sono illimitate.</p>
</blockquote>
<p>&#8230;, questo era scontato, ma poi continua dicendo che&#8230;</p>
<blockquote><p>Quando si crea il software utilizzando codice software, solo le persone che comprendono tale codice possono svilupparlo</p>
</blockquote>
<p>&#8230;ma dai, pensavo che a tutti fosse chiaro il &#8220;codice software&#8221;, ma in compenso loro hanno un&#8217;aiuto&#8230;</p>
<blockquote><p>Utilizziamo l&#8217;intelligenza artificiale per individuare gli ostacoli alle prestazioni e fiutare le violazioni delle migliori pratiche</p>
</blockquote>
<p>Adesso va di moda mettere l&#8217;AI ovunque quindi anche a loro non manca.</p>
<p>Altro passaggio fondamentale, tutto cambia troppo velocemente e noi semplici programmatori non riusciamo a stargli dietro.</p>
<blockquote><p>La tecnologia avanza rapidamente. Quella fantastica libreria JavaScript di cui il vostro addetto alla User Experience vi ha parlato? Già obsoleta. L&#8217;app mobile che avete lanciato l&#8217;anno scorso? Antiquata.</p>
</blockquote>
<p>Quindi il risultato e quello di&#8230;</p>
<blockquote><p>Progettate invece la vostra applicazione e  **** terrà il codice software aggiornato per voi. Modellate la vostra User Experience reattiva in **** e noi genereremo il codice software che integra la più recente tecnologia UX. Pensiamo noi a riscrivere il codice software, così non dovrete farlo voi.</p>
</blockquote>
<p>E poi si chiude in bellezza con&#8230;</p>
<blockquote><p>E se volete passare a una nuova piattaforma cloud o passare da un database a un altro, **** genera codice software ottimizzato per la nuova infrastruttura. Nessuna necessità di necessario riscrivere il codice software.</p>
<p>Questo non è solo a prova di futuro. Questo è &#8220;Future Empowered&#8221;</p>
</blockquote>
<p>Io non mi stupisco di quello che è stato scritto, oggi si scrive qualsiasi cosa pur di vendere un prodotto e lo accetto. Non riesco però a comprendere come qualcuno possa crederci. Di certo presentazioni come questa sono fatte per quelle persone che &#8220;contano&#8221; all&#8217;interno dell&#8217;azienda e che possiedono il fatidico BUDGET da poter investire, ma sono prive di una qualsiasi base tecnica che possa fargli comprendere quanto cose come queste siano gonfiate rispetto alla realtà.</p>
<p>Ecco l&#8217;intera pagina di presentazione.</p>
<p><a href="https://www.robertobeccari.it/wp-content/uploads/2017/11/1510147323428.png"><img fetchpriority="high" decoding="async" class=" wp-image-287 aligncenter" src="https://www.robertobeccari.it/wp-content/uploads/2017/11/1510147323428.png" alt="" width="430" height="824" srcset="https://www.robertobeccari.it/wp-content/uploads/2017/11/1510147323428.png 912w, https://www.robertobeccari.it/wp-content/uploads/2017/11/1510147323428-157x300.png 157w, https://www.robertobeccari.it/wp-content/uploads/2017/11/1510147323428-768x1472.png 768w, https://www.robertobeccari.it/wp-content/uploads/2017/11/1510147323428-534x1024.png 534w" sizes="(max-width: 430px) 100vw, 430px" /></a>        </p>
<div class="booster-block booster-reactions-block">
<div class="twp-reactions-icons">
<div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="284" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Happy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="284" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sad                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="284" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Excited                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="284" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sleepy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="284" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry"><br />
                    </a></p>
<div class="twp-reaction-title">Angry</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span></p></div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="284" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise"><br />
                    </a></p>
<div class="twp-reaction-title">Surprise</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
</p></div>
</p></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">284</post-id>	</item>
		<item>
		<title>Ho visto la luce in fondo al tunnel Microsoft</title>
		<link>https://www.robertobeccari.it/2016/04/05/si-vede-la-luce-in-fondo-al-tunnel/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 05 Apr 2016 15:41:03 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[Windows 10]]></category>
		<category><![CDATA[Xamarin]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=70</guid>

					<description><![CDATA[Settimana scorsa si è svolto il //Build 2016, per chi non sapesse di cosa si tratta, è l&#8217;evento Microsoft dedicato agli sviluppatori. Nei mesi scorsi, sia in ufficio (ringrazio i…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
<div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>3 Minute, 53 Second                </div>
</p></div>
<p>Settimana scorsa si è svolto il <a href="https://build.microsoft.com/" target="_blank">//Build 2016</a>, per chi non sapesse di cosa si tratta, è l&#8217;evento Microsoft dedicato agli sviluppatori.</p>
<p>Nei mesi scorsi, sia in ufficio (ringrazio i Team Verde per la sopportazione) che sui social in generale mi sono lamentato molto di Microsoft, e non sono stato l&#8217;unico, in quanto non era chiara la direzione, gli obiettivi che si volevano raggiungere, quali sarebbero stati gli &#8220;investimenti&#8221; che noi sviluppatori avremo dovuto fare.</p>
<p>Certo, abbiamo cercato di dare un senso alle strategie guardando cosa faceva Microsoft, il nuovo Asp.Net Core 1.0 (ex asp.net 5/vNext) ci ha fatto capire che la direzione era il multipiattaforma, poi ci sono stati altri segnali come l&#8217;interesse verso Xamarin e la conseguente acquisizione, insomma tra notize non molto chiare e smentire altrettanto confusionarie, qualcosa si era intravisto.</p>
<p>Il Build ha fatto luce su tutto questo. Per il dettaglio su cosa è stato detto, vi rimando a <a href="https://channel9.msdn.com/Events/Build/2016" target="_blank">Channel9</a> dove potete riguardarvi Keynote, singole sessioni e interviste. Tiriamo le somme e facciamo qualche considerazione.</p>
<p>La notizia di fondo è vera, Microsoft punta al multi piattaforma, quindi direzione Cloud-First, Mobile-First, il progetto è quello di portare il più possibile tutto sul cloud ed essere presenti con i servizi su tutte le piattaforme.</p>
<p>Questo cosa significa per lo sviluppatore Microsoft/.Net? Che da oggi abbiamo più strumenti e linguaggi che possiamo utilizzare per creare le nostre applicazioni, certo rispetto a prima non cambia nulla per il mondo NON Microsoft ma l&#8217;idea è quella di portare anche loro (chi lavora su Linux o comunque con altri ambienti) verso Windows.</p>
<p>Quest&#8217;estate verrà rilasciato un nuovo e corposo aggiornamento a Windows 10 che comprenderà tutte le novità presentate a Build, l&#8217;aggiornamento si chiamerà &#8220;<strong>Anniversary Update</strong>&#8220;.</p>
<p>La prima novità è il rilascio di <a href="https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29" target="_blank">Bash</a> nativo su Windows, questo ha portato molti a pensare che andrà a sostituire PowerShell o diventerà la nuova command line, credo sia invece un modo utile per permettere a chi è già abituato a questa modalità di lavoro su Linux, dove la riga di comando la fà da padrone, di essere più agevoltato nel passare a Windows o comunque sia meno restio.</p>
<p>L&#8217;acquisizione di Xamarin è forse la migliore nelle notizie, sopratutto se si pensa che sarà gratuito con tutte le versioni di Visual Studio, compresa la Community Edition e Xamarin Studio gratuito per Mac. Non voglio dilungarmi su cosa è Xamarin e cosa fà, certamente è uno strumento utile in caso si voglia sviluppare per IOS, Android e Windows Phone senza dover riscrivere l&#8217;intera applicazione, è ovvio che ci sono da tenere in considerazione diverse cose e che è comunque un ambiente di terzi quindi non consente di fare tutto quello che può essere fatto con gli ambienti di sviluppo naviti come XCode a Android Studio ma è ovvio che dipende dal risultato che vogliamo ottenere.</p>
<p>Visual Studio continua a crescere,<a href="https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs.aspx" target="_blank"> rilasciata in beta la versione 15</a> e <a href="https://www.visualstudio.com/en-us/news/vs2015-update2-vs.aspx" target="_blank">Visual Studio 2015 Update 2</a> con un pò di cose nuove:</p>
<ul>
<li>Nuovo editor di IOS Integrato (Xamarin)</li>
<li>Svilupppo C++ nativo multipiattaforma (Linux, Android, Raspberry, ecc.)
<ul>
<li>C&#8217;è una sessione dedicata dove mostrano il debug in tempo reale da Windows verso una macchina virtuale Linux</li>
</ul>
</li>
<li>e molto altro&#8230;</li>
</ul>
<p>Le altre informazioni importanti venute fuori da Build riguardano i nuovi servizi:</p>
<ul>
<li>Office 365 sempre più aperto verso gli sviluppatori</li>
<li><a href="https://www.microsoft.com/cognitive-services/" target="_blank">Cognitive services</a></li>
<li><a href="https://dev.botframework.com/" target="_blank">Bot Framework</a> permette di creare Bot virtuali che rispondono all&#8217;utente via Skype, Twitter, Slack tramite servizi totalmente personalizzabili.</li>
<li>Azure integra nuovi servizi e migliora quelli esistenti per gli sviluppatori.</li>
<li>&#8230;</li>
</ul>
<p>Insomma un sacco di cose nuove, a voi giudicare se sono belle o brutte, molto di quello che è stato presentato è intessante, la conferma dell&#8217;esistente permette di cominciare a pianificare cosa fare, nei prossimi mesi ci sarà molto da fare cose nuove da studiare e provare.</p>
<p>Chiudiamo però con notizie meno belle, Microsoft, ma lo si era già capito da un pò, sempre che non abbia messo nelle sue priorità Windows Mobile. Il progetto UWP continua a essere importante, nuove librerie e nuovi strumenti, sono stati confermati i Brige che permettono di portare le applicazioni Win32 sullo store e le Web Store App ma purtroppo Windows Mobile non è stato mezionato.</p>
<p>Come sviluppatore Windows Phone questa cosa mi è dispiaciuta, ho sempre visto la piattaforma di Microsoft come un&#8217;ottima concorrente ma a IOS e Android ma purtroppo loro stessi sono stati i primi a non crederci e non metterla come priorità, ci stà dopo quello che hanno presentato il loro obiettivo è nel futuro essere presente con i loro servizi ovunque.</p>
<p>Non scordiamoci di <a href="https://www.microsoft.com/microsoft-hololens/en-us" target="_blank">HoloLens</a>, intanto cominciamo a vedere dove ci porteranno queste cose nuove in attesa della nuova versione di Windows.        </p>
<div class="booster-block booster-reactions-block">
<div class="twp-reactions-icons">
<div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="70" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Happy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="70" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sad                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="70" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Excited                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="70" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sleepy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="70" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry"><br />
                    </a></p>
<div class="twp-reaction-title">Angry</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span></p></div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="70" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise"><br />
                    </a></p>
<div class="twp-reaction-title">Surprise</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
</p></div>
</p></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">70</post-id>	</item>
		<item>
		<title>Microsoft, Windows 10 e non solo</title>
		<link>https://www.robertobeccari.it/2015/11/16/microsoft-windows-10-e-non-solo/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Mon, 16 Nov 2015 13:16:53 +0000</pubDate>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[Windows 10]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=43</guid>

					<description><![CDATA[Devo dire che nell&#8217;ultimo periodo sono un po&#8217; critico rispetto a Microsoft, questo non per un presa di posizione a prescindere ma per motivazioni reali legate a ciò che faccio quotidianamente, sono uno…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
<div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>3 Minute, 53 Second                </div>
</p></div>
<p>Devo dire che nell&#8217;ultimo periodo sono un po&#8217; critico rispetto a Microsoft, questo non per un presa di posizione a prescindere ma per motivazioni reali legate a ciò che faccio quotidianamente, sono uno sviluppatore e quello che faccio è fare App e scrivere codice.</p>
<p>Chi mi conosce sa che sono stato (al momento parlo al passato) un grande sostenitore di Windows Phone, Microsoft era partita con buoni propositi che, secondo me, ha perso lungo la strada ed è ovvio che sia un strada sulla quale hanno parecchie indecisioni.</p>
<p>Ho assistito allo streaming di #futureDecoded e la sola cosa che mi è saltata all&#8217;occhio è stata &#8230; <strong>Ma quanto siamo belli ma quanto siamo bravi e meglio di noi nessuno</strong> &#8230; OK, l&#8217;evento gratuito serviva proprio a questo, ma quando poi andiamo al sodo cosa vediamo?</p>
<p>Non pensate subito male, ripeto non sono contro a priori ma ho le mie motivazioni e magari possono servire come punto per una riflessione più ampia.</p>
<p>Parliamo di Windows 10.</p>
<p>Certamente una scelta radicale (che secondo me avrebbero dovuto fare da tempo) un &#8220;nuovo&#8221; sistema operativo che taglia rispetto al passato che adesso è su tutti i device</p>
<p><a href="https://www.robertobeccari.it/wp-content/uploads/2015/11/Untitled.png"><img decoding="async" class="wp-image-44 aligncenter" src="https://www.robertobeccari.it/wp-content/uploads/2015/11/Untitled-300x130.png" alt="Universal Windows Platform (UWP)" width="629" height="268" /></a></p>
<p>Questa immagine usata in tantissime occasioni che dimostra questa nuova strada che hanno intrapreso.</p>
<p>Tornando al nostro discorso&#8230;<br />
Windows 10 ha moltissime cose interessanti ma da sviluppatore cosa vedo:</p>
<ul>
<li>Strumenti di sviluppo ancora acerbi o comunque non ancora concreti e certi</li>
<li>App desktop che non hanno appeal ne verso l&#8217;utente ne verso chi le deve sviluppare</li>
<li>L&#8217;azzeramento delle linee guida per la UI, Windows Phone con Metro aveva dato una strada interessante che tutti hanno apprezzato e che ad oggi si sta&#8217; sgretolando perché a tutti è permesso di realizzare l&#8217;interfaccia come gli pare e questo per l&#8217;utente finale <strong>non è un pregio</strong>.</li>
</ul>
<p>Poi la cosa che mi lascia perplesso quando leggo articoli o sento interviste è sentire discorsi tipo questo</p>
<blockquote><p>&#8230; La prossima versione che faremo sarà la versione più bella e la più figa di tutte &#8230;</p></blockquote>
<p>Il problema è che questa frase la sento per ogni versione di qualsiasi cosa, Windows Phone 7 era giovane e pieni di difetti, quindi abbiamo aspettato l&#8217;8 poi l&#8217;8.1 ha cambiato un po&#8217; le carte in tavola ma ci siamo adattati, per le Universal App (che così non erano), Windows 10 Mobile è meglio, ma meglio di cosa visto che non c&#8217;è ancora? Belle le Universal App ma di nuovo ci hanno cambiato i controlli e il modo di creare le App, bello Metro ma non c&#8217;è più, o almeno non è così importante.</p>
<p>Utilizzo Windows 10 desktop da un bel pò grazie al programma Insider e l&#8217;ho visto crescere a cambiare ad ogni release e vedo che le app native hanno UI/UX che lasciano a desiderare, non hanno la stabilità ti aspetti da un sistema che dovrebbe essere stabile ma lo perdoni perché è appena uscito ma quindi? la posizione di noi sviluppatori Windows è quello di essere felici perché Microsoft cambia sempre le carte in tavola, ci da strumenti che poi cambia, <strong>ci dice che farà cose che poi NON porterà a termine</strong>, perché mi vengono chieste Apps per IOS e Android e non per Windows Phone? la risposte è certamente &#8230; perché sono i più diffusi &#8230; e quindi una domanda seria non ce la facciamo?</p>
<p>La mia visione è diretta sopratutto al mercato Business, Windows la fa ancora da padrone per numero di installazioni e utenti su PC, certamente non sono in discussione questi numeri ma il mercato sta&#8217; cambiando come la stessa Microsoft ci mostra, quando fa una nuova app o un nuovo servizio è sempre multi-piattaforma ma questo però indica anche che noi sviluppatori forse non dobbiamo investire così tanto su una cosa come i device mobili con Windows perché tanto non saranno così numerosi come i concorrenti.</p>
<p>Le mie sono riflessioni personali, come detto legate a ciò che faccio ogni giorno, ci sono tempi e modi di fare le scelte ma ad oggi non avevo mai realmente riflettuto su un cambio almeno per quello che riguarda il Mobile.</p>
<p>Il discorso comunque è molto più ampio, Microsoft ha tantissime cose all&#8217;attivo e per questo ha pregi e difetti perché dal punto di vista di uno sviluppatore vede che le cose cambiano in fretta e abbiamo sempre nuove possibilità ma vediamo anche che ciò su cui ha investito non sono più utilizzabili o comunque cambiano senza che tu possa aver avuto il tempo per assorbirle.</p>
<p>L&#8217;unica cosa che possiamo fare è stare alla finestra, guardiamo cosa ci passa davanti e valutiamo volta per volta ma dovrebbe tornare una visione delle cose che possa portare almeno ad un anno e non solo a pochi mesi.        </p>
<div class="booster-block booster-reactions-block">
<div class="twp-reactions-icons">
<div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="43" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Happy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="43" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sad                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="43" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Excited                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="43" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sleepy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="43" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry"><br />
                    </a></p>
<div class="twp-reaction-title">Angry</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span></p></div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="43" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise"><br />
                    </a></p>
<div class="twp-reaction-title">Surprise</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
</p></div>
</p></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43</post-id>	</item>
		<item>
		<title>Web.config, App Settings e Connection Strings</title>
		<link>https://www.robertobeccari.it/2015/10/29/web-config-app-settings-e-connection-string/</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Thu, 29 Oct 2015 10:15:45 +0000</pubDate>
				<category><![CDATA[Asp.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Configurazione]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[appsettings]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[connectionstrings]]></category>
		<category><![CDATA[Web.config]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=33</guid>

					<description><![CDATA[Vi sarà capitato, almeno per il 90% dei casi è così, di dover avere impostazioni diverse nel web.config relative a stringhe di connessione oppure o settings generici che utilizzate nella vostra applicazione.…]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
<div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>2 Minute, 15 Second                </div>
</p></div>
<p>Vi sarà capitato, almeno per il 90% dei casi è così, di dover avere impostazioni diverse nel web.config relative a stringhe di connessione oppure o settings generici che utilizzate nella vostra applicazione.</p>
<p>La strada messa disposizione da Microsoft per risolvere questo problema è la gestione della configurazione di pubblicazione dell&#8217;applicazione associando web.config diversi come in questa immagine</p>
<p><a href="https://www.robertobeccari.it/wp-content/uploads/2015/10/Web.Config.png"><img decoding="async" class="alignnone size-medium wp-image-34" src="https://www.robertobeccari.it/wp-content/uploads/2015/10/Web.Config-300x50.png" alt="Web.Config" width="300" height="50" srcset="https://www.robertobeccari.it/wp-content/uploads/2015/10/Web.Config-300x50.png 300w, https://www.robertobeccari.it/wp-content/uploads/2015/10/Web.Config.png 389w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>La procedura è semplice, basta modificare il file associato alla pubblicazione che facciamo inserendo gli attributi di trasformazione</p>
<pre>xdt:Transform="SetAttributes" xdt:Locator="Match(name)"</pre>
<p><a href="https://msdn.microsoft.com/en-us/library/dd465326(v=vs.110).aspx" target="_blank">se volete saperne di più&#8230;</a></p>
<p>Questa modalità è molto utile perché permette la trasformazione di tutti i nodi presenti nel web.config dando maggiore flessibilità in fase di pubblicazione ma&#8230; questo non è sempre un vantaggio, in quanto, almeno nel mio caso, i web.config delle applicazioni che pubblico non sempre sono gestiti e manutenuti nel tempo solo da me quindi può valere per la prima pubblicazione ma in seguito il file non viene più ripubblicato perché quello della macchina di destinazione è certamente quello da utilizzare.</p>
<p>Altro svantaggio di questo modello è, sempre per la mia esperienza, non pratico da gestire nel tempo, spesso, da clienti, una singola applicazione che scrivo viene pubblicata su diversi server con procedure automatiche di validazione, quasi mai la mia applicazione sulla macchina di sviluppo finisce diretta in produzione ma ci sono uno o più livelli di validazione e in queste fasi avere web.config diversi non è praticabile.</p>
<p>Per questo motivo mi sono scritto una semplice classe che permette di leggere la configurazione di <strong>appSettings</strong> e <strong>connectionStrings</strong> (sono gli unici casi nella quale serve realmente) da un singolo web.config in base nome della macchina.</p>
<p>Ovviamente questo modello può essere integrato alla trasformazione dei nodi descritta sopra.</p>
<p>Facciamo un esempio&#8230;</p>
<pre>web.config:
&lt;add key="working.directory" value="C:\temp\cartelladilavoro" /&gt;

codice C#:
var cartella = ConfigurationManager.AppSettings["working.directory"];
</pre>
<p>Su una diversa macchina potrebbe essere diverso quindi avrei necessità di modificarlo prima della pubblicazione. La mia soluzione è la seguente:</p>
<pre>web.config:
&lt;add key="working.directory" value="C:\temp\cartelladilavoro" /&gt;
&lt;add key="<strong>[www.sito.it]</strong>working.directory" value="D:\temp\<strong>Web1\cartelladilavoro</strong>" /&gt;

codice C#:
var cartella = <strong>ConfigurationManagerEx</strong>.AppSettings["working.directory"];</pre>
<p>Utilizzando la classe che ho creato chiamata <strong>ConfigurationManagerEx</strong> prelevo il valore corretto in base al nome dell&#8217;host che ospita la mia applicazione, in caso questo non esista nella mia lista, viene sempre preso il valore predefinito definito senza il nome macchina specificato. Questo modello mi permette di avere tutti i valori in un unico file, posso sempre distribuire tutto e chiunque può modificarlo e copiarlo rispettando la semplice regola del nome macchina.</p>
<p>Potete trovare la classe a questo indirizzo:</p>
<p><a href="http://configurationmanagerex.codeplex.com/">http://configurationmanagerex.codeplex.com/</a>        </p>
<div class="booster-block booster-reactions-block">
<div class="twp-reactions-icons">
<div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="33" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Happy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="33" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sad                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="33" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Excited                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="33" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy"><br />
                    </a></p>
<div class="twp-reaction-title">
                        Sleepy                    </div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span></p>
<p>                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="33" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry"><br />
                    </a></p>
<div class="twp-reaction-title">Angry</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span></p></div>
</p></div>
<div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="33" class="be-face-icons un-reacted" href="javascript:void(0)"><br />
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise"><br />
                    </a></p>
<div class="twp-reaction-title">Surprise</div>
<div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span><br />
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
</p></div>
</p></div>
</p></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">33</post-id>	</item>
	</channel>
</rss>
