MemoPort

Verso la fine di agosto 2026 ho pubblicato sul Play Store MemoPort, una piccola applicazione Android per prendere appunti e impostare promemoria. A prima vista non sembra esattamente il progetto destinato a cambiare la storia dell’informatica (ed effettivamente non lo è).
MemoPort permette di creare note, conservarne alcune in un’area privata protetta da PIN e associare promemoria con relative notifiche. Funziona offline, non richiede account, non contiene pubblicità ed è gratuita.
Il punto interessante, almeno per me, è però un altro: MemoPort è stata soprattutto un progetto attraverso il quale ho cercato di capire come vorrei sviluppare software Android nei prossimi anni.

Perché creare l’ennesima app per le note?

La risposta breve sarebbe: perché mi serviva. La versione lunga richiede qualche spiegazione in più.
Sul Play Store esistono già decine, probabilmente centinaia, di applicazioni dedicate a note, promemoria e liste di cose da fare. Alcune sono enormemente più complete di MemoPort.
Non avevo quindi nessuna intenzione di reinventare la ruota. Mi interessava invece realizzare un’app piccola ma completa, realmente utilizzabile, che mi permettesse di affrontare diversi aspetti dello sviluppo Android moderno senza nascondermi dietro framework multipiattaforma o servizi esterni. Una sorta di palestra per spratichirmi con lo sviluppo “canonico”.
L’app è stata sviluppata nativamente in Kotlin, utilizzando Jetpack Compose per l’interfaccia. Per la persistenza dei dati ho usato Room, mentre la gestione dello stato passa attraverso ViewModel e StateFlow. I promemoria utilizzano AlarmManager e il sistema di notifiche di Android.
Dopo anni trascorsi tra Flash, Adobe AIR, JavaScript, Phaser e vari strumenti multipiattaforma, volevo tornare a mettere le mani direttamente sotto il cofano e capire meglio cosa succede davvero dentro un dispositivo Android.
L’app, avendo finalità principalmente promozionali, non contiene pubblicità. E non esiste nemmeno una versione Premium che dopo tre giorni cerca di vendervi un abbonamento da 7,99 euro al mese per scrivere la lista della spesa.
Una scelta economicamente discutibile, probabilmente, ma questo progetto fa parte di qualcosa di più ampio. Sto costruendo progressivamente un piccolo catalogo di applicazioni Android, sperimentando tecnologie e modelli differenti. Nel mio store alcune applicazioni potranno essere gratuite, altre utilizzeranno annunci, altre ancora potranno avere funzionalità Premium. Mi interessa molto di più costruire nel tempo un ecosistema di progetti credibili che spremere qualche euro da ogni singola idea.

Sviluppare con l’intelligenza artificiale

Naturalmente, nel 2026, parlare di sviluppo software senza parlare di intelligenza artificiale sarebbe piuttosto anacronistico. Tuttavia, pur facendone un uso intensivo, ho cercato di definire un mio metodo.
Non essendo un full stack classico, nella prima fase ho chiesto sia a Gemini che a ChatGPT di fornirmi le nozioni di base relative al ciclo di vita di un’app Android. Dopo aver rielaborato queste informazioni ho stampato una piccola dispensa, che ho studiato con tanto di evidenziatore e matita. Ai tempi in cui sviluppavo con altri strumenti mi limitavo essenzialmente a creare l’APK: funzionava, lo installavo e tanto mi bastava. Ma avevo un’idea piuttosto vaga di quello che succedeva realmente all’interno di Android.

La seconda fase ha visto uno sviluppo caratterizzato da un uso importante dell’IA, ma senza affidarmi in maniera intensiva ad agenti o loop automatici. Mi sono affidato principalmente a ChatGPT Plus come strumento di progettazione, analisi e confronto, mentre ho utilizzato Gemini Pro per compiti più circoscritti all’interno dell’ambiente di sviluppo. Anche l’agente integrato in Android Studio è stato usato in maniera chirurgica, solo per compiti ben delimitati.
Per tutto il tempo ho cercato di capire il codice, modificarlo, fare prove e smanettare con gli emulatori, in modo da non perdere il controllo del progetto.
Per il resto, lo sviluppo è stato suddiviso in step. Ogni step aveva un obiettivo preciso, dei test da effettuare e una condizione che stabiliva quando poteva essere considerato concluso. Quando un modello può produrre in pochi secondi decine o centinaia di righe di codice, infatti, il problema non è più soltanto generare codice velocemente, ma sapere cosa stiamo costruendo e, soprattutto, come funziona.

Evitare la black box

È molto facile chiedere a un modello di modificare vari file contemporaneamente, accettare tutto, vedere l’app partire e considerare concluso il lavoro. Ma se un cliente ci chiede una modifica molto specifica? Se emerge un bug inaspettato? Siamo sicuri che l’IA riesca sempre a cavarci le castagne dal fuoco? E soprattutto: cosa ci mette al sicuro dalla creazione di una scatola nera, composta da codice che finiamo per capire poco noi e, dopo una certa soglia di complessità, persino l’IA che ci sta aiutando?
So di cosa parlo perché durante la lavorazione l’IA stava progressivamente creando una classe gigantesca, arrivata a superare le 600 righe di codice e ormai difficile da gestire persino per lei. Attraverso la supervisione umana e introducendo la regola di mantenere, per quanto possibile, i singoli file sotto le 200 righe siamo riusciti a evitare che la situazione degenerasse.
Abbiamo inoltre fatto un uso intensivo di documenti di progetto in formato TXT e MD, insieme a GitHub, per documentare le varie fasi dello sviluppo: cosa abbiamo fatto, perché abbiamo scelto una determinata soluzione, quali problemi abbiamo incontrato e come li abbiamo risolti.
Una documentazione quasi maniacale, lo ammetto, che però mi mette al riparo proprio dalla famigerata black box: ritrovarmi tra sei mesi davanti a un progetto funzionante senza ricordare più perché certe parti siano state costruite in un determinato modo.

Il fattore umano

Dopo aver passato anni a sviluppare interfacce, siti, giochi 2d e portali ho accumulato una serie di esperienze che, anche in questo progetto, si sono rivelate utili. Se avessi lasciato completamente mano libera all’IA, probabilmente avrei ottenuto un’app più stereotipata e con qualche problemino in termini di usabilità.
Anche il mio archivio di vecchi smartphone Android (tra parentesi mia moglie dice che quando mi circondo di vecchi telefoni sembro uno spacciatore) ha avuto la sua utilità. Testare l’app su dispositivi reali mi ha permesso di individuare problemi che gli emulatori non avevano evidenziato.
In particolare, il sistema dei promemoria mi ha ricordato quanto Android possa diventare imprevedibile quando si esce dal mondo ideale dell’emulatore. Per esempio ho scoperto che gli allarmi programmati possono creare problemi dopo un riavvio del dispositivo: su alcuni modelli (come Honor), entrano in gioco sistemi particolarmente aggressivi di risparmio energetico, limitazioni all’avvio automatico e permessi nascosti da sbloccare in qualche oscuro sottomenu nelle impostazioni.
Ed è anche uno dei motivi per cui considero MemoPort un’app conclusa, ma non necessariamente immutabile. Ci sono già diverse cose che vorrei migliorare nelle versioni successive: rendere ancora più robusto il sistema dei promemoria, migliorare la protezione dell’area privata, introdurre eventualmente la funzione vocale e sperimentare qualche nuova opzione. Preferisco però aggiungerle progressivamente, continuando a verificare ogni passaggio.

Nota semiseria sulla grafica

La grafica promozionale di MemoPort è stata realizzata da me e successivamente rielaborata con Nano Banana. Nella Play Console ho anche diligentemente dichiarato l’utilizzo dell’intelligenza artificiale. Risultato? Nella pagina dei risultati del Play Store MemoPort è l’unica app della schermata con un bel bollino “AI” stampato sulla feature graphic.
Insomma, mentre tutti gli altri (la cui grafica, in alcuni casi, sprizza IA da tutti i pori) sembrano essersi “dimenticati” di dichiarare qualcosa, io ho fatto il bravo cittadino digitale e sono diventato l’unico con il bollino IA in bella vista sullo Store. Prendiamola come un’altra cosa imparata durante lo sviluppo di MemoPort.

La mia road map su Play Store

In futuro mi piacerebbe aggiungere altre utility native Android sviluppate in Kotlin, affiancandole a giochi realizzati con tecnologie più adatte al gaming. Parallelamente voglio continuare a raffinare questo metodo di lavoro basato sulla sinergia tra sviluppatore e intelligenza artificiale.
Mi rendo conto di sacrificare una parte della velocità in favore della qualità e, soprattutto, della comprensione. Ma se diventiamo tutti semplicemente prompter che attivano agenti, cosa ci distinguerà? Quale sarà la differenza tra l’improvvisato e lo sviluppatore di lungo corso?
Con queste domande filosofiche da quattro soldi chiudo l’articolo. Se invece delle mie elucubrazioni vi interessa semplicemente provare MemoPort, qui trovate il link per scaricarla.