Intelligenza artificiale
01Modelli linguistici dentro i processi aziendali: assistenti che rispondono sui documenti interni, estrazione dati da PDF ed email, classificazione e smistamento automatico delle richieste.
Disponibile per nuovi progetti
Progetto e realizzo siti, portali, gestionali su misura e automazioni che parlano con i sistemi che usate gia'. Dall'analisi del processo al rilascio, con codice che resta leggibile anche fra due anni.
01Competenze
Lavoro sull'intero ciclo: analisi del processo, architettura, sviluppo, rilascio e manutenzione. Un progetto tipico ne tocca tre o quattro insieme.
Modelli linguistici dentro i processi aziendali: assistenti che rispondono sui documenti interni, estrazione dati da PDF ed email, classificazione e smistamento automatico delle richieste.
Siti vetrina, landing page e siti istituzionali. Attenzione reale a velocita' di caricamento, SEO tecnica e accessibilita': un sito lento o non indicizzato e' un sito che non lavora.
Aree clienti, portali fornitori, intranet. Autenticazione, ruoli e permessi granulari, multi-tenant, tracciamento delle operazioni e gestione autonoma dei contenuti.
Quando il software pronto non si adatta al modo in cui lavorate davvero. Anagrafiche, magazzino, ordini, fatturazione, flussi di approvazione e reportistica, costruiti sul processo esistente.
Cataloghi con varianti e listini differenziati, pagamenti, spedizioni e — soprattutto — il collegamento con il gestionale, cosi' che giacenze e ordini non si riscrivano a mano due volte.
Far parlare fra loro sistemi nati separati. API, webhook, importazioni programmate, sincronizzazioni notturne e tutte quelle operazioni ripetitive che oggi qualcuno fa a mano.
Modellazione dei dati, indicatori che contano davvero e cruscotti che si leggono in dieci secondi. Con esportazioni e report programmati per chi preferisce ancora il foglio di calcolo.
Ambienti di test e produzione separati, deploy automatizzato, container, backup verificati e monitoraggio. La parte che non si vede, ma che decide se si dorme la notte dopo una messa online.
02Stack
Scelgo la tecnologia in base al problema, non il contrario. Questo e' il terreno su cui mi muovo piu' velocemente.
Linguaggi
Frontend
Backend
Dati
Intelligenza artificiale
Infrastruttura
03Metodo
Preferisco poche fasi chiare e qualcosa di navigabile presto, invece di un preventivo lungo e tre mesi di silenzio.
Guardiamo il processo prima del codice: cosa fa oggi il vostro team, dove si perde tempo, cosa vale davvero la pena automatizzare.
Una versione navigabile in poche settimane, cosi' le decisioni si prendono su qualcosa di reale e non su una descrizione.
Iterazioni brevi, ambiente di test sempre allineato e aggiornamenti frequenti. Vedete crescere il lavoro mentre procede.
Messa online, formazione di chi lo usera', monitoraggio e manutenzione. Il progetto non finisce il giorno della consegna.
04Lavori
Problema, scelte tecniche e risultato misurato. Qui ci sono i due più recenti; gli altri quattro — questo sito, la ricerca sul GDPR, le fatture elettroniche e il configuratore — stanno nella pagina dei progetti.
Un cruscotto che riceve totali già calcolati sa rispondere soltanto alle domande che chi ha preparato i dati aveva previsto. Alla prima domanda diversa servono una modifica, un rilascio e una settimana.
Il browser riceve il dettaglio comunale — 7.896 righe — e aggrega al volo. Cambiare livello, indicatore o filtro non è una richiesta a un server: è un ciclo su un array.
La mappa pesa 99 KB perché è TopoJSON: coordinate quantizzate, punti memorizzati per differenza e confini condivisi fra regioni confinanti invece che duplicati. Lo stesso disegno in GeoJSON ne pesa 2.700.
Cinquantuno controlli che riconciliano i totali da ogni strada e li mettono contro fatti che non vengono dai dati. Alla prima esecuzione la popolazione italiana risultava di 118 milioni: il file ISTAT ha una riga di totale per comune, e sommandola col dettaglio si conta tutto due volte.
Il rapporto di contrasto è un numero solo, e da solo non decide niente: la stessa coppia di colori passa a 24 px e non passa a 16. Gli strumenti che si trovano mostrano il numero con due spunte fisse accanto, e la domanda vera resta senza risposta — da che corpo in su questo colore va bene?
La soglia si muove col corpo e col peso, perché è così che è scritta la norma. Il trasparente si compone prima di essere misurato: rgba(0,0,0,.5) sul bianco è #808080 e vale 3,95:1, non 21:1 — uno strumento che ignora l’alfa dà un numero che su nessuno schermo esiste.
E quando non passa, dice quale colore mettere. La correzione si muove solo in luminosità dentro OKLCh, così la tinta resta dov’era e un rosso corretto resta rosso invece di diventare rosa. A volte però la risposta giusta è che il fondo è sbagliato: su un grigio medio non esiste nessun colore di testo che arrivi a 7:1, e dirlo vale più che proporre un colore che non risolve.
Il lavoro vero comunque non è una coppia, è un tema intero, dove le coppie sono n×n: si incolla il blocco delle variabili di un foglio di stile ed escono tutte insieme.
Centottantuno controlli, di cui otto su numeri pubblicati da altri che non ho calcolato io da nessuna parte. Le attese sono ricalcolate da una seconda implementazione scritta in Python leggendo la specifica, non dal motore che devono provare. E il tema della pagina passa il proprio strumento contro AAA, non AA: la verifica rilegge il foglio di stile dal disco, quindi un colore cambiato senza guardare il contrasto fa cadere la prova.
Misurando la pagina resa, e non i soli colori dichiarati, ha trovato un difetto suo: nella diagonale della matrice un trattino grigio a 12 px stava a 4,05:1. Era decorazione travestita da testo, ed è diventata un tratteggio.
Ci sono altri quattro progetti: questo sito, la ricerca per citazione sul GDPR, le fatture elettroniche XML e il configuratore di serramenti. Stessa struttura — problema, scelte tecniche, numeri misurati.
Tutti i progettiPrendo un progetto per volta, e il portfolio e' appena partito. Se il vostro e' il prossimo avete la mia attenzione piena, senza dividerla con nessun altro — e in cambio chiedo solo di poterlo raccontare qui, con i numeri veri.
05Profilo
17Labs — una persona sola
17Labs e' il nome con cui lavoro, ma dietro non c'e' una squadra: ci sono io. Lo scrivo subito perche' e' la prima cosa che vorrei sapere se fossi dall'altra parte.
Scrivo codice da quando ho sedici anni. E' iniziata come la cosa che facevo invece di studiare, e non ho piu' smesso: quello che allora era smanettare adesso e' il mestiere, ma la parte che mi diverte e' rimasta identica — capire come funziona una cosa, e poi rifarla meglio.
Fuori dallo schermo sono un appassionato di giochi di carte: Magic: The Gathering e One Piece. C'entra piu' di quanto sembri — sono sistemi di regole che interagiscono fra loro, e diventare bravi vuol dire leggere quelle interazioni prima degli altri, tenendo a mente tutto quello che l'avversario potrebbe avere in mano. E' esattamente quello che serve quando si entra nel processo di un'azienda e si deve capire dove si inceppa.
Di mestiere sviluppo software per una grande azienda, e continuo a farlo. 17Labs e' il nome con cui prendo progetti miei, scegliendoli: non e' una seconda attivita' da riempire, e' lo spazio per i lavori su cui ho voglia di mettermi.
Il che vuol dire una cosa concreta per voi: prendo un progetto per volta e ci sono dentro completamente. Niente code, niente clienti che si contendono le stesse ore.
06Domande frequenti
Scrivo codice da quando ho sedici anni e lo faccio di mestiere: sviluppo software per una grande azienda, a tempo pieno.
17Labs e' il nome con cui prendo progetti miei, ed e' partita da poco. Quindi qui sopra trovate lavoro personale documentato, non un elenco di clienti: e' una scelta, non un vuoto da riempire con nomi presi in prestito.
Dipende davvero dal progetto, e vi risparmio il listino finto: un sito vetrina e un gestionale che tocca cinque reparti non hanno niente in comune ne' come prezzo ne' come tempi.
Il modo piu' veloce per saperlo e' una chiamata. Faccio qualche domanda su cosa succede oggi nel vostro processo e do una stima onesta — se il lavoro non ha senso lo dico, invece di vendervi qualcosa.
Uno. Quando prendo un lavoro ci sono dentro completamente, senza code e senza dividermi fra clienti che si contendono le stesse ore.
E' il vantaggio concreto di essere una persona sola invece di uno studio: non siete mai il progetto che aspetta.
La consegna include un periodo di assistenza. E' volutamente breve — indicativamente un mese — perche' serve a coprire le cose che saltano fuori solo quando il software entra davvero in uso: una correzione, un dettaglio da sistemare, una domanda di chi lo usa tutti i giorni.
Se poi volete continuare, si estende. Ma preferisco che sia una scelta vostra a consegna avvenuta, non una firma messa prima di aver visto come va.
Si', ovunque. Lavoro da remoto senza limiti geografici: quello che serve e' una videochiamata ogni tanto e un canale scritto dove trovarmi.
Il codice del progetto e' vostro. Quello che scrivo per voi — la logica del vostro processo, il modello dei dati, le interfacce — ve lo consegno con accesso completo al repository, e resta vostro. Se un domani volete cambiare fornitore o portarvi il lavoro dentro casa, non dovete chiedermi il permesso.
Un'eccezione c'e', ed e' giusto dirla subito: le librerie e i componenti generici che mi porto dietro da un progetto all'altro restano miei, e voi ne ricevete una licenza d'uso illimitata e perpetua dentro il vostro progetto. Non serve a legarvi — serve a non farmi ripartire da zero ogni volta, e quindi a far costare meno il lavoro.
Mi tengo solo il diritto di citare il progetto nel portfolio. Se preferite di no, basta dirlo.
Dipende, e va guardato prima di promettere qualcosa. Mandatemi il codice e raccontatemi dove vi siete fermati: faccio una valutazione di quanto e' recuperabile, cosa conviene riscrivere e se ha senso proseguire o ripartire.
La valutazione la do comunque, anche se poi decidiamo di non lavorare insieme. Meglio una risposta chiara che un preventivo su qualcosa che non ho ancora visto.
07Contatti
Anche solo un'idea confusa va benissimo: spesso la prima mezz'ora serve a capire se il problema e' davvero quello che sembra. Rispondo entro un giorno lavorativo.