Su tumori, oncologia, cure alternative e miracoli

Scrivo questo articoletto perché negli ultimi tre anni mi sono fatto una discreta cultura sull’argomento, e so per certo che gli sventurati a cui tocca quello che è capitato a mamma e i loro familiari ci diventano matti per trovare una soluzione… che purtroppo ancora non sembra esserci.
Tumore (neoplasia) al pancreas, una sentenza. Lo si può dire in modi più o meno carini, il punto è che non lascia scampo, e indipendentemente dalle cure che si fanno la mortalità tende al 100% come ci si avvicina ai cinque anni dalla diagnosi, e in pochissimi arrivano a tre. Mamma non ci è arrivata per poco.

Stato attuale dell’oncologia

Nel 2013 ho passato molti mesi a studiare il funzionamento di ospedali e reparti per modellare i dati e gettare le basi di un software gestionale ospedaliero, e mi sono occupato in particolare di oncologia. Dopo molto studio e alcune interviste con medici e infermieri, quando il tutto cominciava ad essere piuttosto corposo, il progetto mi è stato tolto di mano; l’esperienza è stata comunque interessante e ho imparato molto, soprattutto su come “funziona” l’oncologia e sul come vengano “studiati” i protocolli di cura.

Purtroppo l’oncologia brancola ancora nel buio; i protocolli di cura vengono elaborati mescolando veleni chemioterapici più o meno a caso, e per valutarne l’efficacia si usano i malati come cavie aumentando le dosi di un veleno o dell’altro facendo delle statistiche sulla “durata” dei pazienti in base alle varie ricette.
È noto che i principi attivi di quasi tutti i farmaci anche quando assunti singolarmente possono avere effetti molto diversi da un soggetto all’altro, l’idea di mischiare tante di queste cose sperando di centrare l’obiettivo è quindi abbastanza assurda. Utilizzando questi veleni gli unici risultati certi sono gli enormi profitti delle case farmaceutiche, i costi del Servizio Sanitario Nazionale, e la distruzione dell’organismo delle povere cavie, le quali si ritrovano ad avere tutti i problemi di salute possibili immaginabili. Naturalmente i medici ben si guardano dallo studiare le novità nel campo della loro medicina, e continuano a lottare contro un nemico sempre più agguerrito utilizzando armi di provata inefficacia… da capire se spinti dalle case farmaceutiche o dalla loro inettitudine.

Mamma le ha provate tutte, prima la chirurgia e poi ogni genere di chemioterapia e radioterapia che le hanno prescritto al reparto di oncologia. Ha dimostrato una resistenza fuori dal comune e fino all’ultimo ha cercato di “sembrare in salute”, per poi schiantarsi di botto nell’ultimo mese fiaccata dal male e dai continui avvelenamenti. È brutto da dire, ma il suo organismo era così impregnato di tutte quelle schifezze che il suo corpo dopo morta si è anche sformato a grande velocità.
Affermano che le chemioterapie con il passare del tempo stiano aumentando di efficacia perché i malati generalmente vivono più a lungo, nessuno fa notare però che la diagnosi è sempre più precoce e che quindi l’inizio della malattia viene sempre di più “anticipato”; inoltre da qualche tempo i malati vengono indirizzati su percorsi di corretta alimentazione e stili di vita sani.
Chi commercializza e chi propugna le attuali “cure ufficiali” basandosi solo su statistiche abbastanza fasulle dovrebbe essere denunciato per crimini contro l’umanità. Mentire con le statistiche, gran bel libro che consiglio a tutti e che dopo qualche anno forse dovrei rileggere.

Io all’inizio ho cercato di dissuaderla dal percorrere questa strada, ma poi ho rinunciato anche perché convincerla dell’inutilità avrebbe significato annullare anche il possibile effetto placebo.

Le alternative

A mio avviso non ce ne sono di valide. Secondo me finché le case farmaceutiche non capiranno come possono essere fermati i tumori (sempre che non lo sappiano già) si può solo sperare.
Di più o meno certo c’è che l’organismo umano ha un’enorme capacità di guarigione, e spesso tutte le cure alternative si basano sul cercare di spronare l’organismo a dare il meglio di se… l’esatto contrario di quello che fa la chemio.

Digiuni programmati

Da più di una fonte avevo sentito di come dei digiuni intermittenti e non troppo prolungati aiutino l’organismo a ripulirsi, poi lessi che questi digiuni aumentano l’efficacia delle chemioterapie. Secondo me aiutano la chemio solo perché aiuterebbero in ogni caso, e perciò anche gli sventurati che decidono di fare le chemio, ma questa è solo una mia opinione. Di certo c’è solo che i più dei medici ignorano questa cosa, e se gliela dici ti prendono per scemo.

L’aloe

Sinceramente su questo fronte non ci ho capito molto, so solo che a casa mia negli ultimi due anni sono arrivate alcune piante di Aloe, che secondo alcuni ha molte proprietà benefiche e c’è chi lo usa per curare il cancro. Ovviamente l’Airc non è molto favorevole a riguardo.

“Rimedio Pantellini”, l’ascorbato di potassio

Questo Pantellini scopri la sua “cura” per caso, perché un malato terminale non aveva capito cosa il medico gli aveva prescritto per alleviare i suoi dolori.
La preparazione di questo rimedio è piuttosto semplice, ma volendo esiste in commercio il Nike RCK un integratore fatto esattamente in quel modo (non a caso). Una scatola contiene cento coppie di bustine, e cento giorni di “terapia” costano 50€.
Qui il concetto è che il tutto si riconduce a una forte azione antiossidante, e nessuno lo spaccia per un rimedio antitumorale, ma al massimo come strumento di prevenzione.
Noi ne abbiamo sentito parlare all’ultimo e ci abbiamo provato per qualche settimana, ma era veramente troppo tardi.

Varie ed eventuali

Di cure alternative ce ne sono tante altre, e la prima che mi viene in mente è il Metodo Di Bella.
Sinceramente non so che pensare, credo solo che in alcuni casi si tratti di sciacallaggio, e in altri di reali convinzioni dei loro ideatori, anche corroborate da reali guarigioni. Da capire se queste guarigioni ci sarebbero state in ogni caso.
Se dovessi buttarla a cure alternative mi ispirerebbe più fiducia il rimedio Pantellini, se non altro non è niente di brevettato, passa per un integratore alimentare e costa un’inezia, quindi se c’è chi lo pubblicizza è improbabile che lo faccia per guadagnarci tanto sopra.

Dio e i santi

Forse un giorno cercherò di sintetizzare il mio pensiero su Dio, i santi e le religioni in un articolo, ma non è questo il momento. Dico soltanto che mamma ne ha visitati tanti di santuari, ed è sempre stata una credente praticante. A casa ci sono sempre stati santini e immagini sacre, e negli ultimi tre anni sono aumentati.

I miracoli

I miracoli di guarigione a mio avviso sono eventi molto rari che possono scatenarsi per una combinazione di vari fattori:
– grande voglia di vivere, magari non per se stessi ma per gli altri, che può portare a un forte effetto placebo
– diagnosi sbagliate, in cui il problema potrebbe essere giudicato più grave di quello che è realmente
– interruzione dell’assunzione di qualcosa che ha scatenato il problema
– assunzione di qualcosa di benefico, fossero anche soltanto vitamine
In generale se qualcuno che conoscete sta cercando di guarire anche con la preghiera lasciatelo fare, nella peggiore delle ipotesi sarà inutile, nella migliore potrebbe aiutare.

Il mio punto di vista

Non vi saltasse in mente di prendere per oro colato il mio parere, che deriva solo dalla mia esperienza durante la progettazione dell’erp per un reparto di oncologia, dalla malattia di mia madre e da qualche ricerca sul web. (Per fortuna) non sono un medico, una categoria che reputo veramente troppo lontana dalla scienza, e che almeno nel mio caso si è spesso rivelata inetta. Generalmente prescrivono ai malati o quello che vogliono gli sventurati, ciò che hanno letto nei libri (chissà quanti anni prima) o quello che gli è stato detto dai rappresentanti di turno (ovvero dalle case farmaceutiche). Mi considero però un buon analista, e adoro studiare i problemi per cercare di risolverli.

I tumori ci sono sempre stati. Un tempo non erano diagnosticati, la gente si ammalava (anche inconsapevolmente) e guariva, o moriva di “malaccio” o di “dioceguarde”. Ultimamente sembrano essercene di più, ma forse solo perché la popolazione è in costante aumento e perché i tumori non passano più inosservati. A mio avviso stiamo avvelenando il pianeta in maniera vergognosa, e mettiamo in circolo sempre più sostanze di cui non si conoscono gli effetti a lungo termine, men che meno combinati tra loro. Generalmente i tumori sembra abbiano un’incidenza maggiore nelle città molto inquinate, nelle vicinanze degli inceneritori (per favore non chiamateli termovalorizzatori) e nelle campagne fortemente coltivate.
Temo che i pesticidi utilizzati nella viticoltura e non solo, combinati tra loro e poi respirati e assunti con i cibi o con l’acqua proveniente dalle falde acquifere inquinate siano a dir poco devastanti. Un bel thriller sull’argomento: Micheal Clayton. Le polveri sottili generate da combustioni a temperature sempre più alte (inceneritori/fabbriche/marmitte dei mezzi di trasporto), non sono da meno.

In sintesi: triste a chi tocca.
Lo sventurato dovrebbe secondo me per prima cosa cercare di vivere di più invece di preoccuparsi di non morire, e questa cosa vale per tutti, non solo per chi è malato di tumore («vegliate perché non sapete né il giorno né l’ora»).
Chi ha voglia di lottare un po’ per allungare la propria esistenza può provare con i digiuni programmati, dieta sana con poca carne e molte verdure crude, con l’assunzione di forti antiossidanti, molte vitamine, aria buona e un po’ di attività fisica tranquilla. Delle attuali cure canoniche l’unica che per me ha senso è la chirurgia, il resto è un tirare a indovinare.
Finché non ci saranno rimedi di sicura efficacia l’unica cosa che possiamo fare e cercare di irrobustire l’organismo per aiutarlo in questa difficile battaglia… non possiamo colpire il nemico né mandare i rinforzi, ma nessuno ci impedisce di rendere il campo di battaglia più adatto alle nostre truppe e di rinforzare il nostro esercito. Buon senso, niente di più.

Un primo buon proposito per l’anno che verrà: meno Facebook

Stamattina mi sono svegliato e dopo aver “consultato” Facebook sul mio smartphone ho fatto una cosa che non avevo mai osato fare prima: mi sono disconnesso dall’app.

fb-login

Non so voi ma a me tutta quella gente che scorre Facebook ogni momento da fastidio, specialmente quando sono in compagnia; anche se in misura minore il problema riguarda pure me, quindi da oggi a ogni consultazione seguirà un logout. Magari così l’utilizzo di uno strumento molto utile diventerà un po’ meno compulsivo e alienante.

Buon Navale

Il json-schema: forse non una gran soluzione ma a volte può tornare utile

Sono consapevole che documentare e validare i dati anziché la sorgente che li genera potrebbe non essere l’approccio migliore, di recente mi è però capitato di dover mettere in piedi un backend “estremamente lean” (eufemismo per dire che è tutto basato su un file json), e generare un json-schema per verificarne la correttezza mi è sembrato doveroso…

Ma facciamo un passo indietro: l’applicazione mobile “backend-free”

A tutti quelli che fanno questo mestiere prima o poi vengono idee su possibili applicazioni web/mobile da sviluppare per esigenze personali, come progetto di studio o ancora meglio perché vogliamo vedere se la cosa può prendere campo, ma il tempo libero è poco e lo sviluppo di front-end e back-end può significare una mole di lavoro tale da farci lasciar perdere. Ci sono però casi in cui i dati sono pochi e non troppo preziosi, al che mettere inizialmente un file json su una cartella web può essere sufficiente.
Una soluzione che mi è sembrata molto comoda almeno nella fase di “sondaggio del mercato” è quella di copiare il/i file json su una cartella Dropbox, copiarne il link e utilizzare quello come url del nostro “servizio web dei poveri”. Nota: se utilizzate Dropbox è necessario che l’url sia nella forma https://dl.dropbox.com/..., se al posto del “dl” lasciate “www” al vostro client arriva non il file json ma la pagina html di visualizzazione di Dropbox.
Se Dropbox non vi piace di alternative simili ce ne sono tante, oppure se avete uno spazio web potete usare quello, a me però piace Dropbox anche perché non ho limiti di traffico, posso gestire i dati in vari modi, e il rischio che il server “vada giù” è praticamente nullo.
Detto che una soluzione del genere può andar bene soltanto se l’idea che qualcuno vi copi tutti i dati non vi spaventa, la scomodità maggiore è la totale mancanza di qualcosa che vi faciliti nell’inserimento e la manutenzione dei dati, cosa che può portare a inserire dati in un formato non corretto con inevitabili malfunzionamenti sulla vostra applicazione client. Ecco quindi che entra in scena il json-schema.

Il json-schema, sempre di json si tratta

Iniziamo con il dire che così come l’xml-schema è un xml, il json-schema è un json, e allo stesso modo compilarlo è una scocciatura. Il sito web di riferimento per i json-schema è json-schema.org, sito bruttarello ma pieno di risorse.

Sebbene l’idea di scrivere prima o poi uno schema ce l’avessi avuta fin dall’inizio, mi sono ritrovato a farlo soltanto quando la struttura dati era più o meno formata (seppur con dati mock). Mettersi a scrivere lo schema tenendo di fianco i dati è abbastanza noioso e non è nemmeno facile, infatti sono arrivato a un punto che il linter mi segnalava lo schema come non valido e non sapevo il perché.

Alla fine l’approccio che ho seguito è stato il seguente:

  1. scrittura di un json con almeno qualche elemento completo, così da avere dei dati con tutti i casi particolari
  2. generazione dello schema utilizzando un servizio come jsonschema.net; l’importante è che venga fuori una struttura “abbastanza aderente” a quello che avete in mente
  3. pulizia dello schema dagli artefatti inutili e copia in un linter come jsonschemalint.com insieme ai dati
  4. rifinitura dei dettagli relativi ai tipi, gestioni dei valori null, eventuali regex sulle stringhe; descrizioni sui campi meno chiari
  5. eventuali modifiche ai dati per rendere la struttura più uniforme
  6. se serve che qualcuno poco familiare con il formato json “capisca” i dati può essere utile generarsi una documentazione a partire dallo schema, Docson è semplice da usare e da un buon risultato

Qualche dritta sui json-schema

A questo punto è doveroso un esempio riepilogativo con quasi tutte le funzionalità che sono servite a me, così almeno sapete a cosa andrete incontro…

{
  "data": "2015-12-03T00:00:00",
  "lista": [
    {
      "id": 1,
      "nome": "Articolo 1",
      "email": null,
      "tipo": "tipo1",
      "classe": 1,
      "flag": true,
      "figli": [
        {
          "data": "2015-08-16",
          "note": "blablabla"
        }
      ]
    }
  ]
}
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Esempio",
  "type": "object",
  "properties": {
    "data": {
      "description": "Data con formato yyyy-MM-ddTHH:mm:ss",
      "type": "string",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$"
    },
    "lista": {
      "description": "Lista di oggetti",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "description": "Identificatore univoco",
            "type": "integer"
          },
          "nome": {
            "type": "string"
          },
          "email": {
            "type": ["string", "null"],
            "format": "email"
          },
          "tipo": {
            "description": "Tipologia a scelta tra tre valori",
            "type": "string",
            "enum": ["tipo1", "tipo2", "tipo3"]
          },
          "classe": {
            "description": "Classe con valore numerico da 1 a 5",
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "exclusiveMinimum": false,
            "exclusiveMaximum": false
          },
          "flag": {
            "description": "Flag booleano",
            "type": "boolean"
          },
          "figli": {
            "description": "Elenco di oggetti figli",
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "properties": {
                "data": {
                  "description": "Data con formato classico yyyy-MM-dd",
                  "type": "string",
                  "format": "date"
                },
                "note": {
                  "type": ["string", "null"]
                }
              },
              "additionalProperties": false,
              "required": ["data"]
            },
            "additionalItems": false
          }
        },
        "additionalProperties": false,
        "required": ["id", "nome", "tipo"]
      },
      "additionalItems": false
    }
  },
  "additionalProperties": false,
  "required": ["data"]
}

Un esempio abbastanza ricco, e che fa capire quanto uno schema possa venire “corposo” anche quando si riferisce a un json quasi insignificante.

  • campo data di primo livello: classica regex definita con l’attributo pattern, in cui però non si possono usare i classici segnaposto \d, \s
  • campo lista di primo livello: array di oggetti, attenzione perché questo è il modo in cui si gestiscono “oggetti uniformi” (caso tipico secondo me), si possono gestire anche oggetti diversi ciascuno in una posizione dell’array
  • campo email di secondo livello: stringa ma che accetta anche valori null, il formato dell’email viene validato con l’attributo format anziché con una regex (altri formati ammessi sono date, time, date-time
  • campo tipo di secondo livello: enum, ovvero stringa ma che può assumere solo determinati valori
  • campo classe di secondo livello: valore intero con limiti max e min

Da notare come il valore null debba essere inserito esplicitamente tra i tipi ammessi nonostante il campo che accetta null non sia specificato nell’elenco dei campi required.

Conclusioni

Come dicevo all’inizio la scrittura di un json-schema secondo me dovrebbe e potrebbe essere evitata definendo e documentando opportunamente le api che generano i dati. In alcuni casi è comunque uno strumento che può tornarci utile: non solo può aiutare nei casi limite come quello di un’applicazione nello stadio iniziale con dati gestiti in modo minimale, ma anche quando i dati sono in possesso di soggetti terzi che non ne hanno particolare cura o che non ci forniscono appropriata documentazione l’idea di generarci uno schema può aiutarci a evitare spiacevoli inconvenienti, anche perché nessuno ci vieta di utilizzarlo nei nostri test di integrazione, per la serie “fidarsi è bene…”.

Set di icone monocromatiche? Praticamente un font…

inkscape-icon

Purtroppo è da parecchio che non sto più tanto dietro allo sviluppo web, e quindi alcune “novità” tendono ad arrivarmi tardi (leggero eufemismo). La tendenza di usare icone monocromatiche su applicazioni web non è cosa recente, e la somiglianza tra la lettera di un font e un’icona monocromatica è stata notata da tempo, tanto che almeno dal 2010 c’è chi ha avuto l’idea di realizzare “font di icone” per utilizzarle come “icone vettoriali” sul web.
A me questa cosa è arrivata soltanto cinque o sei mesi fa quando mi è stato mostrato Font-Awesome. Mea culpa.

Set di font come se piovesse

Non è mai facile stabilire se sia nato prima l’uovo o la gallina, di certo c’è che le icone sono sempre più monocromatiche, e di set di font con icone di ogni genere ce ne sono ormai una marea. Purtroppo regala’ è morto, e l’utilizzo della maggior parte di questi pacchetti impone il pagamento di licenze o l’inserimento degli autori nei credits/ringraziamenti, a meno di non utilizzare quei set rilasciati con licenza Creative commons che sono originali come l’acqua calda.

Font custom, Inkscape e Icomoon

Tra gli strumenti per realizzare immagini vettoriali uno dei più usati è Inkscape (gratuito e open-source), ma non tutti sanno che in Inkscape è presente anche un editor di font con cui è possibile “raggruppare” dei glifi assegnando a ciascuno un “carattere”, realizzando di fatto un font.
Qui una bella guida sul tema, mentre qui si può trovare un progetto Github con risorse utili per crearsi i propri font.
inkscape-font-editor

Ricapitolando: con Inkscape – partendo da immagini vettoriali – si può arrivare a creare un “font svg” convertibile poi in TrueType (ttf) tramite strumenti esterni. E se non si ha voglia di fare tutti questi passaggi? Come è logico aspettarsi ci sono delle alternative.
Una strada è quella di installarsi un editor di font come FontForge, importarsi i propri glifi svg (opportunamente modificati), e crearsi il font a mano.
Strada più semplice è quella di rivolgersi a un servizio online. Ne ho provati alcuni (tra cui Fontastic), e alla fine l’unico che mi ha sempre importato gli svg e esportato i font correttamente senza distorsioni o ridimensionamenti strani è stato IcoMoon.
icomoon
IcoMoon è di una semplicità disarmante: si selezionano delle icone prese da librerie gratuite/a pagamento messe a disposizione dal sito o tra quelle importate da noi stessi e le si esportano in un pacchetto contenente il font in vari formati più tutte le risorse utili, con possibilità di configurarne anche i codici/nomi delle classi css e adattarne le dimensioni.

“Icone vettoriali” in Titanium

Veniamo alle origini di quest’articolo, visto che come dicevo all’inizio lo sviluppo web purtroppo l’ho abbandonato da un po’ di tempo.
Nel mondo dello sviluppo mobile un problema piuttosto sentito è quello della preparazione di icone e immagini alle varie risoluzioni per una buona resa su tutti i dispositivi che si ha intenzione di gestire. Il problema è ancora più marcato nello sviluppo multipiattaforma perché android e ios (per dirne due) seguono convenzioni dei nomi che non c’entrano niente l’una con l’altra, oltre a girare su dispositivi che gestiscono risoluzioni diverse.
Da un’esigenza nasce (quasi) sempre una soluzione, e in Titanium una parziale soluzione l’ha proposta uno degli sviluppatori di riferimento per questa piattaforma – Fokke Zandbergen – che ha dato alla luce TiCons.
Con TiCons si possono generare le icone dell’app e gli splash screens per tutti i dispositivi, ma la gestione delle immagini usate “all’interno” dell’app resta responsabilità nostra. Per far questo bisogna solitamente ingegnarsi con ImageMagick, che permette di fare velocemente elaborazioni anche complesse a grosse quantità di immagini tramite scripts. Questa cosa però è noiosa e così spesso si finisce per usare immagini con risoluzioni non adatte.

In una delle applicazioni di esempio corporate-directory si vede come sia possibile utilizzare “icone vettoriali” al posto di quelle raster semplicemente aggiungendo il nostro “font contenente le icone” all’interno della directory app/assets/fonts, impostando la proprietà font.fontFamily uguale al nome del font che abbiamo aggiunto e settando la proprietà testuale (es: “text” per le Label o “value” per i TextField) uguale al codice del carattere che rappresenta la nostra icona… più difficile a dirsi che a farsi, basta guardare l’esempio.

Un "esempio riepilogativo" con tutti i pezzi

Un “esempio riepilogativo” con tutti i pezzi

Gli effetti positivi di questa soluzione sono evidenti:

  • miglior renderizzazione delle immagini
  • minor dimensione delle applicazioni
  • possibilità di modificare dimensioni e colori delle icone velocemente e anche a runtime
  • nessun problema in caso di installazione su dispositivi non previsti inizialmente
  • possibilità di cambiare tutto il set di icone anche a runtime semplicemente modificando il nome del font in una classe tss
  • probabilmente ce ne saranno altri che non mi vengono

Un limite è che questa cosa si può fare solo su quel tipo di componenti dove il font (e quindi il font-family) è modificabile, questo significa che per i Tab e forse anche altrove purtroppo bisogna continuare a usare delle immagini raster.

Imparata questa tecnica mi è venuta voglia di usarla dappertutto… non appena sbatterò il muso da qualche parte aggiornerò quest’articolo, per il momento mi godo tutti i punti di cui sopra.

Da Appcelerator Studio a Atom: passaggio abbastanza indolore

Chi sviluppa con Titanium sa che in questo mondo – che poi è solo un sottoinsieme del mondo Javascript – c’è chi utilizza la command line e l’editor/ide di preferenza, e chi preferisce rimanere al calduccio utilizzando tutti e solo gli strumenti messi a disposizione da dalla casa-madre Appcelerator, ovvero Appcelerator Studio.
Appcelerator Studio in se non sarebbe troppo male, il problema è che una versione modificata (e neanche troppo bene) di Eclipse si porta quindi dietro la sua estensibilità ma anche la sua pesantezza. In più a volte ti si blocca mentre stai facendo operazioni banali come aggiungendo stringhe al file strings.xml costringendoti a buttare giù tutto e facendoti perdere del lavoro (le bestemmie che ho tirato giù a causa di questo problema sono veramente tante).
A volte succede anche che l’integrazione con gli stessi servizi di Appcelerator smettano di funzionare, ed è noto come la recente impossibilità di fare build su iOS abbia seminato il caos e costretto molti a un utilizzo più consapevole della CLI.

Sublime? No, Atom

Buona parte dei migliori sviluppatori che conosco, e che hanno a che fare con Titanium, si affidano a Sublime Text, un editor (termine riduttivo) veramente veloce e ben fatto. Per Sublime ci sono plugin di ogni genere, e Titanium non fa eccezione:
https://github.com/AoDev/ti-alloy-in-sublime-text-2
https://github.com/MattTuttle/sublime-ti-build
A me però non va di pagare per utilizzare un editor non open-source, e il simpatico messaggio che compare sempre più spesso con cui invitano ad acquistare una licenza mi da abbastanza fastidio.
sublime-purchase-alert

Chi non usa Sublime ha due grosse alternative: Atom e Visual Studio Code. L’editor di Microsoft (ancora in preview) è molto bello e funziona bene specialmente con linguaggi della galassia Microsoft (vedi Typescript), ma per il resto forse gli è preferibile Atom, giunto da poco alla versione 1.0 e con una miriade di plugins che aumentano e migliorano giorno dopo giorno.

Configurare Atom con il minimo necessario per sviluppare con Titanium

atom
Scelta fatta. Per programmare in Javascript potenzialmente basterebbe un blocco note, e per fare le build con Titanium c’è la CLI, però magari utilizzare qualche aiuto potrebbe non essere una cattiva idea.
Per avere un minimo di auto-completamento ho installato questo plugin che funziona bene:
https://atom.io/packages/titanium-alloy
che ha anche un’integrazione con hyperclick:
https://atom.io/packages/hyperclick

Auto-completamenti e auto-formattazioni non mi hanno mai fatto impazzire, ma un check statico del codice in tempo reale che segnali eventuali imprecisioni ma anche errori e pratiche di cattiva programmazione mi è sempre piaciuto averlo, e su Appcelerator Studio i linter latitano o funzionano male. Un linter è prezioso nel mondo javascript specialmente quando si lavora in squadra, perché sebbene in questi casi si tenda a scrivere in modo simile spesso non lo si fa abbastanza.

In Atom non solo si può installare ESLint, ma si può creare un file di configurazione del linter per ogni progetto.
https://atom.io/packages/linter
https://atom.io/packages/linter-eslint

{
	"globals": {
		"Ti": false,
		"Titanium": false,
		"Alloy": false,
		"$": false,
		"_": false,
		"L": false,
		"arguments": false,
		"require": false,
		"module": false,
		"exports": true,
		"OS_ANDROID": false,
		"OS_IOS": false,
		"ENV_PRODUCTION": false,
		"ENV_DEV": false,
		"setInterval": false,
		"clearInterval": false,
		"setTimeout": false,
		"clearTimeout": false,
		"alert": false,
		"describe": false,
		"it": false,
		"beforeEach": false,
		"afterEach": false
	},
	"rules": {
		"strict": [2, "never"],
		"new-cap": [2, {"capIsNewExceptions": ["L"]}],
		"no-trailing-spaces": [1, { "skipBlankLines": true }],
		"space-infix-ops": [1, {"int32Hint": false}],
		"comma-spacing": [1, {"before": false, "after": true}],
		"key-spacing": [1, {"beforeColon": false, "afterColon": true}],
		"semi-spacing": [1, {"before": false, "after": true}],
		"dot-notation": 1,
		"no-underscore-dangle": 1,
		"no-unused-vars": 1,
		"no-multi-spaces": 1,
		"quotes": [1, "double"],
		"eol-last": 0,
		"no-alert": 0
	}
}

In “globals” si elencano le variabili globali, specificando anche se possono essere assegnate oppure no.
In “rules” si specificano le regole di validazione, indicando se eventuali infrazioni vanno segnalate in rosso come errori (con il 2) o in giallo come warnings (con l’1). Lo 0 le disabilita.
Qui sono elencate tutte le regole di validazione di ESLint.

Altri plugins utili per Atom

Di estensioni ce ne sono una marea, e ognuno ha le sue esigenze, ma finora che mi sono piaciute ce ne sono due in particolare.
Un terminale integrato:
https://atom.io/packages/Termrk
E un project-manager che facilita il passaggio da un progetto all’altro:
https://atom.io/packages/project-manager

Titanium CLI

Come tutti sanno dalla CLI si può fare tutto quello che si fa con Appcelerator Studio. In teoria.
Una cosa che da quanto ne so funziona su Studio ma non sulla CLI è il LiveView, o almeno a me funziona solo su Studio, quando funziona.

Per fare le build io nella mia quasi totale incapacità di scrivere per bash mi sono creato questo script, semplice ma abbastanza efficace. Non è gestito il –liveview perché tanto non funziona.

# The platform: ios or android
PLATFORM=$1
if [ "$PLATFORM" == "" ]; then
	PLATFORM="android"
fi

# The target: device, simulator (ios) or emulator (android)
TARGET=$2
if [ "$TARGET" == "" ]; then
	TARGET="device"
fi

# Y for choosing destination, N for the default
CHOICE=$3
if [ "$CHOICE" == "" ]; then
	CHOICE="N"
fi

if [ "$CHOICE" == "Y" ]; then
	appc ti build --platform $PLATFORM --log-level debug --target $TARGET --skip-js-minify --device-id
else
	appc ti build --platform $PLATFORM --log-level debug --target $TARGET --skip-js-minify
fi

Per fare i deploy (ipa e apk) invece mi sono fatto questo script, forse anche più brutto del precedente:

SRC_PROJECT_NAME="My Project"
DEST_FILE_NAME="MyProject"
OUTPUT_DIR=~/Documents/$DEST_FILE_NAME
ANDROID_OUTPUT_DIR=build/android/bin
IOS_DIST_NAME="My company"
IOS_DIST_UUID="................"

mkdir -p $OUTPUT_DIR

appc ti build --platform ios --build-only --force --log-level info --device-family ipad --target dist-adhoc --distribution-name $IOS_DIST_NAME --pp-uuid $IOS_DIST_UUID --output-dir $OUTPUT_DIR
mv $OUTPUT_DIR"/$SRC_PROJECT_NAME.ipa" $OUTPUT_DIR"/$DEST_FILE_NAME.ipa"

appc ti build --platform android --build-only --force --log-level info
cp $ANDROID_OUTPUT_DIR"/$SRC_PROJECT_NAME.apk" $OUTPUT_DIR"/$DEST_FILE_NAME.apk"

Conclusioni

Appcelerator sembra sulla via del tramonto, opinione diffusa anche nella community. L’aumento di stabilità su Android negli ultimi mesi/anni è evidente e le prestazioni non sono malaccio, ma l’esperienza di sviluppo è pessima rispetto ad altre piattaforme, e il quasi totale abbandono della “gratuità” di sei mesi fa le hanno fatto fare dei passi indietro tra le preferenze degli sviluppatori.
Forse si riprenderanno o forse no, resta il fatto che iniziare a utilizzare con profitto strumenti più generici e utilizzabili anche in altri ambiti può non essere una cattiva idea.
Magari dobbiamo continuare a usare l’SDK di Titanium sui nostri progetti, ma fortunatamente (ancora) nessuno ci obbliga a utilizzare tutti gli strumenti di sviluppo di Appcelerator.

Snellire la libreria google-play-services.jar con Android ProGuard

L’altro giorno stavo cercando di gestire i Google Analytics in una semplice applicazione mobile che sto sviluppando per conto mio con Titanium, ma quando sono andato ad aggiungere il modulo ti.ga non sono più riuscito a compilare niente a causa di un errore dovuto evidentemente a dei conflitti tra librerie.

L’errore di compilazione era questo:
[ERROR] : UNEXPECTED TOP-LEVEL EXCEPTION:
[ERROR] : java.lang.IllegalArgumentException: already added:Lcom/google/android/gms/maps/LocationSource;

Cercando in giro ho avuto la conferma che il problema era dovuto all’inclusione di una libreria google-play-services.jar all’interno del modulo, che faceva a cazzotti con quelle usate in un altro modulo importato nel mio progetto: ti.map.
Per completezza è necessario dire che la libreria ti.map – insieme alle altre native di Titanium – è accessibile in /Utenti/m.piccotti/Library/Application Support/Titanium/modules/android.

Classi duplicate, che fare

Il problema è comune e in molti sul web se ne lamentano, non solo parlando di Titanium e di questi moduli. Ovviamente non si può pensare di eliminare la libreria contenente le implementazioni delle api necessarie al modulo, ma lì per lì non sapevo che fare, finché non ho guardato meglio un altro modulo che mi serviva: ti.admob.
A differenza di ti.map il modulo ti.admob va tirato giù da GitHub e importato nel progetto, quindi mi è balzata all’occhio la presenza delle librerie google-play-services-base.jar e google-play-services-ads.jar; guardando il log ho notato il messaggio che mi interessava:
[DEBUG] : Skipping duplicate jar file: project_directory/modules/android/ti.admob/2.1.6/lib/google-play-services-base.jar

In sostanza Titanium evita l’importazione di librerie duplicate, ma la google-play-services.jar presente all’interno del modulo ti.ga non risultava duplicata ai controlli di Titanium, e il risultato era una duplicazione delle classi Android in fase di compilazione in presenza del modulo all’interno del progetto.

La soluzione

Quando non si sa dove sbattere la testa conviene sempre fare come gli altri, ho quindi preso la libreria google-play-services_base.jar dal modulo ti.admob (sviluppato da quelli di Appcelerator), e mi sono andato a cercare un jar contenente solo le librerie di Google Analytics. Naturalmente non ho trovato niente di simile, ma ero sulla strada giusta.

Pulizie manuali del jar

Mi serviva un jar contenente solo le classi necessarie al funzionamento di Google Analytics. Da ignorante nello sviluppo nativo Android ho fatto quello che avrebbe fatto qualunque altro bimbominkia, scompattando il jar e ricompattandolo solo dopo aver eliminato tutti i package fuori da “analytics”.

Forse un po' troppo drastico

Forse un po’ troppo drastico


Non ha funzionato, per la cronaca comunque un jar si può decomprimere con qualunque utility di decompressione file o con il comando:
jar xf google-play-services-analytics.jar
e si può ricreare con:
jar cf google-play-services-analytics.jar ./com.
Qui si spiega come funziona il comando per la creazione dei jar, questa cosa mi è comunque servita alla fine.

Android ProGuard

Effettivamente ripulire a mano le classi di una libreria sconosciuta aveva probabilità di successo pari a 0.00001, e io non sono così fortunato. Ho trovato però nel giro di poco la soluzione: ProGuard.
ProGuard è un tool che serve per ottimizzare e offuscare il codice Android. A me interessava eliminare dalla libreria google-play-services.jar inclusa nel modulo non funzionante tutto il superfluo lasciando solo la parte di analytics, e questa cosa si fa abbastanza agevolmente.

-injars google-play-services.jar
-outjars google-play-services-analytics.jar

-libraryjars /usr/local/Android/sdk/extras/android/support/v4/android-support-v4.jar
-libraryjars /usr/local/Android/sdk/platforms/android-21/android.jar

-dontoptimize
-dontobfuscate
-dontwarn com.google.**.R
-dontwarn com.google.**.R$*
-dontnote

-keep public class com.google.android.gms.analytics.**  {
    public protected *;
}

Vittoria in (quasi) quattro mosse:

  • includere questi comandi in un file di configurazione (chiamato ad esempio proguard.cfg)
  • copiare il file di configurazione appena creato e la libreria “onnicomprensiva” google-play-services.jar all’interno di /usr/local/Android/sdk/tools/proguard/lib (o comunque all’interno della directory dove si trova proguard.jar)
  • installare android-support-v4.jar se mancante, con l’Android SDK manager
  • eseguire il comando java -jar proguard.jar @proguard.cfg

ga-android-tools-proguard
… e il file salvifico compare magicamente all’interno della stessa directory.

Conclusioni

Ovviamente non è vero che il file risultante funzionava, infatti ho dovuto eliminare a mano tre o quattro classi da quest’ultimo come spiegato nella sezione “Pulizie manuali del jar”.
Il risultato è stato che finalmente quello che doveva funzionare ha funzionato, ma anche che le due librerie “base” e “analytics” pesano insieme meno della metà di quella unica, cosa non di poco conto nel mondo Android.

(Scola)pasta, birra e pirati: la CPI e il pastafarianesimo

cpi-fsm
Era il lontano 4 giugno 2012 quando – non ricordo bene perché (devo essere stato “toccato” a mia insaputa) – misi nel carrello Amazon Il libro sacro del Prodigioso Spaghetto Volante (Flying Spaghetti Monster in lingua originale).
A inizio 2015 sono venuto a conoscenza della Chiesa Pastafariana Italiana e del loro raduno nazionale a Bologna, e subito mi sono promesso che avrei partecipato al successivo… che ha avuto luogo esattamente una settimana fa a Firenze.

Veni, vidi, pici

Sono passati solo sette giorni ma mi pare un’eternità. Un fine settimana all’insegna dell’irriverenza e del divertimento, pura goliardia a spasso per Firenze, con turisti e locali che chiedevano ai pirati di scattare delle foto insieme.
cpi-quarto-raduno
La cosa divertente è che l’evento non è ruotato attorno a ragazzi tra i venti e i trent’anni come si potrebbe immaginare, ma osservando i circa 150 partecipanti ho visto uno spaccato della società molto ben distribuito. C’erano ragazzi e ragazze sui quindici anni come uomini e donne nell’intorno dei sessantacinque, coppie e single di entrambi i sessi, eterosessuali e gay dichiarati, e tutti si sono divertiti insieme in un clima di totale giovialità e goliardia.

Nel primo giorno ci si è divertiti a passaggiare per Firenze passando da un luogo di ritrovo all’altro, si è cenato tutti insieme (cena durante la quale la Sua Spaghettosa Bontà ha deciso di manifestarsi per la gioia del nostro palato), e infine si è fatta una processione/fiaccolata nel centro di Firenze, con scorta della Polizia, musica a palla e pause preghiera.


Il giorno due è stato un po’ più tranquillo, anche per dare modo a molti di riprendersi dalla sbornia della sera prima. L’abbiamo passato tutto nella terrazza dell’ostello (almeno finché ci sono stato io), principalmente ad ascoltare la “messa”.

Il Pastafarianesimo e la Chiesa Pastafariana Italiana

Il Pastafarianesimo ha origini antichissime, o almeno questo è quanto affermato dal profeta Bobby Henderson nel giorno della rivelazione, avvenuta il gennaio 2005. Qui potete trovare la lettera che scrisse per far notare che non sono solo la teoria dell’evoluzione e quella del creazionismo a dover essere insegnate nelle scuole perché ce n’è un’altra scientificamente provata…

Il primo disegno di Lui, per mano del Profeta

Il primo disegno di Lui, per mano del Profeta

Ma cos’è di preciso questo “Pastafarianesimo”? A voler sintetizzare tanto potrei dire che è la religione del vivi e lascia vivere, condita da tanto tanto spirito goliardico e “volemose be”. Questo è almeno il succo che esce leggendo con attenzione gli Otto condimenti, anche detti gli otto “Io preferirei davvero che tu evitassi”.

In molti paesi il movimento pastafariano sta crescendo piuttosto velocemente, e nella patria della pasta non poteva che formarsi – anche se un po’ in ritardo – uno dei centri più attivi.
La CPI nasce il 10 marzo 2012 grazie all’impegno di Giorgio De Angelis (“Pappa Al Zarkawi I”) che insieme ad alcuni amici gettò le fondamenta di quella che sarebbe diventata poi – pochi mesi dopo la sua morte – l’associazione “Chiesa Pastafariana Italiana”, fondazione avvenuta l’8 novembre 2014 durante il terzo raduno nazionale.

L'autodeterminazione della CPI

L’autodeterminazione della CPI

Le persone che formano lo zoccolo duro dell’associazione – ovvero i 7 del direttivo (Concistoro) e i 3 probiviri – sono più o meno gli stessi che hanno gettato le fondamenta tre anni fa. Io li ho conosciuti, sono persone normali che hanno deciso di dedicare parte del loro tempo a questa battaglia per la laicità dello stato. Nel primo numero dell’Osservatore pastafariano potete leggere i loro interventi.
L’associazione è ovviamente regolata da uno statuto, e il suo obiettivo principale è quello di essere riconosciuta come chiesa ufficiale dal Ministero degli Interni, così da offrire un’isola di approdo per tutte quelle persone che si sentono discriminate da questo stato chiaramente non laico in quanto non appartenenti a nessuna delle religioni attualmente riconosciute. Prego la Sua Sugosa Bontà che un giorno si raggiunga questo traguardo, purtroppo potrebbero volerci molti anni e non è detto che ci si riesca.

Infine la domanda che tutti si stanno ponendo…

Tutta questa gente che inneggia a un essere che nessuno può vedere e non da segni di se, che compie rituali strani mentre è vestita in modo strano… ci sta con la testa?
Non so, di sicuro però si diverte.

Se a questo punto vi state ancora domandando che c’entrano i pirati rileggete meglio i vari link. Di certo i pirati sono il popolo eletto, basta osservare i vari grafici per rendersene conto.

Ionic e plugin di Cordova

In questi giorni mi sono trovato a dover mettere le mani su un plugin di Cordova, resosi necessario su un’app scritta in Ionic (e quindi in AngularJS).
Ora, “tutti” sanno che i plugin di Cordova così come sono scritti mal si adattano ad applicazioni scritte in Angular, e in questo contesto si tende a utilizzare ngCordova.
Il problema è che, sebbene ngCordova incorpori ormai varie decine di plugin, proprio quello che serviva a me mancava. Io avevo bisogno di catturare l’immagine dello schermo in un certo momento – ovvero fare uno screenshot – e cercando sul web l’unico plugin abbastanza maturo e funzionante su Android e iOS mi è sembrato questo.

Rendere un plugin di Cordova più “AngularJS friendly”

Da sviluppatore (molto) poco esperto tanto in AngularJS quanto in Cordova, ho subito incontrato problemi nel collegare i due mondi, e cercando su Google mi è sembrato di non essere da solo. Al contrario.
Il modo più pulito mi è sembrato il seguente, e il primo “problema” (se così vogliamo chiamarlo) era risolto.

.service('$cordovaScreenshot', ['$q', function ($q){
    return {
        capture: function (filename, extension, quality){
            extension = extension || 'jpg';
            quality = quality || '100';

            var defer = $q.defer();

            navigator.screenshot.save(function (error, res){
                if (error) {
                    console.error(error);
                    defer.reject(error);
                } else {
                    console.log('screenshot saved in: ', res.filePath);
                    defer.resolve(res.filePath);
                }
            }, extension, quality, filename);

            return defer.promise;
        }
    };
}])

$cordovaScreenshot.capture('screenshot', 'jpg', 80);

In sintesi prima si registra il servizio Angular contenente la funzione di cattura (opportunamente corredata di libreria Q e promise), poi la si chiama, eventualmente passando delle funzioni da richiamare al termine o in caso di errore.

Modifica e test di un plugin su applicazione Ionic

Avvio l’applicazione – faccio fare lo screenshot – e subito mi rendo conto che dovrò sporcarmi le mani con l’Objective-C, perché sull’iPad il plugin non funzionava come doveva.
Inizio a modificare il file Screenshot.m che sta in project-directory/plugins/com.darktalker.cordova.screenshot/src/ios, avvio di nuovo il progetto ma delle modifiche neanche l’ombra. Inizio a cercare su internet (non oso immaginare cosa sarebbe il nostro lavoro senza un motore di ricerca web…), lancio vari comandi di Cordova consigliati dagli esperti di turno ma ancora niente.
Ancora un po’ di ricerche e capisco che i plugin vanno rimossi e riaggiunti, in questo modo si è certi che il tutto viene ricompilato ad ogni test. I comandi sono cordova plugin remove plugin-url-or-directory-or-id e cordova plugin add plugin-url-or-directory.

Per rendere tutto il processo un po’ più snello ho registrato un task su Grunt, e ve/me lo allego qui per comodità:

uninstallPluginScreenshot: {
    command: 'cordova plugin remove com.darktalker.cordova.screenshot'
},
installPluginScreenshot: {
    command: 'cordova plugin add sources-directory/cordova-screenshot'
    // la registrazione viene fatta a partire dalla directory dei sorgenti
}
// ...
grunt.registerTask('updatePlugin', [
    'shell:uninstallPluginScreenshot',
    'shell:installPluginScreenshot'
]);

Conclusioni

Chiaramente quanto ho scritto non è niente di trascendentale, ma ho notato che c’è molta gente inesperta “la fuori”, e magari qualcuno troverà utili queste poche righe. Sicuramente faranno comodo a me quando me le dimenticherò.

Segnali di pericolo personalizzati con Inkscape

Qualche giorno fa a casa ci siamo trovati di fronte a un dilemma: “Che fare quando i passanti si avventurano nella vigna per prendere un grappolo?”.

Il “furto” di frutta e ortaggi è un problema che esiste da sempre, e finché il maltolto ha quantità irrisorie si è sempre preferito far finta di nulla. Il problema è che quando l’uva comincia ad essere (almeno apparentemente) matura inizia il periodo in cui si danno più trattamenti con prodotti fitosanitari, che hanno generalmente intervalli di carenza di almeno qualche giorno, e questi andrebbero rispettati prima di raccogliere il frutto pena potenziali rischi per la salute.
Forse è assurdo preoccuparsi della salute di ladri e affini, e infatti conosco coltivatori e viticoltori in particolare che non si porgono minimamente il problema e non si farebbero scrupoli a denunciare chi entra nel loro vigneto. È anche vero però che un vigneto vicino alla strada può far gola a molti, e prendere una porzione di un grappolo non è poi la fine del mondo.

pericolo-ladri

Segnali di pericolo, difficili da trovare e costosi

La soluzione – consigliata anche in alcuni libri – è di installare dei segnali di pericolo in punti ben visibili, i quali indicando il rischio per la salute scoraggino anche la raccolta non autorizzata.
Mi sono messo quindi a cercare immagini adatte di segnali di questo tipo sul web con l’intenzione di stamparli e plastificarli (acquistare segnali appositi è “un po’” eccessivo oltre che costoso), ma non sono riuscito a trovare niente con una risoluzione decente. Ho deciso così di fermene uno da me, ma invece del solito Gimp ho preferito darmi alla grafica vettoriale così da iniziare a usare un po’ anche Inkscape.

Inkscape e grafica vettoriale

La grafica vettoriale si distingue dalla più comune grafica raster perché le immagini, invece di essere composte da una griglia di puntini colorati (come nelle foto), sono descritte come una composizione di primitive geometriche (linee, poligoni, …). La caratteristica principale di queste immagini è che non “sgranano” ridimensionandole, sono ottime quindi laddove fanno comodo icone di diverse risoluzioni o quando bisogna stampare su superfici di dimensioni diverse.
Se il Gimp è il re dei software gratuiti di manipolazione di immagini raster, l’omologo per la grafica vettoriale è Inkscape. Entrambi funzionano su Windows, Mac e Linux, ed entrambi possono essere usati anche per elaborazioni molto complesse perché hanno poco da invidiare ai più noti strumenti a pagamento.

Punto di arrivo per me, potrebbe essere punto di partenza per qualcun’altro

Per mettere insieme un segnale di pericolo non serve padroneggiare Inkscape, in quanto dei rettangoli e delle scritte sono più che sufficienti. Si trovano poi immagini svg (il formato standard usato da Inkscape) che possono essere utilizzate per arricchire il segnale, eventualmente previa modifica.
Il formato svg è un xml, ovvero un file di testo, perciò è molto compatto e può anche essere aperto con un comune blocco note e manipolato a mano (ad esempio per modificare una scritta).
Attenzione prodotti fitosanitari
Quindi in sintesi: alcuni rettangoli (con eventuali spigoli arrotondati) riempiti di giallo e rosso, un paio di belle scritte “Pericolo” e “Vigneto trattato con prodotti fitosanitari, vietato l’accesso alle persone non autorizzate”, il tutto stampato e plastificato. Il principio di prudenza è rispettato e magari la prossima vendemmia ci sarà anche qualche kg di uva in più.

L’originale in svg: Attenzione-prodotti-fitosanitari.svg
Un svg con segnale di pericolo: Warning.svg (da Wikimedia Commons)
Un teschio… sono stato tentato ma alla fine ho optato per il punto esclamativo: Skull.svg (da Wikimedia Commons)

Partendo dai tre file sopra si dovrebbe riuscire a comporre i più comuni segnali di allerta e pericolo. Niente di legalmente risolutivo ma magari possono tornare utili a qualcuno per soluzioni caserecce.

Storie di couchsurfing

cs-logo
Negli ultimi anni anche nel nostro paese questo “nuovo” modo di viaggiare sembra finalmente essere stato sdoganato, e se fino a qualche tempo fa di testimonianze italiane in rete se ne trovavano poche ultimamente ce ne sono fin troppe. Ma quello che non strozza ingrassa, quindi due righe sulle mie esperienze ho deciso di scriverle pure io, perché in queste ultime due settimane ho avuto altri ospiti interessanti e perché essendo appena arrivato agosto qualcuno potrebbe decidere di intraprendere questa strada, partendo da solo e magari evitando costosi alberghi.
Mi sono iscritto al sito CouchSurfing.com a gennaio 2012 dopo anni di “carino quel sito, ma viaggiare non mi interessa e non credo lo farei mai da solo”… a tre anni di presenza attiva in questa comunità è giunto il momento di buttare giù due pensieri.

Un po’ di storia non guasta mai

Il concetto di ospitalità più o meno esiste da sempre, ma da quando esistono alberghi, affittacamere, ostelli, B&B, … la gente ha perso l’abitudine di accogliere in casa viandanti sconosciuti.
Con la nascita di internet hanno cominciato a formarsi delle reti di ospitalità, gruppi di persone iscritte a comunità aperte alle quali si può offrire/richiedere una sistemazione temporanea.
La prima di queste reti dovrebbe essere stata Hospitality Club, nata nel 2010 ma da qualche anno in fase calante, seguita poco dopo da CouchSurfing e da altre (BeWelcome, Servas, Amons).
Qualcosa di simile ma non troppo è il WWOOF, una rete che viene usata sempre per farsi ospitare ma a patto di aiutare dei piccoli produttori di prodotti biologici con il lavoro nei campi.

La mia esperienza

Certo un tizio sui trent’anni che vive a casa con la famiglia in un paesino delle Marche non è il massimo per chi cerca ospitalità, quasi sempre ragazzi e ragazze amanti dell’avventura e dell’indipendenza, eppure esattamente tre anni un paio di foto di vigne attirarono l’attenzione di una ragazza californiana, che non si preoccupò troppo della mia totale mancanza di recensioni e mi chiese un divano per qualche giorno.
Stephanie arrivò a casa Piccotti in un caldo pomeriggio di agosto e mi insegnò (tra le altre cose) quanto sono utili i viaggi in solitaria per acquisire spirito di adattamento e di indipendenza e per imparare a uscire dalla propria comfort-zone


… e infatti pochi mesi dopo ero su un aereo in direzione San Francisco, a soli 10000km da casa.

In questi tre anni di esperienza ne ho fatta parecchia, ho conosciuto tanta gente fuori dal comune (almeno fuori dal “nostro comune”), e posso affermare con certezza che quando si vive qualche giorno con persone completamente diverse da noi e ci si trova ad affrontare imprevisti da soli in terra straniera il posto dove si è passa completamente in secondo piano.


Mi è capitato di restare un’ora su un pianerottolo perché il mio anfitrione era andato a dormire prima del previsto, di arrivare all’indirizzo comunicatomi e trovare una porta sbarrata con degli assi di legno, di urlare in strada all’una passata di notte fuori da una finestra per mezz’ora perché mi era stato detto di chiamare al mio ritorno e il telefono non funzionava. In queste ed altre occasioni ho pensato per qualche momento di essermi preso una fregatura, ma tutte le volte ho avuto poi la dimostrazione che i miei padroni di casa erano delle gran belle persone.

A casa di giramondo ne abbiamo ospitati molti e ciascuno di essi ha portato belle storie e belle esperienze. L’ultima in ordine temporale è stata Sonia, la quale ha accettato il mio invito (il mio primo invito andato a buon fine) e ci ha fatto compagnia per quattro giorni. Il risultato è che le nostre colline entreranno forse nel suo lungo documentario “There and back again”, una “cosina” amatoriale che sta pubblicando a puntate durante un viaggetto di un paio d’anni o forse più in giro per il mondo.

Una cosa bella di queste comunità (e del CS in particolare) è che anche quando non si riesce a trovare nessuno che ci ospiti si può comunque sperare di trovare qualche attività aperta a tutti dove si può andare per conoscere gente e per fare quattro chiacchiere. Inoltre ci sono delle bacheche in cui poter lasciare messaggi pubblici visibili in certe aree, e si può vedere l’elenco dei viaggiatori che hanno richiesto ospitalità nelle varie città. Per fare un esempio durante la mia permanenza a Las Vegas volevo passare un giorno nella Death Valley, possibilmente non da solo; ebbene due ragazze olandesi proprio in quei giorni stavano cercando compagnia (ed eventualmente un’auto) per andare alla Death Valley… l’auto l’avevo io e ci siamo andati insieme.

Qualche consiglio non convenzionale

Consigli su cose da fare e da non fare quando si viaggia in questo modo se ne trovano tanti in rete, elenco quindi giusto alcune mie osservazioni.

Puntare ai più esperti può essere controproducente

Gli iscritti più esperti e che ospitano molto (o viaggiano molto) potrebbero dare per scontata la vostra presenza/ospitalità e non dedicarvi molto tempo, avendo quindi a che fare con persone poco esperte si può spesso sperare in esperienze migliori. Di solito però il numero di recensioni di un iscritto è proporzionale al suo livello di esperienza, e meno recensioni significano anche un “rischio” maggiore.
Volendo portare questa cosa all’estremo si può puntare anche sempre ai neo-iscritti, riempendo ogni esperienza di incognite, e aumentando il rischio di ritrovarsi in/a casa di potenziali serial killer.
Da parte mia posso dire che la mia esperienza migliore l’ho avuta in assenza di recensioni, e le meno significative con le persone più abituate a questo meccanismo.

Se non avete mentalità molto aperte cercate persone simili a voi

Forse è un consiglio scontato o forse no. Io mi trovo a mio agio con persone anche molto diverse da me, perché i miei interessi sono molto variegati e mi piace fare più o meno qualunque cosa. Questa cosa però è abbastanza rara, quindi se non volete rischiare di ritrovarvi in mezzo a compagnie sgradite o a fare attività che odiate cercate di leggere bene i profili.

La perfezione sta tra 48 e 72

Io di solito evito il CS quando mi fermo per una sola notte, perché non si fa in tempo a conoscere le persone (in questi casi preferisco gli ostelli). Personalmente punto sempre a ospitare/farmi ospitare due o tre giorni, e questa opinione mi sembra abbastanza diffusa. Periodi più lunghi possono portare ad “affezionarsi” un po’ troppo nel caso di affinità, o ad alti livelli di stress quando le cose vanno male.

Curate il vostro profilo e rendetelo completamente “verde”

A fare un profilo ci vuole un istante e in un paio d’ore potete scrivere ciò che vi riguarda. Già che ci siete dedicategli qualche altro minuto e confermate tutto: telefono, identità (piccolo pagamento con carta di credito), indirizzo, account Facebook. Specialmente agli inizi – quando non si hanno ancora recensioni – spunte verdi su ogni sezione possono essere preziose per partire.
Inoltre cercate di rileggere il profilo di tanto in tanto, per correggere eventuali inesattezze e mantenerlo aggiornato.

Più si è meno funziona

Da soli è un sistema che funziona, una coppia di amiche o di fidanzati può andare, ma altre formule sono destinate a fare un buco nell’acqua al 90%. Non vi offendete quindi se siete due o tre amici e nessuno vi accoglie a braccia aperte.

Usate la vostra email buona per non perdervi niente

Con questo sito non si rischia spam quindi registratevi con l’email buona che avete sempre sotto controllo, così vi arriveranno notifiche di eventuali richieste e la vostra percentuale di risposta non rischia di arrivare sotto terra. Certo anche avere l’app con le notifiche push abilitate può essere una buona idea.

Scrivete delle richieste degne di essere lette

Capita di ricevere delle richieste di ospitalità che fanno venir voglia di rispondere “Col caz.o”. Detto che è importante leggere bene i profili delle persone per capire chi gradiscono in casa e cosa vogliono sentirsi dire, la mia formula ideale è:

  • saluto (possibilmente in lingua natia del ricevente, o “ciao” se il ricevente parla italiano) seguito dal nome del ricevente (c’è chi sbaglia a scrivere il nome…)
  • breve riassunto del perché si è in viaggio, quando e come si arriverà, quando e come si lascerà la casa
  • dimostrazione di lettura del profilo snocciolando due-tre motivi per cui si è deciso di chiedere ospitalità a queste persone, ed eventualmente cosa ci si aspetta
  • eventuali contatti (telefono/email/facebook) se è una richiesta dell’ultimo minuto e si vuole guadagnare tempo
  • saluti (senza ringraziamenti anticipati, che sono di cattivo gusto)

Occhio a chi ha solo recensioni femminili

Non appena si comincia a usare il sito si nota subito che tutto è incentrato sulle donne. La maggior parte di esse preferisce avere a che fare solo con le proprie simili, mentre gran parte degli uomini punta ai membri dell’altro sesso (confidando forse nella legge dei grandi numeri). Il risultato è che se si è donna (magari con una bella foto) si ricevono richieste di ospitalità e inviti come se piovesse, se si è uomo bisogna faticare un po’.
In entrambi i casi diffidate dei profili maschili con sole recensioni femminili, perché è altamente probabile che scartino sistematicamente richieste maschili nella speranza di mantenere il letto/divano pronto per ospiti più graditi.

Evitate di fare caz.ate

Ho sempre creduto fermamente nella filosofia del “Vivi e lascia vivere”, ovvero ciascuno deve essere libero/lasciato libero di fare qualunque esperienza/sciocchezza fintanto che queste non vanno a ledere interessi/sentimenti altrui. Lasciate perdere la comunità del CS se avete intenzioni poco gratificanti, anche perché rischiate di sputtanarvi sia al suo interno che nel mondo reale.

L’evoluzione di CouchSurfing

Mi piacerebbe poter dire di essere stato un pioniere, ma in realtà sono arrivato colpevolmente tardi. Ho comunque vissuto la transizione da associazione no-profit a organizzazione for-profit, l’aumento di interesse negli ultimi anni, l’introduzione di un’app mobile decente, un nuovo sito web.
Tra il 2011 e il 2012 durante il cambio di formula societaria si sono letti molti pareri negativi che lasciavano presagire il peggio, ma finora non si sono verificati eventi castastrofici di alcun tipo. In compenso in quest’ultimo anno il vecchio sito è andato in soffitta sostituito da uno un po’ più moderno e prestante – che viene aggiornato con discreta frequenza – e finalmente è stata lanciata un’app mobile multipiattaforma ben fatta. Sull’altro lato della bilancia bisogna mettere alcuni “suggerimenti” per la ricerca di voli o link per l’iscrizione ad altri servizi, niente di troppo invasivo comunque.
Ben venga la monetizzazione da parte dei proprietari se come risultato gli utenti hanno un miglioramento del servizio.

I rischi: purtroppo quelli veri sono (quasi) tutti per l’altra metà del cielo

Ai bambini si dice di non accettare caramelle dagli sconosciuti, e qui tutto è incentrato sugli sconosciuti… purtroppo so per testimonianze dirette che a volte si può incappare in dei veri pezzi di merda, e questo accade per lo più alle donne, specialmente se in viaggio da sole.
Vero che ci sono le referenze, vero che ci sono la verifica dell’identità, dell’indirizzo, del numero di telefono, del profilo Facebook, ma per criminali senza scrupoli questi sono soltanto dei piccoli ostacoli facilmente aggirabili con un po’ di fantasia (e di ingenuità altrui).

Recensioni negative, come gli unicorni

Ho visto ragazze che – tentando di mettere in guardia le proprie simili – hanno lasciato recensioni negative e si sono viste recapitare recensioni ambigue che cercavano di farle passare per delle sgualdrine, tanto da spingerle a cancellarle o peggio all’eliminare il profilo. Ho sentito direttamente di ragazze che si sono sentite spinte un po’ troppo in una certa direzione e hanno preferito andarsene. La cosa grave è che non sempre coloro che si trovano in queste situazioni denunciano l’accaduto o lasciano recensioni negative, con il risultato che queste merde umane possono riprovarci impunemente.

La cronaca

Quando ci va di mezzo la cronaca il motivo è quasi sempre lo stesso: uno stupro.
In più di dieci anni e chissà quanti milioni di esperienze di ospitalità questi casi si contano sulle dita di una mano, ma purtroppo non sempre finiscono in cronaca ed è risaputo che tentativi di questo tipo accadono più spesso di quanto dicano i giornali.
In Italia il caso più vergognoso è quello del carabiniere Dino Maglio, stupratore seriale che ha fatto molte vittime nell’arco di un anno. Se siete donne dovreste studiare questa storia nei dettagli.

Esperienze da fare e rifare, ma con prudenza

Il CouchSurfing è uno spaccato della società, nel bene e nel male, ma mentre nella società ci si sta qualche ora e poi si ritorna “al sicuro” tra le proprie mura, qui le mura nelle quali si torna sono quelle di sconosciuti, e tra queste mura ci si addormenta… e spesso non si può fare nemmeno affidamento su porte chiuse a chiave perché si dorme quasi sempre in aree comuni.

Tutto è basato sulla fiducia, riponetela nelle persone giuste (la stragrande maggioranza degli iscritti) e vivrete delle gran belle esperienze.
Se non siete convinte/i fuggite a gambe levate, e pazienza se vi siete sbagliate/i.