I primarily spent my time working on the USB stack of a new operating system. I built the first standalone USB
class driver for the OS. This required building the foundations in our xHCI driver and adding IPC APIs for the
class drivers to use. My driver enabled Serial over USB, which allowed application developers to attach debuggers
to their boards without taking up the physical serial port (which was required for other purposes, e.g. kernel logs
and control). My driver also served as a reference for a functioning standalone USB driver, which my teammates
have been using as an example to build other drivers based on.
I also took a computer vision course, where I learned about computer vision/deep learning basics and completed a
couple of assignments using PyTorch.
My main project focussed on building a cache for real-time ads updates in Google Search. The first part involved building a couple of Cloud Dataflow pipelines for all the data that wasn't change-tracked (think of Cloud Dataflow as a managed, higher-level abstraction of MapReduce concepts). I improved the runtime of these pipelines by over 25% by optimizing the SQL queries (this involved matching join keys to indeces, combining queries, using native materialization into protos and a variety of other techniques). Then, I built a couple of microservices to update our cache by subscribing to change-tracked data via several Pub/Sub queues. This improved the average data freshness in our cache from over 30 minutes to under 1 second.
Member of core backend team for Enterprise Commerce (SAP Commerce Cloud). Worked on API modernization and monolith decomposition. Proposed, owned, and developed a new express checkout flow reducing checkout time by 70%.
Worked on partner team building third-party integrations into the app. Developed an advertisement pushing service reaching 10 million daily users. Built an automated contest generation platform for partners. Since launch, their contests have had over 200 thousand participants.
Founding member of a startup enabling small grocery businesses to take part in the digital grocery revolution. Built an Android app for customer and investor demos in 4 weeks, resulting in $30 000 of investment and 2 stores signing on. Check out our website here!
Worked on the team developing the york.ca website. Created an employee forum using WebSphere APIs for authentication and data storage. Built several web widgets using third-party APIs for a portal used by over 2000 employees.
Some relevant courses I've taken so far:
A Google Assistant Action that saves your thoughts/conversation topics in a stack so you could remember them for later!
javascript google-assistant cloud-functionsGenerates videos following people using People Pathing from AWS Rekognition and the OpenShot Cloud API for video editing. It's currently being used to track people in choreographies. Resulted in two offshoot projects: an OpenShot SDK for Go and a Go HTTP Client Library.
go aws-lambda aws-rekognitionAn article comparing gRPC to REST, Protocol Buffers to JSON, and HTTP/2 to HTTP/1.1. Contains benchmarks created using Go channels to compare HTTP/2 request multiplexing to HTTP/1.1 pipelining. Used a Job/Worker pattern with a controlled thread pool size to find the optimal amount of concurrent requests.
grpc rest networking concurrency goBuilt prior to the USDA having their own searchable database, this Java API parses through the 100 000+ foods and associated nutrient information available in their database data dumps. Uses a purpose-built balanced binary tree and weighted searching algorithm to return the most relevant results super fast. Fun fact: everything used here was built from scratch (searching, balanced binary trees, priority queues, linked lists)!
java custom-datastructures searchCollabaorative IDE for developers (similar idea to Google Docs, but it's an IDE). Supports compiling, syntax highlighting, debugging, file history, and more! Text modification inspired by Operational Transformation.
java sqlite tcp/ip operational-transformationCombines a DDR board built using conductive plates, pull-up resistors and an Arduino with a DDR-inspired game built using Unity. Linked up the arduino and game using a serial port.
c# c++ unity arduinoContains both the dealer and server for hosting hundreds of concurrent Blackjack games. Defines a TCP/IP API for communication with clients.
java tcp/ip concurrencyAside from being a developer, I spend most of my time on my feet. During the warmer months, I enjoy mountain biking, camping, canoeing, playing soccer and just appreciating the outdoors. When it gets colder, I love to go snowboarding, hiking, and enjoy the snow in all ways possible. I've also recently found lots of fun in skating and cross country skiing.
Year-round, I spend (too much) time in the gym and kitchen since I'm trying to reach some personal fitness goals. I also spend many of my nights reading about whatever seems interesting. Some particular topics that I've read a lot about are finance, investing, productivity, and software development. I've recently started maintaining a list of books I've read on goodreads.