{"id":651,"date":"2016-08-23T09:31:45","date_gmt":"2016-08-23T07:31:45","guid":{"rendered":"https:\/\/alistapart.com\/it\/article\/interazione-enhancement\/"},"modified":"2016-08-23T09:31:45","modified_gmt":"2016-08-23T07:31:45","slug":"interazione-enhancement","status":"publish","type":"article","link":"https:\/\/alistapart.com\/it\/article\/interazione-enhancement\/","title":{"rendered":"L&#8217;interazione \u00e8 un enhancement"},"content":{"rendered":"<div class=\"main-content pre-article\">\n<p class=\"editors-note\"><strong>Nota degli editori:<\/strong> Siamo lieti di offrirvi questo estratto dal Capitolo 5 del libro di Aaron Gustafson, <cite>Adaptive Web Design, Second Edition<\/cite>. <a href=\"http:\/\/www.peachpit.com\/store\/adaptive-web-design-crafting-rich-experiences-with-9780134216140\">Acquistate il libro da New Riders<\/a> con il 35% di sconto utilizzando il codice AARON35.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<p>Nel febbraio del 2011, poco dopo che Gawker Media lanci\u00f2 un redesign unificato delle sue varie propriet\u00e0 (Lifehacker, Gizmodo, Jezebel, etc.), gli utenti che visitavano questi siti venivano accolti da una pagina vuota, senza alcun contenuto. Cos&#8217;era successo? JAvaScript era successo. O meglio, JavaScript <em>non era<\/em> successo.<sup><a href=\"#note1\">1<\/a><\/sup><\/p>\n<div class=\"image full\"><img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2016\/08\/05-01.png\" border=\"0\" alt=\"Screenshot di un sito web completamente vuoto con visualizzato solo il logo di Lifehacker.\" width=\"100%\" \/><\/p>\n<p>Lifehacker durante l&#8217;inconveniente JavaScript del 2011.<\/p>\n<\/div>\n<p>Nella creazione dell&#8217;architettura delle sue nuove piattaforme, Gawker Media ha adottato JavaScript come metodo di delivery per i propri contenuti. Manda un guscio HTML vuoto al browser e poi carica l&#8217;effettivo contenuto della pagina via JavaScript. La saggezza popolare dice che questo approccio rende questi siti pi\u00f9 \u201csimili alle app\u201d e \u201dmoderni\u201d. Ma nel giorno del lancio, un unico errore nel codice JavaScript su cui gira la piattaforma ha messo in ginocchio il sistema. Quell&#8217;unico errore solitario ha causato un lungo \u201dblackout\u201d (uso questo termine deliberatamente perch\u00e9 i server in realt\u00e0 stavano funzionando) per ogni propriet\u00e0 di Gawker e ha fatto perdere all&#8217;azienda innumerevoli page views e impressions.<\/p>\n<p>Vale la pena notare che, negli anni a seguire, Gawker Media ha aggiornato i suoi siti affinch\u00e9 inviino contenuto in assenza di JavaScript.<\/p>\n<p>\u25a0 \u25a0 \u25a0<\/p>\n<p>Una sera del gennaio 2014, molto tardi, il \u201cparental filter\u201d usato da Sky Broadband, uno dei maggiori ISP (Internet Service Providers) del Regno Unito cominci\u00f2 a classificare <code>code.jquery.com<\/code> come un sito web di \u201cmalware e phishing\u201d.<sup><a href=\"#note2\">2<\/a><\/sup> Il CDN (content delivery network) di jQuery si trova proprio a quell&#8217;URL. Nessun problema, jQuery \u00e8 solo la libreria JavaScript su cui fanno affidamento i tre quarti dei 10000 top siti web al mondo per far funzionare le proprie pagine!<\/p>\n<p>Con il dominio caratterizzato in maniera cos\u00ec errata, il firewall di Sky si mise in azione e cominci\u00f2 a \u201cproteggere\u201d la gran parte dei propri clienti da codice \u201cmalicious\u201d. Tutto a un tratto, grandi porzioni del Web hanno smesso all&#8217;improvviso di funzionare per ogni cliente di Sky Broadband che non aveva disabilitato esplicitamente tale protezione. Ogni sito che si basava su una copia di jQuery di quel CDN per caricare il proprio contenuto, mostrare pubblicit\u00e0 o permettere delle interazioni era morto, anche se non per colpa sua.<\/p>\n<p>\u25a0 \u25a0 \u25a0<\/p>\n<p>Nel settembre del 2014, <cite>Art Technica<\/cite> ha rivelato che Comcast stava facendo inject di pubblicit\u00e0 auto-promozionali nei siti web che passavano dai suoi hotspot Wi-Fi.<sup><a href=\"#note3\">3<\/a><\/sup> Tali injection costituiscono a tutti gli effetti un attacco \u201cman-in-the-middle\u201d<sup><a href=\"#note4\">4<\/a><\/sup>, creando una situazione che aveva il potenziale di far smettere di funzionare un sito. L&#8217;esperto di sicurezza Dan Kaminsky ne ha parlato in questi termini:<\/p>\n<blockquote><p>Tu sviluppatore del sito non sai pi\u00f9 esattamente che codice il browser l\u00e0 fuori sta facendo girare. Non l&#8217;hai mandato tu, ma i tuoi clienti l&#8217;hanno ricevuto.<\/p><\/blockquote>\n<p>Comcast non \u00e8 la sola organizzazione a fare queste cose. Gli hotel, gli aeroporti e altri provider di Wi-Fi \u201cgratis\u201d fanno regolarmente injection di pubblicit\u00e0 e di altro codice nei siti web che passano sulle proprie reti.<\/p>\n<p>\u25a0 \u25a0 \u25a0<\/p>\n<p>Molti web designer e developer pensano a torto che il supporto per JavaScript sia un dato di fatto o che le questioni legate a JavaScript stiano scomparendo con il declino di IE 8, ma queste tre storie sono tutte recenti e nessuna di queste riguardava un problema di supporto da parte di un browser. Se queste storie ci dicono qualcosa \u00e8 che dovete sviluppare la Chrysler Imperial del 1964<sup><a href=\"#note5\">5<\/a><\/sup> dei siti web: siti che continuano a funzionare anche quando vengono presi a pugni da tutte le parti. Dopo tutto, device, browser, plugin, server, network e perfino i router che fondamentalmente mandano in giro i vostri siti hanno tutti diritto di parola sul modo in cui il contenuto (e su quale contenuto) arriva effettivamente ai vostri utenti.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Prendete confidenza con i potenziali problemi cos\u00ec da poterli evitare<\/h2>\n<p>Sembra quasi che una settimana s\u00ec e una no esca un nuovo framework JavaScript, che cerca di proporre un nuovo approccio che \u201crivoluzioner\u00e0\u201d il modo in cui creiamo siti web. Framework come Angular, Ember, Knockout e React eliminano il modello tradizionale dei browser che navigano da pagina a pagina di contenuto generato dal server. Al contrario, questi framework sostituiscono completamente il browser e gestiscono tutte le richieste al server, solitamente facendo il fetch di un tot di pezzi di contenuto alla volta per controllare l&#8217;intera esperienza dall&#8217;inizio alla fine. Basta refresh di pagina. Basta attese.<\/p>\n<p>C&#8217;\u00e8 solo un problema: senza JavaScript, non succede niente di tutto ci\u00f2.<\/p>\n<p>No, non sono qui a dirvi che non dovreste usare JavaScript<sup><a href=\"#note6\">6<\/a><\/sup>. Io penso che JavaScript sia uno strumento incredibile e sono fermamente convinto che possa migliorare le esperienze degli utenti\u2026 Quando \u00e8 usato saggiamente.<\/p>\n<h3>Comprendere il medium<\/h3>\n<p>Agli albori del Web, i \u201cveri\u201d software developer scartavano JavaScript. Molti lo vedevano come un linguaggio \u201cgiocattolo\u201d (e la pensavano allo stesso modo per HTML e CSS). Secondo loro, non era potente come Java o Perl o C, quindi non valeva la pena impararlo. Negli anni a seguire, per\u00f2, JavaScript \u00e8 cambiato tanto.<\/p>\n<p>Molti di questi developer hanno cominciato a prestare attenzione a JavaScript a met\u00e0 degli anni 2000, quando Ajax \u00e8 diventato popolare, ma sono dovuti passare altri anni prima che cominciassero a portare a frotte il proprio talento sul web, attirati dai framework JavaScript e dalla loro promessa di un&#8217;esperienza di sviluppo per il web pi\u00f9 tradizionale. Questa, tutto sommato, \u00e8 una buona cosa: c&#8217;\u00e8 bisogno di pi\u00f9 persone che lavorino sul web per migliorarlo. L&#8217;unico problema che io ho visto, per\u00f2, \u00e8 la fondamentale disconnessione che gli sviluppatori di software tradizionali sembrano avere con il modo in cui funziona il deploy del codice sul web.<\/p>\n<p>Nello sviluppo software tradizionale, potete dire la vostra sull&#8217;ambiente di esecuzione. Sul Web, non potete. Mi spiego: se sto scrivendo del software server-side in Python o Rails o addirittura in PHP, una di queste due cose \u00e8 vera:<\/p>\n<ul>\n<li>io controllo l&#8217;ambiente server, incluso il sistema operativo, le versioni del linguaggio e i package.<\/li>\n<li>Io non controllo l&#8217;ambiente server, ma lo conosco e posso creare il mio programma di conseguenza, cos\u00ec che verr\u00e0 eseguito secondo le aspettative.<\/li>\n<\/ul>\n<p>Nel mondo pi\u00f9 tradizionale del software installato, potete controllare in maniera simile l&#8217;ambiente mettendo certe restrizioni su quali sistemi operativi sono supportati dal vostro codice e quali dependencies potete avere (come lo spazio disco o la RAM disponibili). Fornite subito questa informazione e i vostri potenziali utenti possono scegliere il vostro software o un prodotto concorrente basandosi su quello che funziona per loro.<\/p>\n<p>Sul Web, tuttavia, non valgono pi\u00f9 queste premesse. Il Web \u00e8 ovunque. Il Web \u00e8 disordinato e, per quanto io voglia controllare fino al pixel l&#8217;esperienza di un utente, comprendo che non succeder\u00e0 mai perch\u00e9 non \u00e8 cos\u00ec che funziona il Web. La frustrazione che sento a volte per via della mancanza di controllo \u00e8 anche incredibilmente liberatoria e mi spinge a trovare approcci pi\u00f9 creativi. Sfortunatamente, gli sviluppatori software tradizionali che hanno poca esperienza del web non sono ancora scesi a patti con questo. \u00c8 comprensibile: ci sono voluti un po&#8217; di anni anche per me.<\/p>\n<p>Non si controlla l&#8217;ambiente in cui viene eseguito il proprio codice JavaScript, interpretato il proprio HTML o applicato il CSS. Gli utenti controllano il device (e, di conseguenza, la velocit\u00e0 del suo processore, la sua RAM, etc.). A seconda del device, gli utenti potrebbero scegliere il sistema operativo, il browser e la versione del browser che utilizzano. Gli utenti possono decidere quali add-on usare nel browser. Gli utenti possono rimpicciolire o ingrandire i font utilizzati per visualizzare il vostro sito. E gli Internet provider si mettono tra voi e gli utenti, dettando legge sulla velocit\u00e0 di rete, regolando la latency e in fin dei conti controllando in che modo (e che parte del) vostro contenuto arriva al loro browser. Tutto quello che potete fare \u00e8 realizzare un&#8217;esperienza convincente, che si sappia adattare e poi incrociare le dita e sperare per il meglio.<\/p>\n<p>Il problema fondamentale del dare JavaScript per scontato, che \u00e8 quello che fanno questi framework, \u00e8 che crea l&#8217;illusione del controllo. \u00c8 facile razionalizzare questa prospettiva quando avete accesso all&#8217;hardware pi\u00f9 recente e pi\u00f9 performante e ad una connessione a internet stabile e veloce. Se non avete mai guardato fuori dalla bolla del nostro settore, potreste pensare che tutti i vostri utenti siano cos\u00ec ben equipaggiati. Ovviamente, se state creando una web app interna, potreste essere in grado di decidere la combinazione OS\/browser per tutti i vostri utenti e bloccare le loro macchine cos\u00ec che non possano modificare alcuna impostazione, ma questa non \u00e8 la realt\u00e0 dell&#8217;open Web. Il fatto \u00e8 che non potete assolutamente fare affidamento sulla disponibilit\u00e0 di una qualsiasi tecnologia specifica quando dovete mandare il vostro sito web nel mondo.<\/p>\n<p>\u00c8 di importanza vitale realizzare le esperienze del proprio sito web perch\u00e9 funzionino in qualunque situazione riflettendo a priori sul modo in cui si usano specifiche tecnologie, come JavaScript. Sfruttate i loro benefici ma contemporaneamente dovete capire che la loro disponibilit\u00e0 non \u00e8 scontata. Questo \u00e8 il progressive enhancement.<\/p>\n<p>La storia del Web \u00e8 costellata di storie di disastri legati a JavaScript. Questo non vuol dire che non dovreste usare JavaScript o che sia intrinsecamente pessimo. Semplicemente vuol dire che dovete adottare un approccio \u201csmart\u201d al suo utilizzo. Dovete creare esperienze robuste che permettano agli utenti di fare quello di cui hanno bisogno rapidamente e facilmente, anche se le vostre interfacce \u201dJavaScript-driven\u201d attentamente realizzate e incredibilmente ben progettate non funzionano.<\/p>\n<h3>Perch\u00e9 niente JavaScript?<\/h3>\n<p>Spesso, il termine <em>progressive enhancement<\/em> \u00e8 sinonimo di \u201cniente JavaScript\u201d. Se avete letto fin qua, spero capiate che questa \u00e8 solo una piccola parte del puzzle. Milioni di utenti Web hanno JavaScript, \u00e8 supportato dalla maggior parte dei browser e pochi utenti lo disabilitano. Potete &#8211; in realt\u00e0 dovete &#8211; usare JavaScript per creare esperienze spettacolari e coinvolgenti sul web.<\/p>\n<p>Se \u00e8 cos\u00ec onnipresente, potreste anche chiedervi perch\u00e9 ci si debba addirittura curare dello scenario \u201cno JavaScript\u201d. Spero che le storie che ho condiviso prima abbiamo fatto un po&#8217; di luce sulla questione, ma se non foste ancora convinti di aver bisogno di una strategia \u201cno JavaScript\u201d, considerate questo: il GDS (Government Digital Service) del Regno Unito ha condotto un esperimento per determinare quanti dei suoi utenti non avevano ricevuto gli enhancement basati su JavaScript e ha scoperto che il numero si attesta al 1.1%, ossia a 1 utente su 93<sup><a href=\"#note7\">7<\/a><\/sup>, <sup><a href=\"#note8\">8<\/a><\/sup>. Per un sito di e-commerce come Amazon, questo numero si traduce in 1,75 milioni di persone al mese: un numero veramente grande<sup><a href=\"#note9\">9<\/a><\/sup>. Tuttavia, questa non \u00e8 la parte interessante.<\/p>\n<p>Primo, vediamo un attimo la metodologia seguita da GDS: ha svolto l&#8217;esperimento su una pagina ad alto traffico con un pubblico vasto, quindi si \u00e8 trattato di un esempio live pi\u00f9 rappresentativo del quadro reale, il che vuol dire che i numeri non erano alterati dalla raccolta di informazioni provenienti solo da una sottosezione della sua user base. L&#8217;esperimento stesso si riduceva a tre immagini:<\/p>\n<ul>\n<li>un&#8217;immagine di riferimento inclusa in un elemento <code>img<\/code><\/li>\n<li>un&#8217;<code>img<\/code> contenuta in un elemento <code>noscript<\/code><\/li>\n<li>un&#8217;immagine che sarebbe stata caricata via JavaScript<\/li>\n<\/ul>\n<p>L&#8217;elemento <code>noscript<\/code>, se non lo conoscete, ha come scopo l&#8217;incapsulamento di contenuto che volete mostrare quando JavaScript non \u00e8 disponibile. \u00c8 un modo pulito per offrire un&#8217;esperienza alternativa negli scenari \u201cno JavaScript\u201d. Quando JavaScript \u00e8 disponibile, il browser ignora completamente il contenuto dell&#8217;elemento <code>noscript<\/code>.<\/p>\n<p>Con questo setup in atto, l&#8217;aspettativa era che tutti gli utenti ottenessero due immagini. Gli utenti che ricadevano nel campo \u201cno JavaScript\u201d avrebbero ricevuto le immagini 1 e 2 (i contenuti di <code>noscript<\/code> sono esposti solo quando JavaScript non \u00e8 disponibile o off). Gli utenti che potevano usare JavaScript avrebbero ottenuto le immagini 1 e 3.<\/p>\n<p>Quello che il GDS non aveva previsto, per\u00f2, era un terzo gruppo: gli utenti a cui sarebbe arrivata l&#8217;immagine 1 ma nessuna delle altre immagini. In altre parole, <em>avrebbero dovuto<\/em> ricevere l&#8217;enhancement JavaScript (perch\u00e9 <code>noscript<\/code> non era stato valutato), ma non l&#8217;hanno ricevuto (perch\u00e9 la JavaScript injection non \u00e8 avvenuta). Probabilmente sorprende di pi\u00f9 che questo fosse il gruppo rappresentante la gran parte degli utenti \u201cno JavaScript\u201d, lo 0,9% degli utenti (rispetto allo 0,2% di quelli che hanno ricevuto l&#8217;immagine 2).<\/p>\n<p>Cosa avrebbe potuto causare ci\u00f2? Molte cose:<\/p>\n<ul>\n<li>errori JavaScript introdotti dagli sviluppatori<\/li>\n<li>errori JavaScript introdotti da codice di terze parti sulla pagina (e.g., ads, widgets di condivisione e simili)<\/li>\n<li>errori JavaScript introdotti da add-on del browser controllati dall&#8217;utente<\/li>\n<li>JavaScript bloccato da un add-on del browser<\/li>\n<li>JavaScript bloccato da un firewall o ISP (o modificato, come nel precedente esempio di Comcast)<\/li>\n<li>un programma JavaScript mancante o incompleto dovuto a problemi di connessione alla rete (lo scenario del \u201ctreno che entra in galleria\u201d)<\/li>\n<li>un download di JavaScript ritardato a causa della lentezza della velocit\u00e0 di download della rete<\/li>\n<li>un programma JavaScript mancante o incompleto a causa di un blackout del CDN<\/li>\n<li>RAM insufficiente per caricare ed eseguire JavaScript<sup><a href=\"#note10\">10<\/a><\/sup>.<\/li>\n<\/ul>\n<div class=\"image full\"><img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2016\/08\/05-02.jpg\" border=\"0\" alt=\"Screenshot di un messaggio di errore in cui si legge: \u201cHTTP Error 413: Request Entity Too Large. The page you requested could not be loaded. Please try loading a different page.\u201d\" width=\"100%\" \/><\/p>\n<p>Un device BlackBerry che cerca di navigare verso il sito della campagna Obama for America nel 2012. Ha finito la RAM cercando di caricare 4.2MB di HTML, CSS e JavaScript. Photo credit: <a href=\"http:\/\/perma.cc\/K8YS-YHDV\">Brad Frost<\/a><\/p>\n<\/div>\n<p>Sono una miriade di potenziali problemi che possono influenzare la ricezione da parte dell&#8217;utente della vostra esperienza \u201dJavaScript-based\u201d. Non li sto sollevando per spaventarvi e non farvi pi\u00f9 usare JavaScript, voglio solo essere sicuro che capiate quanti fattori possono influenzare la sua ricezione da parte degli utenti. In verit\u00e0, la maggior parte dei vostri utenti otterr\u00e0 i vostri enhancement. Semplicemente, non mettete tutte le vostre uova nel paniere di JavaScript. Diversificate i modi in cui inviate i contenuti e le esperienze: riduce il rischio ed assicura che il vostro sito supporter\u00e0 il maggior numero di utenti. Ripaga sempre sperare per il meglio e pianificare per il peggio.<\/p>\n<h1>Note<\/h1>\n<ul class=\"the-footnotes\">\n<li id=\"note1\"><a class=\"count\" href=\"#ref1\">1. <\/a><code><a href=\"http:\/\/perma.cc\/B7KR-HWLM\">http:\/\/perma.cc\/B7KR-HWLM<\/a><\/code><\/li>\n<li id=\"note2\"><a class=\"count\" href=\"#ref2\">2. <\/a><code><a href=\"http:\/\/perma.cc\/KRX9-V82T\">http:\/\/perma.cc\/KRX9-V82T<\/a><\/code><\/li>\n<li id=\"note3\"><a class=\"count\" href=\"#ref3\">3. <\/a><code><a href=\"http:\/\/perma.cc\/E53Y-LL39\">http:\/\/perma.cc\/E53Y-LL39<\/a><\/code><\/li>\n<li id=\"note4\"><a class=\"count\" href=\"#ref4\">4. <\/a><code><a href=\"http:\/\/perma.cc\/RB97-MENZ\">http:\/\/perma.cc\/RB97-MENZ<\/a><\/code><\/li>\n<li id=\"note5\"><a class=\"count\" href=\"#ref5\">5. <\/a>La Chrysler Imperial del 1964 \u00e8 una leggenda. \u00c8 una delle poche auto che \u00e8 stata completamente bandita dagli eventi \u201cdemolition derby\u201d perch\u00e9 era praticamente indistruttibile.<\/li>\n<li id=\"note6\"><a class=\"count\" href=\"#ref6\">6. <\/a>Sarebbe un capitolo breve se lo scrivessi.<\/li>\n<li id=\"note7\"><a class=\"count\" href=\"#ref7\">7. <\/a><code><a href=\"http:\/\/perma.cc\/5SBR-58CD\">http:\/\/perma.cc\/5SBR-58CD<\/a><\/code><\/li>\n<li id=\"note8\"><a class=\"count\" href=\"#ref8\">8. <\/a>Uno studio recente di Pew Research ha affermato che la percentuale di persone senza JavaScript che hanno partecipato al suo sondaggio si avvicina al 15%, il che sembra una follia. Tra l&#8217;altro, ha anche scoperto che \u201cgli strumenti pi\u00f9 vistosi resi possibili da JavaScript non migliorano e anzi potrebbero deteriorare la qualit\u00e0 dei dati\u201d. Si veda <code><a href=\"http:\/\/perma.cc\/W7YK-MR3K\">http:\/\/perma.cc\/W7YK-MR3K<\/a><\/code>.<\/li>\n<li id=\"note9\"><a class=\"count\" href=\"#ref9\">9. <\/a>La statistica pi\u00f9 recente che ho visto afferma che Amazon.com ha circa 175 milioni di visitatori unici al mese. Si veda <code><a href=\"http:\/\/perma.cc\/ELV4-UH9Q\">http:\/\/perma.cc\/ELV4-UH9Q<\/a><\/code>. <\/li>\n<li id=\"note10\"><a class=\"count\" href=\"#ref10\">10. <\/a>Stuart Langridge ha messo insieme un bellissimo grafico di questi su <code><a href=\"http:\/\/perma.cc\/BPN4-5XRR\">http:\/\/perma.cc\/BPN4-5XRR<\/a><\/code> se volete decorare il vostro ufficio.<\/li>\n<\/ul>\n<p>Illustrazioni: {carlok}<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Il web ha una scorta infinita di storie dell&#8217;orrore sui \u201csingle point of failure\u201d, in cui i siti appaiono come pagine vuote o bloccate a utenti increduli. La colpa non \u00e8 n\u00e9 di JavaScript n\u00e9 di altre tecnologie, ma del modo in cui le usiamo, facendo completamente affidamento su di esse invece che diversificare il modo in cui inviamo le esperienze che realizziamo. In questo estratto dal Capitolo 5 di Adaptive Web Design, Second Edition, Aaron Gustafson spiega perch\u00e9 comprendere alcuni limiti e lavorare entro questi vincoli sia la chiave per costruire siti web flessibili.<\/p>\n","protected":false},"author":818,"featured_media":7000808,"comment_status":"open","ping_status":"open","template":"","categories":[242,271,154],"tags":[],"coauthors":[301],"class_list":["post-651","article","type-article","status-publish","has-post-thumbnail","hentry","category-browser","category-javascript","category-numero-136-23-agosto-2016"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article\/651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/users\/818"}],"replies":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/comments?post=651"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media\/7000808"}],"wp:attachment":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media?parent=651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/categories?post=651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/tags?post=651"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/coauthors?post=651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}