Website Support

In September of 2017 I received an email from Matt Grace of Grace Engineering, a consumer products company in the hunting industry. The company was looking for someone to support their 3 WordPress websites,, and

In addition to standard content and system updates, I’ve assisted with several projects including:

Quest Sales Force
A rewards system for Dealers selling the popular Quest Bows. Developing this system included research, installation and customization of several plugins (BuddyPress, myCRED, Remove Dashboard Access and rtMedia)

Store Locator Plus
Identified and installed the Power addon as the preferred method of updating dealer locator systems for all 3 sites

If you need help getting the most out of your WordPress website contact me today for a free consultation.

Google AdWords Case Study

Google AdWords Case Study

Chris is a very savvy businessman.  He runs two online stores that sell wholesale goods to dealers and the general public, and makes enough money to support his wife and their 6 children.

Chris contacted me last year and asked if I could review his online advertising accounts -he thought he might not be getting the highest return on his investment.  I did some digging and found:

  • January – July 2016 he’d spent over $20K for his Google AdWords campaigns, and only 14K revenue from those campaigns
  • His website had been updated, resulting in changes to the URL structure – This meant that every time someone clicked an ad, they received a Page Not Found message. In Chris’s words, he was paying to send customers to pages that didn’t exist.
  • It also meant that all organic links to his previously indexed pages were broken.
  • AdWords campaigns were created by an SEO company in June 2015, but no changes were ever made to that account. The company billed Chris $300 each month – a total of $3,600 before he cancelled the account




  • Spend: $20,000
  • Revenue: $14,000
  • Spend: $11,000
  • Revenue: $99,000


One Year Later – The Astounding Results

Revenue increased more than 600%

  • January – July 2017 spend has been 11K and revenue earned from AdWords? Over 99K

If you aren’t sure you are getting the biggest bang for your AdWords buck, give me a call.  The initial consultation is free and you just might end up finding buried treasure!

Ruby on Rails

It Begins

What’s a girl to do when she is laid off from the position she’s had for over 14 years? Learn something new! Since I’m already familiar with basic web development I’ve decided to take it to the next level. This week I start learning Ruby on Rails.

My initial thought was to create a virtual machine on my laptop and install everything there, but after looking into all the elements that go into Rails I turned to Cloud9, where I could use clean installation with all the bells and whistles without having to deal with hosting concerns.

The tutorial I’m working through is based on a MySQL database, while the Cloud9  environment uses SQLite3. I’ve ran into a couple issues, but so far I’ve been able to track down the variations needed to run statements successfully. So far I’ve covered:

  • Creating a project by creating the tables, models and migrate files:
    [code]rails generate model MyTable[/code]
    Check status by running:[code]rake db:migrate:status[/code]
  • Generating controllers and views
  • Routes
  • Generating migrations

Working with Records

  • Use DESTROY instead of DELETE.  That way the entry becomes  frozen Hash, which means you can’t update it but you are able to refer to it.
  • Methods to Find Records
    Table.all returns an array of objects
    Table.first, Table.last
    Table.find(2) uses the primary key
    Dynamic finders include Table.find_by_id(2) or Table.find_by_column(“Some Field Value”)

ActiveRelation Queries

Allows manipulation of records given specific conditions. [emphasis type=”danger”]Important Note[/emphasis] [wp-svg-icons icon=”point-down” wrap=”span”]
[column md=”6″]SQL-InjectionStrings should be hard coded to avoid SQL Injection [/column]
[column md=”6″]

EscapedSQLThis query gives rails the opportunity to escape those values before it inserts them [/column]

Query Methods

  • order (sort order ASC or DESC)
  • limit (return no more than this many records)
  • offset (skip this many records)

[code]Table.order(“column ASC”).limit(20).offset(40)[/code]

Named Scopes

    • Queries defined in a model
    • Defined using ActiveRelation query methods
    • Can accept parameters
    • Rails 4 requires lambda syntax

[code]class Subject < ActiveRecord::Base
scope :visible, lambda { where(:visible => true)}
scope :invisible, lambda { where(:visible => false)}
scope :sorted, lambda { order(“subjects.position ASC”) }
scope :newest_first, lambda { order(“subjects.created_at DESC”)}
scope :search, lambda {|query|
where([“name LIKE ?”, “%#{query}%”])

[wp-svg-icons icon=”busy” wrap=”span”]   I figure I’ve got 20 weeks of unemployment, so that should give me plenty of time to get the basics down.

Website Security

WordPress is used by 60.7% of all the websites whose content management system we know. This is 23.0% of all websites. So it’s no surprise that WordPress sites have become targets for attacks.  Denial of service and SQL code injection are two of the most common hacker techniques. If your site is hosted with a reputable company and your developers are proactive, website security is definitely possible.

  1. Update!
    Do you know what version of WordPress you are running?  One of the easiest ways to keep your website safe is to apply critical security releases. The process is very simple and takes  only about 15 minutes.
  2. Secure  Server Files and Database
    Every directory and file on your server has permissions assigned to it. Developers can set these permissions to ensure access is locked down appropriately.

Payment Methods & Best Practices

Customer Engagement & Marketing

  • Google Trusted Stores
  • Trusted Reviews
  • eBay
  • Amazon Seller Central