Work

This page lists a selection of projects I’ve been hired to work on, in reverse chronological order.

Lariat Data

Part of YCombinator’s Summer 2021 batch, Lariat Data is an observability, monitoring, and alerting solution for machine learning pipelines. During my two year engagement with the company, I helped build the React application that allowed users to visualize the performance of their ML deployments, create alerts using a visual query builder, view dashboards composed of rich data visualizations, and a host of other features that formed the core of the product.

A demo dashboard on Lariat Data

During my time with Lariat Data, I had a chance to work on a variety of problems across different domains. Some of the interesting work I did includes:

  • Setting up and documenting a design system using Storybook.
  • Helping guide the design process for complex UI components.
  • Building a flame graph viewer to visualize and drill down into profiling data collected from production ML pipelines.
  • Building custom graphs using D3.js. To keep our UI fast and responsive, we chose to build our visualizations using the HTML Canvas API instead of the more commonly used SVG. When displaying tens of graphs on a single dashboard, our Canvas-based implementation kept the size of the browser’s DOM small, reducing memory usage and improving responsiveness.
  • Helping interview and on-board new hires for the frontend team.
  • Helping create a culture of reading and reviewing code.

Insider Live

Insider Live is an interactive streaming platform that allows viewers to participate in polls and quizzes synced to live video. While it’s built with Web technologies, Live can also be embedded inside an existing native app.

I was part of a team of two people who built the client for Insider Live, and helped integrate it with the native apps for a major payments and shopping platform in India. The project involved several technical challenges, including:

  • Synchronizing unreliable video and messaging channels with varying latencies
  • Keeping local application state synchronized with state stored on a remote server
  • Recovering from frequent network errors
  • Ensuring streaming video worked consistently across mobile platforms and browsers
  • Ensuring the application performed well on low-end Android devices common in India

Quintype

A story on The Quint

Quintype is a content management system tailored to fast-moving online news publications. It powers several large news outlets in India, including The Quint by Bloomberg, National Herald, and Fortune India. The Quintype team also builds Metype, a set of embeddable widgets that allow users to comment on and interact with news stories in real-time on any website.

I worked with Quintype on a focused two-week engagement where I helped them diagnose and fix performance issues on both the primary Quintype platform as well as the Metype widgets.

My work resulted in a significant jump in Quintype’s Lighthouse score, and a reduction of over 70% in Metype’s initial payload size. I also discovered and reported some insidious performance bugs that were slowing down common interactions in the Metype widgets.

During my time at Quintype, I helped two engineers learn how to profile and optimize front-end applications using the Chrome Developer Tools. I also ran a workshop demonstrating how some common front-end performance killers show up visually in Chrome’s profiling data.

Insider.in

Insider checkout flow

This was my second long-term engagement with the Insider team. During this engagement, I focused on improving reliability and code quality on their Web front-end.

  • I spent the biggest chunk of my time porting the Insider checkout flow from a legacy Backbone.js stack to a modern React stack.
  • Instead of using plain JavaScript for re-writing the checkout flow, the team opted to use TypeScript. This enabled me to build new features much faster than I could have with plain old JavaScript.
  • Before starting work on my rewrite, I wrote comprehensive end-to-end tests for the legacy checkout flow using Cypress. This ensured that the new version of the checkout flow behaved identically to the legacy version.
  • I ensured parts of the new checkout flow were well-tested by setting up tests with Jest.

StoryWeaver by Pratham Books

A story on Pratham Books StoryWeaver

StoryWeaver lets users read and create illustrated books in the Web browser in over 100 languages. It is developed and maintained by Pratham Books, a non-profit publisher of children’s books in India.

The primary audience for StoryWeaver is educators working at government schools and non-profits, often in remote areas that have limited network connectivity. To help these educators reach as many children as possible, me and my team built StoryWeaver as a Progressive Web App (PWA) that works completely offline, and lets users cache up to 12 books in the browser’s local storage.

The front-end for the website is built with React, and the REST API is built with Rails. I collaborated with Sidhartha Chatterjee and Saneef Ansari on the front-end. A team at Mirafra Technologies handled the Rails backend.

Adya

Adya demo

Adya is a SaaS security service that helps enterprises detect where their sensitive data is stored, and gives them tools to protect it from threats such as ransomware and insider theft.

In a span of eight weeks, I helped Adya build an MVP that allowed their users to connect multiple sources of data to their account, visualize file permissions across the different data sources, and view access logs for both files and users.

Saneef Ansari handled the UX and visual design of the product, while I worked on the engineering challenges inherent in visualizing a large amount of data in the browser. The MVP was built with React and Redux, and it could handle several thousand users and files without slowing down.

abof.com

A product listing page on abof.com

abof is an online fashion retail brand owned by the Aditya Birla Group. I was part of the three people team of consultants commissioned to rebuild the abof website from the ground up using modern web techniques.

We built the new version of the website as a universal React application. At the time of release, it loaded in less than 7 seconds on slow 3G connections, almost instantly on wired connections, and performed well even on low-end Android devices. This performance boost reduced abof’s bounce rates by more than 60%.

I’ve written extensively about the project on my blog: part 1, part 2, and part 3. I’ve also spoken about it at JSFoo 2016.

The team that rebuilt abof consisted of me, Ciju Cherian of ActiveSphere, and Saneef Ansari of Alaris Prime.

Insider.in

Insider.in homepage

Insider.in is a curated ticketing platform run by Only Much Louder, an artist management company that owns several entertainment properties in India.

I was hired to augment the small team of developers already working at the company in Bombay. I worked on all parts of the platform, including:

  • The suite of microservices that powered Insider’s REST APIs, built with Node, MongoDB, and Redis.
  • An administration console for vendors, venue managers, and OML employees, built with AngularJS.
  • The consumer facing website, built with Backbone.

Additionally, I introduced the team working at OML to JavaScript best practices and Git workflows suited to a large, fast-moving team.

TestMyFont.com

Comparing two fonts on TestMyFont.com

TestMyFont.com is an open source browser based tool to visually compare fonts, built with AngularJS.

Source code.

Snorkel

Snorkel was a product that allowed users to write Excel formulas using Python, and gave them access to powerful libraries such as NumPy and SciPy. The Python code was run on a cloud server, which allowed for more complex, CPU-intensive computations than a local copy of Excel can handle.

I worked on all parts of the product, which included:

  • A web frontend built with AngularJS that allowed users to create new formulas using CodeMirror. Every time a formula was saved, it was run through a custom linter that warned users when they were doing something that might result in an error.
  • An Excel plugin that allowed users to import and call Python functions using a REST API. This was originally written using Visual Basic, and later ported to C# and Excel-DNA.
  • A REST API that both the web frontend and Excel plugin consumed, built with Python and Flask.
  • A sandbox for securely running arbitrary Python code. Security was achieved using a mix of techniques that included: heuristics to detect potentially harmful code, a monitor process to kill misbehaving subprocesses, Linux permissions and ulimits, and AppArmor. The sandbox was built using Python and communicated with the REST API using ZeroMQ.

index_server

A prototype of the index_server search UI

index_server is a full-text file indexing daemon for Haiku OS, similar to the daemon that powers Spotlight on Mac OS X. It’s written in C++ and uses CLucene for creating and querying the file index.

I built index_server as a part of Haiku Code Drive 2009. After I stopped working on it, it was massively refactored and incorporated into the Haiku source tree.