Nick Ruta

Software Engineering · Data Science

I'm a Software Engineer with experience in full life-cycle Agile web application development using Java & the Spring MVC framework.

Also, I use data science to explore interesting topics such as natural language processing to determine the true author of Shakespeare's works and time series analysis with astronomical data to find similarities amongst the stars.

Time Series Analysis

I created a python-based search engine that uses time series analysis to find similarities among the celestial objects that fill our universe. I used morphological similarity by implementing an algorithm that uses cross-correlation with Fast Fourier transform and feature-based similarity using pattern-recognition of each objects metadata. I intend to continue this research with the goal of creating software that scientists everywhere will use to analyze petabytes of data provided by the newly established “Large Synoptic Survey Telescope” in 2020.

Currently, the database has 1,000 time series from The Catalina Surveys Data Release 2 (CSDR2)

SKILLS USED:

Python • Machine Learning • Pattern Recognition • Cross-correlation w/ Fast Fourier Transform

View Live Application

Adaptive LSM-Tree

THESIS TITLE: CuttleTree: Adaptive Tuning for Optimized Log-Structured Merge Trees

For my master's thesis in software engineering, I conducted research on adaptive data systems. I designed an adaptive LSM-tree that captures workload patterns by collecting statistics during its runtime and uses different versions of tunable parameters in order to optimize the performance. Instead of having a single and fixed design as in current state-of-the-art implementations, this new adaptive LSM-tree can transition between alternative designs and accommodate varying workloads.

SKILLS USED:

C++ • Data Structures & Algorithms • Database Design • Statistics

View the Thesis

Natural Language Processing on Shakespeare

For this project, I used natural language processing to determine the true author of Shakespeare's works. I conducted research in Text Mining for the Analysis of Shakespeare. I used text mining approaches to extract features from the data and machine learning techniques, including clustering and classification algorithms.

SKILLS USED:

Machine Learning • Natural Language Processing • Visualization • Statistics

View the paper

Portfolio

Ipython Notebook Demonstrating Time Series Analysis including the standardization, interpolation and phase shifting of comparable astronomical light curves.

TECHNOLOGIES USED -

Python • Math • Time Series Analysis

Github Ipython Notebook

This is a web application which aggregates RSS feeds and displays them on the home page. A user can register for an account and add a rss feed.

TECHNOLOGIES USED -

Java • Spring MVC • Spring Security • Spring Data • Hibernate

Github Repository

Live Demo

This is a custom validator created to reject YEAR values prior to 1940. It is created using the ConstraintValidator.

TECHNOLOGIES USED -

Java • Spring MVC

Github Repository

This is an example of using the Comparable interface to sort an object by a String field.

TECHNOLOGIES USED -

Java

Github Repository

This is a custom phone format example

TECHNOLOGIES USED -

Java • Spring MVC

Github Repository

This is my first iOS application. It is designed to be used on the iPhone. I used Objective-C to develop and Photoshop for the design aspects. It is a simple app reminding the car buyer of important points when visiting an auto dealership. Please feel free to run it in the xcode simulator to see it in action!

TECHNOLOGIES USED -

Xcode • Objective C • Photoshop

Github Repository

This is a practice code session that I completed after reading a book on HTML5. The project is to use the Canvas API of HTML5 along with the Twitter API (grabbing the engadget twitter feed).


TECHNOLOGIES USED -

HTML5 • CSS • Twitter API

Github Repository

Live Demo

This HTML5 Geolocation Practice session includes the Google Maps API. I created this after reading a book on HTML5. I am originally from New York and thought it would be interesting to track the direct distance between the location of my mobile device and Times Square, New York City. This web application uses the geolocation API of HTML5.


TECHNOLOGIES USED -

HTML5 • CSS • Twitter API

Github Repository

Live Demo

C++ Implementations of fundamental data structures and algorithms such as "Doubly" and "Circularly" Linked Lists and the Binary Search Tree.

TECHNOLOGIES USED -

C++ • Data Structures & Algorithms

Github Repository

This is an example of CSS3 using Transforms & Transitions. It uses the CSS properties transition, transform, duration, opacity and width to alter the square when the user 'hovers' the pointer of the square.

TECHNOLOGIES USED -

HTML5 • CSS • Twitter API

Github Repository

Live Demo

This is a one page advertisement for an iOS application I wrote for NoAutoDealers.com

TECHNOLOGIES USED:

HTML • CSS • Bootstrap 3

Live Demo


This is a project written from scratch using PHP and HTML/CSS.

TECHNOLOGIES USED:

HTML/CSS • PHP

Github Repository


This is an interactive map that I created for my trip to Bali, Indonesia. It includes RESTful Web Service calls to Flickr in order to retrieve the images displayed

TECHNOLOGIES USED -

HTML5 • CSS • jQuery • Flickr REST Web Service

Live Demo

This is an example of the Strategy Design Pattern in Java. I used the Motorcycle as the client which has Drive Behavior.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Observer Design Pattern in Java. In this example, the observable(subject), StockData, releases stock prices to its observer, ChannelingDisplay.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Decorator Design Pattern in Java. The Application can be a WebApp or Mobile App. The cost of each project is computed using decorators to add the cost of additional features to the base price of each app.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Command Design Pattern in Java. It simulates a robot being controlled by a remote control. The remote allows "Flying" and "Firing Missiles" functionality and the Command Design Pattern is used to map the commands to the Remote Control.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Factory Method Design Pattern in Java. The code was created for an application that lists items for sale. The Factory Method allows for different items to be created, such as Cars and Guitars.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Abstract Factory Design Pattern in Java. In this code, more detailed items are listed for sale. The Abstract Factory Pattern is used to create the type of items and create the specific details for each item.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Singleton Design Pattern in Java. This code is for an app which lists an item for sale and manages the availability of that item. It is optimized for multiple thread access using synchronized and the Double Checked Locking technique.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Facade Design Pattern in Java. A PostListingForSaleFacade is created to simplify the process of listing a Corvette for sale. listItemForSale() wraps up the method calls by delegating the responsibility to the corresponding components in the subsystem.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Adapter Design Pattern in Java. A used car for sale object is converted to be used in the place of a NewCarForSale. The adapter is used to replace the MSRP price with a price derived from a web service call to get the average sale price of the used car.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Template Method Design Pattern in Java. Used and New cars are listed for sale. This method defines the skeleton of the Algorithm to list the car. The subclasses redefine certain steps of the algorithm. A Template Method Hook is added to ask the seller if they want to post the car to social media sites.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Composite Design Pattern in Java. A top level Composite called Listings is created to contain Composites named Car and Motorcycle Listings. Each Listings Composite has several Leaves called ListingItems.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the State Design Pattern in Java. The simulates the process of selling a Real Estate property. The states are For Sale, Pending in Escrow and Sold. The actions are offer made and offer accepted.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

This is an example of the Proxy Design Pattern in Java. Three commonly used types of proxies include Remote Proxy, Virtual Proxy and Security Proxy. In this example, I used the java.lang.reflect package to create a dynamic proxy for security.

TECHNOLOGIES USED -

Java • Design Patterns

Github Repository

Skills

Programming Languages & Tools
Workflow
  • Mobile-First, Responsive Design
  • Cross Browser Testing & Debugging
  • Agile Development & Scrum


Software Engineering

Java/Spring
90% Complete
C++
65% Complete
Python/Flask
85% Complete
HTML/CSS
90% Complete
JavaScript
80% Complete
Web Services
90% Complete

Data Science

Machine Learning Algorithms
70% Complete
Math/Statistics
60% Complete
Visualization
70% Complete
Data Munging
75% Complete

Awards & Certifications

  • Oracle Certified Associate, Java SE 7 Programmer
  • Oracle Certified Professional, Java SE 7 Programmer
  • Oracle Certified Expert, EE 6 Web Services Developer
  • Harvard University Extension School - Data Science Certificate
  • Harvard University - Dean’s List Academic Achievement Award