Road Learning Tool
I developed an interactive Road Learning Tool using React and TypeScript, build using Vite. Its core is a custom MapView that instantiates MapLibre GL to render a satellite basemap overlaid with local vector tiles. The rendering logic manages three distinct layers: base roads, a dynamic highlight layer for user selection, and a symbol layer that renders road labels along geometry paths.
The frontend features a custom lookup index that normalizes user-entered road names and references into stable tokens to drive fuzzy matching for map additions. This drives the input search system, compiling user inputted road additions to the map into real-time MapLibre filters. Quiz Mode reuses this logic to create an interactive loop: isolating target roads, validating user guesses against the index, and instantly updating styling based on answer correctness.
Data is processed via a SQL pipeline that streams large GeoJSON inputs to extract road features. A specialized shell script wraps Tippecanoe to generate local vector tiles (.pbf). Specifically for the tiling process, I used an AI-assisted IDE to optimize Tippecanoe’s CLI configuration, refining normalization and feature-dropping behavior to preserve road detail while keeping tile sizes performant across zoom levels.
Running and Jumping Detection using Machine Learning
I developed a complete human activity recognition system that processes raw smartphone accelerometer data to distinguish between walking and jumping. Following a structured workflow encompassing data collection, hierarchical HDF5 storage, signal visualization, preprocessing, feature extraction and normalization, classifier training, and GUI deployment, we leveraged Python’s scientific stack (pandas, h5py, scipy, scikit-learn) to import CSV files from an accelerometer app, clean and smooth the time series with forward-fill and moving-average filters, extract a suite of 40 statistical features per 5-second window, train a logistic regression classifier to over 95% accuracy, and finally package the process into a Tkinter desktop application.
A function segments incoming CSV data into time-based windows and feeds them through the trained logistic-regression model and normalization scaler (loaded via joblib), allowing the classify_csv routine to generate real-time predictions on user data. On the GUI side, the user interface was built using Tkinter, with classification results visualized using matplotlib. Colour coded overlays indicate detected activity types alongside timestamped labels.
Dynamic Time Allocating Calendar
As part of a semester-long Agile software development project, our team designed and implemented a dynamic time allocating calendar that intelligently adapts a student’s weekly schedule in real time. Built in C++ using the Qt framework, the application imports academic timetables directly from Queen’s University’s SOLUS system via .ics files and integrates them with user-entered events. The different time blocks consist of classes parsed from the .ics file, fixed events, and tasks which prompt the user for an estimated effort in hours and dynamically allocate study sessions around the existing schedule. Unlike static scheduling tools, this system dynamically redistributes the study sessions as new deadlines are added or priorities change, using a weighted time-allocation algorithm to balance workload.
The project followed the Agile Scrum methodology, with development structured around two-week sprints. Our programming was also managed through GitLab, with each feature tracked through milestones, issues, and merge requests across team members.
911 Dispatcher Training Device
As part of a client-based design project, our team partnered with the Toronto Police Service to modernize the Perfex training device, a 911 dispatcher testing platform built around manual time checks and paper-based modules that is becoming outdated. We translated all five original test stations (short-story recall, reading aloud, copying critical information, simulated telephone dispatch, and map indexing) into a cohesive web interface seamlessly integrated with an Arduino taskbox housed in a portable briefcase with the goal of increasing test accuracy and repeatability.
Specifically, my roles included translating the physical layout of the original Perfex device into the physical Arduino taskbox, mapping push-buttons, sliders, and rotary encoders to mirror the look and feel of the legacy device's five stations. I co-developed the embedded Arduino code that generated physical stimuli tests through user prompts, timestamping every user action and allowing me to implement a real-time scoring system.
On the web side, I also aided our team to develop an HTML, CSS, and JavaScript web interface that replaced all paper testing modules with a modern interactive experience. Audio prompts are streamed using the Web Audio API, and spoken responses are recorded in-browser using MediaRecorder. For interactive modules like map indexing and transcription, the website validates answers in real time against expected inputs and calculates both accuracy and reaction times. Once all modules are complete, results are sent to a Node.js server which stores the data and generates a downloadable PDF report.
Fluid and Powder Dispensing Device
As part of a semester-long engineering design project in first year, I worked on the development of an Automated Fluid Dispenser designed for precise, autonomous mixing of pharmaceutical solutions within strict space, material, and safety constraints. The team prepared and submitted interim reports at key milestones.
My contributions to the project focused heavily on both the system design and the software development. I wrote the complete Arduino C++ codebase, which included coordinating three subsystems: a servo-powered powder dispensing mechanism, a motor rotating turntable, and a peristaltic pump liquid delivery system. The code used arrays to store and iterate over preset dosing instructions for five test tubes dispensing increments between 1 g and 2 g of powder per tube (± 0.2 g) and delivering 20 mL of liquid per tube, controlled with start and emergency stop buttons. I implemented precision timing and motion control logic to ensure accurate dosing, along with real-time interrupt checks for safety overrides.
Beyond programming, I contributed to designing a full SolidWorks sketch of the final assembly for 3D printed components, ensuring the gearbox, limit switch system, and test tube platform met both functional and dimensional requirements. As well as authored sections of our extensive design reports.
Work History
.-
Traffic Services Intern, City of Ottawa
As a Traffic Services Intern, I applied data analysis techniques to interpret pedestrian and vehicle survey data to enhance roadway safety across Ottawa. I used GIS tools to map and analyze traffic patterns for investigations and implemented automated form collection workflows using Microsoft Power Automate to streamline data processes.
-
Graffiti Management Assistant, City of Ottawa
In this role, I managed a city-wide graffiti database, tracking service requests and task completion for cleanup operations. I actively participated in graffiti removal using specialized equipment such as pressure washers and heaters, while adhering to strict safety protocols for handling corrosive chemicals and maintaining gear.
-
Camp Counsellor, Mountain Bike Kids
I supervised and engaged with campers aged 8 to 14, leading mountain biking outings and day trips while ensuring safety and enjoyment. I also maintained communication with parents to address camper needs and resolve concerns, fostering a positive and inclusive camp environment.
-
Trail Instructor, PedalHeads
I managed groups of campers aged 4 to 8 in trail riding programs, ensuring safety and engagement throughout each session. I designed and delivered age-appropriate activities to support bicycle skill development, helping young riders build confidence and coordination in a fun and supportive environment.
Education
Bachelor of Applied Science in Computer Engineering,
Queen’s University in Kingston (2023–2027)
- Granted distinction of Dean’s Scholar (2024–2025 Academic Year) – Stephen J.R. Smith Faculty of Engineering and Applied Science; awarded for outstanding performance.
- Cumulative GPA: 3.57
Certifications
Ontario G Class Driver’s License – Clean Record
Standard First Aid/CPR-C and AED Certification – Valid through 2026 | Obtained 2024
AODA Accessibility Training – Completed 2025