> Ramesh

GitHub, GitLab, Blog, LinkedIn, GPG,

Email: me at ramesh dot tv

I'm a 4th year student at Rutgers University and aspiring software developer (or researcher, still haven't decided!). I like operating systems, hypervisors, systems programming, and high-bandwidth/low-latency computer networks. If you are hiring or need a grad student in these domains, e-mail me!

I also have a good amount of experience in many other languages, infrastructure and full-stack (email me for my CV for additional information). Other than programming, I enjoy writing stories stories (kind-of out of date and features not-great stories), and I also "maintain" a blog that tries to document technical (and sometimes non-technical) things that I find interesting (note the bubble tea post is egregiously incorrect). I also enjoy reading books and sometimes aimlessly thinking about the world. My favourite book series is the Stormlight Archive. You should read it too.

Here's a list of (semi-)recent (semi-noteworthy) programming projects that I've worked on (everything else is available on GitHub/GitLab):

Styx Emulator: I'm working on getting emulation for Qualcomm Hexagon DSPs supported on the Styx Emulator. This includes the ISA, peripherals, and other stuff like that to get Hexagon-based firmware up and running. This was fun because Hexagon is a VLIW architecture, and has fun quirks in its packet semantics that requires staring at the 699-page manual to figure out.

LightVideo: This is the continuation of my vGPU streaming project, when I realized that low-latency video streaming is harder than it seems. I wrote a "test platform" video streaming library (geared towards remote desktop) that uses hardware acceleration, variable bitrate, and forward error correction. It also has an extensive statistics collection system to measure how video streaming performance changes based on parameter and packet loss mitigation changes.

vGPU Streaming (finished): My remote desktop software captures the buffer of an NVIDIA vGPU running in a KVM virtual machine and uses video streaming (using the FFmpeg C API) to provide a remote desktop. In addition to streaming video, it has a custom TCP protocol using Protocol Buffers to transfer connection information and mouse/keyboard events between the client and server. The client is written in C++ (for decoding the video stream) and Rust (the UI and everything else). The server is written in C (for capturing the VMs and streaming) and Rust (the TCP control server).

vGPU RE: I think VDI, game streaming, and that sort of thing is pretty cool. I worked on reverse engineering NVIDIA's vGPU software and NVIDIA drivers to make GPU virtualization work better. This involved various things like spending hours on doing things with kprobes, staring at Linux driver code, recompiling Xen a bunch of times, doing lots of things with hooking functions and LD_PRELOAD using tiny C and Rust programs, and staring at assembly. At some point I got GPU virtualization working on a GTX 650Ti, mainly for the memes.

MQA Player (finished): I used a shared library for a DAC that was an armv7 machine running embedded Linux and existing code that called aforementioned library, but expanded on it to make an IPC system to decode MQA on-the-fly from an x86 executable, which involved implementing my own mutexes and semaphores and learning how to use shared memory.

emotes-rs (finished): When you chat on Discord and paste the link to an image, Discord will remove the link and you'll only see the image. I thought it would be cool if you come up with memorable URLs that return images that are the size of emojis, allowing you send custom "emojis" in Discord. The Rust backend I wrote exposes a GraphQL API (using the wonderful async-graphql library) to manage users and uploading emotes, that uses SQLx to communicate to a PostgreSQL database. It also utilizes libvips to resize images quickly (resizing GIF emotes can be quite expensive and this library is exceedingly performant). I also wrote a version of this application in Python which was somewhat more featured, but it became impossible to maintain since I used too many niche libraries that were poorly documented. A frontend for emotes-rs is also available here.

(This site intentionally written with 10 lines of CSS)