The Curious Engineer

All blogs / Software / engineering practice

Michele Nasti

michelenasti.com

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

  1. Interviewing for a CTV Product Manager role: what I asked as an engineer
  2. Leaving Logseq for Obsidian: what I lost, what I gained
  3. next project: detect moisture for automatic irrigation
  4. Another pet project: "da quando non piove"
  5. NGINX proxy manager, docker, and more
  6. hash() function in Python may not return the same value for the same input
  7. Vibe Coding: lessons learned

2025 7

  1. Hobby project: Quando scade, an app to avoid food expiration
  2. Logical assignments in Javascript
  3. You may really be an imposter
  4. A dive into the world of Video Ads
  5. Why prehistory is fascinating me so much
  6. Fixing python imports, formatting and tooling in VSCode
  7. AI is already taking our jobs: programmers are the first

2024 10

  1. Neural Networks and the derivatives
  2. Jenkins, Docker, npm and a weird repo merge
  3. Jenkins, Docker, npm and a weird repo merge
  4. A class that behaves like an Object and like a Dict in Python
  5. I'm back, Advertising Industry!
  6. Installing latest ruby with asdf on MacOS with M2 chip
  7. What I got so far about monorepos
  8. The esiest VPN you can create is with Tailscale
  9. Stress your server with WRK
  10. No-code development with Appsmith

2023 4

  1. Come To Code 2023
  2. Bye advertising industry!
  3. LogSeq: what's good, what's not, what I still haven't figured out
  4. serverless & 304, Viewability in apps

2022 12

  1. How Wine Works
  2. No, i programmatori non sono hacker pazzoidi asociali strambi
  3. How to do the important things that you keep postponing
  4. Recover gitlab repositories from an hacked machine
  5. Install Samsung ML-2165w printer on newest Macs
  6. Lo ha fatto Elon, e ora lo faccio anch'io
  7. How DNS works? A refresh of the DNS algorithm and architecture.
  8. Some tricks for 11ty that I learned along the way
  9. This blog, revamped
  10. Going to rebuild this blog with 11ty
  11. Number one quality for remote working
  12. Evaluating frontend frameworks and not choosing any

2021 13

  1. A better Git Log
  2. Move your photos from Google Photos to Synology without losing your mind
  3. Remotalypse NOW: non tutti vogliono tornare in ufficio
  4. 1:1 Meetings
  5. Want to play songs in your web app? Say no more with JS Headless Playlist Player
  6. Clickhouse: a Database for your next Big Data project
  7. Clickhouse: a Database for your next Big Data project
  8. "A quest'ora avresti dovuto essere cieco" - intervista a uno sviluppatore che sta perdendo la vista
  9. "A quest'ora avresti dovuto essere cieco" - intervista a uno sviluppatore che sta perdendo la vista
  10. How to integrate a django-select2 component in Django Admin
  11. How to integrate a django-select2 component in Django Admin
  12. "You should have been blind by now" - An interview with a developer who is losing his sight
  13. "You should have been blind by now" - An interview with a developer who is losing his sight

2020 24

  1. A gently intro to MVC Frameworks
  2. A gently intro to MVC Frameworks
  3. [BOOK] What If?: Serious Scientific Answers to Absurd Hypothetical Questions
  4. [BOOK] What If?: Serious Scientific Answers to Absurd Hypothetical Questions
  5. How to read and write from STDIN and STDOUT in GO
  6. How to read and write from STDIN and STDOUT in GO
  7. What is a WAV file?
  8. What is a WAV file?
  9. My first Visual Studio Code Extension, create-link-to-git-server
  10. My first Visual Studio Code Extension, create-link-to-git-server
  11. Sarò controcorrente, ma a me piaceva andare in ufficio
  12. Sarò controcorrente, ma a me piaceva andare in ufficio
  13. Serve HTTPS requests with Express and NodeJS
  14. Serve HTTPS requests with Express and NodeJS
  15. How Coronavirus affected my life
  16. How Coronavirus affected my life
  17. I wish I had a programmers' quarantine
  18. I wish I had a programmers' quarantine
  19. Chaotic systems
  20. Chaotic systems
  21. Microsoft Surface GO: more than a tablet
  22. Microsoft Surface GO: more than a tablet
  23. a review of the book The Phoenix Project
  24. a review of the book The Phoenix Project

2019 30

  1. Pair Programming vs Pull Requests
  2. Pair Programming vs Pull Requests
  3. Thinking of customers like a CEO: lessons learned along the way
  4. Thinking of customers like a CEO: lessons learned along the way
  5. Tips & Tricks from my linux experience
  6. Tips & Tricks from my linux experience
  7. How internet ads work
  8. How internet ads work
  9. Jest and Puppeteer from the barricades
  10. Jest and Puppeteer from the barricades
  11. What is the difference between var, let and const in Javascript
  12. What is the difference between var, let and const in Javascript
  13. Detect network issues from your pc to a remote url
  14. Detect network issues from your pc to a remote url
  15. Typescript, Babel, Webpack, ESLint: my configuration
  16. Typescript, Babel, Webpack, ESLint: my configuration
  17. Typescript: why so complicated?! (A list of my preferred options)
  18. Typescript: why so complicated?! (A list of my preferred options)
  19. I work remote, I do two video meetings per day
  20. I work remote, I do two video meetings per day
  21. SSH cheatsheet (from zero to hero)
  22. SSH cheatsheet (from zero to hero)
  23. What's the difference between Browserify and Webpack?
  24. What's the difference between Browserify and Webpack?
  25. How ads are loaded so fast: the command queue pattern
  26. How ads are loaded so fast: the command queue pattern
  27. Is typescript Namespace feature deprecated?
  28. Is typescript Namespace feature deprecated?
  29. Another remote job for me
  30. Another remote job for me

2018 60

  1. 10 years around the web platform, what's changed and what's not
  2. 10 years around the web platform, what's changed and what's not
  3. What I learned by writing my first npm module
  4. What I learned by writing my first npm module
  5. Inspiring tech people to follow: Nicholas C. Zakas
  6. Inspiring tech people to follow: Nicholas C. Zakas
  7. The easiest way to understand Javascript Generators
  8. The easiest way to understand Javascript Generators
  9. Docker cheatsheet
  10. Docker cheatsheet
  11. Dovrei imparare Ruby on Rails o NodeJS ?
  12. Dovrei imparare Ruby on Rails o NodeJS ?
  13. Let's write our simple version of the require() function
  14. Let's write our simple version of the require() function
  15. Javascript: call functions without using parentheses (what?!)
  16. Javascript: call functions without using parentheses (what?!)
  17. Symbols & Iterators in Javascript
  18. Symbols & Iterators in Javascript
  19. Things you may not know about Object Oriented Javascript (Es6)
  20. Things you may not know about Object Oriented Javascript (Es6)
  21. "ma... cosa intendete per testing?" - una breve introduzione al testing software
  22. "ma... cosa intendete per testing?" - una breve introduzione al testing software
  23. Handling configuration for multiple environments in NodeJS
  24. Handling configuration for multiple environments in NodeJS
  25. Designing the documentation for a tech product
  26. Designing the documentation for a tech product
  27. Come creare luoghi di lavoro in cui é bello recarsi
  28. Come creare luoghi di lavoro in cui é bello recarsi
  29. Get the list of files blocked by a process in Linux
  30. Get the list of files blocked by a process in Linux
  31. [libri] Sei proprio il mio typo: la vita segreta dei caratteri tipografici
  32. [libri] Sei proprio il mio typo: la vita segreta dei caratteri tipografici
  33. Proteggi le tue applicazioni Express con HelmetJs
  34. Proteggi le tue applicazioni Express con HelmetJs
  35. Cambia la tua vita lavorativa! (partecipando a uno Startup Weekend)
  36. Cambia la tua vita lavorativa! (partecipando a uno Startup Weekend)
  37. Ode ai libri di carta
  38. Ode ai libri di carta
  39. Come realizzare un form esterno (Es. assistenza) che manda dati a MagNews
  40. Un programmatore dovrebbe continuare a programmare nel suo tempo libero?
  41. Come realizzare un form esterno (Es. assistenza) che manda dati a MagNews
  42. Un programmatore dovrebbe continuare a programmare nel suo tempo libero?
  43. Consigli ai junior e ai laureandi (ossia: evitate gli errori che ho fatto io)
  44. Consigli ai junior e ai laureandi (ossia: evitate gli errori che ho fatto io)
  45. Un giro nell'universo React
  46. Un giro nell'universo React
  47. [Risultati Sondaggio] - I programmatori e i corsi di formazione
  48. [Risultati Sondaggio] - I programmatori e i corsi di formazione
  49. Remap backtick, ñ and tilde characters on Windows computers
  50. Remap backtick, ñ and tilde characters on Windows computers
  51. Perchè la Green Card è una lotteria?
  52. Perchè la Green Card è una lotteria?
  53. La mia esperienza col Test Driven Development
  54. La mia esperienza col Test Driven Development
  55. I trend Javascript del 2018
  56. I trend Javascript del 2018
  57. E' importante conoscere come sono fatte le librerie che usiamo?
  58. E' importante conoscere come sono fatte le librerie che usiamo?
  59. Essere programmatori e vivere di progetti propri
  60. Essere programmatori e vivere di progetti propri

2017 86

  1. VueJS basics
  2. VueJS basics
  3. Dovrei partecipare al programma Erasmus?
  4. Dovrei partecipare al programma Erasmus?
  5. Alla scoperta di VueJS
  6. Alla scoperta di VueJS
  7. Batman ha ispirato il ... Comic Sans: storia di un Font che tutti odiano
  8. Batman ha ispirato il ... Comic Sans: storia di un Font che tutti odiano
  9. Growth Hacker: cos'è? Intervista a Raffaele Gaito
  10. Growth Hacker: cos'è? Intervista a Raffaele Gaito
  11. Other thoughts about NaN (then, stop)
  12. Other thoughts about NaN (then, stop)
  13. Not-A-Number: when javascript gets crazy
  14. Not-A-Number: when javascript gets crazy
  15. Cryptomining and websites: how long will it be tolerated?
  16. Cryptomining and websites: how long will it be tolerated?
  17. Viviamo tutti in una grande simulazione aliena? Sembra di no
  18. Windows non fa più così schifo: recensione Dell XPS 15" 9560 (2017)
  19. Viviamo tutti in una grande simulazione aliena? Sembra di no
  20. Windows non fa più così schifo: recensione Dell XPS 15" 9560 (2017)
  21. JWT: what is it? How does it work? Why should we use it?
  22. JWT: what is it? How does it work? Why should we use it?
  23. Come capire il bitcoin: le funzioni crittografiche
  24. Come capire il bitcoin: le funzioni crittografiche
  25. Due-tre opinioni sul Growth Hacking da uno che non ha mai fatto nulla di marketing
  26. Due-tre opinioni sul Growth Hacking da uno che non ha mai fatto nulla di marketing
  27. Guida alla Val d'Aosta con un neonato
  28. Guida alla Val d'Aosta con un neonato
  29. L'innovazione non copia
  30. L'innovazione non copia
  31. E' giusto fidarsi dei remote workers?
  32. E' giusto fidarsi dei remote workers?
  33. Recensione del libro: Codice Montemagno
  34. Recensione del libro: Codice Montemagno
  35. Quanto è complicato essere Elon Musk
  36. Quanto è complicato essere Elon Musk
  37. We' waglio', vuoi venire a lavorare nella mia startup?
  38. We' waglio', vuoi venire a lavorare nella mia startup?
  39. Cinque tool per migliorare la vostra developer experience
  40. Cinque tool per migliorare la vostra developer experience
  41. I colloqui di lavoro nelle Big
  42. I colloqui di lavoro nelle Big
  43. Agile? No grazie, noi siamo Lean
  44. Agile? No grazie, noi siamo Lean
  45. "Vorrei, ma ho paura che vada male" &#58 come assumersi dei "rischi intelligenti"
  46. "Vorrei, ma ho paura che vada male" &#58 come assumersi dei "rischi intelligenti"
  47. Diventare Senior™ con Javascript: le funzioni filter, map, reduce
  48. Diventare Senior™ con Javascript: le funzioni filter, map, reduce
  49. All my articles about Testing in Javascript in one post
  50. All my articles about Testing in Javascript in one post
  51. Fantastic Unit Tests in Javascript with Mocks
  52. Fantastic Unit Tests in Javascript with Mocks
  53. Become a test expert in NodeJS with these tricks
  54. Become a test expert in NodeJS with these tricks
  55. Easy testing of NodeJS applications with Mocha
  56. Easy testing of NodeJS applications with Mocha
  57. L'Inglese tra italiani, a lavoro, è una scelta sbagliata
  58. L'Inglese tra italiani, a lavoro, è una scelta sbagliata
  59. Deploy a NodeJS app on Heroku in less than 1 minute
  60. Deploy a NodeJS app on Heroku in less than 1 minute
  61. Two easy ways perform GET requests in NodeJS
  62. Two easy ways perform GET requests in NodeJS
  63. JS Promises: description, pros, cons of this ES6 construct
  64. JS Promises: description, pros, cons of this ES6 construct
  65. Quando l'azienda non paga gli stipendi
  66. Quando l'azienda non paga gli stipendi
  67. The Javascript Event Loop for dummies
  68. I libri motivazionali funzionano?
  69. hey javascript function, take this!
  70. hey javascript function, take this!
  71. Debug a NodeJS application from command line - it's super easy!
  72. Debug a NodeJS application from command line - it's super easy!
  73. Discesa in Inferno e risalita in Paradiso: le 24 ore da incubo di Gitlab
  74. Discesa in Inferno e risalita in Paradiso: le 24 ore da incubo di Gitlab
  75. Quali sono gli svantaggi del lavoro da remoto?
  76. Quali sono gli svantaggi del lavoro da remoto?
  77. Node useful libraries - manage command line arguments with YARGS
  78. Node useful libraries - manage command line arguments with YARGS
  79. Tool of the week: Develop faster in NodeJS with Nodemon
  80. Tool of the week: Develop faster in NodeJS with Nodemon
  81. PRIMO LAVORO DA INFORMATICO - meglio una piccola o una grande azienda?
  82. PRIMO LAVORO DA INFORMATICO - meglio una piccola o una grande azienda?
  83. Tip del giorno: stampare comandi di uno script Bash
  84. Tip del giorno: stampare comandi di uno script Bash
  85. Web management of a Jekyll blog with Forestry
  86. Web management of a Jekyll blog with Forestry

2016 45

  1. Jekyll & Github in pratica
  2. Jekyll & Github in pratica
  3. Le tecnologie che compongono un blog Jekyll
  4. Le tecnologie che compongono un blog Jekyll
  5. Le migliori piattaforme di blogging (per un developer) a confronto
  6. Le migliori piattaforme di blogging (per un developer) a confronto
  7. Perché un programmatore dovrebbe avere un blog
  8. Perché un programmatore dovrebbe avere un blog
  9. Ognuno vota le tasse che vuole pagare
  10. Tasse e disuguaglianza
  11. Esportazioni e reddito
  12. Come riconoscere (e perché assumere) un buon "giocatore di squadra"
  13. I was not satisfied with Time Machine so I wrote my own Backup System
  14. OrientDB
  15. Develop a microservice with Ratpack
  16. Come ho cambiato lavoro (Prequel di: com'è lavorare da remoto?)
  17. Com'è lavorare da remoto?
  18. How to log a PHP Soap call with NuSoap
  19. My very personal Javascript Fatigue: the truth about JS testing
  20. Progetti a cui lavoro: HYPE - carta di credito, conto bancario, app. 3 in 1!
  21. Come scrivere un annuncio di lavoro efficace (soprattutto quando hai poco budget)
  22. Cambio Lavoro
  23. Flow e Typscript: Type checking per Javascript
  24. Visual Studio Code, l'editor che mancava per JS e Node
  25. Gestire le dipendenze frontend con... bower
  26. L'importanza di un Pet Project spiegata da chi non ne ha mai realizzato uno
  27. Come programmare in NodeJS, the right way
  28. Vuoi imparare flexbox ma ti annoi? Prova questo gioco
  29. 5 motivi per cui Rework ti cambierà la vita
  30. Chi è Jacopo Notarstefano, l'inventore del programma anti-Calderoli
  31. Javascript Meetup a Salerno!
  32. Considerazioni sul Public Speaking
  33. Il battesimo del sangue: il talk su NodeJS al Napoli DevDay
  34. "quanto ci metti?" - perchè i programmatori sono delle pippe col time management
  35. Ho partecipato a Google HashCode 2016. Ecco com'é andata
  36. Quando possiamo dire che conosciamo una tecnologia?
  37. Alla scoperta del Machine Learning
  38. I colloqui di lavoro iniziano (e finiscono) su facebook
  39. Sarò al Codemotion 2016, Roma
  40. Why Groovy is not that famous?
  41. Guida agli annunci di lavoro per sviluppatori
  42. Creare dinamicamente Groovy beans in Spring
  43. Realizzare un piccolo motore di Scripting in una webapp Java con Groovy
  44. un pratico esempio del perchè l'Object Oriented non è la Soluzione Universale©'
  45. La Programmazione Funzionale con le Funzioni Pure

2015 59

  1. Essere bravi colleghi evitando di committare cazzate
  2. Non c'é nulla di più definitivo di una scelta provvisoria
  3. Leggere la query Hibernate in debug
  4. Tutti i modi per generare ID in Hibernate & JPA
  5. di ritorno dal Codemotion Milan 2015
  6. Serve un piano, anzi tre
  7. I tre pilastri per migliorare la propria carriera
  8. React.js day a Napoli: impressioni
  9. Unofficial but simple way to upgrade Moodle
  10. Angularizing a jQuery website template: what I discovered, what I have done
  11. My problem: start custom js code with ngRoute
  12. Slide del mio mini-talk su NodeJS al Linux Day Salerno 2015
  13. Libreria del giorno: imbroglia i server di Continuous Automation con Wolkswagen
  14. Follow me on Twitter and Linkedin!
  15. Perchè Node.JS è così difficile da imparare (per chi viene da Java)
  16. the story of a programmer (me) that failed in PHP
  17. loggare il tempo di esecuzione di un JS : console.time e console.timeEnd
  18. Css Position
  19. Informatica Antincendio
  20. Ci ho messo del tempo per capire il passaggio di parametri delle funzioni Javascript
  21. Instantiate beans with Spring without @Autowired
  22. Alcune Best Practices per non impazzire con i DB relazionali
  23. Impostare PHPUnit in IntelliJ
  24. iMovie and the -50 error
  25. iFrame, Safari, iOs e la lotta all'ultimo millisecondo
  26. Selenium WebDriver for dummies
  27. Interpretare HTML in una stringa popolata da angular con ng-bind-html
  28. BASTA! ai powerpoint fatti male
  29. convertire label in camelCase o CONSTANT_CASE con IntelliJ e String Manipulation
  30. Coderdojo a Salerno: la mia esperienza
  31. due risate con la libreria JS del giorno: Elevator.JS
  32. PHP Symphony: che faccio, me lo studio?
  33. How would you call your bleeding-edge Stuff framework in all programming languages and platforms?
  34. The Blog App in Ruby on Rails - iteration 2
  35. IntelliJ IDEA, alla fine è arrivato l'amore
  36. BlogZinga!
  37. Codemotion Roma 2015 - day two
  38. Installing Ruby On Rails on Mac 10.10 is a pain
  39. Codemotion Roma 2015: raccontiamo questa prima giornata
  40. Howto: create a blog with Ruby on Rails
  41. Playing with my friend's 3D printer
  42. Tools that don't explain themselves clearly will not be used
  43. Scrivere codice migliore rispondendo a 12 semplici domande
  44. Quando assumere Generalisti vs Specialisti
  45. Pay attention to the ".active" progress bar class in Bootstrap
  46. WebApp nel tempo libero con approccio MEAN
  47. Pro e contro di AngularJs dopo 2 mesi di lavoro
  48. Imparare a programmare come ... chef Cannavacciuolo
  49. A video that makes Italians proud of their Country
  50. How to style a button to upload a file
  51. Codemotion 2015
  52. Pdfmake : libreria JS per creare PDF
  53. Hackerando la caldaia Junkers CERACLASS SMART INCASSO per farla funzionare col termostato NetAtmo
  54. Uscire dalla Comfort Zone per ottenere più successo
  55. JAVA - Convertire un array di byte in un file con FileOutputStream
  56. chiamare una funzione Javascript subito dopo averla definita
  57. Il Document Object Model (DOM)
  58. Un breve riassunto sulla storia di Javascript
  59. What’s new in Javascript?