/ projects
★ 2.5k
A CLI tool to display git diffs with syntax highlighting in a side-by-side view:
When collaborating with other developers, we spend a lot of time staring at diffs in our terminals. The default formatting of those lags pretty far behind what you can see on GitHub or a modern IDE like VS Code. So I built this tool, which acts as a pager for diffs, parses them, reformats them and applies a syntax highlighting theme on them.
★ 6.2k
A highly customizable shell prompt:
This was inspired by the beautiful Powerline plugin for vim. It comes with a long list of segment types (git status, battery, node version etc.) that you can mix and match to create a prompt you like. It inspired a go fork. Buck Ryan took over its ownership in 2018.
A physically based raytracer in rust. Some sample images:Started it to learn rust, but admittedly got carried away while reading pbrt and implemented a BVH, a parser for my own scene file format, a multi-threaded renderer and support for triangle meshes, focal blur, textures, multiple importance sampling and several materials.
A tool for writing AST-based refactorings for large Python codebases. While working on Quip's large Python codebase, which we refactored often, I felt the need for a better refactoring option than regexes. It uses the lib2to3 library to convert between an AST and code, which preserves comments and whitespace much better than the ast module.

I wrote a similar tool for TypeScript here, which I used at Airtable to safely remove some deprecated functions.
miniJava compiler
A compiler for a subset of Java, for the COMP 520 class at UNC. I had a lot of fun writing this and trying to maximize the points we got on the assignment by adding more features like function overloading and making it more reliable by writing a fuzzer. I was told by the professor that it was one of the best performing compilers he had seen in this class.
This very website. I wrote all about it in this blog post, but I essentially wrote a static site generator that builds and deploys this site to GitHub pages on every push.
Gmail multi-account mail checker
A Chrome extension that expanded on the Google Mail Checker extensions provided by Google by allowing you to track multiple accounts at once:
At its peak, it had around 35k users, according to the Chrome web store. It also had the dubious honor of causing a "DDoS on Gmail", to quote the PM on the extensions team.
In the early days of the internet, "download accelerators" were popular tools to help you speed up downloads of large files. These worked if the source limited outgoing bandwidth per connection, but supported Range requests. If so, the accelerator would split up the byte range of the requested file into chunks, establish a connection per chunk and then combine the chunks when downloaded. I wrote an Android app that did the same thing. I wrote it partly to learn the platform, but got a few paying users too.
GitHub PR Extension
Fills in a gap in the GitHub UI of adding keyboard shortcuts for navigating between comments on a PR. This was popular internally at both my previous companies.
Intel 8085A emulator
Built an emulator for Intel 8085A assembly for a class project in undergrad.
My résumé lists interesting projects I did for work.
Shrey Banga