Come ho salvato un Airpod che non voleva più suonare

Uso molto le mie Airpods 3 ed ero molto seccato dal fatto che ad un certo punto l’auricolare destro avesse perso quasi del tutto il volume, tanto che ormai ascoltavo la musica in mono, un po’ come quando da ragazzini si condivideva il walkman una cuffietta a testa.
Premetto che li pulisco con una certa regolarità con l’alcol (ho scoperto in rete che è meglio non usarlo) e quindi temevo che il mio auricolare fosse compromesso una volta per tutte da un inconveniente tecnico.
Cercando in rete ho trovato molte persone e quasi altrettante soluzioni, riporto qui la mia esperienza perchè ad un certo punto stavo per rassegnarmi ed invece sono tornato a godermi l’audio stereo e ricco di frequenze a cui mi avevano abituato gli auricolare Apple.

Per prima cosa vi dico che il mio era un problema di sporco probabilmente depositato tra le maglie finissime della reticella che copre gli speaker.
Le mie occasionali pulizie (e la quotidiana igiene personale!) non avevano impedito che lo sporco ostruisse questi fori davvero microscopici.

Dopo aver provato il reset degli auricolari, gli aggiornamenti del sistema operativo e aver verificato che non fossi io ad essere diventato sordo da un orecchio, seguendo le indicazioni di Apple ho usato l’acqua micellare che cattura le impurità molto meglio di altri detergenti: al supermercato ho scelto quella più economica che non avesse qualche caratteristica aggiuntiva.
Ho dovuto ripetere due volte la procedura descritta, per un totale di sei cicli lavaggio-risciacquo, un normale spazzolino da denti ha fatto il suo dovere.

Al termine del lavaggio non avevo ancora ottenuto i risultati sperati e quindi ho messo in pratica un suggerimento che avevo trovato in rete (odio Reddit, ma non riesco ancora a farne a meno): ho appoggiato l’auricolare alla bocca e ho cominciato a succhiare l’aria con discreta forza.
Dopo qualche ripetizione mi è sembrato di percepire l’aria che entrava da una feritoia per uscire nella mia bocca.
Appena ho indossato l’Airpod e ho sentito il consueto suono che annuncia l’abbinamento al telefono ho capito che aveva funzionato! Il volume dell’audio era tornato ai livelli originali.

Probabilmente il lavaggio con acqua micellare e spazzolino ha ammorbidito lo sporco permettendo poi che venisse soffiato via.
Il mio consiglio, se avete questo problema, è di non demordere ai primi tentativi, probabilmente in rete troverete dei video che fanno vedere come fare, alcuni più schifiltosi suggeriscono di soffiare attraverso un panno o un fazzoletto di carta e in effetti così aspirare il proprio cerume sembra meno ripugnante.

Come passare da aNobii a Bookwyrm

Per molti anni Anobii è stato il social dei libri per noi italiani. Nonostante qualche vicissitudine che ha rischiato di affossarlo, il sito è ancora vivace e frequentato, anche se subisce ormai la concorrenza spietata di Goodreads, di proprietà di Amazon dal 2013.

Se volete condividere le vostre letture con altri appassionati di lettura senza che questi dati finiscano nelle mani delle solite multinazionali, Bookwyrm è un’ottima alternativa aperta e federata.
Da poco tempo il gruppo Devol ha creato un’istanza italiana, ma ne esistono già molte altre.

Bookwyrm permette di importare la propria libreria di Goodreads, così come quelle in altri formati, ma non quella di Anobii. E’ possibile comunque importare la propria libreria in pochi passaggi.

Accedendo alla propria libreria, troveremo un’icona di fianco al modulo di ricerca, cliccando potremo scegliere di esportare in formato .CSV.

Dopo qualche minuti il file ci arriverà allegato in una email.

Basterà aprire il file con un foglio di calcolo come Libreoffice Calc (o Excel) e conservare solo la colonna con i codici ISBN

Il file ottenuto, salvato in formato CSV può essere importato in Bookwyrm, andando su I miei libri e scegliendo il pulsante di importazione in cima alla libreria.

Il processo di importazione richiederà un tempo variabile a seconda della dimensione della vostra libreria e, almeno nel mio caso, non del tutto efficiente: non è possibile mantenere gli stati di lettura, le recensioni, le valutazioni e alcuni titoli non vengono riconosciuti e vanno poi redatti manualmente.

Grazie a Edoardo Secco per avermi messo sulla buona strada.

Headscale come alternativa a Tailscale

Tailscale è un ottimo modo per collegare tra loro server diversi.
I client sono open source e disponibili per una grande varietà di piattaforme, non da ultima i NAS Synology, compreso il mio vecchio DS214se.
La configurazione è rapida e di nessuna difficoltà, le prestazioni sono inferiori a quelle che pare si possano avere utilizzando un semplice tunnel Wireguard ma sono comunque all’altezza dei compiti svolti dai miei server amatoriali.
Il problema è che il server di autenticazione è l’unico componente proprietario.

Headscale è un’implementazione opensource del server Tailscale.
Al momento in cui scrivo è arrivato alla release 0.12, quindi il progetto non ancora del tutto maturo, ma dalle mie prime prove è già utilizzabile con un buon margine di tranquillità.

Per l’installazione mi sono avvalso di questo tutorial, con qualche aggiunta presa qua e là.
Questa procedura prevede che Docker e Docker Compose siano installati sulla macchina che farà da server, io ho utilizzato una VPS molto economica con Debian Buster ed installarli è facile.
E’ inoltre necessario un web proxy – io ho utilizzato Nginx con certbot che gestisce i certificati SSL e relativi redirect.
Questo è un esempio di configurazione:

# Redirect HTTP to HTTPS
server {
    if ($host = esempio.miodominio.it) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name esempio.miodominio.it;
    return 301 https://$host$request_uri;


}
server {
    listen 443 ssl;
    server_name esempio.miodominio.it;

    client_body_timeout 5m;
    client_header_timeout 5m;

    access_log            /var/log/nginx/esempio.miodominio.it.log;
    error_log            /var/log/nginx/esempio.miodominio.it.error.log info;

    # reverse proxy
    location / {
         proxy_pass http://127.0.0.1:27896;  # headscale listen_addr
         proxy_read_timeout 6m;
         proxy_ignore_client_abort off;
         proxy_request_buffering off;
         proxy_buffering off;
         proxy_no_cache "always";
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    ssl_certificate /etc/letsencrypt/live/esempio.miodominio.it/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/esempio.miodominio.it/privkey.pem; # managed by Certbot
}

Per l’installazione dei client sulle varie piattaforme la documentazione reperibile sul sito di Tailscale o con una qualsiasi ricerca è sufficientemente esauriente e di facile esecuzione.

Come prima cosa creaiamo la cartella in cui installeremo Headscale:

sudo mkdir -p /opt/headscale

Spostiamoci nella cartella appena creata e eseguiamo i seguenti comandi:

mkdir -p ./config
touch ./config/db.sqlite
curl https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml -o ./config/config.yaml

abbiamo così creata una cartella per le configurazioni, al cui interno abbiamo creato un file .sqlite per l’archivio e scaricato una copia dell’esempio di file di configurazione. Le modifiche a questo ultimo file saranno minime.

Ora creiamo il file docker-compose.yml:

nano docker-compose.yml

version: '3.5'
services:
  headscale:
    image: headscale/headscale:latest
    volumes:
      - ./config:/etc/headscale/
      - ./data:/var/lib/headscale
    ports:
      - 27896:8080
    command: headscale serve
    restart: unless-stopped

La porta esterna è la 27896, ma siete liberi di cambiarla come meglio preferite, impostate correttamente il proxy (cfr. la configurazione di Nginx qui sopra).

Prima di avviare Headscale editiamo il file di configurazione:

nano config/config.yml

inserendo l’URL del nostro server:

server_url: https://esempio.miodominio.it

Adesso possiamo avviare Headscale:

docker-compose up -d

Sui client, una volta installato Tailscale, basterà specificare il server di login al momento dell’avvio perchè tutto funzioni quasi magicamente:

tailscale up --login-server https://esempio.miodominio.it

Download automatici di un canale Youtube

Di Youtube-dl ho già parlato, ma ogni volta che vi ricorro si dimostra ancora più versatile e potente di quanto potessi immaginare.
Una convention annuale solitamente articolata in più giorni, in questo periodo di pandemia si svolge completamente online, pubblicando i filmati degli interventi su un canale Youtube.
Purtroppo i video rimangono disponibili solo per poche ore, avevo quindi bisogno di scaricarli in fretta, evitando però di includere anche altri video pubblicati precedentemente.

Leggendo tra la documentazione di Youtube-dl, ho scoperto l’opzione --dateafter, mi basta quindi impostare la data di inizio della convention per selezionare automaticamente solo i video pubblicati a partire da quella data.

Con l’opzione --download-archive evito il download dei video precedentemente scaricati. Youtube-dl tiene traccia di quanto ha già  scaricato nel file download.txt .

L’opzione -i ignora eventuali errori relativi a filmati non disponibili, nel mio caso utili perchè già  presenti in playlist i filmati in programma nei giorni successivi.

Con l’opzione -o specifico la cartella di destinazione e il formato del nome del file da salvare.

Il comando completo è quindi:

$ youtube-dl -o "/cartella/download/%(title)s.%(ext)s" --dateafter 20210315 --download-archive /cartella/download/downloads.txt -i https://www.youtube.com/playlist?list=abcde1234

inserito in un crontab, ogni 6 ore controlla la presenza di nuovi video e li scarica nella cartella scelta.

# scarica i nuovi filmati ogni 6 ore
* */6 * * * youtube-dl -o "/mnt/download/CON6/%(title)s.%(ext)s" --dateafter 20210315 --download-archive /mnt/download/downloads.txt -i https://www.youtube.com/playlist?list=abcde1234

ET:Legacy 2.77!

Di recente ho scoperto con piacere che è ancora possibile giocare a Return to Castle Wolfenstein e soprattutto alla sua evoluzione online ET:Legacy.
Di ET:Legacy, il port libero di Enemy Territory, è da poco uscita la nuova versione 2.77 che tra le altre cose supporta nativamente le ultime versioni di MacOS.

Sulla mia installazione di Linux Mint 20.1 Ulyssa i binari precompilati continuano a dare problemi in fase di esecuzione, ma Flatpak corre in aiuto della mia pigrizia: ET:Legacy è già pronto per essere installato!