<?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>W3 EDGEFrederick Townes &#187; W3 EDGE</title> <atom:link href="http://www.w3-edge.com/weblog/author/ftownes/feed/" rel="self" type="application/rss+xml" /><link>http://www.w3-edge.com</link> <description>Innovation Redefined</description> <lastBuildDate>Tue, 07 Feb 2012 20:34:37 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/> <item><title>Security Alert for W3 Total Cache</title><link>http://www.w3-edge.com/weblog/2011/06/security-alert-w3-total-cache/</link> <comments>http://www.w3-edge.com/weblog/2011/06/security-alert-w3-total-cache/#comments</comments> <pubDate>Tue, 21 Jun 2011 22:56:16 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[security]]></category> <category><![CDATA[w3 total cache]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=1284</guid> <description><![CDATA[On the heels of a post by Matt Mullenweg, I thought it best to also make a post here to put any confusion that may ensue to rest: Suspicious activity in wordpress.org plugin was noticed and a few plugins were found to be compromised. Malicious code was added to these plugins creating backdoor access to [...]]]></description> <content:encoded><![CDATA[<p>On the heels of a post by <a href="http://wordpress.org/news/2011/06/passwords-reset/">Matt Mullenweg</a>, I  thought it best to also make a post here to put any confusion that may ensue to  rest:</p><p>Suspicious activity in wordpress.org plugin was noticed and  a <a href="http://www.addthis.com/blog/2011/06/21/security-alert-for-addthis-wordpress-plugin/">few</a> <a href="http://www.bravenewcode.com/2011/06/important-security-update-wptouch-1-9/">plugins</a> were found to be compromised. Malicious code was added to these plugins  creating backdoor access to the web server. You would only be affected if you  downloaded an update of the plugin today.</p><p>Once we were notified of the issue, we made sure that the  current stable release (0.9.2.2) was restored to normal in addition to  releasing the current development version as (0.9.2.3) allowing users to get an  upgrade notification in WordPress Admin.</p><p>Needless to say, if you haven’t already upgraded, we  encourage you to do so straight away via the WordPress Admin’s plugins page, it  just takes a minute. If you did not upgrade today, you site should be secure,  however we encourage you to update so that your site can take advantage of the  additional performance optimizations included with each release.</p><p> As many of you have learned from working with us, W3TC seeks  to improve the search engine ranking, conversion rates and user experience of  web sites for free. We welcome you to submit a bug submission form from the  support tab of the plugin to help us identify issues in new features and old  features as the performance framework is used in more and more cases.</p><p>As always, thanks for your understanding and participation.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2011/06/security-alert-w3-total-cache/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Optimize the Performance of Widgets, Buttons &amp; More</title><link>http://www.w3-edge.com/weblog/2011/02/optimize-social-media-button-performance/</link> <comments>http://www.w3-edge.com/weblog/2011/02/optimize-social-media-button-performance/#comments</comments> <pubDate>Mon, 07 Feb 2011 19:08:59 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[Usability]]></category> <category><![CDATA[User Interface / Experience]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[start render]]></category> <category><![CDATA[widgets]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=1207</guid> <description><![CDATA[Too much 3rd Party content can slow down the growth of your site, reduce engagement, conversions and more. Learn how you can still incorporate widgets, plugins etc and still have a site that does not force your visitors to leave and never return.]]></description> <content:encoded><![CDATA[<p>A <a href="http://www.stevesouders.com/blog/2010/09/30/render-first-js-second/">recent  post</a> by web site performance thought leader (and user experience expert as  a result) Steve Souders reminds me of a vital nuance that&#8217;s not even clearly  expressed in the popular Yahoo! <a href="http://developer.yahoo.com/performance/rules.html">performance rules</a>;  namely render the page first, THEN add JavaScript. One of the largest  challenges with this objective is addressing the performance of <a href="http://www.stevesouders.com/blog/2010/02/17/performance-of-3rd-party-content/">3rd  party resources</a>. With social media demanding more widgets, plugins, badges  and buttons etc available every day and a lack of awareness on the part of  developers about how to make sure that their buttons are as affective and  valuable as possible, sometimes performance concerns are overlooked.</p><p>Ask  yourself, what is the value of lost visitors due to a slow loading web site?  There are literally page views &#8220;locked&#8221; away in those slow loading pages of  your web site that can be &#8220;unlocked&#8221; with a few quick changes. Simply put, having  numerous 3rd party elements in your site can ultimately be its  downfall.</p><p>For  example, simply adding the <a href="http://developers.facebook.com/docs/plugins/">Facebook fan box</a> will dramatically  slow a page in many cases, slow down the browsers due to large memory usage and  usually lots of additional download time making the page &#8220;not ready&#8221; until  everything is downloaded. So if your goal is to optimize your site for social  media and make sure that your bounce rates are low, time on site is high, page  views per visit grows and Google has 1 less reason to rank your site poorly,  keep reading.</p><p>So,  let&#8217;s take a look at the implementations you need for your site that make sure  your visitors see your content before your widgets. From an idealistic point of  view the &#8220;start render time,&#8221; or when the browser actually starts to paint  the page, these tips will not bring this value as close to zero as I would  like, however they will definitely improve user experience. Keep in mind that  there are numerous other steps to be taken or possibilities, but we&#8217;re focusing  on reducing the negative impact of widgets characterized above. What follows is  HTML5 code for various cases:</p><p><strong><a href="http://about.digg.com/downloads/button/smart">Digg</a>:<br /> </strong>After working with Digg on some their latest  improvements, I&#8217;m happy to share an implementation that is much more  user-centric; if you have multiple buttons per page, this is especially  valuable:</p><pre class="brush: xml; title: ;">
&lt;a class=&quot;DiggThisButton DiggThisButtonMedium&quot;
        href=&quot;http://digg.com/submit?url=http://domain.com/&amp;amp;title=Post%20Title&quot;
        rel=&quot;nofollow external&quot;&gt;&lt;img src=&quot;http://widgets.digg.com/img/button/diggThisMedium.png&quot;
        width=&quot;50&quot; height=&quot;61&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
</pre><p>Then, before &lt;/body&gt; embed the following only once and multiple buttons will  still work in a single page:</p><pre class="brush: xml; title: ;">
&lt;script src=&quot;http://widgets.digg.com/buttons.js&quot;&gt;&lt;/script&gt;
</pre><p>This  implementation allows the page to render and then draws the buttons later.</p><p><strong><a href="http://www.stumbleupon.com/badges/landing/">StumbleUpon</a>:<br /> </strong>SU, has recently updated their buttons, which is  good, but what follows is not truly asynchronous and definitely not as optimal  as the Digg button above because of the multiple JS embeddings per page, at  least this implementation won&#8217;t block the page render. First position the  button with a unique ID wherever you wish:</p><pre class="brush: xml; title: ;">
&lt;div id=&quot;id&quot;&gt;&lt;/div&gt;
</pre><p>Then  for each button make sure that an embedding exists above &lt;/body&gt; so the  button will be rendered in the location:</p><pre class="brush: xml; title: ;">
&lt;script src=&quot;http://www.stumbleupon.com/hostedbadge.php?s=5&amp;r=http%3A%2F%2Fdomain.com%2F&amp;a=1&amp;d=id&quot;&gt;&lt;/script&gt;
</pre><p><strong><a href="http://www.linkedin.com/publishers">LinkedIn</a>:</strong><br /> The LinkedIn button implementation is also not perfect, but a carries a smaller  total payload than the StumbleUpon buttons when there are multiple buttons per  page:</p><pre class="brush: xml; title: ;">
&lt;script type=&quot;in/share&quot; data-counter=&quot;top&quot;&gt;&lt;/script&gt;
</pre><p>Then  at the bottom of the page a single JS embedding with power all of the buttons:</p><pre class="brush: xml; title: ;">
&lt;script src=&quot;http://platform.linkedin.com/in.js&quot;&gt;&lt;/script&gt;
&lt;/body&gt;
</pre><p><strong><a href="http://tweetmeme.com/about/retweet_button">Tweetmeme</a>:<br /> </strong>I still recommend this service because it also  generates a usable button for feeds you may syndicate, while the official  twitter button still does not. The best way to use this widget is via &lt;iframe&gt;  as iframes do not block the render of a page, too many though can still slow  down a page render or cause other anomalies in some browsers. Anyway, here&#8217;s what  that implementation looks like:</p><pre class="brush: xml; title: ;">
&lt;iframe scrolling=&quot;no&quot; height=&quot;61&quot; width=&quot;50&quot; frameborder=&quot;0&quot;
        src=&quot;http://api.tweetmeme.com/widget.js?url=http://yoururl.com/&amp;amp;style=normal&amp;amp;source=yoururl&amp;amp;service=bit.ly&quot;&gt;&lt;/iframe&gt;
</pre><p><strong><a href="http://twitter.com/goodies/tweetbutton">Twitter</a>:<br /> </strong>The official twitter button works pretty well,  it doesn&#8217;t have retweet data for everything ever shared on your site as they  only started gathering that data when they launched the button (so use  tweetmeme for those older stories if you can), but it does have a reliable  sharing experience for users, just make sure that if you use the following  implementation:</p><pre class="brush: xml; title: ;">
&lt;iframe class=&quot;twitter-share-button&quot; allowtransparency=&quot;true&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot;
        src=&quot;http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%domain.com%2F&amp;amp;via=twitterhandle&amp;amp;text=Post%20Title&amp;amp;count=vertical&quot;
        width=&quot;55&quot; height=&quot;63&quot;&gt;&lt;/iframe&gt;
</pre><p>You  can of course use a technique similar to LinkedIn or Digg, but the JS will  actually create an &lt;iframe&gt; anyway, so this approach is more performance  as it won&#8217;t block the page render and yields the same net result. For those  using <a href="http://dev.twitter.com/anywhere/begin">@anywhere</a> to add  hovercards and other twitter functionality to their sites, the technique that  apples for Diff of LinkedIn can be applied.</p><p><strong><a href="http://help.sharethis.com/">ShareThis</a>:</strong><br /> Among the most popular buttons available, their implementation has dramatically  improved as the total payload for JavaScript has been reduced, although the  script loads synchronously still unfortunately. On the positive side, the  buttons are decoupled from the scripts that embed them. The instructions  recommend adding the scripts to the &lt;head&gt;, but I recommend adding them  before &lt;/body&gt; or after &lt;body&gt; if you&#8217;re having any problems.</p><pre class="brush: xml; title: ;">
&lt;span class=&quot;st_sharethis&quot;&gt;&lt;/span&gt;
&lt;script&gt;
        stLight.options({
                publisher:'12345',
                tracking:'google',
                embeds:'true'
        });
&lt;/script&gt;
</pre><p>And  of course, activate the button after the content is displayed by placing the  script that powers the widgets on the page as shown:</p><pre class="brush: xml; title: ;">
&lt;script src=&quot;http://w.sharethis.com/button/buttons.js&quot;&gt;&lt;/script&gt;
&lt;/body&gt;
</pre><p><strong><a href="http://www.google.com/buzz/api/admin/configPostWidget">Google Buzz</a>:</strong><br /> Implementing the Buzz button like many others that are reasonably well done  allow for a single JS embed to support multiple button instances in a single  page:</p><pre class="brush: xml; title: ;">
&lt;a href=&quot;http://www.google.com/buzz/post&quot; class=&quot;google-buzz-button&quot; title=&quot;Google Buzz&quot;
        data-message=&quot;Here's Buzz!&quot; data-url=&quot;http://www.google.com/buzz&quot; data-locale=&quot;en&quot;
        data-button-style=&quot;normal-count&quot;&gt;&lt;/a&gt;
</pre><p>Although  not asynchronous the JS embed can still be placed above the &lt;/body&gt; tag  as shown:</p><pre class="brush: xml; title: ;">
&lt;script src=&quot;http://www.google.com/buzz/api/button.js&quot;&gt;&lt;/script&gt;
</pre><p><strong><a href="http://www.google.com/friendconnect/">Google  Friend Connect</a> (AdSense &amp; Gadgets):</strong><br /> It&#8217;s critical to remember that you only need to embed the Friend Connect JS  library once per page. If you&#8217;re minifying the file be sure to make sure your  cache is frequently updated as the code is changed quite often and an old cache  may cause anomalies on your site. The reason why this tip is notable is that  this implementation supports AdSense as well as all of the other Gadgets with a  single embed, so if you have multiple AdSense placements in a page, this is the  way to go:</p><pre class="brush: xml; title: ;">
&lt;body&gt;
&lt;script src=&quot;http://www.google.com/friendconnect/script/friendconnect.js&quot;&gt;&lt;/script&gt;
</pre><p>Specify where the placement will appear using a div with a unique ID:</p><pre class="brush: xml; title: ;">
&lt;div id=&quot;id&quot;&gt;&lt;/div&gt;
&lt;script&gt;
google.friendconnect.container.setParentUrl('/' /* location of rpc_relay.html and canvas.html */);
google.friendconnect.container.renderAdsGadget({
        id: 'id',
        height: 90,
        site: 'XXXXXXXXXXXXXXX','prefs':{&quot;google_ad_client&quot;:&quot;ca-pub-XXXXXXXXXXXXXXX&quot;,
                &quot;google_ad_host&quot;:&quot;pub-XXXXXXXXXXXXXXX&quot;,&quot;google_ad_slot&quot;:&quot;XXXXXXXXXX&quot;,&quot;google_ad_format&quot;:&quot;728x90&quot;}
});
&lt;/script&gt;
</pre><p>Then you can obviously embed numerous other placements or gadgets all powered by a single JS embedding. Unfortunately the JS embedding is not asynchronous, but at least it&#8217;s better than having lots of AdSense JS calls throughout a page or even additional calls for your gadgets.</p><p><strong>Facebook Share / Facebook Like / Other <a href="http://developers.facebook.com/docs/plugins/">Facebook plugins</a>:<br /> </strong>Use the XFBML implementation described on the  various plugin pages; this implementation does interfere with page render and  positioning it after the &lt;body&gt; tag means that each of the plugins used  in a given page will load at the same time as soon as the scripts have loaded.  No need for multiple scripts, which have to be downloaded repeatedly and slow  down the page render etc etc.</p><p>Add  support of the XFBML markup to the document:</p><pre class="brush: xml; title: ;">
&lt;!DOCTYPE html&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; dir=&quot;ltr&quot; lang=&quot;en-US&quot;
        xmlns:x2=&quot;http://www.w3.org/2002/06/xhtml2&quot;
        xmlns:fb=&quot;http://www.facebook.com/2008/fbml&quot;&gt;
&lt;head&gt;
</pre><p>The embed itself:</p><pre class="brush: xml; title: ;">
&lt;body&gt;
&lt;div id=&quot;fb-embed&quot;&gt;&lt;/div&gt;
&lt;script&gt;
window.fbAsyncInit = function() { FB.init({appId: 'XXXXXXXXXXXXXXX', status: true, cookie: true, xfbml: true}); };
(function() {
	var e = document.createElement('script'); e.async = true;
	e.src = document.location.protocol +
	'//connect.facebook.net/en_US/all.js';
	document.getElementById('fb-embed').appendChild(e);
	}());
&lt;/script&gt;
</pre><p>Then place the Like Box itself where you desired:</p><pre class="brush: xml; title: ;">
&lt;fb:like profile_id=&quot;XXXXXXXXXXXX&quot; href=&quot;http://domain.com/&quot; width=&quot;450&quot;&gt;&lt;/fb:like&gt;
</pre><p><strong><a href="http://www.meebo.com/websites/">Meebo  Bar</a>:<br /> </strong>Meebo has actually taken a <a href="https://bar.meebo.com/media/img/bar-performance.pdf">number of strides</a> (with the consult of Steve Souders as well) to improve the performance of their  meebo bar; still it&#8217;s something more for users to download and more JavaScript  to be run in your visitor&#8217;s browser, but I can now actually recommend this for  publishers looking to increase engagement and create new monetization opportunities  for their site. Their implementation is fully asynchronous and has a number of  optimizations compared to earlier version. The latest implementation  documentation at their site is the best reference.</p><p><strong><a href="http://www.openx.org/">OpenX</a>:<br /> </strong>The OpenX team has promised some an asynchronous  embedding code for their single page call (SPC) implementation, which basically  means that multiple ads in a given page can be requested without blocking the  page render and are requested at once instead of sequentially, however for the  moment, this is the best implementation I can recommend. It also uses iframes  to alleviate render-blocking issues as well some:</p><p>I  recommend adding this 1.3K of (<a href="http://closure-compiler.appspot.com/">closure  compiler</a> optimized) code directly in the &lt;head&gt; of the page to power  the widgets. It&#8217;s small enough that it is faster than making another HTTP  transaction (DNS lookup, connect, download, execute etc) for this purpose, the  original file is <a href="http://www.w3-edge.com/wp-content/uploads/2011/02/script.js">here</a>:</p><pre class="brush: xml; title: ;">
&lt;script&gt;var adPositions=[];function writeAdDiv(a,b,c){document.write('&lt;div class=&quot;banner&quot; id=&quot;'+a+'&quot; style=&quot;width:'+b+&quot;px; height:&quot;+c+&quot;px; line-height:&quot;+c+'px;&quot;&gt;&amp;nbsp;&lt;/div&gt;');adPositions[a]=a}function OpenX_findPosX(a){var b=0;if(a.offsetParent)for(;a.offsetParent;){b+=a.offsetLeft;a=a.offsetParent}else if(a.x)b+=a.x;return b}function OpenX_findPosY(a){var b=0;if(a.offsetParent)for(;a.offsetParent;){b+=a.offsetTop;a=a.offsetParent}else if(a.y)b+=a.y;return b} function OpenX_moveAbove(a,b){var c=0;if(a.offsetHeight)c=a.offsetHeight;else if(a.clip&amp;&amp;a.clip.height)c=a.clip.height;else if(a.style&amp;&amp;a.style.pixelHeight)c=a.style.pixelHeight;if(window.XMLHttpRequest)if(!document.all){b.style.paddingTop=&quot;0px&quot;;b.style.paddingBottom=&quot;0px&quot;}if(c&gt;0)b.style.height=c+&quot;px&quot;;a.style.left=OpenX_findPosX(b)+&quot;px&quot;;a.style.top=OpenX_findPosY(b)+&quot;px&quot;} function OpenX_positionDivs(){for(var a in adPositions){var b=a+&quot;-Hidden&quot;;if(document.getElementById){targetZoneDivID=document.getElementById(a);sourceZoneDivID=document.getElementById(b)}else if(document.all){targetZoneDivID=document.all[a];sourceZoneDivID=document.all[b]}else if(document.layers){targetZoneDivID=document.layers[a];sourceZoneDivID=document.layers[b]}targetZoneDivID!=null&amp;&amp;sourceZoneDivID!=null&amp;&amp;OpenX_moveAbove(sourceZoneDivID,targetZoneDivID)}}window.onresize=function(){OpenX_positionDivs()};&lt;/script&gt;
</pre><p>The  SPC implementation is vital in making sure that the execution and transaction  times are as small as possible. So create the slot(s) in the page as follows:</p><pre class="brush: xml; title: ;">
&lt;body&gt;
&lt;script&gt;var OA_zones = {&quot;728x90_Leaderboard&quot; : 1}&lt;/script&gt;
&lt;script src=&quot;http://openx-server.com/spcjs.php?id=1&quot;&gt;&lt;/script&gt;
</pre><p>Then place the slots in your HTML as appropriate:</p><pre class="brush: xml; title: ;">
&lt;script&gt;&lt;!--//&lt;![CDATA[
	writeAdDiv('button1', 728, 90);
//]]&gt;--&gt;&lt;/script&gt;
</pre><p>And finally, in the footer of the document, make the call to draw the ad in the appropriate slot:</p><pre class="brush: xml; title: ;">
&lt;div id=&quot;button1-Hidden&quot; style=&quot;position:absolute;left:-1000px;top:-1000px;&quot;&gt;
	&lt;script&gt;OA_show(&quot;728x90_Leaderboard&quot;);&lt;/script&gt;
&lt;/div&gt;
&lt;/body&gt;
</pre><p>Because  of the various use cases and implementations supported I do recommend OpenX,  but depending on the size and needs of your site/organization Google&#8217;s  offerings are far more robust and will eventually perform better than they do  now.</p><p><strong><a href="http://www.google.com/dfp/sb">Google  DoubleClick for Publishers</a> (formerly Google Ad manager):<br /> </strong>If your site is monetized with AdSense as well  as various types of ad formats or networks, Google DFP is a great solution,  however for now, it actually creates a negative experience for users depending  on the quantity and type of ads being displayed. Instead of embedding the  snippet in the &lt;head&gt; of the page, instead embed it after &lt;body&gt;  and make sure note that this implementation uses the single request command to  make the render more responsive:</p><pre class="brush: xml; title: ;">
&lt;body&gt;
&lt;script src=&quot;http://partner.googleadservices.com/gampad/google_service.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;GS_googleAddAdSenseService(&quot;ca-pub-XXXXXXXXXXXXXXXXX&quot;);GS_googleEnableAllServices();&lt;/script&gt;
&lt;script&gt;GA_googleAddSlot(&quot;ca-pub- XXXXXXXXXXXXXXXXX &quot;, &quot;slot-name&quot;);&lt;/script&gt;
&lt;script&gt;GA_googleUseSyncSRARendering();GA_googleFetchAds();&lt;/script&gt;
</pre><p>Then  place your ad slots as you normally would in your page template. I&#8217;m definitely  looking forward better performing implementation for Google DFP, ads are not  optional for many publishers today and ironically they are actually causing  publishers to <strong>lose</strong> money.</p><p><strong><a href="http://buysellads.com/">BuySellAds</a>:</strong><br /> If you monetize your site using BSA, and still have not switched to their <a href="http://blog.buysellads.com/2010/02/new-feature-non-blocking-asynchronous-ad-code/">asynchronous  embed code</a>, make sure you do, your users will appreciate seeing the content  they&#8217;re after without delay.</p><pre class="brush: xml; title: ;">
&lt;script&gt;
(function(){
  var bsa = document.createElement('script');
     bsa.type = 'text/javascript';
     bsa.async = true;
     bsa.src = '//s3.buysellads.com/ac/bsa.js';
  (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa);
})();
&lt;/script&gt;
</pre><p>If  you don&#8217;t already use the asynchronous snippet, make sure you do!</p><p><strong><a href="http://www.google.com/analytics/">Google  Analytics</a>:</strong><br /> Google&#8217;s asynchronous tracking code has been out for some time, I recommend it  for lots of reasons, like:</p><ul><li>More accurate stats</li><li>Non-blocking user experience</li><li>Simplified implementation and optimized  execution</li><li>Capture partial page views</li></ul><p>So this is what the implementation looks like:</p><pre class="brush: xml; title: ;">
&lt;script&gt;
var _gaq = _gaq || [];
_gaq.push(
	['_setAccount', 'UA-XXXXX-X'],
	['_setDomainName', 'domain.com'],
	['_trackPageview'] );
(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);})();
&lt;/script&gt;
&lt;/head&gt;
</pre><p><strong><a href="http://www.woopra.com/">Woopra</a>:</strong><br /> Woopra Analytics not only has a decent WordPress plugin, they also now have an  asynchronous tracking code implementation (which is not yet available in the  WordPress plugin at the time of this writing). Being that it&#8217;s actually asynchronous,  I recommend embedding it in the &lt;head&gt; of the page manually if you want to  capture partial page views:</p><pre class="brush: xml; title: ;">
&lt;script&gt;
(function(){
	var wsc=document.createElement('script');
	wsc.type='text/javascript';
	wsc.src=document.location.protocol+'//static.woopra.com/js/woopra.js';
	wsc.async=true;
	var ssc = document.getElementsByTagName('script')[0];
	ssc.parentNode.insertBefore(wsc, ssc);
})();
&lt;/script&gt;
&lt;/head&gt;
</pre><p><strong>Wrapping Up:<br /> </strong>For those buttons, widgets, services etc not  covered one of the last remaining rules of thumb (within the scope of this  discussion) is to put all scripts that are not essential for functionality of  the site (like navigation, but hopefully that&#8217;s not the case) above  &lt;/body&gt; so that they&#8217;re not directly interfering with page render. Remember  all of the CSS and JS files that exist in &lt;head&gt; must be downloaded and  executed before the page can start to render. Note: your mileage may vary, but  it&#8217;s possible to realize asynchronous performance of some scripts by adding the  attribute async to the &lt;script&gt; tag with the value true. Keep in mind  that this make break a script so test for yourself.</p><p>There  are numerous other widgets, advertising networks, statistics and analytics  services available, if you don&#8217;t see a tip above for the one you use, then  reach out to them and find out if they have any performance tips (like  asynchronous JavaScript code). Also, don&#8217;t forget that if you are able to  minify scripts to reduce HTTP transactions, which will be a huge performance  win for scripts that support it.</p><p><strong>Bonus Tips for WordPress Users:</strong><br /> <a href="http://jquery.com/">jQuery</a> is used in countless plugins and  themes. It&#8217;s often out-of-date and every new release includes bug fixes and more  importantly performance improvements. The following snippet is useful for your  header.php file, it will make sure that your site is always using the latest  version of jQuery without having to modify your theme. You&#8217;ll also benefit from  Google&#8217;s content delivery network and using a hostname other than your domain  name, meaning that the file will be pipelined (downloaded in parallel) with the  other files in the &lt;head&gt; of the page which is faster:</p><pre class="brush: php; title: ;">
&lt;?php
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js');
wp_enqueue_script('jquery');
?&gt;
</pre><p>Similarly,  if you have extensive use of <a href="http://code.google.com/p/swfobject/">swfobject</a> in your theme/plugins, a similar optimization can be applied thusly:</p><pre class="brush: php; title: ;">
&lt;?php
wp_deregister_script('swfobject');
wp_register_script('swfobject', 'http://ajax.googleapis.com/ajax/libs/swfobject/2/swfobject.js');
wp_enqueue_script('swfobject');
?&gt;
</pre><p>So  again, until jQuery reaches version 2 or swfobject reaches version 3, you will  never have to modify this code!</p><p>Have  a tip I didn&#8217;t mention? Let me know in the comments!</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2011/02/optimize-social-media-button-performance/feed/</wfw:commentRss> <slash:comments>92</slash:comments> </item> <item><title>Apple iPad, One Geeks Reaction</title><link>http://www.w3-edge.com/weblog/2010/02/apple-ipad-reaction/</link> <comments>http://www.w3-edge.com/weblog/2010/02/apple-ipad-reaction/#comments</comments> <pubDate>Mon, 08 Feb 2010 13:26:48 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[Miscellaneous]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[apple]]></category> <category><![CDATA[geek]]></category> <category><![CDATA[innovation]]></category> <category><![CDATA[ipad]]></category> <category><![CDATA[product development]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=651</guid> <description><![CDATA[Companies today have a fine line to walk. Creating products that appeal to the lowest common denominator in terms of use cases (and consumer appeal) is the fundamental foothold upon which innovation stands. Apple has mastered that approach and we need to remember that their steps are conscientiously made.]]></description> <content:encoded><![CDATA[<p>I think Mashable&#8217;s Ben Parr made some solid points about <a href="http://mashable.com/2010/01/27/ipad/" rel="external nofollow">how Apple  introduces new products</a> into the marketplace. One thing he does not address is his opinion of the specific hardware spec&#8217;s that a hardcore geek would need to  see in an <a href="http://www.apple.com/ipad/" rel="external nofollow">Apple tablet</a>. After getting  over the fact that the development ecosystem is closed, the <a href="http://mashable.com/2010/01/07/apple-touchscreen-patent/" rel="external nofollow">Apple interface</a>, <a href="http://www.apple.com/itunes/" rel="external nofollow">iTunes</a> and the <a href="http://www.apple.com/iphone/iphone-3gs/app-store.html" rel="external nofollow">App&#8217; Store</a> are  essential pieces of the overall product value, that make it worth of attention.</p><p align="center"><img src="http://www.w3-edge.com/wp-content/uploads/2010/02/hardware-01-20100127-710x439.jpg" alt="" title="iPad" width="710" height="439" class="aligncenter size-large wp-image-662" style="border:0;" /></p><p>So what did I actually want to see  in terms of hardware? Let&#8217;s take a look:</p><ol><li>Albeit less essential (relatively speaking) <strong>wireless charging</strong> would certainly be a welcome feature. I don&#8217;t  mean that recent technology that <a href="http://www.ted.com/talks/eric_giler_demos_wireless_electricity.html" rel="external nofollow">powers  devices at a distance</a>, instead I&#8217;m referring to those pads that you put  your devices on that charges them. I&#8217;d like to invest in a <a href="http://www.powermat.com/us/mats/home-and-office-mat.html" rel="external nofollow">couple of those</a> and leave them around the house to keep devices juiced.</li><li>There are some truly <a href="http://www.emolabs.com/emoproducts/index.html" rel="external nofollow">innovative products</a> out there to provide much better audio without increasing weight or complexity  in devices. The iPad has a seemingly <strong>tiny mono speaker</strong>, that I&#8217;m confident is  going to leave me disappointed, whether giving a presentation or trying to  watch some <a href="http://www.ted.com/" rel="external nofollow">TED</a> videos.</li><li><strong>No camera</strong>?  That&#8217;s a good way to keep this from being a gift for non-tech savvy relatives  and being a living room fixture that actually stood a  chance of replacing the use of the mobile and landline phones (<a href="http://www.engadget.com/2010/01/27/apple-lifts-voip-over-cellular-restrictions-in-new-iphone-sdk/" rel="external nofollow">now  the Skype can make calls over 3G</a> or even <a href="http://about.skype.com/press/2010/01/new_era_in_face_to_face.html" rel="external nofollow">cumbersome  TVs</a>). No doubt that this is coming soon, but I think this was definitely a  foolish sacrifice for the first generation. Likely to be able to make the  battery life claims that are made without having to do too much research and  development or delaying release.</li><li><strong>HDMI</strong>,  without better audio, higher quality video etc, how am I going to enjoy the  videos etc that I happen to download or want to share on my iPad? So I can&#8217;t  pop over to a friend&#8217;s house and with a single cable pour out high definition  content into the flat screen TV that hangs on their wall? This is a real use  case even in business today. Not even a thought of this scenario? For shame.</li><li>I know the &#8220;<strong>stylus</strong>&#8221;  concept is a bit passé at this point, but not when it records what you&#8217;re  hearing while you make your notes, which are subsequently converted from  handwriting into actual documents. After all, <a title="unlock iphone 5" href="http://iphonefiveinfo.com/">apple</a> called this device the iPad right? This use case takes shape in nearly every  way you can imagine, and unlike <a href="http://www.livescribe.com/smartpen/index.html" rel="external nofollow">other products</a> that  exist, the data is already stored in a device (or easily synced) in such a way  that you can manipulate it easily.</li><li>The mobile landscape is changing with the  proliferation of free WIFI in communities and businesses, but the roll out of <strong>4G</strong> is also on the horizon by many service  providers as well. Granted, some mobile companies are admittedly removing the  bottlenecks from their 3G networks, but mobile standards must be backwards  compatible, so why not give a device that cannot be upgraded more longevity?</li><li>Only 802.11n support? What about the new &#8220;hub-less&#8221;  WIFI technology that allows <a href="http://www.engadget.com/2009/04/13/bluetooth-3-0-to-use-wifi-for-high-speed-file-transfers/" rel="external nofollow">wireless  devices to directly discover and interface with each other</a> at high speed?  Not having forward thinking features makes me think that this device is  supposed to be disposed of annually, I mean upgraded. And not the healthy upgrades  like swapping out modems or memory or disk, unhealthy ones where the entire  unit is tossed or sold on eBay if I somehow find the time.</li><li><strong>Bluetooth  3</strong>, where is that? There are already devices with the standard and most of  us gadget lovers already know that we still have a pairing and performance  issues with our Bluetooth networks as it is, even with the enhanced data rate  devices that are available now.</li><li>Video is actually key here, where is the <strong>1080p</strong>? Even <a href="http://www.youtube.com/" rel="external nofollow">youtube.com</a>, <a href="http://www.vimeo.com/" rel="external nofollow">vimeo.com</a> etc supports this standard now, how can this be missing today. The Simpson&#8217;s is  finally widescreen after 20 years, let&#8217;s keep taking steps forward.</li><li>One of my use cases is using the device for  travel, this includes in a car. However, I can&#8217;t use this for turn-by-turn  directions without a decent speaker, so I guess I will have to look at the  screen in that case? A bit dangerous. I guess this thing is going to remain in its  specially designed Apple carry case anyway since there&#8217;s <strong>no active GPS</strong>. <a href="http://www.garmin.com/garmin/cms/site/us/ontheroad/" rel="external nofollow">Garmin</a> can breath a sigh of relief.</li><li>The battery life is impressive, but at the  compromise (no doubt) of <strong>multi-tasking  support</strong>. So after completing that thought, the battery life is NOT  impressive. So where is multi-tasking support? Even my RIM BlackBerry 8800  could manage that even with its rubbish interface.</li></ol><p>For completeness I should mention that the lack of Flash  support is not a concern of mine, all of the <a href="http://youtube-global.blogspot.com/2010/01/introducing-youtube-html5-supported.html" rel="external nofollow">largest  videos sites</a> are supporting <a href="http://news.cnet.com/8301-27076_3-10439048-248.html?part=rss&amp;subj=news&amp;tag=2547-1_3-0-20" rel="external nofollow">HTML 5</a> as are the browsers that I love.</p><p>If having these features means that I have to spend more, I certainly  will. Knowing that subsequent operating system updates with richen my  productivity and allow for greater innovation in the app&#8217;s that are developed.  But what I won&#8217;t do is make compromises on these points unless I can find a  reason to compromise my use cases as well: presentations, travel, business  tasks, conferences/seminars etc. All of these uses cases (and more) demand a  device of the description I&#8217;ve made. We&#8217;ll see if Apple will ever cater to such  a small sector of their market, the hardcore.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2010/02/apple-ipad-reaction/feed/</wfw:commentRss> <slash:comments>24</slash:comments> </item> <item><title>The Quest for Speed</title><link>http://www.w3-edge.com/weblog/2009/12/the-quest-for-speed/</link> <comments>http://www.w3-edge.com/weblog/2009/12/the-quest-for-speed/#comments</comments> <pubDate>Thu, 03 Dec 2009 10:52:40 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[Articles]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[User Interface / Experience]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[caching]]></category> <category><![CDATA[google ranking]]></category> <category><![CDATA[http transactions]]></category> <category><![CDATA[progressive render]]></category> <category><![CDATA[sprites]]></category> <category><![CDATA[steve souders]]></category> <category><![CDATA[web site optimization]]></category> <category><![CDATA[wordpress performance]]></category><guid isPermaLink="false">http://www.w3-edge.com/weblog/2009/12/622/</guid> <description><![CDATA[More than a trend, web application performance, user experience and performance optimization are finally being recognized as the building blocks of successful sites. Google is taking a leading role today in increasing awareness about the role of speed in improving user experience and driving revenue.]]></description> <content:encoded><![CDATA[<p><img src="http://www.w3-edge.com/wp-content/uploads/2009/12/iStock_000003253552Large.jpg" alt="iStock_000003253552Large" title="iStock_000003253552Large" width="400" height="266" class="alignright size-full wp-image-629" />For web applications today speed is not just about bragging rights, instead speed is a deciding factor in: reducing the learning curve of applications for end users, increasing the adoption rate, improving conversion rates, growing time on site and numerous other metrics for web sites.</p><p>Historically, search engine companies (Google, Yahoo!, Bing etc) are among the original innovating web application developers and their success has afforded them with the resources to learn how to scale applications. In particular, Google has been <a href="http://code.google.com/speed/articles/" rel="external">working diligently</a> (as does <a href="http://developer.yahoo.com/performance/rules.html" rel="external">Yahoo</a>) to contribute to the web developer community, increasing awareness and providing research about creating good experiences with web content. Today they&#8217;ve even released their solution to the performance issues surround Domain Name Service (DNS) and with their <a href="http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html" rel="external">Google Public DNS</a> project. DNS is the process by which your browser determines which server to query for the pages you request.</p><p>It has probably always played a role in the background in some way, but is now a talking point &mdash; the speed of a web site is instrumental in how Google determines the rank of your site in search engine result pages. While there may be <a href="http://mashable.com/2009/11/15/google-ranking-speed/" rel="external">numerous opinions</a> on the topic, the fact remains that speed is vital to a positive user experience and a healthy eco-system, so those facts make any opinions quite moot. You can now find Google&#8217;s opinion on the speed of your web site in Webmaster Tools, in <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&#038;answer=158541" rel="external">the site performance</a> section (currently still a labs feature). Take a look and see how your site compares to the rest of the web.</p><p>WordPress is an extremely popular open source content management system and publishing tool. I contribute to the performance of WordPress via <a href="http://wordpress.org/extend/plugins/w3-total-cache/" rel="external">W3 Total Cache</a>, which (from a bird&#8217;s eye view) accomplishes a number of goals:</p><ul><li>Make servers more green by reducing the resource demands in delivering dynamic content</li><li>Reduce load time of sites, thereby providing the benefits stated above</li><li>Allow bloggers and other WordPress plugin developers to continue to focus on producing content and easy-to-deploy functionality for WordPress without having to worry about performance penalties / implementation issues or keep an eye on their WordPress installation.</li></ul><p>The action items to implement the largest performance wins for web applications traditionally include the following:</p><ul><li><strong>Progressive render: </strong>It&#8217;s imperative that CSS and JavaScript are properly embedded into web pages to ensure that the user begins to see content displaying as quickly as possible. The term progressive render literally implies that the web site loads instantly with a water fall effect rather than showing users a white page for several seconds and drawing the entire page at once. Proper use of this technique is realized through careful placement and embedding of CSS and JavaScript in the head of the page. As well as loading JavaScript near the end of the page in addition to using pipelining techniques to overcome download limitations in some browsers.</li><li><strong>Reduce HTTP Transactions:</strong> This technique takes shape in 3 ways:<p> HTTP Compression: the smaller the file, the faster it can be generated, sent and rendered or executed. Gzip or deflate compression is supported by modern browsers and is one of the most fundamental performance wins in web development.</p><p> Minification: the staple technique of Yahoo.com, Google.com and Bing.com for years and instrumental in the &#8220;1 second page loads&#8221; they appear to have. Combining CSS and JavaScripts respectively, removing white space, comments, line breaks and even inserting CSS and JavaScript inline in the document, (if also compressed) ensures that the least amount of data is sent to the browser.</p><p> <a href="http://spriteme.org/" rel="external">Image Sprites</a>: combining multiple images into a single file and using CSS to manipulate them on the page. Since your browser will download a larger image faster (in practice) than numerous <a href="http://www.gracepointafterfive.com/punypng" rel="external">smaller images</a>, this is a real performance win when coupled with browser-side caching.</p><p> These methods make sure that there are fewer &#8220;calls&#8221; to a web server to deliver a page. When it comes to performance, less is more.</li><li><strong>Caching:</strong> Cache everything and cache often! Words to that effect are the mantra of hard core web developers. This technique includes setting expiration time for CSS, JavaScript, and images etc that are downloaded from your site. It also includes, caching pages, database queries, RSS feeds and so forth so that your web server spends time sending content instead of generating it. Don&#8217;t forget that Content Delivery Networks are also a very important type of cache that significantly reduce the latency of content intended for a global audience.</li></ul><p>Will it ever be enough? Doubtful. And there&#8217;s much more to it than the few items I listed. Google is already more than kicking tires on their new take on <a href="http://blog.chromium.org/2009/11/2x-faster-web.html" rel="external">how web enabled devices should communicate</a>. A very ambitious endeavor, but for Google who is bold enough to deploy HTML5 on their main property (Google.com), I&#8217;d have to say that they&#8217;ve got the resources to see it through. And as always it&#8217;s easy to see the wake of <a href="http://stevesouders.com/" rel="external">Steve Souders&#8217;</a> contributions to web application performance – no doubt a vital contributor at Google (the <a href="http://code.google.com/speed/page-speed/download.html" rel="external">page speed Firefox plugin</a>?), formerly of Yahoo fame.</p><p>The takeaway is this, on the horizon, there will be more talk about the performance of your site and that in turn will raise the bar and awareness in the open source community about how to make high performance applications, the reasons to do it and with which tools to measure those results.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2009/12/the-quest-for-speed/feed/</wfw:commentRss> <slash:comments>21</slash:comments> </item> <item><title>PressThis on WebmasterRadio.fm</title><link>http://www.w3-edge.com/weblog/2009/08/pressthis-on-webmasterradio-fm/</link> <comments>http://www.w3-edge.com/weblog/2009/08/pressthis-on-webmasterradio-fm/#comments</comments> <pubDate>Tue, 18 Aug 2009 21:09:09 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[joost de valk]]></category> <category><![CDATA[mashable]]></category> <category><![CDATA[Usability]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[wordpress plugins]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=306</guid> <description><![CDATA[I was fortunate enough to discuss WordPress usability with one of the industries most well-recognized personalities Joost de Valk.]]></description> <content:encoded><![CDATA[<p><a href="http://twitter.com/yoast" rel="nofollow external twitter">Joost de Valk</a> is a well known blogger, WordPress developer, speaker and marketer and has started a great show on Webmaster Radio focused on WordPress tips and the like. I was fortunate enough to be invited to share in the discussion as Mashable&#8217;s CTO discussing usability from various perspectives including design, WordPress optimization as well as a few upcoming plugins. The podcast is available on Joost&#8217;s site <a href="http://yoast.com/press-this/wordpress-usability/" rel="nofollow external">here</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2009/08/pressthis-on-webmasterradio-fm/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Do&#8217;s and Don&#8217;ts to Improve Google Ranking</title><link>http://www.w3-edge.com/weblog/2009/03/dos-and-donts-to-improve-google-ranking/</link> <comments>http://www.w3-edge.com/weblog/2009/03/dos-and-donts-to-improve-google-ranking/#comments</comments> <pubDate>Mon, 09 Mar 2009 15:19:54 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[Articles]]></category> <category><![CDATA[search marketing]]></category> <category><![CDATA[google]]></category> <category><![CDATA[ranking factors]]></category> <category><![CDATA[SEO]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=288</guid> <description><![CDATA[Google Ranking Factors, The Good and the Bad. There are lots of opinions on how Google actually ranks your web site in the search result pages &#8212; take a closer look at what matters and why.]]></description> <content:encoded><![CDATA[<p>Among SEO professionals, there isn&#8217;t always consensus on precisely which and to what degree site factors contribute or detract from rankings on Google because the factors actually vary by industry. There are indeed, a number of contentious issues: markup and content quality, use of title tags, site organization and even arguments that Google Analytics data factors in to site rankings. Not likely (yet), but certainly up for debate among SEO professionals.</p><p>However, there are some Google ranking factors that most professionals agree affect site positioning on Google SERPs. However, these are opinions, find out for yourself how these apply to projects you&#8217;re working on.</p><p><strong>Recommended Steps to Improve Google Ranking</strong></p><p><strong>1. Use keywords in HTML title tags. </strong>Probably the most significant factor for a site regardless of the competitive landscape, the title tag must be consistent with content in the page for best results. The more keywords in your title, the less effective this factor, be judicious.</p><p><strong>2. Create quality anchor text for inbound links. </strong>At one time, according to some SEO professionals, quality anchor text was an essential component of a well-ranked site. After all, this is the text the user opted to see by clicking a link on another site. Most SEOs still contend that quality anchor text is a highly significant, positive ranking factor. If not for spiders, for visitors clicking in as well. Obviously the text should be relevant to the destination page for best results; that&#8217;s where your on page optimization comes in to play.</p><p><strong>3. Increase link popularity.</strong> Link popularity takes into account the number of inbound links present. Link authority has less relevance, though it is still a factor depending on the competitive landscape. Link popularity is based on a global count of links from all sites. However, quality links are still critical to creating site authority; authority means ranking for more phrases than you intentionally target.</p><p><strong>4.</strong> <strong>Hang in there. </strong> The age of a site is an important positive weighting factor according to many SEO professionals. It&#8217;s certainly a reasonable assumption. Failed sites are dropped as soon as the hosting subscription ends. If a site has been around for 10 years, the owners must be dong something right, especially if link popularity is steady developed over the years. Unfortunately for site owners, there&#8217;s no way to speed up the aging process &ndash; except hanging in there.</p><p><strong>5. Increase the popularity of internal links.</strong> These links direct visitors to helpful, related content. They&#8217;re important in providing visitors with a positive on-site experience. Search engines view on-site link popularity as a sign that visitors like what they see and want to learn more.</p><p><strong>7. Build deep links. </strong>Deep links are relevant to the topicality of the target page or keyword. The relevance of these inbound links matters to a site&#8217;s Google ranking. However, please note point 3. The sheer number of inbound links is a factor as well. Quality deep links carry more weight and add credibility to a site.</p><p><strong>8. Connect with sites selling to the same demographic. </strong>Create a number of links with sites within your topical community. This helps visitors further their searches &ndash; something Google likes very much.</p><p><strong>9. Keep old links. </strong>Google looks for web stability. The older the link, the more trust it has. It indicates a happy relationship with the site owner linking in who recognizes the value of sending visitors off-site. Google watchers suggest a three to four month time window for spiders to determine that this is a well-established, long-term link that has value to visitors of both sites.</p><p><strong>10. Use keywords in body text. </strong>Make sure that keywords receive prominent display in headlines, headers, sub-heads. It&#8217;s important that the keywords used in HTML text on page match with keywords used in the site&#8217;s meta data and title tags.</p><p><strong>Not Recommended</strong></p><p><strong>1. Don&#8217;t use session IDs in URLs. </strong>It sounds like a good idea on the surface, an easy way to track customer information, but here&#8217;s the problem. Each time a spider crawls the site, a new URL with session ID is created. The spider now has two, or three or more URLs all showing duplicate content. Go back to Go, do not collect $200. Don&#8217;t confuse this with pages that may have a couple GET variables in them; avoid that when you can, but just avoid having your pages containing session IDs.</p><p><strong>2. Choose a reputable web host. </strong>The most potent negative ranking factor is server accessibility. If your server, located in Timbuktu, is inaccessible to spiders, it&#8217;s inaccessible to visitors. Down time soon becomes down and out time.</p><p><strong>3. Avoid duplicate content. </strong>Googlebots employ filters to detect duplicate content. Now, if you opt to post some syndicated articles, you&#8217;re providing a service to visitors. However, a bot will recognize that content (it&#8217;s already appeared on 400 sites) and you&#8217;ll see a drop in traffic rank.</p><p><strong>4. Jettison low-quality links. </strong>Google assesses the character of your site by the company you keep so keep good company by unlinking from (1) links farms, (2) sites with absolutely no quality content and (3) otherwise low-quality sites; e.g. FFA (free for all) sites.</p><p><strong>5. Avoid any kind of links deception. </strong>Googlebots aren&#8217;t smart, but they can detect some paid links and a variety of links scams, including generated links. If a Googlebot suspects links fraud, your site may be penalized and sent to the basement or banned altogether.</p><p><strong>6. Avoid a log-in before visitors and bots access &ldquo;the good stuff.&rdquo; </strong>Log-ins can easily confuse a bot who won&#8217;t be able to access quality content hidden behind a log in. Even though users with Google toolbars will be unknowingly suggesting new URLs to be crawled as they surf about, having teasers for the content your monetizing by subscription will help your SEO.</p><p><strong>7. Avoid using frames. </strong>Horizontal and vertical framesets frameset are commonly used by designers to present more than one page of a site on the screen at the same time. However, frames are also bot traps. They can get in but they can&#8217;t get out, making it impossible for them to index a site &ndash; at all! Tell your developer to look at using iframes if possible or absolutely necessary.</p><p><strong>8. Avoid duplicate title/meta tags. </strong>Title/meta tags are a valuable resource for site owners to expand access points to a site. Using title tags ensures that more pages are indexed and listed in Google&#8217;s SERPs as distinct links. All good. Unfortunately, too many duplicate title tags on pages in which the content topic hasn&#8217;t changed, is redundant and a waste of the bots time. Use tag your pages uniquely and judiciously.</p><p><strong>9. </strong> <strong>Do not keyword stuff.</strong> Even though search engines no longer give much weight to keyword tags, keyword stuffing continues. Select 20 to 30 keywords &ndash; top-tier and long-tail &ndash; and focus on them. Keep keyword density in body text at no more than 3%. The old 5% rule still led to on-site gibberish &ndash; obviously these figures vary by competitive landscape.</p><p><strong>10. Do not let quality slip &ndash; even for a day. </strong>Spiders crawl sites with greater frequency and sophistication and index updates are common as changes to a site are implemented. During periods of construction, be sure to keep spiders out of staging areas that have yet to be completed nofollow or block with robots. These works-in-progress may cost you points in the ranking sweepstakes.</p><p>Google controls 46% of all searches. Doesn&#8217;t it make sense to give this search engine exactly what it wants and delete what it doesn&#8217;t want?</p><p>Rhetorical question.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2009/03/dos-and-donts-to-improve-google-ranking/feed/</wfw:commentRss> <slash:comments>71</slash:comments> </item> <item><title>Yoast Launched!</title><link>http://www.w3-edge.com/weblog/2009/03/yoast-launched/</link> <comments>http://www.w3-edge.com/weblog/2009/03/yoast-launched/#comments</comments> <pubDate>Tue, 03 Mar 2009 17:34:47 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[re-design]]></category> <category><![CDATA[web site optimization]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=291</guid> <description><![CDATA[One of the harbingers of progress in the WordPress community allowed us to contribute a custom redesign including the latest in social media elements and custom illustrations.]]></description> <content:encoded><![CDATA[<p>Tweaking Web Sites is what <a href="/work/yoast-com">Yoast.com</a> is all about. Joost de Valk has been a prolific WordPress plugin developer for some time now and among our goals for the project was to call out featured plugins, featured posts and make sure that the site was engaging from a social media standpoint.</p><p>Above and beyond the design we also worked to optimize the site’s load and render performance as well as making the server stand up the traffic demands that yoast.com generates.</p><p>Hand drawn illustrations, advanced CSS and completely unique styling make this re-design project one we’re very proud of.</p><p>This project has been showcased quite a bit on the various design galleries and received numerous mentions from around the blogosphere including:</p><ul><li><a href="http://www.smashingmagazine.com/2009/04/02/10-impressive-simple-design-techniques/" rel="external nofollow">10 Simple and Impressive Design Techniques</a></li><li><a href="http://www.webdesignerdepot.com/2009/10/blog-headers-20-great-examples-and-best-practices/" rel="external nofollow">Blog Headers: 20 Great Examples and Best Practices</a></li><li><a href="http://www.webmaster-source.com/2009/04/10/design-spotlight-yoast/" rel="external nofollow">Design Spotlight: Yoast</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2009/03/yoast-launched/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Mashable Launched!</title><link>http://www.w3-edge.com/weblog/2009/02/mashable-launched/</link> <comments>http://www.w3-edge.com/weblog/2009/02/mashable-launched/#comments</comments> <pubDate>Thu, 26 Feb 2009 14:30:04 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[mashable]]></category> <category><![CDATA[re-design]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=290</guid> <description><![CDATA[We're proud to have worked on yet another mashable.com site redesign.]]></description> <content:encoded><![CDATA[<p>Another <a href="/work/mashable-com/" rel="nofollow">Mashable.com</a> WordPress theme has been launched. For those of you don’t already know Mashable is among the world’s most popular blogs covering topics around technology and social media.</p><p>Last year we updated the look and feel of the various applications: marketplace, codes, invites, france, mashtracker etc, this year we’re focusing more on the user experience of the main blog itself and exposing the evergreen content that users frequent the site for as well as the daily news topics that users want as well.</p><p>This redesign is a great step towards subsequent initiatives that will allow all of the segments of the readership to find the content they want more easily on Mashable and keep them on the site.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2009/02/mashable-launched/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>CSS3 Launched!</title><link>http://www.w3-edge.com/weblog/2008/11/css3-launched/</link> <comments>http://www.w3-edge.com/weblog/2008/11/css3-launched/#comments</comments> <pubDate>Sat, 01 Nov 2008 16:44:40 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[News]]></category> <category><![CDATA[re-design]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=293</guid> <description><![CDATA[The industry's foremost blog on CSS 3 news, tutorials and tips has just been redesigned!]]></description> <content:encoded><![CDATA[<p>Originally created by Joost de Valk and supporting cast, <a href="/work/css3-info">CSS3.info</a> is the definitive guide to CSS 3 with tips, tutorials, guides and news about the forthcoming CSS specification from the World Wide Web Consortium.</p><p>CSS 3 is a completely content-driven site and as such the focus of the redesign was to simply identify and resolve minor usability issues and improve the performance of the blog from a user experience standpoint. Thanks to the great plugins by Joost de Valk, the redesign process was very straight forward.</p><p>The result of the redesign was a nice traffic bump and a consistent boost to the blog’s RSS feed. Users can also now learn more about the contributors as we exposed profiles for the bloggers working on the project.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2008/11/css3-launched/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Get Your Blog Google Ranked in 30 Days or Less</title><link>http://www.w3-edge.com/weblog/2008/02/rank-your-blog-30-days-or-less/</link> <comments>http://www.w3-edge.com/weblog/2008/02/rank-your-blog-30-days-or-less/#comments</comments> <pubDate>Mon, 25 Feb 2008 15:22:33 +0000</pubDate> <dc:creator>Frederick Townes</dc:creator> <category><![CDATA[Articles]]></category> <category><![CDATA[Business Development / Strategy]]></category> <category><![CDATA[Social Media Marketing]]></category> <category><![CDATA[search marketing]]></category> <category><![CDATA[SEO]]></category> <category><![CDATA[Traffic Building]]></category><guid isPermaLink="false">http://www.w3-edge.com/?p=263</guid> <description><![CDATA[Blogs are great for updating content quickly, creating a site community, and they even make search engines happy. Unfortunately, many site owners mis-use or under-utilize their blogs so here are 50 tips to boost your blogs performance.]]></description> <content:encoded><![CDATA[<p>Blogs have been around long enough to become standard elements of the web landscape. They&#8217;re easy to construct and manage, they create fresh, user-generated content and, if well-executed, blogs draw crowds and the attention of search engines.</p><p>Whether starting out with a new domain name, or a domain that&#8217;s been around for a decade, you can rank your blog on Google if you just do what Google wants you to do. So here are 25/50 tips to get your blog ranked by the world&#8217;s biggest <acronym title="Search Engine">SE</acronym>.</p><p><strong>50. Build your own or  move to WordPress.</strong> <a title="WordPress SEO" href="http://seonix.org/category/wordpress-seo/" target="_blank">WordPress</a> is a blog platform that&#8217;s open source (free), robust, extensible and easy to  use. Add <a href="http://www.feedburner.com/" target="_blank">Feedburner</a>, which equips site owners to broadcast RSS feeds and develop user metrics. Next, synch up Google Analytics and a sitemap plug-in to simplify populating the blog and developing  useful, actionable metrics. Also, make sure your blog is pinging <a href="http://www.technorati.com/" target="_blank">Technorati</a> and other social media sites like <u><a href="http://www.digg.com/" target="_blank">digg</a></u>.</p><p><strong>49. Don&#8217;t worry aboutpage rank.</strong> PR is highly over-rated as a yardstick of online success. Connectivity within a web community and expansion through content syndication and guest blogging are more critical to building site credibility than page rank. PR will take care of itself over time if you do it right.</p><p><strong>48. Make a difference, or at least have a clear purpose.</strong> Differentiate your content on every post. Cover lots of editorial ground.</p><p><strong>47. Use a conversational tone.</strong> Dry, starchy academic writing is strictly for the textbooks. Write words that people &#8220;hear&#8221; instead of read.</p><p><strong>46. Provide a &#8220;Tell Your Friends&#8221; link on your blog. </strong>Birds of a feather do, indeed, flock  together. So, if one of your regulars shares an interest in philately, chances  are s/he has other friends with an interest in stamp collecting.</p><p><strong>45. Study the competition</strong>. They&#8217;re studying you. Check out <a href="http://www.spyfu.com/" target="_blank">SpyFu</a> to do a little undercover work on search analytics employed by competitor sites and their visitors. You can&#8217;t touch the content but you can&#8217;t copyright an idea, either, so pick up some new paths of thought from others in your site&#8217;s arena.</p><p><strong>44. Remember <acronym title="Search Engine Optimization">SEO</acronym> basics.</strong> Use provocative, keyword-rich title tags, meta keywords and descriptions, and only link to high-quality sites. Never over do it. Keep your posts relevant, natural, accurate and, above all, <u>current</u>.</p><p><strong>43. Don&#8217;t stuff blog post titles with keywords. </strong>It&#8217;s a form of keyword stuffing and spiders hate keyword stuffing. The ratio in headlines should be ~40% keywords, ~60% non-keywords.</p><p><strong>42. Submit your URL  to blog directories. </strong>There are &#8220;best  of the web,&#8221; and paid directories, like Yahoo, and free directories like the <a href="http://www.dmoz.org/" target="_blank">Open Directory Project</a>.  Every directory listing is another link to your site and another way visitors can find you. Just google them to find more.</p><p><strong>41. Create blog categories  that contain keywords, </strong>i.e., Ecommerce, <acronym title="Search Engine Optimization"><a title="Google Search Engine Optimization" href="http://seonix.org/">SEO</a></acronym>, Affiliates, etc. for use with  a &#8220;site hosting&#8221; or &#8220;site design&#8221; blog.</p><p><strong>40. Content quality counts.</strong> Research topics about which target readers want to learn. Write something new, useful and relevant. And don&#8217;t forget to regularly update older posts. Things change fast on the web so last year&#8217;s &#8220;next big thing&#8221; is this year&#8217;s hackneyed  cliché.</p><p><strong>39. Vary topics, content  length, relevancy and posting times.</strong> However, be consistent, as well. Keep blogging. It can take time for a blog to catch the notice of a search engine spider.</p><p><strong>38. Get guest  bloggers</strong>. Add links from their blogs and establish your site&#8217;s link community. There are people within your web neighborhood with opinions and good information. Contact them to invite submissions to your blog and your site in general.</p><p><strong>37. Don&#8217;t use duplicate  content</strong>. The only duplicate content that appears in your blog posts are quotes, and they should be identified with quotation marks.</p><p><strong>36. Call posters by  name. </strong>If Bob M. from Athens, Georgia, posts  to your blog, recognize his contribution with a &#8220;Thanks, Bob&#8221; at the end of your response.</p><p><strong>35. Make friends with  other bloggers</strong> in your commercial, business or NFP space. Ask to become a guest blogger, or seek endorsements from the &#8220;names&#8221; within your site sphere.</p><p><strong>34. Send a personal  note to posters. </strong>Not all bloggers have the time to do this but if you can send a personal email thank-you note to a poster, you&#8217;ve increased the chances of that poster becoming a member of your site community.</p><p><strong>33. Encourage viral link building. </strong>Take a stand. Introduce the coming paradigm shift in web commerce, provoke controversy. It sells. Just ask Ann Coulter.</p><p><strong>32. Ensure the blog is optimized for Technorarri.</strong> Claim your blog, set an avatar and pings, use tags where appropriate and be sure to ping various blog tracking sites.</p><p><strong>31. Don&#8217;t place ads on your blog, yet.</strong> If you feel you must (you&#8217;re seeing nice PPC revenues), determine that your site&#8217;s HTML is optimized to position those ads at the bottom of each blog page.</p><p><strong>30. If your blog isn&#8217;t pulling,</strong> have the code reproduced so it&#8217;s as semantic, accessible and code-to-content optimized as possible. Also, hire a code expert to position content above ads or any other content in the site markup.</p><p><strong>29. Ignore Alexa</strong>. A lot of new site owners rely on Alexa for site metrics but remember, Alexa is a popularity metric since only Alexa toolbar users contribute data &mdash; and that&#8217;s a less-than-universal test population.</p><p><strong>28. Build credibility. </strong>Publishing authorities on your site&#8217;s topicality usually does the trick. Once blog credibility is established, identify trends, solve new  problems and gradually expand the topic range of your blog.</p><p><strong>27. Buy or build a hot blog design and submit it to design galleries.</strong> Hire a site/blog designer, or bring your vision to fruition. This enables your blog to appear five or six demographic iterations from your home site, expanding the site&#8217;s reach outside the immediate site community. This creates new marketing channels fast.</p><p><strong>26. Develop some friendly contacts on social media sites</strong> and participate in the community. Ask contacts to promote your blog content. Also ask for contributors. People love to express their opinions.</p><p><strong>25. Focus on ranking  for <u>three key words or phrases</u> to start.</strong> The keywords you select should appear in your HTML title tags and within the site&#8217;s content when appropriate. However, watch keyword density levels. Anything above 5% starts  to sound like gibberish. 2% to 3% keyword density provides more creative latitude for the content developer, and still lets bots know what the site is about.</p><p><strong>24. Only purchase ad  links on relevant niche sites.</strong> This, by default, limits competitive links and delivers more qualified (knowledgeable and ready-to-purchase) visitors to your site.</p><p><strong>23. Participate in  your link community.</strong> Forum and blog links are ephemeral, lasting a day or two as web fodder, so there&#8217;s always the need for more green. Interact by posting to not only drive traffic with the link, but to also pick up another link from a credible site. All good.</p><p><strong>22. Publish new content on weekdays.</strong> Even search engines need a break. Actually, more people are online Monday through Friday so your latest blog post is still the latest when posted on Monday rather than Sunday. A little thing, for sure, but little things mean a lot online.</p><p><strong>21. Write content for various experience levels. For many spaces DIYs are the largest sector.</strong> Some readers are just starting out. Others have been at it for years and probably  know more than you do, so post blogs to appeal to a broad range of skill sets &mdash; from green rookie to wizened old vet.</p><p><strong>20. Cite the sources of your content.</strong> This adds credibility to your posts. It also provides a trail for a reader interested in learning more about the topic at hand.</p><p><strong>19. Focus on contextual relevancy before quantity of links.</strong> Connectivity within a market or topic segment has more value than SEO anchor text, at least in the short term.</p><p><strong>18. Poll your readers.</strong> Everybody&#8217;s got an opinion. Provide a platform to let posters and readers vote on a topic related to your site. It doesn&#8217;t do any good if you run a retail outlet and poll visitors on who they&#8217;d like to see in the White House. Stay on topic.</p><p><strong>17. Create surveys. </strong>Surveys  are more in depth than a poll. One survey you might want to try is one in which  buyers rate the services and products you sell. Great marketing information.  Consider placing a satisfaction survey somewhere on your site.</p><p><strong>16. Write about popular  brands or celebrities where possible. </strong>It doesn&#8217;t matter if you&#8217;re blogging  short sales in the market or clothing for the over-sized human, celebrity and  name brands get picked up by spiders.</p><p><strong>15. Find free stuff  to give away. </strong>Free still works on the web. There&#8217;s lots of open source software (OSS),  mortgage calculators, real-time stock feeds and other digital goodies that  visitors can download free. Free is nice.</p><p><strong>14. Answer questions  on Google groups and Yahoo Answers.</strong> People write in with all sorts of  questions, some sure to fall within your area of expertise. By signing on as an  authority in a field (your arena) you build credibility. Plus, it&#8217;s fun helping  others from the comfort of your own work station.</p><p><strong>13. Add imagery and  video content to your posts.</strong> A picture is worth a thousand web words.  Charts and graphs simplify complex information and don&#8217;t take up a lot of  room.  If you aren&#8217;t an artist, create a  relationship with a freelancer. Never use clip art.</p><p><strong>12. Use QA sessions  in your blog. </strong>You&#8217;re the expert. Also, invite guest bloggers to handle  questions beyond your skill set. Helpful, simple advice keeps visitors coming  back and makes you a guru.</p><p><strong>11. Syndicate content  outside of your blog</strong>. Every site owner needs content. Fortunately, there&#8217;s  plenty of it free for the taking. Sites like <a href="http://www.helium.com/" target="_blank">Helium</a>, <a href="http://www.ezine.com/" target="_blank">Ezine</a> and <a href="http://www.goarticles.com/" target="_blank">Go Articles</a> are content  supermarkets. Post your piece and pick up non-reciprocal, in-bound links for  your effort. Content syndication increases link popularity.</p><p><strong>10. Direct (future) page  rank efforts to well-optimized content on your home site. </strong>Don&#8217;t direct  visitors and bots to the garbage bin of out-dated content stored in the site&#8217;s  archives. Point them to the new news.</p><p><strong>9. Update or create a  Wikipedia page and link to your site. </strong>Another means of establishing  yourself as an authority. Just make sure the Wiki piece is accurate, well written  and typo-free.</p><p><strong>8. Submit industry or  topical news to general news sites. N</strong>ot just industry related sites.  If a small oil and gas company brings in a  gusher, it&#8217;s of broader interest than to just industry insiders. Also adds  credibility and another link.</p><p><strong>7. Deep links or  links to sub-pages are vital. </strong>There&#8217;s a tendency to link from a remote site  to your home page. Not necessarily the best strategy. Consider linking to pages  deeper in the site – pages related directly to your blog post. This way,  visitors are in your site and less likely to bounce.</p><p><strong>6. Respond to  comments in your blog. </strong>This accomplishes three important objectives: (1) it  shows that there&#8217;s a human behind the blog; (2) it gives you a chance to show  your expertise; and (3) you can lead the thread in a new direction or keep the  discussion going. Oh, it&#8217;s also the polite thing to do, as well.<strong></strong></p><p><strong>5. Cross link your  posts. </strong>Link amongst your related blog posts using the keywords you&#8217;re  optimizing your blog for as the anchor text.</p><p><strong>4. Get linked  alongside related blogs on other sites. </strong> You can contact the blog administrator to swap  links, you can become a regular guest blogger if your writing is good enough or  your knowledge extensive. Niche sites are great for building blog links networks.</p><p><strong>3. Bait your blog. </strong> Post unconventional and controversial articles  to create lengthy threads that, in turn, create site stickiness.</p><p><strong>2. Be consistent into  month two. </strong>Keep the tone, style and topicality of your blog consistent for  the first two months until spiders get it. Then, you can branch out to  peripheral topics to expand reader interest.</p><p><strong>1. Network offline</strong>.  Helpful networking <a href="http://seonix.org/seo/" title="seo tools">tools</a> include <a href="http://www.linkedin.com/" target="_blank">LinkedIn</a>, <a href="http://www.meetup.com/" target="_blank">MeetUp</a> and <a href="http://www.mybloglog.com/" target="_blank">MyBlogLog</a>. These sites provide  real world contacts to simplify and streamline the process of networking.  They&#8217;re also useful in building beneficial online relationships – not to be  overlooked. Also reach out using conferences that are available in your area  and abroad.</p><p>The keys to building a successful, well-tended blog run the  gamut from good content to good contacts, and from credibility to controversy.  There are lots of ways to expand your blog community and develop quality  rankings at the same time</p><p>Once you&#8217;ve got all of this down your next steps are to  begin monetizing your site.</p><p>So, blog.</p> ]]></content:encoded> <wfw:commentRss>http://www.w3-edge.com/weblog/2008/02/rank-your-blog-30-days-or-less/feed/</wfw:commentRss> <slash:comments>76</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 3/41 queries in 0.062 seconds using apc
Object Caching 1165/1244 objects using apc

Served from: www.w3-edge.com @ 2012-02-10 04:38:56 -->
