hi!

hi! i'm

i'm 

jacky. a student. a software dev. a builder.

ubc // currently @hootsuite && @mlh

about.

I am a passionate software developer trying to build solutions to the world’s problems. Whether that be through creating neural networks or building web applications, all my work is focused on one thing: impact. When I'm not coding, you can find me hitting the climbing gym, grabbing a bubble tea, or exploring beautiful Vancouver! Feel free to download my resume or contact me for a quick chat at j.zhao2k19@gmail.com

{
"name" : "Jacky Zhao" , "isJobSearching" : false , "student" : true , "goal" : "building solutions to the world's problems" }

experience.

MLH Fellowship

2020 // Fellows Class 0

Selected as one of 144 fellows to be part of the inaugural class of the MLH Fellowship program from a pool of 20,000 applicants. Worked on BentoML, an open-source framework for high-performance ML model serving. Built Debian-slim based Docker images for containerizing model server, reducing base image size to just ~40% of its original. Improved logging in AWS Lambda Deployment operator.

  • Pytest
  • Docker
  • AWS Lambda
Python , Dockerfile

Hootsuite

2020 // software developer intern.

Added alerting and monitoring for key SLOs on the paid signup flow with Grafana and Prometheus. Added monitoring dashboard and alarms for website cache with AWS CloudWatch. Increased accessibility on paid signup flow and added various end-to-end frontend tests. Implemented various A/B tests.

  • Twig
  • React
  • Jest
  • Cypress
  • Terraform
  • Ansible
  • Grafana
  • Prometheus
JavaScript , PHP , HCL

Hootsuite

2019 // software developer intern.

Prototyped new service mesh with Istio and Envoy. Involved with breaking down the Social Media Communication monolith service into microservices. Refactored and improved logging and error handling in legacy Scala code. Implemented an internal endpoint to assist with data compliance requests. Defined and implemented Service Level Objectives (SLOs) for 3 of Hootsuite's core internal services. Wrote unit and integration tests in Go and Scala.

  • SQL
  • Envoy
  • Istio
  • Kubernetes
  • Docker
  • Sumologic
Go , Scala , Dockerfile , Bash

video.

short video I shot and edited explaining three of my favourite projects to date, along with some really short demos.

► play.

???

???

projects.

ctrl-v

— a modern, open-source pastebin

[site] [github]

ctrl-v is a modern, open-source pastebin with LaTeX and Markdown rendering support. Any user can create a paste without an account, with the ability to protect it with a password and set an expiry date. Additionally, ctrl-v does code highlighting as well as LaTeX and Markdown rendering. Pastes are stored in a MongoDB Atlas instance. Backend is a containerized Go service deployed on Google Cloud Run. Frontend is a React app deployed via Firebase Hosting.

  • React
  • Firebase
  • styled-components
  • MongoDB
  • Cloud Run
  • GCR
JavaScript , Go , Dockerfile , HTML

reflect

— a mindful website blocker for the productive

[site] [github]

reflect is a browser extension focused around asking users to reflect before visiting distracting sites, helping to reduce mindless scrolling while still being able to get work done. During closed-beta, we created a Go service that logged user intents to a Cloud SQL database and did intent classification by serving a basic Flask API. We then trained an LSTM network in Keras on the closed-beta data and augmented it using NLP data augmentation techniques, reaching ~86% classification accuracy. Finally, the model was ported to Tensorflow.js where it runs in-browser within the extension which is written in Typescript.

  • Kubernetes
  • Docker
  • GKE
  • Cloud SQL
  • Keras
  • Tensorflow.js
  • Flask
  • CircleCI
TypeScript , Python , Go , Dockerfile

nanoDB

— a simple, easy, and debuggable document database

[godoc] [github]

nanoDB arose out of many frustrations I've personally come across while prototyping, namely 1) difficulty of debugging data 2) faffing around with language specific drivers and 3) reference resolution. As a result, nanoDB stores everything on disk as a JSON document, has built-in reference resolution, and can be used fully through a REST API. Think of it like Redis but with MongoDB style documents — all of which is on-disk, human-readable, and through a REST API. The project is fully written in Go and is thoroughly unit-tested. It features a standalone server binary which creates a nanoDB server, as well as a shell which allows you to do some basic document inspection.

  • Docker
Go , Dockerfile

readAR

— an AR app to help those with learning disabilities

[devpost] [github]

readAR is a mobile AR app re-renders text to be more dyslexic-friendly, and adds context-dependent word definitions and images. A custom BERT model was created and trained for word sense disambiguation (WSD), achieving a 76.6% F1% score on the test dataset which is only ~5% away from state-of-the-art. This model is served through Flask on an Oracle VM Instance. The API is also responsible for our image processing pipeline, which is a conglomerate of different Azure APIs (OCR, Text Analytics, Bing Search). Built at TreeHacks 2020, winning the Microsoft Azure Champ Prize - Hack for Good.

  • PyTorch
  • Flask
  • Dockerfile
  • Azure
  • Oracle Cloud
Python , Dockerfile , Bash

Speech2Braille

— a wearable device to transcribe speech

[paper] [github]

Speech2Braille was created to help the over 360 million people in the world who have debilitating hearing loss. This project entailed creating an end-to-end speech recognition system using an Deep LSTM and a portable device to display braille. The device is able to recognize audio and transcribe it into Braille through the haptic feedback device via a novel neural network architecture. The feedback device is a self-made GPIO hat, consisting of 6 solenoids. The neural network itself is 2 layered LSTM-CTC network with 256 hidden cells in each layer, achieving 92% state-of-the-art word error rate on the TIMIT dataset. Won Silver and 10k in awards at the Canada Wide Science Fair.

  • Tensorflow
  • numpy
  • Raspberry Pi
Python , Bash

PacketBook

— blockchain banking without internet

[devpost] [github]

PacketBook is a financial accessibility chatbot, fully accessible through the SMS (text messaging) protocol. Users are able to issue simple commands to register, check their balance, deposit, withdraw, and send money. These commands are secured with two-factor authentication through a Flask server on Heroku with Twilio. The backend that handles transaction is written with Node and Express and deployed on stdlib. PacketBook is unique in that it leverages the Stellar blockchain and tokens (XLM) for its transactions which greatly reduces operating overhead with its minimal transaction costs (around 1/100 of a cent per transaction).

  • MongoDB
  • Node.js
  • Express
  • Flask
  • Stellas
  • Heroku
JavaScript , Python

Envoy Front Proxy

— go service mesh skeleton

[github]

This project is an Envoy service mesh skeleton with External Authorization and Custom Header Injection. This proof of concept shows that Envoy can be used in conjunction with external auth (ext-authz) to manage routing, headers, and auth. As an added bonus, Envoy allows easy built-in load balancing. Intended to be used as a skeleton project to reduce boilerplate in future Go service mesh projects.

  • Envoy
  • Delve
  • Istio
  • Docker
  • Kubernetes
Go , Dockerfile

Personal Website

— the thing you're on right now

[github]

You'll notice that this site is almost identical to my previous one, but under the hood a lot has changed! I got tired of adding divs and text manually everytime I wanted to update a project/add new stuff, so I decided to something more powerful that supports templating to do it for me automatically. It takes advantage of Go templates in order to generate the site from just a few config files! Now, updating the site is as simple as editing a YAML file.

  • Hugo
  • lite.css
JavaScript , HTML , CSS

made by jacky zhao, © 2020

[linkedin] [email] [github] [medium]