Nicholas Hain

Welcome to my official website.
Please feel free to take a look around and learn more about me.

Work Projects

RagnaSoft (October 2019 - Present)

Software Developer


PlanIt Schedule

PlanIt Schedule is a responsive, web-based application written in VB.NET Web Forms, with Microsoft SQL as the database, and with jQuery and TypeScript on the client-side that is used by over 1000 departments, including Police, Fire, EMS, Dispatch, and other government agencies.

At RagnaSoft, the majority of the work that I've completed and continue to complete has been with PlanIt Schedule. I've done new development, restyled/refactored old and outdated pages, written reports for clients, fixed bugs, and have completed various client requests.


Internal API

The internal API that I built was used for an internal application built by us to onboard new clients, set up billing information, set up support information, and visualize PlanIt usage among clients, among other things.

Turnkey Office Installations (July 2021 - Present)

Full Stack Software Developer


TIMS System

TIMS is an internal system that helps to manage the different jobs that employees have, as well as track inventory and perform other day to day tasks.

Currently, we are working as a team to rebuild TIMS into a more modern C# MVC application, with Microsoft SQL as the database.


Timesheets

Timesheets is another internal application that we are working on, to help employees track his/her hours. It is written in C# MVC, with MongoDB as the database.

Bath Fitter (February 2019 - October 2019)

Application Developer


MobileForce API

This API is used by a company called MobileForce, who created an application for us to be able to provide bath tub installers with iPads and perform tasks such as pulling up appointments, save measurement details, create/update service tickets, get customer data, and get contract data. The MobileForce API was written in C# asp.NET, and is a RESTful API. This made all of the creating, updating, deleting, and getting that the application has to do possible. This used a combination of T-SQL stored procedures, views, and linq queries to get the data, update the data, and insert data into our database in real time.


Shiftboard API

The Shiftboard API is used to update, create, and delete events from Shiftboard, after they have been inserted, modified, or deleted from our system. The database used a trigger, which inserted into a temporary table, with the information of which API call to use, and which ID to create/modify/delete. This was written in C#, is a RESTful API, uses Linq, and is triggered using a stored procedure and a SQL job. This API was to ensure that data was only entered once, which reduced the chances of error and saved the time of the coordinators entering the data.


My Home Renovator API

MHR is a company that works in Sam's Clubs across the US. They try to sell bathroom/kitchen/door & window remodeling to people who are interested, and give potential customers our company information. This API sends the leads that are generated from MHR, so that they have up-to-date information on the leads that they have sent to us, and to ensure that we pay them a cut, if a sale is made. The API was written in C#, is a RESTful API, uses Linq, and is triggered via a SQL job that runs and sends leads every day at the same time.


Project Map It API

Project Map It is a service that allows our sales force to go out to different houses and showcase installs that have been done within the same neighborhood and/or a location that is close to the potential customer. This API sends data about previous jobs, including the name, address, city, state, and ZIP code of customers who have had his/her bathroom redone by Bath Fitter. The API is written in C#, uses a combination of a SQL view and a Linq query, and sends updated jobs every four hours throughout the day. It is triggered via a SQL job.


Twilio API

Twilio is a service that allows for direct SMS/MMS messaging to an individual, after a phone number is purchased through them. The purpose of this API is to text customers who have an appointment every morning at 8:00AM. The API is triggered via a SQL job, and it is passed a unique ID that identifies which appointment to send information about. From there, the text message is formatted so that both the date and the time of the day is sent the day before the customer's appointment. The API also handles the customer's response to the text message as well. If the customer responds with a reply of confirmation (Okay, Sure, Yes, etc.), then the appointment is confirmed in our system. If the customer responds with something other than yes, that response and the details of the customer and the appointment are sent to our Call Center, so that the customer can be contacted. The Twilio API is written in C#, and utilizes Entity Framework and Linq.


White Pages Pro API

White Pages Pro is a service that checks a phone number, analyzes it, and returns scores that state whether or not the number has a chance of being a number that is spam. This API was utilized to check the phone numbers that Bath Fitter has used to call customers. The higher the score, the higher the chance that it is spam, which increases the likelihood of the number being flagged by a robocall service on a phone, which blocks the number. After the number is returned, the values are stored in the Microsoft SQL database. If a high spam score occurred, then the phone number is swapped out for a different one with a lower score. The API was written in C# and also includes a GUI for checking individual phone numbers (using MVC). The API also utilizes Entity Framework and Linq.


Bath Saver CRM

The Bath Saver CRM is a custom-made application for performing various tasks such as scheduling installations, services, and calls as well as processing sales, cancellations, and more. The Bath Saver CRM does a lot of other tasks as well, as it is central in our day-to-day operations at Bath Fitter. While I have not built the application from scratch, I have added additional functionality to the application, according to IT service tickets that we receive. This application is written in VB.NET, with a Microsoft SQL database for storing the data. Working on this application helped me to pick up VB.NET quickly.

CNH Industrial (May 2018 - February 2019)

Data Analyst


CNH Reports Web Application

I built and maintained a C# asp.NET web forms application for users to be able to go and run reports. The forms included ListBoxes, DropDownLists, RadioButtons, CheckBoxes, GridViews, DatePickers, and other easy-to-use web objects for users to be able to easily create a report to be run. The reports exported into .xlsx, and showed a variety of different things, such as tractor sales (by region or by dealer code), warranty information, agricultural events, customer lookups, and other useful information. To get the data for these reports, a Microsoft SQL database was queried using T-SQL procedures. Some of this was rewritten in C# from a Microsoft Access application, while other features of the application were added later.


CNH Finance Application

A finance application was rewritten in C# asp.NET from a Microsoft Access application. This allowed users who worked in the Finance Department to get reports of CNH finances.

School Projects

Capstone Project

Our Capstone project was to create a website where one could compete against his/her friends in coding competitions. The coding challenges are written by my group and I, and are also timed. In addition to those features, we also made the website judge how efficient the code was and whether or not it solved the problem correctly. On the left is a video clip of how to use our project. Click the button below to be taken to our project on GitHub.

Binary Search Tree

I have created a binary search tree that will efficiently store nodes and then be able to find the median node in the tree, assuming that there are an odd number of nodes added to the tree. I solved this problem in HackerRank.

Dynamic Programming

Pandora's Playlist was a challenge posted on HackerRank and was meant to be programmed using dynamic programming, in order for the program to finish in the allotted time given to us. This program taught me how to use memoization and how fast it could speed up programs, as opposed to using recursion alone.

CSX Compiler

CSX, or Computer Science Experimental, is a compilable language that I was assigned to create. One of the distinguishing features of the language is the fact that it is case-insensitive, meaning that keywords did not have to be in all lowercase or all uppercase letters. CSX is very much like Java, but is not as sophisticated. This taught me what designing a compiler entails, and how much time getting one to work actually is. Below I have the scanner, parser, type checker, and symbol table that I have created for the compiler in .ZIP files. These are all crucial components of a compiler. Below contains CSX's Scanner, Parser, Type Checker, and Symbol Table.

MIPS Assembly

MIPS is a low-level assembly language with a very unique 32-bit architecture. This assembly programming language is one that is easier to learn, and teaches how low-level assembly works in a computer. Below, I have attached two of the programs that I have written using MIPS assembly: Date determines if the date that you have entered has happened or is going to happen (it also accounts for leap years, too), and Composite, which will tell you whether or not the number that you enter is composite or not.

Functional Programming Language (Scheme)

Scheme is an old programming language that still has practical usages today, such as for writing an interpreter or using it for artificial intelligence. I have written and posted two Scheme programs: the one will perform various operations (addition, subtraction, multiplication, minimum, maximum, average) of numbers when written in the form of an SS-Expression. The other program will compute the cross-product between two lists that are inputted by the user.

About me

Here is a little section about myself, such as some things that I enjoy doing and some of my personal preferences.

Favorite Programming Languages

My favorite programming languages include asp.NET (C# & VB.NET), Java, C++, Android, and MIPS Assembly. I love learning different programming languages and keeping up with new technologies.

Command Line

I am knowledgable with the UNIX Command Line. I find writing bash scripts to be quite enjoyable, most notably when it automates something monotonous (e.g. repetitive GUI interactions).

Mac or PC

Mac and PC. I thoroughly enjoy using both and I also enjoy using Linux as well.

Video Games

Playing video games is one of my favorite pastimes. My favorite titles include Pokémon, Kingdom Hearts, Super Mario, and Sonic the Hedgehog. I am still playing my Nintendo 64, SNES, and Game Boy Color to this day.

Traveling

I enjoy traveling, especially out of the country. I have been to England, France, Belgium, Wales, Netherlands, Ireland, St. Maarten, St. Thomas, Puerto Rico, Bermuda, and the Bahamas, just to name a few places.

Music

I love listening to music. I listen to a variety of different bands and genres. Some of my favorite bands include Skillet, I Prevail, Florida Georgia Line, Luke Combs, Haley, Good Charlotte, Marshmello, and Rush.

Contact

Please contact me if you have any questions. Thank you for visiting!

Email

12hainn@gmail.com

Phone

(717)-723-0802

Social