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:
Backend Engineer
Hasty.ai
November, 2019 - October, 2021
- Initiated and migrated a number of functionality from Python backend monolith to Go/Python microservices (image processing, authentication/authorization with rate limiting, async jobs processing, etc.).
- Implemented/optimized major product features in backend API - credit system, long running jobs, video processing, data replication/maintenance, webhooks, etc.
- Added a caching layer for efficiently triggering training/prediction services which gave a performance boost.
- Added wasm support for frontend for efficiently encoding/decoding image data from backend API.
Senior Software Engineer
Genome
April - September, 2019
- 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.