\section{Personal Projects} \projectHeading{Real-time Shadow Simulator}{https://git.mmbradley.ca/MichaelBradley/perlin-shadows}{C++, OpenGL} \begin{bullets} \item Built an OpenGL renderer in C++ that could cast real-time shadows on over 130M vertices \item Implemented a custom Perlin noise generator optimized to generate tiles in parallel using multithreading \item Created lighting solution that scaled as needed so the renderer was limited only by VRAM \item Optimized matrix and vector operations with the GLM library \end{bullets} \projectHeading{N-Body Gravity Simulation}{https://git.mmbradley.ca/MichaelBradley/nbody}{Python} \begin{bullets} \item Implemented time-stepped gravity simulations over N bodies in 2 or 3 dimensions \item Set up functions such that an arbitrary number of dimensions could be used (visualization only for 2D/3D) \item Found initial conditions for a number of somewhat stable configurations of up to 8 bodies \end{bullets} \projectHeading{Electronic Holiday Card Distribution}{https://github.com/MichaelMBradley/holidaycards2022}{JavaScript, HTML, CSS} \begin{bullets} \item Created a website from scratch (deployed using GitHub Pages) to distribute holiday cards to friends and family \item Used JavaScript APIs to encrypt the messages to ensure they were only read by the intended recipient \item Integrated the \href{https://p5js.org}{\underline{p5.js}} graphics library to generate unique assets and animated backgrounds \item Implemented a limited set of markdown functionality with regex replacement \end{bullets} \projectHeading{Video-Game Market Web Scraper}{https://github.com/MichaelMBradley/CSGOCaseValues}{Python} \begin{bullets} \item Scraped and analyzed Steam Market data to determine the expected value of opening a lootbox in CS:GO \item Gathered analysis by scraping relevant websites, allowing analysis to be done over months of daily data \item Found meaningful ways to represent data to show profitability over time, proving it to be a bad investment \end{bullets}