Hi, I'm Oliver.
I build software, optimize systems, and solve complex problems. My journey started at 12 years old, writing Small Basic code to control Lego robots. Today, I am driven by that same curiosity, applying it to larger datasets and more complex architectures.
I am currently completing my senior computer science coursework at McGill University. Throughout my time here, I have naturally gravitated toward leadership roles, frequently serving as the team lead for our intensive group software projects.
Outside of school and code, I focus my time on a few specific pursuits:
Martial Arts: I serve as the President of McGill's Mixed Martial Arts club. Hiring me essentially means you get built-in physical security for the office alongside my code.
Fitness: I am a disciplined gym goer and love nerding out about the gym and hyper-optimizing my routine.
Cooking: I love experimenting in the kitchen and cooking for friends and family, which inspired my current side project: a smart cooking assistant application.
I enjoy the intersection of discipline, technology, and real-world utility. Let's build something cool.

Projects
screen-duo/ ├── screen_duo/ │ ├── devices/ │ │ ├── screen_capture.py │ │ ├── phone_capture.py │ │ ├── webrtc_server.py │ │ ├── iphone_bridge.py │ │ ├── wifi_powersave.py │ │ └── _gnome_screencast_helper.py │ ├── recording/ │ │ ├── session.py │ │ ├── sync.py │ │ ├── compositor.py │ │ └── clapper.py │ ├── ui/ │ │ ├── main_window.py │ │ └── overlay_widget.py │ └── __main__.py └── requirements.txt
screen-duo
Record your screen and iPhone camera together, auto-synced with a clapper flash.
smartFind/ ├── backend/ │ ├── app/ │ │ ├── core/ │ │ │ └── config.py │ │ ├── db/ │ │ │ ├── crud.py │ │ │ ├── database.py │ │ │ └── models.py │ │ ├── models/ │ │ │ ├── embedder.py │ │ │ ├── pdf_reader.py │ │ │ └── text_splitter.py │ │ ├── routers/ │ │ │ ├── answer_router.py │ │ │ ├── auth_router.py │ │ │ ├── chat_router.py │ │ │ ├── document_router.py │ │ │ └── upload_router.py │ │ └── main.py │ ├── Dockerfile │ └── requirements.txt ├── frontend/ │ ├── src/ │ │ ├── components/ │ │ │ ├── AuthModal.tsx │ │ │ ├── ChatSidebar.tsx │ │ │ ├── DocumentList.tsx │ │ │ └── UploadForm.tsx │ │ └── App.tsx │ ├── Dockerfile │ ├── package.json │ └── vite.config.ts ├── docker-compose.yml └── Makefile
SmartFind
Upload PDFs and ask questions about them.
AI-cooking-helper/
├── backend/
│ ├── src/
│ │ ├── controllers/
│ │ │ ├── chat.controller.ts
│ │ │ └── generateRecipe.controller.ts
│ │ ├── routes/
│ │ │ ├── chat.route.ts
│ │ │ └── generateRecipe.route.ts
│ │ ├── services/
│ │ │ └── openaiService.ts
│ │ └── index.ts
│ └── package.json
└── frontend/
└── mobile/
├── app/
│ ├── (tabs)/
│ │ ├── index.tsx
│ │ └── Recipe.tsx
│ ├── recipe_creating.tsx
│ └── _layout.tsx
└── package.jsonAI Cooking Helper
Hands-free cooking with tweakable, shareable recipes.
trends-dashboard/
├── backend/
│ ├── models/
│ │ └── keyword.js
│ ├── database.js
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── queue.js
│ ├── server.js
│ ├── worker.js
│ └── package.json
└── frontend/
├── Dockerfile
├── index.html
├── script.js
└── styles.cssTrends Dashboard
Track Google Trends keywords over time.
TV Automation/
├── remote_local.py
├── remote_app.py
├── pair_wss.py
├── test_wol.py
├── requirements.txt
└── TVMote-iOS/
├── TVMote/
│ ├── TVMoteApp.swift
│ ├── ContentView.swift
│ └── SamsungTVClient.swift
└── README.mdTV Automation
Control your Samsung TV from phone or desktop.
comp520-coursework-w2026/ ├── src/ │ └── java/ │ ├── lexer/ │ │ ├── Scanner.java │ │ └── Tokeniser.java │ ├── ast/ │ ├── sem/ │ ├── gen/ │ │ ├── CodeGen.java │ │ ├── StmtCodeGen.java │ │ ├── FunCodeGen.java │ │ └── ProgramCodeGen.java │ ├── regalloc/ │ │ ├── NaiveRegAlloc.java │ │ └── GraphColouringRegAlloc.java │ └── Main1.java … Main5.java └── build.xml
C Compiler (COMP 520)
C and OOP to MIPS compiler in five passes.
mybookings/
├── Makefile
├── README.md
├── backend/
│ ├── server.js
│ ├── routes/
│ │ ├── authRoutes.js
│ │ ├── bookingRoutes.js
│ │ ├── slotRoutes.js
│ │ ├── OHRoutes.js
│ │ ├── groupMeetingRoutes.js
│ │ ├── meetingRequestRoutes.js
│ │ └── ownerRoutes.js
│ └── db/
│ ├── configureDB.js
│ └── schema.sql
└── frontend/
├── src/
│ ├── App.jsx
│ ├── context/AuthContext.jsx
│ ├── view/
│ │ ├── HomeView.jsx
│ │ ├── OfficeHoursView.jsx
│ │ ├── RequestFormView.jsx
│ │ └── GroupPlanView.jsx
│ └── components/
│ └── NavBar.jsx
└── vite.config.jsMyBookings
Book McGill office hours online.
comp303-tavern/ ├── DartsGame.py ├── Inventory.py ├── JukeBox.py ├── PrototypeNPC.py ├── credits.py ├── interactive_plates.py ├── leaderboard.py ├── safe_room.py ├── test/ │ ├── test_credits.py │ ├── test_darts_game.py │ └── test_example_map.py └── UML.jet
COMP 303 Tavern Module
MUD tavern room with darts, jukebox, and patterns.
McMetro/ ├── src/ │ ├── McMetro.java │ ├── McMetroTest.java │ ├── NaiveDisjointSet.java │ ├── Building.java │ ├── BuildingID.java │ ├── Track.java │ └── TrackID.java └── README.md
McMetro
Max-flow routing on a campus metro graph.
Pathfinding-simulation-250/
├── src/
│ ├── finalproject/
│ │ ├── Graph.java
│ │ ├── GraphTraversal.java
│ │ ├── PathFindingService.java
│ │ ├── ShortestPath.java
│ │ ├── FastestPath.java
│ │ ├── TilePriorityQ.java
│ │ └── MiniTester.java
│ └── tests/
│ ├── Level0Tester.java
│ └── Level1Tester.java
└── resource/
├── map_bg.jpg
├── hiker.png
├── zombie.jpg
└── BG_music.wavPathfinding Simulation
BFS and Dijkstra on a tile map with terrain.
topdown-nukedown/ ├── src/ │ ├── main.cpp │ ├── Game.cpp │ ├── Player.cpp │ ├── Bullet.cpp │ ├── Map.cpp │ └── Menu.cpp ├── include/ │ ├── Game.hpp │ ├── Player.hpp │ └── Bullet.hpp ├── assets/ │ ├── background.wav │ ├── fonts/ │ ├── images/ │ └── soldier/ ├── Makefile └── runmake.sh
TopDown-NukeDown
Local two-player top-down shooter in C++.
POFM/ ├── main.py ├── mydb.py ├── templates/ │ └── index.html ├── static/ │ ├── JS.js │ └── style.css └── waste.db
POFM: Waste Score Tracker
Log waste and score your environmental impact.
mchacks11-fork-/
├── backend2/
│ ├── database.py
│ ├── main.py
│ ├── models.py
│ └── requirements.txt
└── frontend/
├── index.html
├── JS.js
├── grocery_icon.png
└── restaurant_icon.pngExpense Keeper
Personal expense tracker from McHacks 11.
Walkthroughs
coming soon — screen recordings with me narrating. unscripted.