Archive for April, 2007

April 27th, 2007

Unfortunate Placement of Yahoo! Ad

Only a geek would find this funny. And if you really don’t understand it then you may want to brush up on your HTTP Status Codes.

Tags: ,

Posted in SEO | kick it on DotNetKicks.com | Bookmark | View blog reactions | 1 Comment »

April 24th, 2007

World Of HTTP/1.1 Status Codes

In a follow up to my previous post on Proper URL Construction, I am going to dive more deeply in to the Status Codes that control the redirects that were talked about in my previous article.

Most developers are familiar with the HTTP 1.0 Status Codes, that have been recently popularized by the SEO guys. We have all heard that you should use 301 Moved Permanently instead of 302 Temporary Redirect. What many of the SEO guys won’t tell you, because they don’t know any better, is that they are using the RFC 1945 HTTP/1.0 Standard that was released in May 1996, that is right it is about 12 years old. The newest HTTP/1.1 Standard, RFC 2616, was released in June 1999, and made some pretty drastic changes the the 3xx Redirect Status Codes. The goal of this post is to inform and familiarize developers with the HTTP/1.1 Standard, specifically the 3xx Redirect Status Code changes. This can have drastic effect on how you handle requests on your website and optimize your site for search engines.

History

In the middle-to-late 1990’s 302 Moved Temporarily was the most popular redirect code, but also an example of industrial practice contradicting the standard. HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect (the original describing phrase was “Moved Temporarily”), but popular browsers implemented it as though it was a 303 See Other.

Note from 302 Found: RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request. However, most existing user agent implementations treat 302 as if it were a 303 response, performing a GET on the Location field-value regardless of the original request method. The status codes 303 and 307 have been added for servers that wish to make unambiguously clear which kind of reaction is expected of the client.

Therefore, HTTP/1.1 added status codes 303 and 307 to disambiguate between the two behaviors. However, majority of Web applications and frameworks still use the 302 status code as if it were the 303.

Proper Use of HTTP Redirects

The next part will be a guide of the conditions that should be met in order to use the specific redirect.

301 Moved Permanently

  • The URL (or page) is going to permanently reside in a differently location
  • The domain should always be displayed a certain way, (i.e. This domain is always displayed as coderjoural.com, so any traffic to www.coderjournal.com gets a 301 redirect to coderjoural.com).
  • This should be used for most static redirects that are not generated programmatically.
  • *NEW* This status was mostly designed to be used with GET and HEAD requests.

303 See Other

  • This is going to be the most common type of redirect that you want to use when you are programmatically changing where the user is located in your site during a POST back.
  • Any time you want to redirect a user to another URL after a POST from a form has occurred (i.e. The visitor to your site registers with your site and after they are done registering you want to direct them back to the home page, this is when you would use a 303 redirect).
  • *NEW* This status was designed to be used with POST requests specifically, so it should not be used for GET or HEAD requests.

307 Temporary Redirect

  • Anytime that you want to put up a temporary page (i.e. your site is under construction and you want all traffic temporarily redirected to a static HTML page).
  • *NEW* This should be used when you want to redirect a GET request to different location each time the URL is requested.
  • *NEW* This should be not be used with POST requests, because of this statement in the specification:

    the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

302 Found

  • Use this for any condition not met above.
  • This should be used sparingly because there is a search engine penalty if used too much, because of some spammers that used an Exploit called Page Hijacking.
  • This is sort of the antithesis to 404 Not Found and should be used in a similar way. So if you have a page that is referenced but no longer exists, but you do not want to return a 404 and just redirect the user to a random (not static as defined in a 301) site you would use a 302 redirect. (note this argument is very weak and there is very little reason in a HTTP/1.1 world to use a 302 redirect)
  • *NEW* This status should be used during GET requests for any semi-static URL’s that may change in the future, but don’t change with each and every request. A good example of this on Coder Journal is my Essential Software Every Developer Needs which I publish annually, and is located at http://www.coderjournal.com/essential-software/. It changes but it only changes once a year, so it is semi-static in terms of the internet.
  • *NEW* The 302 Found falls right between 301 Moved Permanently and 307 Temporary Redirect in terms of how permanent the URL is for GET requests.

An example of an HTTP Redirect Response will look something like the following, this was take from my own site when somebody queries www.coderjournal.com:

HTTP/1.1 301 Moved Permanently
Date: Tue, 24 Apr 2007 18:12:55 GMT
Server: Apache
Location: http://www.coderjournal.com/
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1131

If you would like to learn more about how to perform these redirects, that I have talked about above, in your favorite language please read this article from Steven Hargrove.

Update (2008-5-20): I have updated my understanding of the different types of redirects that developers may want to use. See above for my new understandings.

Tags: , , ,

Posted in How To, Programming, SEO | kick it on DotNetKicks.com | Bookmark | View blog reactions | 8 Comments »

April 23rd, 2007

Welcome to Dot-Com Bubble 2.0

Jeff Atwood says all the signs are clear that we might be in the Dot-Com Bubble 2.0.

The “dot-com bubble” was a speculative bubble covering roughly 1995–2001 during which stock markets in Western nations saw their value increase rapidly from growth in the new Internet sector and related fields. The period was marked by the founding (and in many cases, spectacular failure) of a group of new Internet-based companies commonly referred to as dot-coms. A combination of rapidly increasing stock prices, individual speculation in stocks, and widely available venture capital created an exuberant environment in which many of these businesses dismissed standard business models, focusing on increasing market share at the expense of the bottom line. The bursting of the dot-com bubble marked the beginning of a relatively mild yet rather lengthy early 2000s recession in the developed world.

Posted in Rant | kick it on DotNetKicks.com | Bookmark | View blog reactions | No Comments »

April 20th, 2007

Fumbled Fumbles on the Microsoft Excel “Save As” Issue

I read a Digg post today, that some how made it to the front page, that just made me laugh. The author of the post was obviously very ignorant in his approach and lazy on research that went in to his blog post.

See if anybody can find the Big Save As Button on the picture below.

Microsoft Office Excel 2007 Save As

As one commenter on this article put it:

floppyllamadigg: We’ve met the one user on the planet that can’t function without Clippy.

I tend to agree with floppyllamadigg in that any user that cannot find the huge circle button with the Windows Logo in it or isn’t at least curious enough to click that huge target probably should stick with Notepad or the more advanced WordPad.

Update: (17:30 EST) And the lemmings follow along.

Update: (2007-4-21) And the good times keep rolling over at Fumbled.org. The new post on Fumbled.org seems to be more of a backhanded apology. However as I have said before when you make a mistake, fess up, there is nothing more refreshing in this days world than that. So kudos to R Lee Creasy, who I featured above in the lemmings update.

Tags: , , ,

Posted in Programming, Rant | kick it on DotNetKicks.com | Bookmark | View blog reactions | 1 Comment »

April 17th, 2007

Sitemap Auto Discovery And You

Last week all the major search engine providers, announced that they were going to support a new specification at sitemap.org that allows them to auto discover your sitemap without you having to submit it:

Yahoo did a good job at summing up the advantages to putting your sitemap location in the robots.txt file.

All search crawlers recognize robots.txt, so it seemed like a good idea to use that mechanism to allow webmasters to share their Sitemaps. You agreed and encouraged us to allow robots.txt discovery of Sitemaps on our suggestion board. We took the idea to Google and Microsoft and are happy to announce today that you can now find your sitemaps in a uniform way across all participating engines.

If you want to see my implementation of this for my sitemap go to http://www.coderjournal.com/robots.txt. Further details about this can be found at http://sitemaps.org/protocol.htm or for your convenience I have included them below.

Specifying the Sitemap location in your robots.txt file

You can specify the location of the Sitemap using a robots.txt file. To do this, simply add the following line:

Sitemap: <sitemap_location>

The <sitemap_location> should be the complete URL to the Sitemap, such as: http://www.example.com/sitemap.xml

This directive is independent of the user-agent line, so it doesn’t matter where you place it in your file. If you have a Sitemap index file, you can include the location of just that file. You don’t need to list each individual Sitemap listed in the index file.

Tags: , , , ,

Posted in SEO | kick it on DotNetKicks.com | Bookmark | View blog reactions | 1 Comment »

April 16th, 2007

Speeding up a Slow Outlook 2007

Just found a recent post by Scott Hanselman on how to speed up the slow load times of Outlook 2007, and I thougt it was worth passing on to my readers.

Outlook 2007 has been pretty slow for me since I installed it. If you’ve got RSS Feeds Enabled and/or if you’re a packrat, Outlook 2007 can be a downright performance pig. I’ve got internal contacts that say that the Office team is hot on the tail of a number of really interesting issues.

What can you do today? A patch KB933493 went live yesterday to help speed up access to large PSTs and OSTs. For now, you have to go get it. We’ll see what the future holds for this, but I suspect that Office SP1, whenever it comes out, is going to be a very snappy performer.

Initial reports on this patch are positive. Searches are faster, Undos are faster, moving messages is faster, and moving quickly while reading in the preview pane is faster. The future bright on this one…I was really starting to get bummed about Outlook’s performance.

Tags: ,

Posted in Programming | kick it on DotNetKicks.com | Bookmark | View blog reactions | No Comments »

April 12th, 2007

Apple announces Leopard delays due to the iPhone

For all the Apple fans out there expecting Leopard to be released in June, David from TUAW has some news for you. Apparently late October is the new date for the next release of OS X 10.5. Many people blame Microsoft for taking extra time with Vista, to redo blaring security issues, however I don’t blame Microsoft or Apple, because we expect nothing less than the best software that money can buy from these companies, and if it takes a little longer to get it, then I am willing to wait.

Tags: , , ,

Posted in Programming, Rant | kick it on DotNetKicks.com | Bookmark | View blog reactions | No Comments »

April 10th, 2007

A Guide To Proper URL Construction

For many developers the URL Address is just a means to an end, so very little time is actually spent on creating and planning a URL that is both functional and user friendly. We have all seen the URLs that seem to go on forever, I am not going to dwell on those URLs because you can find them anywhere. I am going to go over what a good URL consists of, and some easy ways to increase your search engine ranking with your already developed application.

Search Engines Crawlers are like People

One thing that a web developer has to understand is that Search Engine Crawlers are like people. Everybody understands that if your site content is not laid out in a way that is readable, people will not spend much time on your site. The same goes for Search Engine Crawlers, if your site doesn’t conform to XHTML or at the very least HTML standards the search engine crawler isn’t going to spend much time indexing your site.

Well the very same goes for the URL of your website, if it is ugly and looks like http://somesite.com/default.aspx?a=0038383-838308380-8383&c=3&p=30203#page-2 it is very hard to determine what part of the URL changes the content displayed and what this content is actually suppose to be. I don’t even think the developer of this application could tell you. But a more friendly version of the same URL might be written like http://somesite.com/authorname/google/correct-use-of-the-url.html#page-2. Just like the content example above, the Search Engine Crawler will have an easier time cataloging the nicer URL because it actually uses real words instead of magic numbers that don’t mean anything except to the program.

3 Tips For Constructing a Proper URL

  1. Remove Duplicate URLs
    Jeff Atwood recently wrote an article dealing with multiple URLs and the effects they have on your Search Engine Ranking:

    As a software developer, you may be familiar with the DRY principle: don’t repeat yourself. It’s absolute bedrock in software engineering, and it’s covered beautifully in The Pragmatic Programmer, and even more succinctly in this brief IEEE software article (pdf). If you haven’t committed this to heart by now, go read these links first…

    With URLs there are many ways to get to a website:

    1. http://www.coderjournal.com
    2. http://www.coderjournal.com
    3. http://www.coderjournal.com/index.html
    4. http://www.coderjournal.com/index.html

    Having these multiple URLs reference the same content decreases your Search Engine Ranking, specifically PageRank is calculated per-URL. So the best idea is to do a 301 Redirect for the different patterns I listed above. In my case of Coder Journal I have URLs 2,3,4 all redirecting to URL 1.

  2. Combine Domains
    Most people don’t know but this blog has multiple domains that get you to the same point.

    • http://www.coderjournal.com
    • http://coderjournal.net
    • http://coderjournal.org

    Just like what we previously went over about Duplicate URLs the same applies to domain names. So it is wise to also do a 301 Redirect from the domains. In the case of this blog I have the .net and .org domains doing a 301 redirect to my .com domain name.

  3. Increasing Your Surface Area With Keywords in URLs
    If you do most any search on Google, you will notice that Google also highlights the keywords that show up in the URL. So a URL that looks like this http://www.coderjournal.com/2007/04/new-novell-ad-campaign-mac-vs-pc-vs-linux-continued/ is going to attract a lot more attention on keyword searches than a URL that looks like http://www.coderjournal.com/2007/04/new-novell-ad-campaign-mac-vs-pc-vs-linux-continued/

The 3 tips that I gave you above are just the tip of the SEO iceberg. However implementing one or all of these should increase your Search Engine Ranking, without effecting the functionality of your application. What more could you ask for?

Tags: ,

Posted in SEO | kick it on DotNetKicks.com | Bookmark | View blog reactions | 1 Comment »

April 4th, 2007

New Novell Ad Campaign: Mac vs. PC vs. Linux (Continued)

In a follow up to a post last week about the Novell Mac Ad Spoofs. I found a 3rd spoof ad on YouTube:

Apple Ad Spoof #3 from Novell

Tags: ,

Posted in Programming, Rant | kick it on DotNetKicks.com | Bookmark | View blog reactions | 2 Comments »

April 4th, 2007

Mozy Backup Review

Just over 5 months ago I lost a ton of data in the process of a couple stupid moments, this included code I had not backed up, some documents, iTunes music, pictures, and database data that I had been collecting for many years. I was lucky I could get most of this back through some old backups, but I pretty much lost a good months worth of data. From that day on I vowed to never have this happen again, so I started on a hunt to find the best solution for backing up my wifes desktop and my laptop. I first went the route of backing up my laptop to an internal network storage drive, but I with in a few days realized that my data wasn’t really protected it was just duplicated and could easily be lost in, god forbid, a house fire. So I knew I needed to pay somebody to keep my data in a place other than my house, so I set out to find the best online backup solution for the smallest budget. It had to be:

  • Reliable in that I do not want the service here today, gone tomorrow.
  • Fast in that I do not want it to take weeks to upload 15 GB.
  • Data is easily assessable from the web and PC.
  • Secure in that I do not want my data to be openly readable.
  • Configurable in that I want control over what is backed up.
  • Unlimited in that I didn’t want my bill to rise over time.
  • A nice to have would be Versioning of my files, where versions over time of the same file are kept in tact.

After looking at Amazon, xDrive, and Carbonite I eventually stumbled across a service called Mozy, it seemed to have everything I wanted for a price that worked for me and my wife.
Read the rest of this entry »

Posted in Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | 18 Comments »