Welcome to my world. I am a senior in Computer Science at Purdue
University, West Lafayette. I am also enrolled in Purdue's combined BSMS
program, so I will graduate with a Masters in Computer Science in May
2023. I am originally from India, which is where I have spent most of my
life. I enjoy working out, specifically weight lifting, and I
recreationally play the guitar. I have always been amazed by the wonder
that modern tech is, long before I wrote my first line of code, and that
fascination continues to drive me forward.
I went to Vasant Valley School for my formative education back in India,
where I received not only an exceptional academic foundation, but also a
wholistic development that shaped me as an individual. Now, I am pursuing
a B.S. in Computer Science at Purdue University,minoring in Mathematics
and also working towards the Certificate in Entrepreneurship and
innovation.
I am currently working as a Resident Assistant in Harrison Hall at Purdue
University, and as a Research Assistant with Professor Sonia Fahmy, on an
independent study regarding benchmarking of the public cloud. I am a
brother of Delta Mu Kappa, Purdue's Premier Co-ed Entrepreneurship and
Innovation Fraternity and I am also the Treasurer for Purdue Science
Student Council. I am an AWS Certified Developer - Associate and also a
Microsoft Certified Azure Developer Associate.
Classes at Purdue, online courses and certifications and my personal
projects were a great tool for me to get my grips on the fundamentals of
writing good software, but nothing can prepare me for the industry like
actually working in the industry. The projects I get to work on as a
software engineer both challenge me to hone my skills, and the incredibl
people I get to interact with that are at the top of their careers serve
to motivate me to get to their level.
My experience working in the industry has been nothing short of amazing
and I look forward to making many more contributions. I have listed all my
work experience in tech as follows.
I got the opportunity to intern at Meta during the Summer of 2022 and it was
an absolutely incredible experience. I was working as a Capacity Engineer
Intern for the Strategic Planning and Analytics team, under Infra Data Center.
This was also my first in-person internship experience and that made it all the
more exciting. It was a dream come true for me to be working at Meta in the bay
area and I thoroughly enjoyed my time there.
Meta has rapidly growing AI upsizing targets, for which they plan on building
a lot of data centers in order to support their suite of applications. These
data centers are expensive to build and have a very long lead time. They are
also configured with various types of racks, to support specific applications.
Due to the time and cost requirements, it is essential for
to use simulations to model typical workflows and rack type mixes before
actually building a data center. That exactly was my intern project, to
create a library of server and rack types and run simualtions of typical
workflows to get performance per watt per dollar per sqft numbers for various
rack type mixes.
The internship being in-person made the experience even better. I was able
to connect and become good friends with the other interns, we were able to
enjoy Meta's amazing offices and perks, and I was able to visit California
for the first time. I got an inside look into the working of Meta and I was
very impressed by all the great work that goes on here. I was also very lucky
to be placed within a team that truly cares about their employees and wants to
help them succeed.
The summer of 2021 was a fantastic experience working remotely at Nutanix
Inc. Based in San Jose, CA, Nutanix is an industry leader in the
Hyperconverged Infrastructure space. My first experience interacting with
the company was the interview process for hiring me and I impressed by
their drive and commitment from the get-go. I took multiple interviews at
many companies before making my decision, but the technical questions that
the engineers at Nutanix asked me were very impressive challenging. The
engineers also seemed very driven and motivated, so it seemed like a great
place to work.
My project this summer was to create a
performance testing tool mainly for internal use cases, which would track
I/O performance over time and with changes made to the core codebase.
Another part of my project was to make improvements to an older tool used
to run workloads on Stargate, the data I/O manager for Nutanix clusters.
My project was very interesting because it made me learn so much more
about the technologies available in the industry today for data storage,
caching and the optimizations that go on behind the scenes to get the
maximum performance out of storage mediums. My project was also fairly
self-contained, so I didn’t have too many dependencies on other teams to
get things done, and at the end of my internship I had a fully working
tool which was very rewarding.
Towards the end of my internship, Nutanix also organized a week-long
hackathon for all interns, where we took a week off from our intern
projects and worked on something entirely new in teams. This was a great
way to interact with the other interns, to ideate, and to work on
something that may benefit the company and the product. My team and I were
constantly on Zoom calls for the entire week, working with each other to
deliver our vision, but also participating and winning a few of the
hackathon events and games. We also had a chat with the CEO, Rajiv
Ramaswami, which was nothing short of enlightening.
I wrote my first line of code only days before starting out as a freshman
at Purdue. I think that being able to apply what I learn in class as part
of a development project is crucial to the learning cycle. Not only do the
core concepts get reinforced, but I also learn about tools that can help
me get to my development goals faster and more efficiently.
The best way to learn a new language or framework, in my opinion, is to
work with it. In that spirit, I have outlined some of my work below.
I worked on this project as my first hands-on to any web development. I had
learnt about various sorting algorithms, among other things, in my Data
Structures and Algorithms class. I decided to implement a visualizer tool
for some common sorting algorithms, while also learning web application
programming. I allow the user to visualize, with distinct cues and speed
control, how an algorithm executes sorting, while also having a handy count
of number of compares and swaps made by each algorithm as an objective
comparison of performance.
I used ReactJS, NPM and Bootstrap to help me develop this application,
written mostly in JavaScript with CSS for styling. I also learn about some
eccentricities of JavaScript while debugging.
Visit Application
Having had some experience developing for Android, I decided to try this new
framework I had heard about that would let me simultaneously develop a
mobile application for iOS and Android users. I decided to create a novel
text messaging application focussed on keeping your chats hidden. In
essence, a user only appears in your chat, when you search for their
username and never before.
I used flutter on to develop this application with authentication from
Google, and I implemented functionality to send and receive images and gifs
in addition to regular text messages. I use firebase to store user records
and chats, and Firestore to hold all assets, such as images and gifs. Gossip
is currently pending publication on the Google Play Store.
Visit Google Play Store Listing
I took a Parallel Computing class as a Graduate Student at Purdue and
this project was my final prokect for that class. I have been interested
in chess for a long time so I decided to make a chess move prediction
engine. Due to the limits of computers, we can't actually make every move
in the game to predict the best next move, so we use an evaluation funciton.
Given a chess board and a player, the bot would make every possble move that
the player could make, then it would make every move the opponent could
then make and so on until a fixed tree depth.
The way I sped up computation, is by handing off each sub-tree of the root
chess board to a new processor for further tree exploration. In addition to
parallel processing, I implemented Alpha Beta Pruning to reduce the number of
trees we need to explore. This project was a lot of fun to implement
and really made me appreciate the chess engines out there that are able to
go very deep and prune a lot of trees very well.
As a part of my intro to Systems Programming class, I learnt about the
foundational technologies that are behind the internet. One program
essential in debugging web apps or APIs is undoubtedly Ping. I tried to
replicate the functionality of Ping application that is bundled with
almost every shell.
The program, written in C, opens a RAW socket and repeatedly sends ICMP
echo requests to the specified domain. I also added a DNS resolver so that
the user can enter human-friendly domain names. The user can also specify
a custom TTL to limit the number of router hops the request has to make.
The program provides a summary page when execution is stopped by the user.
Visit GitHub Repository
Having a custom TTL option gave me the idea to implement the functionality
of traceroute, to give a user the route their request takes to reach it's
destination, which is one of the projects I am currently working on.
While browsing the internet I came across this website, that had a great
visualization of the frequency of words appearing in their dataset. I was
really impressed by that, and I wanted to recreate a similar frequency
visualization tool. I had a set of articles and I thought to use it to
test my implementation. The application searches through all the article
titles to find topics, regions, countries and more categories of interest
and displays them to the user in a colorful and exciting visualization.
This application is made using React Components, NPM and Bootstrap with
CSS styling. This project really solidified my understanding of working
with React and Bootstrap. I also worked with React hooks and redux to
transfer data across components.
Visit Application
I wanted to learn how to make applications for mobile platforms, since
that is probably the best way to reach the largest audience in the modern
world. Having never truly tried app development, I decided to dip my feet
into an easy project and make an Android application to parse text from
images.
My initial motivation was to be able to edit the text in pdf documents,
and to do that I used Google's Vision API and learnt my way around Android
Studio to create an application that could do just that. Since working on
this gave me a hands on experience of developing for Android, I am now
workin on making a chat application for mobile devices.
Visit Google Play Store Listing
This project was my introduction to Python. I wanted to teach myself
programming in python, so I took it upon myself to try and recreate the
legacy arcade game, Space Invaders. My very rudimentary recreation allows
the player to control their position to avoid the enemy blocks, and
rewards them with a high score.
I used the pygame library to draw all the elements of the game. This was
meant as a primer to Python, and since I have completed a course from
University of Michigan about Applied Social Network Analysis in Python.
Visit GitHub
Repository
Only being introduced to formally using the 'terminal' program two years
back, I was taken aback by the productivity and performance of a shell
relative to struggling with a GUI. I made my custom shell, with
functionality similar to bash and ksh.
I implemented a custom lexical pattern scanner using lex and grammar using
a YACC parser. I implemented he functionality of having sub-shells, pipes,
i/o redirection, wildcard expressions and a whole lot more. I also
implemented a custom malloc library that my shell uses. I wrote the
program in C++.
Having gotten some practice using Python, I decided to try and recreate
one of my favorite Windows screensavers from when I was a much younger. I
made my own version of the legacy Mystify screensaver with customizable
colors for both the foreground 3D image and the background.
I wrote this program using the pygame library in Python. Having gotten
comfortable with Python, I am now working on a handwriting recognizing
utility, that uses a custom KNN classifier to recognize letters written by
a user.
Visit GitHub Repository
I have been working as a Research Assistant with
Amit Kumar Sheoran and Prof Sonia Fahmy at Purdue
University, on a research project that aims at providing the customers of
the public cloud the best value and performance when using an in-memory
cache such as Redis or Memcached. I ran benchmarks using the open source
tool
memtier_benchmark to test various configurations of memcached
clusters, ranging from on-premise setups, to manually setup clusters on
AWS EC2 instances, to leveraging AWS ElastiCache, their managed in-memory
cache. I compare the performance of the setup configurations while varying
request patterns, ranging from random to gaussian gets/sets. I also look
at horizontal versus vertical scaling of nodes in a cache cluster and it's
effect on tail latencies and hit ratios.
I am interested in looking at the way a public cloud customer could split
their workload on the available IaaS (AWS EC2) and FaaS(AWS Lambdas) to
improve burst performance and improve stability in situations of sudden
traffic increase(Flash crowds), while minimizing the cost incurred by the
customer.
As a naturally creative person, I thrive in design and development
settings. I love to sink my teeth into projects that allow me to explore
and expand my full range of ability, and ultimately learn and grow as an
individual, engineer and entrepreneur. I love talking about emerging
technologies or the corporate world, or anything in between, so please
reach out if you'd like to connect and exchange ideas!
My interests lie in Systems Programming, Machine Learning, Networking,
Cloud Computing and Distributed Systems.