<?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>Henry Petry</title>
	<atom:link href="http://www.henrypetry.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.henrypetry.com</link>
	<description>Unstacking the LAMP Stack</description>
	<lastBuildDate>Thu, 02 May 2013 02:45:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Camping in Black Mountain</title>
		<link>http://www.henrypetry.com/camping-in-black-mountain/</link>
		<comments>http://www.henrypetry.com/camping-in-black-mountain/#comments</comments>
		<pubDate>Thu, 02 May 2013 02:41:21 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=633</guid>
		<description><![CDATA[<p>A few photos from our recent weekend camping trip to Black Mountain, North Carolina. ...<a class="post-readmore" href="http://www.henrypetry.com/camping-in-black-mountain/">read more</a></p><p>The post <a href="http://www.henrypetry.com/camping-in-black-mountain/">Camping in Black Mountain</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/camping-in-black-mountain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log Failed WordPress Login Attempts</title>
		<link>http://www.henrypetry.com/log-failed-wordpress-login-attempts/</link>
		<comments>http://www.henrypetry.com/log-failed-wordpress-login-attempts/#comments</comments>
		<pubDate>Sun, 04 Nov 2012 19:50:13 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=579</guid>
		<description><![CDATA[<p>This blog is powered by WordPress. I&#8217;m the only one who writes articles and therefore the only one authorized to login to the WordPress backend. It&#8217;s common knowledge that the default WordPress backend is located at http://www.blogname.com/wp-admin/. So I became curious if anyone else was trying to login to my WordPress account. I decided to ...<a class="post-readmore" href="http://www.henrypetry.com/log-failed-wordpress-login-attempts/">read more</a></p><p>The post <a href="http://www.henrypetry.com/log-failed-wordpress-login-attempts/">Log Failed WordPress Login Attempts</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/log-failed-wordpress-login-attempts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jailing Failed phpMyAdmin Attempts with Fail2Ban</title>
		<link>http://www.henrypetry.com/phpmyadmin-fail2ban/</link>
		<comments>http://www.henrypetry.com/phpmyadmin-fail2ban/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 15:37:44 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Fail2Ban]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=436</guid>
		<description><![CDATA[<p>After consolidating all of my websites onto a Linode VPS, I&#8217;ve had more time to devote to scanning my log files. &#160;After seeing various failed attempts at trying to locate phpMyAdmin on my system, I decided to implement a Fail2Ban jail to block the incoming IP address. &#160;If you are not familiar with Fail2Ban, see ...<a class="post-readmore" href="http://www.henrypetry.com/phpmyadmin-fail2ban/">read more</a></p><p>The post <a href="http://www.henrypetry.com/phpmyadmin-fail2ban/">Jailing Failed phpMyAdmin Attempts with Fail2Ban</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/phpmyadmin-fail2ban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving to a Linode Virtual Server</title>
		<link>http://www.henrypetry.com/moving-linode-virtual-server/</link>
		<comments>http://www.henrypetry.com/moving-linode-virtual-server/#comments</comments>
		<pubDate>Mon, 17 Sep 2012 20:56:29 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=499</guid>
		<description><![CDATA[<p>I finally took one whole weekend to consolidate all of my various websites off of different shared hosting and virtual private server sites. &#160;I had made a quick checklist of all of the features I wanted in one location. &#160;After lots of research I decided to go with Linode.com. &#160;Here are some of the key ...<a class="post-readmore" href="http://www.henrypetry.com/moving-linode-virtual-server/">read more</a></p><p>The post <a href="http://www.henrypetry.com/moving-linode-virtual-server/">Moving to a Linode Virtual Server</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/moving-linode-virtual-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Fail2Ban on Debian</title>
		<link>http://www.henrypetry.com/installing-fail2ban-debian/</link>
		<comments>http://www.henrypetry.com/installing-fail2ban-debian/#comments</comments>
		<pubDate>Wed, 15 Aug 2012 23:36:35 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Fail2Ban]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=518</guid>
		<description><![CDATA[<p>Servers are routinely exposed to a barrage of attempts to gain unauthorized access. &#160;Common targets include SSH, SMTP, HTTP authentication, and FTP services. &#160;Fail2Ban is a great tool to block automated attempts to compromise your system. First make sure your package repositories and installed programs are up-to-date: To install Fail2Ban on Debian and Ubuntu systems, ...<a class="post-readmore" href="http://www.henrypetry.com/installing-fail2ban-debian/">read more</a></p><p>The post <a href="http://www.henrypetry.com/installing-fail2ban-debian/">Installing Fail2Ban on Debian</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/installing-fail2ban-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protecting Web Forms from XSS and CSRF Attacks</title>
		<link>http://www.henrypetry.com/protecting-web-forms-from-xss-and-csrf-attacks/</link>
		<comments>http://www.henrypetry.com/protecting-web-forms-from-xss-and-csrf-attacks/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 17:39:22 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=362</guid>
		<description><![CDATA[<p>Cross-site scripting (XSS) and Cross-site request forgery (CSRF) are two types of malicious web form exploits. Their effect may range from a nuisance to a significant security risk, depending on the sensitivity of the data handled by the vulnerable website. I like to protect my web forms with a hashed key or token. &#160;Securing a ...<a class="post-readmore" href="http://www.henrypetry.com/protecting-web-forms-from-xss-and-csrf-attacks/">read more</a></p><p>The post <a href="http://www.henrypetry.com/protecting-web-forms-from-xss-and-csrf-attacks/">Protecting Web Forms from XSS and CSRF Attacks</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/protecting-web-forms-from-xss-and-csrf-attacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Clarity with Class Constants</title>
		<link>http://www.henrypetry.com/code-clarity-with-class-constants/</link>
		<comments>http://www.henrypetry.com/code-clarity-with-class-constants/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 22:27:24 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=289</guid>
		<description><![CDATA[<p>I enjoy refactoring legacy code, especially when I can add clarity to ambiguous business rules by using class constants. Consider the following line of code: Now we are left with only a handfull of ways to know the true meaning of &#8217;1&#8242; and &#8217;100&#8242;: Hope the previous developer wrote detailed code comments Hope there is ...<a class="post-readmore" href="http://www.henrypetry.com/code-clarity-with-class-constants/">read more</a></p><p>The post <a href="http://www.henrypetry.com/code-clarity-with-class-constants/">Code Clarity with Class Constants</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/code-clarity-with-class-constants/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Incremental Counting Using MYSQL</title>
		<link>http://www.henrypetry.com/incremental-counting-using-mysql/</link>
		<comments>http://www.henrypetry.com/incremental-counting-using-mysql/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 14:00:51 +0000</pubDate>
		<dc:creator>henry</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.henrypetry.com/?p=22</guid>
		<description><![CDATA[<p>Recently I was asked to create a report which would find bad customers who are abusing our service.  I mean really bad customers like the ones who continually bounce checks, use bad credit cards, etc.  Now since everyone makes mistakes, we decided to give them at least three chances before we dropped them entirely from our client list.

Finding bad customers who need be dropped is the easy part.  We already have a table which contained customer notes.  Whenever a customer does something 'really bad' we automatically disable their account and enter a note which contains the phrase 'Account Disabled'.  ...<a class="post-readmore" href="http://www.henrypetry.com/incremental-counting-using-mysql/">read more</a></p><p>The post <a href="http://www.henrypetry.com/incremental-counting-using-mysql/">Incremental Counting Using MYSQL</a> appeared first on <a href="http://www.henrypetry.com">Henry Petry</a>.</p>]]></description>
		<wfw:commentRss>http://www.henrypetry.com/incremental-counting-using-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
