Come Amazon sa così tanto di te

«Tutti abbiamo bisogno di spazi privati dove non siamo osservati» dice il venture capitalist Roger McNamee, che conobbe Bezos a metà degli anni 90 durante una vendita del leader di Amazon ad un fondo della Silicon Valley.

«Un posto in cui possiamo essere noi stessi nel modo più sincero senza paura di essere visti o spiati».

«E‘ nella strategia di business di Amazon con Alexa, ma anche con i videocitofoni Ring, trasformare questi santuari e convertirli in spazi pubblici».

La gente pensa: “Hey, rinuncio ad un po’ di dati personali per un servizio che mi piace davvero”.

«C’è stato un tempo in cui questo è stato vero. Ma cosa sta accadendo adesso è molto più invasivo e manipolativo».

Estratto da un bel report della BBC inglese «Why Amazon knows so much about you» che racconta come Amazon si è trasformata dall’essere un negozio di libri ad avere informazioni sulle nostre vite.

Emanuele

Amazon registra ogni digitazione.

Amazon appears to be tracking every tap on Kindle. I just got my data back and there are 90K rows of this pic.twitter.com/wVCSXCTVwv

Adrianne Jeffries (@adrjeffries) January 28, 2020

Le domande che mi pongo sono:

È necessario registrare questi dati? Qualora fossero utili al funzionamento dell’applicazione, non è possibile mantenere queste registrazioni sul dispositivo invece di conservarle online? Se invece fossero usate per tenere sincronizzati più device, è realmente necessario conservarle a lungo termine piuttosto che eliminarle dopo che la sincronizzazione è avvenuta?

Amazon certamente fa analisi del tempo di lettura, dell’interesse verso determinate pagine (e determinate frasi/keyword), del tempo speso sul Kindle per cercare informazioni e così via.

Perché ogni dispositivo elettronico che prendiamo in mano, ormai, deve analizzare il nostro comportamento?

Sono videocamere piazzate su di noi.

La tecnologia può fare a meno di questo continuo tracking, è esclusivamente l’ingordigia del capitalismo a richiedere lo sviluppo di questi sistemi. Certi servizi possono essere offerti senza trasformarci in prodotti ma queste grandi aziende cercano continuamente di convincerci che la raccolta dati sia necessaria e inevitabile.

La sicurezza e la privacy non dovrebbero essere un privilegio disponibile solo ad una élite tecnicamente preparata.

Emanuele

Installare Nextcloud con nginx, PHP7.4 e MySQL8.

Amo avere il controllo dei miei strumenti e anche il mio cloud non fa eccezione. Il plugin fornito da FreeNAS (provatelo, non tornerete mai più indietro) era perfetto ma limitante.

Ecco dunque come installare manualmente Nextcloud su PHP7.4 e MySQL8.

1. Su FreeNAS creiamo una jail con iocage e una volta entrati aggiorniamo i suoi repository

pkg update && pkg upgrade

Installiamo i pacchetti necessari al funzionamento di nextcloud

pkg install php74-mysqli-7.4.0 php74-ctype-7.4.0 php74-curl-7.4.0 php74-dom-7.4.0 php74-gd-7.4.0 php74-iconv-7.4.0 php74-json-7.4.0 php74-iconv-7.4.0 php74-mbstring-7.4.0 php74-openssl-7.4.0 php74-posix-7.4.0 php74-session-7.4.0 php74-simplexml-7.4.0 php74-xmlreader-7.4.0 php74-xmlwriter-7.4.0 php74-zip-7.4.0 php74-zlib-7.4.0 php74-pdo_mysql-7.4.0 php74-fileinfo-7.4.0 php74-bz2-7.4.0 php74-intl-7.4.0 php74-imap-7.4.0 php74-pecl-imagick-im7-3.4.4 php74-xml-7.4.0 php74-filter-7.4.0 php74-readline-7.4.0 php74-pdo-7.4.0 php74-pecl-APCu

Installiamo MySQL8

pkg install mysql80-server-8.0.17

Installiamo il webserver (e qualche utility)

pkg install nginx nano sudo

Mettiamo tutto in auto-start nella jail

sysrc -f /etc/rc.conf nginx_enable="YES"
sysrc -f /etc/rc.conf mysql_enable="YES"
sysrc -f /etc/rc.conf php_fpm_enable="YES"

2. Configuriamo i local PATH per PHP modificando il file www.conf

nano /usr/local/etc/php-fpm.d/www.conf

Rimuoviamo il commento a

env[PATH] = /usr/local/bin:/usr/bin:/bin

3. Avviamo il server SQL e avviamo la procedura di messa in sicurezza di base

service mysql-server start
mysql_secure_installation

Qui verrà richiesto il livello di sicurezza e la password per l’utente root e una serie di domande alle quali potrete rispondere sempre YES 😉

Creiamo un utente nel db di nextcloud modificando prima la modalità di autenticazione (MySQL8 introduce una nuova modalità non ancora supportata da nextcloud)

nano /usr/local/etc/mysql/my.cnf
default_authentication_plugin=mysql_native_password (da inserire dentro sezione mysqld)

Effettuiamo il login sul server MySQL con l’utente di root creato al punto 7

mysql -u root -p
Password:
create database nextcloud; 
create user 'dbadmin'@'localhost' identified by '<password-per-utente-dbadmin>';
grant all privileges on nextcloud.* to 'dbadmin'@'localhost';
flush privileges;
quit;

4. Richiediamo un nuovo certificato per far girare il web server su HTTPS:

mkdir /usr/local/etc/ssl/openssl
cd /usr/local/etc/ssl/openssl
openssl req -new > cert.csr

Completata la procedura effettuiamo qualche rename

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

Modifichiamo nginx.conf in modo da utilizzare https

touch /usr/local/etc/nextcloud_ssl.conf
nano /usr/local/etc/nginx/nextcloud_ssl.conf

E inseriamo la configurazione del server in SSL:

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;
   #ssl_ciphers         HIGH:!aNULL:!MD5;
 # Path to the root of your installation
   root /usr/local/www/nextcloud/;
 # set max upload size
   client_max_body_size 10G;
   fastcgi_buffers 64 4K;
 # Disable gzip to avoid the removal of the ETag header
   gzip off;
 rewrite ^/caldav(.)$ /remote.php/caldav$1 redirect;   rewrite ^/carddav(.)$ /remote.php/carddav$1 redirect;
   rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
 index index.php;
   error_page 403 /core/templates/403.php;
   error_page 404 /core/templates/404.php;
 location = /robots.txt {
 allow all;
 log_not_found off;
 access_log off;
 }
 location ~ ^/(?:.htaccess|data|config|db_structure.xml|README){
 deny all;
 }
 location / {
 The following 2 rules are only needed with webfinger
 rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
 rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
 rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
 rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
 rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
 try_files $uri $uri/ =404;
 }
 location ~ .php(?:$|/) {
 fastcgi_split_path_info ^(.+.php)(/.+)$;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_pass unix:/var/run/nextcloud-php-fpm.sock;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_intercept_errors on;
 }
 Adding the cache control header for js and css files
 Make sure it is BELOW the location ~ .php(?:$|/) { block
 location ~* .(?:css|js)$ {
 add_header Cache-Control "public, max-age=7200";
 Add headers to serve security related headers
 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;
 Optional: Don't log access to assets
 access_log off;
 }
 Optional: Don't log access to other assets
 location ~* .(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
 access_log off;
 }
 }

Ricordiamoci di fare un include di nextcloud_ssl.conf dentro nginx.conf

nano /usr/local/etc/nginx/nginx.conf
include /usr/local/etc/nginx/nextcloud_ssl.conf; (da scrivere in fondo dentro al file)

5. Configuriamo la cache PHP

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
# Modify opcache settings in php.ini according to Nextcloud documentation (remove comment and set recommended value)
# https://docs.nextcloud.com/server/15/admin_manual/configuration_server/server_tuning.html#enable-php-opcache
sed -i '' 's/.opcache.enable_cli=./opcache.enable_cli=1/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.opcache.file_cache=./opcache.opcache.file_cache=\/tmp\/.opcache\//' /usr/local/etc/php.ini
sed -i '' 's/.opcache.interned_strings_buffer=./opcache.interned_strings_buffer=8/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.max_accelerated_files=./opcache.max_accelerated_files=10000/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.memory_consumption=./opcache.memory_consumption=128/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.save_comments=./opcache.save_comments=1/' /usr/local/etc/php.ini
sed -i '' 's/.opcache.revalidate_freq=./opcache.revalidate_freq=1/' /usr/local/etc/php.ini
# recommended value of 512MB for php memory limit (avoid warning when running occ)
sed -i '' 's/.memory_limit./memory_limit=512M/' /usr/local/etc/php.ini

6. Scarichiamo, estraiamo e modifichiamo i permessi per nextcloud

cd
fetch nextcloud-17.0.2.tar.bz2 https://download.nextcloud.com/server/releases/nextcloud-17.0.1.tar.bz2
tar -jxf nextcloud-17.0.2.tar.bz2
cp -rf nextcloud /usr/local/www/nextcloud
chown -R www:www /usr/local/www/nextcloud/

7. Installiamo nextcloud specificando il dataset nel quale registrare i dati del software e la cartella di destinazione dei file degli utenti

sudo -u www php /usr/local/www/nextcloud/occ  maintenance:install --database "mysql" --database-name "nextcloud"  --database-user "dbadmin" --database-pass "<passsword-utente-dbadmin>" --admin-user "NextCloud_Admin" --admin-pass "<password-utente-NextCloud_Admin>" --data-dir "/mnt/nextcloud"

Nel mio caso, il dataset accessibile alla jail da FreeNAS è stato montato dentro /mnt/nextcloud.

8. Modifichiamo il file di configurazione di NextCloud esplicitando l’indirizzo e l’eventuale DNS al quale verrà contattato

nano /usr/local/www/nextcloud/config/config.php
 e modificare l'array in questo modo:
 array (
   0 => 'localhost',
   1 => '192.168.0.100',
   2 => 'nextcloud.local',
 ),

9. Diamo il via ai servizi e, tramite browser, godiamoci il nostro nuovo cloud pronto ad esser riempito.

service nginx start
service php-fpm start

That’s all folks.

Emanuele

Ridere.

E’ il contesto giusto per farlo?
Sono dell’umore giusto per ridere?
Chi ho di fronte merita una mia risata?
Chi è intorno è pronto ad accoglierla?

Un adulto che decide di ridere compila in pochi istanti una check-list. Tutto deve essere positivo affinché la risata non sia trattenuta, ridimensionata o inghiottita.

I bambini ridono senza troppi perché. Giorgia mi sta mostrando l’innocenza spensierata e ad ogni risata priva di preconcetti io – dentro me – la ringrazio per il grande dono.

Emanuele

Twitter blocca le pubblicità dal fine politico.

Abbiamo preso la decisione di interrompere tutta la pubblicità politica su Twitter a livello globale. Riteniamo che la portata del messaggio politico debba essere guadagnata, non acquistata. Perché? Alcuni motivi … 🧵

Un messaggio politico guadagna visibilità quando le persone decidono di seguire un account o ritwittarlo. Pagare per raggiungere rimuove quella decisione, forzando messaggi politici altamente ottimizzati e mirati sulle persone. Riteniamo che questa decisione non debba essere compromessa dal denaro.

Mentre la pubblicità su Internet è incredibilmente potente e molto efficace per gli inserzionisti commerciali, quel potere comporta rischi significativi per la politica, dove può essere usato per influenzare i voti e influenzare la vita di milioni di persone.

Gli annunci politici su Internet presentano sfide del tutto nuove al discorso civico: ottimizzazione basata su machine learning di messaggistica e micro-targeting, informazioni fuorvianti non controllate e falsi profondi. Tutto a velocità crescente, raffinatezza e scala schiacciante.

Queste sfide influenzeranno TUTTA la comunicazione su Internet, non solo le pubblicità politiche. Meglio concentrare i nostri sforzi sui problemi di fondo, senza l’onere aggiuntivo e la complessità che comporta il denaro. Cercare di sistemare entrambi significa non risolvere nulla per bene e danneggia la nostra credibilità.

Ad esempio, non è credibile per noi dire: “Stiamo lavorando duramente per impedire alle persone di giocare con i nostri sistemi per diffondere informazioni fuorvianti, ma se qualcuno ci paga per indirizzare e costringere le persone a vedere la loro pubblicità politica … beh … si, possono dire quello che vogliono! 😉”.

Abbiamo considerato di interrompere solo i tweet dei candidati, ma pubblicare annunci offre loro un modo per aggirare tale limite. Inoltre, non è giusto per nessuno oltre che per i candidati acquistare annunci per tematiche simili. Quindi stiamo fermando anche questi.

Siamo consapevoli di essere una piccola parte di un ecosistema pubblicitario politico molto più ampio. Alcuni potrebbero sostenere che le nostre azioni oggi potrebbero favorire gli operatori storici. Ma abbiamo assistito a molti movimenti sociali che hanno raggiunto dimensioni enormi senza pubblicità politica.

Confido che questo crescerà. Inoltre, abbiamo bisogno di una regolamentazione degli annunci politici più lungimirante (molto difficile da fare). I requisiti di trasparenza degli annunci sono in corso, ma non abbastanza. Internet offre funzionalità completamente nuove e le autorità di regolamentazione devono pensare oltre per garantire condizioni di parità.

Condivideremo la politica finale entro il 15 Novembre, comprese alcune eccezioni (ad esempio, gli annunci a supporto della registrazione degli elettori saranno comunque consentiti).Inizieremo ad applicare la nostra nuova politica il 22 Novembre per fornire agli inserzionisti un periodo di preavviso prima che la modifica diventi effettiva.

Un’ultima nota. Non si tratta di libertà di parola. Si tratta di pagare per raggiungere le persone. E pagare per aumentare la portata del discorso politico ha conseguenze significative che l’infrastruttura democratica di oggi potrebbe non essere pronta a gestire. Vale la pena fare un passo indietro per affrontare il problema.

Jack Dorsey (creatore di Twitter) – 30 Ottobre 2019

La dichiarazione appena rilasciata da Dorsey e le conseguenze per le dinamiche su Twitter – se applicate ridigamente – fanno intravedere un barlume di speranza.

Le sue parole suonano molto dure, consapevoli di un problema di portata mondiale che da tempo si sta trascurando e di cui – la politica (quella vera) – sembra non preoccuparsi (forse perché fin troppo comodo per i loro fini).

Se non l’avessi ancora fatto, prova ad ascoltare questo TED che segnalai all’inizio dell’anno.

Emanuele

Luci rosse dietro le biciclette.

Gli olandesi son soliti dire che Amsterdam è fatta da «un metro d’acqua, un metro di terra e un metro di biciclette». Probabilmente – aggiungo io – sono molto conservativi.

Non ero mai stato ad Amsterdam ma ne avevo sempre ascoltato il mito raccontato da amici o conoscenti che, specie nell’età della maturità facevano un salto da queste parti alla ricerca del paradiso terrestre.

Effettivamente di italiani in giro ne ho incrociati un po’ e l’età media si abbassava visibilmente nella zona del Red Light district ma nonostante ciò ho scoperto che Amsterdam è molto molto più bella di quel che mi era stato raccontato.

Il suo centro quasi privo di auto regala degli angoli di silenzio cui non siamo più abituati. Lo scampanellio dei ciclisti (infastiditi dai turisti), le campane di una chiesa, il motore di una barca. Suoni nascosti dal frastuono nelle nostre città.

I parcheggi carissimi mi hanno invogliato a lasciare l’auto in un silos “park & ride” fuori città: prezzo del parcheggio 1€ per tutto il giorno se prendi i mezzi pubblici per entrare. Personalmente ho preferito il tram alla metro per godere ancor di più della bellezza di queste terre emerse artificialmente.

Le nostre città dovrebbero avere il coraggio di osare, se ne parla da tempo ma tutto continua ad esser rimandato da stupide manovre pseudo-ecologiche (chi ha i soldi paga ed entra nelle ZTL).

E’ questione di cultura, è vero, ma Amsterdam è un ottimo riferimento per tante altre metropoli in quanto:

  1. non è piccola, quindi spostarsi in bicicletta non è sempre agevole
  2. non è una città calda o poco piovosa, quindi chi va in bici d’inverno deve equipaggiarsi
  3. non è una città moderna dalle strade larghe, quindi fare le ciclabili ruba obbligatoriamente spazio ad altro.

Insomma, le classiche scuse per cui dalle nostre parti ci si convince che la bici non possa funzionare, qui sono totalmente ignorate.

Quale sarà la prima città italiana ad avventurarsi in scelte simili?

Emanuele

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