I nostri device non sono più del tutto nostri.

Da quasi due anni utilizzo un baby monitorevoluto” della Philips per monitorare Giorgia nel sonno. Ne avevo parlato tempo fa e banalmente la sua qualità principale è quella di permettere il controllo remoto.

Niente più onde radio e benvenuta wi-fi. L’app, anche fuori casa, si collega al dispositivo e permette (teoricamente) un audio bi-direzionale.

Tra le funzioni di questo device top di gamma vi erano anche il controllo della temperatura e dell’umidità ambientale e l’invio di notifiche quando tali valori raggiungevano livelli estremi (probabilmente poco salubri). Caratteristiche molto utili quando d’inverno tra porte chiuse e termosifoni accesi è un attimo far diventare l’aria molto secca.

Caratteristiche che però, da alcuni giorni, Philips ha deciso di rimuovere.

La nuova app infatti prevede un nuovo motore per lo streaming (olè) e rinuncia a queste due qualità.

Sorpreso, ho contattato il servizio clienti Philips, che più volte mi ha ricordato di esser attentissima alla soddisfazione del cliente con tanti paragrafi pre-confezionati e a tratti stucchevoli a fondo di ogni singola email.

“Ci dispiace che… […] Ci impegniamo affinché [….] rimaniamo a sua completa disposizione […].”

Per concludere con un bellissimo:

“Sempre nell’ottica di offrire ai nostri consumatori il massimo supporto possiamo offrirle uno sconto del 35% che potrà utilizzare per i prossimi acquisti di prodotti Philips Avent”.

Volendo paragrafare, una bella mattina il costruttore della vostra auto, senza contattarvi ma tramite un upgrade notturno, ha deciso che d’ora in poi l’auto avrà un finestrino in meno e voi per qualche arcano motivo dovreste esser contenti e iniziare a viaggiar senza. Non lo siete? Ecco, in tal caso il loro venditore è pronto ad offrirvi un buono sconto del 35% per le nuove auto in concessionaria.

Mi sembra proprio una splendida idea, non trovate?

Tramite quest’esperienza – oltre ad aver chiaro di non voler comprare nuovi prodotti smart Philips – mi torna in mente la ragione per cui decisi di cambiare centralina di irrigazione: qualsiasi device “intelligente” gestito da server remoti può di punto in bianco perdere funzionalità. Dieci anni o dieci minuti dopo, poco importa, è possibile e in quel caso nove volte su dieci potrete dir loro addio per sempre.

Da anni non compriamo più hardware ma software.

L’evoluzione del settore sta andando in quella direzione da molto tempo ormai. Quasi ogni strumento connesso del settore consumer prevede l’esistenza di un server proprietario con cui dialogare. Per noi consumatori l’unica possibilità è la promozione di prodotti interoperabili. L’alternativa è un futuro in cui saremo sempre più in balia delle scelte dei vari vendor che con tre click potranno rivedere i loro piani e mostrarci di aver venduto delle semplici promesse.

Emanuele

Bubùsettete!

E’ così che mi ha detto tua sorella quando le ho domandato «e sai cosa farà quando uscirà?».

Bubùsettete!

Ho riso dieci minuti buoni. Tanti sorrisi nuovi arriveranno a Marzo quando la nostra vita cambierà ancora incredibilmente.

Non so come ti chiamerò, non so neanche quale sia il tuo sesso ma so già che sarà l’inizio di una nuova avventura.

Ti aspettiamo e mi raccomando al bubùsettete!, che sia bello allegro, così Giorgia riderà e io con lei per nascondere un po’ l’emozione di quel momento meraviglioso.

Emanuele

Batteria scarica? La corsa raddoppia.

Uber sa quando la batteria sul tuo cellulare è quasi esaurita – e che tu sei probabilmente disposto a spendere cifre maggiori per prenotare un’auto al volo.

A tutti quelli che «ma io non ho nulla da nascondere» domando: dove siete adesso? Siete già su un taxi Uber?

Forse in questo modo diventa semplice comprendere che nessuno è interessato al vostro piatto di insalata ma che la privacy è un concetto molto più vasto che coinvolge tanto tanto altro della vostra vita e dei vostri device e che è importante (anche per le vostre tasche) che sia tutelata.

La prossima volta che cercate una corsa insomma, assicuratevi di avere la batteria carica per risparmiare qualche dollaro.

Riprendiamoci i nostri dati.

Emanuele

Se lo scrivi in inglese sei più credibile.

Da un po’ di mesi sto evitando di cadere nel tranello dell’inglese ovunque e senza motivo.

Tutto nacque quando un senior recruiter (uno che si occupa di ricerca del personale) ebbe un’offerta da mostrarmi e mi chiese se avessi uno slot libero per una call conoscitiva.

Fui tentato dal chiedergli di provare a riformulare la richiesta italiano, poi lasciai perdere.

Da allora, personalmente, niente più email con meeting, schedule, gap, update, call, slot e così via. Quando so pensare l’equivalente italiano, uso quello.

Non è complicato, ho notato che so ancora scriverlo. 🤗

La gente inoltre – posso confermare – continua a comprendermi ugualmente. 🤩

E’ solo questione di (brutta) abitudine dunque. Te lo racconto così magari siamo in due ad averne consapevolezza.

Emanuele

RainBird vs OpenSprinkler

Quest’estate ho aggiornato la centralina di irrigazione del prato. L’impianto esistente aveva una vecchia centralina RainBird: impostando un programma settimanale (con unico intervento giornaliero) eseguiva le azioni sulle varie zone del giardino.

Inizialmente l’ho sostituita con una RainBird RZXe4i sulla cui qualità non si discute. La centralina in oggetto, associata al modulo esterno RainBird LNK Wifi permette il controllo dell’intero software tramite applicazione sul cellulare. Il prezzo di tale soluzione è circa 150€ e l’installazione è banale se si sa armeggiare un minimo con dei fili elettrici.

L’applicazione per iOS è ben fatta graficamente e tramite i server RainBird è possibile monitorare e regolare l’irrigazione da remoto. Per me, questa funzione era un must-have nella scelta della nuova centralina.

Tra le sue funzioni “moderne” vi è inoltre la possibilità di regolare la quantità di acqua da versare giornalmente in base alle condizioni meteo della zona (per intenderci: è una giornata fresca e nuvolosa? E’ previsto caldo torrido? In base al meteo dunque la percentuale di acqua viene automaticamente regolata).

Tutto molto bello, finché non ho fatto il reso e comprato una centralina OpenSprinkler dall’America.

Perché? Le ragioni sono varie:

  • OpenSprinkler è un progetto open-source e lo sviluppo è molto attivo
  • E’ possibile far girare il software su un RaspBerry
  • La community ha sviluppato un’app per Android o iOS ma è comunque accessibile tramite webserver

Cosa significa tutto questo? Significa innanzitutto che non regalo i miei dati d’uso e configurazione a RainBird (sapete come la penso circa la dispersione dei nostri dati) inoltre la app di RainBird dipenderà sempre dalle politiche di sviluppo della società: se tra 10 anni decideranno di focalizzarsi/promuovere altre tipologie di centraline, la RZXe potrebbe diventare obsoleta e non più configurabile da remoto. OpenSprinkler dal canto suo, avendo un webserver, funzionerà sempre anche nel caso in cui il progetto o lo sviluppo dell’app dovessero morire.

L’app Rainbird ha le notifiche push, quella di OpenSprinkler no ma ha un log degli eventi molto più utilizzabile (ed esportabile).

La centralina OpenSprinkler costa pochi euro in meno, l’installazione è altrettanto rapida e di default è una otto zone (eventualmente espandibile ulteriormente) contro le quattro della RainBird.

La pianificazione delle attività può esser fatta anche in base al ritmo cicardiano, si può dunque indicare come orario “mezz’ora prima dell’alba e due ore dopo il tramonto” e l’orario slitterà in base all’orario del ciclo giorno-notte), contempla anch’essa la regolazione dell’irrigazione in base alle condizioni meteo degli ultimi giorni e si può specificare persino il valore di evotraspirazione del terreno per una regolazione dei tempi d’irrigazione da… ingegneri.

Emanuele

Client di posta e privacy

[…] But ultimately, email clients should defend against this. The fact that this nonconsensual tracking is even possible should be treated as a serious bug in all email clients. Apple Mail — both on Mac and iOS — allows you disable loading of remote images as a preference, but that breaks most graphically rich emails. Mail clients should allow remote images but load them anonymously, through a proxy server perhaps. I’m sure it’s a tricky problem to solve, but I’m convinced it can be solved.

Email should be every bit as private as most people assume that it is.

John Gruber

Non tutti i browser sono uguali, non tutti i client di posta sono uguali.

Quando ricevi una email, che non sia puro testo (come piace a me), esiste la possibilità che il mittente possa conoscere quando e quante volte sia stata aperta.

Alcune agenzie di invio email permettono persino di localizzare geograficamente dove la mail sia stata aperta.

I client di posta sono dei mini browser, tienilo a mente.

Imparare a bloccare i contenuti remoti sul proprio client di posta è una buona prassi per tornare ad avere un minimo di privacy: se la mail non dovesse vedersi correttamente lamentatevi con il mittente.

Emanuele

FreeNAS Nextcloud plugin – nginx e HTTPS

Come descritto nell’articolo sulla mia configurazione cloud, il webserver della mia istanza Nextcloud non esce fuori dalla rete locale se non attraverso una VPN con OpenVPN.

Idealmente dunque, utilizzare HTTP invece di HTTPS potrebbe sembrare una scelta ragionevole: handshake iniziale più rapido, numero minore di componenti da configurare e intuitivamente performance migliori.

In realtà, HTTPS con HTTP2 (tecnologia costruita su SPDY) garantisce performance migliori in quanto aggiunge la compressione degli header, la parallelizzazione delle richieste e un eventuale push proattivo da parte del webserver che può decidere che certe risorse saranno necessarie al client ancora prima che questi ne faccia richiesta. Non mi credete? Provate voi stessi.

A tutta questa (bella) roba si aggiunge uno strato di sicurezza in più: anche all’interno della mia rete locale le richieste (e le autenticazioni) verso nextcloud saranno cifrate e illeggibili da un aggressore.

Tutto molto bello insomma, non potevo lasciarmelo scappare. Non c’è ragione di usare HTTP invece di HTTPS in tutti i tuoi progetti web.

Il plugin di NextCloud per FreeNAS si basa su nginx, un webserver più moderno e performante del robustissimo Apache.

Configurare nginx per usare SSL e HTTP2 è semplicissimo. Entriamo via SSH nella Jail dedicata a nextcloud con jexec.

1. Verifichiamo se OpenSSL è installato (eventualmente installiamolo usando pkg).

root@nextcloud:/ # openssl version
OpenSSL 1.0.2o-freebsd 27 Mar 2018

2. Verifichiamo se i moduli nginx relativi a SSL (--with-http_ssl_module) e HTTP2 (--with-http_v2_module) sono installati.

root@nextcloud:/ # nginx -V
nginx version: nginx/1.16.0
built with OpenSSL 1.0.2o-freebsd  27 Mar 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf
--sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --user=www --group=www --modules-path=/usr/local/libexec/nginx --with-file-aio
--http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx/access.log
--with-http_v2_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-pcre --with-http_secure_link_module --with-http_slice_module
--with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --without-mail_imap_module --without-mail_pop3_module --without-mail_smtp_module --with-mail_ssl_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-mail=dynamic --with-stream=dynamic
root@nextcloud:/ #

3. Generiamo i certificati necessari (Certificate Authority, chiave privata e così via…).
Il CA sarà di tipo self-authority (non legato ad un ente certificatore esterno come potrebbe essere Let’s Encrypt [1]). Nessun problema, semplicemente il browser ci darà un warning (ma noi sappiamo di aver emesso noi quel certificato: possiamo fidarci).

Personalmente ho creato una directory openssl dentro /usr/local/etc/ssl/ nella quale ho salvato i file del mio certificato.

openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1095
cat key.pem>>cert.pem
openssl dhparam 2048 -out dhparam.pem

Durante la generazione dei vari certificati vi verranno chieste un paio di password e qualche informazione per descrivere il certificato. Conservate le password con cura.

Occhio che il parametro -days indica i giorni di validità del certificato: 1095 sono 3 anni.

A questo punto sarete già al 50% del lavoro.

4. Raggiungete la cartella di configurazione della vostra istanza web nextcloud.
Di default si trova in /usr/local/etc/nginx/conf.d/

Per non far danni fate una copia di nextcloud.conf e successivamente modificate la configurazione in questo modo:

server {
  listen 443 ssl http2;
  server_name nextcloud.local;
  ssl_certificate /usr/local/etc/ssl/openssl/cert.pem;
  ssl_certificate_key /usr/local/etc/ssl/openssl/key.pem;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;
  ssl_dhparam /usr/local/etc/ssl/openssl/dhparam.pem;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
...

Tutto il resto del file di configurazione potete lasciarlo immutato.

5. Riavviamo la lettura dei file di configurazione da parte di nginx:

root@nextcloud:/usr/local/etc/nginx/conf.d # service nginx reload
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
root@nextcloud:/usr/local/etc/nginx/conf.d #

Modifica completata! Se non avete fatto errori potrete loggarvi su https://<nextcloud-ip-address>:443/ 🎉

[1] Non ho potuto usare Let’s Encrypt perché come dicevo il mio webserver è isolato e non possiede un dominio. Se non siete nelle mie condizioni potrete usare CertBot e gestire l’intera catena di certificazione configurando il porting di Certbot per FreeBSD e nginx.

Il primo uomo.

La mia generazione si è persa l’emozione di vivere quei momenti meravigliosi.

«First man», il primo uomo. Il primo grande passo dell’umanità oltre l’atmosfera terrestre.

Probabilmente l’impresa più grande nella storia dell’uomo.

Emanuele