Some Things I've Built

Odinbook
Odinbook Log In/Sign Up Page
Click to Expand Image
Odinbook Log In/Sign Up Page
Socrates Viewing Plato's Timeline
Click to Expand Image
Socrates Viewing Plato's Timeline

Developed: 2015

Contribution: Solo Developer

Description: Odinbook is a clone of Facebook written using TDD and designed to mimic the look and some core features of Facebook including friending, posting, commenting, and liking. Additional features provided include Timeline, Newsfeed, customizable privacy settings, and search.

User experience is enhanced in this web application with extensive use of Ajax requests (for everything from creating or deleting a post/comment/like to client side form validation), realtime updates with websockets (reflecting other users' pertinent actions), and infinite scroll.

This application uses Devise for authentication and Omniauth integration with the real Facebook as well as Paperclip with AWS S3 storage for images.

More Info: Odinbook is hosted on Heroku at dna-odinbook.herokuapp.com; the source code is available on GitHub.

Chess
Start of Chess Game
Click to Expand Image
Start of Chess Game
Useful Feedback in a Chess Game
Click to Expand Image
Useful Feedback in a Chess Game

Developed: 2014

Contribution: Solo Developer

Description: This is a two-player CLI chess application written using TDD in accordance with the World Chess Federation's Laws of Chess.

This application performs detailed checks of a player's attempted move and provides useful feedback when an illegal move is attempted; it also warns when a player's king is in check. All special moves (castling, en passant, promotion, and a pawn's double step on its first move) are allowed in the game.

According to Article 5 of the Laws of Chess, a chess game may end in one of seven ways--Checkmate, Resignation (both wins), Stalemate, Dead Position, Agreement, Threefold Repetition, and Fifty Move Rule (all draws). All seven are recognized and implemented in this application. At any time a game may be saved and continued at a later time.

More Info: The source code for this Chess application is available on GitHub.

Where's Waldo
Where's Waldo Game Board Select
Click to Expand Image
Where's Waldo Game Board Select
Where's Waldo Game in Progress
Click to Expand Image
Where's Waldo Game in Progress

Developed: 2014

Contribution: Solo Developer

Description: Implementation of the children's game Where's Waldo (or Where's Wally) with Rails on the back end and JavaScript on the front end. Offers six boards of increasing difficulty for a player to choose from.

This application works similar to a photo tagging application where a player has to "tag" the different Waldo characters on a large board. JavaScript captures a player's character selections then makes an Ajax request to the Rails back end which checks the character selection; finally JavaScript displays feedback. There is also a leaderboard which shows the top 20 scores (measured by how quickly a player finds all Waldo characters) for each board.

More Info: Where's Waldo is hosted on Heroku at dna-wheres-waldo.herokuapp.com; the source code is available on GitHub.

Missile Command
Start of Missile Command Game
Click to Expand Image
Start of Missile Command Game
Missile Command Game in Progress
Click to Expand Image
Missile Command Game in Progress

Developed: 2014

Contribution: Solo Developer

Description: JavaScript clone of the classic game Missile Command on an HTML5 canvas. Protect six cities with three Anti-Missile batteries from enemy missiles like in the classic game.

This application uses JavaScript to draw each element of the game (missiles, missile paths, cities, anti-missile batteries, explosions) on an HTML5 canvas for each game frame. Some geometry is then used to calculate where each moving game element (like missiles) need to be on the next game frame to maintain a smooth animation. Each game level produces more enemy missiles that travel faster making for increasingly harder game levels.

More Info: You may play Missile Command here; the source code is available on GitHub.