All blogs / Software / engineering practice
Michele Nasti
A developer blog by Michele Nasti.
Software / engineering practicePythonJavaScript / TypeScriptDevOps / SRE / infrastructureEssays / personal
- Posts
- 357 from 7 Jan 2015 to 26 Oct 2026
- Posting
- monthly (8 in the last year)
- Kind
- personal blog
- Feed
- https://michelenasti.com/feed.xml
2026 7
- Interviewing for a CTV Product Manager role: what I asked as an engineer
- Leaving Logseq for Obsidian: what I lost, what I gained
- next project: detect moisture for automatic irrigation
- Another pet project: "da quando non piove"
- NGINX proxy manager, docker, and more
- hash() function in Python may not return the same value for the same input
- Vibe Coding: lessons learned
2025 7
- Hobby project: Quando scade, an app to avoid food expiration
- Logical assignments in Javascript
- You may really be an imposter
- A dive into the world of Video Ads
- Why prehistory is fascinating me so much
- Fixing python imports, formatting and tooling in VSCode
- AI is already taking our jobs: programmers are the first
2024 10
- Neural Networks and the derivatives
- Jenkins, Docker, npm and a weird repo merge
- Jenkins, Docker, npm and a weird repo merge
- A class that behaves like an Object and like a Dict in Python
- I'm back, Advertising Industry!
- Installing latest ruby with asdf on MacOS with M2 chip
- What I got so far about monorepos
- The esiest VPN you can create is with Tailscale
- Stress your server with WRK
- No-code development with Appsmith
2023 4
2022 12
- How Wine Works
- No, i programmatori non sono hacker pazzoidi asociali strambi
- How to do the important things that you keep postponing
- Recover gitlab repositories from an hacked machine
- Install Samsung ML-2165w printer on newest Macs
- Lo ha fatto Elon, e ora lo faccio anch'io
- How DNS works? A refresh of the DNS algorithm and architecture.
- Some tricks for 11ty that I learned along the way
- This blog, revamped
- Going to rebuild this blog with 11ty
- Number one quality for remote working
- Evaluating frontend frameworks and not choosing any
2021 13
- A better Git Log
- Move your photos from Google Photos to Synology without losing your mind
- Remotalypse NOW: non tutti vogliono tornare in ufficio
- 1:1 Meetings
- Want to play songs in your web app? Say no more with JS Headless Playlist Player
- Clickhouse: a Database for your next Big Data project
- Clickhouse: a Database for your next Big Data project
- "A quest'ora avresti dovuto essere cieco" - intervista a uno sviluppatore che sta perdendo la vista
- "A quest'ora avresti dovuto essere cieco" - intervista a uno sviluppatore che sta perdendo la vista
- How to integrate a django-select2 component in Django Admin
- How to integrate a django-select2 component in Django Admin
- "You should have been blind by now" - An interview with a developer who is losing his sight
- "You should have been blind by now" - An interview with a developer who is losing his sight
2020 24
- A gently intro to MVC Frameworks
- A gently intro to MVC Frameworks
- [BOOK] What If?: Serious Scientific Answers to Absurd Hypothetical Questions
- [BOOK] What If?: Serious Scientific Answers to Absurd Hypothetical Questions
- How to read and write from STDIN and STDOUT in GO
- How to read and write from STDIN and STDOUT in GO
- What is a WAV file?
- What is a WAV file?
- My first Visual Studio Code Extension, create-link-to-git-server
- My first Visual Studio Code Extension, create-link-to-git-server
- Sarò controcorrente, ma a me piaceva andare in ufficio
- Sarò controcorrente, ma a me piaceva andare in ufficio
- Serve HTTPS requests with Express and NodeJS
- Serve HTTPS requests with Express and NodeJS
- How Coronavirus affected my life
- How Coronavirus affected my life
- I wish I had a programmers' quarantine
- I wish I had a programmers' quarantine
- Chaotic systems
- Chaotic systems
- Microsoft Surface GO: more than a tablet
- Microsoft Surface GO: more than a tablet
- a review of the book The Phoenix Project
- a review of the book The Phoenix Project
2019 30
- Pair Programming vs Pull Requests
- Pair Programming vs Pull Requests
- Thinking of customers like a CEO: lessons learned along the way
- Thinking of customers like a CEO: lessons learned along the way
- Tips & Tricks from my linux experience
- Tips & Tricks from my linux experience
- How internet ads work
- How internet ads work
- Jest and Puppeteer from the barricades
- Jest and Puppeteer from the barricades
- What is the difference between var, let and const in Javascript
- What is the difference between var, let and const in Javascript
- Detect network issues from your pc to a remote url
- Detect network issues from your pc to a remote url
- Typescript, Babel, Webpack, ESLint: my configuration
- Typescript, Babel, Webpack, ESLint: my configuration
- Typescript: why so complicated?! (A list of my preferred options)
- Typescript: why so complicated?! (A list of my preferred options)
- I work remote, I do two video meetings per day
- I work remote, I do two video meetings per day
- SSH cheatsheet (from zero to hero)
- SSH cheatsheet (from zero to hero)
- What's the difference between Browserify and Webpack?
- What's the difference between Browserify and Webpack?
- How ads are loaded so fast: the command queue pattern
- How ads are loaded so fast: the command queue pattern
- Is typescript Namespace feature deprecated?
- Is typescript Namespace feature deprecated?
- Another remote job for me
- Another remote job for me
2018 60
- 10 years around the web platform, what's changed and what's not
- 10 years around the web platform, what's changed and what's not
- What I learned by writing my first npm module
- What I learned by writing my first npm module
- Inspiring tech people to follow: Nicholas C. Zakas
- Inspiring tech people to follow: Nicholas C. Zakas
- The easiest way to understand Javascript Generators
- The easiest way to understand Javascript Generators
- Docker cheatsheet
- Docker cheatsheet
- Dovrei imparare Ruby on Rails o NodeJS ?
- Dovrei imparare Ruby on Rails o NodeJS ?
- Let's write our simple version of the require() function
- Let's write our simple version of the require() function
- Javascript: call functions without using parentheses (what?!)
- Javascript: call functions without using parentheses (what?!)
- Symbols & Iterators in Javascript
- Symbols & Iterators in Javascript
- Things you may not know about Object Oriented Javascript (Es6)
- Things you may not know about Object Oriented Javascript (Es6)
- "ma... cosa intendete per testing?" - una breve introduzione al testing software
- "ma... cosa intendete per testing?" - una breve introduzione al testing software
- Handling configuration for multiple environments in NodeJS
- Handling configuration for multiple environments in NodeJS
- Designing the documentation for a tech product
- Designing the documentation for a tech product
- Come creare luoghi di lavoro in cui é bello recarsi
- Come creare luoghi di lavoro in cui é bello recarsi
- Get the list of files blocked by a process in Linux
- Get the list of files blocked by a process in Linux
- [libri] Sei proprio il mio typo: la vita segreta dei caratteri tipografici
- [libri] Sei proprio il mio typo: la vita segreta dei caratteri tipografici
- Proteggi le tue applicazioni Express con HelmetJs
- Proteggi le tue applicazioni Express con HelmetJs
- Cambia la tua vita lavorativa! (partecipando a uno Startup Weekend)
- Cambia la tua vita lavorativa! (partecipando a uno Startup Weekend)
- Ode ai libri di carta
- Ode ai libri di carta
- Come realizzare un form esterno (Es. assistenza) che manda dati a MagNews
- Un programmatore dovrebbe continuare a programmare nel suo tempo libero?
- Come realizzare un form esterno (Es. assistenza) che manda dati a MagNews
- Un programmatore dovrebbe continuare a programmare nel suo tempo libero?
- Consigli ai junior e ai laureandi (ossia: evitate gli errori che ho fatto io)
- Consigli ai junior e ai laureandi (ossia: evitate gli errori che ho fatto io)
- Un giro nell'universo React
- Un giro nell'universo React
- [Risultati Sondaggio] - I programmatori e i corsi di formazione
- [Risultati Sondaggio] - I programmatori e i corsi di formazione
- Remap backtick, ñ and tilde characters on Windows computers
- Remap backtick, ñ and tilde characters on Windows computers
- Perchè la Green Card è una lotteria?
- Perchè la Green Card è una lotteria?
- La mia esperienza col Test Driven Development
- La mia esperienza col Test Driven Development
- I trend Javascript del 2018
- I trend Javascript del 2018
- E' importante conoscere come sono fatte le librerie che usiamo?
- E' importante conoscere come sono fatte le librerie che usiamo?
- Essere programmatori e vivere di progetti propri
- Essere programmatori e vivere di progetti propri
2017 86
- VueJS basics
- VueJS basics
- Dovrei partecipare al programma Erasmus?
- Dovrei partecipare al programma Erasmus?
- Alla scoperta di VueJS
- Alla scoperta di VueJS
- Batman ha ispirato il ... Comic Sans: storia di un Font che tutti odiano
- Batman ha ispirato il ... Comic Sans: storia di un Font che tutti odiano
- Growth Hacker: cos'è? Intervista a Raffaele Gaito
- Growth Hacker: cos'è? Intervista a Raffaele Gaito
- Other thoughts about NaN (then, stop)
- Other thoughts about NaN (then, stop)
- Not-A-Number: when javascript gets crazy
- Not-A-Number: when javascript gets crazy
- Cryptomining and websites: how long will it be tolerated?
- Cryptomining and websites: how long will it be tolerated?
- Viviamo tutti in una grande simulazione aliena? Sembra di no
- Windows non fa più così schifo: recensione Dell XPS 15" 9560 (2017)
- Viviamo tutti in una grande simulazione aliena? Sembra di no
- Windows non fa più così schifo: recensione Dell XPS 15" 9560 (2017)
- JWT: what is it? How does it work? Why should we use it?
- JWT: what is it? How does it work? Why should we use it?
- Come capire il bitcoin: le funzioni crittografiche
- Come capire il bitcoin: le funzioni crittografiche
- Due-tre opinioni sul Growth Hacking da uno che non ha mai fatto nulla di marketing
- Due-tre opinioni sul Growth Hacking da uno che non ha mai fatto nulla di marketing
- Guida alla Val d'Aosta con un neonato
- Guida alla Val d'Aosta con un neonato
- L'innovazione non copia
- L'innovazione non copia
- E' giusto fidarsi dei remote workers?
- E' giusto fidarsi dei remote workers?
- Recensione del libro: Codice Montemagno
- Recensione del libro: Codice Montemagno
- Quanto è complicato essere Elon Musk
- Quanto è complicato essere Elon Musk
- We' waglio', vuoi venire a lavorare nella mia startup?
- We' waglio', vuoi venire a lavorare nella mia startup?
- Cinque tool per migliorare la vostra developer experience
- Cinque tool per migliorare la vostra developer experience
- I colloqui di lavoro nelle Big
- I colloqui di lavoro nelle Big
- Agile? No grazie, noi siamo Lean
- Agile? No grazie, noi siamo Lean
- "Vorrei, ma ho paura che vada male" : come assumersi dei "rischi intelligenti"
- "Vorrei, ma ho paura che vada male" : come assumersi dei "rischi intelligenti"
- Diventare Senior™ con Javascript: le funzioni filter, map, reduce
- Diventare Senior™ con Javascript: le funzioni filter, map, reduce
- All my articles about Testing in Javascript in one post
- All my articles about Testing in Javascript in one post
- Fantastic Unit Tests in Javascript with Mocks
- Fantastic Unit Tests in Javascript with Mocks
- Become a test expert in NodeJS with these tricks
- Become a test expert in NodeJS with these tricks
- Easy testing of NodeJS applications with Mocha
- Easy testing of NodeJS applications with Mocha
- L'Inglese tra italiani, a lavoro, è una scelta sbagliata
- L'Inglese tra italiani, a lavoro, è una scelta sbagliata
- Deploy a NodeJS app on Heroku in less than 1 minute
- Deploy a NodeJS app on Heroku in less than 1 minute
- Two easy ways perform GET requests in NodeJS
- Two easy ways perform GET requests in NodeJS
- JS Promises: description, pros, cons of this ES6 construct
- JS Promises: description, pros, cons of this ES6 construct
- Quando l'azienda non paga gli stipendi
- Quando l'azienda non paga gli stipendi
- The Javascript Event Loop for dummies
- I libri motivazionali funzionano?
- hey javascript function, take this!
- hey javascript function, take this!
- Debug a NodeJS application from command line - it's super easy!
- Debug a NodeJS application from command line - it's super easy!
- Discesa in Inferno e risalita in Paradiso: le 24 ore da incubo di Gitlab
- Discesa in Inferno e risalita in Paradiso: le 24 ore da incubo di Gitlab
- Quali sono gli svantaggi del lavoro da remoto?
- Quali sono gli svantaggi del lavoro da remoto?
- Node useful libraries - manage command line arguments with YARGS
- Node useful libraries - manage command line arguments with YARGS
- Tool of the week: Develop faster in NodeJS with Nodemon
- Tool of the week: Develop faster in NodeJS with Nodemon
- PRIMO LAVORO DA INFORMATICO - meglio una piccola o una grande azienda?
- PRIMO LAVORO DA INFORMATICO - meglio una piccola o una grande azienda?
- Tip del giorno: stampare comandi di uno script Bash
- Tip del giorno: stampare comandi di uno script Bash
- Web management of a Jekyll blog with Forestry
- Web management of a Jekyll blog with Forestry
2016 45
- Jekyll & Github in pratica
- Jekyll & Github in pratica
- Le tecnologie che compongono un blog Jekyll
- Le tecnologie che compongono un blog Jekyll
- Le migliori piattaforme di blogging (per un developer) a confronto
- Le migliori piattaforme di blogging (per un developer) a confronto
- Perché un programmatore dovrebbe avere un blog
- Perché un programmatore dovrebbe avere un blog
- Ognuno vota le tasse che vuole pagare
- Tasse e disuguaglianza
- Esportazioni e reddito
- Come riconoscere (e perché assumere) un buon "giocatore di squadra"
- I was not satisfied with Time Machine so I wrote my own Backup System
- OrientDB
- Develop a microservice with Ratpack
- Come ho cambiato lavoro (Prequel di: com'è lavorare da remoto?)
- Com'è lavorare da remoto?
- How to log a PHP Soap call with NuSoap
- My very personal Javascript Fatigue: the truth about JS testing
- Progetti a cui lavoro: HYPE - carta di credito, conto bancario, app. 3 in 1!
- Come scrivere un annuncio di lavoro efficace (soprattutto quando hai poco budget)
- Cambio Lavoro
- Flow e Typscript: Type checking per Javascript
- Visual Studio Code, l'editor che mancava per JS e Node
- Gestire le dipendenze frontend con... bower
- L'importanza di un Pet Project spiegata da chi non ne ha mai realizzato uno
- Come programmare in NodeJS, the right way
- Vuoi imparare flexbox ma ti annoi? Prova questo gioco
- 5 motivi per cui Rework ti cambierà la vita
- Chi è Jacopo Notarstefano, l'inventore del programma anti-Calderoli
- Javascript Meetup a Salerno!
- Considerazioni sul Public Speaking
- Il battesimo del sangue: il talk su NodeJS al Napoli DevDay
- "quanto ci metti?" - perchè i programmatori sono delle pippe col time management
- Ho partecipato a Google HashCode 2016. Ecco com'é andata
- Quando possiamo dire che conosciamo una tecnologia?
- Alla scoperta del Machine Learning
- I colloqui di lavoro iniziano (e finiscono) su facebook
- Sarò al Codemotion 2016, Roma
- Why Groovy is not that famous?
- Guida agli annunci di lavoro per sviluppatori
- Creare dinamicamente Groovy beans in Spring
- Realizzare un piccolo motore di Scripting in una webapp Java con Groovy
- un pratico esempio del perchè l'Object Oriented non è la Soluzione Universale©'
- La Programmazione Funzionale con le Funzioni Pure
2015 59
- Essere bravi colleghi evitando di committare cazzate
- Non c'é nulla di più definitivo di una scelta provvisoria
- Leggere la query Hibernate in debug
- Tutti i modi per generare ID in Hibernate & JPA
- di ritorno dal Codemotion Milan 2015
- Serve un piano, anzi tre
- I tre pilastri per migliorare la propria carriera
- React.js day a Napoli: impressioni
- Unofficial but simple way to upgrade Moodle
- Angularizing a jQuery website template: what I discovered, what I have done
- My problem: start custom js code with ngRoute
- Slide del mio mini-talk su NodeJS al Linux Day Salerno 2015
- Libreria del giorno: imbroglia i server di Continuous Automation con Wolkswagen
- Follow me on Twitter and Linkedin!
- Perchè Node.JS è così difficile da imparare (per chi viene da Java)
- the story of a programmer (me) that failed in PHP
- loggare il tempo di esecuzione di un JS : console.time e console.timeEnd
- Css Position
- Informatica Antincendio
- Ci ho messo del tempo per capire il passaggio di parametri delle funzioni Javascript
- Instantiate beans with Spring without @Autowired
- Alcune Best Practices per non impazzire con i DB relazionali
- Impostare PHPUnit in IntelliJ
- iMovie and the -50 error
- iFrame, Safari, iOs e la lotta all'ultimo millisecondo
- Selenium WebDriver for dummies
- Interpretare HTML in una stringa popolata da angular con ng-bind-html
- BASTA! ai powerpoint fatti male
- convertire label in camelCase o CONSTANT_CASE con IntelliJ e String Manipulation
- Coderdojo a Salerno: la mia esperienza
- due risate con la libreria JS del giorno: Elevator.JS
- PHP Symphony: che faccio, me lo studio?
- How would you call your bleeding-edge Stuff framework in all programming languages and platforms?
- The Blog App in Ruby on Rails - iteration 2
- IntelliJ IDEA, alla fine è arrivato l'amore
- BlogZinga!
- Codemotion Roma 2015 - day two
- Installing Ruby On Rails on Mac 10.10 is a pain
- Codemotion Roma 2015: raccontiamo questa prima giornata
- Howto: create a blog with Ruby on Rails
- Playing with my friend's 3D printer
- Tools that don't explain themselves clearly will not be used
- Scrivere codice migliore rispondendo a 12 semplici domande
- Quando assumere Generalisti vs Specialisti
- Pay attention to the ".active" progress bar class in Bootstrap
- WebApp nel tempo libero con approccio MEAN
- Pro e contro di AngularJs dopo 2 mesi di lavoro
- Imparare a programmare come ... chef Cannavacciuolo
- A video that makes Italians proud of their Country
- How to style a button to upload a file
- Codemotion 2015
- Pdfmake : libreria JS per creare PDF
- Hackerando la caldaia Junkers CERACLASS SMART INCASSO per farla funzionare col termostato NetAtmo
- Uscire dalla Comfort Zone per ottenere più successo
- JAVA - Convertire un array di byte in un file con FileOutputStream
- chiamare una funzione Javascript subito dopo averla definita
- Il Document Object Model (DOM)
- Un breve riassunto sulla storia di Javascript
- What’s new in Javascript?