bg

A collection of my work.

I am a computer engineering student currently studying at the University of Waterloo. I enjoy working on projects where software and hardware technologies work together. I am also an avid hackathon attender and am very involved in my school's entrepreneurial culture. You can get in touch with me here.

SeeMe - Microsoft Imagine Cup Finalist

The SeeMe project uses hardware sensors, Azure, and Xamarin to track elderly in their home to determine if there might be a problem. It uses custom hardware sensors in order to track the location of the person in the house and sends this information to a Python Flask app running in Azure. The app saves this data to an Azure SQL DB including the room entered, the time entered at, and how long they stay there. The Python app regularly uses this information to retrain a Tensorflow model which predicts how long a person will stay in a room. If they stay too long, the system sends an alert to the caretakers mobile phone saying that there might be a problem. The system also finds concerning movement that my be early onset of dementia, insomnia, and other conditions.

A more descriptive explination can be found in the competition submission document here


  • Tensorflow/ML
  • Azure
  • Python
  • C++
  • Electrical Circuits
  • Hardware Design

EzBot Microcontroller

EzBot is a microcontroller and software package I developed over the course of 3 years. EzBot has pins to connect multiple servos, lights, speakers and sensors. Without any programming, users can use the EzBot mobile app to wirelessly control all of the hardware they connected to the board. This is done using the built-in drag-n-drop layout creator within the app. The EzBot app also hosts a server that allows the phone to become part of the robot and connect to another phone or computer on the WiFi. A python and C# library was also developed for more advanced control of the EzBot.


  • Electrical Circuits
  • Hardware Design
  • Soldering
  • Kicad
  • Python
  • C#
  • Android
  • Bluetooth API
  • Local WiFi Communication

EzBot powered robotic arm

This 6 degree-of-freedom robotic arm with motorized wheels, distance sensor, and moving camera jig is fully controlled by an EzBot. The EzBot wirelessly connects to the computer over WiFi using the phone as a middle-man communicator. Another EzBot is connected to 3 potentiometers which track the movement of a model arm and simulate it on the robot. This project was made to test the capabilities of EzBot. In fact, the robot required under 150 lines of code!


  • Electrical Circuits
  • Hardware Design
  • Python
  • UDP

ENVR - Velocity Fund Finalist

ENVR is a small device that attaches to a VR headset and pairs through Bluetooth to the phone within the VR. It contains vibration motors, fans, and a mist generator in order to replicate the Virtual Reality experience that you are in. We have created demos using popular 360 videos as well as an API for developers. ENVR is the product of a startup company I am making with a co-founder.

Velocity wrote an article about us here!


  • Unity
  • C#
  • Solidworks
  • Electronic Circuits
  • NRF51 Series
  • Arduino Pro Mini
  • HC-06
  • Soldering

For the Genesys Hackathon we decided to create an application that performs facial and emotion tracking for client-representitive video calls. The benefit of this application was to ensure that the customer was not confused or angry during a call, track customer information (age, gender), and notify the supervisor if the customer was getting upset. We used Mircosoft's Face/Emotion API and fed it screenshots from the video call as Genesys did not support 3rd party video monitoring. The emotion/facial tracking results were then sent to Firebase which was pulled from a web app that displayed all of the information in tables and graphs.


  • Genesys API
  • Emotion API
  • Face API
  • Firebase
  • C#

Roambot was a project I completed for Local Hack Day at York University in 8 hours. The robot was controlled by a person's movement which were detected by an Xbox Kinect. The computer sent the Kinect's command using UDP to an Android phone that was sitting on the robot. The Android then sent the same instruction over Bluetooth to the Arduino which controlled the motors to drive while also streaming video of what the robot sees back to the computer (video was 3rd party). Worked independently.


  • Kinect API
  • Arduino
  • Bluetooth API (C# & Android Java)
  • UDP Protocol
  • C#
  • Java
  • C++
  • Electrical Circuits

TD Strip - Finhacks
(1st Place)

The TD Strip was a project developed for the TD - Cisco hackathon which focused on solutions that helped clients with financial decisions. Users used our chatbot to develop a savings goal which was then displayed on an Apple Smartwatch, Website and the hardware "Strip" with LEDs. Tapping the Android phone to the NFC chip on the Strip would prompt the Strip to blink a pattern and verbally say your current savings balance using the phone inside of it. When reaching your goal, the Strip verbally congratulates and displays a unique LED pattern. Worked with 5 other members. Focused on hardware, server-hardware communication, text to speech.


  • Arduino
  • Esp8266 WiFi Chip
  • Firebase
  • Text-to-Speech API
  • NFC API
  • NFC Tag
  • UDP
  • Java
  • C++
  • Electrical Circuitry

CUTC Hackathon

Used an existing website template to create a used furniture inventory management system. Made a non-native Android application that loaded up the mobile version of the website.


I created Dispensebot at the 2017 Dementia Hacks hosted in Toronto's MaRS center with three other team members. The purpose of the project was to automate the process of providing medicine to those with dementia that live in group homes. The hole in the front cover is where the phone sat and acted as an interactive display that showed the amount of pills and any information about a patient. The pill dispenser connected online and provided a notification on the screen when it was time to dispense somebody's pill. We made a web portal for doctors to use in order to update the medication remotely which would be updated in the dispensebot real-time.


  • Arduino
  • Android Bluetooth API
  • UDP Protocol
  • Java
  • C++
  • Electrical Circuits

TenderTool

TenderTool is a mobile application that allows building managers and contractors to safely and efficiently fill work orders. A building manager creates a tender (task) which includes images, dimensions, task required and contractors that they would like to work with. Contractors can then see these tasks and provide a bid. This application is being developed in conjunction with a building manager in order to improve the current workflow of handling tenders as well as to conform to the amendments with the Ontario Condominium Act.


  • Java
  • XML
  • Firebase
  • AsyncTask
  • Fragment Manager

Crypt Raider

Crypt Raider is an Android app that I developed based on my favourite flash game of the same name. The point of the game is to get the mummy to put the orbs into the teleportation device to escape. There are many obstacles in the way including exploding TNT, quicksand, locks with keys, and an explorer trying to catch you. This app was developed completely from scratch other then a few assets and basic libraries (gameview control, vibration lib, page scroll, etc) using B4a - a Visual Basics to Java translator.


  • B4A
  • Gameview
  • XML
  • Photoshop
  • Skill: Animation
  • Skill: Runtime efficiency

Crypt Raider Level Creator

In order to be able to create levels for the Crypt Raider I developed a python application that allowed for a drag and drop interface. The program then exported a file that would be read by the app.


  • Python
  • Pygames

Speech to Clipboard

Speech to Clipboard performs multiple actions using speech recognition. Swiping up from the home menu would launch the app which would immediately start listening. Users are able to copy their dictation to the phone clipboard, dictate text from the clipboard, perform arithmatics, open apps, search online/Google Play/Youtube, etc. I get many emails from people that have suffered a stroke or are visually impaired that mention how well this app has helped them use their phone :)


  • Android
  • Speech Recognition
  • Clipboard Access API
  • Widget

Quickstart App

Quickstart is an application that I developed in order to make accessing applications easier and personalized. Users were able to create a custom notification including editing the text size/colour, background colour and icon. By pressing the notification, users could launch an application or open a folder which contained a group of apps.


  • Android
  • Notifications API
  • XML
  • Widget
  • Service

Touchless+

Touchless+ is an application that turns on your phone by hovering your hand over it or swiping above it. It runs a service in the background that watches for a change in the proximity sensor and turns on the phone screen. The app displays a background relevant to the time of day as well as the time, date and battery status/charge.


  • Android
  • Sensor
  • Wake_Locks
  • Sticky Service

Passcode door opener

During highschool I frequently visited the school's computer engineering lab, but usually found it locked. As my final project, I decided to fix that by installing a touchpad on the outside of the door that allowed only myself and a few close friends to enter the lab with a code. The keypad connected to the Arduino which verified the code and engaged a servo to pull the door handle up and play a song. We installed a camera to see who tried to enter the combination incorrectly and generated an image using a Python program. We found janitors, teachers, and the occasional frosh trying to crack the code!


  • Python
  • Arduino
  • Webcam Lib

Large Robotic Arm

This robotic arm project was probably the largest physical robot I have ever created. It reached 1.5m long fully extended and 1 m high! When I made this robot I only knew how to program 1 platform, the Boe Bot, which supported only 2 servos. This prompted me to created a switch system for the two servos that allowed me to control a lot more motors in the project. The robotic arm has 4 DOF and rotated on the spot because of the mechanism I implemented for steering.


  • Boe Bot
  • Electrical Circuitry
  • Hardware Design

Bluetooth Traffic Light

The traffic light is able to connect through Bluetooth to an Android phone. The user is able to control the light combination with toggle buttons in the app. Inside of the traffic light was a AC-to-5V-DC 1A phone charger, an Arduino Pro Mini with Bluetooth, and 3 relays for each light.


  • Java
  • Arduino
  • HC-06 Module