Software Development

Below is a selected list of personal software engineering projects. To view the source code of personal projects, there is a link to GitHub repositories in each project description. For viewing source code of school projects, please contact me through my email at contact.ryan.saunders@gmail.com.

P2P Offloading on Mobile Network

2015|Written in PythonView Paper

I worked with the University of Utah's Flux Research group to improve latency of P2P services over the mobile network. We worked on an emulated 4G/LTE network with a physical eNodeB (celltower). Traffic flow was regulated using OpenFlow. Testing on separate smart phones, we were able to significantly improve the latency between them. A draft paper that was prepared for a mobile research conference can be found in the link above.

Android App of a Virtual Boardgame

2015|Written in JavaView on GitHub

As part of a Kickstarter boardgame campaign, I created a virtual boardgame as an Android app that followed the same ruleset and used similar assets. The game followed the MVC pattern and made use of the Android views and layouts.

Cosmonautics - A Multiplayer 2D Space Shooter

2014|Written in C#View on GitHub

I decided to develop this game for two main purposes: I wanted to learn how to deal with graphics outside of GUIs, and I wanted to determine how to test a network connection with an intense and consistent data transfer rate. Cosmonautics uses the OpenGL API for graphics processing. The graphical elements were drawn in Adobe Illustrator and were manipulated in-game under simulated physics. This included a custom collision detection algorithm and particle simulation. The networking involves a TCP connection to a server, which communicates between all clients. Currently, I was attempting to convert to a hybrid TCP/UDP connection for a more fluid gameplay before I moved onto other projects.

Concurrent Spreadsheet

2014|Written in C# and C++Download Design Document

This was a group project completed in collaboration with two other programmers. The goal was to create a spreadsheet application that could allow for multiple users to edit a spreadsheet concurrently; much like the functionality of Google Drive's Spreadsheet. The spreadsheets are stored on a server, which also allows for the spreadsheets to be opened and edited by simultaneous users. As a class project, each group had to propose a solution in a design document, which the class would vote on to use.

Secure Text Transfer

2014|Written in Java

A client-server communication protocol that authenticates, encrypts, and determines the integrity of a message. A double encryption method is used for fast and secure data transfer. Private and public key pairings are generated using RSA, and symmetric keys are generated using 3DES. Message digests are created using SHA-1 for message integrity checks. Finally, a simulated Certificate Authority is used for authentication of client to server.

Ball Animation added to FFMPEG

2014|Written in C and C++Download Design Document

This project was about creating a program that uses the ffmpeg libraries to composite a sequence of animated images into a movie format. Ffmpeg libraries were to include a new image-animation format. A stand-alone application was also created for adding a ball animation to a user chosen background image.

HTTP Web Proxy

2014|Written in Java

A standard web proxy that observed all incoming and outgoing HTTP requests and responses through the Firefox browser. The proxy could easily be converted to blocking certain traffic.

Boggle Game with Server

2013|Written in C# and HTMLView Example Stat Page

A multiplayer Boggle game that stores game statistics on a SQL database. Two players are paired together and play a randomized Boggle game on a standard Boggle board. An HTML page can be accessed from the server-side IP address on a browser to look up game and player stats.