Informazioni sul servizio
TradottoSono uno sviluppatore Clojure e creo servizi backend funzionali e applicazioni di elaborazione dati che girano sulla JVM. Al centro del mio lavoro ci sono strutture dati immutabili, funzioni pure e uno stile compositivo in cui un programma è costruito da piccoli pezzi chiaramente nominati su cui puoi effettivamente ragionare. Poiché Clojure è un Lisp, il mio strumento principale è il REPL: sviluppo un programma in modo interattivo, valuto espressioni direttamente su dati live e affino il design man mano che procedo, piuttosto che indovinare tutto in anticipo e fare debug in seguito. È una disciplina distinta, a differenza del lavoro con Java, Scala o Elixir, e lo affronto come un mestiere a sé stante, non come Java con le parentesi.
Per il multithreading utilizzo onestamente gli strumenti che il linguaggio offre: atomi, riferimenti, agenti e canali core.async — per compito, non per moda. Ho costruito servizi REST e HTTP streaming su Ring e reitit, descritto dati tramite spec e Malli, lavorato con Postgres tramite next.jdbc e HoneySQL, elaborato grandi volumi con trasduttori e sequenze pigre in modo che la memoria rimanga piatta. Mi interessa una integrazione attenta con l'ecosistema JVM circostante, una gestione degli errori sensata e deploy noiosi-in-un-buon-modo. Se il codice è diventato uno stato ingarbugliato, lo riporto a un nucleo pulito e a bordi sottili con effetti.
Se hai un servizio che deve essere corretto sotto carico, una pipeline di dati che deve rimanere manutenibile, o un progetto Clojure bloccato a metà strada, lo prenderò in carico e lo porterò avanti. Scrivo test che correggono il comportamento, documentano punti complessi e lasciano un processo REPL sano affinché la prossima persona sia produttiva fin dal primo giorno.
— Servizi backend in Clojure e ClojureScript per JVM
— API REST e streaming su Ring, reitit e core.async
— Modellazione e validazione dei dati tramite clojure.spec e Malli
— Lavorare con Postgres tramite next.jdbc, HoneySQL e pooling delle connessioni
— Multithreading con atomi, riferimenti, agenti e canali
— Trasduttori, sequenze pigre, elaborazione di grandi volumi
— Sviluppo guidato da REPL, test e refactoring a funzioni pure
Per il multithreading utilizzo onestamente gli strumenti che il linguaggio offre: atomi, riferimenti, agenti e canali core.async — per compito, non per moda. Ho costruito servizi REST e HTTP streaming su Ring e reitit, descritto dati tramite spec e Malli, lavorato con Postgres tramite next.jdbc e HoneySQL, elaborato grandi volumi con trasduttori e sequenze pigre in modo che la memoria rimanga piatta. Mi interessa una integrazione attenta con l'ecosistema JVM circostante, una gestione degli errori sensata e deploy noiosi-in-un-buon-modo. Se il codice è diventato uno stato ingarbugliato, lo riporto a un nucleo pulito e a bordi sottili con effetti.
Se hai un servizio che deve essere corretto sotto carico, una pipeline di dati che deve rimanere manutenibile, o un progetto Clojure bloccato a metà strada, lo prenderò in carico e lo porterò avanti. Scrivo test che correggono il comportamento, documentano punti complessi e lasciano un processo REPL sano affinché la prossima persona sia produttiva fin dal primo giorno.
— Servizi backend in Clojure e ClojureScript per JVM
— API REST e streaming su Ring, reitit e core.async
— Modellazione e validazione dei dati tramite clojure.spec e Malli
— Lavorare con Postgres tramite next.jdbc, HoneySQL e pooling delle connessioni
— Multithreading con atomi, riferimenti, agenti e canali
— Trasduttori, sequenze pigre, elaborazione di grandi volumi
— Sviluppo guidato da REPL, test e refactoring a funzioni pure