Ravi Shankar

Programming Skills:

Languages: Rust, Python, Swift, HTML5, TypeScript, Go, Bash.

Technologies: Unix (OS X, Ubuntu), Git, REST, Vue JS, Docker, Kubernetes.

Practices: Version-controlled, Agile, Test-driven.

Experience:

Senior Software Engineer
Genome April, 2019 - Present
  • Initiated and incrementally ported the backend pipelines in Python to Go.
  • Helped with building an analytics engine (in Python and Rust) for monitoring AWS services.
  • Booted paperclip - an open source OpenAPI tooling library for type-safe compile-time checked HTTP APIs in Rust. As of now, it supports generating client library and CLI for APIs based on an OpenAPI v2 spec and offers a plugin for actix-web framework to automatically host an OpenAPI v2 spec.
Cofounder / Engineer
Naamio October, 2018 - March, 2019
  • Built an automated platform-agnostic operator for managing Kubernetes clusters without having to rely on a cloud provider's Kubernetes service - it supports autoscaling nodes on demand, partitioning/attaching/cleaning up disks, creating/managing load balancers and deploying apps using Helm charts without the use of kubectl / helm CLI.
  • Helped a client migrate their apps to Kubernetes clusters (in Azure) using the operator.
  • Wrote a tool for automating deployment of internal web apps through CI for review, staging and production.
Full-stack Developer
Omnijar Studio October, 2017 - September, 2018
  • Contributed to building a scalable e-commerce platform from scratch (in Swift, backed by CockroachDB) gated by an OAuth2 service with RBAC (in Go).
  • Implemented multiple features for the storefront and admin apps (in VueJS) for the e-commerce platform.
  • Wrote a bot library for Wire messaging app (in Rust).
Full-stack Developer
Surematics June - August, 2017
  • Contracted for a startup that develops applications for insurance brokers, which participated in the YCombinator summer (S-17) batch.
  • Wrote backend services for chat, auth and crypto (in Rust), worked on the webapp (pure TS) and took care of deployments in a Kubernetes cluster.
Backend Developer
Genome Life Sciences January, 2016 - February, 2018
  • Wrote utilities in Rust for bulk parallel processing of chromosome and DNA sequence data in FASTQ, SAM and VCF file formats.
  • Notable tools:
    • A species finder that matches and maps sample DNA data to find known species.
    • A sequence aligner which uses Burrows-Wheeler transform and FM-index to backtrack and map DNA sequences to the human reference genome. Its backend is now open-source and I've blogged about its basics.

Open source contributions:

Servo

  • Contributor and reviewer for Servo browser engine project (2015 - 2017).
  • I worked on the style system (as part of Quantum CSS project), python-based build system, and mentored newcomers. Apart from helping folks in IRC and Github issues, I've authored more than 100 commits and reviewed more than 200 pull requests.
  • Implemented code for parsing and serialization of CSS grid shorthand and longhand properties.
  • Wrote handlers for highfive (a bot that responds to Github webhook payloads by welcoming newcomers, assign/tag issues and pull requests, post build failures, etc.) and a "mark and sweep" JSON cleaner for its tests.
  • Created a watcher that tests Servo builds in a machine, analyzes the logs, keeps track of "rr" recordings of intermittent failures, and uses the Github API to file issues or comments to notify the people who work on such issues.
  • Wrote a compiler plugin for checking sorted order of declaration statements.

Other

  • Wrote a Github app (bot) which provides a friendly welcoming environment to open-source contributors. It tracks issues and pull requests, and performs actions such as assigning, labelling and commenting on issues and pull requests (using the Github API).
  • Occassional contributor to the Rust programming language, its documentation and related tooling.
  • Mozillian since the summer of 2015.

Miscellaneous:

  • Organizer for the Rust Chennai meetup.
  • RGSoC Coach (primarily for Rust/Servo).
  • Blogger since 2013 at wafflescrazypeanut.wordpress.com and now, at blog.waffles.space.
  • Contributor and reviewer of posts at Physics Stack Exchange for two years (2013-2015).
  • I also play with code and make some cool stuff in my free time:
    • An ASCII Art Generator for images which extracts the necessary details for generating the ASCII sketch - written in Python, later ported to Rust, now running in pure Wasm.
    • A CSS injector that slowly injects a stylesheet into a style element in the DOM and gets rendered in realtime.
    • A responsive website for our college symposium without the use of any external libraries.
    • A terminal based 2D-ASCII game (in Rust) which makes use of terminal’s raw mode, interacting with Unix C APIs for polling keystroke inputs, and prints thousands of characters frame by frame to indicate motion.
    • A private diary (in Python), which allows users to write their everyday stories, view them, or search through them later. It makes use of a simple shifting cipher to encrypt/decrypt the contents. It also uses a Rust library (through FFI) for searching.
    • A "file-backed" map (in Rust) which uses binary search and file seeking to insert/get key-value pairs in disk.