Chatter System

This set of applications was created as a UIS CSC583 network programming term project in the fall of 2015. It includes a chatter server and a chatter client, and provides instant messaging services over the local area network. The chatter server application is command line based, and runs on a vacant port of its host computer. The chatter client is a graphical user interface based application that allows communication through the chatter server to other clients on a local area network. Each client connects to the server, and the server broadcasts incoming messages from a client to all other connected clients. The server has the capability of maintaining a list of users who have previously connected to the system in a MySQL database. Continue reading

ComputerSMS Android and Desktop Applications

I currently own a Moto X and looked forward to the Motorola Connect feature when it was first released. The promise of Motorola Connect was to allow SMS messaging via a Chrome browser plugin. Unfortunately, the delivered product fell well short of my expectations. Initialization was slow, messages weren't sent and received in a timely fashion, messages sent and received within Motorola Connect were not accessible in the messages app on my phone, and using the plugin meant that my messages were being stored on yet another server over which I have no control. Needless to say, I stopped using the Chrome browser plugin after my first experience. I needed to create a better solution for my personal needs. Continue reading

SMorSe Android Application

SMorSe is an Android application that converts incoming text messages to Morse code based on the ITU-R M.1677-1 recommendation. Simply enable the app, and all incoming text messages will be converted to Morse code (even if the app is not running). If the ringer mode is set to normal, the message is played at the frequency and speed settings chosen. If the ringer mode is set to vibrate, the message is vibrated at the speed setting chosen. Each message begins with the starting signal ( — • — • — ), after which the message is played. The cross signal ( • — • — • ) indicates the end of the message. Continue reading

PE License Manager

Pelicensemanager.com was the first real project I developed. By calling it a real project, I mean that it’s much more involved than developing a static website, or designing a template for a popular CMS. This project required database design, extensive PHP development, and several MySQL queries. This was a complicated project, made even more complex by my lack of knowledge and experience at the time. As it stands, pelicensemanager.com meets all requirements and functionality that I set for a minimum viable product. Now that I have more experience, the myriad of inefficiencies in the PHP code and MySQL queries are obvious, but these inefficiencies do not adversely affect usability for the current user base. It does not make sense to spend time correcting these inefficiencies until the size of the user base dictates that it is necessary. This project analysis will outline how pelicensemanager.com was constructed, and will detail the changes I would make if I revisited this project today. Continue reading

Farkle

For the software engineering capstone course at University of Illinois at Springfield, my team developed a version of the popular dice game Farkle using Java. This project went well beyond simply coding an application. It was an exercise in overall software engineering. In addition to coding, this project included overall project planning, team management, requirements documentation, design documentation, testing documentation, and user documentation. Our team was composed of three individuals that had never met prior to this project. We had to overcome hurdles of not knowing each other's strengths and weaknesses at the beginning of the project, working remotely (we were in different time zones), and a compressed schedule to deliver the final project. This project represents one of the greatest learning experiences of my life. Continue reading