<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Whatley &#187; Yahoo</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/yahoo-companies/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Get your Website&#8217;s Video Content onto the Search Engines</title>
		<link>http://www.simonwhatley.co.uk/get-your-websites-video-content-onto-the-search-engines</link>
		<comments>http://www.simonwhatley.co.uk/get-your-websites-video-content-onto-the-search-engines#comments</comments>
		<pubDate>Fri, 19 Nov 2010 12:24:51 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Search engine optimization]]></category>
		<category><![CDATA[Search engine results page]]></category>
		<category><![CDATA[search engines]]></category>
		<category><![CDATA[Site map]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[video search engines]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=3769</guid>
		<description><![CDATA[Given the option, most people prefer to watch a video than read good old fashioned text. Therefore, it’s no surprise that video sites such as YouTube, Vimeo and DailyMotion are increasing in populatrity, with YouTube inparticular being recently ranked the third most popular website in the world by Alexa. Anticipating the need to find video content online, the major search engines (Google, Yahoo and Bing) have created their own video search engines. These spider the web for unique video content and publish it in their video sections.]]></description>
			<content:encoded><![CDATA[<p>Given the option, most people prefer to watch a video than read good old fashioned text. Therefore, it&#8217;s no surprise that video sites such as YouTube, Vimeo and DailyMotion are increasing in populatrity, with YouTube inparticular being recently ranked the third most popular website in the world by Alexa.</p>
<p>Anticipating the need to find video content online, the major search engines (Google, Yahoo and Bing) have created their own video search engines. These spider the web for unique video content and publish it in their video sections.</p>
<p>An interesting and cool result of this is that, instead of posting normal text listings, the search engines publish thumbnail screenshots of the videos on the search engine results pages (<abbr title="search engine results page">SERP</abbr>). The thumbnail enables users to see what kind of video they can expect to see, before actually viewing it.</p>
<p><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2010/11/google-video-search.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2010/11/google-video-search-300x194.png" alt="" title="Google Video Search" width="300" height="194" class="aligncenter size-medium wp-image-3772" /></a></p>
<p>Universal search &#8212; a system that blends image, video, news, blog, local and traditional search to form a more complete experience and result set &#8212; is now integral to all three major search engines. Listings that have video thumbnails have been proven to receive a much higher click-through rate than traditional text listings.</p>
<p><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2010/11/google-universal-search.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2010/11/google-universal-search-300x122.png" alt="" title="Google Universal Search" width="300" height="122" class="aligncenter size-medium wp-image-3774" /></a></p>
<p><strong>So, how can you get your pages listed with video thumbnails?</strong></p>
<ol>
<li>Embed your video onto your web page using any number of methods. For example, you could use Flash video, Windows media video, Quicktime, Ogg Theora amongst others. As a point to note, you shouldn&#8217;t use a third-party video site &#8212; such as YouTube, Vimeo and DailyMotion &#8212; for this; the video must be unique to your website.</li>
<li>Create a thumbnail of the video for indexing.</li>
<li>Create four meta tags on the web page that displays the video:

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;meta name=&quot;medium&quot; content=&quot;video&quot; /&gt;
&lt;meta name=&quot;video_type&quot; content=&quot;application/x-shockwave-flash&quot; /&gt;</pre></div></div>

<p>Replace <code>application/x-shockwave-flash</code> with whichever video format you&#8217;re using.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;meta name=&quot;video_height&quot; content=&quot;280&quot; /&gt;
&lt;meta name=&quot;video_width&quot; content=&quot;460&quot; /&gt;</pre></div></div>

<p>Replace the height and width dimensions with those specific to your video.</li>
<li>Create a video sitemap and submit it to the search engines. <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&#038;answer=80472" title="Google Video Submission Process" target="_blank" rel="nofollow">Google</a> and <a href="http://video.search.yahoo.com/mrss/submit" title="Yahoo Video Submission Process" target="_blank" rel="nofollow">Yahoo</a> have a clear video submission process, whereas Bing does not, so you should submit to <a href="http://www.bing.com/toolbox/posts/archive/2009/10/09/submit-a-sitemap-to-bing.aspx" title="Bing Sitemap Submission Process"  target="_blank" rel="nofollow">Bing</a> in the normal way.</li>
</ol>
<p>If your page is already in position one for a keyword, that listing will gain a thumbnail once you have optimised it for video. You&#8217;ll also get increased time on site and possibly page views, afterwhich you can develop a better conversion-rate strategy.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/get-your-websites-video-content-onto-the-search-engines/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>When to use Sub-domains versus Sub-directories</title>
		<link>http://www.simonwhatley.co.uk/when-to-use-sub-domains-versus-sub-directories</link>
		<comments>http://www.simonwhatley.co.uk/when-to-use-sub-domains-versus-sub-directories#comments</comments>
		<pubDate>Thu, 17 Jun 2010 11:06:39 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Search]]></category>
		<category><![CDATA[bbc]]></category>
		<category><![CDATA[domains]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Microsite]]></category>
		<category><![CDATA[search engines]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Sky]]></category>
		<category><![CDATA[sub-directories]]></category>
		<category><![CDATA[sub-domains]]></category>
		<category><![CDATA[websites]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=3689</guid>
		<description><![CDATA[The decision to utilise a sub-domain, sub-directory or even a microsite is simply an architectural decision, but one that is often compounded with a marketing decision. In general, sub-directories are used to describe what individual pages are about while sub-domains and microsites are used to describe what an entire site is about.]]></description>
			<content:encoded><![CDATA[<p>When it comes to SEO in general, when should I use sub-domains versus sub-directories? How do microsites fit into the mix? </p>
<p>The decision to utilise a sub-domain, sub-directory or even a microsite is simply an architectural decision, but one that is often compounded with a marketing decision. In general, sub-directories are used to describe what individual pages are about while sub-domains and microsites are used to describe what an entire site is about.</p>
<h3>When to use sub-directories</h3>
<ul>
<li>Sub-directories are useful for organising content into meaningful groupings with descriptive URLs. If you have a meaningful taxonomy, then sub-directories are a good way to make your URLs more search friendly.</li>
<li>For relatively small websites, i.e. not the BBCs and CNNs of this world, keeping your content in one place will help your website build trust and authority. The more trust and authority a website is able to garner with the search engines, the easier it becomes to rank new and related content.</li>
<li>For the less technically savvy, sub-directories are easier to manage than sub-domains since they are generally created as part of the website&#8217;s page hierarchy. Furthermore, many CMSs don&#8217;t support the ability to publish across different domains out-of-the-box.</li>
<li>Google Webmasters tools allow you to set basic geo-location preferences to sub-directories. The idea is to create new pseudo-website listings that also include sub-directories. For example, the www.domain.com listing could have www.domain.com/uk for the UK, www.domain.com/es for Spain and so on for each geographic location.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>When to use sub-domains</h3>
<ul>
<li>Sub-domains are useful for organising content that is otherwise unrelated. Take Google for example, they have a news product at news.google.com, a maps product at maps.google.com and a email product at mail.google.com. Since they are fundamentally different from each other and Google&#8217;s main search product, they aren&#8217;t held under the same domain.</li>
<li>Sub-domains allow you to target regional markets more effectively. Sub domains are easier to market to specific geographical regions. For instance you can assign an IP address to a sub-domain and set a geographical preference in Google&#8217;s Webmaster tools for each sub-domain (sub-directories can have their geo-preference set but can&#8217;t be assigned an IP in another country, which might also be a signal of geo-location). For example, the www.domain.com listing could have uk.domain.com for the UK, es.domain.com for Spain and so on for each geographic location.</li>
<li>If you already have a well established domain and want to expand out into other areas not completely related to your main website&#8217;s activities then a sub-domain may well be a good option. At the same time, people associate the sub-domain with your main domain&#8217;s brand, which means it can be easy to build up momentum on a vertical related to your main site. This is what the web giants Google and Yahoo, Sky and the BBC do successfully, but smaller websites can do the same. You often see this when the third-party functionality is &#8220;plugged into&#8221; an existing site, such as a payment gateway, events and job boards.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>When to use microsites</h3>
<p>Like sub-domains, microsites have an important position in the overall debate.</p>
<ul>
<li>If you have a new product or service that you potentially want to sell off or brand completely differently from your main business offering, a microsite makes a lot of sense. Microsites are really just a stripped down website, but as the product or service develops, so will the website and associated brand and it will take on trust and authority of its own.</li>
<li>Microsites offer the ability to completely separate your main brand from the new product, service or promotion. This is useful if you&#8217;re pushing a content piece that has little to no association with your site and you don&#8217;t want the potential branding confusion or commercial association to hinder link and user growth.</li>
<li>Microsites can be powerful if you have an exact match domain name for a particular keyword you&#8217;re targeting. Google&#8217;s preference for and ranking exact-match domains is a very powerful tool to use for SEO.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/when-to-use-sub-domains-versus-sub-directories/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>13 Google AdWords Tips and Tricks</title>
		<link>http://www.simonwhatley.co.uk/13-google-adwords-tips-and-tricks</link>
		<comments>http://www.simonwhatley.co.uk/13-google-adwords-tips-and-tricks#comments</comments>
		<pubDate>Tue, 25 May 2010 10:42:48 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[adsense]]></category>
		<category><![CDATA[advertising campaign]]></category>
		<category><![CDATA[adverts]]></category>
		<category><![CDATA[adwords]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[Click Through Rate]]></category>
		<category><![CDATA[Cost Per Acquisition]]></category>
		<category><![CDATA[Cost Per Click]]></category>
		<category><![CDATA[CPA]]></category>
		<category><![CDATA[CPC]]></category>
		<category><![CDATA[CTR]]></category>
		<category><![CDATA[geo-targeting]]></category>
		<category><![CDATA[geotargeting]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google AdWords]]></category>
		<category><![CDATA[Internet marketing]]></category>
		<category><![CDATA[Return on Investment]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[search phrase]]></category>
		<category><![CDATA[SERPs]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=3570</guid>
		<description><![CDATA[Google’s AdWords product helps connect you with potential customers in the right place, and at precisely the right time by placing relevant adverts on the right-hand-side of Google’s search results pages (SERPs) or through their content network, via AdSense.]]></description>
			<content:encoded><![CDATA[<p>Google&#8217;s <a href="https://adwords.google.com/" title="Google AdWords" target="_blank" rel="nofollow">AdWords</a> product helps connect you with potential customers in the right place, and at precisely the right time by placing relevant adverts on the right-hand-side of Google&#8217;s search results pages (<abbr title="Search Engine Result Pages">SERPs</abbr>) or through their content network, via <a href="https://www.google.com/adsense/" title="Google AdSense" target="_blank" rel="nofollow">AdSense</a>.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2010/05/google-adwords-logo.gif" alt="" title="Google AdWords" width="210" height="40" class="aligncenter size-full wp-image-3612" /></p>
<p>For a beginner, Google AdWords can be a little daunting to start with, so below I list some tips and tricks that have served and continue to serve me well whenever I setup and manage a campaign.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<ol>
<li><strong>Don&#8217;t use broad keyword matching</strong> &#8212; At least not to start off with. What&#8217;s broad matching? &#8220;If you include general keyword or keyword phrases-such as tennis shoes-in your keyword list, your adverts will appear when users search for tennis and shoes, in any order, and possibly along with other terms.&#8221; With expanded matching it becomes even harder to know when your keywords will show, because Google will pick them algorithmically. Broad match is usually used by experienced advertisers looking to save time (usually with a long list of negative keywords) or by lazy advertisers, who may not have the time or the inclination to target their campaigns. Broad matching can also be the right way to go for parts of certain kinds of campaign, but wading straight into it can be dangerous.</li>
<li><strong>Use dynamic titles in your adverts</strong> &#8212; Dynamic titles are easy, they don&#8217;t cost anything and they usually have a good effect on <abbr title="Click Through Rate">CTR</abbr> and conversion rates. The phrase that the searcher uses in their search will come up as the the title of your advert. This saves you having to create an individual advert for each keyword and means that your ad will be more targeted. In the title field of your ad simply put <code>{keyword:your default title here}</code>. The default title is in case the search phrase is too long for the title field or if AdWords can&#8217;t display the search for some other reason.</li>
<li><strong>Use global negatives to prevent advert duplication</strong> &#8212; If you&#8217;re selling something, you don&#8217;t want people finding your advert if they&#8217;re searching for free stuff. This sounds obvious, but do some searches and you&#8217;ll see it happening. Use the word &#8216;free&#8217; in your campaign global negatives. You can also use this for other words you don&#8217;t want to turn up for. Using negative keywords is especially important if you&#8217;re using broad matching.</li>
<li><strong>Turn off content targeting and search network</strong> &#8212; Do you know where to look at these adverts? If the answer is a resounding &#8220;no&#8221;, leave them alone until you feel confident that you know where they&#8217;ll be showing and that you can make them work &#8212; get comfortable with Google <abbr title="Search Engine Result Pages">SERPs</abbr> first. Conversion rates and <abbr title="Click Through Rate">CTR</abbr>&#8216;s change dramatically for each search property, not to mention content targeted adverts. Get acquainted with Google before you move on to the others.</li>
<li><strong>Test different advert-copy and positions</strong> &#8212; How much of a difference will being in the first position, as opposed to the second, third or sixth position make, for your net profit? The answer is that it depends on your creative, industry and who else is bidding on your keywords. The bottom line is that you should know. Test your creative in each position and work out where it will be most effective, from an <abbr title="Return on Investment">ROI</abbr> point of view. Remember also that the AdWords ranking algo works on a <abbr title="Cost Per Click">CPC</abbr> x <abbr title="Click Through Rate">CTR</abbr> basis (it&#8217;s actually more complicated than that, but that gives an idea as to why out of two adverts with similar <abbr title="Cost Per Click">CPC</abbr>&#8216;s, one will be higher because of a higher <abbr title="Click Through Rate">CTR</abbr>.) You can also test your creatives. Write several different adverts and set them to run evenly (Google will run the one which preforms best by default, but you can set them to run evenly in your campaign settings). The creative which gives you the highest <abbr title="Return on Investment">ROI</abbr> is the one you should go with. You should probably run this kind of test for more than just a day.</li>
<li><strong>Optimise your destination <abbr title="Universal Resource Locator">URLs</abbr> and landing pages</strong> &#8212; The landing page is the page which the person who clicked on your advert will see when they come through to your site. Don&#8217;t use your homepage as your landing page unless it deals only with selling the product you&#8217;re advertising. For example, if you&#8217;re selling widgets, optimise a page on your website with information regarding that widget, this could be a product page on your website, or a specific page for the advertising campaign.</li>
<li><strong>Track conversion and <abbr title="Return on Investment">ROI</abbr></strong> &#8212; Track everything. Google will track impressions, clicks and click through rate. Just because an advert has a high <abbr title="Click Through Rate">CTR</abbr> doesn&#8217;t mean that it is making you money. Use Google&#8217;s own conversion tracking codes and link AdWords with Analytics. If you don&#8217;t know how each keyword is preforming, then you won&#8217;t be able to optimise your campaigns. Turn off the keywords that aren&#8217;t working well and invest more in the keywords which are.</li>
<li><strong>Work out your <abbr title="Cost Per Aquistion">CPA</abbr></strong> &#8212; How much is each sale costing you? Are your Google AdWords listings preforming as well as your Yahoo! listings? Your Bing listings? Your offline marketing? You should know how much you&#8217;re paying for each order, sale, download or enquiry on each channel &#8212; only then will you be able to set <abbr title="Cost Per Aquistion">CPA</abbr> targets to work towards and know which channel is best for you.</li>
<li><strong>Don&#8217;t enter into bidding wars with your competitors, find a niche</strong> &#8212; It is easy to get into bidding wars with your competitors. You want to be number one and so does your competitor. The best thing to do is to take a step back, ten deep breaths and consider how important it really is to be in the number one spot. If you can justify it, fine but otherwise: let your competitor be number one, slot into the number two slot and wait. If you have a better product, your click-through rate will get you to the top – and you&#8217;ll still be paying the same as you were in the second position. More and more people are using automated bidding software. This software will update at a set interval to keep the ad in the desired position. Doing battle with this kind of software is even more frustrating and less rewarding than trying to outbid a competitor.</li>
<li><strong>Set a weekly budget and stick to it</strong> &#8212; When you&#8217;re first starting out this is really important. AdWords is addictive, and like anything else addictive, it can quickly get out of hand. A keyword may convert like nobody&#8217;s business one day and die the next. Make sure you know a keyword is working &#8212; more importantly, know why it is working &#8212; before you invest more.</li>
<li><strong>Geo-target your adverts</strong> &#8212; Geo-target your adverts to the relevant audience. It can be done when you set up a new campaign and in your campaign settings. If you want to show on google.com that&#8217;s fine, but remember that you can geo-target to individual countries and even cities (you can target regions in the <abbr title="United States">US</abbr>, <abbr title="United Kingdom">UK</abbr>, Canada, France, Germany, Italy, Japan, Spain and the Netherlands). The more targeted users feels that your ad is, the more likely they are to click on it.</li>
<li><strong>Organise your adverts into logical groups</strong> &#8212; This will make it easier for you to know what is doing well and what isn&#8217;t &#8212; especially a year later. If you&#8217;re selling widgets have a campaign not just for widgets, but for each brand of widget, and then an ad-group for each widget model.</li>
<li><strong>Keep a close eye on what your competitors are doing</strong> &#8212; Is your competitor doing something better than you? What keywords do you share with your competitors? Can you discern their strategy? Do they use automated bidding software? Do their landing pages have some magic which you should be emulating? This is the sort of information you can find out and the kind of information that you need to know.</li>
</ol>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>If there are inaccuracies in the above list, just give me a shout, otherwise, I&#8217;m happy to hear your own tips and experiences.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/13-google-adwords-tips-and-tricks/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tools to Evaluate the Speed of Your Website</title>
		<link>http://www.simonwhatley.co.uk/tools-to-evaluate-the-speed-of-your-website</link>
		<comments>http://www.simonwhatley.co.uk/tools-to-evaluate-the-speed-of-your-website#comments</comments>
		<pubDate>Tue, 13 Apr 2010 10:21:51 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Charles]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Fiddler]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[search engine marketing]]></category>
		<category><![CDATA[Search engine optimization]]></category>
		<category><![CDATA[search rankings]]></category>
		<category><![CDATA[search rankings algorithm]]></category>
		<category><![CDATA[Smush It]]></category>
		<category><![CDATA[web debugging]]></category>
		<category><![CDATA[Webmaster Tools]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[YSlow]]></category>
		<category><![CDATA[YUI Compressor]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=3461</guid>
		<description><![CDATA[Google’s addition of a page speed signal to its search rankings algorithm officially links performance with search engine marketing. The loading speed of a web page affects user psychology in a number of ways, and now it can effect its rankings as well.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.websiteoptimization.com/speed/tweak/page-speed-search-rankings/" title="" target="_blank" rel="nofollow">WebsiteOptimisation.com</a> recently reported that Google has incorporated the speed of a web page into its search engine rankings. </p>
<p>Google&#8217;s addition of a page speed signal to its search rankings algorithm officially links performance with search engine marketing. The loading speed of a web page affects user psychology in a number of ways, and now it can effect its rankings as well.</p>
<p>From the Google Webmasters&#8217; Blog:</p>
<blockquote><p>Speeding up websites is important &#8212; not just to site owners, but to all Internet users. Faster sites create happy users and we&#8217;ve seen in our internal studies that when a site responds slowly, visitors spend less time there. But faster sites don&#8217;t just improve user experience; recent data shows that improving site speed also reduces operating costs. Like us, our users place a lot of value in speed &#8211; that&#8217;s why we&#8217;ve decided to take site speed into account in our search rankings. We use a variety of sources to determine the speed of a site relative to other sites</p></blockquote>
<p>If you are a site owner, webmaster or a web author, there are some free tools that you can use to evaluate the speed of your site and therefore improve site performance:</p>
<ul>
<li><a href="http://code.google.com/speed/page-speed/" title="Page Speed" target="_blank" rel="nofollow">Page Speed</a>, an open source <a href="http://getfirefox.com/" title="Get Firefox" target="_blank" rel="nofollow">Firefox</a>/<a href="http://getfirebug.com/" title="Get Firebug" target="_blank" rel="nofollow">Firebug</a> add-on that evaluates the performance of web pages and gives suggestions for improvement.</li>
<li><a href="http://developer.yahoo.com/yslow/" title="Yahoo! YSlow" target="_blank" rel="nofollow">Yahoo! YSlow</a> a <a href="http://getfirefox.com/" title="Get Firefox" target="_blank" rel="nofollow">Firefox</a>/<a href="http://getfirebug.com/" title="Get Firebug" target="_blank" rel="nofollow">Firebug</a> Add-on that analyzes web pages and suggests ways to improve their performance, based on a set of rules for high performance web pages.</li>
<li><a href="http://www.webpagetest.org/" title="WebPageTest" target="_blank" rel="nofollow">WebPageTest</a> shows a waterfall view of your pages&#8217; load performance plus an optimization checklist.</li>
<li><a href="http://browsermob.com/website-monitoring" title="BrowserMob website monitoring" target="_blank" rel="nofollow">BrowserMob</a> a tool for website performance monitoring and alerting.</li>
<li><a href="http://www.google.co.uk/chrome" title="Google Chrome" target="_blank" rel="nofollow">Chrome</a> Developer Tools that let you edit, debug, and monitor <abbr title="Cascading Style Sheets">CSS</abbr>, <abbr title="HyperText Markup Language">HTML</abbr>, and JavaScript live in any web page. You can also use them to optimise web page performance by profiling <abbr title="Central Processing Unit">CPU</abbr> and memory usage.</li>
<li>Google&#8217;s <a href="http://www.google.com/webmasters/" title="Google Webmaster Tools" target="_blank" rel="nofollow">Webmaster Tools</a>, in the Labs menu, Site Performance shows the speed of your website as experienced by users around the world.</li>
</ul>
<p>Other tools, including those for web debugging (<a href="http://www.charlesproxy.com/" title="Charles web proxy" target="_blank" rel="nofollow">Charles</a> and <a href="http://www.fiddler2.com/fiddler2/" title="Fiddler 2" target="_blank" rel="nofollow">Fiddler</a>) and resource optimisation (<a href="http://smush.it/" title="Smush It" target="_blank" rel="nofollow">Smush It</a> and <a href="http://developer.yahoo.com/yui/compressor/" title="Yahoo! YUI Compressor" target="_blank" rel="nofollow">YUI Compressor</a>), can be found on <a href="http://code.google.com/speed/tools.html" title="Google Code Speed Tools" target="_blank" rel="nofollow">Google Code</a>.</p>
<p>Google&#8217;s announcement of adding a page speed signal into its search rankings algorithm will in the long term will force the hand of website owners to increase the performance of their websites. This can only be a good think for user experience. With time and investment, the frustration of slow-loading websites will be banished to the past.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/tools-to-evaluate-the-speed-of-your-website/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Configure Apache to GZip Your Components</title>
		<link>http://www.simonwhatley.co.uk/how-to-configure-apache-to-gzip-your-components</link>
		<comments>http://www.simonwhatley.co.uk/how-to-configure-apache-to-gzip-your-components#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:26:38 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache HTTP Server]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DEFLATE]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[ZIP]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2332</guid>
		<description><![CDATA[Compressing your Web components will help speed up your Website. The majority of your visitors will benefit as most all Web browsers support GZip compression. You’ll want to compress all text, which includes HTML, CSS, JavaScript, XML, JSON, etc.]]></description>
			<content:encoded><![CDATA[<p>Compressing your Web components will help speed up your Website.  The majority of your visitors will benefit as most all Web browsers support <abbr title="GNU zip">GZip</abbr> compression.  You’ll want to compress all text, which includes <abbr title="HyperText Markup Language">HTML</abbr>, <abbr title="Cascading Style Sheets">CSS</abbr>, JavaScript, <abbr title="eXtensible Markup Language">XML</abbr>, <abbr title="JavaScript Object Notation">JSON</abbr>, etc.</p>
<p>Apache 2.x uses <code>mod_deflate</code>. Much like <a href="/how-to-set-an-expires-header-in-apache" title="setting expires headers">setting expires headers</a>, this will save you bandwidth and server load, because it allows output from your server to be compressed before being sent to the client over the network.</p>
<p>The deflate module is not compiled by default and must be enabled in the Apache <em>httpd.conf</em> file. Make sure the following is present and uncommented (remove preceding the #):</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">LoadModule deflate_module modules/mod_deflate.so</pre></div></div>

<p>To set <abbr title="GNU zip">GZip</abbr> compression, simply add the following to the <virtualHost> section of your Apache <em>vhost</em> configuration:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</pre></div></div>

<p>Alternatively you can add it to your <em>htaccess</em> file in an <code>&lt;ifModule mod_deflate.c&gt;&lt;/ifModule&gt;</code> block.</p>
<p>All you really need is the first line. The <code>BrowserMatch </code>lines are there to handle issues with older browsers such as Internet Explorer 5.</p>
<p>You can read all about <abbr title="GNU zip">GZip</abbr> by reading Yahoo!’s <a href="http://developer.yahoo.com/performance/rules.html#gzip" title="Yahoo! Best Practices for Speeding Up Your Web Site Guide" target="_blank" rel="nofollow">Best Practices for Speeding Up Your Web Site</a> guide.</p>
<p>Alternatively, read the <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html" title="Apache mod_deflate documentation" target="_blank" rel="nofollow">Apache mod_deflate documentation</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/how-to-configure-apache-to-gzip-your-components/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google&#039;s 5 Privacy Principles</title>
		<link>http://www.simonwhatley.co.uk/googles-5-privacy-principles</link>
		<comments>http://www.simonwhatley.co.uk/googles-5-privacy-principles#comments</comments>
		<pubDate>Thu, 28 Jan 2010 14:51:50 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ethics]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Identity management]]></category>
		<category><![CDATA[Information privacy]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[world wide web]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2255</guid>
		<description><![CDATA[In honour [sic] of International Data Privacy Day today, 28th January 2010, Google has published their own guidlines on privacy. The timing of this is quite intriguing following the recent hacking attack, supposedly orchestrated by the Chinese authorities, on Google, Yahoo, Adobe and some 20 other major international corporations; whilst there is also the ongoing concern from many quarters about Google is too dominant in many aspects of our online lives.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2010/01/googleprivacylogo.png" alt="" title="Google Privacy Logo" width="241" height="128" class="alignleft size-full wp-image-2264" />In honour [sic] of <a href="http://dataprivacyday2010.org" title="International Data Privacy Day" target="_blank" rel="nofollow">International Data Privacy Day</a> today, 28th January 2010, Google has published their own <a href="http://www.google.com/corporate/privacy_principles.html" title="Google's Privacy Principles" target="_blank" rel="nofollow">guidlines on privacy</a>.</p>
<p>The timing of this is quite intriguing following the recent hacking attack, supposedly orchestrated by the Chinese authorities, on Google, Yahoo, Adobe and some 20 other major international corporations; whilst there is also the ongoing concern from many quarters about Google is too dominant in many aspects of our online lives.</p>
<p>But less of the cynicism, the five principles are:</p>
<ul>
<li><strong>Use information to provide our users with valuable products and services.</strong><br />
<q>Focus on providing the best user experience</q> is the first tenet of Google&#8217;s philosophy. When users share information with us, it allows us to build services and products that are valuable to them. We believe that focusing on the user fosters both the products and privacy-enhancing features that have fueled innovation and built a loyal audience of users online.</li>
<li><strong>Develop products that reflect strong privacy standards and practices.</strong><br />
Our ambition is to be at the leading edge of technology, including the development of tools that help users manage their personal information in a simple, accessible manner without detracting from a valuable user experience. We comply with privacy laws, and additionally work internally and with regulators and industry partners to develop and implement strong privacy standards.</li>
<li><strong>Make the collection of personal information transparent.</strong><br />
We strive to show users the information used to customize our services. Where appropriate, we aim to be transparent about the information we have about individual users and how we use that information to deliver our services.</li>
<li><strong>Give users meaningful choices to protect their privacy.</strong><br />
People have different privacy concerns and needs. To best serve the full range of our users, Google strives to offer them meaningful and fine-grained choices over the use of their personal information. We believe personal information should not be held hostage and we are committed to building products that let users export their personal information to other services. We don&#8217;t sell users&#8217; personal information.</li>
<li><strong>Be a responsible steward of the information we hold.</strong><br />
We recognize our responsibility to protect the data that users entrust to us. We take security issues seriously and work together with a large community of users, developers and external security experts to make the Internet safer and more secure.</li>
</ul>
<p>Whether these principles can be fully adhered to by Google is an important question, but they do serve to calm the fears of many about what they&#8217;ll do with our data. If nothing else, they do serve to highlight the need for data privacy to be taken seriously by anyone considering building web applications.</p>
<p>If you’re interested in more of Google’s privacy stances, they’ve got an entire <a href="http://www.google.com/intl/en/privacy.html" title="Google's Privacy Centre" target="_blank" rel="nofollow">portal</a> dedicated to them.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/googles-5-privacy-principles/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimise Your URLs for Web Crawlers and Indexing</title>
		<link>http://www.simonwhatley.co.uk/optimise-your-urls-for-web-crawlers-and-indexing</link>
		<comments>http://www.simonwhatley.co.uk/optimise-your-urls-for-web-crawlers-and-indexing#comments</comments>
		<pubDate>Thu, 08 Oct 2009 11:15:05 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Canonical]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Information retrieval]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Robots exclusion standard]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[search engine optimisation]]></category>
		<category><![CDATA[search engines]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[URL redirection]]></category>
		<category><![CDATA[Web archiving]]></category>
		<category><![CDATA[web crawlers]]></category>
		<category><![CDATA[Web search engine]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[world wide web]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2011</guid>
		<description><![CDATA[Many questions about website architecture, crawling and indexing, and even ranking issues can be boiled down to one central issue: How easy is it for search engines to crawl your site?]]></description>
			<content:encoded><![CDATA[<p>Many questions about website architecture, crawling and indexing, and even ranking issues can be boiled down to one central issue: How easy is it for search engines to crawl your site?</p>
<p>The Internet is not simply a big place it is a huge place; new content is being created all the time. Google, Yahoo and Microsoft each have a finite number of resources, so when faced with the nearly-infinite quantity of content that&#8217;s available online, their various crawlers are only able to find and crawl a percentage of that content. Then, of all the content they&#8217;ve crawled, they&#8217;re only able to index a portion. Of course with the cheapness of storage, the search engines are able to index more and more content each day, but not at the pace the Web is growing.</p>
<p><abbr title="Universal Resource Locator">URL</abbr>s are like the bridges between your website and a search engine&#8217;s crawler: crawlers need to be able to find and cross those bridges (i.e., find and crawl your <abbr title="Universal Resource Locator">URL</abbr>s) in order to get to your site&#8217;s content. If your <abbr title="Universal Resource Locator">URL</abbr>s are complicated or redundant, crawlers are going to spend time tracing and retracing their steps; if your <abbr title="Universal Resource Locator">URL</abbr>s are organised and lead directly to distinct content, crawlers can spend their time accessing your content rather than crawling through empty pages, or crawling the same content over and over via different <abbr title="Universal Resource Locator">URL</abbr>s.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>So, what can you do as a website developer or owner to reduce that labyrinth of <abbr title="Universal Resource Locator">URL</abbr>s and helping crawlers find more of your content faster? Below are a few ideas:</p>
<ul>
<li><strong>Remove unnecessary query string details from the URL.</strong><br />
Parameters in the <abbr title="Universal Resource Locator">URL</abbr> that don&#8217;t change the content of the page&#8211;like session <abbr title="Identity">ID</abbr>s or list sort orders&#8211;can be removed from the <abbr title="Universal Resource Locator">URL</abbr> and put into a cookie. By putting this information in a cookie and <a href="http://en.wikipedia.org/wiki/URL_redirection#HTTP_status_codes_3xx" title="Wikipedia: URL Redirection">301 redirecting</a> to a <q>clean</q> <abbr title="Universal Resource Locator">URL</abbr>, you retain the information and reduce the number of <abbr title="Universal Resource Locator">URL</abbr>s pointing to that same content.
</li>
<li><strong>Stop infinite pagination in, for example, lists and calendars.</strong><br />
If you have a calendar with infinite past and future dates or a list with infinite pagination you have what is described as an <q>infinite crawl space</q>, which is a huge burden on crawlers. To resolve the calendar issue, you can add no-follow attributes to links to dynamically created future calendar pages. When creating pagination links, disable previous and next links when the first and last pages are reached and redirect users to an appropriate page if the query string in the <abbr title="Universal Resource Locator">URL</abbr> is <q>hacked</q> (this may be a <q>page not found</q> static page).
</li>
<li><strong>Utilise the robots.txt file to prevent actions the web crawlers can&#8217;t or shouldn&#8217;t perform.</strong><br />
Using a <a href="http://www.robotstxt.org" title="Robots.txt" target="_blank" rel="nofollow">robots.txt</a> file, you can disallow crawling of login pages, contact forms, shopping carts, and other pages whose sole functionality is something that a crawler can&#8217;t and shouldn&#8217;t perform. This lets crawlers spend more of their time crawling content that they can actually do something with.
</li>
<li><strong>Prevent duplicate content.</strong><br />
An ideal scenario for crawlers is a one-to-one link between content an a <abbr title="Universal Resource Locator">URL</abbr>. Each <abbr title="Universal Resource Locator">URL</abbr> leads to a unique bit of content and each piece of content can be accessed by a unique <abbr title="Universal Resource Locator">URL</abbr>. The closer your site can get to this scenario, the more streamlined your site will be for crawling and indexing. If your CMS makes this difficult to achieve, you can use the <a href="/canonical-urls-what-are-they-all-about">canonical tag</a> to indicate a preferred <abbr title="Universal Resource Locator">URL</abbr> for duplicate content.
</li>
</ul>
<p>More information on this topic can be found on the <a href="http://sites.google.com/site/webmasterhelpforum/en/faq--crawling--indexing---ranking#duplicate-content" title="Google Webmaster Central Blog" target="_blank" rel="nofollow">Google Webmaster Central Blog</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/optimise-your-urls-for-web-crawlers-and-indexing/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canonical URLs &#8211; What Are They All About?</title>
		<link>http://www.simonwhatley.co.uk/canonical-urls-what-are-they-all-about</link>
		<comments>http://www.simonwhatley.co.uk/canonical-urls-what-are-they-all-about#comments</comments>
		<pubDate>Wed, 07 Oct 2009 09:34:23 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Canonical]]></category>
		<category><![CDATA[Duplicate content]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[search engine optimisation]]></category>
		<category><![CDATA[Search engine optimization]]></category>
		<category><![CDATA[search engines]]></category>
		<category><![CDATA[search results]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2043</guid>
		<description><![CDATA[Carpe diem on any duplicate content worries: Google, Yahoo and Microsoft now support a format that allows you to publicly specify your preferred version of a URL. If your site has identical or vastly similar content that’s accessible through multiple URLs, this format provides you with more control over the URL returned in search results. It also helps to make sure that properties such as link popularity are consolidated to your preferred version.]]></description>
			<content:encoded><![CDATA[<p>Google announced as long ago as February, in their official <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html" title="" target="_blank" rel="nofollow ">Webmaster Central Blog</a> a new canonical <abbr title="Universal Resource Locator">URL</abbr> tag:</p>
<blockquote><p>Carpe diem on any duplicate content worries: we now support a format that allows you to publicly specify your preferred version of a URL. If your site has identical or vastly similar content that&#8217;s accessible through multiple URLs, this format provides you with more control over the URL returned in search results. It also helps to make sure that properties such as link popularity are consolidated to your preferred version.</p></blockquote>
<p>But what do they mean by <q>canonical</q>? One of the definitions of <q>canonical</q> is <q>reduced to the simplest and most significant form possible without loss of generality.</q></p>
<p>What this means is that if you have a page&#8211;let&#8217;s take an e-commerce product page&#8211;and the simplest <abbr title="Universal Resource Locator">URL</abbr> that you want it accessible by is:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.site.com/category/product.html</pre></div></div>

<p>you can add the canonical tag to that specific product. Google, Yahoo and Microsoft use this tag to tell their search engines which <abbr title="Universal Resource Locator">URL</abbr> it should have for the current page.</p>
<p>Now, let&#8217;s say that the particular software you use <strong>also</strong> allows you to access the same product using:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.site.com/company/product.html</pre></div></div>

<p>and</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.site.com/different_category/product.html</pre></div></div>

<p>Perhaps this one product is in multiple categories. With this tag in place when any of the alternate pages are loaded this tag notifies any search engine that this is really the same product as the page you defined in the canonical tag. So, you are still allowed to have the content available as generally needed (by categories, tags, or some other organisation system) and still avoid having the content duplicated and penalised.</p>
<p>To implement the canonical <abbr title="Universal Resource Locator">URL</abbr> tag in your web application, you simply need to do the following inside the <code>&lt;head&gt;</code> section of the duplicate content URLs:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;link rel=&quot;canonical&quot; href=&quot;http://www.site.com/category/product.html&quot; /&gt;</pre></div></div>

<p>As Google mention, this tag is a hint that they <q>honour strongly</q>. Google will take your preference into account, in conjunction with other signals, when calculating the most relevant page to display in search results.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/canonical-urls-what-are-they-all-about/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Ant Best Practices</title>
		<link>http://www.simonwhatley.co.uk/apache-ant-best-practices</link>
		<comments>http://www.simonwhatley.co.uk/apache-ant-best-practices#comments</comments>
		<pubDate>Mon, 10 Aug 2009 09:12:40 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Apache Ant]]></category>
		<category><![CDATA[automated build]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[build scripts]]></category>
		<category><![CDATA[immediate processing]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[local development server]]></category>
		<category><![CDATA[similar build tool]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[The Definitive Guide]]></category>
		<category><![CDATA[user acceptance testing server]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1831</guid>
		<description><![CDATA[Before Ant, building and deploying web applications required a series of scripts or manual processes, which often led to mistakes. Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects. However, that doesn’t mean it is restricted to Java projects. I use Ant increasingly for all my web development projects as it is an integral part of Eclipse, my IDE of choice. It makes building applications and releasing them across different servers far more efficient and less problematic.]]></description>
			<content:encoded><![CDATA[<p>Before Ant, building and deploying web applications required a series of scripts or manual processes, which often led to mistakes.</p>
<p>Apache <a href="http://ant.apache.org" title="Apache Ant" target="_blank" rel="nofollow">Ant</a> is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects. However, that doesn&#8217;t mean it is restricted to Java projects. I use Ant increasingly for all my web development projects as it is an integral part of <a href="http://eclipse.org" title="Eclipse" target="_blank" rel="nofollow">Eclipse</a>, my <abbr title="Integrated Development Environment">IDE</abbr> of choice. It makes building applications and releasing them across different servers far more efficient and less problematic.</p>
<p>When I start a new project, after creating the folder structure, I create the Ant build file. Ant defines the build process and must be used by every developer working on the project. All of the tips in this article assume that the Ant build file is extremely important, must be written with care, and maintained in version control and re-factored periodically, when the project dependencies change.</p>
<p>Ant uses <abbr title="eXtensible Markup Language">XML</abbr> to describe the build process and its dependencies. By default the <abbr title="eXtensible Markup Language">XML</abbr> file is named <code>build.xml</code>. This makes it really simple for you setup and edit different build processes. However, since Ant is relatively simple to set up, you need to follow a common set of best practices. Some of these best practices were inspired by mistakes made on previous projects, or ideas passed on to me by other developers.</p>
<h3>Automate absolutely everything</h3>
<p>Ant is a powerful tool. If you choose to use it, get it to do absolutely everything. Ant can integrate with your source control databases such as Subversion (<abbr title="Subversion">SVN</abbr>), run <abbr title="Structured Query Language">SQL</abbr> scripts, change file permissions, send files across <abbr title="File Transfer Protocol">FTP</abbr>, zip and un-zip files, and many more tasks besides these.</p>
<h3>If you use Ant, only use Ant</h3>
<p>Use Ant as a common baseline. Regardless of what <abbr title="Integrated Development Environment">IDE</abbr> you use to develop your applications, set up an Ant build file that <strong>all</strong> team members use. The <code>build.xml</code> file is the one true build script. Make a rule that everyone should perform a successful Ant build before code is checked into version control. This will ensure that code will always build from the same build file.</p>
<h3>Follow consistent conventions</h3>
<p>Ant expects your build file to be called <code>build.xml</code> and the build&#8217;s properties file <code>build.properties</code>. These files should also be in the root directory of your project. Other than an insane desire to change convention and confuse other team members, don&#8217;t change this convention. Another less-well-known convention is to prefix all internal commands with a hyphen (-). It has the advantage that it is not possible to invoke targets that follow this naming convention, from the command line.</p>
<p>Spend time formatting the build file. Since <abbr title="eXtensible Markup Language">XML</abbr> is quite verbose, use tabs and line breaks to make the file readable to the human eye. Ant itself doesn&#8217;t care if the file looks pretty, but you can bet that you and your team will.</p>
<p>Pick meaningful, human-readable names for targets and properties. For example <em>dir.reports</em> is better than simple <em>rpt</em>. The specific naming convention is not important, beyond being meaningful to your organisation. For example, I use the following:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">deploy.local
deploy.dev
deploy.test
deploy.live
-build
-clean
-concatenate
-minify
-prepare</pre></div></div>

<p>The <em>-concatenate</em> and <em>-minify</em> commands are specific to web projects, the later using the Yahoo compressor library to minify <abbr ttile="Cascading Stylesheets">CSS</abbr> and JavaScript files.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Provide a clean target</h3>
<p>Every build file should include a target that removes all generated files and directories, bringing everything back to its original pristine state. All files remaining after the clean should be those found in version control.</p>
<p>An example clean command could be as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;clean&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Deletes all generated files and directories&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.build}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.dist}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h3>Use build files for all stages of the development process (development, staging and production)</h3>
<p>Ant standardises your build and release cycle. Therefore use it for all stages of the development process. Use it for releasing code to your local development server, your staging or user acceptance testing server and your production server. The different deployments can obviously differ slightly based upon the needs, i.e. your production build need not include the creation of dummy data, but may include a call to source control.</p>
<h3>Make build files self-contained</h3>
<p>A build file that relies on external dependencies is one that will be difficult to configure or has the potential to cause problems. If your build depends on additional tools, put them in your source control repository. I generally include a <em>lib</em> for all dependencies in my project root. This folder includes such files as the <a href="http://developer.yahoo.com/yui/compressor/" title="Yahoo Compressor" target="_blank" rel="nofollow">Yahoo Compressor</a> or <a href="http://www.jslint.com" title="JSLint" target="_blank" rel="nofollow">JSLint</a>.</p>
<h3>Prefer a single build file</h3>
<p>It is possible to split the build up into several small build files, each of which is responsible for a small proportion of the overall build. This isn&#8217;t always the best idea! Breaking the build often makes it harder to comprehend the whole process. It is better not to over-engineer the project and keep to a single, well formatted build file.</p>
<p>If your project is split into different build files, there should always be a master build file, found in the root directory of the project, even if it only delegates actual work to subordinate builds.</p>
<h3>Put the build.xml file in the project&#8217;s root directory</h3>
<p>The Ant build file can reside anywhere in the project tree, but conceptually it makes sense to put the file in the project root. This keeps things clean, simple and somewhat obvious to new members to the project. Having a build file in the top-level directory also makes it conceptually easy to see how relative paths point to different directories in the project tree.</p>
<p>When the <code>build.xml</code> file is in the top-level directory, you can compile code from the command line without the need to change the working directory.</p>
<h3>Modularise your project</h3>
<p>Arrange your project into coherent self-contain modules.</p>
<p>The following shows how I typically arrange my project files.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">[root directory]
	/docs
	/lib
	/src
build.properties
build.xml
task.properties</pre></div></div>

<p> The <em>docs</em> folder contains project documentation, the <em>lib</em> folder contains libraries specific to the project and required by Ant (generally this is a link to repository containing a number of utility JAR files, such as those for <abbr title="Subversion">SVN</abbr> and <abbr title="File Transfer Protocol">FTP</abbr>). Finally, the <em>src</em> folder contains the actual project files.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Use version control</h3>
<p>It is important to use version control for your entire project. The build file is an important artefact that needs to be versioned along with the source code of the project. When you tag a build for release, the build file should also be included. If you then need to roll back to a previous release, you will be able to build the code based upon the build file used for that particular release (after all, build files develop along with changes to the source code).</p>
<p>Third-party <abbr title="Java Archive">JAR</abbr> and executable files should also be maintained in your local version control. This makes it possible to recreate previous releases, after all third-party libraries are likely to develop and change as frequently as your own code. If you want or need to take advantage of these changes, it is necessary to version control the older versions.</p>
<p>Avoid including build output in version control. Provided that you use version control correctly, you will be able to recreate these files at a later date.</p>
<h3>Include comments in the build file (self-documenting)</h3>
<p>Make the build file self-documenting. Adding target descriptions is one way to achieve this. For example:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;clean&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Deletes all generated files and directories&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>Internal targets should not include description attributes. Internal targets may include targets that perform immediate processing, such as file concatenation or minifying.</p>
<p>Another way to include help in the build file is the <code>echo</code> tag. You can put any amount of comment between these tags and the information is printed to screen. For example:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;clean&quot;</span> <span style="color: #000066;">description</span>=<span style="color: #ff0000;">&quot;Deletes all generated files and directories&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Cleaning project...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Deleting build directory...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.build}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Deleting dist directory...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/echo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${dir.dist}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h3>Summary</h3>
<p>By using Ant and creating and maintaining build scripts for a project, the reliance on ad-hoc manual procedures for compiling and creating websites is removed. Using a defined process with Ant, or similar build tool, removes errors across the entire project, whilst allowing teams to develop code more efficiently.</p>
<h3>References</h3>
<p>Holzner, Steve (2005). Ant: The Definitive Guide, 2nd Edition, O&#8217;Reilly, ISBN 978-0-596-00609-9.</p>
<p>Apache Ant &#8211; <a href="http://ant.apache.org" title="Apache Ant" target="_blank" rel="nofollow">http://ant.apache.org</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/apache-ant-best-practices/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Work Philosophy</title>
		<link>http://www.simonwhatley.co.uk/my-work-philosophy</link>
		<comments>http://www.simonwhatley.co.uk/my-work-philosophy#comments</comments>
		<pubDate>Thu, 05 Mar 2009 15:29:19 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Dev Opera]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Freelancing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Code]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web community]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[zen]]></category>
		<category><![CDATA[Zoho]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1833</guid>
		<description><![CDATA[Okay, so many of the points below aren’t purely my philosophy, but ideas and principles I have picked up along the way throughout my [development] career. Some relate to the UNIX philosophy, or even the Zen of Python, but wherever they’re from, they can be applied to many other domains.]]></description>
			<content:encoded><![CDATA[<p>Okay, so many of the points below aren&#8217;t purely my philosophy, but ideas and principles I have picked up along the way throughout my [development] career. Some relate to the <a href="http://en.wikipedia.org/wiki/Unix_philosophy" title="Wikipedia: UNIX Philosophy" target="_blank" rel="nofollow">UNIX philosophy</a>, or even the <a href="http://www.python.org/dev/peps/pep-0020/" title="Zen of Python" target="_blank" rel="nofollow">Zen of Python</a>, but wherever they&#8217;re from, they can be applied to many other domains.</p>
<ul>
<li><strong>Don&#8217;t reinvent the wheel unless you really have to</strong>. Borrow code and ideas from elsewhere whenever it makes sense. The web community it great at sharing, just look at the various JavaScript libraries, the huge quantities of <abbr title="Application Programming Interface">API</abbr>s or indeed the major players&#8217; developer areas: <a href="http://code.google.com" title="Google Code" target="_blank" rel="nofollow">Google Code</a>, <a href="http://developer.yahoo.com" title="Yahoo! Developer Network" target="_blank" rel="nofollow">Yahoo! Developer Network</a>, <a href="https://developer.mozilla.org" title="Mozilla Developer Center" target="_blank" rel="nofollow">Mozilla Developer Center</a>, <a href="http://www.adobe.com/devnet/" title="Adobe Developer Connection" target="_blank" rel="nofollow">Adobe Developer Connection</a> and <a href="http://dev.opera.com" title="Dev Opera" target="_blank" rel="nofollow">Dev Opera</a> to name five I regularly refer to.</li>
<li><q><strong>Things should be as simple as possible, but no simpler</strong></q> (Einstein). This idea is really born out of and emphasised by <a href="http://gettingreal.37signals.com/" title="37Signals' Getting Real" target="_blank" rel="nofollow">37Signals&#8217; Getting Real book</a>. Commonly, 90% of people using an application only use 10% of it&#8217;s functionality. The key therefore is to find what people use most often and only build that functionality. If there is a requirement to add more, then sobeit. This can also apply to the code-level, the essence here being a balance between over- and under-engineering something.</li>
<li><strong>Do one thing well</strong> (The <q>UNIX philosophy</q>). It is better to do one thing well, than several second-rate. This could be at the code level &#8212; think encapsulation, coupling and cohesion &#8212; or indeed at the application level &#8212; you&#8217;re never going to beat Microsoft Word, but Google and Zoho have developed compelling alternatives, but with far less features. </li>
<li><strong>Don&#8217;t fret too much about performance</strong> &#8212; understand how to write efficient code and plan to optimise later if or when needed.</li>
<li><strong>Don&#8217;t try for perfection</strong> because <q>good enough</q> is often just that. This of course is a matter for conjecture. If I were working on a personal project, I may be more stringent on perfection than say, for a client&#8217;s application. This doesn&#8217;t mean to say the client&#8217;s application would be any worse, but rather it is a question of dotting-the-is and crossing-the-ts. It also depends on your perspective and what gains can be made by aiming for <q>perfection</q>.</li>
<li>(Hence) <strong>it&#8217;s okay to cut corners sometimes</strong>, only if you can do it right later. I rarely adhere to this! It makes sense to do it right the first time, since <q>bodge-jobs</q> often come back to haunt you and result in double the effort!</li>
<li><strong>Don&#8217;t fight it; go with the flow</strong>. This is somewhat clich&eacute;d, but the essence behind this is try to avoid getting stressed out. This isn&#8217;t always easy to achieve, but taking a step back from a situation and avoiding politics is important.</li>
</ul>
<p>I often strive for perfection, which isn&#8217;t an entirely clever pursuit since it is almost impossible to achieve. However, in a realm of imperfection, the principles above have helped me to achieve a modicum of decent code throughout the years. They may also resonate and provide inspiration for you.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/my-work-philosophy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

