Programming Projects

Various projects that I've developed over the years. 

Captain Steamer Carpet Cleaning Database

This was my first project that I developed to teach myself Visual Basic. The company was a small independently run business that cleaned residential homes and commercial offices. The owners were very close friends of mine and they needed a software solution as much as I needed to learn how to create a software solution. They believed in me and allowed me make this a learning experience for myself. 

This project taught me a lot about database connectivity with security, the fundamentals of basic query execution, and the overall work flow of a graphical user interface. The application contained all of the necessary CRUD (Create, Read, Update, and Delete) queries and dialogs and I was able to learn the fundamentals of debugging Visual Basic code.

Problem 

The company had years of paper files and wanted a way to track their jobs and customers using their computer. They found that they were spending a lot of time filing papers and looking up customers records while on the phone. After years of paper filing, they found that they were running out of filing cabinet space and they wanted a system that they could use to store all of their information into a database instead. They looked at QuickBooks, but it was too much for what they needed; all they wanted was a way to track their customers and jobs, and provide simple quotes over the phone. The system had to allow them to schedule jobs for various customers, track payments, and print invoices.

Solution

I proposed a system to meet all of their requirements. I met with them and took simple requirements with pencil and paper. The application was written in Microsoft Access 97 and I used VBA (Visual Basic for Applications) for all of the functions and subroutines. The end result was a password protected database (requiring a login) that allowed them to quickly search for customers by name or phone number. The system allowed them to create and update existing customer records as well as add and edit various jobs for the customers. The company noticed an improvement to the way they interacted with customers. They eventually moved all of their paper files into the system one job at a time.

Truck Driver's Log (TDLog)

This is my flagship project. I wrote this application in Visual Basic 5.0 and upgraded it to Visual Basic 6.0 shortly thereafter. This project taught me the power of using 3rd party ActiveX controls. When I ported the application in Visual Basic 6.0, I began integrating basic object oriented techniques into the solution including class files and instantiating objects to manage records in the database. 

This was my first successful Visual Basic 6.0 application. I still plan to port this application to .NET 2.0 and develop a version that would be compatible with Palm Pilots and/or Windows Mobile devices.

Problem

At the time, my dad was driving truck for Yellow Freight and he wanted a program to allow him to predict how much his paychecks were going to calculate to. He also wanted to know which trips were being ran the most and which trips were paying the best. The ultimate goal was to analyze data. At the end of each pay period he would use the built in analysis module to compare his numbers with the companies records, and the receipts would match, penny for penny.

The application had many tricky elements to it and he wanted it to be easy to use. The application had many functions and they all needed to be easily accessible to change at any time. The solution needed to keep track of various mileages between destinations. It needed to keep track of pay rates, while also incorporating periodic raises and rate changes at anytime. The user should only need to enter the date, the starting city and the destination city, and the system should figure out the rest using defaults and complex queries. 

Solution 

The application used various ActiveX controls from Data Dynamics. ActiveBar was used to manage all of the toolbars and menu items to give the application a true Microsoft Office look and feel. I incorporated a very powerful grid component named SharpGrid to allow the users to sort, group, and filter various rows of data. Reports were delivered using ActiveReports 2.0. The DynamiCube component was used to allow the user to analyze every piece of data that was entered into the application. 

Since the main purpose of the application was to easily enter data and then analyze that data, there was a very large focus around easy data entry as well as a large focus around the DynamiCube component. I created a custom user control to allow auto complete as the user typed. I also created another custom component to mimic the Microsoft Money 2000 calculator control. This enabled the user to perform quick calculations on trip entry dialogs using standard calculator functionality. 

The highlight of the application was the analysis module. Users were able to build analysis views using any combination of fields from the database and dynamically calculate data at any level. My dad used this application for every single trip.


Montel's Cleaning Service

This was another home grown application that I developed for my Uncle as he had taken over another cleaning service company and needed an application to track his data. His company focused in cleaning services for residential homes as well as commercial businesses. He was a close friend to the owners of Captain Steamer Carpet Cleaning company and had seen the application in action; he wanted a similar application built to help get his company up and running. 

Problem

Similar to the problem case for Captain Steamer Carpet Cleaning business, Montel's Cleaning Service needed a system to keep track of customers, jobs, and print invoices. They too didn't want to use QuickBooks, as it was overkill for what they needed. There was a very small set of requirements and he needed a solution quickly. The Microsoft Access solution was not an option, as he didn't have Microsoft Office. 

Solution 

I used the Microsoft Access solution as the basis for the requirements, as they were very similar (almost identical). The Captain Steamer solution was rewritten using VB6 and incorporated ActveBar, SharpGrid, ActiveReports, and DynamiCube. I spent 2 weeks on the project and provided my uncle with a prototype to use so that he could begin entering data and testing the functionality. The resulting application had a Microsoft Outlook look and feel with the various and looked nothing like the Microsoft Access application. Reports were generated using ActiveReports, and records were filtered and sorted using SharpGrid. I incorporated DynamiCube, though it was a bit too advanced for them, and I don't know that they ever used it. A few years later, the company was sold and I'm not sure what happened to the application.    

Reusable Calculator Component

This was  a component that I developed while working through the TDLog application. It was a cool concept, so I extracted the project to it's own solution so that I could compile it and reuse it in other applications.

Problem

I wanted a control that would allow users to use standard mathematical operations to result in a single value. The idea was to provide a control similar to a combo box and then display a calculator. As the user typed in simple operations (or clicked on the calculator buttons), values would be calculated. The concept came from Microsoft Money 2000. 

Solution 

I wrote a single class file that managed Add(), Subtract(), Multiply(), and Divide() operations. As the user typed numbers in and pressed these various operation buttons (+, -, *, and /), I would process the current operation and prepare for the next operation. Users were able to type the following key combination:

10 * 2 + 8.45 / 5 - 3

and have the resulting value display in the textbox:

2.69 

Floppy Disk Consolidator

My mother in law in an accountant and she had many years of old DOS applications on various floppy disks. She got an updated system and wanted to have all of her old applications installed on her new system. However, her new machine didn't have a floppy drive. I (on the other hand) did have a floppy drive, so I took a full box of floppy disks and began copying them one by one to a folder on my machine so that I could burn them onto a CD for her. I found out quickly that  the process was slow and error prone; there had to be a better way. For more information, click here.

Problem

The process involved me creating a folder, along with a sub-folder for each disk in the set. When all the folders were made, I would have to enter each disk and copy it to the specific folder one by one. Each disk took about 1 - 2 minutes to fully copy it's content. Therefore, once a disk would start the copy process, I would try to pass the time until the process was finished. If I didn't keep a mental note of what disk I was on, I would have to double check and triple check before I could move on. After about 20 minutes of this, I realized that something needed done.

Solution

I wrote a very quick .NET application to manage the process for me and prompt me to change disks when needed. The solution consisted of a single process to define what all was in the "box" of floppy disks and would also ask how many disks it consisted of. Once the user (me) described what all applications were in the box, I simply clicked a button and began the process. It would prompt me to insert each disk one at a time and copy then it would copy them to a predefined folder. This process would go until all the disks were gone. The application took me 1 hour to write and test. It saved me probably 2 hours of error prone busy work.

InfoPlanIT Olap Analysis

Symbiosis Mass Email System 

Consignor Order Entry System 

BuckeyeOutdoors PlugIn for SportTracks