This page lists a selection of projects I’ve been hired to work on, in reverse chronological order.
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 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.
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.
- 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
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 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 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%.
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.
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.
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.