Projects

Outlook Opener

C#

Small program meant to automatically open Outlook when closed.

This program was written as it has become habitual for me to close an application, then have it shrink to the system tray. However, Outlook only seems to have the option to minimize to tray when you select to minimize the window. The only other solution I could find to keep Outlook open when accidentally closing it was to keep an unfinished draft open.

The compiled program only takes 5-6KB. Leaving the application in shell:startup allows me to have the program run on startup. In this scenario, I may have the program running in the background, utilizing little resources, without having to remember to even open it.

Image of OutlookOpen being a parent process to Outlook.

GitHub

Grade Management Application

Python C# .NET Framework

Final project for Applied/Comparative Programming Languages.

This program was written as part of a project for my Comparative Programming course. The application is designed to take entries for courses, assignments, and students within those courses. The main program is to use an Object Oriented language of our choosing, as it required inheritance of our classes somehow, and be able to save our data in some form on the system, whether it be a database or file. The reason I chose .NET and C# for this project was because they were integrated with Visual Studio to create forms application. The .NET Framework version I used was the earliest one still supported and was part of the first Windows 10 release, so compatibility was little issue.

When originally mapping out the features for the program there were ideas which had to be cut for time. Some of these ideas being to force the user to password encrypt their data, or loading data on a course by course basis opposed to all courses to reduce memory usage. Alternatively, I had to save the data to a location non-tech savvy users wouldn't know how to access and just loaded everything from file.

Showing the Visual Studio debug screen with the application presenting example grades based on assignment and student information.

The second part of the project was to create an installer in a scripting language of our choosing. The installer had to install the application for all users, create a shortcut on the desktop, and provide sample data for testing. My original idea was actually to allow two install types in the same installer through elevated means where it installs on the system, or through a user-basis where elevated permissions need not exist.

Students had the ability in the main program to use MySQL or Java or some other means to run, or store the data for, the program and may just terminate the installation if required programs weren't installed. As mentioned, the .NET Framework I used to create the main program was an earliest version still under support and it would just be saved to file, so dependency check was not required.

I made two versions of the installer for users to choose the appropriate depending on their elevation levels on their system. Due to Python's vast use and strong community, the installer was able to be compiled to an executable with PyInstaller. This way I did not need to further worry about the end user not having Python.

This project is something I feel I should return to at some point, potentially make courses, students, and assignments based on ID and not have assignments in a hierarchical system.

Installer process screenshot.

Since the professor appears to be reusing the project, I do not intend to release the source code. Source code may be presented, should I create a second version of the program, when the rewrite is complete.

GitHub

IPv6 Network Design

Final project for the Computer Networks and Data Communications.

Given an IPv6 subnet from the professor, students were expected to create a network design of a company spanning to three cities. Each of the locations had a specified number of devices connected to their routers with plans of expansion in the future. The goal was to make our network design so we may perform static routing, dynamic routing, distinguish between networks or devices, and set up access controls.

Packet Tracer Network Layout

GitHub

UTAD Password Generator

Python & Java

Small program made to generate a UTAD Password fitting requirements.

I made the program as a quick way to generate a password for my University of Toledo accounts whenever the passwords were close to expiry. This program was made when the password expiration period was in spans of 6-months. Being security conscious, I've made a new password for every site I create an account on, these passwords are saved to a password manager which keeps the data encrypted. I would use a password generator from the password management application; however, the university's password system did not allow certain symbols so I made the generator to exclude these characters and fall in line with all the rules.

UTAD Password Generator example.

GitHub

Tic-Tac-Toe

Java

Multiplayer Console Game

I lead a group of three to create a console Java game which allowed two people to play Tic-Tac-Toe. The game asks the first player to select if they wish to go X or O and begin their turn. Game continues until a winner is announced, which gets determined if there are three in a row, which was advised to be done dynamically.

Half way into the creation of the project the professor required that we have an interface or abstract class incorporated in the project. As such, the source code shows a weak attempt at incorporating such requirement.

User selection of X or O.

User wins event.

GitHub