Detail-oriented programmer with 4+ years' success devising multiple applications for different platforms. Self-taught mobile application development with coursework related to other languages to relate to diverse industries. Proficient skills with modern development tools and resources to create various solutions as warranted. Experienced with time complexities, various algorithms and data structures to maximize programming efficiencies.
Objective C Development
Built with a design to match professional applications, this productivity program was created to connect microbrews to the beer drinkers.
The idea behind this application was that breweries are popping up all over San Diego, and other great counties, and there is not a seamless way to find them all, follow them, and see what they are currently pouring on tap. Facebook is a common option for many small businesses, but it is not specialized towards a physical product.
With Beer Hopper, that changes. The mobile application uses your location to find breweries near you, sorting them by which is closest, and allows users to view their entire beer list, just what is on tap, their average rating (for both the beers and the actual business), hours and more!
The simple feat: no more wandering online looking for a local microbrew to simply get a beer. Just open the app, see what is open and head on out!
No longer live, due to minimal interest, this application was still a great triumph for me. Working in a group of three (3), we were able to successfully create a powerful application that was geared towards meeting new people and going to new places.
Crony was an application that used peer location data (anonymous) that only kept a record of a location - not a specific user. The application then used the location data to tell users how many people are near a particular business.
This group project required total communication with the group members as we had to agree on UI, server implementation and the limits of our data gathering.
Heading the iOS development portion, I created the curent UI of the application, as well as the backend side of the local application. My job was to create a working version of our product while another was in charge of maintaining the server and the other was in charge of promoting the finalized product.
In this project, we were able to incoperate MongoDB while using the RESTful API's. We had a website setup, Crony.me (no longer live) that informed potential users about our application and the purpose we set to achieve. Then, in the iOS application, I used Objective-C as my primary development language while bridging to REACT-Native for experience on using their login toolkits.
Krash Kourse 2
This was my top downloaded application of all time. The game is simple: move your cars on the road out of the way of oncoming traffic.
An "Endless Runner" game, as many are popular, was a fun game to make. For the cars, I used an image of a 3D car I designed using Google Sketchup. I then painted them differently to make them appear as different cars.
The game had some entry level logic, as it should still be considered an entry-level game. The road moved under the car to give the impression that the car was moving at a top speed. The road was comprised of a grid of image tiles, which would reset to a position above the screen and move down the tiles at the bottom of the screen disappeared. Then, when items would appear in the road, the centers of the items would be set to the center of a random road tile.
The user would try to gather as many points as possible - either by pure distance or by collecting items - before crashing into too many cars.
As Object Oriented Programming was used, each car had its own set of attributes. Ranging from number of lives, speed, multiplier and cost, a player can fill their garage in this 2D game. After they complete a round, the user may see all of their stats, which are broken down by car, item hit and more.
This was a fun game to make as I love word games. The object of the game was simple: unscramble the letters from the top and place them into the corect position at the bottom of the screen.
The words range from 3 letter words to 5 letter words, each given a particular level of difficulty. On easy, you start off with every letter given to you for the 3 letter words. Your job is simply to find them and place them in the correct square below. On medium, you are only provided a random amount of letters and you have to figure out where they go. This level is also slightly tougher due to the word length starting at 4 (instead of three). Finally, you have hard, which starts you off at five letter words, without any hints.
To make this more interesting, I added different modes, animations, and powerups for the user. I included items such as reveal, which shows you all letters in the word below, clock, which adds 10 seconds to the game timer, skip, which skips the current word without penalty, and an extra life.
The purpose for creating this game was to learn how to do basic animations. From animating a movement, to rotations, to shifting the size of several elements in a clean way. This game used the same object collision detection as my other apps, but I was trying to advance my User Experience while keeeping it a children's game.
Though the title is not that creative, this game tought me how to handle touch-and-drag events. The object of the game is simple - catch all of the falling eggs by moving your tree knots up and down (which move the nests used to catch the eggs). You keep playing until you either miss one (and it goes below the screen) or you collect a bomb.
In the store, you can modify your game by increasing/decreasing the speed of which the eggs fall, the amout of lives you have, and even add a basket to the bottom of the screen that will catch any missed eggs you couldn't catch up to.
To add a cheat, like in every game I created, there is a special tip you have to know. Although each cheat is accessed differently, all you have to do in this game is tap the game center picture and leave it blank. This used to pull an html page from my website, parse the code for the special keyword, and return if it was correct or not. Correct terms get 25 free eggs.
Test Taker v. 1
As a winter project, I wanted to create an application that would allow me to study for my courses in the upcoming Spring semester. I wanted an application what I could easily input questions to use as flashcards, take practice exams, and create cumulative finals for me to ensure I was ready for my actual exams.
I created the application using Java 7, saving data into file hiearchies on the local user's desktop. At the time, I did not have any database experience and decided that the file system was the easiest way to go.
As an additional feature, I added a study game that used the questions I had saved. The game was simple: Answer as many questions correctly as possible within the given time. If you provided an incorrect answer, you lost points, if you provided a correct answer, you gained points (and time).
Things I would Improve:
If I were to go back, I would want to improve the efficiency of the application, use databases instead of file systems, and update the UI of the application to modernize the look and feel. I would also refactor the code to clean up all reduncancies that make the application run slower.
Test Taker v. 2
In this project, I wanted to take my original application a step further. As a group project in my Software Engineering course at California State Univeristy San Marcos, we decided we would build off the original application and advance the existing product.
As this was a new group to the application, and everyone needed to participate, we decided to start from scratch. We created everything from the new Wireframes (for the updated UI), task flow diagrams, UML Diagrams and SRS (Software Requirements Specificiation) documents.
As a team, we were able to recreate the application, however, it was bulky and did not achieve the critical refactoring techniques I wanted to provide for the first version. We were able to update the UI, integrate a Database using JDBC into the backend, and break down a majority of the code so that it could be portable, however, each team has their difficulties.
Things I would Improve:
In the new application, there are too many pages, the backened does not support the full funcationality for the front end, and the database is only single user. If I were to create it a third time, I would reduce the amount of clicks needed to access a simple exam (went from a single page to needing 4 different pages in teh updated version), host the database on a third party hosting site, and transform the desktop application to a web application - so the computer the user is on doesn't matter.
In this desktop application, I wanted to re-create my iOS application in Java.
There were some difficulties I had to overcome - such as collision detection and frame movement that I was not used to - that allowed me to advance my Java Development skills.
Using the same images as the iOS application, I created a main menu, high scores page and a car selector to allow the user to customize their game.
Playing the game is simple: avoid the oncoming cars by moving your car either left or right. The game slowly goes faster as you progress, though, so be careful as they come flying from ahead!
Things I would Improve:
Like the iOS game, there are many things I could work on. From the actual graphics to adding powerups, to implementing the keyboard as an input device; a developers work is never complete.
At Miracosta, I participated in a Data Stuctures class as a requirement for my major. In this course, we discussed and implemented a variety of structures and algorithms that are used in production models today.
Some of the Data Structures include (minimal to advanced): Nodes, Linked List, Circular Linked Lists, Doubly Linked Lists, Binary Trees, AVL Trees, Red/Black Trees, 2-3 Trees, Graphs and others.
Starting with a NAND chip and VHDL as our language, the goal of this class was to learn how the structure of th ecomputer was built from just above the transisitors to the operating system and the application that it runs.
The course was based off of an online course, found here and consisted of week-long portions. For example, we had one week to create the codes for all of our elementary gates, a week for the advanced gates, a week for the ALU, and so on.
Due to the complexity of some systems, however, we were allowed 2 weeks for some projects including the Virtual Machine and the Operating System.
Each project, above the VHDL, was written in Java to support a C like language known as Jack. Since many Operating Systems are built with a popular 3rd level language, this allowed us to understand how the computer is fundamentaly working under the hood. The virtual computer we eventualluy built was able to run one of our final projects - a program written completely in Jack.
Using the Beer Hopper app I created, the purpose of this website was to introduce a more social experience than what was currently being offered.
The goal of the school project was to create a functional website using MySQL and allowed users to interact with the page content. This meant that we had to develop a backend system that was scalable and able to handle content as normal users would.
From project documentation, ERDs for the Database Implementation, wireframing and actual implementation, we spent countless hours ensuring we had the best project in the class. Using GitHub as our version control system, our repository is publically viewable here .
I am currently working to improve the design of BeerHopper. Now that my design skills are improving, I am rebuilding BeerHopper to offer a much clearner experience while browsing for beer. Check out the beta here!
Originally using GoDaddy's Website Builder, I decided that I would use my learned knowledge of creating a site and put it to good use.
I created this site using standard PHP, HTML5, CSS3 and JS technologies. I am hosting this site on a Digital Ocean Droplet (along with my other sites) currently running PHP 7.
The purpose of this site is to demonstrate my online portfolio - where I would not be limited to a single page resumé.
As part of the Senior Project for California State University San Marcos, we had the opportunity to work with a client to create a project from start to finish.
As part of this project, we visited the client on-site, noted their requirements, completed quarterly reports and completed all the neccessary documentation for the project to progress through the Software Development Lifecycle.
Due to agreements signed by the client, however, code and documentation are not available for this project.
Projects have not yet been added! Check back soon!
C++ / C
Data Structures (C++)
This course was devoted to similar material as my Java course - the exception was that it was all in C++ versus Java.
UDP Sockets (C)
As a final project in my Operating Systems Course, my group created a basic application using sockets, threads, and basic encryption algorithms to create a simple chat application.
The program worked by running a simple linux command in the console. Once the original sender sent the first message, both the client and the server can send and recieve messages.
Projects have not yet been added! Check back soon!