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

<channel>
	<title>ANDY STRATTON&#187; Development</title>
	<atom:link href="http://theandystratton.com/category/development/feed" rel="self" type="application/rss+xml" />
	<link>http://theandystratton.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 07 Aug 2010 05:46:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>10 Things Web Development Taught Me About&#160;Life</title>
		<link>http://theandystratton.com/2010/10-things-web-development-taught-me-about-life</link>
		<comments>http://theandystratton.com/2010/10-things-web-development-taught-me-about-life#comments</comments>
		<pubDate>Sat, 07 Aug 2010 05:33:25 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=465</guid>
		<description><![CDATA[Or How I Learned To Stop Worrying And Love Being a Human 1. Plan Your Work, Work Your Plan. In any project, it works best to put pen to paper and create a plan of action. In programming, we tend to call these algorithms. They take shape as lists, flow charts and diagrams. I do [...]]]></description>
			<content:encoded><![CDATA[<h2 style="font-size:1.5em;color:#888;">Or How I Learned To Stop Worrying And Love Being a Human</h2>
<h3>1. Plan Your Work, Work Your Plan.</h3>
<p>In any project, it works best to put pen to paper and create a plan of action. In programming, we tend to call these algorithms. They take shape as lists, flow charts and diagrams. I do them all the time. They fit into our patterns of daily life quite well. It&#8217;s all about making the right decisions, implementing them is the easy part.</p>
<p>Organization and foresight can save you in both web development and life. (<em>Though, there&#8217;s something to be said for spontaneity.</em>)</p>
<h3>2. There Are An Infinite Number of Solutions To Every Problem.</h3>
<p>It&#8217;s true. There are a million different ways to do something. In web programming, the metric for appropriateness is the client needs, the hosting environment and project budget/scope. In life, it tends to be your environmental context, i.e. social, economic, political, etc. All in all, there&#8217;s no 100% definitive right way to do something, what a pleasure it&#8217;s been to accept that truth!</p>
<h3>3. Shortcuts Have a Time and a Place.</h3>
<p>That epic battle of quality versus quantity. Everyone wants both, whether they are a client or someone in your personal life. There&#8217;s a time and a place for libraries of code, pre-existing applications and templates. Ideally, you want to craft your own path, but sometimes you just don&#8217;t have the budget. That budget could be a project&#8217;s financial budget, it could be a timeline or it could be your mental or physical energy.</p>
<p>I&#8217;ve found that context is a key indicator in whether or not I should be using a shortcut in my web (and personal) development.</p>
<h3>4. Nothing Ever Goes 100% As You Planned.</h3>
<p>It&#8217;s hard to meet 100% of people&#8217;s expectations. Expectations, even if clearly defined, can still be subjective. Everyone has an image of how they want a project to go, and it&#8217;s rarely exactly as they envisioned. The same with life. Perfection is a myth and there&#8217;s perfection in imperfection. It&#8217;s a great thing, and it&#8217;s very relieving to understand that fact and appreciate the moments you have.</p>
<h3>5. Specialization is Key.</h3>
<p>This is about focus. Remember the old design adage: <q>if everything is important, nothing is important.</q> It&#8217;s true. A jack of all trades is an expert in none. Same with life. Keeping your focus on the things that are most important to you will make you successful. For some it&#8217;s family, others it&#8217;s career and status, and for some: it&#8217;s others. The best advice is to find out what you want to specialize in and become an expert. Success is bound to follow.</p>
<h3>6. Exercise Is Important!</h3>
<p>Practice makes perfect. Exercise your skills and you&#8217;ll get better, polished and more refined. The same with your body and mind. The computer is my tool for work, my body and mind are my tools for life. Never stop learning and growing. It keeps you fresh and focused (<em>see #5</em>). Exercising your body will also help your energy levels, concentration and keep you healthy.</p>
<h3>7. Nothing Gets Done Until You Do It.</h3>
<p>In my industry, we tend to talk a lot about process. What would be great/fun/cool/exciting. But nothing ever happens until we start building the application. Same goes for life. You can talk all you want about what you want to do with yourself, but it&#8217;s never going to happen until you take action.</p>
<h3>8. There&#8217;s Always Someone Better Than You (At Least In Your Mind).</h3>
<p>I think I&#8217;m a good programmer. I&#8217;ve gotten compliments from mentors and people I respect/admire in my industry&hellip;then I see some other great professionals&#8217; work and I think, <em>I suck</em>. Not the case! There is always someone better than you at what you&#8217;re doing, and if you&#8217;re the best, odds are you don&#8217;t know it. That&#8217;s the nature of hard workers.</p>
<p>It&#8217;s important to remember that and avoid becoming stressed out or consumed by what others are doing. That&#8217;s just unnecessary distraction. Focus on you and be the best version of yourself – and OWN it. Good things will follow. No one ever stood out by following the crowd anyway.</p>
<h3>9. You&#8217;ll Never Be Disappointed You Did Something Right the First Time.</h3>
<p>So, you&#8217;re building a form that accepts payment information. You&#8217;re only checking to make sure fields aren&#8217;t empty. 1,000 spam submissions hit and plague your clients inbox because you didn&#8217;t validate an email address or require a CAPTCHA. Ouch.</p>
<p>If you had took the time in the first place to build it right, this wouldn&#8217;t be an issue. You&#8217;d be playing some kind of stereotypical gaming console drinking Red Bull or whatever drink the typical web developer is drinking now-a-days and your client would be happy and probably referring you to others.</p>
<p>There&#8217;s a classic honorability in doing something right the first time. Same with life. I&#8217;ve taken far too many shortcuts when I shouldn&#8217;t have in life, and in most cases it&#8217;s cause me grief. I have <strong>never</strong> regretted taking the long road to do something right.</p>
<h3>10. There&#8217;s No Substitute For Fresh Air and Sunshine On Your Face.</h3>
<p>Get out of the house, get away from the screen and breath some fresh air. You need it. You&#8217;re body, mind and soul will thank you. You&#8217;ll come back with a fresh perspective.</p>
<p>My career is based on machines, and I&#8217;ll be the first to admit that human beings weren&#8217;t meant to sit in front of them all day. Think of me as the blogging, freelancing <a href="http://en.wikipedia.org/wiki/Office_Space" rel="external">Peter Gibbons</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2010/10-things-web-development-taught-me-about-life/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shared Hosting Fix&#8230; Uhm,&#160;fix.</title>
		<link>http://theandystratton.com/2010/shared-hosting-fix-uhm-fix</link>
		<comments>http://theandystratton.com/2010/shared-hosting-fix-uhm-fix#comments</comments>
		<pubDate>Wed, 30 Jun 2010 02:47:30 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=434</guid>
		<description><![CDATA[So I&#8217;ve had some reports that the shared hosting hack fix that I wrote as a quick bridge to a real solution left some people with PHP documents that contained a bit of leading whitespace, which can really b0rk up your WordPress install or any PHP application if it&#8217;s in the right file the wrong [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve had some reports that the <a href="http://theandystratton.com/2010/shared-godaddy-hosting-wordpress-malware-hack-fix">shared hosting hack fix</a> that I wrote as a quick bridge to a <a href="http://theandystratton.com/2010/shared-godaddy-hosting-wordpress-malware-hack-fix#do-more">real solution</a> left some people with PHP documents that contained a bit of leading whitespace, which can really b0rk up your WordPress install or any PHP application if it&#8217;s in the right file the wrong way.</p>
<p>So, I give you the cleaner (special thanks to Michael Safovich for requesting and testing).</p>
<h3>What&#8217;s it do</h3>
<p>It recursively looks through it&#8217;s current directory (and subdirectories) for PHP files (by default it&#8217;s looking for <code>php</code>, <code>php4</code>, <code>php5</code> and <code>phtml</code> extensions, but this is customizable) and killing any whitespace in the beginning of the file, turning:</p>
<pre><code>&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
&lt;?php include_once './wp-blog-header.php'; ?&gt;</code></pre>
<p>into this:</p>
<pre><code>&lt;?php include_once './wp-blog-header.php'; ?&gt;</code></pre>
<p>Make sense? Good, here&#8217;s the <a href="/downloads/cleaner.zip">download link</a>.</p>
<h3>Tips &amp; Customization</h3>
<p>BACK UP YOUR FILES. You agree to take responsibility for running this, because I sure don&#8217;t (though I think you&#8217;ll be fine).</p>
<p>To run on custom file types, edit the <code>$fileTypes</code> array to include the types you want to strip leading whitespace from.</p>
<p>The script will run for the current directory. You will need to set the <code>$directory</code> variable to contain the path you&#8217;d like to recursively clean, in most cases you&#8217;d drop the <code>cleaner.php</code> file in your document root and hit it in the browser.</p>
<p>It will run immediately and output a log. Hope it helps. ¡Hasta luego!</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2010/shared-hosting-fix-uhm-fix/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix/sendmail broken on OS X since installing&#160;FiOS</title>
		<link>http://theandystratton.com/2010/postfix-sendmail-broken-on-os-x-since-installing-fios</link>
		<comments>http://theandystratton.com/2010/postfix-sendmail-broken-on-os-x-since-installing-fios#comments</comments>
		<pubDate>Wed, 23 Jun 2010 05:06:06 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=428</guid>
		<description><![CDATA[So, I&#8217;ve had issues before with my jury rigged Macports-powered MAMP setup. The biggest time suck has been postfix/sendmail issues, like I experience for 2&#8211;3 hours today. The Problem(s) Sending mail from PHP&#8217;s mail() function and SwiftMailer both seemed to be sending things correctly (returning true and such) No emails were being received by any [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve had <a href="http://theandystratton.com/2009/fix-phps-mail-function-after-latest-os-x-leopard-update">issues before</a> with my jury rigged <a href="http://www.macports.org" rel="nofollow external">Macports</a>-powered <abbr title="Macintosh Apache MySQL PHP">MAMP</abbr> setup. The biggest time suck has been postfix/sendmail issues, like I experience for 2&ndash;3 hours today.</p>
<h2>The Problem(s)</h2>
<ul>
<li>Sending mail from PHP&#8217;s <code>mail()</code> function and <a href="http://swiftmailer.org/" rel="nofollow external">SwiftMailer</a> both seemed to be sending things correctly (returning <code>true</code> and such)</li>
<li>No emails were being received by any of my email addresses</li>
<li><code>postfix</code> was running</li>
<li>I kept getting an <q>operation has timed out</q> in the error log when trying to connect to SMTP servers (try: <code>tail -f /var/log/mail.log</code> to see it real time)</li>
<li>I couldn&#8217;t even <code>telnet ASPMX.L.GOOGLE.COM 25</code></li>
</ul>
<p><strong>What the EFF, right?</strong></p>
<p>Then I start thinking. I can&#8217;t get out on port 25, maybe it&#8217;s the router. After resetting the password and all settings (I&#8217;m a moron, I forgot the user/pass I setup), and re-configuring everything (I use a custom subnet at home to let me VPN special places), I found no option for this in the FiOS Actiontec router admin software.</p>
<h2>FiOS is Blocking Port 25</h2>
<p>Yep. That had to be it. I called their support line and confirmed it. My residential account had port 25 blocked and according to a few message boards, business accounts with dedicated IP&#8217;s were being blocked as well.</p>
<p>How&#8217;d I get around it? I found <a href="http://www.wormly.com/blog/2008/11/05/relay-gmail-google-smtp-postfix/" rel="external">this article</a> on <a href="http://www.wormly.com/blog/2008/11/05/relay-gmail-google-smtp-postfix/" rel="external">relaying mail through Google SMTP with postfix on Snow Leopard</a> and it saved my life.</p>
<p>I don&#8217;t have a lot of time to describe everything, but just follow <a href="http://www.wormly.com/blog/2008/11/05/relay-gmail-google-smtp-postfix/" rel="external">life-saving article</a> </p>
<p><strong>Thanks, <a href="http://www.wormly.com/blog/">Jules</a>.</strong> You literally saved me hundreds to even thousands of dollars in time/energy.</p>
<p>Now everyone, say thanks to Jules&hellip;</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2010/postfix-sendmail-broken-on-os-x-since-installing-fios/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updated: Shared PHP Hosting &amp; WordPress Malware Hack&#160;Fix</title>
		<link>http://theandystratton.com/2010/shared-godaddy-hosting-wordpress-malware-hack-fix</link>
		<comments>http://theandystratton.com/2010/shared-godaddy-hosting-wordpress-malware-hack-fix#comments</comments>
		<pubDate>Tue, 18 May 2010 03:55:47 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=407</guid>
		<description><![CDATA[*UPDATE* Reports of leading whitespace being left in the files after the fix script has been ran led me to build the cleaner, a script to, well clean up that leading whitespace. I have also updated the download of the fix on this page to strip leading white space. So GoDaddy wasn&#8217;t the only host [...]]]></description>
			<content:encoded><![CDATA[<div style="border:1px solid #ccc;background:#f7f7a7;padding:1em"><strong>*UPDATE*</strong> Reports of leading whitespace being left in the files after the fix script has been ran led me to build <a href="http://theandystratton.com/2010/shared-hosting-fix-uhm-fix">the cleaner</a>, a script to, well clean up that leading whitespace.</p>
<p>I have also updated the download of <a href="/downloads/2010-hack/shared-hosting-fix.php.txt">the fix on this page</a> to strip leading white space.</div>
<p>So <a href="http://godaddy.com" rel="external nofollow">GoDaddy</a> wasn&#8217;t the only host attacked by this malware PHP hack. I&#8217;ve found traces on client&#8217;s <a href="http://www.bluehost.com" rel="external nofollow">BlueHost shared Linux hosting</a> as well. Apparently some other hosts, including <a href="http://www.networksolutions.com" rel="external nofollow">Network Solutions</a>. </p>
<p>One host I use (along with multiple clients) who I haven&#8217;t seen or heard about being affected is <a href="http://www.hostgator.com" rel="external nofollow">HostGator</a>. My dedicated box(es) have not been affected either.</p>
<p>This is NOT an issue exclusive to WordPress installs. Tons of WordPress installations have been affected but WordPress is currently the most-installed PHP/MySQL web application on the web today, especially in these shared Linux hosting environments. I&#8217;ve seen this same attack affect sites with basic PHP files using only <code>include</code> statements as well as other PHP/MySQL applications such as <span title="Joomla really">Joomla</span> (<em>*shudder*</em>).</p>
<h2>What the attack seems to be doing</h2>
<ul>
<li>Adding a line of <code>base64</code> encrypted PHP to be evaluated before most PHP scripts run</li>
<li>Common strings in hacked files include:
<ul>
<li><code>&lt;?php eval(base64_decode(</code></li>
<li><code>&lt;?php eval(gzinflate(base64_decode(</code></li>
</ul>
<li>Some of this code is injecting content into your page&#8217;s output for search engines, some redirecting users</li>
<li>I&#8217;ve found some sites commonly have the file <code>./wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/style.css.php</code> which is a lot of <code>eval()</code> wrapped <code>base64</code> encoded strings (it&#8217;s been recursively encrypted and after 15 iterations I needed to get back to client work)</li>
<li>I also found some files without extensions in the <code>./wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/</code> directory (<a href="/downloads/2010-hack/t.txt">t (looks to be a template)</a>, <a href="/downloads/2010-hack/lb.txt">lb (links, link back perhaps?)</a> and <a href="/downloads/2010-hack/kwd.txt">kwd (keywords)</a> &mdash; there was also a file named <code>cnf</code> which looked to be encrypted configuration for the hack as well as another file called <code>csi</code> which contained an IP and Unix timestamp.</li>
</ul>
<h2>Updated Fix for the Hosting Hack</h2>
<p>Please note: this is not an all comprehensive fix. This can help clear out some code very quickly but you should still take some drastic efforts (<a href="#do-more">see below</a>) to clean up your site and protect yourself.</p>
<h3><a href="/downloads/2010-hack/shared-hosting-fix.php.txt">Download Shared Hosting Attack Fix &raquo;</a></h3>
<p><strong>Instructions:</strong></p>
<ol>
<li><strong>Make time <em>this week</em> to figure out and implement a plan for backing up your site and database,</strong> either via your hosting provider, your own shell scripts, or <a href="http://www.vaultpress.com" rel="external nofollow">VaultPress.com</a> is looking very good right now if you&#8217;re on WordPress.</li>
<li><strong>Back up your site files.</strong> Even if they are hacked, get a copy of everything locally just in case.</li>
<li>Download <a href="/downloads/2010-hack/shared-hosting-fix.php.txt"><code>shared-hosting-fix.php.txt</code></a> and rename it <code>shared-hosting-fix.php</code></li>
<li>Place the file somewhere in your document root and visit it in a browser to review what files are <q>infected</q>. If you&#8217;re not seeing affected files here, make sure the contents of the <code>$hack_str</code> variable on line 30 is the same as the beginning of the hack&#8217;s code. Some have been different by a space here and there, which will affect this clean up script.</li>
<li>If you have infected files, you can press the &#8220;Fix Files&#8221; button at the bottom of the page to start the automated task of removing the first line of malicious code</li>
<li>Confirm that you want to make the changes on the popups and you will see a simple log display when all is said and done</li>
<li>Back up your clean(er) files and <a href="#do-more">take more steps to audit your files and database</a> to try to avoid recurrence</li>
</ol>
<h2 id="do-more">Do More to Clean Up and Protect Yourself (WordPress)</h2>
<p>Just a few notes about other things you can (and should) do:</p>
<ul>
<li><strong>Make regular backups</strong> &mdash; Lazy? Checkout <a href="http://vaultpress.com" rel="external">VaultPress</a></li>
<li><strong>Clear any and all cache files on your server.</strong> I&#8217;d literally de-activate the caching plugins, remove them and their associated directories and then download and re-install them</li>
<li>Back up your <code>wp-config.php</code> file and <code>wp-content</code> directory then completely remove all of your WordPress files and directories, then re-upload from a fresh and up-to-date <a href="http://wordpress.org/latest.zip" rel="external nofollow">WordPress install</a>. <strong>Audit your <code>wp-content</code> directories and <code>wp-config.php</code> file</strong> before re-uploading.</li>
<li>Use some WP Security plugins:
<ul>
<li><a href="http://wordpress.org/extend/plugins/wp-security-scan/" rel="external nofollow">WP Security Scan</a></li>
<li><a href="http://wordpress.org/extend/plugins/wordpress-file-monitor/" rel="external nofollow">WordPress File Monitor</a></li>
<li><a href="http://wordpress.org/extend/plugins/exploit-scanner/" rel="external nofollow">WordPress Exploit Scanner</a></li>
</ul>
</li>
<li>Check your database, specifically the <code>wp_options</code> table for suspicious code (see Chris Pearson&#8217;s post below, <a href="http://www.pearsonified.com/2010/04/wordpress-pharma-hack.php" rel="external nofollow">How to Diagnose and Remove the WordPress Pharma Hack</a></li>
</ul>
<h2>WordPress Security Reference Links</h2>
<p>Thanks to some friends at <a href="http://automattic.com" rel="external nofollow">Automattic</a> and in the WordPress community, here are some links for your reference:</p>
<ul>
<li><a href="http://www.slideshare.net/williamsba/wordpress-security-1709496" rel="external nofollow">WordPress Security Presentation</a><br />A great WP security presentation by Brad Williams of <a href="http://webdevstudios.com/" rel="external nofollow">WebDevStudios</a></li>
<li><a href="http://codex.wordpress.org/Hardening_WordPress#Securing_wp-admin" rel="external nofollow">Securing wp-admin</a></li>
<li><a href="http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.php" rel="external nofollow">Securing wp-config.php</a></li>
<li><a href="http://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content" rel="external nofollow">Moving wp-content</a></li>
<li><a href="http://codex.wordpress.org/Installing_WordPress_With_Clean_Subversion_Repositories" rel="external nofollow">Installing WP with Clean SVN Repositories</a></li>
<li>If you&#8217;re a busy, well-to-do, business person who just doesn&#8217;t have the time, you could <a href="/contact?quote">contact and hire</a> a <a href="http://theandystratton.com">outstanding WordPress and PHP developer</a> and occasional blogger&hellip; <code>&lt;/shamless_self_promotion&gt;</code>
</ul>
<h2>Some Reference Posts For Reading:</h2>
<ul>
<li><a href="http://www.wpsecuritylock.com/dangerous-malware-alert-hacked-godaddy-responds/" rel="external nofollow">CONTINUING STORY – Dangerous Malware Alert – Self-Hosted Sites Hack Update –  Go Daddy Responds! | WPSecurityLock</a></li>
<li><a href="http://blog.sucuri.net/2010/05/simple-cleanup-solution-for-latest.html" rel="external nofollow">Simple cleanup solution for the latest WordPress hack</a></li>
<li><a href="http://smackdown.blogsblogsblogs.com/2010/05/13/hosting-with-godaddy-might-want-to-rethink-that-decision/" rel="external nofollow">http://smackdown.blogsblogsblogs.com/2010/05/13/hosting-with-godaddy-might-want-to-rethink-that-decision/</a></li>
<li><a href="http://www.pearsonified.com/2010/04/wordpress-pharma-hack.php" rel="external nofollow">How to Diagnose and Remove the WordPress Pharma Hack</a></li>
<li><a href="http://www.blogtips.org/how-to-cure-your-godaddy-wordpress-hacked-blog/" rel="nofollow external">How to cure your GoDaddy WordPress hacked blog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2010/shared-godaddy-hosting-wordpress-malware-hack-fix/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>GoDaddy Shared Linux Hosting Hack&#160;Fix</title>
		<link>http://theandystratton.com/2010/godaddy-shared-linux-hosting-hack-fix</link>
		<comments>http://theandystratton.com/2010/godaddy-shared-linux-hosting-hack-fix#comments</comments>
		<pubDate>Wed, 12 May 2010 18:38:06 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=396</guid>
		<description><![CDATA[Note: an update has been posted regarding the content of this post. You&#8217;ve read all the articles and seen all the tweets. I won&#8217;t comment on my personal/professional opinions of GoDaddy&#8217;s shared Linux hosting. What I will do is try to help out my fellow web professional recover from the recurring hacks in GoDaddy&#8217;s shared [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Note: </strong> an <a href="http://theandystratton.com/2010/shared-godaddy-hosting-wordpress-malware-hack-fix">update has been posted</a> regarding the content of this post.</p>
<p>You&#8217;ve <a href="http://techrepublic.com.com/5208-6230-0.html?forumID=8&amp;threadID=195624&amp;start=0">read</a> <a href="http://www.zdnet.com/blog/ou/godaddy-hosting-customers-victim-to-massive-hack/239">all</a> <a href="http://www.wpsecuritylock.com/dangerous-malware-alert-hacked-godaddy-responds/">the articles</a> and seen <a href="http://twitter.com/randem/status/13859913841">all</a> <a href="http://twitter.com/davesoucy/status/13844786056">the</a> <a href="http://twitter.com/theandystratton/status/13859769908">tweets</a>. I won&#8217;t comment on my personal/professional opinions of GoDaddy&#8217;s shared Linux hosting. What I will do is try to help out my fellow web professional recover from the recurring hacks in GoDaddy&#8217;s shared Linux hosting environment.</p>
<p><strong>I WILL SAY THIS:</strong> This is <em>not</em> a <a rel="external" href="http://wordpress.org">WordPress</a> issue. It&#8217;s a hosting environment issue. I have clients who were hacked that had no WordPress installation installed on their account.</p>
<h3>What Happened?</h3>
<p>Who knows. Bottom line, some doucher or group of douches have found vulnerabilities in the shared Linux hosting environment GoDaddy sells and have appended a line of <code>base64</code> encoded PHP to be evaluated before nearly every PHP file is launched. This is normally causing malware warnings in updated browsers and I&#8217;ve seen some spoofing/redirects to search engine spiders as well.</p>
<h3>What do I do?</h3>
<p>Revert to a back-up before a hack or remove the malicious line from each <code>.php</code> file in the entire directory tree of your hosting account.</p>
<h2>Fixing the GoDaddy Hosting <code>base64</code> Malware Hack</h2>
<p>I have created a very simple script to allow you to sniff for these files recursively and remove the first line of any files whose first line contains the string: &lt;<code>?php /**/ eval(base64_decode(</code></p>
<p>This <em>should</em> clear things up, but I offer no guarantee or warranty and am not liable for what this file does. It&#8217;s simply a fix I used on a few client sites.</p>
<h3><a rel="pop" href="/downloads/godaddy_hack_fix.php.txt">Download the Fix</a></h3>
<p><strong>Instructions:</strong></p>
<ol>
<li>Download the <a href="/downloads/godaddy_hack_fix.php.txt">GoDaddy Hosting Malware Hack fix</a></li>
<li>Rename the file <code>godaddy_hack_fix.php</code> and upload to your document root.</li>
<li>Visit the file in a browser, e.g. <code>http://yourdomain.com/godaddy_hack_fix.php</code></li>
<li>Review the location and number of files that are assumed infected and <strong>back them up</strong> (download them to your local machine in case of catastrophy)</li>
<li>At the bottom of the script&#8217;s output, there&#8217;s a <q>Fix Files</q> button. If you&#8217;re ready, press it and wait. It will tell you when it&#8217;s removed the malicious first line from the files.</li>
<li>I&#8217;d follow up by personally checking a few random files to ensure you seem right.</li>
</ol>
<p>This is a quick fix, but not complete. You should ideally remove and update from a back up, but let&#8217;s face it, most of us actually back things up. It&#8217;s human nature.</p>
<p>Much love. Let me know if this helped you out.</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2010/godaddy-shared-linux-hosting-hack-fix/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Book Review: jQuery 1.3 with PHP by Kae&#160;Verens</title>
		<link>http://theandystratton.com/2010/book-review-jquery-1-3-with-php-by-kae-verens</link>
		<comments>http://theandystratton.com/2010/book-review-jquery-1-3-with-php-by-kae-verens#comments</comments>
		<pubDate>Fri, 12 Feb 2010 03:45:10 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=339</guid>
		<description><![CDATA[I was contacted by Packt, a UK publishing firm specializing in IT books to review jQuery 1.3 with PHP by Kae Verens. I was very pleased to be contacted to review material that I specialize in. jQuery 1.3 with PHP is a book for experienced PHP programmers want to beef up the user experience of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.packtpub.com/jquery-1-3-with-php/mid/101209yp2yyr?utm_source=theandystratton.com&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_001794" rel="external nofollow"><img src="http://theandystratton.com/wp-content/uploads/2009/12/jQuery.png" alt="jQuery" title="jQuery" style="float: left;margin:0 1em 1em 0;border:.5em solid #fff;" /></a> I was contacted by Packt, a UK publishing firm specializing in IT books to review  <a href="http://www.packtpub.com/jquery-1-3-with-php/mid/101209yp2yyr?utm_source=theandystratton.com&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_001794" rel="external nofollow">jQuery 1.3 with PHP</a> by Kae Verens. I was very pleased to be contacted to review material that I specialize in. </p>
<p><a href="http://www.packtpub.com/jquery-1-3-with-php/mid/101209yp2yyr?utm_source=theandystratton.com&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_001794" rel="external nofollow">jQuery 1.3 with PHP</a> is a book for experienced PHP programmers want to beef up the user experience of their web applications by adding behaviors that help organize content, optimize the app and streamline the user&#8217;s workflow.</p>
<p>I&#8217;d recommend that any PHP developer using this have a basic understanding of Javascript and take a few very basic jQuery tutorials before beginning.</p>
<h3>Book Format</h3>
<p>The book functions as more of functional, real-world examples of building pieces of a content management system than a step-by-step tutorial. For better than novice PHP programmers, this is perfect, as you&#8217;ve probably already built similar features using HTML, CSS and PHP alone.</p>
<p>Example code is well organized and is clean, but it&#8217;s assumed that you&#8217;ve got a solid background in PHP programming and web application security. The book stays focused on it&#8217;s topic: jQuery and PHP.</p>
<h3>Book Content</h3>
<p>As described, the book focuses on real-world examples of features that you may include in a CMS or custom web application for a business:</p>
<ul>
<li><a href="#jq_basics">Intro/Basics</a></li>
<li><a href="#jq_tabs">jQuery UI Tabs/Accordions</a></li>
<li><a href="#jq_forms">Forms/Form Validation</a></li>
<li><a href="#jq_files">File Management &amp; Uploads</a></li>
<li><a href="#jq_cal">Calendar</a></li>
<li><a href="#jq_images">Images</a></li>
<li><a href="#jq_dragdrop">Drag/Drop/Sortable</a></li>
<li><a href="#jq_datatable">Data Tables</a></li>
<li><a href="#jq_optimize">Optimization</a></li>
</ul>
<p>Content is well organized and all examples use very current code and jQuery plugins. Although jQuery 1.4 was recently released, this book and it&#8217;s examples still serve as solid learning tools.</p>
<h4 id="jq_basics">Intro/Basics</h4>
<p>The book begins by explaining the assumptions about the audience (developers expected experience) and giving some introductions to jQuery as well as some quick tips to get novice jQueriers started.</p>
<h4 id="jq_tabs">jQuery UI Tabs/Accordions</h4>
<p>Tabs and accordions are discussed as a means of organizing content. In terms of a CMS, the book describes methods of using PHP to parse output dynamically into tab/accordion behaviors.</p>
<h4 id="jq_forms">Forms/Form Validation</h4>
<p>Form data and user-experience, including dynamic loading select elements (drop-down lists) and auto-complete are touched in on in the examples from this chapter. Client-side form validation is also shown, in coordination with server-side validation, incorporating the use of the validation jQuery plugin.</p>
<p>I do appreciate that the book touches on the importance and necessity of server-side validation. Form validation with Javascript, in my opinion, should always be a form of progressive enhancement. Forms should always be validated at the server-level for accuracy and security purposes.</p>
<h4 id="jq_files">File Management &amp; Uploads</h4>
<p>Some examples of creating basic file management features as well as handling file uploads are included in this chapter&#8217;s examples. A nice piece included here is the use of the <a href="http://www.uploadify.com" rel="nofollow external">Uploadify</a> jQuery plugin, which uses a flash document to allow users to upload multiple files at once, which is slowly becoming a standard for web apps that allow users to upload files.</p>
<h4 id="jq_cal">Calendar</h4>
<p>A nice chapter of this books deals with using a jQuery calendar plugin, which is a very impressive and dynamic feature. Although it&#8217;s not for beginners, the examples get the reader to a fairly strong amount of functionality with a clean and very dynamic calendar interface. With a solid understanding of PHP/MySQL programming, one could easily create a fully-functional calendar for their web application/CMS.</p>
<h4 id="jq_images">Images</h4>
<p>The chapter on images uses both server side programming with Image Magick, jQuery code and the jCrop image cropping plugin to create a image management features including resizing, scaling, rotation and cropping. The chapter also touches on outputting images to the buffer, file storage and caching.</p>
<p>This chapter is probably well suited for developers who have played with image manipulation before, and as with the <a href="#jq_cal">calendar chapter</a>, may require some extra time to follow and completely understand.</p>
<h4 id="jq_dragdrop">Drag/Drop/Sortable</h4>
<p>Sortable lists are discussed in the chapter, with examples including setting the sort order of elements such as website navigation/pages. The chapter also gets into connecting lists so that elements can be dragged between. A very valuable user experience behavior to incorporate into a number of features of your custom web application/CMS. </p>
<h4 id="jq_datatable">Data Tables</h4>
<p>The data table jQuery plugin is used as well to illustrate how to easily create sortable and searchable tables of data within your web application as well as create AJAX-powered pagination.</p>
<h4 id="jq_optimize">Optimization</h4>
<p>Aspects of optimizing your jQuery and PHP rich web applications is touched on in the final chapter and some great points are made with regards to:</p>
<ul>
<li>page load times</li>
<li>caching and compression</li>
<li>code organization and re-use</li>
<li>jQuery and Javasript code/memory optimization</li>
<li>Content Delivery Network (CDN) like Google and Yahoo!</li>
</ul>
<h3>Summary</h3>
<p>All in all I feel that <a href="http://www.packtpub.com/jquery-1-3-with-php/mid/101209yp2yyr?utm_source=theandystratton.com&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_001794" rel="external nofollow">jQuery 1.3 with PHP</a> would be a great resource for an experienced PHP programmer that wants to spice up the user experience of their new or existing web applications.</p>
<p>The examples are real-world scenarios that can be extrapolated on to create truly impressive web applications, especially if you&#8217;re building a customized content management system.</p>
<p><strong>Want to give it a read?</strong> You can purchase <a href="http://www.packtpub.com/jquery-1-3-with-php/mid/101209yp2yyr?utm_source=theandystratton.com&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_001794" rel="external nofollow">jQuery 1.3 with PHP</a> on the <a href="http://www.packtpub.com/jquery-1-3-with-php/mid/101209yp2yyr?utm_source=theandystratton.com&#038;utm_medium=affiliate&#038;utm_content=blog&#038;utm_campaign=mdb_001794" rel="external nofollow">Packt Publishing website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2010/book-review-jquery-1-3-with-php-by-kae-verens/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fix PHP&#8217;s mail() function after latest OS X (Leopard)&#160;update.</title>
		<link>http://theandystratton.com/2009/fix-phps-mail-function-after-latest-os-x-leopard-update</link>
		<comments>http://theandystratton.com/2009/fix-phps-mail-function-after-latest-os-x-leopard-update#comments</comments>
		<pubDate>Mon, 06 Jul 2009 14:05:42 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[sendmail]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=196</guid>
		<description><![CDATA[Jaspert Tandy just saved my life. Okay, maybe not, but he sure did make my day this morning. Why? He has a great post that gives you some simple steps to fix problems with sendmail/postfix on OS X (Leopard). The problem: I updated OS X and all of a sudden my local PHP installation isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jspr.tndy.me" rel="external">Jaspert Tandy</a> just saved my life. Okay, maybe not, but he sure did make my day this morning. Why? He has a <a href="http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/" rel="external">great post</a> that gives you some simple steps to <a href="http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/" rel="external">fix problems with sendmail/postfix on OS X (Leopard)</a>.</p>
<p><strong>The problem:</strong></p>
<p>I updated OS X and all of a sudden my local PHP installation isn&#8217;t sending mail. No errors, no warnings. Everything functions correctly but the mail never actually makes it to the inbox.</p>
<p><strong>The solution:</strong></p>
<p><a href="http://jspr.tndy.me" rel="external">Jasper</a> outlines the <a href="http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/" rel="external">the solution</a> in his great post. I&#8217;m going to mark the steps I took after reading his post, but by all means give the man a thank you, a beer, a hug, or something!</p>
<p>Open terminal, you&#8217;ll need it:</p>
<ol>
<li>
<strong>Turn on the mail server your hostconfig file:</strong><br />
Run <code>sudo nano -w /etc/hostconfig</code> in Terminal. Look for the line starting <code>MAILSERVER=</code>, if you don&#8217;t see it, add it and make sure it reads:</p>
<pre><code>MAILSERVER=-YES-</code></pre>
<p><a href="http://theandystratton.com/wp-content/uploads/2009/07/Picture-1.png" rel="pop"><img src="http://theandystratton.com/wp-content/uploads/2009/07/Picture-1-300x190.png" alt="Terminal - Edit hostconfig" title="Terminal - Edit hostconfig" width="300" height="190" class="alignnone size-medium wp-image-202" /></a>
</li>
<li>
<strong>Edit your posfix configuration file:</strong><br />
First, I normally backup a configuration file before messing with it, since I&#8217;m no Terminal guru. If you want to take this precaution too, run this command in Terminal: <code>sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.org</code></p>
<p>Now, run <code>sudo nano -w /etc/postfix/main.cf</code> and find the lines defining the <code>myhostname</code> variable. Remove the leading number/pound sign (<code>#</code>) to uncomment the declaration and set it&#8217;s value to something you own, or something you can recognize.</p>
<p><a href="http://theandystratton.com/wp-content/uploads/2009/07/Picture-2.png" rel="pop"><img src="http://theandystratton.com/wp-content/uploads/2009/07/Picture-2-300x190.png" alt="Terminal - Edit postfix config" title="Terminal - Edit postfix config" width="300" height="190" class="alignnone size-medium wp-image-202" /></a></p>
<p>Note that if you set this to something obscure like I have, your email messages without <code>from:</code> headers will send from your Apache user (mine&#8217;s <code>_www</code>) at this domain. For instance, my emails send from <code>_www@theandystratton.desktop.local</code>. These tend to be blocked by Gmail&#8217;s spam filter (and probably most spam filters).
</li>
<li>
<strong>Edit your php.ini just in case</strong><br />
<br />
Open your <code>php.ini</code> file and uncomment the <code>sendmail_path</code> variable by deleting the leading semicolon (<code>;</code>).</p>
<p>Set its value to <code>sendmail -t -i</code> so that line reads:<br />
</p>
<pre><code>sendmail_path = "sendmail -t -i"</code></pre>
<p>Restart Apache so the setting applies to you PHP install.
</li>
<li>
<strong>Test your mail() script.</strong><br />
<br />
Run a sample PHP script to see if you&#8217;re able to send mail. If you&#8217;d like to see what&#8217;s going on or get a confirmation from your log files that the email is working, check out <a href="http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/" rel="external">Jasper&#8217;s tip using tail</a> to show what&#8217;s happening with sendmail/postfix in Terminal in real time.
</li>
</ol>
<p>Did it work for you? <a href="http://jspr.tndy.me/2008/05/php-mail-and-osx-leopard/#commentform" rel="external">Send Jasper some love</a> and thank him. This is an aggregation of his solution and a journal of what helped me, in hopes that his solution can reach more people.</p>
<p>Thanks again, Jasper.</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2009/fix-phps-mail-function-after-latest-os-x-leopard-update/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Show total number of search results in your WordPress search&#160;template</title>
		<link>http://theandystratton.com/2009/show-total-search-results-wordpress-search-template</link>
		<comments>http://theandystratton.com/2009/show-total-search-results-wordpress-search-template#comments</comments>
		<pubDate>Sat, 06 Jun 2009 18:58:51 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=163</guid>
		<description><![CDATA[In prepping the new site design for theandystratton.com, I wanted to show the total number of search results on my search page. I started by displaying a count($posts), but since I&#8217;ve got my installation showing 5 posts per page, that consistently displayed 5 or less posts. Less than desirable. So, the next step was duplicating [...]]]></description>
			<content:encoded><![CDATA[<p>In prepping the new site design for <a href="http://theandystratton.com" rel="me">theandystratton.com</a>, I wanted to show the total number of search results on my search page.</p>
<p>I started by displaying a <code>count($posts)</code>, but since I&#8217;ve got my installation showing 5 posts per page, that consistently displayed 5 or less posts. Less than desirable.</p>
<p>So, the next step was duplicating the search query so I could get the count, and as usual I like to try to use the WordPress functions as opposed to touching the database directly:</p>
<pre class="brush: php;">&amp;lt;?php
$tmp_search = new WP_Query('s=' . wp_specialchars($_GET['s']) . '&amp;amp;show_posts=-1');
$count = $tmp_search-&amp;gt;post_count;
echo $count . ' results for ' . htmlentities($_GET['s']) . '.';
?&amp;gt;</pre>
<p>Unfortunately, the code above still gave me the wrong count. Why? My settings were still set to 5 posts per page; and the WP Query object as assuming this constraint.</p>
<p><strong>The Solution:</strong> send <code>posts_per_page=-1</code> as part of the query.</p>
<pre class="brush: php;">&amp;lt;?php
$tmp_search = new WP_Query('s=' . wp_specialchars($_GET['s']) . '&amp;amp;show_posts=-1&amp;amp;posts_per_page=-1');
$count = $tmp_search-&amp;gt;post_count;
echo $count . ' results for ' . htmlentities($_GET['s']) . '.';
?&amp;gt;</pre>
<p>&hellip;and there you have it. A nice functional search results page. For even further refinement, I&#8217;m limiting my search to blog posts, and excluding pages by including <code>post_type=post</code> in my query.</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2009/show-total-search-results-wordpress-search-template/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>jQuery Populate Plugin &#8211; Accessibly auto-populate text inputs with&#160;ease.</title>
		<link>http://theandystratton.com/2009/jquery-populate-plugin-accessibly-auto-populate-text-inputs-with-ease</link>
		<comments>http://theandystratton.com/2009/jquery-populate-plugin-accessibly-auto-populate-text-inputs-with-ease#comments</comments>
		<pubDate>Wed, 29 Apr 2009 02:44:41 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=105</guid>
		<description><![CDATA[As a follow up to my original post, I decided to take a stab at a jQuery plugin that people can use with ease. It&#8217;s very simple, simple send a selector string to the jQuery function and call the populate() method: Let&#8217;s assume the following markup in the body: &#38;lt;form method=&#38;quot;post&#38;quot; action=&#38;quot;process_form.php&#38;quot;&#38;gt; &#38;lt;p&#38;gt; &#38;lt;label for=&#38;quot;name&#38;quot;&#38;gt;Enter [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow up to my original post, I decided to take a stab at a jQuery plugin that people can use with ease.</p>
<p>It&#8217;s very simple, simple send a selector string to the jQuery function and call the <code>populate()</code> method:</p>
<p>Let&#8217;s assume the following markup in the body:</p>
<pre class="brush: xml;">
&amp;lt;form method=&amp;quot;post&amp;quot; action=&amp;quot;process_form.php&amp;quot;&amp;gt;
&amp;lt;p&amp;gt;
    &amp;lt;label for=&amp;quot;name&amp;quot;&amp;gt;Enter your name:&amp;lt;/label&amp;gt;
    &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;name&amp;quot; id=&amp;quot;name&amp;quot; class=&amp;quot;autopop&amp;quot; title=&amp;quot;Enter your name...&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/form&amp;gt;
</pre>
<pre class="brush: xml;">
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.j&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;jquery.populate.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
$(function(){
    $(&amp;quot;form input.autopop&amp;quot;).populate({color: &amp;quot;#999&amp;quot;});
});
&amp;lt;/script&amp;gt;
</pre>
<p>It&#8217;s that simple. It&#8217;s fast, elegant, and accessible. You can even send an optional settings object with a <code>color</code> property. This will be used for the auto-populated text&#8217;s color.</p>
<p><a href="http://theandystratton.com/examples/jquery/populate/" rel="external">See the demo</a>, or <a href="http://theandystratton.com/examples/jquery/populate/populate.zip">download the zip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2009/jquery-populate-plugin-accessibly-auto-populate-text-inputs-with-ease/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>HTTP Status and Server Header Checker &#8211;&#160;CheckMyHeaders.com</title>
		<link>http://theandystratton.com/2009/http-status-and-server-header-checker-checkheadercom</link>
		<comments>http://theandystratton.com/2009/http-status-and-server-header-checker-checkheadercom#comments</comments>
		<pubDate>Fri, 13 Mar 2009 01:45:03 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://theandystratton.com/?p=77</guid>
		<description><![CDATA[I released a new tool tonight. You&#8217;ve seen it a million times, an HTTP Status Checker; I just wanted a better experience for myself &#8212; so why not share it with you? Just visit CheckMyHeaders.com and enjoy. What&#8217;s so great? Well, I&#8217;m sure I&#8217;m partial because I built it, but here are a few of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://checkmyheaders.com" rel="external nofollow"><img src="http://theandystratton.com/wp-content/uploads/2009/03/opensearch-ch.jpg" alt="CheckHeader.com OpenSearch Firefox Mac" style="float:left;margin: 0 1em 1em 0;border:1px solid #ccc;" /></a> I released a new tool tonight. You&#8217;ve seen it a million times, an <a href="http://checkheader.com" rel="external">HTTP Status Checker</a>; I just wanted a better experience for myself &#8212; so why not share it with you?</p>
<p>Just visit <a href="http://checkmyheaders.com" rel="external nofollow">CheckMyHeaders.com</a> and enjoy.</p>
<p><strong>What&#8217;s so great?</strong></p>
<p>Well, I&#8217;m sure I&#8217;m partial because I built it, but here are a few of the perks:</p>
<ul>
<li>Clean, simple interface</li>
<li>Easy to remember URL: <a href="http://checkmyheaders.com" rel="external nofollow">http://checkmyheaders.com</a> &#8211; no more search or bookmark clicks</li>
<li>OpenSearch support for Firefox and IE 7 toolbars</li>
<li>Bookmarklet support for Safari/Chrome</li>
<li>Support for SSL links</li>
</ul>
<p>Let me know what you think, if you like it, link it up!</p>
]]></content:encoded>
			<wfw:commentRss>http://theandystratton.com/2009/http-status-and-server-header-checker-checkheadercom/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
