University of Wisconsin-Madison (Madison, WI, USA)

Graduate Research Assistant, August 2015 - Present

I work as a Research Assistant under the guidance of Prof. Barton Miller in the Paradyn group. My work focuses on porting Dyninst, a binary analysis and instrumentation tool, to the ARMv8-A architecture.

Porting the tool to a new architecture involves porting several different APIs that together make up Dyninst. I worked on InstructionAPI and am currently working on the ports of DataflowAPI and ParseAPI.

InstructionAPI is responsible for decoding raw bytes from a binary file and converting them into a tree-like representation that can be used by the other APIs. Porting it required extensively working with the ARMv8 manual, understanding instruction representations and making optimizations to the instruction decoder for faster processing.

Novell India Development Center (Bangalore, India)

Software Engineer, July 2013 - June 2015

I worked as a developer for Sentinel, a SIEM (Security Information and Event Management) product. My work and contributions include the following:

  • Re-designed the threading logic of a .NET based service thereby improving its memory utilization by about 70%. The service was responsible for collecting Windows events from remote machines via WMI and DCOM. Working on this issue involved a considerable use of .NET memory profilers, improving understanding of .NET's memory management, understanding the flow of a moderately complex code-base with several inter-related components and closely working with Microsoft on a support request intended to better understand the memory usage issue.
  • Made several feature enhancements and stability improvements bug fixes to a Java based component responsible for routing events from the above mentioned service to the Sentinel server which processed the events sent by the service.
  • Improved the performance of Sentinel Agent Manager - a distributed, multi-layered Windows component. This component consisted of agents on remote machines which collected data from those machines and sent it to one or more servers for processing. This was a fairly complex and large codebase and the changes made to it by the team I was a part of resulted in considerable improvements in its data collection performance and stability.
  • Sentinel Agent Manager had several issues with its installer wherein the installer failed or crashed frequently. My team's work on the installer (using InstallShield) resolved most of these issues and made it a lot more easier to use, bringing down the installer related bugs from once a week to about once a month on average.
  • Fixed several critical customer reported bugs distributed across several other components of the product.
  • Gave a workshop on Git to the whole product team during the migration of the product to Git from a different version control system.
  • Interacted with customers in several different countries, and with developers and testers spread across the globe by being a part of geographically diverse scrum teams.

Avaya India Private Limited (Pune, India)

Software Development Intern, May 2012 - July 2012

I was responsible for developing a new tool that monitored the performance of Java processes. More specifically, it did the following:

  • Collected diagnostic data about Java processes using the SIGAR API and stored it in a MongoDB database. This data consisted, among other things, of the memory (heap and non-heap) usage of a process, number of active threads and CPU usage. The processes to be monitored were specified by the system administrator.
  • Created a web front end for the user to view the collected in real time. The various data for each process were presented in the form of graphs generated using the Google Graphs API. The graphs updated periodically with data from the MongoDB store.
  • Created another web front end, similar to the one above described above, except that this was used for historical (non real-time) data. The data collected in real-time was stored in files (MongoDB was used only for real-time data) and the user could specify the time period for which the graphs were to be viewed.

I'm a graduate student in computer science at the University of Wisconsin-Madison. I'm part of the Paradyn research group under Prof.Barton Miller where I work on Dyninst - a binary analysis and instrumentation tool.

My primary interests lie in system software and mobile application development. Operating systems especially fascinate me and I've spent a considerable amount of time in understanding how computers work at the lowest level. I'm also interested in understanding mobile systems which led me to experimenting with and eventually developing an interest in developing mobile apps. The only platform I've worked on is Android, but I intend to try more in the future. Besides all of this, I love technology in general and enjoy learning about whatever I can get my hands (and eyes) on. I also like to encourage and guide people into tech, especially programming.

Besides computer science, two of my biggest passions are history and astrophysics. I enjoy reading about all periods of history, but most of my knowledge and interest is focused on World War II and German history from 1918-1945. I've spent several years educating myself in these subjects and love discussions on them with other enthusiasts of the topic. I'm also trying to focus on the few years surrounding the Partition of India. My interest in astrophyics comes from a broader interest in physics. I'm well-informed (but by no means an expert) about the theories of relativity, cosmology, the basics of string theory and stellar evolution.

In my free time, I pursue several other interests. I'm a voracious reader and used to read a book a week until the responsibilities of a job and graduate school made their call of duty. The genres in fiction I enjoy are fantasy, sci-fi, action/thrillers, historical fiction, literary classics and general fiction. I enjoy ballroom dancing, traveling, learning new languages, reading about psychology and the history of human evolution, playing the piano and competing in quiz contests.

You can contact me directly using e-mail, or leave a message using the form below. You can also find links to my StackOverflow, LinkedIn and GitHub profiles at the bottom of the page.