<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it-it"><generator uri="https://jekyllrb.com/" version="3.8.6">Jekyll</generator><link href="https://andreagandino.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://andreagandino.com/" rel="alternate" type="text/html" hreflang="it-it" /><updated>2020-12-07T11:30:58+01:00</updated><id>https://andreagandino.com/feed.xml</id><title type="html">Andrea Gandino</title><subtitle>WordPress, web e altro.</subtitle><author><name>Andrea Gandino</name></author><entry><title type="html">Per un Web inclusivo</title><link href="https://andreagandino.com/blog/2019/web-inclusivo/" rel="alternate" type="text/html" title="Per un Web inclusivo" /><published>2019-10-20T00:00:00+02:00</published><updated>2019-10-20T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2019/web-inclusivo</id><content type="html" xml:base="https://andreagandino.com/blog/2019/web-inclusivo/">&lt;p&gt;Come già accaduto a Catania il mese scorso, anche al WordCamp Verona di settimana scorsa si è discusso di accessibilità.&lt;/p&gt;

&lt;p&gt;È un tema di cui ultimamente si sente parlare tanto, ma dubito che la maggior parte dei designer e sviluppatori abbia realmente coscienza di quanto le buone pratiche di accessibilità impattino direttamente sulla vita quotidiana delle persone con disabilità.&lt;/p&gt;

&lt;p&gt;Recentemente, Domino’s, la catena americana di consegna di pizza a domicilio, è stata citata in giudizio proprio su un caso di mancata accessibilità. Essendo stata ritenuta responsabile di non avere un sito web fruibile da utenti con disabilità, Domino ha risposto come segue:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Ha fatto appello alla Corte Suprema,&lt;/li&gt;
  &lt;li&gt;Ha rilasciato un comunicato sul proprio sito, con l’obiettivo di mostrarsi attenta alle esigenze di tutti i propri utenti.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ora, la Corte Suprema ha rispedito al mittente l’appello, imponendo all’azienda stessa di conformarsi al vigente &lt;em&gt;Americans With Disabilities Act&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Il &lt;a href=&quot;https://twitter.com/jondedering/status/1185027518803390469&quot;&gt;comunicato&lt;/a&gt;, invece, risultava, nella sua versione originale, scritto grigio scuro su grigio chiaro, con font sottile, con buona pace di ipovedenti e daltonici. Non il massimo se vuoi comunicare inclusività. Mentre vi scrivo, risulta evidente come debba essere arrivata la voce dalla regia, dato che si è ripiegato su un più tranquillo e certamente più leggibile Verdana debitamente contrastato. Bah.&lt;/p&gt;

&lt;p&gt;Ad ogni modo, a Verona ho conosciuto &lt;a href=&quot;https://mignamis.github.io/&quot;&gt;Simone Mignami&lt;/a&gt;. Simone è uno sviluppatore ipovedente e ha intrattenuto brillantemente la platea nel primo talk pomeridiano, in cui parlava, appunto, degli aspetti pratici dell’accessibilità.&lt;/p&gt;

&lt;p&gt;Non accade spesso, ma lo speech di Simone è stato uno di quelli che quando termina capisci che ti ha dato &lt;em&gt;qualcosa&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Ho perso il conto di quante domande ho fatto a Simone a margine del suo intervento, e sperlo di non averlo infastidito troppo con la mia curiosità, ma, pur essendo quello dell’accessibilità un tema che mi è sempre stato piuttosto a cuore, sento di non conoscere abbastanza sull’argomento.&lt;/p&gt;

&lt;p&gt;Più in generale, l’esperienza di vedere dal vivo come una persona ipovedente naviga il web o il proprio smartphone mediante la sintesi vocale penso che possa definirsi senza mezzi termini &lt;em&gt;mind blowing&lt;/em&gt;, e credo che possa cambiare in maniera netta il modo in cui ci approcciamo a questo tema.&lt;/p&gt;

&lt;p&gt;Simone ha una &lt;a href=&quot;https://tinyletter.com/webinclusivo&quot;&gt;newsletter&lt;/a&gt;, cui mi sono prontamente iscritto. Se volete conoscere qualcosa di più sull’argomento, e se siete magari inclini oggi a farvi un favore, iscrivetevi pure voi, perché ne vale la pena.&lt;/p&gt;</content><author><name>Andrea Gandino</name></author><category term="accessibilita" /><category term="newsletter" /><summary type="html">Come già accaduto a Catania il mese scorso, anche al WordCamp Verona di settimana scorsa si è discusso di accessibilità.</summary></entry><entry><title type="html">Font a spaziatura fissa che (forse) non conoscete</title><link href="https://andreagandino.com/blog/2019/font-a-spaziatura-fissa/" rel="alternate" type="text/html" title="Font a spaziatura fissa che (forse) non conoscete" /><published>2019-09-29T00:00:00+02:00</published><updated>2019-09-29T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2019/font-a-spaziatura-fissa</id><content type="html" xml:base="https://andreagandino.com/blog/2019/font-a-spaziatura-fissa/">&lt;p&gt;Il mio &lt;a href=&quot;https://simonemaranzana.com&quot;&gt;socio in affari&lt;/a&gt; vi potrebbe raccontare che ogni volta che si sposta a lavorare sul mio computer, due cose trova costantemente cambiate nel mio editor di testo: lo schema di colori e la famiglia di caratteri utilizzata.&lt;/p&gt;

&lt;p&gt;È più forte di me, e sembrerà una sciocchezza: cambiare combinazione di colori e font mi consente di guardare alla mia quotidianità programmatoria con occhi sempre diversi. In particolar modo con l’avvento dei monitor 4k o superiori, l’esperienza tipografica è diventata &lt;em&gt;decisamente&lt;/em&gt; gratificante.&lt;/p&gt;

&lt;p&gt;Recentemente, poi, sono diventato fan dei font da programmazione con &lt;a href=&quot;https://it.wikipedia.org/wiki/Legatura_(tipografia)&quot;&gt;legature&lt;/a&gt;, un lusso che prima d’ora tendevo a concedermi e gradire solo in contesti applicativi diversi.&lt;/p&gt;

&lt;p&gt;Quindi, eccovi una lista assolutamente parziale di font che mi sento di consigliare:&lt;/p&gt;

&lt;h2 id=&quot;1-fira-code&quot;&gt;1. &lt;a href=&quot;https://github.com/tonsky/FiraCode&quot;&gt;Fira Code&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Ok, questo magari lo conoscevate, ma lo metto comunque in lista perché è il font con cui sto scrivendo questo stesso post, e in più ha tra le legature meglio realizzate tra quelle che ho analizzato.&lt;/p&gt;

&lt;p&gt;Non gradite le legature? Non c’è problema: &lt;a href=&quot;https://fonts.google.com/specimen/Fira+Mono&quot;&gt;Fira Mono&lt;/a&gt;, suo gemello, non le ha.&lt;/p&gt;

&lt;h2 id=&quot;2-hasklig&quot;&gt;2. &lt;a href=&quot;https://github.com/i-tu/Hasklig&quot;&gt;Hasklig&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Fork di Source Code Pro, font già buono di suo, aggiunge un set di legature alla famiglia originaria. Da provare, se si vuole qualcosa di “classico”.&lt;/p&gt;

&lt;h2 id=&quot;3-operator-mono&quot;&gt;3. &lt;a href=&quot;https://www.typography.com/fonts/operator/styles&quot;&gt;Operator Mono&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Questo è un font delizioso. Non ha legature, ok (ma del resto non c’è nessun obbligo a riguardo), ma ha carattere da vendere: inoltre, è uno dei pochissimi font monospace ad avere una variante corsiva completa.&lt;/p&gt;

&lt;p&gt;Se guardate gli screenshot, magari potreste storcere il naso; ma se voleste utilizzarlo, vi renderete conto di come sia tutt’altro che fuori posto in un editor di testo.&lt;/p&gt;

&lt;p&gt;Ah, è a pagamento, e non viene via necessariamente a buon mercato; la variante di riferimento per un utilizzo nell’editor di testo è la variante “Book”.&lt;/p&gt;

&lt;h2 id=&quot;4-code-saver&quot;&gt;4. &lt;a href=&quot;https://creativemarket.com/dharmatype/3040425-Code-Saver?u=dharmatype&quot;&gt;Code Saver&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Per tornare a qualcosa di più classico, ma con una punta di innovazione, Code Saver potrebbe essere un’ottima scelta.&lt;/p&gt;

&lt;p&gt;Dotato di variante corsiva, e di zero barrati, ha proporzioni decisamente bilanciate, e si rivela particolarmente efficace sia che stiamo scrivendo codice, sia che scriviamo un articolo.&lt;/p&gt;

&lt;h2 id=&quot;5-cascadia-code&quot;&gt;5. &lt;a href=&quot;https://github.com/microsoft/cascadia-code&quot;&gt;Cascadia Code&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Microsoft con i font ci ha sempre saputo fare, e parecchio, anche. Cascadia Code, appena rilasciato in una versione preliminare, ha tutte le carte in regola per essere il degno successore di Consolas.&lt;/p&gt;

&lt;p&gt;La famiglia presenta eccellenti legature, ed ha forme particolari che, per creatività, richiamano vagamente quelle di Operator Mono.&lt;/p&gt;

&lt;p&gt;Siccome il font è ancora in fase di sviluppo, e ad oggi non presenta né una variante grassetto (non necessaria, ma gradita), né caratteri accentati (ma una &lt;a href=&quot;https://github.com/microsoft/cascadia-code/issues/127&quot;&gt;sollevazione popolare&lt;/a&gt; ha già reso esplicita la richiesta ai designer che ci stanno lavorando).&lt;/p&gt;

&lt;h2 id=&quot;un-paio-di-consigli&quot;&gt;Un paio di consigli&lt;/h2&gt;

&lt;p&gt;Chiudo con un paio di suggerimenti che penso potranno tornarvi utili se come me vorrete finalmente lasciarvi cadere nella tana del Bianconiglio dei font monospace:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Se il font che state utilizzando non vi piace troppo a livello di rendering, tipicamente se vi sembra troppo “ciccio” (termine tecnico), provate a cambiarne l’aliasing. In Sublime Text, per dire, c’è una differenza sostanziale tra vedere i font con &lt;code class=&quot;highlighter-rouge&quot;&gt;subpixel_antialias&lt;/code&gt; e &lt;code class=&quot;highlighter-rouge&quot;&gt;gray_antialias&lt;/code&gt;. Inoltre, considerate che tanto dipende dallo schema di colori utilizzato: su Mac, per esempio, testo chiaro su fondo scuro tenderà ad apparire più grassetto di quanto non sia in realtà.&lt;/li&gt;
  &lt;li&gt;Sempre in Sublime Text, è possibile indicare all’editor di non voler applicare le legature al font in uso; &lt;a href=&quot;https://www.sublimetext.com/docs/3/ligatures.html&quot;&gt;questa pagina di documentazione&lt;/a&gt; dovrebbe fornirvi tutte le informazioni necessarie.&lt;/li&gt;
&lt;/ol&gt;</content><author><name>Andrea Gandino</name></author><category term="programmazione" /><category term="font" /><category term="tipografia" /><summary type="html">Il mio socio in affari vi potrebbe raccontare che ogni volta che si sposta a lavorare sul mio computer, due cose trova costantemente cambiate nel mio editor di testo: lo schema di colori e la famiglia di caratteri utilizzata.</summary></entry><entry><title type="html">Alcune regole di buona programmazione</title><link href="https://andreagandino.com/blog/2019/alcune-regole-di-buona-programmazione/" rel="alternate" type="text/html" title="Alcune regole di buona programmazione" /><published>2019-09-20T00:00:00+02:00</published><updated>2019-09-20T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2019/alcune-regole-di-buona-programmazione</id><content type="html" xml:base="https://andreagandino.com/blog/2019/alcune-regole-di-buona-programmazione/">&lt;p&gt;Gran parte del mio lavoro consiste nell’avere a che fare con del codice che verrà eseguito da qualche parte. PHP, JavaScript, un server, un browser, importa relativamente.&lt;/p&gt;

&lt;p&gt;Spesso capita di avere a che fare con codice scritto da altri e capirci poco. Ci sta: non possiamo essere nella testa di un’altra persona, e fare &lt;em&gt;reverse engineering&lt;/em&gt; a volte prende più tempo del normale.&lt;/p&gt;

&lt;p&gt;Succede altre volte, invece, di avere &lt;em&gt;il proprio&lt;/em&gt; codice davanti agli occhi, e capirci poco comunque. Codice magari &lt;em&gt;vecchio&lt;/em&gt; di solo qualche mese. Personalmente, quando mi ritrovo ad aver a che fare con qualcosa di mio scritto più di un anno addietro, guardo a quel codice come un archeologo guarderebbe un reperto sepolto da centrimentri di polvere, scoperto quasi per caso, trattandolo con la circospezione di chi non vuole &lt;em&gt;rompere&lt;/em&gt; nulla.&lt;/p&gt;

&lt;p&gt;Di recente, tuttavia, ho notato che questo accade sempre meno, ovvero riesco sempre più a guardare codice mio indiscutibilmente &lt;em&gt;vecchio&lt;/em&gt;, senza per questo avere impulsi irrefrenabili che mi porterebbero alternativamente a sbattere la testa contro un muro, o riscrivere tutto quanto solo &lt;em&gt;per capriccio&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Magari sono solo migliorato col tempo. Si impara sbagliando, dicevo &lt;a href=&quot;/blog/2019/quello-che-serve/&quot;&gt;settimana scorsa&lt;/a&gt;. Magari, però, mi sono messo in condizione di fare qualche favore al futuro Andrea che dovrà avere a che fare con il codice che scrivo oggi, usando qualche accorgimento che, mi sento di poter dire, funziona.&lt;/p&gt;

&lt;p&gt;Segue ideale top five, snocciolata senza un ordine particolare:&lt;/p&gt;

&lt;h2 id=&quot;5-evitare-di-scrivere-codice-criptico&quot;&gt;5. Evitare di scrivere codice criptico&lt;/h2&gt;

&lt;p&gt;Certo, ogni volta che scriviamo del codice, a prescindere dalla funzione che andrà a svolgere, potremmo scriverlo in meno righe, meno caratteri, astraendo ad libitum. Ma saremo ancora in grado di guardarlo tra sei mesi e capire istantaneamente cosa fa?&lt;/p&gt;

&lt;p&gt;Il codice va scritto per le persone, a volte anche per le nostre stesse controparti del futuro, quindi facciamoci il favore di renderlo &lt;em&gt;intelleggibile&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;4-commentare-commentare-commentare&quot;&gt;4. Commentare, commentare commentare…&lt;/h2&gt;

&lt;p&gt;Studi recenti dimostrano che aggiungere un commento in corrispondenza della definizione di una classe, una funzione, o un passaggio di una routine convoluta &lt;em&gt;non&lt;/em&gt; porta a sviluppare patologie incurabili. Se lo si fa seguendo &lt;a href=&quot;https://en.wikipedia.org/wiki/PHPDoc&quot;&gt;uno standard&lt;/a&gt;, anche meglio.&lt;/p&gt;

&lt;h2 id=&quot;3-ma-non-commentare-troppo&quot;&gt;3. …ma non commentare troppo&lt;/h2&gt;

&lt;p&gt;Stiamo scrivendo codice, non un sonetto in endecasillabi, quindi aggiungere un commento per ogni riga che scriviamo risulterà inevitabilmente ridondante. Vale, del resto, sempre il punto numero 5: se il codice necessita di essere spiegato passo-passo, forse non è sufficientemente chiaro di suo.&lt;/p&gt;

&lt;h2 id=&quot;2-consentire-di-poter-alterare-il-funzionamento-dallesterno&quot;&gt;2. Consentire di poter alterare il funzionamento “dall’esterno”&lt;/h2&gt;

&lt;p&gt;Se stiamo scrivendo una libreria, probabilmente aggiungeremo dei parametri con cui inizializzarla e sfruttarla in maniera differente a seconda del valore dei parametri stessi.&lt;/p&gt;

&lt;p&gt;Lo stesso concetto lo possiamo applicare praticamente ad ogni tipo di codice che scriviamo: rendere &lt;em&gt;modificabile&lt;/em&gt; e &lt;em&gt;prevedibile&lt;/em&gt; il risultato della sua esecuzione, senza toccare il cuore dello stesso.&lt;/p&gt;

&lt;p&gt;WordPress, in tal senso, fornisce già di suo gli strumenti per permettere di intervenire “dall’esterno” utilizzando &lt;a href=&quot;https://developer.wordpress.org/plugins/hooks/filters/&quot;&gt;filtri&lt;/a&gt; e &lt;a href=&quot;https://developer.wordpress.org/plugins/hooks/actions/&quot;&gt;azioni&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;1-essere-pigri-è-una-buona-cosa&quot;&gt;1. Essere pigri è una buona cosa&lt;/h2&gt;

&lt;p&gt;La pigrizia generalmente è vista come concetto negativo. In programmazione, tuttavia, essere pigri può diventare velocemente un punto di forza del nostro skillset.&lt;/p&gt;

&lt;p&gt;Essere pigri, per me, vuol dire anche ottimizzare il proprio flusso di lavoro. Ad esempio, se qualcosa può essere automatizzato, è bene che lo sia. Dici, “ma risparmio sì e no un paio di secondi!”.&lt;/p&gt;

&lt;p&gt;Certo, ma quando andremo a sommare tutte le ottimizzazioni del workflow e valutare tutto il tempo che non avremo passato a fare operazioni noiose e ripetitive, beh forse saremo ancor più convinti che essere pigri, in questo campo, non sia poi così male.&lt;/p&gt;</content><author><name>Andrea Gandino</name></author><category term="programmazione" /><category term="workflow" /><category term="tips" /><summary type="html">Gran parte del mio lavoro consiste nell’avere a che fare con del codice che verrà eseguito da qualche parte. PHP, JavaScript, un server, un browser, importa relativamente.</summary></entry><entry><title type="html">Quello che serve</title><link href="https://andreagandino.com/blog/2019/quello-che-serve/" rel="alternate" type="text/html" title="Quello che serve" /><published>2019-09-09T00:00:00+02:00</published><updated>2019-09-09T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2019/quello-che-serve</id><content type="html" xml:base="https://andreagandino.com/blog/2019/quello-che-serve/">&lt;p&gt;Sono arrivato ad un punto della mia parabola lavorativa in cui mi sento di poter dire di avere maturato un po’ di esperienza in quello che faccio.&lt;/p&gt;

&lt;p&gt;Nel nostro lavoro le ossa te le fai sbagliando. Ripetutamente. A volte a caro prezzo. Quando mi capita di descrivere la mia storia professionale, mi piace raccontare di aver &lt;em&gt;preso più facciate nel muro di quante io voglia ricordare&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Non c’è una vera e propria formazione accademica. Impari facendo. Magari è vero per tutte le professioni del mondo e sono io, chiuso nella mia piccola bolla, a pensare ingenuamente che il web design sia in qualche modo differente.&lt;/p&gt;

&lt;p&gt;Sebbene (spero) involontaria, sbagliare è un’attività insidiosa. Quando si è in proprio, a volte si sbaglia e non si sa neanche perché e, inanellando &lt;em&gt;facciate&lt;/em&gt;, a volte capita di pensare di non essere bravi abbastanza, di non avere chances di &lt;em&gt;farcela&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Occorre tener duro, e convincersi che quello che si fa possa rappresentare un valore per chi lo utilizza, e che il &lt;em&gt;modo&lt;/em&gt; con cui si lavora faccia la differenza.&lt;/p&gt;

&lt;p&gt;La nostra storia in &lt;a href=&quot;https://justevolve.it&quot;&gt;Evolve&lt;/a&gt; è fatta di questi e tanti altri pensieri.&lt;/p&gt;

&lt;p&gt;Recentemente, stiamo valutando se sia possibile aggiungere un’altra persona al nostro team, che dall’anno scorso può contare anche sul prezioso aiuto di &lt;a href=&quot;https://www.acapoweb.it/&quot;&gt;Maria Laura&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ok, ma come la trovi questa persona? Come fai a capire se la persona ha &lt;em&gt;quel che serve&lt;/em&gt; per poter intraprendere un rapporto proficuo?&lt;/p&gt;

&lt;p&gt;Beh, vai su LinkedIn, no?&lt;/p&gt;

&lt;p&gt;Ecco, andare su LinkedIn porta invariabilmente a passare serate a scartabellare tra i risultati di ricerca, a leggere profili che non possono che raccontare storie parziali, sapendo che, in definitiva, l’unica idea degna d’essere presa in considerazione te la formerai solo parlando con quella persona per più di dieci minuti.&lt;/p&gt;

&lt;p&gt;In questi anni mi sono formato un’opinione su cosa serva per far bene il proprio lavoro, e, di riflesso, cosa io cerchi in una persona che voglia lavorare insieme a noi.&lt;/p&gt;

&lt;p&gt;A costo di suonare stucchevole, per lavorare bene serve umiltà. Per ammettere i propri errori, già che la formula per l’infallibilità non s’è ancora scoperta, e per considerare non necessariamente da buttare quei punti di vista che non sono nel nostro radar.&lt;/p&gt;

&lt;p&gt;Serve razionalità, per imparare dagli errori, e non auto-crocifiggersi quando capita di sbagliare. Occorre non essere pigri, sfidare le proprie consuetudini, ché la nostra bolla gira anche troppo velocemente.&lt;/p&gt;

&lt;p&gt;Ma più di tutto serve curiosità, che è la voglia di guardarsi intorno, di sperimentare e, magari, farne altri di sbagli. Diversi, &lt;em&gt;migliori&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;C’è una frase che qualcuno attribuisce a Michael Jordan, ma sulla cui paternità avrei qualche dubbio, conoscendo il soggetto. La sostanza rimane, però:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I can accept failure. I cannot accept not trying.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bravo, Mike.&lt;/p&gt;

&lt;p&gt;Psst! Vuoi farti una chiacchierata con noi? &lt;a href=&quot;mailto:info@justevolve.it&quot;&gt;Scrivici!&lt;/a&gt;&lt;/p&gt;</content><author><name>Andrea Gandino</name></author><summary type="html">Sono arrivato ad un punto della mia parabola lavorativa in cui mi sento di poter dire di avere maturato un po’ di esperienza in quello che faccio.</summary></entry><entry><title type="html">Universi simulati</title><link href="https://andreagandino.com/blog/2019/universi-simulati/" rel="alternate" type="text/html" title="Universi simulati" /><published>2019-09-03T00:00:00+02:00</published><updated>2019-09-03T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2019/universi-simulati</id><content type="html" xml:base="https://andreagandino.com/blog/2019/universi-simulati/">&lt;p&gt;Seguendo l’attuale tendenza secondo cui il cinema d’oltre oceano sia in grado di produrre esclusivamente remake di grandi pellicole del passato, leggo che un quarto capitolo della saga di Matrix è stato &lt;a href=&quot;https://www.foxlife.it/2019/08/21/matrix-4-keanu-reeves-carrie-ann-moss-lana-wachowski/&quot;&gt;ufficialmente confermato&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Matrix, in particolare il primo dei tre, è stato straordinariamente grande un po’ perché ha avuto l’ardire di raccontare la fantascienza associandola a particolari segmenti di cultura e arte popolari, un po’ perché l’ha fatto introducendo al pubblico un concetto nuovo, forse stravagante, certamente inquietante, ponendoci una precisa domanda: e se fossimo tutti parte di una simulazione?&lt;/p&gt;

&lt;p&gt;Come &lt;a href=&quot;https://it.wikipedia.org/wiki/The_Sims&quot;&gt;The Sims&lt;/a&gt;? Beh, sì. Anzi, meglio di The Sims. Matrix non simulava &lt;em&gt;solo&lt;/em&gt; un soggiorno con area cottura, ma rappresentava una simulazione su scala planetaria, galattica, universale, che tenesse in considerazione il tutto.&lt;/p&gt;

&lt;p&gt;Ora, siccome questo blog vorrei fosse anche un po’ un archivio di documenti che preferirei non smarrire, cosa che mi riesce particolarmente congeniale, riporto in questa sede il &lt;a href=&quot;https://www.simulation-argument.com/&quot;&gt;lavoro&lt;/a&gt; di un tipo, Nick Bostrom, di mestiere filosofo, che la domanda se l’è posta per davvero e l’ha affrontata con la serietà che si dedica ai grandi temi della conoscenza.&lt;/p&gt;

&lt;p&gt;Ammettendo, cosa tutt’altro che scontata, di non distruggerci prima, cosa accadrebbe se la nostra potenza tecnologica crescesse a tal punto da consentire la creazione di una simulazione dettagliata quanto la nostra realtà? Sapremmo veramente trattenerci dal &lt;em&gt;tirare su&lt;/em&gt; una macchina virtuale e &lt;em&gt;curiosare&lt;/em&gt; dentro per vedere, chessò, quante volte su cento simulazioni l’esercito di Sparta tenga effettivamente testa a quello persiano?&lt;/p&gt;

&lt;p&gt;Bene, Bostrom conclude che, delle tre seguenti opzioni, almeno una deve essere vera:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;L’umanità si autodistruggerà molto prima di raggiungere uno stadio di sviluppo tecnologico che consenta la creazione di simulazioni…&lt;/li&gt;
  &lt;li&gt;… oppure l’umanità arriverà sì ad essere in grado di creare simulazioni, ma semplicemente sceglierà di non farlo o di non crearne un numero significante…&lt;/li&gt;
  &lt;li&gt;… oppure è praticamente certo che siamo, oggi, parte di una di quelle simulazioni.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Il ragionamento non fa una grinza. Pure Elon Musk, che sembra avere un’opinione educata su quasi tutto, è d’accordo su come sia non solo possibile, ma anche probabile che noi siamo attualmente parte di un software che gira da qualche parte.&lt;/p&gt;

&lt;p&gt;George Smoot, Nobel per la fisica, asserisce che l’umanità potrebbe, un giorno, essere anche in grado di provare la propria appartenenza ad una simulazione.&lt;/p&gt;

&lt;div class=&quot;embed&quot;&gt;
	&lt;div class=&quot;video&quot;&gt;
		&lt;iframe loading=&quot;lazy&quot; src=&quot;https://www.youtube.com/embed/Chfoo9NBEow&quot; width=&quot;700&quot; height=&quot;480&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;
		&lt;/iframe&gt;
	&lt;/div&gt;

	
&lt;/div&gt;

&lt;p&gt;Recentemente, ha ripreso l’argomento anche il New York Times in un &lt;a href=&quot;https://www.nytimes.com/2019/08/10/opinion/sunday/are-we-living-in-a-computer-simulation-lets-not-find-out.html&quot;&gt;articolo&lt;/a&gt;. Il pezzo, tuttavia, scoraggia l’idea di un’indagine volta a dimostrare la nostra essenza cibernetica, dato che l’ipotetica simulazione potrebbe essere &lt;em&gt;spenta&lt;/em&gt; qualora i soggetti al suo interno ne scoprissero l’esistenza.&lt;/p&gt;

&lt;p&gt;Non è poi così pazzesca come pensata; anche un trial clinico verrebbe annullato qualora il paziente venisse a conoscenza di stare ricevendo il farmaco o il placebo.&lt;/p&gt;

&lt;p&gt;Detto questo, Matrix, che a questo punto spero concorderete con me essere &lt;em&gt;molto più&lt;/em&gt; di un semplice film di fantascienza, ci viene ancora una volta incontro.&lt;/p&gt;

&lt;p&gt;Nel tentativo di spiegare Matrix a Neo, Morpheus dice che, in fondo, ogni contatto tra noi e il mondo esterno è riconducibile ad un impulso elettrico interpretato dal cervello.&lt;/p&gt;

&lt;p&gt;Cambia forse qualcosa sapere se quell’impulso è proveniente dal mondo naturale &lt;em&gt;vero&lt;/em&gt;, qualsiasi cosa ciò voglia dire, o da un sistema computazionale?&lt;/p&gt;

&lt;p&gt;In astratto, sì. Ma, essendo sempre stati all’oscuro della vera natura del nostro universo, arriveremmo anche a ritenere meno autentica la nostra esistenza? Credo di no.&lt;/p&gt;</content><author><name>Andrea Gandino</name></author><category term="bostrom" /><category term="simulazioni" /><category term="matrix" /><summary type="html">Seguendo l’attuale tendenza secondo cui il cinema d’oltre oceano sia in grado di produrre esclusivamente remake di grandi pellicole del passato, leggo che un quarto capitolo della saga di Matrix è stato ufficialmente confermato.</summary></entry><entry><title type="html">Back to basics</title><link href="https://andreagandino.com/blog/2019/back-to-basics/" rel="alternate" type="text/html" title="Back to basics" /><published>2019-08-26T00:00:00+02:00</published><updated>2019-08-26T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2019/back-to-basics</id><content type="html" xml:base="https://andreagandino.com/blog/2019/back-to-basics/">&lt;p&gt;A questo punto penso sia evidente come il sottoscritto e il mio blog abbiamo un rapporto, diciamo, conflittuale.&lt;/p&gt;

&lt;p&gt;Ora, siccome gli argomenti non mancano, e pure su quella storia della sindrome dell’impostore credo si sia finalmente fatto qualche passo avanti, è tempo di provarne un’altra.&lt;/p&gt;

&lt;p&gt;Lavoro con WordPress praticamente la totalità del tempo che spendo in ufficio, ma è un fatto ormai conclamato che quando devo scrivere qualcosa di più lungo di un &lt;a href=&quot;https://twitter.com/andre_g/&quot;&gt;Tweet&lt;/a&gt; io passi invariabilmente per usare una qualche forma di &lt;a href=&quot;https://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Non credo che questo voglia dire necessariamente qualcosa di specifico riguardo a Gutenberg, il nuovo editor di cui la piattaforma WordPress si è dotata recentemente, quanto piuttosto che, a volte, è difficile spezzare un’abitudine, ammesso che ciò debba essere fatto.&lt;/p&gt;

&lt;p&gt;In più, l’idea di tornare alle basi dello sviluppo e del design per il Web e creare qualcosa da zero, autonomamente, come mi piaceva fare anni e anni fa, quando ho iniziato a studiare per poter permettermi, un giorno, il lusso di svolgere questa professione, risale ormai a qualche mese addietro.&lt;/p&gt;

&lt;p&gt;Quindi, ecco a voi la nuova edizione del sito del sottoscritto, basata su &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;, un generatore statico di pagine Web, che immagino tanti conosceranno. Per quelli che fossero &lt;em&gt;nuovi&lt;/em&gt; al concetto, &lt;em&gt;statico&lt;/em&gt; significa che su queste pagine non c’è neanche l’ombra di PHP, ma solo HTML (grazie a &lt;a href=&quot;https://shopify.github.io/liquid/&quot;&gt;Liquid&lt;/a&gt;, il template engine su cui si basa Shopify), e CSS, linguaggio che, sotto la sapiente supervisione di &lt;a href=&quot;https://simonemaranzana.com&quot;&gt;Simone&lt;/a&gt;, sto imparando nuovamente ad apprezzare.&lt;/p&gt;

&lt;p&gt;Niente PHP/WordPress? Nel 2019? Beh, sì, a seconda del tipo di progetto che si deve realizzare questo esperimento mi sta confermando come l’alternativa statica sia non solo percorribile, ma anche vincente, se quel che serve è un sito di contenuto che strizzi più di un occhio alle performance.&lt;/p&gt;

&lt;p&gt;Statico vuol dire overhead ridotto al minimo, e time to first byte coincidente con la risposta stessa del server, dato che non ci sono computazioni da fare. Ah quindi ora fai 100% su Google Page Speed? No, beh, non crederete mica che non arrivi anche qui lo script di Google Analytics a guastare la festa, vero?&lt;/p&gt;</content><author><name>Andrea Gandino</name></author><category term="markdown" /><category term="liquid" /><summary type="html">A questo punto penso sia evidente come il sottoscritto e il mio blog abbiamo un rapporto, diciamo, conflittuale.</summary></entry><entry><title type="html">Un’alternativa a file_get_contents</title><link href="https://andreagandino.com/blog/2016/un-alternativa-a-file-get-contents/" rel="alternate" type="text/html" title="Un'alternativa a file_get_contents" /><published>2016-09-06T00:00:00+02:00</published><updated>2016-09-06T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2016/un-alternativa-a-file-get-contents</id><content type="html" xml:base="https://andreagandino.com/blog/2016/un-alternativa-a-file-get-contents/">&lt;p&gt;Le linee guida del gruppo Theme Review su WordPress.org sono molto stringenti in alcuni casi, e per una ragione più che buona: queste best practice, consigli e regole sono volte a far sì che il rischio che codice scadente venga pubblicato sia ridotto al minimo.&lt;/p&gt;

&lt;p&gt;Una di quelle regole proibisce categoricamente le operazione dirette sui file, a meno che non siano eseguite attraverso la &lt;a href=&quot;https://codex.wordpress.org/Filesystem_API&quot;&gt;Filesystem API&lt;/a&gt;. A causa di questo vincolo, l’utilizzo di una funzione altrimenti molto utile come &lt;code class=&quot;highlighter-rouge&quot;&gt;file_get_contents&lt;/code&gt; è proibito; non solo, qualora la usassimo, il plugin &lt;a href=&quot;https://wordpress.org/plugins/theme-check/&quot;&gt;Theme Check&lt;/a&gt; ci segnalerebbe il suo utilizzo come un errore da correggere.&lt;/p&gt;

&lt;p&gt;Per letture locali, comunque, esiste un modo per accedere ai contenuti di un file senza utilizzare &lt;code class=&quot;highlighter-rouge&quot;&gt;file_get_contents&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$content = implode( '', file( $path_to_file );
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;che essenzialmente accede al file riga per riga, memorizza le righe stesse in un array, salvo poi unirle a formare una stringa unica.&lt;/p&gt;</content><author><name>Andrea Gandino</name></author><category term="sviluppo" /><summary type="html">Le linee guida del gruppo Theme Review su WordPress.org sono molto stringenti in alcuni casi, e per una ragione più che buona: queste best practice, consigli e regole sono volte a far sì che il rischio che codice scadente venga pubblicato sia ridotto al minimo.</summary></entry><entry><title type="html">Chiamate remote a URL con WordPress</title><link href="https://andreagandino.com/blog/2016/chiamate-remote-a-url-con-wordpress/" rel="alternate" type="text/html" title="Chiamate remote a URL con WordPress" /><published>2016-07-15T00:00:00+02:00</published><updated>2016-07-15T00:00:00+02:00</updated><id>https://andreagandino.com/blog/2016/chiamate-remote-a-url-con-wordpress</id><content type="html" xml:base="https://andreagandino.com/blog/2016/chiamate-remote-a-url-con-wordpress/">&lt;p&gt;Quando si vuole integrare WordPress con sistemi esterni, spesso si passa per le API dei servizi stessi, ovvero effettuare chiamate in maniera programmatica a URL ben definiti, i quali rispondono con un set di dati che andremo poi ad elaborare.&lt;/p&gt;

&lt;p&gt;Ora, tipicamente, quando detti servizi inseriscono nella documentazione degli esempi in PHP da seguire, il codice riportato fa uso di &lt;a href=&quot;https://www.php.net/manual/en/book.curl.php&quot;&gt;cURL&lt;/a&gt;, una libreria ampiamente diffusa che serve, appunto, a chiamare un URL e conservare il contenuto della risposta.&lt;/p&gt;

&lt;p&gt;Sebbene perfettamente adeguato allo scopo, due sono, per quel che mi riguarda, i problemi nell’utilizzare cURL.&lt;/p&gt;

&lt;p&gt;Per cominciare, la sua sintassi non è di immediata memorizzazione:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$curl = curl_init( 'https://andreagandino.com' );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, array( 'field1' =&amp;gt; 'primo parametro', 'field2' =&amp;gt; 'secondo parametro' ) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
$response = curl_exec( $curl );
curl_close( $curl );
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Inoltre, su alcuni server cURL potrebbe, per ragioni di sicurezza, essere disabilitato, rendendo completamente vano il codice riportato sopra.&lt;/p&gt;

&lt;p&gt;In casi come questo, WordPress viene incontro allo sviluppatore, mettendo a disposizione funzioni di alto livello che consentono non solo di bypassare la verbosità del codice precedentemente illustrato, ma di fornire anche un fallback, qualora cURL non sia disponibile.&lt;/p&gt;

&lt;p&gt;È il caso delle funzioni &lt;a href=&quot;https://codex.wordpress.org/Function_Reference/wp_remote_get&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;wp_remote_get&lt;/code&gt;&lt;/a&gt; e &lt;a href=&quot;https://codex.wordpress.org/Function_Reference/wp_remote_post&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;wp_remote_post&lt;/code&gt;&lt;/a&gt;, le quali consentono di effettuare chiamate a URL remoti, senza preoccuparsi tropp dei dettagli tecnici sottesi alle chiamate stesse (per chi volesse approfondire, entrambe le funzioni si basano sulla classe &lt;code class=&quot;highlighter-rouge&quot;&gt;WP_Http&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;La parola chiave di tutto questo discorso è però l’aggettivo “remoto”.&lt;/p&gt;

&lt;p&gt;Può capitare, com’è successo a noi quando stavamo progettando l’infrastruttura del nostro shop, di dover simulare, sulla stessa macchina, sia il server, sia un client; dal momento che WordPress, diciamo, &lt;em&gt;valida&lt;/em&gt; gli URL che chiama tramite le proprie funzioni, ogni chiamata verso un indirizzo locale verrà irrimediabilmente rigettata.&lt;/p&gt;

&lt;p&gt;Esiste, però, un filtro molto utile in questo caso che, se applicato, consente di “far credere” a WordPress che qualsiasi chiamata effettuata tramite la HTTP API sia diretta ad un host remoto, anche quando così non fosse.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;add_filter( 'http_request_host_is_external', '__return_true' );
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Ovviamente, questa direttiva deve tassativamente essere applicata esclusivamente in fase di sviluppo e, qualora decidessimo di utilizzarla, dovremo successivamente assicurarci che non faccia parte del sorgente di produzione.&lt;/p&gt;</content><author><name>Andrea Gandino</name></author><category term="sviluppo" /><category term="rest" /><summary type="html">Quando si vuole integrare WordPress con sistemi esterni, spesso si passa per le API dei servizi stessi, ovvero effettuare chiamate in maniera programmatica a URL ben definiti, i quali rispondono con un set di dati che andremo poi ad elaborare.</summary></entry></feed>