<?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>Mark W. Shead &#187; Technology</title>
	<atom:link href="http://blog.markwshead.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.markwshead.com</link>
	<description>Mark's thoughts on being Mark Shead and other random subjects</description>
	<lastBuildDate>Thu, 29 Jul 2010 03:22:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Good and Bad Programming Languages</title>
		<link>http://blog.markwshead.com/513/good-and-bad-programming-languages/</link>
		<comments>http://blog.markwshead.com/513/good-and-bad-programming-languages/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 22:33:34 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/513/good-and-bad-programming-languages/</guid>
		<description><![CDATA[Often when someone says a particular programming language is bad, they are referring more to the common practice associated with that language than the language itself. Many times they are really complaining about their own poor programming habits more than the specific language. Sometimes these habits are shared by the entire culture built around a [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Often when someone says a particular programming language is bad, they are referring more to the common practice associated with that language than the language itself. Many times they are really complaining about their own poor programming habits more than the specific language. Sometimes these habits are shared by the entire culture built around a particular language.</p>
<p>Perl is a good example of this. People complain about how difficult it is to read and then proceed to write awful unreadable code. Perl can be very readable, but its terseness makes it easy for people to write huge lines of code that do 10 or 11 different things. You can do the same thing in Java, but most people try to avoid a single line that is 500 characters long because it is a pain to scroll back and forth sideways to read the code.</p>
<p>Sometimes the lack of a particular restriant can inspire horrible code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/513/good-and-bad-programming-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advanced Link Manager Review</title>
		<link>http://blog.markwshead.com/486/advanced-link-manager-review/</link>
		<comments>http://blog.markwshead.com/486/advanced-link-manager-review/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 15:25:11 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=486</guid>
		<description><![CDATA[Content may be king, but without any links you won&#8217;t get any traffic to your site. A link manager can help you do the following: Identify websites that are currently linking to you. Keep track of reciprocal links and notify you if a link disappears. Track the link popularity of incoming links based on their Page [...]]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://blog.markwshead.com/486/advanced-link-manager-review/" title="Permanent link to Advanced Link Manager Review"><img class="post_image aligncenter" src="http://blog.markwshead.com/wp-content/uploads/2010/07/Screen-shot-2010-07-24-at-9.42.04-AM.png" width="407" height="266" alt="Post image for Advanced Link Manager Review" /></a>
</p><p>Content may be king, but without any links you won&#8217;t get any traffic to your site. A <a href="http://www.advancedlinkmanager.com/download.html">link manager</a> can help you do the following:</p>
<ul>
<li>Identify websites that are currently linking to you.</li>
<li>Keep track of reciprocal links and notify you if a link disappears.</li>
<li>Track the <a href="http://www.advancedlinkmanager.com/">link popularity</a> of incoming links based on their Page Rank and Alexa value.</li>
</ul>
<p>I have been using <a href="http://www.advancedlinkmanager.com/">Advanced Link Manage</a>r by <a href="http://www.caphyon.com/">Caphyon</a>&#8211;the same company that makes <a href="http://blog.markwshead.com/426/advanced-web-ranking-review/">Advanced Web Ranking I reviewed previously</a>.</p>
<p>ALM does a surprisingly good job of finding incoming links.  You are probably familiar with using Google and Yahoo to find links by searching for something like:</p>
<pre>link:www.example.com/page.html</pre>
<p>If you&#8217;ve ever used this, you&#8217;ll also know that the search engines don&#8217;t like to show you everything they know.  Google in particular only shows a small number of links which can make it very difficult to know exactly where you have links coming from. ALM will give you one single consolidated view of the links identified by all of the major search engines.  This gives you a much more accurate view of where your incoming existing links are. In addition, ALM will verify the links by visiting the website and making sure that there is indeed a link to your page, keep track of the follow/nofollow status of the link and note the anchor text.  This information is very useful because it helps you identify not only who is linking to you, but how they are linking and what terms are being used.</p>
<p>ALM is also very well suited for link building.  It lets you keep track of who you have sent link requests to and tracks the results.  It even has a feature to send emails requesting links&#8211;something that seems very prone to abuse, but could have legitimate uses if used sparingly. It even includes a POP3 client so you can manage incoming emails and track responses directly in the application.  This type of capability would probably be especially useful with the <a href="http://www.advancedlinkmanager.com/server.html">server version</a> where multiple people may be working on link building activities for the same domain and the same time.  The tracking and email features can help insure that multiple employees are contacting the same person over and over again.</p>
<div id="attachment_489" class="wp-caption aligncenter" style="width: 450px">
	<a href="http://blog.markwshead.com/wp-content/uploads/2010/07/reciprocal-linking.png"><img class="size-medium wp-image-489" title="Reciprocal Link Setup" src="http://blog.markwshead.com/wp-content/uploads/2010/07/reciprocal-linking-450x303.png" alt="" width="450" height="303" /></a>
	<p class="wp-caption-text">Reciprocal Link Tracking</p>
</div>
<p>The reciprocal link tracking lets you track pretty much any type of link exchange.  It goes well beyond a simple &#8220;you link to my site and I&#8217;ll link back to yours.  You can track agreements like: &#8220;I will link my site A to your site B, if you will link your site X to my site Y.&#8221;</p>
<div id="attachment_488" class="wp-caption aligncenter" style="width: 450px">
	<a href="http://blog.markwshead.com/wp-content/uploads/2010/07/link_partners.png"><img class="size-medium wp-image-488" title="Link Partners" src="http://blog.markwshead.com/wp-content/uploads/2010/07/link_partners-450x420.png" alt="Link Partners" width="450" height="420" /></a>
	<p class="wp-caption-text">Link Partners Screen</p>
</div>
<p>ALM has a feature in the enterprise version that will help you identify other sites related to your topic (link partners) where you may be able to obtain links or do a link exchange. This feature allows you to sort links by various attributes and then add them to a list of sites you are targeting in an attempt to obtain links. The other tools lets you track your efforts and results toward getting those links and the built in email client means you don&#8217;t even have to leave the tool for your entire link building process.</p>
<div id="attachment_490" class="wp-caption aligncenter" style="width: 450px">
	<a href="http://blog.markwshead.com/wp-content/uploads/2010/07/search-engine-evolution-ui-screen-shot.png"><img class="size-medium wp-image-490" title="Link Growth Over Time" src="http://blog.markwshead.com/wp-content/uploads/2010/07/search-engine-evolution-ui-screen-shot-450x368.png" alt="" width="450" height="368" /></a>
	<p class="wp-caption-text">Link Growth Over Time Graphs</p>
</div>
<p>One thing that both <a href="http://www.advancedlinkmanager.com">Advance Link Manager </a>and <a href="http://blog.markwshead.com/426/advanced-web-ranking-review/">Advanced Web Ranking</a> get right is the idea of tracking things over time. Without this feature it is very hard to tell whether you are improving or not.  The graphs showing your rank (for AWR) and your link count (for ALM) make it very easy to measure your progress&#8211;especially if you only go in and use the tools once every few days or are tracking a large number of sites and pages where it is easy to get confused.</p>
<p>So how do you use a link manager to help increase your traffic?  Obviously the link exchanges mentioned above are one way, but the tool can be very useful even for someone who isn&#8217;t interested in exchanging links.  Keep track of who links to you can help you develop relationships with people interested in your site and in you niche by identifying people who have already linked to you. Establishing a relationship&#8211;even something as simple as sending a thank you email&#8211;can help make sure your link stays active and can encourage more links in the future.</p>
<h4>People Found This When Looking For:</h4><ul><li>advanced link manager (2)</li><li>link manager reviews (1)</li></ul><!-- SEO SearchTerms Tagging 2 plugin took 0.563 ms -->]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/486/advanced-link-manager-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who Writes Wikipedia Algorithm</title>
		<link>http://blog.markwshead.com/356/who-write-wikipedia-algorithm/</link>
		<comments>http://blog.markwshead.com/356/who-write-wikipedia-algorithm/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 17:50:16 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[mediawiki. wikipedia]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=356</guid>
		<description><![CDATA[Based on the number of edits, Wikipedia appears to be written by a small number of people.  Aaron Swartz did some testing and came to the conclusion most content in the final revision comes from people who don&#8217;t even have a login. I have been looking for a way to determine the percentage each author [...]]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://blog.markwshead.com/356/who-write-wikipedia-algorithm/" title="Permanent link to Who Writes Wikipedia Algorithm"><img class="post_image alignnone" src="http://blog.markwshead.com/wp-content/uploads/2010/07/wikipedia.png" width="401" height="169" alt="Post image for Who Writes Wikipedia Algorithm" /></a>
</p><p>Based on the number of <strong>edits</strong>, Wikipedia appears to be written by a small number of people.  Aaron Swartz did some <a href="http://www.aaronsw.com/weblog/whowriteswikipedia">testing</a> and came to the conclusion most <strong>content</strong> in the final revision comes from people who don&#8217;t even have a login.</p>
<p>I have been looking for a way to determine the percentage each author contributed to a particular page in Wikipedia or MediaWiki, something I assumed would be trivial, but it turns out is much more complicate. For performance reasons, MediaWiki (the software that powers Wikipedia) saves the entire text of a new revision&#8211;not just what has changed so every edit results in a completely new copy of the page being saved.  This means to see who contributed what, requires going back through each edit and comparing it to see what was included in the final version.</p>
<p>I started looking at Aaron&#8217;s method to see if it might be useful.  What he did is briefly described <a href="http://www.aaronsw.com/weblog/whowriteswikipedia_fn2">here</a>. To the best of my understanding this is the basic process he used:</p>
<blockquote><p>Find the longest matching string between the first revision and the final revision from the Wikipedia dumpfile.  Mark that string in the final revision as having come from the author of the first revision.  Continue this with the first revision and next largest matching string until there are no more matching strings that haven&#8217;t been marked.  Move to the second revision and repeat the process.  When you finish, you should have a version where every character is marked based on where it came from.</p></blockquote>
<p>So lets look at an example:</p>
<blockquote><p>Bob Revision 1: The fox jumped the hound.<br />
Joe Revision 2: The quick brown fox jumped over the lazy hound.</p></blockquote>
<p>So our final version is:</p>
<blockquote><p>The quick brown fox jumped over the lazy hound.</p></blockquote>
<p>Now lets find the longest matching string between the final version and Bob&#8217;s initial edit.  We&#8217;ll mark Bob&#8217;s contributions in Red:</p>
<blockquote><p>The<span style="color: #ff0000;"> fox jumped</span> the hound.<br />
The quick brown <span style="color: #ff0000;">fox jumped </span>over the lazy hound.</p></blockquote>
<p>Ok so that is the longest string, now lets find the second longest:</p>
<blockquote><p>The <span style="color: #ff0000;">fox  jumped</span> the <span style="color: #ff0000;">ho<span style="color: #ff0000;">und</span></span><span style="color: #ff0000;">.</span><br />
The quick brown <span style="color: #ff0000;">fox jumped</span> over the lazy <span style="color: #ff0000;">hou<span style="color: #ff0000;">nd</span></span><span style="color: #ff0000;">.</span></p></blockquote>
<p>Repeat:</p>
<blockquote><p>The<span style="color: #ff0000;"> fox   jumped</span> <span style="color: #ff0000;">the</span> <span style="color: #ff0000;">ho<span style="color: #ff0000;">und</span></span><span style="color: #ff0000;">.</span><br />
The quick brown <span style="color: #ff0000;">fox jumped</span> over <span style="color: #ff0000;">the</span> lazy <span style="color: #ff0000;">ho<span style="color: #ff0000;">und</span></span><span style="color: #ff0000;">.</span></p></blockquote>
<p>And once more:</p>
<blockquote><p><span style="color: #ff0000;">The fox    jumped the hound.</span><br />
<span style="color: #ff0000;">The</span> quick brown <span style="color: #ff0000;">fox jumped</span> over <span style="color: #ff0000;">the</span> lazy <span style="color: #ff0000;">hound.</span></p></blockquote>
<p><span style="color: #ff0000;"><span style="color: #000000;">Going through the same process marking Joe&#8217;s revision in blue produces:</span></span></p>
<blockquote><p><span style="color: #ff0000;">The</span> <span style="color: #0000ff;">quick brown</span> <span style="color: #ff0000;">fox jumped</span> <span style="color: #0000ff;">over</span> <span style="color: #ff0000;">the</span> <span style="color: #0000ff;">lazy</span> <span style="color: #ff0000;">hound.</span></p></blockquote>
<p><span style="color: #ff0000;"><span style="color: #000000;">So we can easily see that Joe contributed 18 non space characters and Bob contributed 21 non space characters that made it into the final revision.  This is just fine if you are simply adding information.  It gets a bit more tricky when you are removing words because parts of words that have been removed will match words that have been added later. </span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Consider this scenario:</span></span></p>
<blockquote><p>Bob Revision 1: The icky quaint rowdy fox jumped over the hound.<br />
Joe Revision 2: The quick brown fox jumped over the lazy hound.</p></blockquote>
<p>Now if we do the same process we get:</p>
<blockquote><p><span style="color: #ff0000;">The</span> <span style="color: #ff0000;">qu</span><span style="color: #ff0000;">ick</span> <span style="color: #0000ff;">b</span><span style="color: #ff0000;">rown fox jumped over the</span> <span style="color: #0000ff;">laz</span><span style="color: #ff0000;">y hound.</span></p></blockquote>
<p><span style="color: #ff0000;"><span style="color: #000000;">Even though the words &#8220;icky&#8221;, &#8220;quaint&#8221; and &#8220;rowdy&#8221; added by Bob have been removed in the final version, they are still matching parts of words.  ICK of &#8220;icky&#8221; is matching the last part of quICK.  The QU of &#8220;quaint&#8221; is matching the first part of QUick, etc.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">This approach is strongly biased toward the person who started the article or contribute early on&#8211;particularly if they added a lot of text that was later removed.  What would happen if the person who originally edited the article also pasted in a copy of the alphabet several hundred times at the bottom of their text?  It would match everything added later regardless of who added it. Now people probably aren&#8217;t doing that, but if they add a bunch of text that eventually gets removed, their removed text will still match a lot of text in subsequent revisions.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Still, this approach isn&#8217;t unreasonable and probably gives fair results as long as someone isn&#8217;t specifically trying to game the system.  Aaron&#8217;s method of recursively looking for the longest string is important if you need to see who did what.  If you just need to know how many characters each person contributed (and you are fine with the level of accuracy discussed above), there is a much more efficient approach.</span></span></p>
<h3><span style="color: #ff0000;"><span style="color: #000000;">More efficient method<br />
</span></span></h3>
<p><span style="color: #ff0000;"><span style="color: #000000;">The trick is to realize that this method is going to attribute any character in the final revision to the earliest revision to introduce that character.  So if revision 1 has three a&#8217;s, three a&#8217;s of the final revision will be credited to the author of the first revision&#8211;regardless of where they occur. Because of this, there is no advantage of recursively matching the longest string unless you are trying to produce an annotated version showing who wrote what block of text. Even then  you run into the problem shown above where subsequent edits don&#8217;t get full credit. </span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">In other words, we can get the same results simply by counting the number of times each letter appears in each revision starting with the earliest revision.  That revision then receives credit for the occurrence of those letters in the final version as long as those letters haven&#8217;t been already credited to another revision.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Here is a simple example:</span></span></p>
<blockquote><p><span style="color: #ff0000;"><span style="color: #000000;">Revision 1: AB BA BAB<br />
Revision 2: AB BAB BAB BABA</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Revision 1: A = 3 B = 4<br />
Revision 2: A = 5 B = 7</span></span></p></blockquote>
<p><span style="color: #ff0000;"><span style="color: #000000;">So the first version gets credit for:<br />
A = 3 B = 4 total: 7 characters or 7/12th of the final version<br />
</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Revision 2 gets credit for:<br />
A = 2 B = 3 total: 5 characters or 5/12ths of the final version<br />
</span></span></p>
<h3>More accurate methods</h3>
<p>As shown, this approach gives an extraordinary amount of weight to early contributors&#8211;particularly if they are verbose&#8211;regardless of how much of their actual content makes its way into the final version. Its greatest strength is that it handles cases where text is moved from one position to another.  It gets this strength at the expense of giving &#8220;false credit&#8221; to people who contribute in earlier revisions.</p>
<h4>Levenshtein Distance</h4>
<p>Another possibility would be to use the Levenshtein Distance.  This basically counts the number of changes necessary to convert one string into another. I did some testing using Levenshtein Distance doing the following:</p>
<blockquote><p>Starting at the oldest revision, calculate the Levenshtein Distance from the final revision.  This number represents how many characters from the revision appear in the final.  Moving to the next oldest revision, calculate the Levenshtein distance, but discount any credit already given to previous revisions.</p></blockquote>
<p>This handles inserts, where words are inserted between existing words, but it doesn&#8217;t handle situations where words, sentences or paragraphs have their positions substituted.  If you have ABC, the revision that changes it to CBA gets credit for the contents of C and A even though all it did was move text around.</p>
<h4>History Flow and the sentenced based method</h4>
<p>To get a more accurate picture you have to use a slightly longer unit than characters.  The two simplest ways would be to use words or sentences instead of individual characters.   IBM has done some analysis using a tool called <a href="http://www.research.ibm.com/visual/projects/history_flow/index.htm">History Flow</a> that uses the sentence as the fundamental unit. As they point out, a revision that adds a comma will get credit for the entire sentence that contains the comma.</p>
<h4>Line based approach</h4>
<p>Jeff Atwood uses the &#8220;<a href="http://www.codinghorror.com/blog/2009/02/mixing-oil-and-water-authorship-in-a-wiki-world.html">line</a>&#8221; as his fundamental unit. This is a very reasonable approach if you are working with code or something where you are likely to have a lot of new lines.  However, for long paragraphs it is a bit problematic.  Either they get treated as a single line and you have the same issue with the comma as IBM&#8217;s method applied to an entire paragraph or you break the paragraph into lines at specific points and adding in content can reorder the entire paragraph making it all appear new.</p>
<h4>Word based approach</h4>
<p>A good balance might be to use individual words as the fundamental unit being compared.  This drastically reduces the &#8220;false credit&#8221; problem associated with character based matching while minimizing the &#8220;comma problem&#8221;. There is still going to be a bit of &#8220;false credit&#8221; especially for common words. If someone writes 500 words to start an article, all of their original text is deleted and new text added, they are going to get credit for a number of words like &#8220;the&#8221;, &#8220;and&#8221;, etc.  If what they wrote was one topic, they will get credit for even more because they are likely to have used a lot of keywords that will be in the final revision.  Simply pasting in the dictionary a few times would give them significant credit for text that will not appear in the final revision. Still it represents a very reasonable approach, particularly if people aren&#8217;t trying to game the system.</p>
<h3>Spam and methods</h3>
<p>In this type of analysis of a Wikipedia or a different MediaWiki, one crucial thing to consider is spam. Character based and word based analysis is going to be heavily skewed by spam entries&#8211;even if they are immediately reverted.  Sentence based approaches are probably going to be more accurate if revisions contain spam while word based methods are likely to be more accurate in closed systems where spam isn&#8217;t an issue.</p>
<h4>People Found This When Looking For:</h4><ul><li>wikipedia (1)</li><li>wikipedia algorithm (1)</li></ul><!-- SEO SearchTerms Tagging 2 plugin took 0.648 ms -->]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/356/who-write-wikipedia-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Apps Premier SLA</title>
		<link>http://blog.markwshead.com/468/google-apps-premier-sla/</link>
		<comments>http://blog.markwshead.com/468/google-apps-premier-sla/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 14:41:54 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=468</guid>
		<description><![CDATA[The paid version of Google Apps includes a service level agreement that guarantees that the applications will be up 99.9% of the time.  It works like this: If you are down for more than 0.01% of the time, they will add some days to the end of your contract&#8211;if you ask for it. The maximum [...]]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://blog.markwshead.com/468/google-apps-premier-sla/" title="Permanent link to Google Apps Premier SLA"><img class="post_image aligncenter" src="http://blog.markwshead.com/wp-content/uploads/2010/07/Screen-shot-2010-07-13-at-9.31.59-AM.png" width="344" height="208" alt="Post image for Google Apps Premier SLA" /></a>
</p><p>The paid version of Google Apps includes a service level agreement that guarantees that the applications will be up 99.9% of the time.  It works like this: If you are down for more than 0.01% of the time, they will add some days to the end of your contract&#8211;if you ask for it. The maximum amount you can get in a month is 15 days for 5% downtime.</p>
<p>5% downtime translates into about 36 hours.  So if the service is down for more than 1.5 days each month, you&#8217;ll get an extra half a month.  If the service is down for that long ever month and you ask for the credit, your contract will last 50% longer.</p>
<p>So basically if you are down for 100% of the time, you&#8217;ll only get an  extra 15 days of service.  Of course they are unlikely to be down for  that long, but it does point out that the SLA really isn&#8217;t something  that costs them anything to offer. That doesn&#8217;t mean it is a bad idea.  The guarantee helps establish expectations and so far Google seems to do a reasonable job of meeting those expectations.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/468/google-apps-premier-sla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smart Pricing</title>
		<link>http://blog.markwshead.com/455/smart-pricing/</link>
		<comments>http://blog.markwshead.com/455/smart-pricing/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 14:58:42 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=455</guid>
		<description><![CDATA[Smart pricing is the way Google keeps advertisers happy with using AdWords on properties outside of search.  Adwords lets advertisers put a small image on their conversion page in order to track which ads produce sales. Google uses this information to determine how much to pay publishers who are displaying Adsense on their site.  Basically, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Smart pricing is the way Google keeps advertisers happy with using AdWords on properties outside of search.  Adwords lets advertisers put a small image on their conversion page in order to track which ads produce sales. Google uses this information to determine how much to pay publishers who are displaying Adsense on their site.  Basically, Google will adjust the amount they pay downward for Adsense accounts that don&#8217;t convert very well to customers for the Adwords advertisers.</p>
<p>There isn&#8217;t a lot of information explaining smart pricing, but it appears to work like this.  Lets say Google normally charges an advertiser $1.00 for a click on an ad from your site and they split the money with you 50/50. (We don&#8217;t know how much this split is, so this is just a hypothetical number.) However, none of that traffic has converted to sales.  Google may then only charge the advertiser $0.50 and split it with you 75/25.  So now you may only get $0.125 from a click whereas you&#8217;d be getting $0.50 under the original scenario.</p>
<p>Originally smart pricing was said to work on an account basis.  So a bunch of low quality traffic on Site A that produces clicks and no sales can reduce the revenue you receive from Site B that has high quality traffic that produces sales. Google usually tries to do things in real time, so it wouldn&#8217;t surprise me if smart pricing has become a lot smarter.  Possible changes:</p>
<ul>
<li>Per page or per site smart pricing.</li>
<li>Smart pricing based on where the traffic comes from or other attributes.</li>
<li>More dynamic changes to smart pricing &#8212; if every Tuesday your traffic doesn&#8217;t convert to sales, maybe you&#8217;ll be paid a lot less on that particular day.</li>
</ul>
<p>If you want to get an idea of what is possible, look at the Insights section of your Google Analytics account.  It shows the types of comparisons with historical trends that are probably going to be used as part of the smart pricing calculations.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/455/smart-pricing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wildcard DNS and Rackspace Cloud</title>
		<link>http://blog.markwshead.com/442/wildcard-dns-and-rackspace-cloud/</link>
		<comments>http://blog.markwshead.com/442/wildcard-dns-and-rackspace-cloud/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 15:38:11 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=442</guid>
		<description><![CDATA[I&#8217;ve been using Rackspace Cloud Sites for awhile and so far I&#8217;ve been very happy. However, their biggest problem seems to be their inability to support wild card DNS. Basically if you want to have *.domain.com all handled by their cloud servers, you can&#8217;t do it. I think this is going to start hurting them [...]]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://blog.markwshead.com/442/wildcard-dns-and-rackspace-cloud/" title="Permanent link to Wildcard DNS and Rackspace Cloud"><img class="post_image aligncenter" src="http://blog.markwshead.com/wp-content/uploads/2010/06/Screen-shot-2010-07-02-at-12.11.19-PM.png" width="403" height="214" alt="Post image for Wildcard DNS and Rackspace Cloud" /></a>
</p><p>I&#8217;ve been using Rackspace Cloud Sites for awhile and so far I&#8217;ve been very happy.  However, their biggest problem seems to be their inability to support wild card DNS.  Basically if you want to have *.domain.com all handled by their cloud servers, you can&#8217;t do it.  I think this is going to start hurting them because WordPress 3.0 has the multi site capabilities built in.  For example, if you register a domain for your city like gotham.com,  you could let people create their own subdomain blogs automatically.  So you could have joker.gotham.com and batman.gotham.com just like Blogger and WordPress.com, but targeted to your specific audience.</p>
<p>However, to do this in Rackspace Cloud Sites, you have to manually create an alias for each new domain&#8211;you can&#8217;t let it handle things automatically. I&#8217;ve gone round and round with them asking for them to consider changing this.  At first they told me that they couldn&#8217;t because there would be no way to know which node should handle an incoming request since it could be handled by a number of different physical machines. They were saying that not only would the system not support it in its current form, but it would but there was no way to change it so it wasn&#8217;t worth even requesting that they consider adding the capability in the future.</p>
<p>I didn&#8217;t quite buy this, but it sounded like they were saying they couldn&#8217;t do this because a single IP address handles request for multiple domains.  I had heard that enabling SSL on the account (another $20 per month) will give you the ability to have a dedicated IP address for your website.  I asked if this was true and they confirmed it.  So I asked if wildcard DNS would be possible if we added the SSL capabilities.</p>
<p>They still said it was still impossible.  Keep in mind, I wasn&#8217;t asking if it would work today&#8211;I wanted to know what was possible if they were willing to make changes to their system so I could ask them to consider an enhancement to their service. I find it hard to believe that there is no possible way to make it handle wildcard DNS&#8211;even when you have a dedicated IP address.</p>
<p>WordPress can handle multi-site on their service if you don&#8217;t mind using the same domain for everyone.  So instead of joker.gotham.com you&#8217;d use gotham.com/joker.  For what I&#8217;m trying to do, I prefer the subdomain.</p>
<h4>People Found This When Looking For:</h4><ul><li>rackspace cloud dns (4)</li><li>rackspace wildcard dns (3)</li><li>rackspace cloud wildcard dns (2)</li><li>wildcard dns rackspace (2)</li><li>rackspace wildcard subdomains (2)</li><li>rackspacecloud dns (1)</li><li>wordpress multiple domains rackspace cloud (1)</li><li>rackspace wildcard ssl (1)</li><li>rackspace wildcard domain (1)</li><li>rackspace support wildcard dns (1)</li></ul><!-- SEO SearchTerms Tagging 2 plugin took 0.698 ms -->]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/442/wildcard-dns-and-rackspace-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Insights</title>
		<link>http://blog.markwshead.com/437/google-insights/</link>
		<comments>http://blog.markwshead.com/437/google-insights/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 15:15:56 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=437</guid>
		<description><![CDATA[Google Insights offers a nice way to compare two terms to see their relative search frequency.  For example, the chart below shows that black cats are much more popular than brown cats when it comes to Google searches: Notice that the interest in black cats seems to peak around Halloween each year. This is all [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.google.com/insights/search/#">Google Insights</a> offers a nice way to compare two terms to see their relative search frequency.  For example, the chart below shows that black cats are much more popular than brown cats when it comes to Google searches:<br />
<script src="http://www.gmodules.com/ig/ifr?url=http%3A%2F%2Fwww.google.com%2Fig%2Fmodules%2Fgoogle_insightsforsearch_interestovertime_searchterms.xml&amp;up__property=empty&amp;up__search_terms=brown+cats%7Cblack+cats&amp;up__location=empty&amp;up__category=0&amp;up__time_range=empty&amp;up__compare_to_category=false&amp;synd=open&amp;w=475&amp;h=350&amp;lang=en-US&amp;title=Google+Insights+for+Search&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js" type="text/javascript"></script></p>
<p>Notice that the interest in black cats seems to peak around Halloween each year. </p>
<p>This is all nice, but it is all relative.  We still have no idea how many searches are run for black cats each month.  However, if we can find a single term were we know how many searches are performed each month, we can use that to figure out the approximate search frequency of any other term.</p>
<p>Google Insights is particularly useful if you are trying to target a specific geographic area.  There are language differences that will influence what search terms people use. It is worth comparing a number of different near synonyms for a particular term to see how most people are searching in the particular geographic area you wish to target. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/437/google-insights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advanced Web Ranking Review</title>
		<link>http://blog.markwshead.com/426/advanced-web-ranking-review/</link>
		<comments>http://blog.markwshead.com/426/advanced-web-ranking-review/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 14:54:56 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=426</guid>
		<description><![CDATA[I have been looking for a good way to keep track of how my sites are ranking in Google for various terms. Specifically, I need a way to see what terms I&#8217;m ranking for and what position they hold and compare that with the past.  In particular I want a good way to keep track [...]]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://blog.markwshead.com/426/advanced-web-ranking-review/" title="Permanent link to Advanced Web Ranking Review"><img class="post_image alignnone" src="http://blog.markwshead.com/wp-content/uploads/2010/06/Screen-shot-2010-06-28-at-9.39.46-AM.png" width="409" height="270" alt="Post image for Advanced Web Ranking Review" /></a>
</p><p>I have been looking for a good way to keep track of how my sites are ranking in Google for various terms. Specifically, I need a way to see what terms I&#8217;m ranking for and what position they hold and compare that with the past.  In particular I want a good way to keep track of unexpected keywords that I&#8217;m almost ranking well for and that with a little tweaking to my content could get a better position and pull in a significantly higher percentage of traffic.</p>
<p>For example, on this site my current <a href="http://www.advancedwebranking.com/website-ranking-overview.html">website ranking</a> is at position 11 in Google for the term &#8220;<a href="http://blog.markwshead.com/387/hover-mower/">hover mower</a>&#8220;.  I wrote a brief article about hover mowers recently and position 11 puts me at the top of page two on Google.  Since most people tend to click on results in page one, I could probably get significantly more traffic to my page if I could raise my placement by 3 or 4 places.<span id="more-426"></span></p>
<p>Now, &#8220;hover mower&#8221; wasn&#8217;t something I specifically set out to try to rank for.  I just wrote the post based on something I thought was interesting and it happened to be a niche where I could rank fairly well without doing anything intentional.  However, now that I see there is potential for that search phrase, I want to see if I can optimize things to bring in more traffic for that term.  Optimization could simply mean fleshing out a brief post into a longer article or tweaking the text to include the keyword a few more times.  In this review I&#8217;m not going to get into that part of things. The purpose of this post is to look at the tool that I&#8217;m using to keep track of the rankings for a variety of different terms.</p>
<p>Keeping track of a bunch of keywords like this can be a bit daunting.  If you want to keep track of terms in multiple <a href="http://www.advancedwebranking.com/">search engine ranking</a>, it becomes even more difficult.  That is where <a href="http://www.advancedwebranking.com/">Advanced Web Ranking</a> by Caphyon comes into play. It can keep track of hundreds of keywords for one or more sites and show you how they rank in different search engines.  For me, the most important part is that as you use the tool, it keeps track of the historical ranking so you can see if you are improving things or making them worse.</p>
<p>This isn&#8217;t going to be a complete review of Advanced Web Ranking.  It is powerful software and I&#8217;m only using a small portion of what it is capable of.  Instead I&#8217;m going to focus on specifically how I use it.  I&#8217;m saying this because I don&#8217;t want you to think that it can&#8217;t do something just because I don&#8217;t mention it here.  I&#8217;m focusing on a very small subset of features that I personally use or plan to use.</p>
<p>AWR lets you create multiple projects and save them.  If you have multiple websites, you might create one for each website.  If you have multiple <a href="http://www.advancedwebranking.com/features.html">website rankings</a> that are targeting various subjects, it might be better to organize projects by subject matter. Each project consists of:</p>
<ul>
<li> list of your websites (or a single website)</li>
<li>list keywords</li>
<li>list of search engines you want to check against.</li>
</ul>
<p><a href="http://blog.markwshead.com/wp-content/uploads/2010/06/Screen-shot-2010-06-27-at-10.37.05-PM.png"><img class="aligncenter size-medium wp-image-428" title="Screen shot 2010-06-27 at 10.37.05 PM" src="http://blog.markwshead.com/wp-content/uploads/2010/06/Screen-shot-2010-06-27-at-10.37.05-PM-450x185.png" alt="" width="450" height="185" /></a></p>
<p>Most of the controls are shown in the above screen shot.  When you click on &#8220;update project&#8221;Advanced Web Ranking looks at the first 50 results from each search engine and notes if any of your websites show up for those terms.  This information is recorded and you can look at the results as a graph or table. The system does a good job of showing you what has changed and which direction it went. It looks like you can also set it to automatically email you a report showing reports and you can also schedule the updates to run automatically, but I haven&#8217;t needed those options yet.</p>
<p>The update process can take a very long time&#8211;particularly because the system has to act like a human and not simply request 100 documents from a search engine in rapid succession. The updates can be scheduled to run automatically as well so you don&#8217;t have to click the button every day.</p>
<p>One of the most attractive features of Advanced Web Ranking is the fact that it is multi-platform.  There are versions for OS X, Linux and Windows.  I started out using it on OS X, but plan to switch over to a Linux machine where I can leave it running and automatically updating without running on my laptop.</p>
<h3>Keywords</h3>
<p>The <a href="http://www.advancedwebranking.com/feats-keyword-research-tool.html">keyword research tool </a>shows and compares the keyword density of two pages.  This can be an easy way to pick the keywords you want to track and add them to the list of keywords to query. This is probably useful if you are wanting to track specific keywords in the text you&#8217;ve written.  It is also helpful to look for writing or website patterns that might be hurting your site.  For example, I&#8217;ve found that the words &#8220;read the full article&#8221; has a very high density on most of my home pages.  This doesn&#8217;t really add any value to the reader or search engines when it comes to understanding what the content of the rest of the article is about.  I can customize this text on an article by article basis.  It is a minor change, but I can use it to help tune my site for important keywords.</p>
<p>The keyword tool also showed me that some sites place far to much emphasis on the months of the year.  Every page had a list of archived posts and a significant amount of text on each page was dedicated to simply listing the months of the year.  I was able to tweak this on a few sites and am looking at ways o improve it on others.  Once again this is something I wouldn&#8217;t have noticed without the keyword tool.</p>
<p>The keyword tool from Advanced Web Ranking<a href="http://www.advancedwebranking.com/"> </a>also makes it easy to identify writing patterns that you might otherwise miss.  This may or may not help you with <a href="http://www.advancedwebranking.com/features.html">search engine ranking</a>, but it can help make your writing more engaging and less monotonous.</p>
<p>AWR has several different ways to enter the keywords you want to track. It doesn&#8217;t automatically know all the keywords in your <a href="http://www.advancedwebranking.com/">website ranking</a> for and there may be a number of keywords that are unimportant and don&#8217;t need tracked. If you want to see how you rank for everything, your best bet is probably to get the keywords from Google Analytics or whatever analytics package you are using. That will let you find the keywords that are actually sending people to your site rather than guessing.</p>
<p>I found that the best way to export the keywords from Google Analytics is to create a CSV file, open it in Excel, and then copy the column with the keywords into it and paste it into Advanced Web Ranking in the box where you can normally type the keywords in one at a time.  AWR has the ability to read CSV files, but Google Analytics usually sends a bunch other information along in the file.  By the time you clean it up, it is quicker to simply copy the data and paste it in.</p>
<h3>Top Sites</h3>
<p>&#8220;Top Sites&#8221; is a useful feature of AWR.  For any keyword and search engine combination you can see a lit of the websites that make up the top ranking.  This makes it easy to see what sites are ranking better than yours. As you can see below, my ranking for the term &#8220;hover mower&#8221; moved up to position 9 while I was writing this article.</p>
<p><img class="aligncenter size-medium wp-image-430" title="Top Sites Screen Shot" src="http://blog.markwshead.com/wp-content/uploads/2010/06/Screen-shot-2010-06-28-at-9.13.27-AM-450x277.png" alt="" width="450" height="277" />This view is particularly useful if you have multiple site that you are trying to get to rank for the same keyword. You can take some of your competition and use them as part of a keyword comparison to see how your text density and keywords compares to theirs.</p>
<h3>Proxy &amp; Datacenters</h3>
<p>As I mentioned, AWR tries to act like a human when it comes to pulling information from Google and other search engines. If you need to do updates faster than this, it is possible to use proxy servers and run multiple updates in parallel.  This means your search engine requests will come from multiple ip addresses.  You can pull down more information without getting any of the ip addresses banned or throttled by the search engines.</p>
<p>In addition, the software lets you view the results from various Google datacenters and you can also do a search as if you were in a particular geographic region to see what the local search results look like.</p>
<h3>Other features</h3>
<p>I&#8217;m primarily using AWR to look at Google placement. However, it supports over 1000 other search engines as well.</p>
<p>You can setup reports with specific triggers so you only see data that has changed in a certain way.  For example, if you are tracking 1000 keywords a report that shows everything is going to be a bit difficult to use.  However a report that is &#8220;triggered&#8221; only by changes in rankings might be very useful.  So you only see the terms where your ranking has changed.</p>
<p>AWR can use the Yahoo and Google API&#8217;s to speed up the requests.  You can enter multiple API keys to keep from hitting the daily limits.</p>
<h3>Things I&#8217;d like to see</h3>
<p>I&#8217;d really like to see a product like AWR that integrates with Google Analytics and perhaps the Google Webmaster tools.  Knowing how your site ranks for each keyword is helpful, but it would be nice to understand the value of each keyword.  For example, being able to see your rank position and how much traffic that keyword has sent you over time would be helpful. It would also be nice to see the number of searches that are performed for that keyword each month.  For example, lets say I saw that I was ranking at number 11 for &#8220;hover mower&#8221; and getting 500 hits per month.  Two months from now, if I was ranking at position 7, it would be nice to be able to immediately see how that changed the amount of traffic I was receiving for the term.  Is a position of 11 (first item on page two) better than position 10 (last item on page one)?  This can be done by cross referencing the data from AWR with Google Analytics, but it would be nice if it were all in one place.  I&#8217;m pretty sure the Google Analytics API could be used to pull this data out and into AWR or some other tool.</p>
<h3>Conclusion</h3>
<p>I&#8217;m very happy with Advanced Web Ranking.  There is a 30 day free trial, so if you have any interest at all, it is worth trying it out to see what you think.</p>
<h4>People Found This When Looking For:</h4><ul><li>how to update projects daily on advanced web rankings (2)</li><li>advanced web ranking review (1)</li></ul><!-- SEO SearchTerms Tagging 2 plugin took 2.955 ms -->]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/426/advanced-web-ranking-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Concern Over In-home 3d</title>
		<link>http://blog.markwshead.com/421/concern-home-3d/</link>
		<comments>http://blog.markwshead.com/421/concern-home-3d/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 04:04:57 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=421</guid>
		<description><![CDATA[When you watch a 3D movie there is a difference between where your eyes are focusing and the triangulation that your brain uses to perceive depth correctly. Strabismus or lazy eye is what this is called when you can&#8217;t bring both factors into alignment. Some people have trouble with this and there is concern that [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>When you watch a 3D movie there is a difference between where your eyes are focusing and the triangulation that your brain uses to perceive depth correctly. Strabismus or lazy eye is what this is called when you can&#8217;t bring both factors into alignment. Some people have trouble with this and there is concern that the new in home 3d televisions may hamper the development of these linked sense in children</p>
<blockquote><p>Anyone who learned the technique that allows them to peer into stereograms has taught themselves a temporary form of lazy-eye. Stereograms are those pictures that look like confetti but transform into three-dimensional images if you stare into them long enough. They’re popular with college kids experimenting with Escher.</p>
<p>The modern digital 3D effect using glasses makes this same effect effortless. Your eyes are invited or forced not to properly focus in order to get the full effect of eye-popping 3D.</p>
<p>via <a href="http://www.audioholics.com/news/editorials/warning-3d-video-hazardous-to-your-health/">3D Video Hazardous to Your Health</a></p></blockquote>
<p>Allegedly the 3d headset that Sega was working on years ago was shelved because of this potential problem.</p>
<p>While going to see a 3d movie once in a while probably isn&#8217;t going to ruin your eyesight, there is concern about using the technology constantly in the home&#8211;especially use by children.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/421/concern-home-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium No Display Specified</title>
		<link>http://blog.markwshead.com/392/selenium-no-display-specified/</link>
		<comments>http://blog.markwshead.com/392/selenium-no-display-specified/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 17:57:45 +0000</pubDate>
		<dc:creator>Mark Shead</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[selenium. linux]]></category>

		<guid isPermaLink="false">http://blog.markwshead.com/?p=392</guid>
		<description><![CDATA[I was using Selenium to automate some tasks beyond testing and needed to set it up to run with a cron job. A shell script calls the appropriate Maven command, but I kept getting the error: Error: no display specified The fix was to add this to the script before calling Maven: export DISPLAY=:0 Evidently [...]]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://blog.markwshead.com/392/selenium-no-display-specified/" title="Permanent link to Selenium No Display Specified"><img class="post_image alignright remove_bottom_margin" src="http://blog.markwshead.com/wp-content/uploads/2010/06/Selenium-Logo.png" width="200" height="181" alt="Post image for Selenium No Display Specified" /></a>
</p><p>I was using Selenium to automate some tasks beyond testing and needed to set it up to run with a cron job.  A shell script calls the appropriate Maven command, but I kept getting the error:<br />
<code>Error: no display specified</code></p>
<p>The fix was to add this to the script before calling Maven:<br />
<code>export DISPLAY=:0</code></p>
<p>Evidently when Selenium is started from cron, it doesn&#8217;t know what display to use.  This code tells it to use display 0 and it runs normally.</p>
<h4>People Found This When Looking For:</h4><ul><li>Error: no display specified (17)</li><li>selenium Error: no display specified (13)</li><li>selenium no display specified (5)</li><li>selenium display (3)</li><li>error no display specified selenium (3)</li><li>selenium cron jobs (2)</li><li>no display specified (2)</li><li>selenium DISPLAY Error: no display specified (1)</li><li>selenium display=:1 (1)</li><li>selenium error (1)</li></ul><!-- SEO SearchTerms Tagging 2 plugin took 0.411 ms -->]]></content:encoded>
			<wfw:commentRss>http://blog.markwshead.com/392/selenium-no-display-specified/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
