Michael Bennett

Michael Bennett

Software Developer

About Me

I’m a full-stack software developer and data engineer who combines software engineering expertise with strong data and problem-solving skills. With over two years of professional software development and data engineering experience, I’ve developed performant CLI tools and pipelines to process and analyze large-scale datasets, including genetics and geospatial data, using Python, Julia, and Go. From my education in Economics at Cambridge and Yale, I have advanced skills in mathematical modelling, statistics and machine learning.

In my free time, I’m working on a project to centralize and archive historical professional cycling data and interactive applications to use it. I’m also self-studying topics in computer architecture, networking, and distributed systems to deepen my technical expertise.

Projects

  • A daily pro cycling trivia game leveraging 3D geospatial track data. - **Data Pipeline:** Scraped/cleaned 3D race tracks (.gpx) + results using Python, stored in PostgreSQL with PostGIS for low-latency spatial queries. - **Frontend:** React SPA (Next.js/Mapbox GL JS) with cached static site generation. - **Backend:** Go API (net/http) for data serving + input validation. - **Deployment:** Containerised application deployed behind nginx reverse proxy on AWS EC2, updates orchestrated via CI/CD with GitHub Actions.
  • raytracer

    C++ program that implements ray tracing algorithms from the books "Ray Tracing in One Weekend" and "Ray Tracing: The Next Week" by Peter Shirley, with extra features: - **New shapes:** including triangles and ellipses. - **Additional abstractions:** new classes for ray sampling and image construction, allowing for: - Adaptive ray sampler. - Multithreading. - Support for diagnostic images. - **Robust command line interface:** for rendering different scenes and changing rendering parameters.
  • Aerial Image Object Detection

    A Deep Learning project using CNNs to detect objects in real and synthetic aerial images. - **Data:** Trained, fine-tuned and evaluated YOLOv8n/s/m object detection models on aerial images (DOTA/VALID datasets) using Python, PyTorch and Ultralytics. - **Training:** Conducted training in containerised application on remote NVIDIA RTX 4070 GPU with 24GB VRAM rented through vast.ai, reducing training time over 100x at cost under $10. - **Data Loading:** Wrote custom data loaders in Python to stream large image datasets to remote server at maximal speed, reducing GPU downtime. - **Results:** Achieved an 0.57 mAP50 on 6-category restriction of DOTA and 0. 98 mAP50 on VALID on two hours of training per model.
  • Customisable chess clock GUI (using iced-rs) and CLI (using termion) application implemented in Rust, backed by a zero-dependency library providing a chess clock API. Built as a quick rust exercise to practice the language and learn one method for developing a GUI application.
  • My personal website, built as a static site using Next.js, Tailwind CSS, and TypeScript, hosted on Github Pages.
  • A static website that presents a piece of graduate school Economics coursework and some interactive 3d graphs produced for it in an attractive and approachable manner.
  • A package that provides an API for reading and operating on genetic data in Python. It is capable of loading genetic data in bed/bim/fam format, performing simple operations on this genetic data, and saving genetic data objects to bed/ bim/fam file format.
  • A Julia package which provides methods for solving dynamic programming problems of one choice variable using Value Function Iteration or the Endogenous Grid Method.
  • Provides custom pure-julia numerical methods for the differentiation, interpolation, minimisation and root finding of univariate and multivariate functions.