Le impostazioni fanno parte della memoria
Un'applicazione che ricorda quello che le dici dovrebbe ricordare anche quello che imposti. Tre segnalazioni senza legame apparente, una preferenza persa dopo una reinstallazione, un'impostazione sostituita in silenzio, una dettatura che non produce nulla: tre cause indipendenti e un unico lavoro di fondo su ciò che la memoria è tenuta a conservare.
Tre sintomi, nessuna causa comune
Nel giro di pochi giorni, tre segnalazioni diverse. La prima: il timbro della risposta cambia da solo, da uno scambio all'altro, senza che nulla sia stato toccato. La seconda: dopo una reinstallazione, l'impostazione scelta era tornata al valore di fabbrica. La terza: una dettatura su più tentativi non produceva nulla, o peggio, produceva una frase che non era mai stata pronunciata.
Visto da fuori, è una sola impressione: l'applicazione non trattiene niente. Visto da dentro, sono tre difetti senza il minimo legame tra loro. È il caso più ingannevole che ci sia, perché correggere il primo non sposta l'impressione generale di un millimetro, e si conclude troppo in fretta di aver seguito la pista sbagliata.
Due elenchi che si erano allontanati
La scelta del timbro esisteva in due posti: un elenco lato telefono, per mostrarla, e un elenco lato server, per convalidarla. Erano stati scritti separatamente e avevano finito per non dire più esattamente la stessa cosa. Il telefono proponeva una voce che il server non conosceva, il server la rifiutava senza dire niente e ripartiva dal proprio valore predefinito. L'impostazione non cambiava da sola, veniva sostituita in silenzio.
La correzione sta in due gesti. Un solo elenco, dichiarato una volta, da cui derivano entrambi i lati, così che un'aggiunta non possa più esistere da una parte soltanto. E una traccia scritta ogni volta che una scelta viene rifiutata e sostituita. Un rifiuto silenzioso è un difetto che non si può cercare: non lascia niente dietro di sé.
Lo stesso problema aveva un cugino. Il riepilogo quotidiano della casella non leggeva affatto l'impostazione e parlava sempre con il valore di fabbrica. La stessa applicazione si rivolgeva a te in due modi diversi a seconda del punto da cui parlava.
Un'impostazione riposta nel telefono non è un'impostazione ricordata
Il secondo difetto è il più interessante, perché in realtà non era un difetto. La preferenza stava nella memoria locale del telefono, che è il posto ovvio quando scrivi la funzione. Solo che quella memoria sparisce alla disinstallazione e non ti segue quando cambi apparecchio. L'impostazione non andava persa per caso: non era mai stata registrata da nessuna parte se non esattamente là dove sarebbe sparita.
L'abbiamo quindi spostata dove vive già il resto di quello che l'applicazione trattiene. Il telefono ne conserva una copia, perché deve poter rispondere in fretta e senza rete, ma la versione che fa fede sta sul server, legata al tuo account. All'avvio l'apparecchio si risincronizza; a ogni cambiamento spinge il nuovo valore.
Restava il caso di chi usa l'applicazione senza account e poi ne crea uno. I suoi ricordi migrano già dall'apparecchio all'account al momento dell'iscrizione: ora le sue impostazioni fanno il viaggio nello stesso movimento. È la stessa domanda sotto due forme, quella di sapere a chi appartengono i tuoi dati e dove vivono.
Meglio non inviare niente che inviare il vuoto
Il terzo difetto riguardava la presa del suono. Due meccanismi si contendevano il microfono: quando l'applicazione aveva appena parlato, la riproduzione audio teneva ancora la sessione sonora, e la registrazione avviata subito dopo apriva un file che restava vuoto. Una collisione dello stesso tipo si verificava durante la richiesta di autorizzazione al microfono, dove un registratore poteva continuare a girare in secondo piano mentre tutti lo credevano fermo.
La correzione di fondo è consistita nel restituire prima di prendere, e nel verificare il risultato a posteriori invece di fidarsi del segnale di partenza. Un file di qualche kilobyte non contiene nulla di udibile: invece di caricarlo, rispondiamo francamente che non c'era niente da sentire.
È la cosa che questo lavoro ci ha insegnato meglio. Un motore di trascrizione non restituisce mai «niente». Davanti al silenzio produce una frase plausibile, spesso ben costruita, a volte così banale da passare inosservata. Un file vuoto non diventa quindi un errore visibile, diventa una frase che non hai mai detto, archiviata nella tua memoria con la stessa serietà delle altre. Una memoria che colma un buco è più pericolosa di una che lo ammette. È la stessa esigenza che ci aveva portato, pochi giorni prima, a rifare da zero il gesto di dettatura tenuto fino al rilascio.
Quello che ne teniamo
Tre correzioni indipendenti, una sola regola: quello che scegli è un dato di memoria come un altro. Un'impostazione non è un dettaglio di visualizzazione da mettere in un angolo, è una cosa che l'applicazione deve ricordare di te, esattamente come quello che le affidi. Tutto ciò che tocca la conversazione e il modo in cui ti risponde segue da allora questa regola.
