Will Wang
I am an engineer.
B.S & M.S Computer Science @ UC Berkeley.
Distributed and Operating Systems
SWE Intern @ Google GKE
About
I'm Will, a current M.S. and former B.S. student at UC Berkeley. I'm a Kubernetes fanatic and am interested in building distributed systems and infrastructure. I'm currently interning on the Kubernetes Storage team at Google working on the CSI PD Diver and scaling storage to 5000+ nodes.

I've advised by Prof. Scott Shenker and am part of NetSys lab. My research concentrates on difficult problems in distributed systems such as resource allocation optimization. I've taught the Operating Systems and Networking classes in various GSI positions. Aside from school, I develop for the non-profit site berkeleytime.com.

Check out out my resume, GitHub, LinkedIn, and email.

In true Kubernetes fashion, here is a summary of who I am as a Kube resource YAML.
My Face

  kind: SWE
  apiVersion: apps/v1
  metadata:
    name: Will Wang
  spec:
    education:
     - M.S. Computer Science @ Berkeley (2020)
     - B.S. Electrical Engineering & Computer Science @ Berkeley (2019)
    experience:
     - SWE Intern @ Google (Kubernetes Storage, GKE)
     - Product Manager, Backend Engineering Lead @ berkeleytime.com.
     - SWE Intern @ Kelda (Kubernetes)
    research:
      advisor: Prof. Scott Shenker
      lab: Network Systems
      concentration: Distributed Systems
      projects:
       - Resource Allocation Optimization in Distributed Systems
       - Security and Privacy Policies via Lineage Tracing
    teaching:
     - Head GSI @ CS 162 Operating Systems (Fall 2019)
     - uGSI @ CS 162 Operating Systems (Spring 2019)
     - uGSI @ CS 168 Networking (Fall 2018)
    writing:
     - How Microservices Saved the Internet (Medium)
     - Demystifying containers 101 (Medium)
    
Experience
Here are the companies and organizations that I either previously or currently worked for as an engineer. For specifics involving the work done or (if possible) code written, please contact me by email. I have also done a lot of course development for CS 168 and CS 162, which is not listed here.
Google
Software Engineering Intern
Summer 2019
I worked on a couple projects as part of the GKE Kubernetes Storage Lifecycle team. My project focused on improving the performance of the storage stack to support large multi-thousand node clusters. I worked on parallelizing and ensuring idempotency in GCP Container Storage Interface Persistent Disk Driver operations, scale test both in-tree and CSI storage plugins, and mitigating known scaling bottlenecks.
Kelda
Software Engineering Intern
Summer 2018
I worked with a small team of researchers from NetSys on making Kubernetes more accessible by creating a local development tool that eases the complex CI/CD and incident response pipelines. I built applications using GKE, AWS, and Minikube along with monitoring, logging, and CI/CD tools such as Jenkins, Spinnaker, Gitlab, Prometheus, Elasticsearch, etc.
Berkeleytime
Backend Engineering Lead
September 2017 - Present
Berkeleytime is UC Berkeley's most popular course catalog, with over 26,000 unique monthly users. I led and developed on major initiatives to redesign a new frontend in React and move our infrastructure from Heroku to Kubernetes. I also worked on Django backend projects like the scheduler, user authentication, and application performance.
Gulfstream Aerospace
High School Intern
August 2015 - June 2016
In high school, I was interested in mechanical engineering and so took an apprenticeship at Gulfstream Aerospace working on interior mechanical design of their G550 and G650 aircraft.
Teaching

I haven't been teaching for too long, but I have held various roles across the the courses here at Berkeley, mostly in the systems area. So far I have been a:

And I have created the following learning material:

Research
I currently research in the UC Berkeley Network Systems laboratory. My work deal mainly with distributed systems, its optimization, and providing system guarantees. My research is focused on practical solutions to real world problems in distributed systems. I've been involved in research since I was a freshman in undergrad, and I have worked on all aspects of research as you would expect from a graduate student. Most of my work is implemented in Go, Python, and Javascript, although I have additionally used C and Ruby. Service level knowledge include Docker, Kubernetes, and AWS/GCP.
Resource Allocation Optimization in Distributed Systems (AutoTune)
The AutoTune project aims to reduce the cost to deploy a distributed system by minimizing resource allocation while improving performance. It automatically cuts down on overprovisioned resources and alleviates underprovisioned ones, then packing the system into the minimum number of nodes required. AutoTune is implemented in Python and uses microservice-resource stressing to determine under and over provisioned resources. A pre-print paper for this project is available upon request.
Security and Privacy Policies via Lineage Tracing
This ongoing project aims to build a system for globally deploying and enforcing data based policies at the microservice level with-out intrusive application code level modifications. We hope that it can be used by compliance experts with minimal software engineering experience to easily program complex privacy and security policies into existing infrastructure. This is accomplished by tracking pieces of data, called tuples, at the cluster level using data lineage and then blocking the flow of data between microservices if it does not pass all the relevant policies. A very rough whitepaper is available upon request.
Verified Triggers
Verified Triggers was an exploratory project to safely declare and enforce cluster wise policies in Kubernetes. Operators running a distributed system can enforce properties (i.e. fault tolerance of a distributed database) by specifying a set of event driven triggers that perform an action (i.e. move worker if more than 50% of workers on same machine) when activated. When systems become complex, these triggers may have unintended and troublesome effects when used together, most notably non-convergence or unbounded growth.