Florida Search Engine Optimization » SEO Master List Is Alive

Well, It's alive ... I've launched SEO Master List. I have high expectations for this application and hope that it is well received in the SEO community. Which, brings me to another subject. SEO's, can be quite pretentious and highly critical ... So, we'll just see how they like it. Then again ... if they don't ... I really dont' care all that much. I like it.

SEOMasterList is basically just a feed aggregator with a lot of cool Ajaxy stuff on it and some cool styling. Ray Camden actually created the app ... the original code is on coldfusionbloggers.org. A Big thanks goes out to him for his help in debugging the install too ... Thanks Ray.

For those that want their 'SEO' feeds aggregated on SEOMasterList.com ... send me an e-mail and I'll get right on it ... maybe. If your feed wasn't aggregated, and I tried to add it to the list ... there may have been a problem with the xml structure - there were many good SEO blogs that I was unable to parse due to xml rendering issues ...

Thats it.

Florida Search Engine Optimization » Has A New Bag

I've come up with a very cool new app that I put together ... The base code for the app comes from one of the baddest CF dudes around, Ray Camden, the ColdFusionJedi. I have really big expectations for this new app, and cannot wait to release it to see how the SEO community takes to it ... sorry, but I just can't say what it is ... yet.

SQL UDF to Convert Uppercase to Propercase

So, I figured that it would be a good idea to try and expand Florida Search Engine Optimization web coverage beyond the Miami, Fort Lauderdale areas. So, I started a project to build a quazi regional network in my site. At first, I tried to be creative and store all of the cities and counties of Florida in an array with the counties as an array of structs.

With some work, I was able to get this running. However, I realized that if and when I want to make changes or additions to the cities or counties, it was going to be quite a bit of work.

After some consideration I decided that it would be much easier to just use a database table with the cities and counties.

Now, everything was going quite well with the addition of the new database when I found that the city and county fields were all in uppercase ... I really didn't want to leave the data like that, so I decided to figure out how to change the 80,000 plus records to propercase, and I found just the thing ... a cool little T-SQL UDF ... that changes the data to propercase ... the code follows ...

create FUNCTION PROPERCASE
(
--The string to be converted to proper case
@input varchar(8000)
)
--This function returns the proper case string of varchar type
RETURNS varchar(8000)
AS
BEGIN
IF @input IS NULL
BEGIN
--Just return NULL if input string is NULL
RETURN NULL
END

--Character variable declarations
DECLARE @output varchar(8000)
--Integer variable declarations
DECLARE @ctr int, @len int, @found_at int
--Constant declarations
DECLARE @LOWER_CASE_a int, @LOWER_CASE_z int, @Delimiter char(3), @UPPER_CASE_A int, @UPPER_CASE_Z int

--Variable/Constant initializations
SET @ctr = 1
SET @len = LEN(@input)
SET @output = ''
SET @LOWER_CASE_a = 97
SET @LOWER_CASE_z = 122
SET @Delimiter = ' ,-'
SET @UPPER_CASE_A = 65
SET @UPPER_CASE_Z = 90

WHILE @ctr <= @len
BEGIN
--This loop will take care of reccuring white spaces
WHILE CHARINDEX(SUBSTRING(@input,@ctr,1), @Delimiter) > 0
BEGIN
SET @output = @output + SUBSTRING(@input,@ctr,1)
SET @ctr = @ctr + 1
END

IF ASCII(SUBSTRING(@input,@ctr,1)) BETWEEN @LOWER_CASE_a AND @LOWER_CASE_z
BEGIN
--Converting the first character to upper case
SET @output = @output + UPPER(SUBSTRING(@input,@ctr,1))
END
ELSE
BEGIN
SET @output = @output + SUBSTRING(@input,@ctr,1)
END

SET @ctr = @ctr + 1

WHILE CHARINDEX(SUBSTRING(@input,@ctr,1), @Delimiter) = 0 AND (@ctr <= @len)
BEGIN
IF ASCII(SUBSTRING(@input,@ctr,1)) BETWEEN @UPPER_CASE_A AND @UPPER_CASE_Z
BEGIN
SET @output = @output + LOWER(SUBSTRING(@input,@ctr,1))
END
ELSE
BEGIN
SET @output = @output + SUBSTRING(@input,@ctr,1)
END
SET @ctr = @ctr + 1
END

END
RETURN @output
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

So all that was required to get this to work, was to call the UDF after it was created ...

END
RETURN @output
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

--Insert your call here ...
UPDATE TABLENAME
SET fieldname=dbo.PROPERCASE(fieldname)
FROM DBNAME..TABLENAME

Now this saved me a hell of a lot of time and was a very simple and easy way to format the data the way that I wanted. Unfortunately, when I went to repeat the same action for the counties, I accidentally wrote over the city fields with the data in the counties field ... Smooth.

It would really come in handy if something like this could have been done in ColdFusion without having to create a UDF to do so ... maybe the guys over at Adobe will read this and decide that it merits inclusion into the next release.

SEO » SES URL » RegEx Cheat Sheet

Recently I have been going through the fantastic book, Mastering Regular Expressions, by Jeffrey Friedl. Since I first learned the basics of creating a URL re-write in ColdFusion from a buddy that I used to work with, I developed a crazy fascination with Regular Expressions. For the CF developers that are reading this, it may seem like really old news to you, but many of the "SEO" folks will find this to be foreign, (a programmer is laughing right now ...)

So, for the non-code oriented readers, regular expressions are a very powerful and efficient set of tools, methods and commands to manipulate strings of text and data. You might be wondering how that can be of any benefit to the SEO community. I shall attempt to explain.

The first major benefit that regular expressions offer is through SES (Search Engine Safe) URL re-writing. For Instance, let's take a URL that would be considered as "Unsafe" for search engine optimization.

~ section508.gov/index.cfm?FuseAction=Content&ID=3

Now, I am probably going to catch hell for using this URL as an example, but you have got to love the fact that the web site for Section 508 which regards usability standards, does not use search engine safe URL's. ( Is there anyone screaming 'REMatch' out there? ). There are several characters in dynamic URL's that cause search engine spiders to stop crawling - Question marks, equal signs, ampersands, and colons, are but a few to mention. So, in the example above, we could simply run the URL through a regular expression which, replaces all of the unwanted characters with ones that are search engine safe.

Since this is not a tutorial on ColdFusion's Regular expression functions, I'm only going to show an example of how this URL could be manipulated with a regular expression.

<cfset dirtyURL = ('#CGI.PATH_INFO# #CGI.QUERY_STRING#')>
<cfset fixit = #ReplaceList(dirtyURL, "?,=,&","/,/,/")#>
<cfset cleanURL = #ReReplace(fixit,"([[:space:]])","/","ALL")#>
<cfoutput>#cleanURL#</cfoutput>

So, here we simply store the URL as a string variable, and replace the unsafe characters with desirable ones.

The end result above, would take an unsafe URL, like this ...

~ section508.gov/index.cfm?FuseAction=Content&ID=3

And return a SES URL like this ...

~ section508.gov/index.cfm/FuseAction/Content/ID/3

Which, is much better for the search engine spiders to index the content on your site ... and ... "it looks prettier".

So, that is just one of the many powerful things that can be done with regular expressions, and as I learn more about them, I'll be sure to post my discoveries, delights, and not-so-friendly encounters for all to see ... (Oh joy ... )

In the mean time, I have concocted a cool little cheat sheet, based on the one from Dave's IloveJackDaniel's site ...

I'm putting it here so that I can remember what the hell all the different Metacharacters in the various flavors of RegEx syntax do.
Feel free to do with it as you will.

» RegEx Cheat Sheet «

Anchors Quantifiers Groups and Ranges
^
\A
$
\Z
\b
\B
\<
\>
Start of string
Start of string
End of string
End of string
Word boundary
Not word boundary
Start of word
End of word
*
+
?
{3}
{3,}
{3,5}
0 or more
1 or more
0 or 1
Exactly 3
3 or more
3, 4 or 5
.
(a|b)
(...)
(?:...)
[abc]
[^abc]
[a-q]
[A-Q]
[0-7]
\n

Any char except new line (\n)
a or b
Group
Passive Group
Range (a or b or c)
Not a or b or c
Letter between a and q
Upper case letter
between A and Q
Digit between 0 and 7
nth group/subpattern

Note: Ranges are inclusive.
Quantifier Modifiers
"x" ~ below represents a quantifier
x? ~ Ungreedy version of "x"
Character Classes Escape Character Pattern Modifiers
\c
\s
\S
\d
\D
\w
\W
\x
\O
Control character
White space
Not white space
Digit
Not digit
Word
Not word
Hexadecimal digit
Octal digit
\ ~ Escape Character g
i
m
s
x
e
U
Global match
Case-insensitive
Multiple lines
Treat string as single line
Allow comments and
white space in pattern
Evaluate replacement
Ungreedy pattern
Metacharacters (must be escaped)
  • ^
    $
    (
    )
    <
  • [
    {
    \
    |
    >
  • .
    *
    +
    ?
POSIX Special Characters String Replacement (Backreferences)
[:upper:]
[:lower:]
[:alpha:]
[:alnum:]
[:digit:]
[:xdigit:]
[:punct:]
[:blank:]
[:space:]
[:cntrl:]
[:graph:]
[:print:]

[:word:]
Upper case letters
Lower case letters
All letters
Digits and letters
Digits
Hexadecimal digits
Punctuation
Space and tab
Blank characters
Control characters
Printed characters
Printed characters and
spaces
Digits, letters and
underscore
\n
\r
\t
\v
\f
\xxx
\xhh
New line
Carriage return
Tab
Vertical tab
Form feed
Octal character xxx
Hex character hh
$n
$2
$1
$`
$'
$+
$&
nth non-passive group
"xyz" in /^(abc(xyz))$/
"xyz" in /^(?:abc)(xyz)$/
Before matched string
After matched string
Last matched string
Entire matched string
Assertions Sample Patterns
?=
?!
?<=
?!= or ? ?>
?()
?()|
?#
Lookahead assertion
Negative lookahead
Lookbehind assertion
Negative lookbehind
Once-only Subexpression
Condition [if then]
Condition [if then else]
Comment
Pattern
([A-Za-z0-9-]+)
(\d{1,2}\/\d{1,2}\/\d{4})
([^\s]+(?=\.(jpg|gif|png))\.\2)
(^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$)
(#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?)
((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15})

(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})
(\<(/?[^\>]+)\>)
Will Match
Letters, numbers and hyphens
Date (e.g. 5/3/2008)
jpg, gif or png image
Any number from 1 to 50 inclusive
Valid hexadecimal colour code
String with at least one upper case
letter, one lower case letter, and one
digit (useful for passwords).
Email addresses
HTML Tags
Note: These patterns are intended for reference purposes and have not been
extensively tested. Please use with caution and test thoroughly before use.


Florida SEO - What's in your Search Engine Optimization - SEO Tool kit?

When I first started doing SEO work I used little more than Dream Weaver, Overture, Word and Excel. I went through a fairly intense OJT training where the unspoken, but thoroughly understood realization was ...

If you lagged behind your co-workers, even in the slightest, you had better have a backup job awaiting. 

So, for my first six months as a neophyte SEO specialist, web developer and programmer, I literally worked day and night, to absorb every thing I could about my craft. I probably slept an average of two, to three hours a night during week days, and only a bit longer on the weekends.

After my skills in sharpened  a bit, I began to use more powerful and more productive tools to get my SEO work done. So, out of the hundreds of different applications, services, tools and products that I have used to do SEO work with, I have generated a list of the top ten SEO tools that I use for SEO campaigns.

Number One - Dream Weaver

I have learned how to develop HTML, CSS, JavaScript,  ColdFusion, and PHP, all within this one IDE. Hands down, this is the most productive tool for SEO that I use.

Number Two - The Web Developer Toolbar By: Chris Pederick.

For all of the projects that I work on, I use the Web Developer Toolbar to help me with the common HTML and CSS tasks quite a bit ... Now that I have been using it a while ... I wouldn't want to work without it.

Number Three - Xenu Link Checker

I love reports ... and with Xenu, I can check several important facts about a web site really fast. If there is a problem with redirects, 404's or bad inbound links ... it's really simple to just check out the report after running a scan and get a quick snapshot of the condition of a web site.

Number Four - MS Excel

Now many of you that read this will think that Excel has nothing to do with SEO ... but I use it so much that my life as an SEO would be very difficult without it. I use Excel for so many different SEO tasks that I have set a side a little bit of time each week just to learn more tips and tricks about Excel ...

Number Five - Webconfs Keyword Density Checker

I don't always check the density on the SEO pages that I create but there are times when I feel that a search term or situation calls for attention to the density of the keywords for a project ... Even though I am getting to the point where I can usually just go with my intuition on keyword density ... the keyword density checker at Webconfs is the one I use when I decide to get the numbers.

Number Six - Domain Tools SEO Text Browser

I really like the online SEO Text Browser that domain tools has ... It's gives a very nice depiction of a web site much like one would see if using a regular text only browser such as Lynx, but, without the poor navigation  and ugly user interface you get with most text only browsers ... it even gives you the basic details regarding you Meta Tags ...

Number Seven - Webconfs HTTP Header Checker

This is one tool that I am beginning to rely on more and more ... sometimes when you are unsure of the responses that you are getting back from a site ... it's a good idea to check out what the server response codes are to determine if there are any unseen errors ... this is one very handy tool.

Number Eight - Search Status Extension for Firefox

This is a tool that I only picked up recently but since I added it to my tool kit ... it has become apparent that this is a very cool little feature to have around ... it really comes in handy when I have to get stats on a site quick ... this makes it an invaluable resource for dealing with clients that want answers on the fly. 

Number Nine - SEO Link Analysis Extension for Firefox

This tool is becoming one of my favorites to get info on link data. Joost De Valk has really brought a fantastic extension together to provide link information to SEO's from the interface of Yahoo! ... this is also another tool that can can save a conversation about links from going south ... fast.

Number Ten - Trellian's Keyword Discovery

I left the best for last on this one ... No SEO campaign can be complete without effective and thorough keyword research. Though it is the most time consuming and tedious part of an SEO campaign, SEO's that don't do their homework usually end up with results that reflect just that ... Keyword Discovery proves to offer the most reliable selection of keyword data for the price ...

BlogCFC was created by Raymond Camden. This blog is running version 5.9. Contact Florida Search Engine Optimization L.L.C.
Search Engine Optimization Specialist || Web Designer || Web Developer || Edward J Beckett ||
Search Engine Optimization Company  || SEO Services || Internet Marketing Company || Search Engine Optimization Expert || Florida Search Engine Optimization LLC
Florida Search Engine Optimization || Search Engine Optimization || SEO Services || Florida SEO Blog
Florida Search Engine Optimization
Search Engine Optimization
SEO Services
Florida SEO Blog
July-04-2008
1:47 AM EST