Hello, World.

I'm Nehil Shah.

Software Developer Kernel Programmer

More About Me
About

Let me introduce myself.

Profile Picture

I'm a Computer Science Master's student at Stony Brook University. My interest lies in solving complex programming problems and designing rock solid code. I am a part of the File Systems and Storage Lab (FSL) , Stony Brook University. I am involved in research projects in the domain of Storage Systems and currently working on File System Benchmarking Tools & Techniques under the guidance of Prof. Erez Zadok (Advisor) and Leixiang Wu (Project Sponsor)

Profile

I have experience of more than 3 years in Agile Software Development. In the initial stages of my career, I also worked on Hadoop to extract useful information from unstructured logs. Having worked on different software applications, I have meticulously analyzed their architecture to understand their pros and cons.

  • Fullname: Nehil Vinod Shah
  • Birth Date: January 28, 1992
  • Email: nvshah@cs.stonybrook.edu

Skills

I have used tools like Typemock Isolator for mocking the environment, and unit testing codebase which have a lot of external dependencies. I have also used tools like Re-sharper which has enhanced my coding skills.

  • 90%
    JAVA
  • 80%
    C#
  • 80%
    C
  • 50%
    C++
  • 90%
    Database
Resume

More of my credentials.

My projects have given me the opportunity to interact with team members across different geographies. Frequent interactions with them in the stand up meetings or "Scrum" as we call in agile methodology, has given me a broader perspective in various technical aspects.

Work Experience

Software Engineer II

July 2014 - August 2016

Diebold System's Pvt. Ltd., India Development Centre

• Implemented new features in C# and resolved various defects in an AGILE methodology of Software Development. One of the key features was to integrate Diebold’s C# library with an application written in C++. In this, we had to call C# APIs from C++ at runtime (using reflection) by writing managed C++ wrappers.
• Developed unit testing framework for the existing software application. Used tools like Typemock to mock external dependencies and perform unit testing.
• Participated in various sessions like backlog grooming, story grooming, Table/Code review, Bug triage which helped me to understand the complete Software Development Life Cycle (SDLC) right from “requirement analysis” to “implementation”.
• Technologies used: C#, C++, XML, XSLT, Microsoft Visual Studio 2010/2015, NUnit.
• Awards: Received “Key Employee” award for 2 consecutive years (2014-2015 & 2015-2016). Received “Emerging Star” award for excellent performance in the year 2013-2014.

Software Engineer Trainee

July 2013 - June 2014

Diebold System's Pvt. Ltd., India Development Centre

• Built a WPF C# based tool used to figure out the root cause of defects and thus reducing the defect solving cycle. Various pattern matching algorithms were implemented to group logs and present them in an understandable format.• Generated various reports from structured & unstructured transaction logs by using SSAS & SSRS, Hadoop.
• Technologies used: C#, WPF, Hadoop, SSAS, SSRS, Microsoft Visual Studio 2010, DevExpress.
• Award: Received an award from the innovation officer to present the idea of using Hadoop on unstructured logs at the “Idea Factory” event in Diebold in 2013.

Education

Master's in
Computer Science

GPA : 3.67/4
August 2016 - December 2017 (Expected)

Stony Brook University

• Alternative Memory Layout for Suffix Array:- Language: C++
Studied & implemented various suffix array memory layouts. Benchmarked the standard suffix array search operations in the vanilla suffix array layout, versus two alternative layouts to figure out a practically optimal one. Though all had same asymptotic bound, the layout of data in memory made practical difference due to cache line efficiency.
• Antivirus for Linux:- Language: C
Developed an antivirus for Linux via a kernel module, which scanned files for virus patterns. It supported 2 modes: 1) On Access scan, where files were scanned on its access. 2) On Demand, where the user could specify the files/directories to be scanned. The whitelisted and blacklisted patterns could be updated over the Internet.
• Stackable File System for Linux:- Language: C
Implemented a stackable, tracing file system based on wrapfs which intercepted all operations of a file system. It also provided selective tracing using ioctl. Developed a user level program to read trace file and replay all the operations.
• System Call Vector per Process:- Language: C
Supported per process system call vector table. Implemented a number of kernel modules each with custom system call functionalities. Each process was assigned a module or vector table same as its parent by default which could be modified using ioctl. A new clone system call was implemented to assign a specific system vector table to a process on its creation.

Bachelor's in
Computer Engineering

GPA : 76.67%
July 2010 - June 2013

Vivekanand Education Society's Institute of Technology, Mumbai University

•Negotiation among Cellular Service Providers :- Java Agent Development Framework
The project aimed at reducing call dropping in cellular networks by switching to another Service Provider if the current one breaches the QoS during an ongoing call. Simulated the environment using Java Agent Development Framework (JADE). Presented and published a research paper in the Proceeding of Third International Conference on Computational Intelligence and Information Technology–CIIT 2013 on Oct 18-19, 2013 in Mumbai, India.

Diploma in
Computer Engineering

GPA : 88.66%
July 2007 - June 2010

Shri Bhagubhai Mafatlal Polytechnic, SVKM

• Voice Follower Camera:- Assembly language programming
An embedded project programmed in Micro-controller 89c51 useful in recording conference meetings by moving the camera automatically towards the speaker. Also used RF transceiver to make the person visible on the TV.