<?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>Dan Cryer - Leeds Web Developer &#187; Search Engine Optimisation</title>
	<atom:link href="http://www.dancryer.com/tag/seo/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dancryer.com</link>
	<description>Dan Cryer - Leeds Web Developer</description>
	<lastBuildDate>Mon, 06 Sep 2010 22:05:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>NoFollow Checker For Safari 5</title>
		<link>http://www.dancryer.com/2010/06/nofollow-checker-for-safari-5</link>
		<comments>http://www.dancryer.com/2010/06/nofollow-checker-for-safari-5#comments</comments>
		<pubDate>Wed, 09 Jun 2010 09:00:28 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=531</guid>
		<description><![CDATA[A while ago, I wrote a very simple nofollow extension for Google Chrome. When enabled, it marks all no-follow links with a red highlight. Despite it&#8217;s simplicity, it has been downloaded a few thousand times! So, with the release of Safari 5 and it&#8217;s new extensions system, I thought I&#8217;d knock together something that does [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, I wrote a very simple <a href="/2009/10/chrome-nofollow-extension-updated">nofollow extension for Google Chrome</a>. When enabled, it marks all no-follow links with a red highlight. Despite it&#8217;s simplicity, it has been downloaded a few thousand times!</p>
<p>So, with the release of Safari 5 and it&#8217;s new extensions system, I thought I&#8217;d knock together something that does the same thing for Safari. It uses exactly the same CSS-based method that the Google Chrome extension does.</p>
<p>Want the extension? <a href="/files/extensions/nofollow/safari_nofollow_checker.safariextz">Download it here</a>. Let me know if you have any problems with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2010/06/nofollow-checker-for-safari-5/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Where Have I Been? Work, IPS and Car Issues, Oh My.</title>
		<link>http://www.dancryer.com/2010/06/where-have-i-been</link>
		<comments>http://www.dancryer.com/2010/06/where-have-i-been#comments</comments>
		<pubDate>Tue, 08 Jun 2010 18:41:28 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[car]]></category>
		<category><![CDATA[evans halshaw]]></category>
		<category><![CDATA[invision]]></category>
		<category><![CDATA[ip.board]]></category>
		<category><![CDATA[ipb]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[vps.net]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=528</guid>
		<description><![CDATA[I went through quite a long phase of updating this blog with almost surprising regularity, so anyone that actually reads it may have noticed I’ve been somewhat absent as of late. So where have I been? Well, the short answer is I’ve just been busy! Media Wow Since I started at Media Wow, I’ve been [...]]]></description>
			<content:encoded><![CDATA[<p>I went through quite a long phase of updating this blog with almost surprising regularity, so anyone that actually reads it may have noticed I’ve been somewhat absent as of late. So where have I been?</p>
<p>Well, the short answer is I’ve just been busy! </p>
<h3>Media Wow</h3>
<p>Since I started at Media Wow, I’ve been busy there with a few projects. The biggest of which, our first “proper” web site build, is nearing completion and we’re excited to be launching it next Thursday. It’s one we’ve built from the  ground up using WordPress, a custom design, some neat integration and we’re going to be hosting it on our in-house hosting platform we’ve set up with VPS.NET.</p>
<p>As soon as that’s done, we’re starting on eight web site builds for our biggest client. Whilst they’re certainly not sexy brands, they’re going to be fun to build, and it’s going to be nice to bring some brand consistency to the group. </p>
<h3>Invision Power Services</h3>
<p><img src="http://www.dancryer.com/wp/wp-content/uploads/2010/06/avatar.png" alt="Dan IPS Staff Avatar" title="Dan IPS Staff Avatar" width="100" height="100" class="alignright size-full wp-image-529" />Outside of that, I’ve also officially joined the Invision Power Services team, to help out on a part time basis. A lot of you will know that I’ve been working with IPS on and off for several years, with everything ranging from support, to skin design, to SEO. I’m very excited to be helping them in a more official role, and have already been pretty busy. Some of what I have been doing includes:</p>
<h4>Search Engine Optimisation</h4>
<p>I started out a few months ago helping to improve the search-friendliness of the IP.Board product, and we made some huge improvements for version 3.1, which was released last week. </p>
<p>I’m also now helping with optimising the Invision Power Services company web site. We’re aiming initially and primarily to target the term “<a href="http://www.invisionpower.com/products/board/">forum software</a>” (shameless linking, I know) and it is going remarkably well. In less than two months we’ve gone from not ranking at all in the first 150 positions to, as of the time of this post, position fifteen! We’ve even had brief stints in position five. Obviously this is a work in progress, and we’d naturally love to see ourselves hit position one.</p>
<h4>Mobile Skin</h4>
<p>Rikki did a great job designing the first iteration of the mobile skin for IP.Board 3.1. It was a vast improvement from previous light skins used for this purpose, but we decided that we wanted to target modern smart phones and give them a truly mobile experience. So Josh set to work on a native iPhone application, and I started to build upon Rikki’s mobile skin. </p>
<p>We’ve made it feel like a more native app, by replacing most of the links with touch-friendly buttons, making entire rows clickable instead of just the links within them, adding a loading indicator to give the impression it’s not simply a web page. These simple things have been very well received by regular users, and when coupled with the iPhone application, it looks and feels great. </p>
<h4>Affiliate Banners</h4>
<p>I noticed some time ago that a lot of the people in the affiliate pilot program are either using text links, or banners they have designed themselves. We’d never offered affiliates an official set of graphics to use on their sites and as a result, I felt we were missing the mark. So, I set out to create some official ones and they seem to have been very well received. </p>
<h4>Support</h4>
<p>Whilst this is not part of my role, since the release of IP.Board 3.1, I’ve even been helping out with support whenever I can. The sheer number of queries has been phenomenal, but the support team have been doing a truly amazing job at keeping up! </p>
<h3>Outside Work</h3>
<p>Guess what? My car broke again! This time, however, it needs an entirely new engine. I went through quite a bit of stress with Evans Halshaw trying to arrange for this work to be done on warranty, but thanks once more go to Ian McCandlish at Pendragon PLC for ensuring that the full cost of a new engine (£2,800~) was covered by my warranty, even if that did mean voiding the warranty going forward. </p>
<p>I also bought a red Rover 220 SDI as a temporary replacement car, which lasted me a week before an oil leak brought it to its knees. That car is now stuck at work until I’m brave enough to try and move it home, or I call the RAC to collect it. I’m going to try and sell it for spares or something, otherwise it’ll be a scrap job. It’s a bit of a shame, because the car itself is in good shape, it just seems a bit pointless trying to repair it now. </p>
<p>So, much to <a href="http://www.twitter.com/charleswarner" rel="nofollow">Charles Warner</a>’s amusement, I’m spending a huge amount of time on trains back and forth to Durham, Manchester, and today, Denbigh in Wales. I’m almost starting to enjoy it, as it gives me a chance to think about things, write blog posts, make banners, etc. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2010/06/where-have-i-been/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GWT Top Search Queries</title>
		<link>http://www.dancryer.com/2010/05/gwt-top-search-queries</link>
		<comments>http://www.dancryer.com/2010/05/gwt-top-search-queries#comments</comments>
		<pubDate>Tue, 04 May 2010 19:10:24 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[webmaster tools]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=521</guid>
		<description><![CDATA[We had an interesting conversation about Google Webmaster Tools, and it&#8217;s &#8220;top search queries&#8221; section, at work today. We&#8217;d read a lot of articles suggesting that the updated version of this page shows the overall impressions you could expect for each of the positions for keywords you rank for, but that didn&#8217;t quite sit right [...]]]></description>
			<content:encoded><![CDATA[<p>We had an interesting conversation about Google Webmaster Tools, and it&#8217;s &#8220;top search queries&#8221; section, at work today. We&#8217;d read a lot of articles suggesting that the updated version of this page shows the overall impressions you could expect for each of the positions for keywords you rank for, but that didn&#8217;t quite sit right with me. We did some digging and realised that what it actually shows is the number of impressions <em>your site</em> has had for that keyword over the given time period, in each of those positions, which makes a lot more sense.</p>
<p>When I started looking at it, I realised that my own blog site not only ranks for a lot of curious terms, but it gets a reasonable number of impressions even when it ranks poorly (page 3+, for example.) Here are a couple to demonstrate:</p>
<p><img class="aligncenter size-full wp-image-522" title="Google Webmaster Tools - Top Search Queries" src="http://www.dancryer.com/wp/wp-content/uploads/2010/05/gwt.png" alt="" width="570" height="371" /></p>
<p>1,300 impressions for my site on page 3+ for the term &#8216;blackpool tower&#8217;? What does that imply? I&#8217;d hazard a guess that it could be people seeking out a cheap rate for getting into the tower, a freebie perhaps&#8230; otherwise some people must be really desperate to read a lot about places they visit.</p>
<p>We&#8217;re hoping to use this new dataset give us a better insight into how changes to page titles and meta descriptions affect click through rate, with the ability to ensure that fluctuations in search volume are not the actual cuase. I&#8217;d be intrigued to know how other people are using this and whether they&#8217;re finding it useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2010/05/gwt-top-search-queries/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Opinions: Encouraging Comments and DoFollow Links</title>
		<link>http://www.dancryer.com/2010/02/encouraging-comments-and-dofollow-links</link>
		<comments>http://www.dancryer.com/2010/02/encouraging-comments-and-dofollow-links#comments</comments>
		<pubDate>Mon, 22 Feb 2010 22:26:06 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[blogging]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=485</guid>
		<description><![CDATA[Since I started blogging early last year, I&#8217;ve noticed that I tend to get more feedback on my posts on Twitter (and now Google Buzz) than I do on my blog itself. Comments come rarely and are far outnumbered by the number of spam ones Akismet blocks for me. Now, I don&#8217;t blog for the [...]]]></description>
			<content:encoded><![CDATA[<p>Since I started blogging early last year, I&#8217;ve noticed that I tend to get more feedback on my posts on Twitter (and now Google Buzz) than I do on my blog itself. Comments come rarely and are far outnumbered by the number of spam ones Akismet blocks for me. Now, I don&#8217;t blog for the sake of getting comments, but I&#8217;d like to encourage discussion on the blog from people who are working on similar problems or could use some help, but I&#8217;m not quite sure how.</p>
<p>One thing I&#8217;ve thought about before is turning off the &#8220;nofollow&#8221; attribute in my comments to allow people to get a link that counts for something when they post on my blog. Obviously I&#8217;d need to monitor my comments more closely, but I can only see that as being a good thing. It could also spark &#8220;shallow&#8221; commenting that is designed purely to get a link out from the blog, rather than to promote actual discussion, which is definitely not what I&#8217;m looking for.</p>
<p>What sparked this post is a video Matt Cutts just posted, here&#8217;s what he has to say about the idea:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/NQfOhncTXRU&amp;hl=en_US&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/NQfOhncTXRU&amp;hl=en_US&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I&#8217;d really appreciate some feedback on this one, what do you think about the idea? Is it a bad way to encourage commenting? Would it work? Have you done the same or done it and changed back?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2010/02/encouraging-comments-and-dofollow-links/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Book Review: MODx Web Development</title>
		<link>http://www.dancryer.com/2010/01/book-review-modx-web-development</link>
		<comments>http://www.dancryer.com/2010/01/book-review-modx-web-development#comments</comments>
		<pubDate>Mon, 18 Jan 2010 16:24:54 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[modx]]></category>
		<category><![CDATA[modx web development]]></category>
		<category><![CDATA[Search Engine Optimisation]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=284</guid>
		<description><![CDATA[I was contacted recently by Packt Publishing. They asked me to review MODx Web Development by Antano Solar John, a book they published about the popular MODx PHP framework and content management system. Having heard of but never used MODx, I felt I was in a pretty good position to review the book, so I [...]]]></description>
			<content:encoded><![CDATA[<p>I was contacted recently by Packt Publishing. They asked me to review <a rel="nofollow" href="http://www.amazon.co.uk/gp/product/1847194907?ie=UTF8&amp;tag=dancryecom-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1847194907">MODx Web Development</a> by Antano Solar John, a book they published about the popular MODx PHP framework and content management system. Having heard of but never used MODx, I felt I was in a pretty good position to review the book, so I agreed to do so.</p>
<p>However, as soon as I started to read it, I realised that I&#8217;m probably not actually the target audience for this book and thus not the best person to be asked to review it. It appears to be more of a &#8220;Getting Started with MODx&#8221; style walkthrough, as opposed to a reference book &#8211; for developers or otherwise. So whilst I have set out to give this book a fair review, I will be doing so from a developer&#8217;s perspective and this may not be representative of it&#8217;s usefulness to the average webmaster.</p>
<h3>Chapter Outline</h3>
<p><strong>Chapter 1: What is MODx? </strong> &#8211; This chapter does a relatively good job of explaining what MODx is, including definitions of what a content management system is, what a template system is, and the general architecture of a database-driven web site. There are a few misunderstandings on the part of the author that make it feel a bit patronising and it comes across in some ways as a bit of a buzzword party. These include describing use of friendly URLs as ReST &#8211; a notion that can bring out intense rage from actual ReST fans, such as <a href="http://restafarian.com/">Ben</a> &#8211; or the description of Web 2.0 as being sites in which the content is generated by the user, and the suggestion that a CMS makes creating Web 2.0 sites easily. Some content management systems can do this, but on the most part, that is not their purpose.</p>
<p>Reading the final page of this chapter as an experienced web developer does not inspire much confidence in the rest of the book, however. The author describes the administration system in MODx as being AJAX driven, and thus &#8220;really user friendly&#8221;. Now &#8211; I understand that AJAX extensions can indeed make your applications *more* user friendly, when implemented well, but this is <strong>not</strong> as a result of the technology itself, but of the usability skills of the developer that implemented it. Secondly, the author suggests that MODx is search friendly, and provides <strong>everything</strong> you need to get your site listed in Google. Leaving aside the obvious requirement for off-site optimisation for search, the content management system is generally not even what matters for on-site optimisation, it&#8217;s the templates you give it. If your templates are rubbish, there&#8217;s nothing a content management system can do to help you.</p>
<p><strong>Chapter 2: Getting Started </strong>- This chapter starts with the prerequisites for MODx installation, along with how to set up XAMPP (Windows/Linux) or MAMP (Mac) to test it on. This is a few pages I feel would have been best left as an address of an online guide, or similar, but leaving that aside, the instructions seem simple enough. There&#8217;s a small niggle with the section that doesn&#8217;t suggest the best editorial oversight on this book &#8211; which is that brand names for operating systems are not adhered to. Windows does not carry a trademark symbol, and Apple&#8217;s Mac platform is referred to as MAC throughout &#8211; Mac is a brand name, not an acronym. The same applies later in the chapter in the form of several typing mistakes. Following on from that, the instructions for installing MODx itself seem comprehensive and appear to cover most obvious questions as you go through.</p>
<p>The chapter closes with an introduction to what documentation and support is available for MODx on the internet. This is great. The section explains clearly what each resource is and what it&#8217;s useful for, along with general etiquette expected by the MODx community when using the provided resources.</p>
<p><strong>Chapter 3: MODx Basics</strong> &#8211; This chapter, as the name suggests, will teach you the basics of MODx. The first thing it taught me, however, is a bit about the author of the book &#8211; including his GMail address, del.icio.us username, and his interest in the subject of Cross Site Scripting. This goes back to my earlier mention of editorial oversight, the screen shots in this chapter were obviously all taken by the author, using his own browser, whilst browsing other sites &#8211; a bit of a no-no if you ask me. The chapter does a good job of introducing you to some of the core concepts in MODx, such as &#8220;documents&#8221; being the key element. It also provides a good top level overview of various sections of the management panel, some of the things they do, and how they should be used.</p>
<p><strong>Chapter 4: Templating </strong>- This is the first section I thought I could really get my teeth into, even if it&#8217;s not development per-se, it&#8217;s a technical subject. Unfortunately, it continues at the same slow (for me) pace that the preceding chapters started and I think the most interesting thing I learned is that MODx uses an absolutely crazy variable syntax, or should I say multiple? There&#8217;s [*#content*], [!Snippet? &amp;variable=`value`] and my personal favourite [~[*id*]~], amongst others. It strikes me that this is as a result of a poorly written template parser, but I truly hope I am wrong.</p>
<p><strong>Chapter 5: Authentication and Authorization </strong>- This section starts out by, fairly clearly, explaining what these two things are, followed by how to get started with adding a log in box to your site. It does throw in some un-necessary guides to changing your site layout from one to two columns, which confused me a little, but otherwise it starts off well. It then goes on to explain how you can restrict access to certain content and functionality to users, or groups of users on your site. Finally it covers how to allow users to register on your site, following very much the same format as the rest of the book.</p>
<p>By this point, you&#8217;d have a simple blog site that allows members to sign up and post comments, along with allowing you to allocate people to your &#8220;friends&#8221; group, which in turn will allow them to post entries on your blog.</p>
<p><strong>Chapter 6: Content Aggregation </strong> &#8211; This chapter primarily describes how to use one MODx snippet, &#8220;Ditto.&#8221; Ditto allows you to pull lists of content from other areas of the site into your pages and/or your templates, allowing you to do things like latest posts listings, or latest comments. It also goes on to introduce how to use Ditto to output RSS feeds, JSON and XML documents. It then briefly introduces the concept of extending snippets to add extra functionality without duplicating existing code.</p>
<p><strong>Chapter 7: Creating Lists </strong>- Much like the Content Aggregation chapter above, this one focusses on the use of one snippet. This time, it&#8217;s how to use the WayFinder snippet to create hierarchical lists of content on your site, for use as menus. It then discusses how to style them to better suit their job as a menu. The chapter is mostly HTML and CSS sample code, along with screenshots, and doesn&#8217;t really go into a great deal of detail.</p>
<p><strong>Chapter 8: Snippets </strong>- In a bit of an odd twist, the book begins to introduce snippets themselves here. We&#8217;ve used them several times already, but this chapter explains what they are, how they work and how you use them. It does so by explaining how to set up and configure a user-commenting snippet called Jot. Once again, this chapter is incredibly example-code heavy, which may be frustrating if you&#8217;re not reading the book to create the sample site it covers.</p>
<p>After having done this, you&#8217;ll be shown how to download and install a snippet, which again feels a bit late, but not as late as the wrap-up, which tells you how to find snippets online.</p>
<p><strong>Chapter 9: PHx </strong>- Another puzzling chapter ensues, this time discussing a feature called PHx. It&#8217;s a way of doing conditional logic in your MODx templates, something I assumed was part of the template engine by default, but apparently it is not. PHx is actually a plug-in that is not included by default. After a brief guide to installing the plugin, the reader is treated to another long and unrelated example, before being shown how to actually use the PHx syntax, which is just as amusing as the template variables were.</p>
<p><strong>Chapter 10: Simple Recipes </strong> &#8211; When I first read the title for this chapter, I assumed it was going to be a summarisation of what you&#8217;d been taught already, by means of building a simple recipes site. I was wrong. The chapter was instead a guide to installing, configuring and using a few of the author&#8217;s favourite MODx snippets. Some of them useful, one of them was entirely separate software package for running a forum (SMF) and how to integrate it.</p>
<p><strong>Chapter 11: Creating Snippets </strong>- We&#8217;ve been learning about what snippets are, and how to use them, for the majority of this book. This chapter gives us an outline of how to create them. You&#8217;re taught the obligatory &#8220;Hello World&#8221; example in detail, initially using the simplest method possible, and then later using more complex MODx-like methods. The chapter is a good guide, giving examples that are useful, as well as diagrams explaining how MODx processes snippets. From a developer&#8217;s perspective, this is actually very useful.</p>
<p>The end of the chapter gives you a brief introduction to the MODx API, and it&#8217;s database abstraction layer. As with an earlier chapter in the book, this is well written &#8211; but as a result serves to highlight some curiosities in MODx itself. Their database layer provides an intriguing method for building queries, in which you pass all of the usual elements of a query in as parameters.  It&#8217;s like a poor man&#8217;s SQL, as it doesn&#8217;t implement any of the features as well as SQL itself, but enough that it isn&#8217;t going to work properly across database platforms. Not the fault of the book, but an interesting thing to note none the less.</p>
<p><strong>Chapter 12: SEO, Deployment and Security </strong>- When I first received this book, one of the first bits I read was this chapter. It irritated me immediately. This book serves as a good guide for new web masters trying to set up their first MODx site, and that&#8217;s where it should have stopped, in my opinion. The SEO section is full of faults, inaccuracies and doesn&#8217;t go into enough detail on any one section to actually be useful. There are a few small nuggets of useful information, but to call this section SEO guidance is wrong. If I were editing this book, I&#8217;d rather have seen a list of external resources that would be useful for this topic, than a non-expert trying to cover it.</p>
<p>The deployment section is much the same, whilst it&#8217;s more factually accurate, it doesn&#8217;t cover anything in enough detail to be useful. I&#8217;d like to have seen web addresses for a selection of popular FTP clients and their documentation. The reader does not need to be confused with guides to FTP, SFTP and WebDAV.</p>
<p>Finally, the security section. This is a lot better, it gives a brief and concise primer to securing your MODx installation, which I&#8217;d imagine will help keep new web masters a little safer.</p>
<p><strong>Chapter 13: Plug-ins and Modules </strong>- This section of the book gives you a detailed guide to installing, using and eventually creating plug-ins and modules for MODx. Plugins seem to be collections of hooks (or &#8220;events&#8221; in MODx lingo) that execute at certain stages of the execution flow, and as with other development focussed areas of this book, the chapter gives you a good introduction to how to create them. You&#8217;re also given a couple of useful real world examples to get you on your way.</p>
<h3>Summary</h3>
<p>So, to the summary. All in all, as much as my review has not been amazingly positive, this is not a bad book. I&#8217;m sure it&#8217;s a great guide for a beginner web master, setting up their first MODx site or for a new MODx modification author, looking to get started. There are a number of flaws and inaccuracies along the way, but it covers most things someone wanting to get into MODx would want to find.</p>
<p>It&#8217;s definitely not a reference book, however. It&#8217;s also definitely not for professional web developers. As someone getting started, you&#8217;ll work through this book once or twice and by the time you&#8217;re done you&#8217;ll have an understanding of how to work with the system, but that&#8217;s where it&#8217;s usefulness comes to an end. For a typical web developer like myself, a reference book would be a much more useful publication, one that can be picked up and dipped into over and over again that details every part of the system with no frills or commentary.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2010/01/book-review-modx-web-development/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IP.Board SEO Improvements</title>
		<link>http://www.dancryer.com/2010/01/ip-board-seo-improvements</link>
		<comments>http://www.dancryer.com/2010/01/ip-board-seo-improvements#comments</comments>
		<pubDate>Tue, 05 Jan 2010 16:12:34 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[ip.board]]></category>
		<category><![CDATA[ipb]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=360</guid>
		<description><![CDATA[A couple of months ago, I noticed that IP.Board was starting to get a bit of a bad rap when it came to search engine optimisation. There were a lot of topics popping up on the forums asking how to improve things, and asking why IP.Board was not &#8220;ready&#8221; for SEO. I wrote a long [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of months ago, I noticed that IP.Board was starting to get a bit of a bad rap when it came to search engine optimisation. There were a lot of topics popping up on the forums asking how to improve things, and asking why IP.Board was not &#8220;ready&#8221; for SEO. I wrote a long and detailed post on the subject: <a href="http://www.dancryer.com/2009/12/ip-board-and-search-engine-optimisation-seo">IP.Board and Search Engine Optimisation (SEO)</a>.</p>
<p>However, I decided I&#8217;d also give them some advice to improve the product out of the box in a few areas I saw potential. I&#8217;ve been working with them for the past few weeks, and the results are starting to be implemented in the product. Here are a couple of the changes that are coming in IP.Board 3.1:</p>
<ul>
<li><strong>Using appropriate HTTP status codes: </strong>When you encounter an error in IP.Board, it will now default to sending a &#8220;500 Internal Server Error&#8221; status. If the error is due to missing/deleted content, you&#8217;ll get a 404 error, and if it&#8217;s due to an authorization problem, you&#8217;ll get a 403 error. This should help the search engines better understand these pages and drop things from their indexes as appropriate.</li>
</ul>
<ul>
<li><strong>Improved alt attributes on images: </strong>As you may know, the HTML standard requires that all images have an alt tag, which means that a lot of web applications are littered with alt tags such as &#8220;icon&#8221;, or &#8220;image&#8221; &#8211; which do nothing to help for accessibility or SEO. IP.Board was no different. In 3.1, however, a lot of these alt tags have been updated to use useful descriptions that either describe what they represent, or the action they may be associated with.</li>
</ul>
<ul>
<li><strong>Social networking sharing:</strong> Whilst strictly not an SEO feature, another cool addition coming in IP.Board 3.1 that will help with both search and promotion, is the addition of &#8220;Share This&#8221; buttons in topics. The buttons will allow your members to share content from your forum on social networks such as Twitter and Facebook, making it more easy to find for users and search engines alike.</li>
</ul>
<p>&#8230; And there&#8217;s more to come. I for one am delighted to see IPS taking these important steps to cover some of the details that forum vendors typically forget. For full details, see the <a rel="nofollow" href="http://community.invisionpower.com/blog/1174/entry-3809-ipb-31-search-engine-optimization/">official blog post at the IPS Community Forums</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2010/01/ip-board-seo-improvements/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Page Profiler: Update</title>
		<link>http://www.dancryer.com/2009/12/page-profiler-update</link>
		<comments>http://www.dancryer.com/2009/12/page-profiler-update#comments</comments>
		<pubDate>Wed, 09 Dec 2009 23:01:22 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[domains]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Search Engine Optimisation]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=323</guid>
		<description><![CDATA[I&#8217;ve just finished an update to the Site Profiler tool I wrote a couple of months ago. I&#8217;ve made some pretty big changes, and I think it&#8217;s a lot more useful now. I&#8217;m not sure if anyone actually uses it, but here&#8217;s what&#8217;s changed: Renamed to Page Profiler &#8211; makes more sense, as it only [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just finished an update to the <a href="/2009/10/site-profiler-domain-link-information">Site Profiler tool I wrote a couple of months ago</a>. I&#8217;ve made some pretty big changes, and I think it&#8217;s a lot more useful now. I&#8217;m not sure if anyone actually uses it, but here&#8217;s what&#8217;s changed:</p>
<ul>
<li>Renamed to <a href="/page-profiler/">Page Profiler</a> &#8211; makes more sense, as it only checks individual pages</li>
<li>Speed improved, also no longer an AJAX loaded page (result pages can also be linked to)</li>
<li>Presentation improved</li>
<li>Added data size (Plus GZIP compression checking and GZIP data size)</li>
<li>Added HTTP response header</li>
<li>Added title and meta description</li>
<li>Added internal link reporting</li>
<li>Added number of redirects encountered when loading URL</li>
<li>Added request time</li>
<li>Improved whois checking</li>
<li>Added warnings for key <a rel="nofollow" href="http://www.seomoz.org/blog/the-web-developers-seo-cheat-sheet">SEOMoz Web Developer SEO Cheat Sheet Recommendations</a>.</li>
</ul>
<p>The user agent you may see in your access logs for this tool is now:<br />
<code>Mozilla/5.0 (compatible; PageProfiler/2.0; +http://www.dancryer.com/page-profiler)</code></p>
<p>If you&#8217;re using the tool, or have any suggestions for improvements, please let me know in the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/12/page-profiler-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Real Time Search</title>
		<link>http://www.dancryer.com/2009/12/google-real-time-search</link>
		<comments>http://www.dancryer.com/2009/12/google-real-time-search#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:52:41 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[googlebot]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=320</guid>
		<description><![CDATA[Google has announced today that it&#8217;s launching real time search. Simply click the &#8220;Latest&#8221; tab in the search options menu and you&#8217;ll be presented with a live, self-updating stream of up to the second results. It appears to include Twitter, Facebook and blogs, from what I&#8217;ve seen and Google claims to be able to rank [...]]]></description>
			<content:encoded><![CDATA[<p>Google has announced today that it&#8217;s launching <em>real time</em> search. Simply click the &#8220;Latest&#8221; tab in the search options menu and you&#8217;ll be presented with a live, self-updating stream of up to the second results. It appears to include Twitter, Facebook and blogs, from what I&#8217;ve seen and Google claims to be able to rank these results quickly enough to make the real time results relevant &#8211; I suppose only time will tell! TechCrunch has <a rel="nofollow" href="http://www.techcrunch.com/2009/12/07/google-realtime/">covered the news</a> in the most detail I&#8217;ve seen so far.</p>
<p>If you want to try it out and you don&#8217;t see the &#8220;Latest&#8221; link, give <a rel="nofollow" href="http://www.google.com/search?hl=en&amp;safe=off&amp;esrch=RTSearch&amp;tbo=1&amp;tbs=rltm%3A1&amp;q=google+real+time+search&amp;aq=f&amp;oq=&amp;aqi=g3">this link</a> a try.</p>
<p>I&#8217;ve been playing around watching a few queries for a while now, and I&#8217;m wondering, can a little blog like mine pop up in the stream? If so, how quickly? This post is my test.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/12/google-real-time-search/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IP.Board and Search Engine Optimisation (SEO)</title>
		<link>http://www.dancryer.com/2009/12/ip-board-and-search-engine-optimisation-seo</link>
		<comments>http://www.dancryer.com/2009/12/ip-board-and-search-engine-optimisation-seo#comments</comments>
		<pubDate>Fri, 04 Dec 2009 21:57:27 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[bing]]></category>
		<category><![CDATA[forums]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ip.board]]></category>
		<category><![CDATA[ipb]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=301</guid>
		<description><![CDATA[Search engine optimisation for IP.Board (IPB) has been coming up a lot at the Invision Power Services forums lately. Unfortunately, as SEO is such an involved and complex subject, but also one that every web developer believes they can authoritatively discuss, a lot of misinformation is passed around in these topics and new users end up [...]]]></description>
			<content:encoded><![CDATA[<p>Search engine optimisation for IP.Board (IPB) has been coming up a lot at the <a rel="nofollow" href="http://www.invisionpower.com/#a_aid=4b025b1b2f796">Invision Power Services</a> <a rel="nofollow" href="http://community.invisionpower.com/">forums</a> lately. Unfortunately, as SEO is such an involved and complex subject, but also one that every web developer believes they can authoritatively discuss, a lot of misinformation is passed around in these topics and new users end up with a highly skewed view on what they should be doing. Whilst I&#8217;m not an SEO expert by any means, I do work for a search marketing agency, so I thought I&#8217;d write a bit of a primer for those setting up new forums, or those wishing to better promote their existing forum.</p>
<p>I&#8217;d like to start out with some key points:</p>
<ul>
<li>It&#8217;s all about the content.</li>
<li>Changing your Meta keywords and description tags alone is not SEO, merely a contributing change.</li>
<li>Friendly URLs alone are not SEO, nor are they &#8220;SEO URLs&#8221;. Even a perfect friendly URL won&#8217;t help you at all, unless you get the rest right.</li>
<li>The PageRank score you see in Google&#8217;s toolbar does not correlate with your ranking for any given keyword, so don&#8217;t worry about it.</li>
<li>Forums are great for search by their very nature, you shouldn&#8217;t need to sweat the details.</li>
</ul>
<p>I&#8217;ve split the remainder of this article into two distinct parts. &#8220;On your site&#8221;, and &#8220;elsewhere&#8221;. On your site will help you with what you can do to set up the site itself. Elsewhere will talk about what else you could or should do.</p>
<p><strong>What you should do on your site</strong></p>
<p>The great thing about forums is that they&#8217;re naturally filled with content. Infact, they&#8217;re all about the content &#8211; everything else is secondary. If you&#8217;re using your forum for any other purpose (such as primarily using it as a revenue stream, or a &#8220;social network&#8221;), you may want to think about why it is that you&#8217;re using a forum. When you set up a forum, it should be about something you (or your company) know and love, as you&#8217;ll be key to getting the initial content in place.</p>
<p>This is great, as search engines love content. Another great side effect to having a lot of content related to your chosen subject is that the search engines will begin to see you as an authority on that subject, especially as people start to link to you. Additionally, they&#8217;ll pick up all of the different keywords you and your members have included in your posts, and you may start to rank for them &#8211; so if you have a forum about farming, for example, you may start to see it appearing in searches for &#8216;cattle&#8217;, &#8216;tractor&#8217;, or &#8216;sheep shearing&#8217;, just because your members have mentioned them. Whilst it&#8217;s not a forum, my blog is a great example &#8211; I&#8217;m currently ranking very well for searches related to the X Factor and the UK&#8217;s Christmas Number One, along with the Evans Halshaw car company. I didn&#8217;t do this by worrying about URLs, link exchanges, or my PageRank &#8211; just about writing (arguably) good content.</p>
<p>Some changes you can make, however:</p>
<ul>
<li><strong>Friendly URLs</strong>: Whether you&#8217;re setting up a new forum, or you&#8217;ve upgraded your existing forum to IP.Board 3, i&#8217;d definitely recommend enabling the built in friendly URLs feature. Make sure you have all the redirection settings enabled, and use &#8220;301&#8243; (permanent) redirection, and make sure you&#8217;re using the Apache mod_rewrite option. Whilst this isn&#8217;t going to affect your rankings much, it does help users recognise what they&#8217;re going to see, and the search engines will start finding relevant keywords in your URLs.</li>
<li><strong>Skins</strong>: If you&#8217;re going to use a custom skin for IP.Board (which I&#8217;d definitely recommend), make sure the HTML for it is well written. Your forum and topic titles should be in the &lt;h1&gt; tag, you should include the meta description tag that&#8217;s present in the default skin. If you want to take it a step further, you or your designer could look at making sure that the forum content (The topic you&#8217;re viewing, the forum listing, etc.) appears above the header and navigation in the markup &#8211; this ensures that it&#8217;s the first thing search engines find in your page, and can be achieved with some simple CSS changes.</li>
<li><strong>Sitemap</strong>: Get yourself a <a rel="nofollow" href="http://community.invisionpower.com/index.php?app=core&amp;module=search&amp;do=quick_search&amp;search_filter_app[downloads]=1&amp;search_term=sitemap">sitemap plugin</a>. There are a bunch of them available, some likely much better than others. This will generate an XML file that you can submit to search engines to help them to crawl your content more easily.</li>
<li><strong>Robots.txt</strong>: IP.Board ships with a simple robots file, named robotstxt.txt. As soon as you upload the board, rename this to robots.txt and it&#8217;ll help to exclude some pages on the forums that search engine spiders should not index. This includes things such as your admin directory, cache directory, user control panel and redirect pages.</li>
<li><strong>Categorisation</strong>: Whilst this is arguably not SEO, make sure that you have only the number of forums that you require, don&#8217;t create categories and forums and sub-forums for every potential discussion grouping. Strong categorisation of content will make your user&#8217;s lives easier, and will, in the long run, help the search engines to understand the structure your site better. It&#8217;ll make things such as Google&#8217;s new breadcrumb trail recognition better, along with increasing potential for getting site-links generated by the engine.</li>
<li><strong>External integration: </strong>Depending on the type of content your forum will contain, consider adding &#8220;Tweet This&#8221;, &#8220;Digg This&#8221;, &#8220;Bookmark this&#8221;, type social links to the first post of every topic. This is a great way to get some attention for your content. Additionally, as long as it is appropriate, make sure you enable OpenID and Facebook connect log ins. Whilst also arguably not SEO, this does lower the barrier to entry for new users.</li>
</ul>
<p>One thing I wouldn&#8217;t recommend, however, is to use third-party &#8220;SEO&#8221; add-ons such as Minerva SEO or Community SEO, they&#8217;re really not necessary. A lot of users migrating from vBulletin see the lack of the vBSEO plugin as being a big loss when they switch to IP.Board, but realistically it isn&#8217;t. It&#8217;s rare that these users can actually give you a valid reason that vBSEO was useful or necessary for them, nor does anyone have any metrics to prove its value. IPS themselves have a very well indexed forum, and, obviously, have never used any of these. The built in functionality is more than enough, and installing these third party hacks merely prevents them from working correctly, and makes it more difficult for you to take advantage of improved features that will come in future releases.</p>
<p>To reiterate and add to my initial point. Your forum should be all about the content. That means that if you&#8217;re just starting out, <strong>you need to be posting good content, regularly</strong>. Once your site starts to become popular, you&#8217;ll be getting a lot of content from your members, but your input shouldn&#8217;t stop there. The best thing you can do to aid in good rankings, and to attract more users to your forum, is to be writing great content on a regular basis. That means if you know a lot about the subject you&#8217;re covering, you should be writing detailed articles about it. If it&#8217;s something that changes often, make sure that you&#8217;re keeping existing content up to date, and posting news about changes and related events. This content should be unique to your site, don&#8217;t just copy and paste from elsewhere. It&#8217;s fine to be inspired by outside sources, but write your own articles.</p>
<p>The final thing I&#8217;d recommend in this section is that you make sure that any advice you take is backed up by more than one person, or comes from a reputable source. There&#8217;s been advice from people who sound like they know exactly what they&#8217;re talking about, which is just plain wrong. This includes things such as removing the board name from the &lt;title&gt; tag on every page in the name of SEO, this isn&#8217;t going to help, it&#8217;s likely it could even hinder you. Unique titles are important, but having common keywords in there, especially your site name, is not going to hurt.</p>
<p><strong>What you should do elsewhere</strong></p>
<p>The previous section of my post was all about what you should do on your own site, from optimisation tips to writing great content regularly. This section will cover the key things to do elsewhere, and in a lot of ways, it&#8217;s more of the same. Arguably, if you&#8217;ve followed the key point of the last section, you&#8217;re writing great content &#8211; and that&#8217;s going naturally get people linking to you, so there&#8217;s no need for you to go on a link building / link exchange campaign.</p>
<p>However, to get your site going, one of the best things you can do is to participate on other people&#8217;s sites as well as your own. This might sound a bit odd, but bear with me. If you&#8217;ve got a link in your signature on a forum where people of similar interests can be found, you&#8217;re doing a great deal to promote your own web site, if you post quality, authoritative content on other people&#8217;s web sites. You&#8217;ll be respected by the site owners, so they won&#8217;t remove your link, and you&#8217;ll attract the interest of other members on those forums, who&#8217;ll start looking at your site too. The same advice applies to related blogs.</p>
<p>With that being said, <strong>do not spam other sites</strong>. Only post on other sites if you&#8217;ve got something worthwhile to contribute. Posting on another site merely to advertise your own is not useful, and will likely only serve to lose respect for your site &#8211; it might even get you banned from that site, or your own site banned from the search engines.</p>
<p>You might also wish to consider setting up a Twitter account and Facebook page for your forum, and make sure that you push only your best content to it. If you&#8217;ve written a great article, tweet about it &#8211; but don&#8217;t tweet every time someone posts, you&#8217;ll only be ignored. If you set up a Facebook page, make sure that members can&#8217;t post much content to it, have it so that your content is pushed to it as another method of distributing it to users and potential users.</p>
<p>With promotion set aside, a lot of off site SEO work is about statistics. You need to get yourselves accounts at all of the following, and look at the data they provide you on a regular basis:</p>
<ul>
<li><a rel="nofollow" href="http://www.google.com/webmasters/tools">Google Webmaster Tools</a> &#8211; This is Google&#8217;s outlet for telling you how your site is doing in the search engine. It&#8217;ll tell you what terms your site is appearing for and which terms are actually generating clicks. It&#8217;ll tell you if it&#8217;s struggling to index your content, and why, along with a whole host of other information. If you&#8217;re appearing for a lot of terms but not getting any click throughs, you might want to consider writing an article specifically about that topic. If you took my earlier advice of getting a sitemap plugin, submit the resulting sitemap here. It&#8217;ll help Google to index your content more efficiently, and learn about what content you consider to be worth ranking (hint: that&#8217;s not everything.)</li>
<li><a rel="nofollow" href="http://www.google.com/analytics/">Google Analytics</a> &#8211; This is another Google outlet, more specifically focussed on how users find your site, who they are and what they do when they get there. It&#8217;s truly invaluable.</li>
<li><a rel="nofollow" href="http://www.bing.com/webmaster">Bing Webmaster Central</a> &#8211; This is the Microsoft Bing equivalent to Google Webmaster Tools. It&#8217;s not as good, and not as helpful, but can still provide a useful insight into how they view your site.</li>
<li><a rel="nofollow" href="http://siteexplorer.search.yahoo.com/">Yahoo Site Explorer</a> &#8211; As above, but for Yahoo! search.</li>
</ul>
<p><strong>Summary</strong></p>
<p>All in all, I&#8217;d argue that as long as you and your users are creating great content, as a forum owner, you don&#8217;t need to worry too much about search engine optimisation. If you write great things, people will come and those with sites will link to it. If you have great content and people are linking to it, the search engines will like your forum too. This is what they&#8217;ve all been saying all along, and frankly, it&#8217;s true.</p>
<p>I hope that you&#8217;ve found this article useful. Whilst it&#8217;s not a comprehensive guide, it should get most people started. If you&#8217;ve got anything to add, or any feedback, please send me it. I&#8217;ll very gladly update this article or post follow ups with other great tips and tricks. Additionally, if you have any specific questions or would like some advice, post it below and I or someone else, will try to answer it for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/12/ip-board-and-search-engine-optimisation-seo/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Chrome NoFollow extension updated</title>
		<link>http://www.dancryer.com/2009/10/chrome-nofollow-extension-updated</link>
		<comments>http://www.dancryer.com/2009/10/chrome-nofollow-extension-updated#comments</comments>
		<pubDate>Thu, 15 Oct 2009 10:14:44 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Search Engine Optimisation]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=243</guid>
		<description><![CDATA[As a quick follow up to my nofollow marker post, I&#8217;ve put up a new version of the extension. It does exactly the same job as the old one, except without the need for any JavaScript. The new extension simply uses the following CSS: a[rel~=nofollow] { background-color: #FCC !important; border: 1px dashed #F55 !important; color: #600 [...]]]></description>
			<content:encoded><![CDATA[<p>As a quick follow up to my <a title="Google Chrome Extension: NoFollow Marker" href="http://www.dancryer.com/2009/09/google-chrome-extension-nofollow-marker">nofollow marker</a> post, I&#8217;ve put up a new version of the extension. It does exactly the same job as the old one, except without the need for any JavaScript. The new extension simply uses the following CSS:</p>
<p><code>a[rel~=nofollow]<br />
{<br />
background-color: #FCC !important;<br />
border: 1px dashed #F55 !important;<br />
color: #600 !important;<br />
}</code></p>
<p>I should really have thought of that in the first place! Want the extension? <a href="/files/extensions/nofollow/nofollow.crx">Download it here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/10/chrome-nofollow-extension-updated/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Site Profiler &#8211; Domain and Link Information Tool</title>
		<link>http://www.dancryer.com/2009/10/site-profiler-domain-link-information</link>
		<comments>http://www.dancryer.com/2009/10/site-profiler-domain-link-information#comments</comments>
		<pubDate>Fri, 09 Oct 2009 23:26:51 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[domains]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Search Engine Optimisation]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=221</guid>
		<description><![CDATA[I spent a couple of hours tonight putting together a simple web site profiling tool. It allows you to see some useful information about a page, including it&#8217;s server IP address and location, the domain name contact, and some of the outgoing links from that site. It&#8217;s worth noting that the tool crawls roughly five [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a couple of hours tonight putting together a simple <a href="/site-profiler/">web site profiling tool</a>. It allows you to see some useful information about a page, including it&#8217;s server IP address and location, the domain name contact, and some of the outgoing links from that site. </p>
<p>It&#8217;s worth noting that the tool crawls roughly five pages on the target site each time it is run, so you may notice the following user agent in server logs:</p>
<p><code>Mozilla/5.0 (compatible; SiteProfiler/1.0; +http://www.dancryer.com/site-profiler)</code></p>
<p>I thought I&#8217;d make it available on this site, so others can use it. If you like it, or you&#8217;ve got any feedback, please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/10/site-profiler-domain-link-information/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Googling for strange things</title>
		<link>http://www.dancryer.com/2009/10/googling-for-strange-things</link>
		<comments>http://www.dancryer.com/2009/10/googling-for-strange-things#comments</comments>
		<pubDate>Fri, 02 Oct 2009 11:57:47 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wade]]></category>
		<category><![CDATA[weird]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=197</guid>
		<description><![CDATA[Wade and I have been fairly actively blogging for a few weeks now, and every so often, we check analytics and webmaster tools accounts for what keywords people have used to find our sites. Finding out that he ranked number one for &#8220;anti-gravity mice&#8221; has caused Wade to go on a bit of a rampage [...]]]></description>
			<content:encoded><![CDATA[<p>Wade and I have been fairly actively blogging for a few weeks now, and every so often, we check analytics and webmaster tools accounts for what keywords people have used to find our sites. Finding out that he ranked number one for &#8220;anti-gravity mice&#8221; has caused Wade to go on a bit of a rampage to rank for the weirdest terms he can. Including, but not limited to:</p>
<ul>
<li>Anti-Gravity Mice</li>
<li>Dutch Penis</li>
<li>Penis Chandelier</li>
</ul>
<p>His next attempt is for <strong><a rel="nofollow" href="http://www.xcitestudios.com/blog/2009/10/02/swedish-sperm-banks-running-dry-due-to-lesbians/">Swedish Sperm Bank Lesbians</a></strong>, but I want to know if I can make him rank for &#8220;<strong><a href="http://www.xcitestudios.com/blog/">croatian camel herding scallywag</a></strong>&#8220;, just by linking to him. If not, I should at least pop up amongst the <a rel="nofollow" href="http://www.google.com/search?q=croatian+camel+herding+scallywag">other 303 results</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/10/googling-for-strange-things/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Chrome Extension: nofollow marker</title>
		<link>http://www.dancryer.com/2009/09/google-chrome-extension-nofollow-marker</link>
		<comments>http://www.dancryer.com/2009/09/google-chrome-extension-nofollow-marker#comments</comments>
		<pubDate>Thu, 17 Sep 2009 20:34:48 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=186</guid>
		<description><![CDATA[I was just playing about with Google Chrome&#8217;s extension system, and threw together a very simple one that highlights all nofollow links in pink, as I&#8217;d seen a few people using something similar in Firefox. It doesn&#8217;t do anything complex, the code is as follows: var elements = document.getElementsByTagName('a'); var length = elements.length - 1; [...]]]></description>
			<content:encoded><![CDATA[<p>I was just playing about with Google Chrome&#8217;s extension system, and threw together a very simple one that highlights all nofollow links in pink, as I&#8217;d seen a few people using something similar in Firefox. It doesn&#8217;t do anything complex, the code is as follows:</p>
<p><code>var elements = document.getElementsByTagName('a');<br />
var length   = elements.length - 1;</code></p>
<p><code> </code></p>
<p><code>for(var i = length; i &gt;= 0; i--)<br />
{<br />
if(elements[i].getAttribute('rel') &amp;&amp; elements[i].getAttribute('rel').indexOf('nofollow') &gt;= 0)<br />
{<br />
elements[i].className += ' nofollow_has_no_follow';<br />
}<br />
}</code></p>
<p>Google Chrome Dev Channel users can <a rel="nofollow" href="/files/extensions/nofollow/nofollow.crx">Download and Install</a> it now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/09/google-chrome-extension-nofollow-marker/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>When scaling for speed slows you down&#8230;</title>
		<link>http://www.dancryer.com/2009/09/when-scaling-for-speed-slows-you-down</link>
		<comments>http://www.dancryer.com/2009/09/when-scaling-for-speed-slows-you-down#comments</comments>
		<pubDate>Fri, 04 Sep 2009 20:05:24 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Conference 2010]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=113</guid>
		<description><![CDATA[At work, the past few days, I&#8217;ve been working on the scalability of one of our systems and, hopefully, we&#8217;re almost closing on the finishing line. For some context, the system I&#8217;m talking about is effectively a web crawler. It (all too slowly) works through a queue of URLs, downloading the pages and parsing them [...]]]></description>
			<content:encoded><![CDATA[<p>At work, the past few days, I&#8217;ve been working on the scalability of one of our systems and, hopefully, we&#8217;re almost closing on the finishing line. For some context, the system I&#8217;m talking about is effectively a web crawler. It (all too slowly) works through a queue of URLs, downloading the pages and parsing them for various information, including backlinks. As it inserts data into a MySQL database, primarily made up of innodb tables. </p>
<p>This all started on Wednesday, we&#8217;d been looking at the queue and decided that it was far too large. We&#8217;d hit 12.5M pages waiting to be checked, and were processing about 200,000 a day, tops. The initial reaction, as this is a distributed system, was to scale it horizontally. We rented six more <a href="http://manage.aff.biz/z/146/CD2815/" rel="nofollow">VPSs</a> (to add to the existing 5) and planned to run them at capacity until the queue was empty. After setting all the boxes up, we left them over night, in hope of completing 750,000 or more pages. Boy, were we wrong. On Thursday morning, we came in to discover it was running at a peak of 5,000 pages an hour (144,000 a day). We&#8217;d slowed it down, and not only that, we&#8217;d slowed everything else down too.</p>
<p>This is when the optimisation work started. We looked at the queries we were running, and noticed that an obvious bottleneck appeared to be the queue itself. Each VPS ran 15 instances of our application at any given time, and each one did a query for 250 pages to check when it was starting up, updated them as in progress, and deleting each from the queue on completion. The first change we made was to change the indexing on the table, which merely served to slow us down further. The second, more interesting change, was to change the entire table from innodb to the memory/heap table engine. This meant changing both max_heap_table_size and tmp_table_size to over 2.5GB to accomodate the 1GB table at the same time as allowing temporary tables to be created. Getting this change replicated onto our two slaves was a delight. </p>
<p>The memory table &#8220;solution&#8221; worked well after turning all of our VPSs back on, for about 10 minutes. At which point, they were up to capacity and the queue table started locking, a lot. As did all of the other tables, inexplicably. In addition to inducing panic, this highlighted to us that another table was starting to cause problems, our anchor text table. This is responsible for storing only the words that are used to link from one site to another. This table was seeing anything up to 2 million inserts an hour, and the same number of selects. After several failed attempts to remedy this, we finally settled on selecting all of the anchor texts we&#8217;d just collected, any that came back from the database were then dropped from our insert, thus only inserting those that were not present. Those inserts were done with batches of 10 per query. This cut the number of queries down significantly. Whilst this has improved the locking situation, it has, unfortunately, led to hanging selects. These selects are using potentially gigantic &#8216;IN(one, two, three)&#8217; conditions, and are taking anything from 0.01 to 120 seconds to complete.  Completely unpredictably.</p>
<p>Next priority was fixing the table locking on our queue. We&#8217;ve done this by marking all deletes from the queue as LOW_PRIORITY. In doing that, we&#8217;re allowing MySQL to queue those deletes for when no other clients are accessing the table, preventing unnecessary locking. </p>
<p>At the time of this writing, 113 instances of our application are running without significant conflicts on either of the tables we&#8217;ve optimised. However, we&#8217;re still processing just 5,000 pages an hour. I&#8217;m sure I&#8217;ll be working on this problem again on Monday, and will update here with anything we do discover. </p>
<p>So to summarise this somewhat rambley and unhelpful post a little, don&#8217;t assume that because you&#8217;ve built your system to run across multiple servers, that it can infact run across multiple servers. Ours scaled up to 4, and then the scaling started working against us. If you found it interesting, have any MySQL questions, want to offer advice, or are doing similar work yourself&#8230; drop me a comment below. I&#8217;d love to know that people are reading this!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/09/when-scaling-for-speed-slows-you-down/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Lost my Google ranking. :(</title>
		<link>http://www.dancryer.com/2009/08/lost-my-google-ranking</link>
		<comments>http://www.dancryer.com/2009/08/lost-my-google-ranking#comments</comments>
		<pubDate>Wed, 26 Aug 2009 15:02:30 +0000</pubDate>
		<dc:creator>Dan Cryer</dc:creator>
				<category><![CDATA[Search Engine Optimisation]]></category>
		<category><![CDATA[dan cryer]]></category>
		<category><![CDATA[dancryer.com]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ranking]]></category>

		<guid isPermaLink="false">http://www.dancryer.com/?p=108</guid>
		<description><![CDATA[Not sure quite what&#8217;s happened, or why, but this site has lost it&#8217;s position one ranking for &#8220;Dan Cryer&#8221;, along with it&#8217;s previous position 4-10 for &#8220;Leeds Web Developer&#8221;. The first page that now ranks for &#8220;Dan Cryer&#8221; is &#8220;my latest attempt at a blog&#8221; in position 11, with my about page right below it. [...]]]></description>
			<content:encoded><![CDATA[<p>Not sure quite what&#8217;s happened, or why, but this site has lost it&#8217;s position one ranking for &#8220;Dan Cryer&#8221;, along with it&#8217;s previous position 4-10 for &#8220;Leeds Web Developer&#8221;. The first page that now ranks for &#8220;Dan Cryer&#8221; is &#8220;my latest attempt at a blog&#8221; in position 11, with my about page right below it.</p>
<p>Naturally, I posted about this on the Google Webmaster Help forums, and the general guidance I got was that the homepage doesn&#8217;t feature my name enough. I&#8217;ve now added a short &#8220;about me&#8221; bit on the homepage, and also changed my author name in WordPress, but I can&#8217;t think what else I can do to improve it. I&#8217;m also stuck for what to do to correct the problem, I&#8217;m assuming I haven&#8217;t been penalised, as I&#8217;m not doing anything dodgy.</p>
<p>Hopefully it&#8217;ll come back, but if anyone has any ideas, I&#8217;d very much appreciate them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dancryer.com/2009/08/lost-my-google-ranking/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
