Landscape View of Skyscrapers

"Sometimes it is the people no one imagines anything of who do the things that no-one can imagine."

-Alan Turing

Thomas Luke Whaley

Computer Science Major | University of West Georgia
twhaley1@my.westga.edu
← more
Image of a Book
less →

Thomas Luke Whaley | Computer Science

I am currently a senior at the University of West Georgia with an expected graduation date of May 2021.

My major is something that I am passionate about. If you are looking for a person who is constantly eager to learn and try new things, or just a person that can bring your ideas to fruition, then I'm the right person for the job.

In the projects that I have worked on, I have gained experience in languages such as C++, C#, Java, Python, JavaScript, SQL, and more. From these experiences, I understand how to approach a problem using different programming paradigms. Furthermore, I am familiar with design patterns, i.e. MVC, MVVM, etc., that make code code cleaner and more extensible.

I know the benefits of Test-Driven Development and have experience using several different testing frameworks. Maintaining a test suite with a high percentage of code coverage gives the ability to refactor with confidence; overall, this increases production velocity. Even better, it gives the programmers confidence that what they have written actually works.

I also know about algorithms and time complexity. If time complexity is not considered for computationally intensive operations, then the user experience may suffer. The user may require that the response time for their application be as fast as possible; therefore, the performance of performing calculations on two million pieces of data with an algorithm of exponential time complexity may not be acceptable to them. In times like these, the algorithm choice matters.

Through my experience developing server-side processes, I learned a plethora of information.

I learned about HTTP, UDP, TCP and how to work with sockets. I have used both Java and Python to develop servers that utilize these protocols. When building these projects, I gained experience with multi-threading and synchronization. When writing these multi-threaded applications, I have also tested them. I know that it is crucial to establish a happens-before relationship so that a testable outcome can be guaranteed.

During the Spring 2020 University of West Georgia Hackathon, my team and I built a web application. I spent most of the time developing the application's back-end. It was a Python HTTP server with an SQLite database. This was the first time I had worked with databases. From there, I quickly learned more on my own and have implemented them in other applications as well.

Overall, I find back-end server architecture interesting and would love to learn and experience working on them in a professional environment.

Interesting Projects

(view my github repository to see more)

Desk Workstation

This application is still in progress. Currently, the server-side code is complete as far as the minimum viable product is concerned. The server is written in Java and is a TCP socket based communication server that is completely multi-threaded. It has the capability to support many ongoing connections at any given time, and has a test suite with over 90% test coverage that ensures this.

Users send messages through one gateway on the server and listen for messages on another. This approach works great because it allows the client to receive messages on the listening gateway without asking for them. By "subscribing" to the listening service, the client can display the messages as they come in exactly like an instant messaging service.

As of now, there is currently a small-scale front-end user interface. The front-end code is written in C++ and takes advantage of the Qt framework. Additional plans include adding encryption functionality so that the information exchanged in the chat is completely secure and private.

SteamScout

repo available upon request

The main premise behind SteamScout is saving gamer's money. It lets user's track games sold by steam on their own watchlist. Then, for each game on their watchlist, the user can specify notification criteria: on sale or below a price threshold. SteamScout will notify the user in app and through email notifications when games on their watchlist meet the notification criteria that they set.

The back-end for SteamScout is a python TCP server that utilizes pyzmq, requests, json, and more. The back-end gets the Steam information via Steam's public api. The front-end is written in Java utilizing JavaFX for the user interface.

This project is written collaboratively with Michael Jiles and Nathan Lightholder. There has been some talk among us about some ideas for future of this project. Possible ideas include moving the front-end to a mobile environment as well as redeveloping the server in a more scalable environment.

Steganography Application

view on github

This application allows users to encrypt the contents of a text file or an image within the pixels of another image. Bit manipulation is used to store the data within the image. For text files, the user has the ability to encrypt the contents using a Vigenère cipher. The user can then save the image with the encrypted data in it and decrypt it by resubmitting it to the application.

This app was developed in C# along with UWP. I think this project is interesting because I used bit shifting. Also, it was neat to see how the primary image became distorted when the user specified a bits per color channel value greater than or equal to 4.

This project was an assignment for a course at the University of West Georgia; therefore, there were tight time constraints that inhibited me from pushing the application to its full potential.