Projects

This page is home to my software projects. Each section is intended to give you a peek at what I have worked on, what technologies I used, and then provide you with a link to the actual code. If you don't see the button that links to the project and/or its code, scroll down within the text box.

If you think that you have an interesting project that I could help on, please get in touch. I am eager to collaborate on new projects, especially FOSS and/or ed-tech projects.

Games Education Java Web Apps

Games

Weather App Screen Shot

Tower Defense

Overview

This is a simple Tower Defense game written in Java. It uses the Java standard library and was a way for me to explore topics such as collision detection, multithreading, GUI programming, etc. There is more information available on the GitHub page.

Motivation

I created this project as a way to explore more interesting problems in Java. At the time, multithreading in Java was new to me (I had previously done some multithreading with C), and I wanted to explore it. I was also interested in figuring out a way to handle pathfinding, target selection, animations, sound, etc. This was a personal project that I developed for fun/for myself, it was not an assignment. The only part of the game that I did not create was the gun sound, I purchased a license to this from an online game resources site.

Challenges

I remember one of my favorite challenges was deciding how to keep the enemies on a path. I considered creating a "waypoint" system where they would travel in straight lines from point to point and I believe I looked at some other methods.

I decided that instead of doing waypoints, I would have the maps "tell" each mob where to go next. Basically each tile has a number/type associated with it. This number indicates if the path passes straight through the tile or if the path turns. This allows me to create a new map by declaring a 2D array of numbers that describe the tiles (the numbers also indicate if it is grass, concrete, sand, base, etc.)

Completion

This project was completed in late 2015 with some minor updates being completed in September of 2016. It is not a fully developed game and I may return to it at some point to play with new features, but I learned what I had hoped to from it and consider it complete.

Github Page

Java Applications

Java Paint Screen Shot

Java Paint

Overview

This app is a program that allows you to create pictures similar to the way you would in MS Paint. It includes the ability to create squares, circles, and a "fan" shape that I designed and added on to the original assignment. In addition you can change the brush type to be a thin or thick line, specific characters such as * or +, and to use a string of text as the brush as well. The project allowed me to explore GUI programming, multithreading, serialization, and file IO.

Motivation

This project was one assignment for my Advanced Java course at CCSF.

Challenges

The biggest challenge with this project was related to the serialization of the objects. By default the text elements were easy to save, but the other parts of the drawing were not. The key was to store each of the data points into a datastructure with the color and brush information every time there was a mouse click event. Then you could write these objects into the save file.

Completion

This project was completed in December of 2015

Github Page
Color Factory Screen Shot

Color Factory

Overview

This app is used to identify a color based on RGB slider input. The values can be displayed in decimal, octal, hexadecimal, or binary. This project allowed me to explore GUI programming and multithreading in Java.

Motivation

This project was one assignment for my Advanced Java course at CCSF.

Challenges

This project did not include any significant technical challenges.

Completion

This project was completed in December of 2015

Github Page

Education

Algorithms Blog

Algorithm Study

Overview

This is a project to explore and visualize the common algorithms and datastructures. It serves several purposes including helping me learn front end technologies (such as JavaScript, HTML5/CSS3, Wordpress) as well as helping me to think through how these algorithms work by writing them in Java, then once again in JavaScript for the animation. By writing it into a blog post it also helps me to think through how I would explain the algorithm and put the concepts into words. The project includes the following process:

  1. Write classes to execute the algorithm in Java and write test classes to demonstrate it
  2. Create a visualization using javascript and html5 to show how it works in an easy and intuitive way
  3. Create a blog post to discuss the algorithm and its characteristics

Motivation

This serves as a way for me to review and continue to learn fundamental algorithms and datastructures, but it is also much more than that to me. I am passionate about education and education technology and this is a way for me to think about and develop a better understanding of ways to use technology as a teaching tool.

Challenges

From a technical standpoint this project has not had any significant issues. As a personal goal, I would like to put more time into it.

Completion

This project is a work in progress and will be expanded as my schedule permits.

Project Page Github Page

Web Applications

Blog App Screen Shot

Blog App

Overview

This is a simple blog app that allows users to register, create posts, comment on posts, and like posts.

This project was a lot of fun to create as I had to learn several technologies to implement it. It is based on Google App Engine (GAE) and uses the Google Datastore as the database. The app used Jinja2 for the template engine and along with basic HTML and CSS for the front end. I also had to learn to use Python for the backend.

Motivation

This project was an assignment from the Udacity Full Stack Web Developer Nanodegree program.

Challenges

The biggest challenge with this project was learning all of the pieces simultaneously to create a function app. One of the tricky parts was that my background in database queries was limited to relational databases with strong/immediate consistency. This was a little challenging because Datastore uses eventual consistency. Initially, this resulted in page redirects where updates were never completed and so were not visible on the new page (after a page like for instance). Introducing a small delay before page redirects was adequate for this project's needs, but the issue provided me with exposure to the need to address this issue in NoSQL based projects.

Completion

This project was completed in August 2016.

Go to App Github
Proprietary Project Screen Shot Unavailable

Education Portal

Overview

Towards the end of my time at Ocean Tomo I created a prototype education portal and presented it at the company all hands.

Motivation

Initially the presentation was part of a larger group project that did not include an education portal. I was having difficulty getting group buy in for my idea so I worked on the prototype/proof of concept site and presented it to the group. Seeing a concrete example of what it was and what it could be, resulted in the group becoming interested in the project and it became the center peace of the entire presentation. There was a great deal of interest in the portal after it was presented at the all hands meeting. I cannot share an image of the project as it is owned by Ocean Tomo. The prototype was a front end built with JavaScript, Bootstrap, HTML, and CSS. If I had stayed on at Ocean Tomo and completed the backend, it would have used Scala, the Play framework, and PostgreSQL.

Challenges

There were no significant challenges in this project. As it was only front-end interface and did only included minor interactivity.

Completion

This project was completed in August 2016.

Go to App
Weather App Screen Shot

Weather App

Overview

This app will detect your location and provide you with current weather conditions. It uses the openweathermap API. You can also choose a location by zip code.

The front end is written with Bootstrap and jQuery with PHP running on the server. I could have completed the project using JavaScript on the front end with no PHP on the backend, but that would have exposed the API key. Exposing the API key would not have been a huge deal because anyone can get a free API key from openweathermap.org, but I wanted to treat it with the same care that I would for any valuable API key.

Motivation

I have become more and more interested in full stack web applications and this was an opportunity to learn about it. This was an assignment from a Udemy course that I took that I expanded upon.

Challenges

This was a straightforward project with minimal technical issues. I made it more difficult by deviating from the course instruction and adding the PHP backend, but it was not a significant time investment to do so.

Completion

This project was completed in May 2016.

Go to App
This site

www.jasonrboyer.com

Overview

This is one of my first web development projects and it has undergone quite a lot of change from the very basic (and mid 90's looking) initial pages, to the more modern responsive design. At one point I even included PHP and MYSQL to implement user registration and sign in. I removed this functionality because there is really no purpose for it on my site other than as a learning exercise.

Motivation

I have a few reasons for creating this site. The main reason is that I want an online presence to share with potential employers while I complete my career change into software development. It is also a place for me to experiment with and learn about web development technologies.

Completion

This project will never be complete. I intend to continue to learn, create, and share for the rest of my life.