Browsing "Development"
Jan 8, 2012 - Business, Development    No Comments

SEO Moz Pro Review

This is a review of the SEO monitoring service SEO Moz Pro.

Introduction

If you have no idea what SEO is read my SEO Primer article. Every website owner needs to understand what SEO is and how it’s affecting your position in the search engine and your free traffic. SEO Moz Pro simply helps you to monitor your SEO performance, and the performance of your competitors. It’s not necessarily an SEO consultant, but it does help you identify areas of improvement and help you to monitor how your SEO work is affecting both SERP position and natural search traffic.

 

Reports

SEO Moz Pro is made up of a bunch of reports, much like Google Analytics (GA) is. SEO Moz Pro has 6 useful tools for anyone doing SEO. These tools are Traffic Data, Crawl Diagnostics, Keyword Rankings, Competitive Domain Analysis, On-Page Optimization, and Social.

 

Traffic Data

The Traffic Data report monitors performance and changes of your natural search result traffic. SEO Moz Pro can sync with your GA account in order to provide you with reports specific to SEO. You can view your organic search visit data, much like you would in GA, but you can also view “branded search traffic.” For example, let’s say we’re monitoring MemberMob.com (crowdsourced marketing) and we see that we have an increase in natural search visitors for the previous week. We can look further and see how much of this traffic is from branded searches, “MemberMob”, versus keyword searches, like “Crowdsourced Marketing.” This report shows you a graph of natural search keywords delivering traffic and also provides a data table of these keywords, much like in GA.

 

Crawl Diagnostics

The Crawl Diagnostics report provides you with essential information on any errors found while crawling your website. This report is much like the Google Webmaster reports but with a different viewpoint. This report is broken into Errors, Warnings, and Notices. Notices are things like 301 redirects and things that you might just want to be aware of, but aren’t necessarily “bad.” Warnings are things like Long URL, Overly-Dynamic URL, Missing Meta Tags, etc. Errors are problems like Duplicate Page Content, Missing Title Elements, and Server Errors. This report, although necessary to revisit over time, is mostly useful the first time SEO Moz crawls your website. One you’ve decided if the Errors, Warnings, and Notices are something that need to be fixed or ignored there is little value in this report on a week-to-week basis. Obviously if you have major changes to your website on a weekly or monthly basis the value of this tool increases.

 

Keyword Rankings

The Keyword Rankings report is a pretty standard SEO report that shows your SERP position for each of your keywords across whichever search engines you wish you monitor (Google and Bing, duh). The report shows your position as well as the delta since the last search. A nice feature of this report is that it also shows your search traffic visits and delta next to each keyword. This way you can relate any traffic increases or decreases to your keyword position changes. In the past I would simply check my keywords in Google via search link bookmarks I had saved, but this is proving to be less reliable over time. With Google getting more “local” and with the introduction of tools like Google+ each user’s SERPs are less and less like their neighbors. The Keyword Rankings reports gives you a report that is not geo-localized and not affected by any outside factors.

 

Competitor Domain Analysis

The Competitive Domain Analysis report is probably the most informative report in SEO Moz as it shows exactly how to rank against your competitors. Of course the data is only as good as what variables you provide it. If you do not have any clear competitors this report becomes less informative. Through this report you can see both an overall ranking of your domain, SEO-wise, versus your competitors as well as the individual characteristics that make up the domain ranking, or “domain authority.” This report tracks many factors some of which are External Followed Links, Total External Links, No Follow vs Follow Link Ratio, etc. This can give you an idea of why you might be performing better or worse than your competitors in the SERPs. Having the highest number of total links but the lowest number of “followed” links might lead you to realize that your competitors are better at getting high-valued links than you are.

 

On-Page Optimization

The On-Page Optimization report is where you can find some actual action items for improving your SEO. This report shows where you’ve “made the grade” on implementing your on-page SEO and where you’ve failed, based on the keywords that you’ve included for your campaign. You not only get a grade for each keyword, you also can see each characteristic that makes up the grade. Even better, SEO Moz will tell you what it takes to “fix” any item that didn’t go towards a grade of “A.”

 

Social

The Social report provides you with information on your Twitter and Facebook interactions. You can stay updated on your follower/fan increases and decreases, traffic from your social profiles, and even your Facebook shares and Twitter retweets.

 

Conclusion

At the time of this blog post the price of the SEO Moz Pro subscription is $99/month. I know for my business this price is worth every penny to be on top of my SEO efforts. I might not find something every month to improve on but I definitely have to be on top of my website SEO work to make sure I’m staying ahead of my competitors.

Jan 1, 2012 - Business, Development    No Comments

My Work Bookmarks

All of my current work-related bookmarks with an explanation of what they are:

 

  1. http://adwords.google.com/Google AdWords – buy ads on Google.com
  2. http://analytics.google.com/Google Analytics – track your website visitors/traffic
  3. http://www.google.com/webmasters/sitemaps/Google Sitemaps / Webmaster Console – tell Google where your pages are and get information on how your pages show in Search
  4. http://www.google.com/admanager/Google AdManager – used to be DoubleClick, now owned by Google, manage ad campaigns on your own websites
  5. http://adsense.google.com/Google AdSense – make money by placing ads on your websites
  6. https://adcenter.microsoft.com/Microsoft AdCenter – buy ads on Bing.com
  7. http://aristotle.kitaramedia.com/Kitara Media – make money by placing ads on your websites
  8. http://www.cpxinteractive.com/CPX Interactive - make money by placing ads on your website
  9. https://pubaccess.advertising.com/Advertising.com / AOL – get paid by placing ads on your websites
  10. http://www.simpleport.net/osc/SimplePort Quickbooks PayPal Importer – helps you import PayPal data into Quickbooks
  11. http://www.24-7pressrelease.com/24/7 Press Release – provider of press release services
  12. http://feedbackloop.yahoo.net/Yahoo Complaint Feedback Loop – get notified, etc, when your emails sent to Yahoo are marked as SPAM
  13. http://help.yahoo.com/l/us/yahoo/mail/postmaster/bulkv2.htmlYahoo Bulk Email Sender Registration - Register with Yahoo as a bulk email sender to improve deliverability
  14. http://security.comcast.net/get-help/comcast-post-master-page.aspxComcast Post Master Help Page – FAQ and links to Comcast Feedback Loop
  15. http://domainkeys.sourceforge.net/DomainKeys Library and Tools – has some email address for testing DK implementation
  16. http://google.com/safebrowsing/diagnostic?site=tagomatic.com/&hl=ru-ruGoogle Safe Browsing Report – Check to see if your pages are in good standing with Google, specifically if you link out
  17. http://www.supportdetails.com/Support Details – Page you can send customer to that grabs browser info and can be emailed to you for debugging
  18. http://teethgrinder.co.uk/open-flash-chart-2/Open Flash Charts – OpenSource library for creating flash charts
  19. http://www.istockphoto.com/iStockPhoto - stock images (crowdsourced)
  20. http://www.jquery.com/jQuery - JavaScript library, many things that you wish were included in JS but were not
  21. http://jqueryui.com/jQuery UI – jQuery User Interface library, many things you wish were included in jQuery but were not
  22. http://www.favicon.cc/Fav Icon Generator – creates the favorites icon that shows in the address bar for a website
  23. http://developers.facebook.com/tools/lint/Facebook URL Linter – Both forces Facebook to (re)load a given URL and shows you what data FB is noticing about that URL, good for refreshing FB cache of a page
  24. http://www.dnsstuff.com/ – DNS Stuff – tools for checking that your DNS records, etc, are set up properly.
  25. http://www.seomoz.org/users/pro – SEO Moz Pro – Toolkit (subscription service) for tracking the SEO or your websites
Dec 7, 2011 - Development    No Comments

Make Your Website Logo Reusable

Website Logos

When designing a new website be sure that the website logo is easily reusable by others. In today’s social web you want to be sure that bloggers and web writers can use your logo in their posts and articles. Don’t make it complicated for a producer to include your logo with a story. This tip also affects how your website is represented on sites that automatically scrape content for preview images, like Facebook. Don’t make your logo part of an HTML background image. If your logo is set over a colored background make sure the logo is a PNG file with a transparent background. If you do not do this at least make sure the area around the logo is a constant solid color that won’t look weird used to accompany an article. Another thing to consider is that the proportions of the logo file allow the logo to be used by itself. Make sure that when the logo is cut for the HTML that it has an even amount of negative space around the logo. You don’t want 20 pixels of blue background on the left of the logo and 120 pixels of blue background on the right side of the logo.

 

 

 

Dec 1, 2011 - Development    No Comments

Getting Facebook User Data with PHP

If you don’t already know, Facebook has opened up their data for some, regulated, 3rd party use. Facebook calls this their Open Graph API (application programming interface). Any developer who follows the specified steps can create applications that integrate with Facebook user data. Facebook does apply limitations on how developers can use the data in order to protect Facebook users. But, for the most part, if a Facebook user agrees, you can gain access to just about all of their profile data, and even post to their wall, etc.

Getting Started

Before you can start developing with Facebook you’ll need to register an application (yet to be developed) with Facebook. Start on the Facebook Developers page and then go to the Apps tab. I’m not going to go into detail about this because it’s pretty straight forward and already written about everywhere on the web. To make getting to the data easier there is a PHP SDK for Facebook Open Graph. We will be using this library for all of our Facebook queries.

Permissions

Before you can get to any data a user is going to first have to grant your application access to specific parts of their data. Facebook has different data and actions sectioned into permission groups. Below is an example of requesting permissions to get a user’s email address, bio data (name, etc), and to be able to read their wall.

$config = array(
‘appId’ => FBAPPID,
‘secret’ => FBAPPSECRET,
);

$facebook = new Facebook($config);
$fbuserid = $facebook->getUser();

$params = array(
“scope” => “read_stream,email,user_about_me”,
“redirect_uri” => “http://www.wescutshall.com/”
);

$loginurl = $facebook->getLoginUrl($params);

This will result in a variable, $loginurl, that you can use to create a hyperlink that points to Facebook and prompts the user to accept or deny the request for the specific permissions for your app. Assuming the user clicks “allow”, the user will be directed back to your website and you will now magically be able to query the information via the SDK. This $loginurl could replace your website’s “sign in” link if you wanted to simply force every user to have a Facebook account (and accept your app’s permissions). If a user has already given your application access to the data requested in the $loginurl url, Facebook will simply send the user to the redirect_uri, which should be your user dashboard/profile page. Some data, such as a user’s stream, is explicitly shown on a seperate permissions step on Facebook during the access granting process. A user will first allow you access to their bio data, and then they will allow or deny access to their stream. Should a user only allow access to their bio, and not their stream, the user will be bounced back to this permissions screen anytime your application attempts to access stream data. This actually integrates really nicely with web apps and keeps you from having to do constant error checking on data you’re asking for from Facebook.

Requesting Data

Below is an example of requesting the bio information:

//unique identifier on Facebook
$fbuserid = $facebook->getUser();

$user_profile = $facebook->api(‘/me’,'GET’);

$fname = $user_profile["first_name"];
$lname = $user_profile["last_name"];
$email = $user_profile["email"];  //this was a separate permission, remember?

Requesting wall/stream information:

$feed = $facebook->api(‘/me/feed’,'GET’);
for ($i=0;$i<count($feed["data"]);$i++)
{
// do something, like reading all shared links – $feed["data"][$i]["link"]
}

You could also check to see if a user has already liked your Facebook page:

$url = “/me/likes/$pageid”;
$like = $facebook->api($url,’GET’);
if($like["data"][0]["id"] != $pageid)
{
//do something, like suggest they like your page, or hide content until they do
}

This is just an intro into getting data from Facebook from PHP using the Open Graph API and Facebook PHP SDK. Facebook dogs and Google should be able to answer most of your questions.

Sep 26, 2011 - Development    No Comments

Interface Design Oversight #4

Internic.ca, the Canadian domain name registration agency, has years going back to 1999 in the dropdown menu for selecting your credit card expiration date. There is no reason to ever allow someone to choose a year that will automatically make the card invalid.

Sep 14, 2011 - Development    No Comments

Interface Design Oversight #3

I haven’t done real well keeping up with posting interface design issues I find on websites/software, but here’s one. It’s generally bad to have the same noun/verb/command name in two different places, especially when they do two different things. When creating an email in Thunderbird, the new email menu bar has an “Options” dropdown as well as an “Options…” item under “Tools”. This is not optimal and should be avoided to prevent confusion; “It’s under Options”.

 

Sep 13, 2011 - Development    No Comments

How To Post to Twitter (tweet) from PHP


Tweeting to your account from PHP. I’m fresh off of adding this feature to another one of my sites so I thought I’d document the process for people as it’s not so obvious. I post important events to Twitter that happen on the website based on user interaction. I do not use this to allow users to post to THEIR Twitter accounts. So I’m posting events like “New Lost Dog Added” or “New Naming Assignment”, etc. So I’m only posting to MY Twitter account.

  1. Download the TwitterOAuth library for PHP from http://github.com/abraham/twitteroauth/downloads and upload it to your website in a new directory /twitter.
  2. Visit https://dev.twitter.com/ and click Create an App. You will be asked to sign in as the Twitter account you will bill posting to.
  3. The Create an App wizard is pretty straight forward, except that the default rights are Read-Only. You have to go back and edit the rights to be Read/Write and resave the settings.
  4. Back on your website in the Twitter library code you will need to copy/paste the correct keys into the twitter/config.php file. You get these keys from the Twitter developer page for your new application. Twitter allows you to generate the keys on the dev site that you need for the OAuth keys on the config file. You have to click a button on the bottom of the details page to create the OAuth keys you will need. Note that if you change the application permissions (Read-Only, etc) the OAuth keys change and need to be re-copied. So copy the 4 keys to the appropriate constants in the config file.
  5. Also edit the callback URL to be example.com/twitter/callback.php.
  6. Load the twitter/index.php page from your website in your browser, click Sign In, and see that you get a long response from the API with a bunch of text that you don’t need to read. The error responses are short and sweet, so if you get a full array of data as a response then it signed in correctly. Now you know your sign-in works, just time to set up tweeting. If this step doesn’t work then re-check the config file, make sure you have the correct callback URL, etc.
  7. Create a function for tweeting:
    function tweet($text)
    {
    include(‘twitter/twitteroauth/twitteroauth.php’);
    include(‘twitter/config.php’);

    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTHTOKEN, OAUTHSECRET);

    $content = $connection->get(‘account/verify_credentials’);

    return $connection->post(‘statuses/update’, array(‘status’ => $text));
    }

  8. Now add tweet($text) at important parts in your PHP code. Make sure you’re tweeting relevant information about events on your website.
Jan 23, 2011 - Business, Development    No Comments

ClickTale

Thanks to Stumbleupon, I discovered this service about a week ago. ClickTale utilizes JavaScript cursor position (X/Y coordinate) tracking to generate both website user interaction “videos” and interaction maps for your website. Where Analytics can tell you a navigation path (page A, then page B, then page C), ClickTale can show you exactly what a user did on a page in between the clicks. You can replay a user’s visit to your website. You see the content of your website with a cursor moving over the site just as the user navigated the website. You can see mouse movement, clicks, page scrolling, and in some cases the characters that were typed into form fields (this only works on some recordings, so I assume it’s browser or OS-dependent, the majority of recordingss showed “?” instead of the exact character) in real time. This service can be very useful for solving website interaction issues, some that you don’t even know you have.

If your conversion rate is low you can see exactly where users quit using your registration or order form. If only JavaScript could also record audio it would be just like being there (“Ahh, too expensive.” <exit>). I tested ClickTale on Naming Force and found it very intriguing to watch people using the website. I focused on users who visited the New Assignment page. You can narrow down the recordings to view users who viewed a certain page, among other parameters. The recordings start as the users entered the website, so you get to see how they navigated to the page in question, as well as what they did on that page.

One of the most shocking things I saw was that most of the users scrolled all the way down the home page, when the home page was the site entry point. With so much talk about Above the Fold I was a bit surprised that the content was engaging enough that most of the users scrolled down the whole home page before using any of the navigation items. Pleasant surprise. As far as conversions on the New Assignment page, I haven’t yet found anything that has lead me to modify the form. Many users visit the page briefly without scrolling, which shows that they simply are checking the site out without much interest in submitting an assignment (yet). Very few users started to fill out the form only to exit the page. Of the users that started to fill out the form and then exited, most of them (less than a handful with my small one-week sample size) seemed to do so after viewing the (very affordable) prices. This has brought up the question of whether the package options should be moved to the top of the page, but in regards to conversions, I don’t see how this would matter one way or the other. The only interface change that has been made at this point due to watching ClickTale videos happened to be on a somewhat unimportant page. But, it revealed some interesting UI issues. Naming Force has a Random Name Generator for users to use. It consists of a large white box with a button underneath. You click the button, repeatedly, to generate random names that appear inside the white box. I watched one user visit this page and click 20-30 times inside the white box, in various spots, never clicking the bright orange button underneath, only to (I assume, frustratingly) leave the page. So, I added “click button below” inside the white box, as somehow it wasn’t obvious to at least one person. Hopefully I’ll find enhancements I can make to some of the more important pages based on these interaction videos.

One of the other features of ClickTale is the Heatmaps. Heatmaps take all the data collected, mouse move, click, scroll, etc and chart them on an overlay of your website. This gives you an idea of where people are concentrating their focus on your pages. Mouse move and click are pretty straight forward, you can see a heatmap of the most concentrated areas (see image below). Scroll reach is another heatmap that might need some explanation. This heatmap maps the percentage of users who scrolled down where the part of the page was in the browser window. This is where the Above the Fold theory can be tested for your site without watching hundreds of videos.


Mouse Move and Scroll Reach Heatmaps

Overall the ability to record user mouse movement and play it back is pretty incredible. The only problem I see with ClickTale is that the prices are a bit unrealistic for the majority of us smaller website owners. In order to view details for pages that are not my top URL on Naming Force, for example, I had to sign up for the subscription that is $290 / month. I don’t see myself continuing this service past a month, which is a real shame for ClickTale. I’d happily pay $30-$50 a month, but I can’t find $290 worth of modifications to make each month to make the subscription worth sticking with. I feel like this service’s business model should be to get users to sign up for an insignificant amount and allow them to “forget” that they have the subscription, or technically just to not care enough to cancel it and allow it to recharge them for years. Users won’t want to cancel a $50/month subscription, just in case they want to look through the collected data in the future, and ClickTale could make a lot more through long-term subscriptions, IMO.

Oct 15, 2010 - Development    No Comments

Fighting Comcast Spam Filters

After reviewing the failed email queue that was 100% full of Comcast email addresses I decided it was yet again time to review the email/DNS settings to see if there was something I had missed that was preventing Comcast from allowing emails from ALL of our sites from getting through. Comcast does have a set of web pages dedicated to email errors and failed email solutions. Although I didn’t know exactly why Comcast was blocking emails, I decided to fill out the Blocked Provider Request form that allows you to submit your mail server IP address and ask for a ban to be removed. The page says that Comcast will usually respond in 30 minutes, and much to my surprised less than 30 minutes later I received an automated email saying that first of all, yes, the IP had been blocked, and that the block was now removed! The email did say that the IP had been blocked for “patterns characteristics of spam”. Hopefully the previous DNS settings that weren’t 100% up to par caused this block and it won’t return. About a week or so ago I found some DNS settings that needed to be modified based on some reports I ran on DNSStuff.com. Hopefully that will help Comcast to keep us on their white list.

Aug 17, 2010 - Development    No Comments

What is jQuery?

What is it?

In short, jQuery is a JavaScript library that makes it easier to do some of the things you do in JS every time you create a new website. If you adopt jQuery for even one website you will end up adopting it for every website after that.  JQuery changes the way you select and modify HTML elements in JavaScript.

I’ve never been big on JavaScript libraries, since I feel that I can just about write anything in JS that I need. Although I will Google for code from time to time, I’ve just never found much of a need for a JS library. I will admit  that I’ve used Yahoo’s drag’n'drop controls on LeagueAce.com, though. I had heard of jQuery, or at least seen mentions of it in forum posts, but never tried to discover what it was. Then one day, when I had absolutely nothing to do, I Googled “jQuery”. Now, jQuery’s website isn’t the best place to figure out what it does, IMO. I had to read a few blog posts and then read through the jQuery documentation before it made any sense. I think that jQuery could do a much better job of explaining what it is to newbies on their website.

JQuery Example Usage

The most common use of jQuery is to easily select and modify HTML objects in JavaScript. Please note that the following code examples are not tested, are from my memory, and might need slight changes to actually work. Where we normally code “document.getElementById(element).className = class” we can now code “$(element).addClass(class)“. Where we normally have to write a loop in order to get the value of a selected dropdown item with standard JS, in jQuery we can instead code “var test = $(element).val()“. JQuery simplifies the process of selecting the correct HTML element, changing its properties, getting it’s value, etc. JQuery allows you to select elements in different ways, which is one of the coolest features. You can select an element via it’s HTML ID ($(“#id”)), via the tag type ($(“:input text”)), via CSS class ($(“.class”)), etc. JQuery can also select elements based on parent-child relationships. So you could select every text input element inside of a DIV with the ID of “divTest” ($(“:input text”, “$divTest”)), for example. As mentioned in the dropdown menu example jQuery has foreach ability for looping through elements that are selected. JQuery allows you to string together methods so you could make multiple changes to one object by simply adding “.method1(value1).method2(value2)” to the end of your command.

Summary

JQuery has some other features, like transition effects, that are “nice” but far from the reason why I started using it on all my new websites. The simplicity of how you can select HTML elements makes you wish that JavaScript had been written like this from the beginning.

Pages:123»