iten

Linguaggi di programmazione

JavaScript

JavaScript (spesso abbreviato in JS) è un linguaggio leggero, interpretato, funzionale e orientato agli oggetti, conosciuto per lo più come linguaggio di script per pagine web, ma utilizzato in molti ambienti non-browser così come node.js o Apache CouchDB.

Utilizzo regolarmente JavaScript per tutti i miei progetti, sia lato client, che server. Grazie all'ecosistema NodeJS e a React Native, inoltre, sviluppo applicazioni mobile native e multi piattaforma.

TypeScript

TypeScript è un linguaggio di programmazione fortemente tipizzato che si basa su JavaScript, offrendo strumenti migliori su qualsiasi scala. TypeScript comprende JavaScript e utilizza l'inferenza del tipo per offrirti ottimi strumenti senza codice aggiuntivo.

Utilizzo TypeScript per tutti i miei progetti, sia lato frontend, che backend, in modo tale da migliorare l'integrazione con l'ambiente di sviluppo ed evitare errori runtime.

HTML

HTML (HyperText Markup Language) è il linguaggio utilizzato per creare pagine web e altri tipi di documenti visualizzabili in un browser. Insieme all'HTML vengono utilizzate altre tecnologie per modificare la presentazione/apparenza di una pagina web (CSS) o la sua funzionalità (JavaScript).

Utilizzo HTML per tutte le interfacce grafiche utente, sia web, che desktop, grazie a ElectronJS.

CSS

Il Cascading Style Sheets (CSS) è un linguaggio per fogli di stile utilizzato per descrivere la presentazione di un documento scritto in HTML o XML (inclusi vari linguaggi XML quali SVG o XHTML). Il CSS descrive come gli elementi dovrebbero apparire su schermo, su carta, nel parlato o in altri media.

Utilizzo quotidianamente CSS per gestire l'aspetto di tutti i miei progetti, grazie alla grande flessibilità offerta dal modulo flexbox.

Go Language

Go è un linguaggio di programmazione ad alto livello compilato e tipizzato staticamente, progettato da Robert Griesemer, Rob Pike e Ken Thompson presso Google. È sintatticamente simile al linguaggio C, ma dispone anche della memory safety, garbage collection, tipizzazione strutturale e concurrency in stile CSP.

Utilizzo questo linguaggio principalmente per implementare API Rest e utility a riga di comando.

Rust

Rust è estremamente veloce ed efficiente nel consumo di memoria: non ha runtime o garbage collector, può essere impiegato in servizi dove le prestazioni sono fondamentali, funziona su dispositivi embedded ed è facile da integrare con altri linguaggi di programmazione.

Utilizzo questo linguaggio per sviluppare applicazioni desktop, basate sull'ecosistema Tauri

C

C è un linguaggio di programmazione a uso generale di natura imperativa e procedurale creato da Dennis Ritchie negli anni 1970. Tutt'oggi influente, è largamente adoperato nei sistemi operativi, nei driver e nelle pile di protocolli, mentre è in diminuzione il suo uso nelle applicazioni.

Ho utilizzato questo linguaggio per sviluppare codice nativo ad alte presentazioni.

C++

C++ è un linguaggio di programmazione ad uso generale creato dall'informatico danese Bjarne Stroustrup. Pubblicato per la prima volta nel 1985 come estensione del linguaggio C, è stato nel tempo esteso notevolmente.

Ho utilizzato questo linguaggio per sviluppare codice distribuito fra diversi team di sviluppo.

C#

C# è un linguaggio orientato a oggetti elegante e indipendente dai tipi. C# consente agli sviluppatori di compilare molti tipi di applicazioni sicure e affidabili eseguite nell'ecosistema .NET.

Ho utilizzato C# per sviluppare principalmente applicazioni descktop per Windows e utilizzo questa tecnologia per supportare applicazioni in produzione.

Java

Java è una tecnologia utilizzata per lo sviluppo di applicazioni che rendono il Web più divertente e utile. Java è diverso da JavaScript in quanto quest'ultimo è una semplice tecnologia utilizzata per la creazione di pagine Web e viene eseguita solo nel browser.

Ho utilizzato Java per sviluppare progetti aziendali e applicazioni Android native.

Librerie

ReactJS

React rende la creazione di UI interattive facile e indolore. Progetta interfacce per ogni stato della tua applicazione. Ad ogni cambio di stato React aggiornerà efficientemente solamente le parti della UI che dipendono da tali dati.

Utilizzo ReactJS per costruire le interfacce grafiche di tutti i miei progetti web, desktop e mobile.

NextJS

Il framework React per il web. Utilizzato da alcune delle più grandi aziende del mondo, Next.js ti consente di creare applicazioni Web full-stack estendendo le ultime funzionalità di React e integrando potenti strumenti JavaScript basati su Rust per le build più veloci.

NextJS è il mio strumento di sviluppo principale per creare applicazioni che necessitano il server side rendering, in modo tale da ottimizzare tutti gli aspetti legati al SEO.

Tailwind Css

Tailwind CSS è un framework CSS open source. A differenza di altri framework, come Bootstrap, non fornisce una serie di classi predefinite per elementi come pulsanti o tabelle. Al contrario, crea un elenco di classi CSS di utilità che possono essere utilizzate per dai uno stile a ogni elemento mescolando e abbinando.

Utilizzo questa libreria dal 2022 per gestire lo stile di tutti i miei progettti, incluso questo sito.

Shadcn

Libreria di componenti dal design accattivante che si possono copiare e incollare: accessibili, personalizzabili e open source.

Utilizzo questa libreria per tutte le mie interfacce grafiche, questo sito incluso.

Redux toolkit

Redux aiuta a scrivere applicazioni che si comportano in modo coerente, vengono eseguite in ambienti diversi (client, server e nativi) e sono facili da testare. La centralizzazione dello stato e della logica dell'applicazione abilita potenti funzionalità come annulla/ripristina, persistenza dello stato e molto altro.

Utilizzo Redux Toolkit in tutti i miei progetti frontend, in modo tale da creare un'unica fonte dati e predire ogni possibile stato della mia applicazione.

Material UI

Material UI offre una suite completa di strumenti di interfaccia utente per aiutarti a fornire nuove funzionalità più velocemente. Inizia con Material UI, la nostra libreria di componenti completamente caricata, o porta il tuo sistema di progettazione ai nostri componenti pronti per la produzione.

Magerial UI è la libreria grafica che utilizzo per tutti i miei progetti, grazie al suo ecosistema e alla qualità dei componenti offerti.

ExpressJS

Express è un framework per applicazioni web Node.js flessibile e leggero che fornisce una serie di funzioni avanzate per le applicazioni web e per dispositivi mobili. Con una miriade di metodi di utilità HTTP e middleware a disposizione, la creazione di un'API affidabile è un processo facile e veloce.

Ho utilizzato ExpressJS in diversi progetti backend per implementare API REST in diversi contesti applicativi.

Mongoose

Mongoose fornisce una soluzione semplice e basata su schemi per modellare i dati dell'applicazione. Include casting di tipo integrato, convalida, creazione di query, hook di business logic e altro ancora, pronto all'uso.

Mongoose è il mio ODM di riferimento per poter implementatr la strategia code-first in progetti basati su MongoDB.

Sequelize

Sequelize è un moderno ORM TypeScript e Node.js per Oracle, Postgres, MySQL, MariaDB, SQLite e SQL Server e altro ancora. Dotato di solido supporto per transazioni, relazioni, caricamento desideroso e lento, replica di lettura e altro ancora.

Ho utilizzato Sequelize per modellizzare e accedere database relazionali in diversi sistemi di acquisizione dati.

Drizzle

È l'unico ORM con API di query sia relazionali che di tipo SQL, offrendoti il ​meglio di entrambi i mondi quando si tratta di accedere ai tuoi dati relazionali. Drizzle è leggero, performante, sicuro per i tipi, senza lattosio, senza glutine, sobrio, flessibile e pronto per serverless in base alla progettazione.

Utilizzo Drizzle in progetti in cui è strettamente necessario accedere a database SQL con codice efficiente e altamente ottimizzato.

Prisma

Prisma offre la migliore esperienza affinché il tuo team possa lavorare e interagire con i database. Anche cose complesse come il pooling delle connessioni, la memorizzazione nella cache e gli abbonamenti ai database in tempo reale sono un gioco da ragazzi con i nostri prodotti.

Utilizzo Prisma in progetti in cui è necessario accedere, contemporaneamente, sia a database SQL, che a database noSQL.

Skills.tool

NodeJS

NodeJS è una runtime di JavaScript Open source multipiattaforma orientato agli eventi per l'esecuzione di codice JavaScript, costruita sul motore JavaScript V8 di Google Chrome. Molti dei suoi moduli base sono scritti in JavaScript, e gli sviluppatori possono scrivere nuovi moduli in JavaScript.

NodeJS è il mio framework di riferimento sia per tutti i miei progetti backend che per quelli IoT / Industry 4.0.

Docker

Docker è un software libero che utilizza la virtualizzazione a livello di sistema operativo per eseguire applicazioni in ambienti isolati chiamati container. I container Docker sono un'estensione dei container del sistema operativo.[2] Docker supporta sia i container Linux che quelli Windows.

Utilizzo docker sia per sviluppare localmente progetti full stack, che per distribuire gli stessi.

Git

Git è un sistema di controllo della versione distribuito gratuito e open source progettato per gestire qualsiasi cosa, dai progetti piccoli a quelli molto grandi con velocità ed efficienza.

Ogni singola linea di codice da me scritta a partire dal 2018 è gestita tramite Git.

Github

GitHub è un servizio di hosting Internet per lo sviluppo di software e il controllo della versione tramite Git. Fornisce il controllo della versione distribuita di Git più il controllo degli accessi, il monitoraggio dei bug, le richieste di funzionalità software, la gestione delle attività, l'integrazione continua e i wiki per ogni progetto.

Tutto il codice da me scritto a partire dal 2018 in poi è archiviato su Github

Postman

Postman è una piattaforma API per la creazione e l'utilizzo di API. Postman semplifica ogni fase del ciclo di vita dell'API e semplifica la collaborazione in modo da poter creare API migliori, più velocemente.

Ogni singola Api che ho scritto dal 2018 è stata testata con questo strumento.

Azure Data Studio

Azure Data Studio, progettato in modo specifico per le funzionalità usate più spesso dagli sviluppatori di piattaforme dati, offre esperienze aggiuntive disponibili come estensioni facoltative. È stato creato per professionisti dei dati che usano database di SQL Server e Azure in locale o in ambienti multi-cloud.

Utilizzo Azure Data Studio per gestire progetti basati su database SQL.

SQL Management Studio

SQL Server Management Studio (SSMS) è un ambiente integrato per la gestione di qualsiasi infrastruttura SQL, da SQL Server al database SQL di Azure. SSMS fornisce strumenti per configurare, monitorare e amministrare istanze di SQL Server e database. Usa SSMS per distribuire, monitorare e aggiornare i componenti del livello dati usati dalle tue applicazioni e creare query e script.

Uso questo strumento per lavorare con i progetti basati su server Microsost SQL.

Ambienti di sviluppo

Visual Studio Code

Visual Studio Code è un editor di codice sorgente sviluppato da Microsoft per Windows, Linux e macOS. Include il supporto per debugging, un controllo per Git integrato, Syntax highlighting, IntelliSense, Snippet e refactoring del codice. Sono personalizzabili il tema dell'editor, le scorciatoie da tastiera e le preferenze.

Visual Studio Code è il mio strumento principale per pratiamente ogni ambito, dalla programmazione alla gestione di container Docker. Di gran lunga il miglior strumento che abbia mai avuto il piacere di utilizzare.

Visual Studio

Microsoft Visual Studio è un ambiente di sviluppo integrato sviluppato da Microsoft. Visual Studio è multilinguaggio e attualmente supporta la creazione di progetti per varie piattaforme, tra cui anche Mobile e Console.

Utilizzo Visual Studio per gestire applicazioni in produzione, basate ancora su ambiente .Net.

Eclipse

Eclipse è un ambiente di sviluppo integrato multi-linguaggio e multipiattaforma. Ideato da un consorzio di grandi società quali Ericsson, HP, IBM, Intel, MontaVista Software, QNX, SAP e Serena Software, chiamato Eclipse Foundation.

Ho utilizzato Eclipse per sviluppare applicazioni Java enterprise e progetti di Business Intelligence.

Netbeans

NetBeans è un ambiente di sviluppo integrato multi-linguaggio, nato nel giugno 2000 e scritto interamente in Java, scelto dalla Oracle Corporation come IDE ufficiale.

Ho utilizzato Eclipse per sviluppare applicazioni Java enterprise e progetti di Business Intelligence.

Android Studio

Android Studio è un ambiente di sviluppo integrato per lo sviluppo per la piattaforma Android. È stato annunciato il 16 maggio 2013 in occasione della conferenza Google I/O tenuta dal Product Manager Google, Katherine Chou.

Ho utilizzato Android Studio per sviluppare applicazioni native Android.

Database

MongoDB

MongoDB è un DBMS non relazionale, orientato ai documenti. Classificato come un database di tipo NoSQL, MongoDB si allontana dalla struttura tradizionale basata su tabelle dei database relazionali in favore di documenti in stile JSON con schema dinamico.

Utilizzo Mongo DB per tutti i miei progetti, grazie alla sua strategia a schema libero e al supporto nativo per JavaScript.

SQL Server

Microsoft SQL Server è un DBMS relazionale, prodotto da Microsoft. Nelle prime versioni era utilizzato per basi dati medio-piccole, ma a partire dalla versione 2000 è stato utilizzato anche per la gestione di basi dati di grandi dimensioni.

Utilizzo frequentemente SQL server in progetti di integrazine / scambio dati e Industry 4.0.

Oracle

Oracle Database è uno tra i più famosi software di database management system sviluppato da Oracle Corporation. Scritto in linguaggio C, che fa parte dei cosiddetti RDBMS ovvero di sistemi di database basati sul modello relazionale affermatosi come standard

Ho utilizzato questo database principalmente per sviluppare software EPR basato su linguaggio PL/SQL.

MySQL

MySQL Database Service è un servizio di database completamente gestito per distribuire applicazioni native del cloud utilizzando il database open source più diffuso al mondo. È sviluppato, gestito e supportato al 100% dal Team MySQL.

Ho utilizzato questo database in diversi progetti. principalmente su server Linux.

PostgreSQL

PostgreSQL +è un completo DBMS ad oggetti rilasciato con licenza libera. Spesso abbreviato Postgres, sebbene questo sia un nome vecchio dello stesso progetto, è una reale alternativa sia rispetto ad altri prodotti liberi come MySQL.

Ho utilizzato PostgreSQL come valida alternativa a database Oracle, grazie alla sua compatibilità con il linguaggio PL/SQL.

Sistemi operativi

Debian

Debian è un sistema operativo multipiattaforma che supporta varie architetture di computer, composto interamente da software libero. La sua forma più diffusa è 'Debian GNU/Linux', così denominata perché utilizza al suo interno programmi di utilità provenienti dal sistema operativo GNU e utilizzando Linux come kernel

Ho utilizzato Debian principalmente come server web, FTP e progetti storage. Per anni ho utilizzato questa distribuzione anche sui mie pc personali.

Ubuntu

Ubuntu è un termine africano col quale è stato chiamato il sistema operativo nato nel 2004 e basato su Linux, più precisamente sul ramo unstable di Debian. Ubuntu è prevalentemente composto da software libero, distribuito liberamente con licenza GNU GPL, ma supporta anche software proprietario.

Utilizzato Ubuntu come server su cui pubblicarre tutti i miei progetti in produzione: questo sito stesso è gestito tramite un server Ubuntu 20.04 LTS.

RedHat

Red Hat® Enterprise Linux® è la piattaforma Linux di livello enterprise leader di settore*. È un sistema operativo open source (OS). Si tratta della base da cui partire per rendere le app esistenti scalabili e distribuire le tecnologie emergenti su software bare metal, virtuali, container e tutte le tipologie di ambienti cloud.

Ho utilizzato questo sistema operativo come valida alternativa a Oracle Linux, per osptare istanze database Oracle.

MacOS

MacOS è il sistema operativo sviluppato da Apple per i computer Macintosh. È nato nel 2001 per combinare le note caratteristiche dell'interfaccia utente dell'originario Mac OS Classic con l'architettura di un sistema operativo di derivazione UNIX della famiglia BSD.

Utilizzo questo sistema operativo quotidianamente per sviluppare tutti i miei progetti.

Windows Server

Windows Server è il marchio di una famiglia di sistemi operativi per sistemi server realizzati da Microsoft Corporation. Il suo utilizzo è tipico di reti informatiche di qualsiasi numero di host per la centralizzazione di diverse funzioni di networking ad uso Internet ed intranet, come web server, posta elettronica, dhcp, dns...

Utilizzo questo sistema operativo principalmente come primary domain controller e per ospitare istanze Sql Sever.

AS/400

Il sistema AS/400 (Application System/400) è stato un minicomputer sviluppato dall'IBM per usi prevalentemente aziendali, come supporto del sistema informativo gestionale. Nasce nel giugno 1988 come successore del system/38 e dopo oltre 30 anni è ancora in produzione; il nome commerciale è stato cambiato in iSeries nel 2000, in System i nel 2004 mentre oggi si chiama semplicemente I.

Ho utilizzato questo sistema operativo per ospitare istanze database DB/2 e diversi ERP aziendali.