Programmatori estemporanei

Ora non voglio più toccare un linguaggio di programmazione per i prossimi 9001 anni

3agle3ye dopo aver finalmente buildato un setup con InnoSetup, dopo aver lottato col suddetto software per tre ore ininterrottamente.

Non so bene come, ma in questi ultimi due mesi io e 3agle3ye ci siamo ritrovati a creare un programma con PHPDesktop, un sito web con Fantastic Windmill e a deployare su Tomcat un aberrante software open source scritto in Java.
Tutto al grido di “Che vuoi che sia, si fa in fretta”, ultime parole famose che presuppongono ore e ore gettate al vento per far funzionare della tecnologia disobbediente

Il programma con PHPDesktop, già descritto così, cioè dicendo solo che si basa su PHPDesktop, sembra un WTF di proporzioni clamorose, ma era l’unica soluzione sensata. Perché ci voleva a tutti i costi lo switch

--disable-web-security

e meglio metterlo lì che dire al committente di avviare chrome con quello. E di PHP non si poteva fare a meno, c’erano da fare delle query.
Purtroppo le query erano su SQL Server, quindi bisognava installare un’estensione non standard di PHP e un driver Microsoft apposito, che è stato necessario includere nel setup, per la gioia di 3agle3ye.
Nonostante i tempi siano risultati il doppio rispetto a quelli pianificati e si sia manifestato qualche bug catastrofico, il software è stato consegnato nelle mani del committente soddisfatto.

Sul deployment basterà dire che le istruzioni fornite da chi ha scritto il software erano clamorosamente incomplete.

Passiamo invece al sito: la scelta di Fantastic Windmill è stata fatta totalmente a caso tra le centinaia di generatori di siti statici esistenti, e le decine di generatori in PHP. In realtà la scelta è anche stata un po’ influenzata dal fatto che i template andavano scritti in HTML e PHP semplici, senza perdere tempo a imparare un linguaggio di templating quale Twig.
Sento il coro del “non è una perdita di tempo”: no, in effetti Twig è molto usato e presto o tardi, se continuo a smanettare con PHP, dovrò impararlo, ma il sito andava fatto in fretta e avrà qualcosa come 20 pagine, perché devo perdere del tempo a imparare come si usa Twig per un lavoro del genere?

Scelti gli strumenti, si è passati alla scelta… degli altri strumenti. HTML5 e layout responsive pieno di flexbox, tanto tutti i browser anche solo semirecenti le supportano!
Dopo averci messo ben più giorni del previsto a scrivere tutto l’HTML e quel poco di javascript necessario, ci siamo resi conto di ciò di cui dovevamo renderci conto molto prima: il browser di Android è basato su una versione di Webkit del 2009 o qualcosa del genere, quindi supporta solo lo standard del 2009 per le flexbox. Una grave mancanza di quello standard e di non avere nulla di simile alla proprietà

flex-wrap: wrap;

mandando l’intero layout a farsi benedire.
Immagino che sia solo io a notare una certa assurdità in tutto questo: Google è così intenta nel velocizzare, modernizzare e rendere più mobile-friendly il web e poi fino ad Android 4.4.2 (credo) il browser stock è rimasto fermo a 6 anni prima? Perdendosi proprio lo standard delle flexbox, che è l’elemento portate della responsività in ambiente mobile?

In un primo momento ho cercato di aggirare il problema trasformando dei <div> in tabelle e celle, ma funzionava malissimo. Quindi ho applicato un po’ di

width: 100%;

e buonanotte. Tanto tra i browser ancora usati da più di una persona al mondo a dare problemi sono solo le vecchie versioni di Android e solo col browser stock (non con Chrome), oltre a IE6-10, e si spera che nessuno usi versioni arcaiche di Android su tablet con schermi 4K o TV da 200″.

Quanto a IE8-10, viene trattato come Android. Era la cosa più facile e sensata da fare. Ciò si riduce, essenzialmente, ad avere il contenuto un po’ più verticale (meno roba affiancata) e il menu a scomparsa con tasto per farlo scendere.
IE6-7 viene trattato come Android, ma il menu resta aperto di fisso, visto che il javascript del menu non funziona bene. Non vale la pena perderci troppo tempo, contando che ormai molti siti non supportano più IE6, gira solo su XP che non è più supportato né aggiornato da Microsoft e che spesso e volentieri dei siti accessibili via TLS rifiutano le connessioni da IE6 perché non supporta standard di cifratura moderni.
Ma in ogni caso, anche se con la grafica un po’ fuori posto, il sito funziona anche con IE6, è interamente navigabile, e tutto il contenuto è leggibile.

In pratica, il sito funziona degnamente su ogni versione di Firefox dalla 4 in poi, su praticamente ogni versione di Chrome, sul browser di Android da Android 2.2 in poi (ma forse pure da prima!), su qualsiasi Safari per desktop che qualcuno ancora usi e su Safari per iOS più o meno dall’iPhone 4S in poi.
Nonché da IE 8 e da Opera 12.qualcosa in poi. E sui browser leggermente più vecchi, la grafica è visibilmente fuori posto, ma il sito ancora funziona.

Non per vantarmene, ma secondo me è un risultato impressionante.

Oltre a questi ostacoli, ci siamo accorti che il contenuto del sito era tutto sballato, pieno di copincolla, di errori e di anacoluti, in quanto era stato scritto nel 2008 da un’autoproclamata esperta di SEO che sembrava più un’analfabeta che non sa nemmeno cos’è il SEO, visto che il SEO si traduceva in un enorme blocco di testo spammoso incollato nel footer di ogni pagina, cosa che Google quasi certamente punisce.
Quindi 3agle3ye ha dovuto riscrivere praticamente tutte le pagine e riordinarle.

Ma il momento centrale di tutta la vicenda, che vorrei raccontare, è questo: erano già alcuni giorni che scrivevamo CSS estremo e riscrivevamo contenuti emendandoli dagli anacoluti. Lavoramo dalle 9-10 di mattina, soltanto con pause per i pasti. “Pair programming” di altissimo livello via Skype.
Arrivarono le 20 e avvenne questo dialogo:

3agle3ye: Senti, io vado.
Io: No, aspetta! Ci poniamo l’obiettivo di finire e uppare una prima versione del sito entro mezzanotte?
3agle3ye: Stasera? STASERA? … … … OKAY.

Si susseguirono, in rapida successione: lotte furibonde col CSS, riordinamento del contenuto, frazionamento del contenuto di una pagina in tre, combattimenti devastanti col javascript, un drastico e improvviso cambio della spec su come dividere il contenuto, prove estemporanee di un form di contatto scritto in PHP mandando email piene di “inside jokes” ad 3agle3ye, grandi risate per le email, Google Maps reso responsivo con CSS incomprensibile copiato da internet, lotte con le immagini, improvvisarsi designer e creare tre loghi diversi partendo da uno per metterli sul sito, fare la build finale con Fantastic Windmill, scambiarsela con Dropbox, uppare tutto, rattoppare qualche ultimo bug e… alle 23.57 il nuovo sito è online, finalmente rimpiazzando quell’obrobio del 2008 con lo spam nel footer e le tabelle per il layout.
A tre, e dico tre, minuti dallo scadere del tempo limite che ci siamo imposti!
E in quel momento esce dal nulla un tale che ci chiede di cambiare il tema su un forum di nostra proprietà, senza alcun contesto o preavviso.

In ogni caso, ho finalmente potuto tirare un sospiro di sollievo. C’erano ancora da fare tutti i fix per IE e Android, limare un po’ il CSS, migliorare il form, creare il menu a scomparsa per smartphone, rifinire un po’ il contenuto, ma almeno non avrei più avuto incubi sui <div> e sulle flexbox, come mi era successo nei giorni precedenti.

Sono state, alla fine, 12 ore di lavoro in un giorno.

Se avessi solo quello da fare nella vita, lo farei anche; alla fine è stato divertente. Ma avendo anche altro da fare…

Ora non voglio più toccare un linguaggio di programmazione per i prossimi 9001 anni

Annunci

4 pensieri su “Programmatori estemporanei

  1. Pingback: Compatibilità con browser arcaici | while(false) do {/*nothing*/};

  2. Pingback: Google Maps vs. Bing Maps | while(false) do {/*nothing*/};

  3. Pingback: Come NON fare web design | while(false) do {/*nothing*/};

  4. Pingback: Fira Sans su Google Fonts e bug di rendering di IE11 | while(false) do {/*nothing*/};

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...