Projects/Works
Individual/Industrial
Adobe Systems (MTS, Core Products and Technologies) (May 2014 - August 2016)
As part of the Adobe Illustrator(Vector Graphics Designing Tool) team in Adobe Systems I worked on multiple features, some of which are internally used in the company and some already being used by millions of designers out there. Adobe Illustrator has a codebase consisting of millions of LOC and a beautiful architecture to support addition of new features in an immaculate fashion. In the past 1.5 years, most of my work has been in C++, C, Objective-C, Java and JavaScript language. Other than the items mentioned below, I worked on Design Library integration with Illustrator and addition of color graphic to Design Library.
Area Owner
There are some legacy features/areas which I own and have the responsibility to maintain and fix any problem encountered. Also, these areas give me the opportunity to build and develop upon an already solid foundation. These areas are:
- Effects
- Links/Linked Assets
- DXF/DWG(CAD) conversion to Adobe Illustrator Format(.ai) and vice-versa
- Adobe Illustrator Library/AI Worker: This is the service running on AWS as part of Creative Cloud to handle files related to vector graphics
- Snapping
Features Developed (End-to-end)
- Rotational Snapping
- Feature Manager/Menu Configurator
- Seamless Synchronization of preferences
Features Co-Developed
- Text-Snapping
- OnBoarding High-Value Actions
- Live-Shapes
Miscellaneous
I have worked on various individual projects, small hacks and algorithms. All of which can be found in my github repository or blog. Here are the links:
GitHub repository
Blog
Imagen Technologies, New York
Machine Learning Research Engineer Intern (September'17 - December'17')
In the Fall'17 semester, I did a part-time internship as a machine learning research engineer at Imagen Technologies located in New York City. Imagen Technologies is a medical technology company specializing in systems that assist radiologists and the medical community as a whole to make faster and better decisions. In particular, it applies advance deep learning and computer vision techniques to interpret and diagnose radiographs. The team I was working in is called the science team. Science team actively develops and investigates for new potential services or improve upon current offerings. During my internship, I worked on a multitude of areas dividing into two major projects and a few side-projects. My first project was to port the current fracture detector system by Imagen in Tensor-flow to PyTorch without any impact on performance. The other major project was to detect anomalies in Hip and Knee implants from 2D radiographs of the pelvis/hip and knee/leg respectively. During these projects, I've also worked on systems that becomes the building blocks of further research and development of such systems.Tower Research Capital LLC, New York
Core Software Engineering Intern (June'17 - August'17')
Over the summer of 2017 I interned with Tower Research Capital LLC in their head office located in Lower Manhattan, New York. Tower Research Capital is a financial firm specializing in Quantitative Trading and Investment Strategies. Their trading window happens to be small ranging from microseconds to a few minutes which makes them majorly a High Frequency Trading (HFT) firm. To trade with such high speeds, a highly sophisticated technology platform is needed with minimum latency on every part of the trading pipeline. My focus was on experimenting the effects of Linux Container system on network latency. This benchmarking was done using industry standard network tools and proprietary TRC-internal tools, one of them is popularly known as Sockperf. Over the lifecycle of the project, I configured multiple linux kernels to be compatible with Docker Containers and comply to the kernel configurations used by TRC internally for their trading platforms.Data Science Bowl 2017 - Lung Cancer Detection (Kaggle)
Participated in the Data Science Bowl 2017 organized by Kaggle which required one to develop models to classify if a patient will develop lung cancer in a year's time given his/her chest CT Image. As part of the team NYU DaD (Data Scientist as Doctors), we ranked 23 out of 1972 teams. Our method was primarily divided into two stages where we segmented Lung Nodules in the CT Images and then classified them as Cancerous or Non-Cancerous. External LIDC annotated dataset was used for the training the first stage model. The code for the same is provided on github. Report/Paper and presentation will be available soon.
Scalable Website Infrastructure
Design and implementation of a highly scalable website using PHP, Java, Apache Thrift and MySQL. To handle client requests efficiently, a middleware cache was implemented in Java caching all the relevant rows of tables(>1000 million rows). For the search utility, Sphinx was integrated with the database and site-testing was done using Apache JMeter.
Web Crawler/Scrapper
Co-developed a multi-threaded scheduled-task-based web-crawler fully written in Java designed to respect the robots.txt exclusion directives, and collects material at a measured, adaptive pace unlikely to disrupt normal website activity. Implemented a double-array trie for prefix matching required in robots exclusion protocol. Also, parses the sitemap xml to get all the crawlable links.
Data-visualization tool
Developed an interactive data-visualization tool entirely written in JavaScript and AJAX to imitate the Annotated Timeline charts provided by google. It used the Prototype library available under the MIT license. It supported features like mouse-wheel zoom, area-selection zoom, live data update, multiple data-lines.
E-Commerce Price Comparison Chrome Extension
Developed a chrome extension to compare prices for a product available on different E-Commerce websites. Wasn't able to release this chrome extension to the public due to shortage of resources but it was developed at the aim of getting/finding the best price available for a product across different E-Commerce websites. It got activated when a “Product Page&lrquo; was opened and fetched the best price for the same product from the top E-Commerce providers. It even collected Price History for products to tell you if the current time is optimum or not to buy the product. All the code was written in JavaScript with small hints of HTML and CSS.
Re-architecture of EDCA Production Grid
As a part of summer internship 2013 at S&P Capital IQ under the guidance of Mr. Manikanth Kumar, a module of Estimates Data Collection Application(EDCA) was re-architectured to improve performance and decrease loading time. It involved testing and monitoring of the current application for performance bottlenecks and "slow" modules. Thus, re-architecturing of the production grid was done by porting the old code written in VB.NET to C# with a new object/data model and implementing the MVVM architectural pattern using WPF in XAML and C#. Also, with some filtering techniques in SQL, performance increase of 800% was observed.
Instant Messaging Client/Server
The code for the same can be found in the github repository.
This is an independent project which aims to create a lightweight and compact application that allows you to send big files over a network with high speed and a simple way to communicate with other people over a network which are also registered on a common server.
It is implemented through C/C++ and uses the BSD socket API. It is based on UDP packets which is sent by one client to another going through the server. It can handle a number of clients, depending on the capacity of ther server. For now it has benn tested for over 100 users at the same time. It uses multiplexed I/O in the client front to listen to the server and input from user at the same time.
Online Test Portal
Developed and currently maintaining (as the webmaster) an “online test portal” for an institute. The software is built on the technologies PhP5, MySQL, JavaScript, HTML5 and CSS3. It is hosted on the website www.brainstorm-tutorials.com and is currently handling 53 registered users. It has features including separate controls for the administrator and user, a test portal, detailed analyzing of results, etc.
Blue-Chips
Developed a fully-functional interface simulating a Virtual Stock Market (VSM). The software was built on basic concepts of foreign exchange, buy/sell of stocks, bonds and options. Code was implemented using PhP, MySQL, JavaScript and Ajax. The game was locally hosted in the institute campus, handling more than 100 users at a time.
Publications/Talks
Exploration vs Exploitation Survey
The problem of exploration vs exploitation is fundamental in Reinforcement Learning or bandits problem in general. The many methods available have been surveyed as the project with Ojas Deshpande for the course Mathematics for Deep Learning taught by Joan Bruna. Report can be downloaded from here.
Markov Dsecision Processes with Large State Space
Topic Presentation was given on solving Markov Decision Processes with Large State Spaces. This was done as part of the course Advanced Machine Learning taught under Prof. Mehryar Mohri. Report and slides can be downloaded from here.
Academic Projects
Adversarial Shortest Path Game and Bots
In the course Heuristic Problem Solving taught by Prof. Dennish Shasha, every week a game was developed with a pre-decided interface and all the students created bots to play that game. The students competed against each pther with their bots. These bots and games are available in this repository. In addition to the bots, our team (I and Ojas) developed a game called Adversarial Shortest Path which is available to download from here.
Enhancing Cluster Labeling using Wikipedia
Exploting the large repository of the extracted semantic relationship between words from Wikipedia, labeling of unsupervised clustered documents of the famous dataset 20-newsgroup is enhanced. A novel method to score the final cluster descriptors is proposed. This was done as term project with Abhinav Gupta for Search Engine Architecture course taught by Matt Doherty. The code for the same is provided in the github repository. Report and slides can be downloaded from here. The code is primararily written in Python.
Algorithmic Trading Challenge (Kaggle)
Analyzed and developed algorithms for time-series predictions based on bid-ask price data from London Stock Exchange (LSE) open-sourced by the Kaggle competition. This closed competition picked as the term project for Foundations of Machine Learning course taught by Prof. Mehryar Mohri. The code for the same is provided in the github repository. Report and slides can be downloaded from here. The code is primararily written in Python.
Diabetic Retinopathy (Kaggle)
Developed Deep Learning models to automate Diabetic Retinopathy Screening using colored fundus images as input available from the Kaggle Competition. A full pipeline consisting of image reading, image cleaning and pre-processing, training of deep learning model was developed using Torch in Lua. This project was done as the term project for Computer Vision class taught by Prof. Rob Fergus. The code is available in the github repository and the report is available here.
Bachelor Thesis Project - II
This project was a continuation of the Bachelor Thesis Project - I. The previous work was extended by taking the Robots as ‘fat’ instead of dimensionless and solve the “Minimum Perimeter Problem” in which a set of autonomous, anonymous mobile robots roaming on a plane move to form a uniform circle with minimum perimeter. This BTP taken in Spring semester of 2014 was under the guidance of Professor Partha Sarathi Mandal, Department of Mathematics, IIT Guwahati.
The final report submitted can be downloaded here. The code for the simulations generated can be found in the github repository.
Bachelor Thesis Project - I
The main aim of the project was to propose and test by simulations a distributed algorithm by which a set of autonomous, anonymous mobile robots roaming on a plane move to form a uniform circle. The robots are anonymous in the sense that they all execute the same algorithm and they cannot be distinguished by their appearances. This BTP taken in Fall semester of 2013 was under the guidance of Professor Partha Sarathi Mandal, Department of Mathematics, IIT Guwahati.
The final report submitted can be downloaded here. The code for the simulations generated can be found in the github repository.
WikiBlog
The code can be found in the github repository.
This is a departmental Project taken in Spring semester of 2013 under the guidance of Professor Sanasam Ranbir Singh, Department of computer Science and Engineering, IIT Guwahati.
Co-developed a blogging/wiki web application with social features. Its features includes, writing/reading blogs/articles, editing of articles, rating articles, tagging blogs/articles, having user profiles, following and liking, etc.
HTTP Proxy
The code for the same can be found in the github repository.
This is a Departmental Project taken under the Spring Semester of 2013 under the guidance of Professor Sandip Chakraborty, Department of Computer Science and Engineering, IIT Guwahati and Professor Sukumar Nandi, Department of Computer Science and Engineering, IIT Guwahati.
The task was to build a basic web proxy capable of accepting HTTP requests, parsing the requests, formatting of the requests to be forwarded to remote(origin) servers and returning data to a client. It was built on C/C++ using the BSD unix socket library. The challenge was to handle the real world servers and semi-valid requestd from the client. It accepted both HTTP/1.1 and HTTP/1.0 requests but handled both using HTTP/1.0 only.
Pint-OS to Burrit-OS
This is a Departmental Project taken during the Fall Semester of 2012 under the guidance of Professor Gautam Barua, Director and Professor at Department of Computer Science and Engineering, IIT Guwahati.
Built upon a bare bones OS Kernel (Developed at Standford University, USA), by implementing various advanced OS Constructs like Process Synchronization Primitives, implementing schemes for running programs in both User and Kernel Modes, File System Management and Design of Virtual Memory by Demand Paging.
Theatre Ticket Booking System
A C++ console application implementing a Graphical User Interface for theatre ticket booking. It had all the basic functionalities including seat selection, a payment gateway, addition of a new show (only by the administrator), multiple user accounts, etc.
Scientific Computing
This is a Departmental Lab taken during the Fall Semester of 2012 under the guidance of Associate Professor Jiten Chandra Kalita of the Department of Mathematics, IIT Guwahati.
This includes study and simulations of various Quadrature methods, Initial Value Problems for ODEs, Finite difference schemes for PDEs, Boundary Value Problems(FTCS, Backward Euler, Crank-Nicolson schemes, etc), Finite Element Methods.
Monte Carlo Simulations
This is a Departmental Lab taken during the Spring Semester of 2012 under the guidance of Associate Professor N. Selvaraju of the Department of Mathematics, IIT Guwahati.
This involved implementing Linear Congruential Generators and using them to simulate random variables and stochastic processes having particular distributions like Exponential, Standard Normal, Brownian motion, Geometric Brownian motion,etc using methods like Box-Muller and Marsaglia Bray. Quasi Monte-Carlo techniques were also implemented.
Quine-McCluskey Logic Minimization
This is a Course Project taken during the Autumn Semester of 2011 under the guidance of Assistant Professor Aryabartta Sahu of the Department of Computer Science & Engineering, IIT Guwahati.
Implementation of Quine-McCluskey Logic Minimization. The Program successfully solved more than 10 variable logic minimization and randomly generated number of minterms and vectors of minterms.
32-bit unsigned int Multiplier
This is a Course Project taken during the Autumn Semester of 2011 under the guidance of Assistant Professor Aryabartta Sahu of the Department of Computer Science & Engineering, IIT Guwahati.
Implemented an 32-bit unsigned integer multiplier using VHDL programming language and GHDL tools. This involved implementing both Datapath(One 32-bit Adder, One Shift-Register, One Register) and Controller(Sequential add and shift multiplier), a testbench which supply stimulus to multiplier.
Data Structure Lab with Object Oriented Programming
This is a Departmental Lab taken during the Spring Semester of 2012 under the guidance of Assistant Professor Partha Sarathi Mandal of the Department of Mathematics, IIT Guwahati.
Based on the object-oriented programming concepts; Applicative problems of Data Structures, Sorting Algorithms, Trees, Algorithmic Design Techniques and Graph Algorithms.
Web Development
Designed and developed numerous websites and web applications in the period 2011-2013. Listing a few:
- Online events to be held in DIMENSION,The Annual Technical Confluence by Department of Mathematics, IIT Guwahati.
- Website for the cultural festival of the Institute, alchering'13.
- Website for MATRIX, Student Body Association of Department of Mathematics, IIT Guwahati.
- Website for CADENCE, choreography club of IIT Guwahati.