Kristopher Blackwood

Resume Companion

kblackwood42@gmail.com

Complete Resume

Last updated: 4/26/14

Software Experience:

DGC (Disc Golf Companion)

DGC is a mobile app for Android that allows users to keep score, track player statistics, and interact with a database of disc golf discs.

This is a personal project of mine. I produced the design and wrote the code. I tested the app and published it to the Android Market (now Google Play). I also did all of the graphic design for the app and for the app's official website.

Official DGC Website

DGC (Disc Golf Companion) Logo
Image of DGC Saved Round
Image of DGC Player Stats

Hardware/Software Interaction Experience:

ACRC (Android Controlled Radio Controller)

The ACRC allows an RC car to be controlled by an Android smart phone.

This was a senior design project for the Bagley College of Engineering at Mississippi State University. For this project, I held the position of team leader, came up with the original concept, pitched the idea for approval, and incorporated suggestions from team members along the way. I also wrote the entire Android app, wrote most of the firmware, and helped integrate the microcontroller and Bluetooth module into the hardware layout.

See more including pictures and video...

ACRC Project Logo



Version Control Software for Optech

When I first started working with the Coastal Zone Mapping and Imaging LIDAR (CZMIL) system at Optech, the first thing that I noticed was how difficult it was to update and keep track of the software versions for each system. Each system has three Linux computers, a web server, three TS-7800 embedded controllers, and an operator laptop. Since I am in charge of most of the software on the system, it was up to me to update the software and to keep track of the versions.

I took it upon myself to develop version control software that would automate the updating process and log all of the interactions. The version control software is placed on the operator laptop and allows anyone to perform the updates. Each piece of system software can now be updated with the touch of a button. When the update occurs, a copy of the previous version is created on the individual system being updated. A copy of the previous version is also stored on the operator laptop, which allows the operator to revert back to the previous version as easily as updating.



System software types:

SLIC Linux Application (CentOS)
Diagnostics Web Application (Glassfish)
FMS Windows Application (Windows 7)
Storage PC Linux Application (CentOS)
RTPC Linux Application (CentOS)
Laser/Thermal Linux Application (BusyBox)
Sensor Head Linux Application (BusyBox)
PDU Linux Application (BusyBox)
Version Control Sample

This image (click to enlarge) shows the simple interface for the version control software. Pressing an update button pulls up a file selection dialog that allows the user to select the update file. Pressing a revert button will automatically revert the software back to the previous version. The log buttons display a window that shows a history of the software versions. The update from zip button allows the user to update the entire system from a single zip file.



Custom Terminal Software Evolution

While in school, I wanted to have a terminal that I could customize for different projects. Although this application was not required by any of the classes that I was taking, I chose to build it as a side endeavor during my free time.

The app is written in the Python scripting language and can run on both windows PC's and Linux computers. It is designed as an event driven, multi-threaded app that has a GUI front-end and a back-end that communicates with the GUI via a set of message queues.
Terminal Software Screenshot

This image (click to enlarge) shows the terminal being used for the ACRC project. It gave us the ability to communicate directly with the microcontroller and/or the Android software. Using some automation scripting, it could also simulate either the ACRC or the smart phone app. It was an invaluable tool for performing latency and battery life tests.

Terminal Software Screenshot

This image (click to enlarge) shows the terminal being used as a weather station terminal on a CAN network for a lab project in my Embedded Systems class. In this case the terminal allowed my team to quickly gather weather information from any weather station on the network without having to take the time to use a command line. It also incorporated a script (written by another team member) that parsed weather data from a local airport weather station so that the terminal could act as a weather station itself as well.

Custom Terminal Software for Optech

When I started working at Optech, I needed a way to interface with the software running on the TS-7800 embedded controllers. My terminal application could communicate with the controllers via a serial connection, but the embedded software required a network connection. Using my old terminal as reference, I wrote a new terminal that featured both serial and network socket functionality.
Terminal Software Screenshot

This image (click to enlarge) shows the terminal in its current state as part of a larger dashboard application. As shown here, the terminal is being used to monitor logging accross a network. The terminal is also used to emulate server commands that are used to control the embedded systems.


Web Development:

This Site

Aside from functioning as a portfolio, this website was designed to demonstrate my artistic side with regards to content presentation. All of the graphic design was done from scratch along with the html and css. Although graphic design can be subjective, content should always be presented in a manner that is both logical and clear to all who view it.

Note: Looking at the source code for this site will reveal that the layout was created using tables. Although this is still considered acceptable by many, the preferred way to create a layout is by using div tags and css. If I were to recreate this site today, I would use PHP to encompass common elements. I would also create the layout using pure div tags and css instead of using tables.