Categories
Gitflow Samuel

Gitflow Real World Example

The notes below are from a real world example of updating WordPress core and plugins on a website stored in a repo following the gitflow model. We already went over a test run of updating WordPress in a gitflow repo in our earlier post, if you are new to working with gitflow you should start there.

Clone down a copy of the repo into htdocs

cd /
ls
cd /Applications/MAMP/htdocs
cd /project-folder-name
Git clone git@github.com:user-name/repo-name.git
Now fetch the headers:
Git fetch
Git remote (to see remote branches)

git lfs install (follow steps here if this is the first time doing this, we will need to install this on our system:
https://help.github.com/articles/installing-git-large-file-storage/)

npm install (check for packages.json first, this command will install all the packages listed in in package.json file)

Troubleshoot NPM Install

You will probably get an NPM install message of:
Darwin 14.5.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v6.11.2
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE

npm ERR! libxmljs@0.14.3 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the libxmljs@0.14.3 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the libxmljs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs libxmljs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls libxmljs
npm ERR! There is likely additional logging output above.

To fix this were going to run:
Sudo npm cache clean –f
Sudo npm install –g n
Sudo n 4.7.0
Sudo npm install npm –g
Sudo npm uninstall node-gyp –g

Npm install
*Now all packages should install correctly

Source: https://stackoverflow.com/questions/38058386/why-is-node-gyp-rebuild-failing-on-mac-osx-el-capitan/38102743#38102743

Open repo up in source tree and verify that master and dev are in sync

Open SourceTree and create repo from local
Checkout dev branch by clicking odouble-clickinguble clicking dev, or manually run:
Git checkout dev in terminal window
Review the SourceTree graph to confirm branches are in sync

To login to Plesk go to:
https://[[ipaddress]]:8443/
click database > phpmy admin export

Create local copies of the repo and DB and store separately in case of an error/issue
Copy the repo and sql dump file onto desktop

Create the local Database & activate the site to use it

Open gitignore to confirm file name of local DB config file.
Create new config file, usually wp-config.local.php. Copy a standard wp-config file and re-save it as wp-config.local.php

Start MAMP then open up phpmy admin
Create DB, import sql dump file from live, then add information to wp-config.local

Change website URL in wp_options table to use local url in both places (http://localhost:8888/site-name)

Troubleshoot 500 server error

Navigate to localahost:8888/folder-name
If we get this error:
Localhost is currently unable to handle this request. HTTP ERROR 500
Then look in the error log by opening up terminal and typing:
tail -n 20 /Applications/MAMP/logs/php_error.log

It shows us an error of:
[20-Dec-2017 18:37:18 Europe/Berlin] PHP Fatal error: Uncaught Error: Call to undefined function wp() in /Applications/MAMP/htdocs/churchill-mainsite/Churchill-Center-School/wordpress/wp-blog-header.php:16
Stack trace:
#0 /Applications/MAMP/htdocs/churchill-mainsite/Churchill-Center-School/index.php(17): require()

To fix this we need to create a wp-config.local (copy a full WP-config file). The previous one we copied was not a complete file and it was giving us the dreaded white screen of death!

Create New Feature Branch
git checkout -b feature/wp-update dev

Turn Permalinks off to test pages locally:
Go to settings > permalinks and set them to plain (it was on custom, /blog/%postname%/)

Update WordPress
-update core first
-check the plugins page to verify if any plugins are doing major releases (jumping a whole feature number)
-update plugins one by one checking site for errors after each update

Turn Debug on to verify no errors present:
In wp-config.local add define(‘WP_DEBUG’, true);

Commit code to feature branch:
Review code in Sourcetree and confirm which files we would like committed, then commit it to feature branch inside SourceTree.

Merge code to dev branch (submit site for QA testing on Dev)

git checkout dev
git merge feature/wp-update
git push (open source tree and only push dev branch)

**on a release branch we will use:
git merge --no-ff feature/wp-update -m “merge wp-update branch into dev”
git push (open source tree and only push dev branch)

*Submit site for QA then stop here waiting for QA approval*

If QA testing passes, then delete feature branch:
git branch –d feature/wp-update
git push --delete origin feature/wp-update (only if we pushed feature to the repo)

Create new Release Branch from dev branch:
git checkout dev
git checkout -b release/X.X.X (check repo version numbers)

Update readme file in release branch:
# Change version number in package.json and README.md files to line up with new #

Merge from release branch into Master:

*Download a copy of the live site files & DB before proceeding to next step*
git checkout master
git merge --no-ff release/X.X.X -m “merge wp-update branch into development”
git push

Tag merge into Master:

--follow semantic versioning numbers http://semver.org/. IE from 1.0.1 > 1.0.2
git tag -a 1.0.0 –m “updating from wordpress 4.8.1 to 4.8.2”
git push --tags
helpful links on git tagging:
https://git-scm.com/book/en/v2/Git-Basics-Tagging
https://gist.github.com/justinfrench/89712

Merge Release Branch into Dev:
git checkout dev
git merge --no-ff release/X.X.X -m “merge wp-update branch into development”
git push

Delete Release Branch:

git branch –d release-X.X.X
git push –delete origin release-X.X.X (only if this branch has been pushed to the repo)

Categories
Finance Samuel

Kids College Saving Options

Well as some of you may know our family had a huge influx of small children a while back. Planning for how best to send all of these great kids to college can seem somewhat stressful at first, but after a little research, the task reviled itself to be much easier than previously anticipated… in fact it’s even turned into pleasant adventure…. lets do the math.

We figure for each kid we would ideally like to have $80,000 when they turn 18. We set out researching out options and it turns out there are literally hundreds of great companies to choose from here. In our situation going with a 529 college savings plan turned out to be the most beneficial. Obviously for tax reasons, this can vary from person to person, but in general for most people setting up a 529 plan will be the most beneficial. A full outline of our research is below for anyone interested:

Kids College Savings Plans Options

Calculator to show possible returns:
https://www.calcxml.com/calculators/529-college-savings-plan

The plans below are organized in order. I feel that option 1 is the “best” option, but each option below represents a substantial improvement vs just keeping the money in a bank account. So you can’t go “wrong” there are just some differences (mainly tax differences) between each option.

529 Plans:
These plans offer tax free growth, and tax free withdrawals on college related expenses. *The money can only be used for college related expenses, if it is not then a big penalty is paid. I view this as a bonus though because it will force all the kids to use the money on education which is our end goal anyway.

1.) Vanguard 529 Plan
A Vanguard 529 from missourimost.org (most tax benefits for you)
A vanguard 529 directly with vanguard

2.) Wealthfront 529 Plan
3.) Scottrade 529 plan

Traditional Brokerage accounts:
These plans offer more flexibility, the money can be used for anything. The money does not grow tax free though.

4.) Betterment/wealthfront
5.) Vanguard
6.) Scottrade

Categories
Gitflow Mac Samuel

Updating WordPress Inside A Gitflow Repo

This document is comprised of testing notes while going through the learning process of updating a wordpress site in a repo organized under the gitflow model. The steps below can be followed to update a wordpress site. This document assumes you have MAMP installed locally on your machine.

Generic Useful Commands:
Git branch (shows current branch you are on)
Git branch –a (to list out branches in the repo)
Git status (to see info on our current branch)
Git remote (to see remote branches)
Git tag (to see list of tags)
Git add . (to stage files for a commit)_

Steps Taken to Setup first Gitflow Repo & Update WordPress:

Open terminal and navigate to htdocs:

cd /

This will take us to the actual root directory. Now type:

ls

we should see the full list of folders, including application folder, now type:

cd /Applications/MAMP/htdocs

We should now be in htdocs folder.

Clone the repo

To clone the repo we need to setup git access. Create the keypair following the directions here:
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

Then copy they key into github following the directions here:
https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

Now Clone the repo down
Navigate to the folder you would like the repo stored in (you should already be in the htdocs folder from steps 1 and 2 above).

Git clone git@github.com:user-name/git-flow-test.git

Now fetch the headers:

Git fetch
Git remote (to see remote branches)

Define who we are in the Repo:
–please note this sets the user for all projects so you will only need to do this once

git config –global user.email your-email-address@your-domain

Create Master Branch:

git checkout -b master
git status (to see if we are on master)

Create Readme.md file
Create readme.md file and put into the repo:
touch readme.md
echo “## This is a markdown readme file” >> readme.md

Complete first commit and push:

Commit this file to the repo
Git add .
Git commit –m “adding readme file”
Git push

–please note if this is your first commit you can select to use the new git 2.0 simple commit type
git config –-global push.default simple

Branch from Master to create Development branch:

git checkout -b dev master

Add old version of wordpress to development:
–please note this is only for testing purposes. In a real life situation the old version of wordpress would already be on the dev branch and we would skip to the step below and create our feature branch from dev

Download old version of wordpress from here: https://wordpress.org/download/release-archive/
Physically move wordpress files into our project folder, then run

git add .
git commit –m “adding wordpress 4.8.1”
git push

— please note on first push we will need to run:
git push –set-upstream origin dev

Branch from development to create new feature branch:

git checkout -b feature/wp-update dev
--Please note feature branches should be named "feature/wp-update" or "feature/some-other-update"

Commit Code To Feature Branch:
–Please note we need to ensure that the local environment is running the same version of php that the client’s live site is running for testing purposes. Update this version in MAMP to mirror the client’s hosting environment

Run the WP install to setup the site:
–use root for local wp site username and root for local password

Run the WP update in WP admin, then run

git add .
git commit –m “updating from wordpress 4.8.1 to 4.8.2”
git push

Merge wp-update feature branch into development branch

git checkout dev
git merge --no-ff feature/wp-update -m “merge wp-update branch into dev”
git push

Branch from dev to create Release branch

git checkout -b release dev

Delete feature Branch

git branch –d feature/wp-update
git push --delete origin feature/wp-update

Merge from release branch into Master
–please note merge from release to master requires final approval from senior dev staff & final client approval

git checkout master
git merge --no-ff release -m “merge wp-update branch into development”
git push

Tag first merge into Master with 1.0.0
–follow semantic versioning numbers http://semver.org/. In this tutorial the first release is tagged with 1.0.0. In a real life situation please note the current version and update accordingly, IIE from 1.0.1 > 1.0.2

git tag -a 1.0.0 –m “updating from wordpress 4.8.1 to 4.8.2”
git push --tags

Helpful links on git tagging:
https://git-scm.com/book/en/v2/Git-Basics-Tagging
https://gist.github.com/justinfrench/89712

General Notes:
WordPress updates do not require database updates to be performed locally. Updating the files on the live server and visiting a few admin pages will perform the database updates on the live server. We should never make updates to a database locally and move that database live. The best possible workflow is one where code moves up and content moves down: https://pantheon.io/docs/pantheon-workflow/

When updating versions of PHP our workflow is:
-clone down site repo to local machine
-update version of php locally
-test site locally to make sure everything works
(if something breaks, create feature branch from dev & make fixes, test locally then merge to development).
-update version of php on development server
-final QA by PM
-merge code to release branch for final approval by senior dev
-update version of PHP on live
-merge code to master from release branch

When updating wordpress versions our workflow is:
-clone down site repo to local machine
-create feature branch from dev and update locally
-test locally to make sure everything works (use php version from clients live site)
-merge to development from release branch
-final QA by PM
-Merge to release branch for final approval by senior dev
-Merge to live

Random Notes:

Writing a commit message without using -m tag:

Press i to enter insert mode.
Now you can type your message, as if you were in a normal (non-modal) text editor.
Press esc to go back to command mode.
Then type :w followed by enter to save.
Finally :q followed by enter to quit.

Deleting Git Tags:

# delete local tag ‘12345’
git tag -d 12345

# delete remote tag ‘12345’
git push –delete origin tagName

Categories
EDH Phase Two Samuel

EDH Purchased

P2 purchased our second property today! Its a small house on southwest (continuing our slow occupation of the small area by Clifton heights pond lol).

The house is in great shape so there will not be too many posts regarding updates to the house (–edit 2 months later the furnace went out and we had to get a new furnace installed plus fight with a warranty company lol –).

This brings total P2 doors up to 7 (and counting!)

Categories
Fixing Stuff Samuel

Bulk Archive Emails in Gmail inbox

Thunderbird was really starting to run slowly with the weight of thousands of emails in my inbox. So I went ahead and did a little research on how to bulk archive emails in gmail. What I wanted to do was archive any emails older than 3 months old, it turns out there is a very easy way to do this in gmail:

Step 1: Enter this in the top search bar on the gmail desktop browser

before:yyyy/mm/dd

Step 2: update the above code with the actual date you would like to filter by

Step 3: Select all the emails on the page, then select “apply to all” and archive.

That’s it, the page should process once you hit the small archive button and then all messages should move into the “all mail > archive” folder.

Categories
Phase Two Samuel Sisters House

Sisters House Progressing Nicely

We just completed a pretty big milestone, the first major round of renovations on the sisters house property. In total we completed:

-new roofs on all gabled front porches

-tear off where needed and replace wood on all porches. The porches are made from a rare kind of wood (forgetting the name now) but our contractor really praised it and pleaded with us not to tear it all off. So we followed his advice and most of it simple got a scrape, sand and re-paint

-6 new mailboxes

-Cut down 3 trees. Never a fan of cutting down trees but these were too close to the house and we plan on planting 3 new trees in the tree-lawn by the curb

-All Cable lines run underground in the backyard

-All new Electrical boxes for 6 electrical services in the back yard (lines to be run underground August 8th)

-Demo and clean basements in 6165 and 6161 units.

-fabricated new “eye brows” that will go up on the roofs during our next round of updates, which will also include the second round of copper work and the new spires.

A few pictures of before, during and after are below.

Front of the House July 2017 after initial porch rehab work
conduit is in place, now we just need to run the cables underground
conduit to 6165 building
underground conduit for electricity and cable
new eye brows, hopefully they last for another 100 years