Michael Astwood
I am a software engineer at Sandvine ULC, working in Waterloo Ontario. I recently completed a MSc in Mathematics at Wilfrid Laurier University. Before that, I completed a BSc in Honours Mathematical Physics at the University of Waterloo.
Published Notes
This personal website serves two purposes. First is to act as a kind of resume, and secondly to distribute my publications openly. I have completed two large scale note-taking projects, and the results can be found below.
Advanced Quantum Theory - Taught by Tobias Osborne
My notes for Advanced Quantum Theory at University of Hannover have been approved and posted by Prof. Tobias Osborne. The video lectures can be found here. My notes can be found here.
Clifford Algbras and Spinors - Taught by Spiro Karigiannis
My notes from PMATH945 - Clifford Algebras, Spinors, and Calibrations at University of Waterloo. The course was taught by Spiro Karigiannis in Fall 2020. He has approved these notes to be posted online. My notes can be found here.
Technical Skills
Research Interests
My research interests are primarily in applied differential geometry. I am interested in both computational and theoretical aspects of geometry. In particular, on the computational side I am interested in manifold learning, computational topology, and general dimensional reduction techniques. I have experience with real-time and static anomaly detection, and I am interested in applications of the aforementioned methods to anomaly detection, classification, and causal analysis. On the theoretical side I am more interested in mathematical physics. I am specifically interested in special structures on manifolds, partial differential equations arising from relativity and gauge theory, and related topics in geometric analysis. I have worked with complex and symplectic geometry in my research as well as pseudo-Riemannian geometry, which is specifically useful for relativity problems.
Programming Languages
- Expert in Python, GoLang, MATLAB, and Mathematica
- Proficient in C#, Java, C++, Javascript, and R
The past few years I have most frequently worked with Python and Mathematica. For my work at Sandvine, I mostly use Python 3 as well as GoLang. GoLang is useful for building scalable network interface applications for interacting with a large database. The majority of my personal projects are simulations, mostly of fluid mechanical systems or chemical processes. These systems are modelled using partial differential equationsandr stochastic processes. I have additionally required other mathematically oriented programming languages such as R or MATLAB, which are useful for statistical analyses and optimization problems respectively.
Packages and Technologies
The following is a rough list of APIs and software I have used for scientific and personal projects.
- FeNiCS, FireDrake, Numpy, Scipy, Pytorch, Scikit-Learn, Tensorflow
- BLiTZ, PyCBC, Pandas, CasADI, Tkinter
- Matlab Optimization Suite
- NodeJS, Cheerio, Request, Express, DiscordJS, jQuery
- Gekko, APMonitor, GROMACS, PyMol, Visual Molecular Dynamics
- XNA, MonoGame
I have worked with various markup languages and similar technologies such as XML, HTML, CSS, and JSON. I am also experienced with Linux, having used Ubuntu through the WSL system as well as various other operating systems used in high performance computing clusters. Furthermore, I have some experience with web-based platforms, having assisted in developing the iGEM team websites:
I have also developed a number of small web applications for personal use (some hosted via AWS, others hosted locally).
Graphic Design
My graphic design experience is mostly relevant to game development or engineering positions. I have experience with 3D modelling as well as vector and raster graphics. The following is a list of programs I have used extensively.
- Photoshop, Illustrator, InDesign
- GIMP, LaTeX, Inkscape
- Blender3D, AutoCAD