Avarokin Saini

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.

Resume

Work Experience

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.

Development Projects

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.

Sorting Visualizer

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

Gossip

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

Chess Bot

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.

Ping

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.

Text Frequency Visualizer

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

TextRecognizer

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

Space Invaders

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

Shell

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++.

Mystify

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

Research Interests

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.

Contact

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.