Defend The Castle

Written in JavaScript

Defend the Castle is a fast-paced arcade-style video game, with a twist on the classic tower defense genre. The engine and game were written from scratch for a Nashville Software School front end capstone project, and it runs right in your browser (tested on Firefox and Google Chrome).

I wanted to create this game from scratch, to better understand how game engines work under the hood. The biggest challenge surfaced when I discovered that the tutorial I was following didn't actually bring the game to a basic completion. The series had left me with a solid foundation, no doubt, consisting of a tile map loader, a game camera, keyboard input and a hero to control, some basic collision detection, and some entity handling. The rest was up to me. Did I really want to stick this through, knowing it would be extremely challenging? In the end, I had to fully immerse myself in to this code base, and really learn how it worked in order to achieve the results that I desired. It was a wonderful learning experience.

Me, Myself, and i

Written in JavaScript

Me, Myself, and i was written for the yearly code-golfing competition js13kgames, running from August 13 2017 to September 13 2017. The goal of this competition is to submit a full game made within a month, with all assets, libraries, etc coming in at under 13Kb compressed and able to run off-line. The theme of this competition was "Lost". In this game, you awake in a strange maze. You struggle with your inner thoughts and other voices that make themselves known. You wonder why you are here, how you will ever escape, and who is doing this?

I learned the term "code-golfing" during this competition. I really wanted to explore what it means to develop narrative within a game. I coded this game by refactoring the engine written for "Defend The Castle" to ES6 using classes and webpack to compress it for the final submission. I worked on the narrative with my friend, Keith Davis, who wrote most of the dialogue within the game. All in all it was a very fun competition, and I really appreciate all the hard work that went in to it by the staff!

Waves '87: Business Cruizin'

Written in Python with the RenPy scripting engine.

Made in 48 hours with a five man team. Waves '87: Business Cruizin' is a graphic novella chronicling the adventures of a Kawa, a businessman loathed by his peers and about to be fired from his job. A chance encounter with pirates may just turn his life around...

I was very excited to hear about Global Game Jam 2017. I have wanted to participate in a game jam for years, and this one was local. My team consisted of myself, three of my Nashville Software School classmates, and two new friends who caught our attention with their unique art style. Having only 48 hours to attempt the planning and completion of a game quite the struggle. We spent that Friday evening planning everything out as far as we could imagine, and the following Saturday and Sunday morning coding, recording the sound and music, and bringing it all together. It was not only a wonderful experience working on a project outside of school with my classmates, but it was great to get to know them a bit better as well. My contributions to this project include some scripting on scenes 3, 4, and 6; the music for the title screen, cruise theme, and tough cruise theme; making sure the artwork coming in was formatted correctly for our project; scripting for the battle scenes; building distributions for Windows, Linux, and Mac; and recording sounds including barking like a dog, growling, seagull noises, and ocean waves.

Web Apps

Bangazon API

Written in Python with the Django REST Framework

The Bangazon API was a group project assigned to five member teams at Nashville Software School. It is a RESTful API that requires authentication to consume.

This being our first group project in the back end of things, it was equally exciting and nerve wracking. The magic abstraction of Django completely blew my mind for a while. I'd seen some Angular magic, but this was a whole new level. Through a lot of research and pair programming we were able to wrap our heads around Django. My contributions to this project include creating the ERD, updating the data fixtures, creating pull request and issue templates, contributing to the, creating the customer model serializer, the customer model view, adding the customer url routing, registering the customer model for admin use.

Bangazon CLI Tool

Written in Python using unit testing and SQL commands.

The Bangazon CLI tool was a group project assigned to five member teams at Nashville Software School. The CLI tool is a command line interface that allows the creation and storage of customer accounts, payment options, and orders, the storage and adding of products from the database in to the active order, the completion of an order after adding products and selecting a payment option, and a display of the current product popularity rankings by revenue generated.

This project allowed us to take a break from Django, and really dig in to SQL and Python from a different perspective. The SQL commands are all issued from within the Python environment. My contributions to this project include the ERD, the payment option class and unit tests, the refactoring of said class and tests, and the SQL database interactions for order and payment option models.


Written in HTML5, CSS, and JavaScript using SCSS, Bootstrap, and jQuery.

Chatty is a mock chatroom web app. The messages are loaded in and parsed from a JSON file.

Chatty was one of the earliest group projects assigned to us happy, eager coders in Nashville Software School's Cohort 16. IIFEs, jQuery, and even JavaScript were still pretty new to most of us at the time. This group project, along with the others to come, helped to provide me with the experience of a real team coding challenge. I believe this was the first group project where we really got to handle Github merge conflicts. My contribution to the app includes creating the initial JSON file to read, adding the initials bubble to chat messages, setting the message limit, handling the removal of messages, and some scss styling. Our wits were tested; Our Gits were tested. In the end, I believe we made a fine faux chat app!

Battle Bots

Written in HTML5, CSS, and JavaScript using Grunt, Browserify, and jQuery.

Two player battle to the robot death. Each player chooses one of six classes (Johnny5, Wall-E, R2D2, R2BRO2, Bender, Baymax). This project was a quiz for Nashville Software School testing mastery of prototypal inheritance.

Being a quiz on prototypal inheritance, I think that it's pretty awesome we were given a robot death battle. For class choices, I added five of my favorite all time robots, and a sixth hilarious version of R2D2 that I stumbled across while googling R2's image. This was a pretty difficult quiz. Having some previous coding experience before NSS, I was feeling pretty good about my quick comprehension of the curriculum up until this point. But OH boy, prototypal inheritance really threw me for a loop. Overcoming that hurdle was extremely challenging, but equally as rewarding. I had to tackle this quiz through some extreme perseverance, and eventually a very satisfying comprehension of prototypal inheritance, but it paid off big time when I started working with Class.js in my front end capstone (Defend The Castle).

Consignment Toy Shop

Written in HTML5, CSS, and JavaScript using SASS, Bootstrap, Firebase, Handlebars, and jQuery.

A retail page for a mock toy company. This project was a quiz for Nashville Software School testing data handling with Firebase, while throwing a Handlebars wrench in the machine just for plain ol' fun. Written with SASS, Bootstrap, Firebase, HTML5, Handlebars, JavaScript, jQuery.

This project was a tough one. I hadn't really done much with databases at the time, and Firebase itself was completely new to me. I spent some extra time after school to really dig in to this one, and make sure that I had a working product when it was time to turn it in. Overall, the experience imparted unto me a better way to Google, a better understanding of the Bootstrap grid, and a finer grasp on XMLHttpRequests and jQuery's $ajax calls.