Marco Azimonti

Portfolio

My Portfolio

Welcome to my portfolio, where over 25 years of aerospace engineering and software development converge to showcase a diverse array of projects. With a strong foundation in mathematics, physics, and engineering, I have dedicated my time to creating innovative solutions across multiple domains.

Specializing in numerical simulations, I excel in translating complex physical problems into efficient computational models using Fortran and C++. These high-performance languages power the core computations of my areas of interest, ensuring precision and efficiency in critical calculations. Complementing this, I leverage Python’s extensive libraries for data analysis and visualization, bringing clarity and insight to complex datasets.

Beyond simulations, my expertise extends to web design and computer graphics, reflecting a commitment to versatility and continuous learning. This multifaceted skill set allows me to approach problems holistically, crafting solutions that are both technically robust and user-friendly.

Explore my portfolio to see how I blend traditional high-performance programming with modern development techniques, delivering innovative solutions that span from aerospace applications to interactive web platforms.

Project Description
Personal Website A custom-built, responsive website featuring custom JavaScript libraries, dynamic content generation, and high coding standards details link
MA Libs A versatile set of C++ and Fortran libraries developed over the years, designed to enhance functionality and interoperability across various projects details link
Hexo Toolkit A collection of utilities and scripts designed to enhance the experience with Hexo, a fast, simple, and powerful blog framework details link
Quantum Mechanics Spin Simulation An interactive Python-based project to simulate quantum spin dynamics, including single and two spin systems, entanglement, and the EPR experiment details link
Schrödinger Equation Simulation Numerical simulation of the Schrödinger equation in 1D and 2D, including wavefunction evolution and double slit experiment simulation details link
Orbits simulation Simulate the orbital dynamics of planets around the Sun details link
MNIST classification Train and test neural networks on image classification using the MNIST dataset details link
OpenGL Curves explorer OpenGL application for exploring 3D curves details link
Path Finder with neural networks OpenGL application finding the shortest path using neural networks and genetic algorithms details link
Inverted Pendulum Control feedback with linearization and neural networks for an inverted pendulum (single and on a cart) details link
GPT Playground Generative Pre-trained Transformer (GPT) implementation details link
HTML5 sandbox Collection of responsive HTML5 apps details link

This personal website

I built this website from the ground up, leveraging Bootstrap to ensure a responsive design that provides an optimal user experience on both desktop and mobile devices. To enhance the site’s functionality and maintain a cohesive aesthetic, I developed custom JavaScript libraries—including syntax highlighting, breadcrumbs, and a tag cloud—that seamlessly integrate with the overall look and feel.

For visual content, I created scripts that generate images directly from Python or MATLAB code, allowing for dynamic and accurate representations of data and simulations. The blog section is powered by Hexo, but I designed the theme myself to ensure it aligns perfectly with the rest of the site.

To uphold high coding standards, I implemented several scripts for code minification, linting, and deployment. These tools not only optimize performance but also streamline the development process. You can explore some of the featured web tools here.

MA-libs

A versatile set of C++ and Fortran libraries developed over the years, designed to enhance functionality and interoperability across various projects.

Language Interoperability:

  • C++ and Fortran Bindings: Seamlessly integrate C++ and Fortran code, allowing functions from one language to be called in the other.
  • C++ Python Bindings: Enable Python to call C++ functions, combining high performance with ease of use.

Data Management:

  • Reliable Serialization with HDF5: Utilize HDF5 utilities for robust serialization and deserialization of data, ensuring data integrity and efficient I/O operations.

Numerical Computations:

  • BLAS/LAPACK Bindings: Template-based bindings supporting various data types for high-performance linear algebra operations.
  • Neural Networks Library: A C++ neural networks library with a BLAS/LAPACK backend and HDF5 support for storing and reusing weights.

Visualization:

  • OpenGL Bindings: Visualize numerical results in 2D and 3D, useful fo data interpretation and presentation.

These libraries are available on GitHub here.

Hexo toolkit

A collection of utilities and scripts designed to enhance the experience with Hexo, a fast, simple, and powerful blog framework.

  • Utility Scripts: Enhance the Hexo workflow with these handy scripts.
  • Custom Themes: Extend themes registering a custom generator to automatically create ‘json-ld’ or a calendar json for exporting rss and atom feeds.
  • Plugins: Extend Hexo’s functionality with my curated plugins.

The toolkit is available on GitHub here.

Quantum mechanics entangled spin simulation

An interactive Python-based project designed to simulate quantum spin dynamics, offering an engaging platform to explore fundamental principles of quantum mechanics through computational methods:

  • Single Spin Simulation: Simulate the behavior of a single quantum spin under various measurement orientations, providing insights into quantum superposition and measurement collapse.
  • Two Spin Simulation: Extend simulations to two spins, including product and entangled states, allowing exploration of complex phenomena like entanglement and spin correlation.
  • EPR Experiment Simulation: Demonstrate the principles of the EPR paradox and violations of Bell’s theorem using entangled spin states, highlighting the non-classical correlations predicted by quantum mechanics.
  • Visualization and Analysis: Real-time visualization of spin states and comprehensive statistical analysis to aid in understanding quantum behaviors.

This project is available on GitHub here.

Schrödinger equation simulation

Numerical simulation of the Schrödinger equation in both 1D and 2D, modeling wavefunction behavior under various potential types.

1 Dimension:

  • Potential Types: Free space, harmonic oscillator, infinite high barrier, finite right barrier.
  • Wavefunction Initialization: Wavepackets and eigenfunctions for harmonic oscillator or infinite well.
  • Visualization: Probability density, real and imaginary parts, modulus and phase (color phase).
  • Time Evolution Methods: Implicit Crank-Nicolson (2^{nd} order) and explicit Runge-Kutta (8^{th} order).
  • Units: Electron scale or normalized units.

2 Dimensions:

  • Potential Types: Free space, particle in a box, particle with barriers, multiple slits.
  • Wavefunction Initialization: Wavepackets.
  • Visualization: Probability density, modulus, and phase (color phase).
  • Time Evolution Method: Implicit Crank-Nicolson (2^{nd} order).

Double Slit Experiment Simulation:

  • Double Slit Setup: A numerical simulation of the iconic double slit experiment using electron wavepackets. The Schrödinger equation models the wavepacket passing through two slits, calculating the interference pattern formed by individual electrons impacting a screen.
  • Simulation Output: Displays wavepacket probability distribution at the screen and simulates the buildup of an interference pattern with multiple electrons.
  • Visualization: Provides real-time visualization of electron impacts and interference patterns.

Example configurations and visualizations are available for both 1D and 2D simulations. This project provides an in-depth tool for exploring quantum wave behavior in various scenarios, including the famous double slit experiment.

This project is available on GitHub here.

Orbits simulation

Python-based project is designed to simulate the orbital dynamics of planets around the Sun. It provides an interactive platform to explore the fundamental principles of celestial mechanics through computational methods. Whether you’re a student, educator, or researcher, this repository offers valuable tools to simulate and analyze the behavior of planetary orbits under various conditions.

  • Accurate Planetary Models: Simulate the orbits of planets using real-world data and physics-based models.
  • Customizable Parameters: Modify initial conditions and physical parameters to explore different orbital scenarios.
  • Visualization Tools: Generate visual representations of planetary orbits and their dynamics over time.
Orbits simulation

This project is available on GitHub here.

MNIST classification

This project use my custom neural networks library, specifically applied to image classification using the MNIST dataset. I developed two programs to manage both the training and testing phases: one employs the Stochastic Gradient Descent (SGD) algorithm for efficient optimization, while the other uses a Genetic Algorithm to explore and fine-tune network configurations.

This project is available on GitHub here.

OpenGL Curves explorer

I developed an OpenGL application for visualizing and exploring 3D curves. The tool allows users to generate, modify, and visualize various types of curves in a 3D environment, leveraging OpenGL for real-time rendering. This project supports interactive exploration of parametric, implicit, and other curve representations, with a focus on providing a dynamic platform for educational and research purposes. It also integrates mathematical functions for generating the curves and offers customizable settings for rendering options and camera control.

This project is available on GitHub here.

Path finder with neural networks

I developed an OpenGL application that finds the shortest path using a combination of neural networks and genetic algorithms. The project integrates advanced AI techniques to solve pathfinding problems in real-time graphical environments. Neural networks predict optimal routes, while genetic algorithms evolve path solutions, balancing exploration and exploitation. The application visualizes the pathfinding process, showing how AI-driven approaches can outperform traditional methods. This project demonstrates the use of AI for optimization in interactive, dynamic environments, highlighting the potential of combining neural learning with evolutionary algorithms.

This project is available on GitHub here.

Inverted pendulum

I developed a control feedback system for an inverted pendulum, both single and on a cart, combining linearization techniques with neural network-based control. The project explores classical control methods, such as PID, and advanced machine learning models to stabilize the pendulum in various dynamic scenarios. The neural networks are trained to optimize the control input by learning the system’s non-linear dynamics. The repository includes simulation data, controller algorithms, and visualizations to showcase the performance. This work demonstrates the application of AI to control theory for complex systems.

This project is available on GitHub here.

GPT Playground

I developed a Python project focused on building and experimenting with Generative Pre-trained Transformer (GPT) models from scratch. The repository provides a simple yet powerful framework for training and testing custom GPT models, complete with tokenizer, model training, text generation, and model introspection modules.

Whether you’re exploring the intricacies of language models or just curious about how GPT works under the hood, this playground offers a starting point for simulations, model training, and text generation.

The available features are:

  • Custom Tokenizer: Convert raw text into tokenized input for the model.
  • Model Training: Train the model on any input text.
  • Text Generation: Generate text sequences based on a given prompt.
  • Flexible Testing: Modify start sequences and parameters to test different outputs.

This project is available on GitHub here.

HTML5 applications

I developed a selection of interactive, web-based tools. Each application is built with HTML5 and employs modern web development practices to ensure functionality, performance, and a seamless user experience.

This showcase spans a variety of functionalities, from everyday utilities to more specialized tools, each tailored to enhance usability and accessibility. My focus has been on creating responsive interfaces that adapt effortlessly across devices, emphasizing efficiency in both design and code. Dive into each application to see practical solutions in action.

This collection is available here.

Go to the top of the page