Delete AWS Instance Profile

Remove Role from Instance Profile

Delete Instance Profile


Git Workflow

Git Workflow




Main Branches

Branch Name Description
master Master to be the main branch where the source code of HEAD always reflects a production-ready state
develop Develop to be the main branch where the source code of HEAD always reflects a state with the latest delivered development changes for the next release.

Supporting Branches

Branch Name Description
feature-[feature_name] Feature branches are used to develop new features for the upcoming or a distant future release.
release-[release#] Release branches support preparation of a new production release.
hotfix-[hotfix#] Hotfix branches are used for when a critical bug in a production version must be resolved immediately. Hotfix branches may be branched off from the corresponding tag on the master branch that marks the production version

Feature Branch Workflow

  • May branch off from: develop
  • Must merge back into: develop and master
  • Branch naming convention: feature-[feature_name]

Create a new feature branch from develop

  1. Write Tests
  2. Write Code
  3. Test Code
  4. Commit Code

Merge feature branch into develop

The –no-ff flag causes the merge to always create a new commit object, even if the merge could be performed with a fast-forward. This avoids losing information about the historical existence of a feature branch and groups together all commits that together added the feature.

Release Branch Workflow

  • May branch off from: develop
  • Must merge back into: develop and master
  • Branch naming convention: release-[release#]
  • No new features added! Only bug fixes allowed.

Create a new release branch from develop

  1. Write Tests
  2. Write Code
  3. Test Code
  4. Commit Code

Merge release branch into master and create a tag

Merge Bug Fixes made in release branch into develop branch

Delete Release Branch

Hotfix Branch Workflow

  • May branch off from:master
  • Must merge back into:develop and master
  • Branch naming convention:hotfix-[hotfix#]

Check a new hotfix branch from master

  1. Write Tests
  2. Write Code
  3. Test Code
  4. Commit Code

Merge hotfix branch into master and create new tag

Merge hotfix branch into to develop

Remove the temporary hotfix branch

How to set up LEMP for PHP Development with Vagrant and Ubuntu 14.04

Install Virtual Box and Vagrant

  1. Download and install VirtualBox
  2. Download and install Vagrant

Create a directory for your virtual machine and websites

Create your Vagrantfile

make the following changes to your Vagrantfile

uncomment Line 26 “private_network”, ip: “”

uncomment Line 41

Set the path for the first option to the folder on the host machine you want to share and set the second option to the path of the nginx server

config.vm.synced_folder “/Documents/repos/”, “/usr/share/nginx/”

Create your virtual machine

The amount of time it takes to create your virtual machine depends on your bandwidth speed. If everything go correctly you should something similar to the line below.

Once the virtual machine has been created you will need to ssh into you vagrant machine with the command below.

You should see the following lines shown below

Run the following command.

Install nginx

Install Mysql – You will be asked to supply a root (administrative) password for use within the MySQL system.

Secure Mysql Server

Install Git

Install base php

Install PhpMyAdmin

  1. Run the command below
  2. Press tab to skip choosing a server type than press enter
  3. Choose yes to set up default config
  4. Follow the prompts

Create a symbolic link for php myadmin and restart nginx

Change the following settings in /etc/php5/fpm/php.ini

Make the following changes to /etc/nginx/sites-available/default

Restart php5-fpm and Nginx

Install Composer Globally

So you want to be a PHP Developer

I see countless posts and questions by new developers who want to break into the PHP development world. A common question is  What is the best way to gain PHP experience? Common answers are to build up a github profile, start blogging, internships or pro-bono work. Yeah that sounds great but for someone who is truly green that may be a little outside of their comfort zone If it is for someone looking to learn relevant skills to break into the job market the advice is a little vague. Most of the advice given online is from the hobbyist’s perspective and not from the perspective of someone who has a mortgage to pay and a family to take care of.  Below is a list of options a new php developer should take to gain experience that will hopefully land you that first PHP Web Development job. (more…)

CodeIgniter 3.0 Documentation

I have moved on from the current CodeIgniter release of 2.1.4 to version 3.0. You can download the latest development release at github . I have been using CodeIgniter  3.0 for a while now and it is very stable. I have seen a lot of posts asking about the the documentation for 3.0. Unfortunately , ellis labs have been dragging their feet on releasing version 3.0 and has decided to rid itself of the Codeigniter project . Codeigniter is the best thing that Ellis labs had going for them, too bad they do not realize it. I have decided to create a sub-domain host the 3.0 documentation. I hope this helps anyone trying to transition from 2.1.4 to 3.0.

CodeIgniter 3.0 Documentation – here


Installing Fuel CMS

I am Codeigniter fan and have been looking for a good cms to build websites that is based on Codeigniter. I have taken a look at pyrocms, koken cms and even attempted to roll my own and we all know how that goes. PyroCms is great but the creator of PyroCms Phil Sturgeon has decided to start porting it over to the Laravel php framework. Laravel is great but I would like to stick to CodeIgniter. I have decided to give Fuel CMS a try, Fuel CMS is

An easy, flexible, empowering Content Management System for rapid development that transforms your CodeIgniter projects into client manageable brilliance.

That is how Fuel CMS describes itself. It is developed by a DayLight Studio located in Portland, Oregon USA. Fuel CMS has some great built in functionality such as inline editing, Opt-in Controller Development and Modular structure for plugins. Currently FuelCMS 1.0 is in beta. I have decide to really dive into Fuel CMS , it really seems that the architecture of Fuel will fit me perfectly. I see it more of a bare bones CMS/framework with the basics and nothing extra you don’t need. It also does not force me to learn a template language or learn fuel specific PHP. Most CMS have obfuscated so much from the developers it seems like you are learning a new programming language. That is enough ranting for now.  (more…)

NetBeans PHP Code Templates

I put together a few of my favorite code templates that are built into the NetBeans IDE. Over the last two years NetBeans has improved dramatically by adding improved HTML 5 support and great built in support for version control systems. I know Sublime Text is all the rage but I find it ill suited for PHP development. If you take a look at the PHP features of NetBeans you will be surprised at the built in power that NetBeans provides. I highly recommend if you are looking for an IDE for PHP development that you give NetBeans a try.  (more…)

PHP Class Basics

Rube Goldberg Machine

Rube Goldberg Machine

During my continuing journey of learning PHP, one that had bothered me for some time was PHP classes. They seemed mysterious and strictly for advanced uber PHP developers. As a beginner I did not see how they were useful and I was confident that I could use a strictly functional style of programing to get any project completed. This seemed to work for the most part until I was forced to build a web scraping tool to gather web page rankings from google. I ended up building a Rube Goldberg Machine of a function that was nearly impossible to change due to every part of the part of the function being dependent on each other doing a certain thing a certain way. If I changed any part of the function I would almost certainly be required to change every peice of the code to account for the change. After dealing with the abomination of a function that I had created . I made a personal goal to study and learn how to implement an Object-oriented programming style of development into my coding style and have never looked back. It is hard to imagine developing any kind web application with out Classes. The sad thing is if you look around the internet for tutorials or in books for a explination you mainly find two types of examples. One is all theory and no practical real world application for the beginner developer to get a true grasp on how they use OOP in there workflow. The other is a quick glancing view and application with out teaching the basics at the same time. I hope to provide a better example. I am going to break down PHP classes terminology and basic uses for the normal entry level developers out there. (more…)

Theory vs Practical Application

Average Senior PHP Devloper's neck beard.

Average Senior PHP Developer’s neck beard.

I have released code publicly for the first time this weekend on github at PHP-Directory-Helper. I have spent a good amount of time on it. I have plans to add a few additional classes for abstracting the Standard PHP Library (SPL) and making it usable for us normal PHP developers. I say normal because I mean the developers who are still learning and have a clean shave. My neck beard has not grown in yet. One day in the far off future I will have a neck beard worthy of competing in the World Beard Championships , but until that day comes I will continue to preach readable code with over documentation. I can often be heard arguing over obfuscated code vs readable code and telling my fellow developers that people are slow and computers are fast. We are not the only ones that have to work with the code we are writing. Perhaps this attitude of writing clean readable code even is it adds a few extra lines of “BLOAT” goes back to my experience of training Marines. I wanted to always make sure that next person working with what ever project I have completed would be able to get up to speed quickly. My goal was not impress them with documentation that looks like Egyptian hieroglyphics. In the Marine corps if the gear you were in charge of had strange unreadable documentation you would have hell to pay, but for some reason it is a thing of honor for developers. I will save that rant for another day. (more…)