Retro Programming Nostalgia: quando l’Amiga 500 calcolava le cariche atomiche

Un programma in GFA BASIC, il metodo di Gasteiger–Marsili e un ricordo della mia tesi di laurea in Chimica.

All’epoca della ricerca per il mio progetto di laurea in chimica, ero ancora un entusiasta possessore dell’Amiga 500. Il kernel del Linux OS era stato appena ufficialmente rilasciato nella versione 0.01 da Linus Torvalds, e la distribuzione Slackware sarebbe stata rilasciata nel luglio del 1993. Come descritto nel mio articolo sulla mia tesi di laurea, all’epoca l’Apple Macintosh per scrivere la tesi e il mainframe IBM 3090 per i calcoli. Il mio primo PC lo acquistai durante il mio dottorato di ricerca con l’idea di installarlo con Linux in dual boot con MS Windows. All’epoca conoscevo bene il BASIC disponibile sui vari microcomputer che ho avuto (vedi i miei articoli sul retrocomputing) e l’Amiga Basic del mio Amiga 500 che acquistai durante i miei primi anni universitari. Quando iniziai la mia tesi di laurea, cominciai a imparare a programmare in FORTRAN 77, linguaggio usato per scrivere i codici per le simulazioni di dinamica molecolare. Continui limitatamente ad usare anche il mio Amiga 500 per la grafica e la programmazione.

Continue reading →

The Runge–Kutta Integration Method: Returning to the Moon After 50 Years (Part II)

This is the second article in a series introducing numerical methods for solving differential equations, inspired by one of humanity’s greatest technological achievements: the journey to the Moon.

In July 2019, I wrote the Italian version of this article to celebrate the 50th anniversary of the Apollo 11 mission. On 20 July 1969, Neil Armstrong and Edwin “Buzz” Aldrin became the first humans to walk on the lunar surface, while Michael Collins remained in lunar orbit aboard the Command Module Columbia.

More than half a century later, the Moon continues to inspire scientists, engineers, and explorers. NASA’s Artemis programme, together with initiatives from other space agencies and private companies, represents a renewed effort to explore our nearest celestial neighbour. In 2026, the Artemis II mission marked another milestone with a crewed journey around the Moon, recalling the historic flight of Apollo 8 in 1968. These developments renewed my interest in the mathematical and computational techniques that made the Apollo missions possible. How could the computers of the 1960s, with their extremely limited memory and processing power, calculate the trajectories necessary to navigate between the Earth and the Moon?

To explore this question, I returned to historical NASA documentation and the scientific literature on numerical integration. In this article, I summarise some of these findings and introduce the Runge–Kutta method, one of the most widely used techniques for solving differential equations numerically. As usual, I will also include a simple computer program to illustrate how these mathematical ideas can be put into practice.

Continue reading →

Retro Programming Nostalgia VII: lo Studio di Funzioni

Continua l’esplorazione archeoinformatica dei miei programmi in linguaggio BASIC sviluppati negli anni ’80 e ’90 su homecomputer di quell’epoca. Questa volta voglio raccontarvi di un programmino sviluppato per il microcomputer MSX1 Phillips VG8010 (commercializzato dalla Phillips nel 1984) durante gli ultimi anni di liceo e adattato successivamente al BASIC del mio primo e mitico calcolatore programmabile, il Texas Instruments TI-74 (la figura mostra il mio TI-74 tuttora ancora funzionante), durante i primi anni universitari.

Il programma fu sviluppato con l’intento didattico di analizzare delle funzioni a una variabile in un intervallo definito dall’utente per poter rappresentare la funzione, le sue derivate e l’integrale graficamente, nonché individuarne numericamente le caratteristiche principali, quali le posizioni degli zeri, dei punti estremi e quelli di flesso.

Non avendo delle basi di analisi numerica, gli algoritmi numerici usati per queste analisi non erano molto sofisticati ed erano ispirati a rubriche lette sulla rivista più autorevole di cultura informatica italiana MC-Microcomputer di cui ero un assiduo lettore.

Continue reading →

Educational 3D Reconstruction with the RasPi MilliTome

I’m happy to share my latest project, “The RasPi MilliTome: A Manual Sand Slicer for 3D Reconstruction,” which has just been published on Instructables — and even more exciting, it has been featured by their editorial team in the Teachers Section.

Continue reading →

Easter 2026: The Patterns on Coturnix Egg

Last year, after a series of unsuccessful attempts and acquiring three incubators across two countries, my youngest son’s unwavering determination finally paid off.  From a batch of twelve mixed quail eggs, seven hatched successfully, marking the start of our new venture into farm animal husbandry.  Currently, we’ve settled for manageable pets like a Siberian hamster, an aquarium, and pond fish, plus several rounds of stick insects, mantises, and spiders, along with their grasshopper and locust food supplies.  However, quail care is more demanding. While our sons’ happiness is undoubtedly the most important reward, the delicious eggs produced by our farm breeding activity are equally rewarding for the whole family.  It’s particularly satisfying collecting every evening the two expected eggs from the punctual quail hens and admiring their different sizes and pigmentation like beautiful little gems.

If you’re still reading, you’ve probably guessed the main topics of my traditional Easter blog: quail eggs and their shapes and patterns.

Continue reading →

The Numerical Solution of Differential Equation using the Shooting Method

Boundary value problems (BVPs) for ordinary differential equations arise naturally in many areas of physics, engineering, and applied mathematics. Classic examples include the vibration of strings, heat conduction in solids, and quantum mechanical bound states. Unlike initial value problems (IVPs), where all conditions are specified at a single point, BVPs impose constraints at different points of the domain, making them significantly more challenging to solve both analytically and numerically.

Continue reading →

The Smoluchowski Diffusion Equation

The Smoluchowski diffusion equation describes the time evolution of the probability density function (PDF) of a particle undergoing overdamped Brownian motion in a potential energy landscape. It is a central equation in statistical mechanics, soft matter physics, and chemical physics.

Continue reading →

Understanding the Discrete Fourier Transform in Signal Analysis

In previous posts on this blog I have already introduced the Fourier series and the Fourier transform, following their historical development from Joseph Fourier’s original work on heat conduction to their modern role in physics, engineering, and signal analysis. Rather than repeating that material here, I will take it as a starting point.

When we look at a signal — a sound wave, a vibration, or even a curve drawn by hand — we usually perceive it as a function of time or space. However, very often the most relevant information is not immediately visible in this representation. It is hidden in the frequencies that compose the signal, and in how strongly each of them contributes.

This is precisely the idea behind the Discrete Fourier Transform (DFT): to decompose a discrete signal into a finite sum of harmonic components, each characterized by an amplitude and a phase. Conceptually, the DFT is not a new theory, but a practical bridge between the continuous Fourier framework and the realities of digital data, measurements, and numerical simulations.

Rather than starting from abstract formulas, in this post I adopt a visual and experimental approach. The discussion is supported by an interactive program that allows one to draw an arbitrary signal and explore its harmonic content, and by a practical electronics project where Fourier analysis is applied to real sound and noise signals.

Continue reading →

Retro Programming Nostalgia VIII: 1926-2026 l’equazione di Schrödinger e la struttura elettronica dell’atomo d’idrogeno

Quest’anno ricorre l’anniversario della pubblicazione dell’articolo di Edwin Schrödinger (1887-1961) in cui viene introdotta la sua famosa equazione. Prendendo spunto da questa occasione, ho ripescato e rinnovato uno dei miei antichi progetti di programmazione in BASIC con i miei microcomputer negli anni ’80. Di nuovo il microcomputer era il mio amato Phillips MSX, di cui ho parlato in altri blog. Studiando chimica, non potevo non essere attratto dalla bellezza e dall’eleganza delle soluzioni dell’equazione di Schrödinger per l’atomo d’idrogeno. Inspirato dal libro (S. Marseglia, La Chimica col personal computer pubblicato dalla Muzzio) in cui mostrava alcuni esempi di programmi in BASIC per la chimica, decisi di imbarcarmi nell’impresa e usare l’MSX e poi l’Amiga Basic Basic per provare a riprodurre le bellissime visualizzazioni degli orbitali molecolari che vedevo nei libri di chimica universitari. Ma prima di questo vediamo di tornare a contenuto dell’articolo di Schrödinger.

Continue reading →

Christmas 2025: Growing Christmas Trees from Factorials

Christmas is a time for traditions, decorations, and—at least for some of us—quiet moments spent playing with ideas. In that spirit, this post is a small seasonal diversion: a recreational exploration of large factorial numbers, their historical computation, and an unusual way to see them. The inspiration comes from an old but delightful article by the great recreational mathematician  Martin Gardner, titled “In which a computer prints out mammoth polygonal factorials” (Scientific American, August 1967), in which he discusses the astonishing growth of the function

n! = 1 \cdot 2 \cdot 3 \cdots n

and the surprising difficulty computers once faced when trying to compute it for even modest values of n.

In this post, I will briefly describe the Smith bin algorithm for computing large factorials and present the result for the number 2025, arranged in a geometric form. After all, if numbers are going to grow explosively, why not let them grow into Christmas trees for 2025?

Continue reading →