Resume

Technical Skills

  • 8+ years C/C++: STL, Pointers, Templates, Template Meta-programming, Functional programming, OOP, RTTI, Memory management
  • Other Languages: Python, Java, Scala, Mathematica, Matlab
  • Development Tools: Linux, Git, CMake, Make, Visual Studio, Eclipse
  • Parallel Programming: CUDA and GPU accelerated Image Processing, Computer Vision, Animation
  • Image Processing: Convolutions, Filtering, Transformations, Morphological Operators
  • Computer Vision: Feature Detection and Tracking, 3D Calibration, Stereo Matching, Pose Estimation
  • 3D: OpenGL, Linear Algebra, Animations, Transformations
  • Embedded Programming: Arduino, Beaglebone Black, ARM chips, various I2C sensors
  • Game Programming: NPC AI, 3D physics, worked on Dead Rising 3

Professional Skills

  • Creative and strong self-learner, as seen from numerous personal projects
  • Self-driven and ability to work independently with minimal supervision seen in projects and work
  • Able to experimentally design and implement different algorithms
  • Strong interpersonal skills developed through work, group work and presentations

Work Experience

Magic Leap - Senior Software Engineer (Jun 2016 - Present)

  • Working on the embedded algorithms team.
  • Writing optimized code to work on a embedded platform in C++14
  • Debug bugs in vendor provided compiler

YouTube - Google Inc. - Software Engineer (Apr 2015 - May 2016)

  • Worked on the Enforcement Team to implement machine learning classifiers to detect abusive videos
  • Coded in C++, Python and SQL like language for data analysis
  • Responsible for developing new classifiers for automated processing flagged videos
  • Analyzed data and implemented new signals to improve classifier recall
  • Wrote design docs to describe how new features and required framework would be implemented

LinkedIn Corporation - Software Engineering Intern (Sep - Dec 2012)

  • Part of the cloud team and worked with the graph storage system in Scala
  • Implemented and testing different kinds of garbage collection
  • Wrote tools to visualize storage and generate metrics to compare garbage collection performance

Capcom Game Studio Vancouver - Dead Rising 3 Software Intern (Jan - Apr 2012)

  • Worked in the NPC team and helped deliver boss battles and AI enemies in C++
  • Developed specific NPC logic from concept stage to final deliverable
  • Communicated with designers and animators to tune and incorporate feedback into NPCs
  • Incorporated various parts of the game engine to create AI features
  • Worked with developers to help find and fix bugs in the game engine

Sony Creative Software - Media Go Software Intern (Sept - Dec 2010, May - Aug 2011)

  • Implemented new features and new slideshow effects in C++
  • Led redevelopment of partial slideshow framework to improve performance and fix bugs
  • Designed plugins to allow for publishing media to various media services
  • Wrote and used code from large code base shared between various Sony applications

Okino Computer Graphics - PolyTrans Software Intern (Jan - Apr 2010)

  • Designed and implemented a custom 3D importer for Cinema 4D files in C++
  • Importer code utilized the STL, pointers, templates, an OOP design and an external SDK
  • Communicated with a third party developer in Germany for SDK support
  • Completed the importer independently and with minimal supervision
  • Wrote daily work logs and Scientific Research and Experimental Development logs

Projects

ScanMe (Body Scanner) (Sep 2013 - Jul 2014)

  • Designed and implemented a body scanning system in C++ to create 3D models of people
  • Used a Kinect mounted on a steady cam to obtain model data
  • Extended 2D SLAM to 3D in order to generate 3D point cloud of person being scanned
  • Generated animation ready 3D models by implementing automated skinning and segmentation
  • Used GPU accelerated animations to animate point cloud model in real-time
  • Presented the system to classmates and others at a school symposium

GPU Accelerated 2D EKF Slam (Jan - May 2013)

  • Implemented a parallelized 2D EKF SLAM in C++ using CUDA
  • Implemented GPU based feature insertion, removal and updating the SLAM state
  • Used Stereo Matching project in order to create 3D images and later extended to Kinect
  • Used Image Processing Library to find and track multi-scale harris corners as 3D features

Tricopter (Jan - Sep 2013)

  • Designed, machined and assembled a Tricopter using school machine shop
  • Developed flight controller in C++ on a Beaglebone Black
  • Implemented PID control and state estimation from IMU data to maintain stability
  • Created an Android app to fly the Tricopter over Wi-Fi
  • Fixed kernel driver bug for PWM drivers on Beaglebone Black

Virtual Reality Glove (Jul - Dec 2012)

  • Designed and created a glove to use hand has an input device
  • Recorded hand orientation and finger bend to generate 3D orientation of the hand and fingers
  • Made flex sensors for finger input and used accelerometer, magnetometer, gyro to create an IMU
  • Experimented with materials for flex sensors and models for mapping sensor values to input
  • Used Arduino C to communicate with the sensors and acquire data
  • Added serial interface, skeletal animation and particle physics to Image Processing Library

Stereo Matching using the GPU Based Image Processing Library (Jan - Aug 2012)

  • Designed and implemented real-time stereo matching to process VGA images at 30fps
  • Created own 3D calibration setup to find camera parameters and for image rectification
  • Experimented with other stereo methods to find ways to achieve real-time stereo
  • Utilizes own image processing library to provide GPU acceleration

GPU Based Image Processing Library (2010 - Present)

  • Designed and implemented a real-time image processing library in C++
  • Library features 3D model rendering using OpenGL, window management using SFML, and custom designed memory management system
  • Library functions designed for parallel processing on the GPU to reduce computational times
  • Used library to create Image Stitching, 3D Calibration and Image Segmentation demos
  • Used Matlab/Python to prototype various image processing functions before implementing in C++
  • Created Python scripts to auto-gen C++ code for template instantiations to improve performance

2D Physics Engine (2009)

  • Programmed a physics engine in C++ to simulate physics of 2D polygons and particles
  • Developed and optimized algorithm to simulate physics applying self-taught physics
  • Wrapped OpenGL into a custom engine to render polygons, points and text
  • Designed user interface using OpenGL and SDL

LED Webcam Touchscreen (2009)

  • Developed a program in C++ to transform any monitor into a touchscreen with a webcam and LED
  • Developed algorithms and formulas for converting LED position into cursor position
  • Experimented scientifically to find mathematical models on how objects change size with different distances away from the webcam

3D Graphics Rendering Engine (2009)

  • Coded a rendering engine to load and render 3D models
  • Developed algorithms to transform 3D polygons into 2D applying self-taught 3D math
  • Implemented z-sorting and flat shading while maintaining real-time rendering
  • Presented the design and ideas behind the engine to classmates

Education

BASc, Honours Mechatronics Engineering, University of Waterloo, ON, Sep 2009 - Jun 2014


Interests

  • Robotics
  • Artifical Intelligence
  • Augmented Reality
  • Computer Vision
  • Visual (Interactive) Art
  • Kinectic Art

Leave a Reply

Your email address will not be published. Required fields are marked *