Work Experience

GoogleGoogle Logo

Software Engineering Intern

New York, NY
Sep. 2018 — Dec. 2018
Designed and implemented a library to parse arbitrary Ruby files and convert them into an abstract syntax tree (AST) representation; the library utilizes the Ruby C API to create a virtual machine which can execute Ruby code to leverage a parsing library written in Ruby

  • Investigated strategies to parse arbitrary Ruby files for our team’s use cases which would work best within Google’s stack, keeping in mind security concerns of third-party dependencies
  • Wrote a number of prototypes to test various approaches before finally settling on a design utilizing Ruby's C API interfacing with Golang
  • Wrote a write up of the pros and cons of the various alternatives in my design document and made the corresponding design decision that fit best within our team’s technology stack
  • Wrote well documented and tested C code using the Ruby C API, wrapped in Golang functions to execute Ruby code to parse the Ruby files and return an AST representation
  • Implemented AST traversal logic to traverse parsed Ruby source files to construct Golang structs representing the fastlane configuration files by pulling out domain-specific language (DSL) information from the Ruby source
  • Debugged issues with the Ruby C API usage in Golang due to limitations of how the Cgo package handles C signals due to having smaller stack sizes in goroutines. Updated how the Ruby language handles C signals by modifying the Ruby language C source to mitigate these issues
  • Wrote comprehensive and robust unit test suites to cover a variety of different types of edge-cases in the parser
(Golang, C, Ruby)
Implemented an unparser for the Ruby language to transform an arbitrary AST representation back into its corresponding equivalent Ruby source code so that modifications could be made to the syntax tree and the Ruby code could be reconstructed
(Golang, Ruby)
Designed a frontend Angular component to display the fastlane DSL information from the parsed Ruby configuration files
(Angular, TypeScript, HTML, SASS)
Developed front-end services to fetch, store, update, and select the DSL data from the backend store
(Angular, TypeScript, RxJS)

DataDogDataDog Logo

Software Engineering Intern

New York, NY
Jan. 2018 — Apr. 2018
Implemented a persistent caching system for Homebrew, improving performance of the brew linkage command by 97%. Wrote a blog post detailing the analysis & optimization
(Ruby, SQLite3)
Designed and implemented an open-source, self-hosted server for managing Trello cards based on GitHub webhook events. The code is available on GitHub
(Python, Flask, PostgreSQL, Redis)

DoximityDoximity Logo

Software Engineering Intern

San Francisco, CA
May 2017 — Aug. 2017
Converted background job processes from resque to sidekiq in internal deployment tool, and implemented a redis-based locking mechanism for restricting the number of deployment jobs to one job per staging/production environment
(Ruby on Rails, Redis)
Implemented a service to lock merges into production GitHub repositories while deploys to production environments were locked through our deployment service, by sending status healthchecks to the GitHub API
(Ruby on Rails, Redis, GitHub API)
Developed a web scraper to query GitHub's GraphQL API to find potential hires for engineering outsourcing. Please see my blog post for more details:
(Ruby, PostgreSQL, re:dash)
Designed a visitor check-in system for external guests visiting HQ employees. Upon checking-in, the system would automatically send a slack message that the guest is here
(JavaScript, Slack API)
Created a service to query gem metadata from our organization's GitHub repositories, (important for seeing where security related vulnerabilities exist, caused by gem versioning issues)
(Ruby, PostgreSQL, re:dash, GitHub API)
Implemented a web interface for project managers to filter and aggregate pivotal tracker scrum stories based on state, owner, date since accepted, etc.
(Ruby, Sinatra, PivotalTracker API)

Vena SolutionsVena Logo

Software Developer Intern

Toronto, Ontario
Sep. 2016 — Dec. 2016
Optimized SQL queries in a REST API by solving an n+1 query problem instance, fetching lazily loaded object members before object serialization, decreasing mean response time by 99% (~1m to <1s) for the endpoint
(Java, MySQL, Hibernate)
Placed second in pair test-case writing competition involving all developers at the company (~60 people), judged by the quality and quantity of test cases written
(Java, JUnit, Selenium)
Extended internal command line tool to automate API tests in parallel, by threading the execution of tests
(Python, Node, Mocha, Postman)

CoupgonCoupgon Logo

Front-end Developer

Toronto, Ontario
Jan. 2016 — Apr. 2016
Developed an internal store analytics application which dynamically generates store maps to monitor the flow of users in a grocery store, based on JSON data from a RESTful endpoint
(Angular2, TypeScript)
Created an embeddable user interface for displaying weekly coupons to exhibit on our partners' websites
(CoffeeScript, EJS, SASS)
Implemented a custom testimonials page with cross-fade animations for text and images using JavaScript fade-ins
(CoffeeScript, Haml, SASS)

Open Source Experience

FastlaneFastlane Logo

Continuous Integration
Feb. 2018 — Present
Core contributor to Fastlane Tools, helping build mobile-first continuous integration
(Ruby, Sinatra, Angular, TypeScript)

CalderCalder Logo

WebGL Shader Language
Sep. 2017 — Present
Co-designed and developed an API and code editor to design procedural models interactively from guiding curves
(TypeScript, WebGL, JavaScript)

ConductorConductor Logo

Distributed Scheduling System
Sep. 2017 — Dec. 2017
A distributed job management system for registering workers, and scheduling jobs to execute on them, allowing for conditional scheduling based on job status and output
(Ruby on Rails, PostgreSQL)

EmeraldEmerald Logo

HTML5 Templating Engine
Sep. 2016 — Present
Co-designed and implemented a whitespace-delimited, language-agnostic, HTML5 templating engine with support for variable scoping, interpolation, iteration, and conditional logic
(C++ & Boost, Ruby)
Developed an emacs major-mode package for the templating language which includes a syntax highlighter, based on regular expression grammar rules
(Emacs, Emacs Lisp)
Implemented a minimum viable product and proof of concept as a Ruby gem
(Ruby, RubyGems)

Volunteer Experience

EngSocEngSoc Logo

Vice President, Academic

Waterloo, ON
Sep. 2016 — Dec. 2017
Coordinated professional development events for hundreds of engineering students such as tech talks, career fairs, résumé critiques, and interview skills workshops
Advocated for undergraduate engineering students on university and faculty committees for issues related to academics, co-op, and professional development