About Me
Hello World! My name is Ryan McGregor and I'm a 26-year-old software engineer based in Montréal, Canada.
I've always been drawn to understanding how complex systems work, which first led me to study physiology and pursue a path toward medicine. During my first degree, I was required to take COMP 204 (an intro to Comp. Sci. for Life Science students) and discovered a genuine enjoyment for programming and problem solving, which ultimately led me to apply to software engineering as a second choice. While I didn't end up in medical school, that experience opened the door to software engineering, a path I'm genuinely grateful for and excited to continue exploring.
Projects
A curated selection of projects I've built throughout my software engineering journey.
Each project represents hands-on experience with different technologies and is showcased in a neat little flipbook format.
Education
B.Sc. Software Engineering
Sept 2023 — Dec 2025McGill University, Montréal
GPA: 3.64
This program provides a broad introduction to the principles of computer science and covers in depth the design and development of software systems.
View CourseworkB.Sc. Physiology
Sept 2018 — Apr 2021McGill University, Montréal
GPA: 3.81
This program focuses on the study of the fundamental mechanisms that underlie normal body function from the level of molecules to the whole organism. The program includes intensive studies with a strong core content in the related biomedical sciences.
View CourseworkExperience
Software Development Intern
May 2025 — Aug 2025ITM Instruments · Sainte-Anne-de-Bellevue
- Junior backend developer on a CakePHP-based B2B platform under senior mentorship.
- Led QA and testing for backlog features; improved reliability and regression detection.
- Supported CRM email migration from Java to CakePHP workflows.
- Resolved customer issues using access logs and debugging techniques.
Physician Assistant
May 2021 — May 2022TinyTots Pediatric Clinic · DDO
- Conducted intake and triage using EMR for primary and specialty care visits.
- Supported acute and chronic care, follow-ups, and patient counseling during COVID-era operations.
Server / Bartender
May 2023 - OngoingYe Old Orchard Pub · Pointe-Claire
- Supported myself during my studies by providing quality service and maintaining a positive work environment in a high-paced bar setting.
- Developed strong interpersonal and communication skills through customer interaction and team collaboration.
- Learned to pour the perfect pint of Guinness.
Skills
Languages
Tools & Platforms
Productivity
Other Notable Skills
Contact
I'm actively looking for software engineering opportunities. Let's connect!
Loading Projects...
PROJECTS
Ryan McGregor
Software Engineering Portfolio
Turn the page to explorePersonal Website and Project Flipbook
2026 · Personal Project
What you are looking at!
Like many Comp Sci grads, I wanted a personal site to showcase the projects and skills I’ve built over the past 2.5 years.
So here it is. I built it using vanilla HTML, CSS, and JavaScript, and instead of a static project list, I created an interactive
flipbook-style display withpage-turning animations. The flip effect uses Turn.js, with custom CSS for styling.
This flipbook was inspired by and partially based on code from the YouTube channel
HankTheTank (https://www.youtube.com/@HankTheTankCoding).
Demo
Girlfriend Portal
2025 · Personal Project
A playful full-stack web app inspired by a viral tweet about an "online grievance portal."
Built as a birthday gift for my girlfriend, it lets two users submit, reply to, and manage grievances with
severity levels and cute cat mood indicators. Features JWT authentication, animated falling
petals, and is deployed for free using Render and MongoDB Atlas.
Please forgive the silly-pet names used throughout the app! Check it out at:
girlfriend-portal.onrender.com
COMP 521 – Mini Games
2025 · McGill University
This course explores the technical foundations behind modern video games,
covering topics like physics simulation, pathfinding, AI decision-making,
and procedural generation.
Throughout the semester, we were tasked with building Unity minigames as
assignments — each one focused on implementing a well-known game design
technique from scratch. The following three projects are highlights from
this course.
MINIGAME: Ogres
2024 · COMP 521 Assignment
This assignment focused on implementing enemy AI using a Hierarchical Task Network (HTN) in Unity.
The player must sneak past ogres guarding two caves, steal a treasure, and return to the spawn point
without losing both lives. The ogres use an HTN planner to choose actions like patrolling, foraging, chasing the player,
or throwing boulders based on the current world state, allowing them to react dynamically to the player’s actions.
The focus of the game was on the Ogres behaviour and balancing them to make the game playable, fun and challenging.
Demo
MINIGAME: Pinball
2025 · COMP 521 Assignment
A pinball game built entirely in Unity without using any of the engine's
built-in physics. All collision detection, ball movement, gravity, and
flipper mechanics were implemented from scratch to demonstrate a deep
understanding of real-time physics and its implementation in game development.
Collisions with walls, bumpers, prisms, cylinders, and paddles are handled using
custom vector math and distance checks, with velocity reflections used to simulate
realistic bounces. Paddle movement is controlled by player input and uses angular
velocity to add energy to the ball on impact. Additional features like ball spawning,
obstacle placement, and a small “jiggle” mechanic were implemented through scripts to
help keep the gameplay dynamic.
Demo
MINIGAME: Bridge Builder
2025 · COMP 521 Assignment
This was the first minigame assigned for COMP 521 and was meant to serve as our intro to Unity and give us an idea of the types of projects we would be doing later in the semester.
Although the game concept is simple and the mechanics straightforward, it took me a very long time to make as it was my first project using Unity. However, it taught me a lot and set me up to succeed in the rest of the course.
The game requires the player to simply get to the other side of a chasm. To do this, the player must collect objects that are randomly scattered across the level and can throw them forward. When these objects are thrown
into the chasm, they become solid platforms that the player can use to cross. The player must strategically collect and throw objects to create a path across the chasm.
Golf Project 437
2025 · Course Project
This project is a full-stack golf handicap tracking app. While the app lets users log golf rounds
and automatically calculate an official handicap, the real focus of the project was learning
how to ship software properly.
My partner and I built the system using React on the frontend, a Node.js/Express backend, and a cloud-hosted
MongoDB Atlas database. Authentication is handled through Auth0, and real course data is pulled
from an external Golf Course API to ensure accurate handicap calculations.
From a delivery perspective, the project followed an industry-style DevOps workflow: task
planning with Azure Boards, feature branches with pull requests and peer reviews, a fully
configured CI pipeline for testing and Docker image builds, and a containerized deployment to
Azure Web Apps.
Demo
AI Game Agent: Reversi
2024 · Course Project
For this project, I designed a competitive AI agent to play Reversi (Othello).
The goal wasn’t just to make the agent “work”, but to apply classical AI search techniques. During our last class, we had a class tournament
where our agents faced off against each other. Our agent placed in the top 20%.
My strongest agent uses Minimax with Alpha-Beta Pruning, combined with
iterative deepening to dynamically maximize search depth within a strict
2-second time limit.
A major focus of the project was designing a strong heuristic evaluation function.
I combined multiple factors — coin parity, mobility, corner control, and disc stability —
and dynamically adjusted their weights depending on the game phase (early, mid, or end game).
Extensive agent-vs-agent testing guided my design decisions and confirmed that dynamic
weighting significantly outperformed static heuristics. This was a really fun class project that allowed me to apply foundational AI techniques in a competitive setting!
More projects in progress — check back soon.