Istruzione
- Diploma di Liceo Linguistico IIS M.Montessori - E. Repetti, Carrara
- Laurea in Informatica, Pisa
- Laurea magistrale in M.Sc. Cybersecurity, Pisa
Servizi
Nel corso degli anni universitari ho affinato diverse tecniche di programmazione che mi hanno portato ad
avere una buona padronanza di diversi linguaggi di programmazione.
In particolar modo mi sono specializzato nella relizzazione di applicazioni mobili, motivo per cui sono
disponibile per l'ideazione, progettazione e sviluppo di queste.
Ho anche le capacità per realizzare applicazioni web, programmi desktop e siti web.
I miei progetti
Il codice sorgente di molti applicativi da me sviluppati è disponibile sulla mia pagina github:
github.com/fedehsq
Di seguito illustro alcuni dei miei progetti.
Tesi
Implementation of a controlled access system
using Bastion Host and Vault
(magistrale)
[Go, Shell, HCL]
La crescente automazione nei processi IT e l'evoluzione dei processi del ciclo di vita del software in
ottica DevOps, hanno comportato una sempre minor necessità di effettuare l'accesso diretto ai sistemi
informatici: tipicamente l'accesso avviene al fine di eseguire operazioni critiche e di manutenzione
straordinario.
L'accesso a tali sistemi pertanto dovrebbe essere il più possibile limitato e soggetto ad
un rigoroso monitoraggio degli accessi effettuati. A tale scopo risulta utile definire un punto unico di
accesso su cui concentrare le verifiche di sicurezza: un sistema di questo tipo viene definito
tipicamente come bastion host.
Altro punto critico nell'accesso ai sistemi è la protezione delle chiavi
di accesso: queste in ambito enterprise sono gestite nella maniera più disparata, a volte senza alcun
uso di misure protettive, altre con sistemi sempre più sofisticati come vault o HSM.
Scopo del progetto di tesi è l'implementazione di un sistema basato su
bastion host, che mediante
l'implementazione di un workflow autorizzativo, permetta di garantire o negare l'accesso a sistemi
remoti mediante l'uso automatico di chiavi recuperate da un vault da parte di un bastion host.
HaloFarms_App (triennale)
[Android, Java]
HaloFarMs è un progetto internazionale che coinvolge
diversi paesi dell'area del Mediterraneo.
Mira a
contribuire in modo significativo all’ottimizzazione di sistemi agricoli e sistemi produttivi innovativi
e sostenibili nella regione del Mediterraneo.
Gli obbiettivi di HaloFarMs saranno raggiunti sviluppando innovazioni a diversi livelli, una di queste
innovazioni è l'app da me ideata e sviluppata durante il tirocinio presso il Dipartimento di Informatica
dell'Università di Pisa in collaborazione con quello di Agraria.
L'obbiettivo è stato quello di creare un'applicazione Android che assista il coltivatore durante la
coltivazione; le specifiche sono state le seguenti.
Nell'ambito di un progetto in corso di svolgimento presso il Dipartimento
di Agraria si sta studiando come utilizzare piante alofite (che abbassano il contenuto di sale nel
terreno) per consentire le coltivazioni orticole anche in terreni salini. L'idea è di studiare possibili
abbinamenti di alofite e altre piante che rendano la coltivazione possibile. Per fare questo è
necessario partire da una misurazione del livello di salinità del terreno che consenta di valutare quale
strategia di utilizzo delle piante alofite possa essere più efficace.
Per supportare l'agricoltore in queste misurazioni e durante la coltivazione, l'idea è stata quella di
realizzare una app Android che consenta di:
- Identificare il perimetro dell'area da coltivare, utilizzando il GPS.
- Determinare i punti in cui effettuare campionamenti di terreno per testarne la salinità
(assistendo anche il coltivatore nell'etichettatura dei campioni).
- Sulla base dei risultati delle analisi di salinità, mostrare una heat map del terreno per
suggerire la metodologia di coltivazione più adatta per ogni area.
- Mantenere uno storico dei risultati delle analisi di salinità in un database online.
Di seguito una demo dell'applicazione:
Applicazioni mobili
Libretto UniPi
L'idea è quella di offrire un'applicazione semplice ed intuitiva che permetta ad uno studente UniPi di
tenere sotto controllo efficientemente le
principali informazioni della sua carriera universitaria.
In particolare si avrà accesso a:
- Informazioni personali
- Libretto universitario
- Appelli
- Statistiche
- Tasse
- Orario delle lezioni, personalizzabile
WhatsApp_clone
[Flutter, Dart, JavaScript, Node.js]
Una replica di WhatsApp che ne emula le principali funzionalità.
Il client è stato implementato utilizzando Flutter.
Il server è stato implementato utilizzando Node.js.
openai_chatbot
[Flutter, Dart]
Questa app mobile, costruita con Flutter, utilizza la potenza delle API di completamento del testo e
DALL-E di OpenAI per offrire agli utenti un'esperienza di chatbot all'avanguardia.
L'obiettivo dell'app è di fornire un'interfaccia user-friendly per consentire agli utenti di interagire
con tecnologie avanzate di intelligenza artificiale e di esplorare le capacità dei potenti modelli di
intelligenza artificiale di OpenAI.
Che tu stia cercando di fare una chiacchierata informale o di ottenere informazioni su un argomento
specifico, questa app è lo strumento perfetto per il lavoro.
Vivi il futuro della comunicazione alimentata dall'IA con questa app.
Criptovalute
btc-analysis
[Jupyter Notebook]
Analisi delle transazioni di
Bitcoin partendo dal primo blocco fino a quello di altezza 100,001,
minato
in data 29-12-2010.
Due esempi di analisi:
- Controllare se tutte le transazioni sono valide, descrivendo eventuali problemi e rimuovendole
dal dataset.
- Calcolare l'importo totale di UTXO (output di transazione non spesi)
esistente a partire dall'ultimo blocco del dataset.
nft-lottery
[Solidity]
L'obiettivo del progetto è implementare TRY, una lotteria che offre agli utenti oggetti da collezione
come premi.
Le regole della lotteria sono ispirate al Powerball, un tipo popolare di lotteria giocata negli Stati
Uniti.
La logica della lotteria deve essere implementata con uno smart contract in Solidity sulla blockchain di
Ethereum.
Prima di aprire la lotteria, il gestore della lotteria acquista un lotto di oggetti da collezione e
conia un
Non Fungible Token (NFT) per ciascuno di essi.
Il vincitore di ogni lotteria può ricevere in premio uno o più di questi oggetti da collezione.
nft-lottery-dapp
[Python, HTML, CSS, JavaScript]
dApp (decentralised application) per la Lotteria NFT.
La Dapp fornisce diverse interfacce, una per il gestore e una per gli utenti della
lotteria.
Web
message_in_a_bottle
[Python, HTML, CSS, JavaScript]
Applicazione web realizzata con il framework
Flask come un'architettura a microservizi e configurata tramite
Docker.
Lo scopo dell'applicazione è quello di fornire una piattaforma per l'invio di messaggi in una specifica
data, con l'impossibilità di cancellare la schedulazione.
fedehsq.github.io
[HTML, CSS, JavaScript]
Dove ti trovi adesso, il mio primo sito web.
timetable
[Flutter, Dart]
Sei uno studente?
Questa web app potrebbe
aiutarti a gestire gli orari delle tue lezioni.
Applicazioni desktop
openssl_chatty
[C++]
Il progetto consiste nell’implementazione di una applicazione client-server multithread che realizzi un
servizio di messagistica istantanea.
La peculiarità dell'applicazione è che tutte le comunicazioni tra client e server, e tra i vari peer,
sono crittografate.
Le funzionalità crittografiche sono state realizzate utilizzando la libreria
OpenSSL.
WordQuizzle
[Java]
Il progetto consiste nell’implementazione di un sistema di sfide di traduzione italiano-inglese tra
utenti registrati al servizio.
Gli utenti registrati possono sfidare i propri amici ad una gara il cui scopo è quello di tradurre in
inglese il maggiore numero di parole italiane proposte dal servizio.
Il sistema consente inoltre la gestione di una rete sociale tra gli utenti iscritti. L’applicazione è
implementata secondo una architettura client server.
ObjectStore
[C]
Il progetto consiste nel realizzare un object store implementato come sistema client-server, e destinato
a supportare le richieste di memorizzare e recuperare blocchi di dati da parte di un gran numero di
applicazioni.
La connessione fra clienti e object store avviene attraverso socket su dominio locale. In particolare,
sarà necessario implementare:
- La parte server (object store) come eseguibile autonomo.
- Una libreria destinata a essere incorporata nei client che si interfacci con l'object store
usando il protocollo definito nelle specifiche.
- Un client di esempio che usi la libreria per testare il funzionamento del sistema.