Currently, I am a Ph.D. Candidate in Computer Science at Northwestern University. Before this, I completed my Bachelor's degree in Computer Engineering with full merit-based scholarship from Institute of Engineering under Tribhuvan University in Nepal. I achieved First Rank in Bachelor in Engineering (undergraduate engineering) program in our university and won two gold medals for this. For a more detailed information related to my professional life, please refer to my LinkedIn.
I have strong interest in big data analysis, machine learning and database systems. I enjoy working on back end side of web development and in optimizing web page load performance using page optimization techniques on both client and server side. Currently, I am actively seeking full time job opportunities in the field of Software and Web Developement and Data Engineering (starting April 2016).
Software development is a field where we always need to get updated with current technology and tools. As a computer and software engineer, I always love to learn and keep myself update with latest technology. At the same time, having knowledge and experience of different types of available programming languages, I feel easy to learn and develop software using any new/unknown programming language and library tools. Here are some of my favorite software development tools (you can find most of these project files on my github):
- Python: I have been using python for both client and server side scripting and network and web application development since last three years. I like the power and ease of accessing low level system and network configurations using python libraries, it is my favorite language for scripting automatic program execution, web page loading (using selenium and firefox/chrome) and parsing (using lxml and beautiful soup), and server deployments. Also, I have used python for large scale data analysis on Hadoop cluster using MapReduce jobs. I have created python libraries for general utility functions.
- Java: I love software development using Java because it is secure, free and open source and provides a powerful library. I started coding in Java during minor thesis work in undergraduate engineering when we developed a simulator for Control Systems. This work involved generation of four types of graph plots using transfer functions as input. Although we didn't use most features of Java in this project, it was great fun to work with a true object oriented language and eclipse and netbeans IDE for first time. Next, I learnt myself to develop mobile games like TicTacToe and Baghchal (Nepalese game) using J2ME. As I went learning features and power of Java, I got an opportunity to work using J2EE as a Java Web Intern during my last semester of undergrad. After that, I have been using Java mainly for helping students implement a quarter-long database system as a Teaching Assistant for Introduction to Database Management (EECS339) class at Northwestern for second time. Also, I use Java for developing Android application for developing network measurement apps. It is my favorite object oriented language for both desktop and web application development.
- C#.NET: Great software development environment, with easy user interface and drag and drop tools, provided by the Visual Studio IDE, and my inclination towards Java, make C#.NET a great choice for application development with lots of UI. I started using C#.NET with Visual Studio for implementing our major project (thesis work) during last year of my undergraduate study. In this, we developed a live video streaming application between two distant computers in a group of four members. This application used our algorithm for saving/optimizing network bandwidth using RGB pixel difference between consecutive video frames. We used multi-threading with synchronization to implement different parts of our algorithm - processing frame, sending and receiving, to better and fast communication. We obtained significant reduction in bandwidth for live video streaming based on user input parameters for block size, bit rate and lossless/lossy transmission. After that, in a team of four members, we developed a class routine scheduler using C#.NET and MSSQL for semi-automatic allocation of lecturer/instructor and classroom to different classes using input time constraints. is in real time use by our engineering campus since 2012 June. It effectively manages allocation and shuffling of class, classrooms and instructors based on give input time, schedule and place constraints.
- C\C++: The first programming language I learnt during first semester of my undergraduate engineering was C and then C++ during thirs semester. My first project in C was to implement an analog and digital watch using graphics in C. In C++, I implemented a command line based information management system for evaluating students'performance from their assessment and assignment scores. After that, I have been using C and C++ in many course works at Northwestern. In a group of two, we implemented the TCP stack from application layer protocol HTTP to routign layer protocol OSPF using C++ for the Computer Network course. For operating system, as a student and then teaching assistant, I have worked on implemented tiny-shell, kernel memory allocation, multithreaded server and ext2 file system using C. I like the power for C in operating system and network programming and I am a great fan of using dynamic memory allocation with pointers. With features like operator overloading, generic programming and templates, it is fun to program command line based real time apps in C++. Also, I got opportunity to teach C and C++ to computer science undergraduate students that helped me strengthen my concepts. In addition to these tools, I also have good concepts and ideas of different types of Software Development Life cycles (SDLC). I got an opportunity to teach Object Oriented Analysis and Design to undergraduate engineering students durign my tenure as Lecturer in 2012 and 2013. This helped my learn object oriented analysis and design tools like StartUML and Visio and helped me better understand object oriented analysis and design of real world and real time systems. I have also worked in preparing software installers for Mac OSX, Linux and Windows platform. I worked on developing and creating installers for namehelp. It helps in better content replica selection using direct DNS resolution from client. This leads to lower latency between client and content server and hence, improved web experience. I also worked on developing package manager for this (coming up with version 2) to help researchers directly run their measurement packages on namehelp.
Big Data Analytics
Big data is the current hot topic and it rules current software industry. I have great interest for working in the field of big data analytics. I am always excited to learn about new data analytics and machine learning tools and I am currently learning and switching to R programming. Some of my data analysis experiences are:
- Python: I have been using python along with Hadoop and Mapreduce for network data analysis on cluster since 2013. In the mean time, I have worked on developing some libraries for creating multi-level python data structures, storing and retrieving multi-level complex python data structures such as dict of list of values to/from a SQL database systems. I have also developed some data visualization libraries to visualize different types of graphs such as CDF, histograms, geographical maps using matplotlib library.
- Hadoop and MapReduce:I am adept at big data analysis using python, Hadoop and MapReduce. Since last two years, I have got opportunity to play with large network measurement datasets stored on Hadoop cluster at Northwestern. For data analysis using cluster, I mainly use dumbo python with MapReduce jobs. Most of my research project involve some kind of big data analysis from network domain using dumbo python with MapReduce.
- SQL: I have been using SQL database systems like MySQL and MSSQL since my undergraduate engineering. During sixth semester, we developed an Information system using PHP and MySQL for exam section of our engineering campus (in a group of four members). We implemented a simple database with around ten tables in Boyce Normal Form (BCNF). Our web application allowed for successful login authentication for admin and student. Admins were allowed to calculate and upload grades while students were allowed to view their gradesheet. Next, as a Java Web Intern, I got opportunity to play with different real time MySQL and Oracle database systems. Although databases were alreay designed for all our applications, it involved lots ot SQL query for data insertion, deletion and selection. This gave me a perfect chance to master my query SQL skills. Next, we designed and used a MSSQL database with stored procedures for developing a class routine scheduler using C#.NET for our campus. The MSSQL was designed in Third Normal Form and stored all teacher/instructor, class, schedule, classroom, department and other academic data. At northwestern, I have used PostGRESQL in Data Science course work to store network topology data in 3NF again. Also, I have been working as a teaching assistant for introduction to database system (EECS339) course in which I help students write SQL queries and implement a SQL like database system.
- J2EE: During my undergrad internship in 2011, I got a chance to learn about J2EE platform. We worked on developing dynamic content management systems for academic and medical institutions. We worked on Java Spring framework with hibernate, JSF and Rich Faces. Some of the features supported by the web application included automatic report generation in PDF format, importing/exporting CSV data files and dynamic content management.
- Python: I have worked with developing multi-threaded web servers using python. I developed a proxy using python that included caching, advance page requesting and SPDY protocol to client and HTTP protocol to content server. This project was to improve the web page loading time using middlebox and use SPDY (by Google) protocol to improve the web performance. Other than this I have worked on multiple server deployments using python.
- PHP: PHP was the first server side scripting tool for me. My web application was an information system for exam section of our campus. It supported easy management of exam section information like generating gradesheet from assessments and exam results for the admin and viewing of personal results by students. I supported personal log in and used MySQL database. I find PHP as the most easiest programming language for server side web development. Also, as PHP is free and open source, it is supported by multiple websites and web hosting programs. This website also PHP as the main server side scripting language.
- Django Framework: I really like the MTV framework and free API for accessing the model provided by Django. Django really makes it easy to develop web applications using python. I am not an expert, but I would love to work using Django framework and python in future.
- ASP.NET: After working with C#.NET on Visul Studio, I was excited to learn about ASP.NET. For this, I took a one month professional training during 2011. We developed small websites with shopping carts using MSSQL database. We learnt many features in ASP.NET such as making theme file, connecting with MSSQL database and dynamic report generation. I never got any chance to work with ASP.NET in professional field, but I will love to work with ASP.NET in future.
Mobile App Development
Research and Publications
In past, I have explored different fields in Computer Networks such as Web Performance Optimization, Internet Protocols, Inter-domain Routing, Content Delivery Networks, Cellular Networks and Community Networks (XfinityWiFi). Now, I have started working in the field of Big Data Analytics- Social Data Mining and Machine Learning. Here are my research publications:
- Jha, D., Rula, J., & Bustamante, F. “eXploring Xfinity: A first look at provider-enabled community networks.”, Accepted to In Passive and Active Measurement (2016).
- Mishra, B., Jha, D., Shrestha, P., Rijal, R. "Image Bandwidth Optimization Algorithm based on Pixel Intensity Difference In Live Video Streaming.", 6th Conference on Software, Knowledge, Information Management and Applications(SKIMA), China, September, 2012.
- Royal E. Cabell Graduate Fellowship, Northwestern (2013-2014).
- Full Scholarship for Undergraduate Engineering Study, Tribhuvan University, Nepal (2007-2011).
- University Topper - Bachelor of Engineering (2011 Batch- among 3000 undergradaute engineering students), Tribhuvan University, Nepal.
- Kul-Ratna Tuladhar Gold Medal and Nepal Vidya-bhusan Gold Medal winner for excellence in undergraduate engineering.