<?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>dizzysoft software &#187; Web</title>
	<atom:link href="http://www.dizzysoft.com/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dizzysoft.com</link>
	<description></description>
	<lastBuildDate>Mon, 02 Jan 2012 22:16:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blog Comment Links for SEO</title>
		<link>http://www.dizzysoft.com/web/blog-comment-links-for-seo/</link>
		<comments>http://www.dizzysoft.com/web/blog-comment-links-for-seo/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 01:58:04 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.dizzysoft.com/?p=372</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
As a professional SEO I know how important links are to achieving rankings from Google. As such, I know the temptation to find a link in any place you can in order to achieve your desired SEO results. For some people, this means trying to build links through blog commenting. For others it means using [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p><img class="alignright size-medium wp-image-373" title="dofollow blog comments is what many SEOs are looking for" src="http://www.dizzysoft.com/wp-content/uploads/comment-300x244.png" alt="" width="300" height="244" />As a professional SEO I know how important links are to achieving rankings from Google. As such, I know the temptation to find a link in any place you can in order to achieve your desired SEO results. For some people, this means trying to build links through blog commenting. For others it means using automated software to build a massive quantity of blog comments with the hopes that some of them will give their webpage authority in Google&#8217;s eyes.</p>
<p>Because of this, a couple years ago, Google rolled-out the <strong>nofollow</strong> tag. When you add this parameter to your link, you are telling Google that you are not vouching for the site at the receiving end of the link. Although some say the nofollowed link still passes value, most agree they nolonger do.</p>
<p>This created a demand for <strong>dofollow</strong> <strong>blogs</strong>- blogs that do not automatically add the nofollow attribute to links- so the blog comments can pass authority to a website they are linking to. This created a demand for websites that list dofollow blogs. Some developers even created WordPress plugins (since it is one of the most popular blogging platforms) that specifically offers blog commenters dofollow links, such as Link Love or CommentLuv.</p>
<p>Of course, the goldmine for any SEO doing blog comments for links is an <strong>auto-approve</strong>, dofollow blog. This not only gives the authority for the link but bypasses the pesky and slow process of manual approval.</p>
<p>All this is done in the hopes of building some links, to pass authority to a website, with the hopes of improving the receiving site&#8217;s rankings in Google. The <a href="http://seorisk.com/technique/blog_comments_with_links">blog commenting for link building</a> is a risky SEO tactic, but many still do it- whether manually or using specialized blog commenting software.</p>
<p><del datetime="2011-12-30T20:05:34+00:00">Since so many people still think this is valuable enough to keep doing, I&#8217;m going to make this blog post a repository for blog comments. I will approve every blog comment for this post- whether automated or manually submitted. Some of them will be funny. Some will be sad. All will be an interesting look into the measures some SEOs will take to improve their rankings.</del></p>
<p><ins datetime="2011-12-30T20:05:34+00:00">Update: I think this post attracted a swarm of spambots- which have overwhelmed me with hundreds of comments. I understand that I was asking for it but nothing I did seemed to solve this problem. Then I installed the <a href="http://www.growmap.com/growmap-anti-spambot-plugin/">GrowMap Anti-Spambot Plugin</a>. It was solved almost immediately!</ins></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/rss-feeds/twitter-seo-linkbuilding/" rel="bookmark" class="crp_title">More on Twitter SEO Link Building</a></li><li><a href="http://www.dizzysoft.com/twitter/twitter-seo/" rel="bookmark" class="crp_title">Can you use Twitter for SEO?</a></li><li><a href="http://www.dizzysoft.com/twitter/google-twitter-seo/" rel="bookmark" class="crp_title">Google, Twitter and SEO</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/blog-comment-links-for-seo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Trying a couple comment plugins on my blog</title>
		<link>http://www.dizzysoft.com/web/trying-a-couple-comment-plugins-on-my-blog/</link>
		<comments>http://www.dizzysoft.com/web/trying-a-couple-comment-plugins-on-my-blog/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 14:14:11 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.dizzysoft.com/?p=277</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
Help me out with a couple comments (or even a Re-Tweet) and you might just get a little reward! Related Posts:Blog Comment Links for SEO4 SEO Improvements to your Twitter AccountDoes FeedTwit Support Terrorism?]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p><img class="alignnone size-medium wp-image-279" src="http://www.dizzysoft.com/wp-content/uploads/pilot_car_follow_me_signs-300x182.jpg" alt="" width="300" height="182" /></p>
<p>Help me out with a couple comments (or even a Re-Tweet) and you might just get a little reward!</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/web/blog-comment-links-for-seo/" rel="bookmark" class="crp_title">Blog Comment Links for SEO</a></li><li><a href="http://www.dizzysoft.com/twitter/4-seo-improvements-to-your-twitter-account/" rel="bookmark" class="crp_title">4 SEO Improvements to your Twitter Account</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/does-feedtwit-support-terrorism/" rel="bookmark" class="crp_title">Does FeedTwit Support Terrorism?</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/trying-a-couple-comment-plugins-on-my-blog/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>convert b2evolution to WordPress</title>
		<link>http://www.dizzysoft.com/web/b2evolution/b2evolution-wordpress/</link>
		<comments>http://www.dizzysoft.com/web/b2evolution/b2evolution-wordpress/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 21:42:24 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[b2evolution]]></category>

		<guid isPermaLink="false">http://www.dizzysoft.com/?p=105</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
I used the b2evolution program for over 5 years now but recently migrated over to WordPress. If you would like to make this same migration, I would like to offer my experience as services to you. As a professional SEO I can offer further assistance to take your b2evolution website to the next level. Pay [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p>I used the b2evolution program for over 5 years now but recently migrated over to WordPress.</p>
<p>If you would like to make this same migration, I would like to offer my experience as services to you. As a professional SEO I can offer further assistance to take your b2evolution website to the next level.</p>
<p>Pay for these services can be negotiated on a case-by-case basis. Payments can be accepted by snail mail or online through PayPal.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/rss-feeds/create_a_mailing_list_using_rss/" rel="bookmark" class="crp_title">Create a mailing list using RSS</a></li><li><a href="http://www.dizzysoft.com/about-dizzysoft/dizzysoft-now-takes-paypal/" rel="bookmark" class="crp_title">Dizzysoft now takes PayPal</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/using_rss_in_the_church_2/" rel="bookmark" class="crp_title">Using RSS in the church- getting the message (part 2 of2)</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/b2evolution/b2evolution-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with Technorati</title>
		<link>http://www.dizzysoft.com/web/working-with-technorati/</link>
		<comments>http://www.dizzysoft.com/web/working-with-technorati/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 13:47:45 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
I am investigating the benefits of connecting this blog to technorati.com. I&#8217;ll keep you informed if I think this is worth the time. WK4VB2YRRCGX Related Posts:10 or more ways to make your own RSS feed for freeDownload Free Trial of MileageBlog Comment Links for SEO]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p>I am investigating the benefits of connecting this blog to <a href="http://technorati.com/">technorati.com</a>. I&#8217;ll keep you informed if I think this is worth the time.</p>
<p>WK4VB2YRRCGX</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/rss-feeds/10-or-more-ways-to-make-your-own-rss/" rel="bookmark" class="crp_title">10 or more ways to make your own RSS feed for free</a></li><li><a href="http://www.dizzysoft.com/palm-software/mileage/download-free-trial-of-mileage/" rel="bookmark" class="crp_title">Download Free Trial of Mileage</a></li><li><a href="http://www.dizzysoft.com/web/blog-comment-links-for-seo/" rel="bookmark" class="crp_title">Blog Comment Links for SEO</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/working-with-technorati/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How will Google integrate Twitter in their search results?</title>
		<link>http://www.dizzysoft.com/web/how-will-google-integrate-twitter/</link>
		<comments>http://www.dizzysoft.com/web/how-will-google-integrate-twitter/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 23:18:00 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
The big announcement Wednesday about Google integrating Twitter updates into its search results has made me wonder how this might affect natural search. It all depends on how they include Twitter in the results. Clearly this is an attempt to make its results more time-relevant. Lots of electrons have been used to describe what Google [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p>The big announcement Wednesday about <a href="http://blog.twitter.com/2009/10/google-nice.html" rel="nofollow">Google integrating Twitter updates into its search results</a> has made me wonder how this might affect natural search. It all depends on how they include Twitter in the results. </p>
<p><img src="http://www.zimorama.com/media/blogs/dizzysoft/michael-jackson-google.jpg" alt="Google learned from Twitter during Michael Jackson's death" title="" width="256" height="452" class="leftmargin" />Clearly this is an attempt to make its results more time-relevant. Lots of electrons have been used to describe what Google did when Michael Jackson died- so many people searched for news that Google thought it was a malware attack and started blocking anyone searching for &#8220;Michael Jackson&#8221;. Meanwhile Twitter, who had recently added a search box to their homepage, emerged as a real-time search engine by keeping everyone informed with the latest information. Google has to integrate Twitter into its search results or it will not be useful or relevant in times like these.</p>
<p>As a matter of fact (and irony) a search of &#8220;<a rel="nofollow" href="http://www.google.com/search?q=michael+jackson">Michael Jackson</a>&#8221; in Google can give us a glimpse into how Google might include Twitter updates into its search results. Now your page might vary but here&#8217;s how my search looked:</p>
<p>The Google page started with a section of news stories, had a couple natural results, then included some videos and pictures, more natural results and finally a section for blogs and books about Michael Jackson.</p>
<p>Interestingly (has Google learned from their mistake?) the News results lead this query. News results do not always lead a search result. Whatever criteria Google uses to determine where the news results appear on a page could also be used to include Twitter updates. </p>
<p>In the same way Google has included pictures, videos, blogs and books in the middle of the natural search results. The point here is: Google could put a section of Twitter updates anywhere on the page it desires.</p>
<p>Between these categorical results are some naturally ranked pages. They fulfill all the conventional criteria to get ranked- keyword matched url (michaeljackson.com) and authority domains (wikipedia). Theoretically Google could rank a particular Twitter update as if it were a page in itself but this could be easily abused.</p>
<p>How ever Google includes Twitter results, it is clear that companies interested in ranking should also be interested in having a keyword presence on Twitter. Although the potential for abuse is clear, there will still be a legitimate interest in keeping your company relevant. Tweets that include keyword phrases that you want to rank for as well as SEO friendly re-directions will be very important.</p>
<blockquote><p>No matter how Google integrates Twitter updates into its search results, if you are concerned with appearing in search results, you should <a href="http://feedtwit.com/thanks/sponsor-feedtwit.php" rel="nofollow">sponsor FeedTwit</a>.</p></blockquote>
<p>I heard something about another search engine integrating Twitter updates into their results too. If you want to find out about that, <a rel="nofollow" href="http://www.google.com/search?q=bing+twitter">Google it</a>.</p>
<p><strong>Can you think of any other ways Google might integrate Twitter updates into its search results? Please share them, below.</strong></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/rss-feeds/increase_interest_in_your_blog_with_rss/" rel="bookmark" class="crp_title">Increase interest in your blog with RSS</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/wheres-bono/" rel="bookmark" class="crp_title">Where&#8217;s Bono?</a></li><li><a href="http://www.dizzysoft.com/twitter/google-twitter-seo/" rel="bookmark" class="crp_title">Google, Twitter and SEO</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/how-will-google-integrate-twitter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Keywords and March Madness</title>
		<link>http://www.dizzysoft.com/web/google-keywords-and-march-madness/</link>
		<comments>http://www.dizzysoft.com/web/google-keywords-and-march-madness/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 15:48:21 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
I am a huge college basketball fan so naturally this is my favorite time of the year. This is probably because I went to the University of Kansas- a school who&#8217;s only coach with a losing record is James Naismith. My love of all things Jayhawk Basketball makes it hard to fill out my brackets [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p>I am a huge college basketball fan so naturally this is my favorite time of the year. This is probably because I went to the University of Kansas- a school who&#8217;s only coach with a losing record is James Naismith. My love of all things Jayhawk Basketball makes it hard to fill out my brackets in any objective way- somehow I always end up with Kansas winning the championship. That means I only predicted the national champion once since I was in Junior High School (the last time the Jayhawks won the National Championship).</p>
<p>This year I had to come up with a better method for filling out my brackets. Everyone has their own method- from considering RPI to team mascots- but I wanted to do something different. This year I used <a rel="nofollow" href="http://www.googlefight.com/">Googlefight</a> to pick the winner. As I did, I learned a little about keywords and SEO.</p>
<p>Basically <a href="http://www.googlefight.com/" rel="nofollow">Googlefight</a> compares two terms and determines a winner based upon the number of results that term comes up in a search. So, when I put in &#8220;North Carolina&#8221; vs. &#8220;Radford&#8221; naturally North Carolina came up with more results and thereby won. My theory was, the more people talking about a team the more likely that team would win. This would consider all important factors in an objective way- if a smaller school had a lot of buzz around it, it could trump another school, for example.</p>
<p>There came a problem when I got to some terms. Some were so broad they prevailed over others that the picks were rather silly. For example, &#8220;American&#8221; vs. &#8220;Villanova&#8221; resulted in American winning (actually, they almost did). Another problem cam up when I entered proper names for schools that never use them- everyone calls &#8220;Connecticut&#8221;, &#8220;UConn&#8221; for example. I knew I had to be more specific.</p>
<p>Since I was really wanting to measure discussion around a school&#8217;s basketball team I decided to narrow my focus (lengthen my keyword tail) to include &#8220;basketball&#8221; after the name of the school. I was afraid that using abbreviations for team names wouldn&#8217;t be accurate enough so I used the formal name of the school, excluding terms like &#8220;universtiy.&#8221; This resulted in preferring schools named on geographies rather than private schools because &#8220;Texas basketball&#8221; would consider any basketball related ideas within Texas. I think this was good (we will see) because schools recruit in their geography so if there is a lot of interest in basketball in that state, that school tended to win.</p>
<p>Some of the results were interesting. For instance, when I entered my beloved Jayhawks against my Dad&#8217;s alma mater- NDSU, the Jayhawks merely edged by. That&#8217;s exactly how the game felt! At the same time, no matter how I entered &#8220;American Univeristy&#8221; it always kept winning. This is because this term is so broad- and had I not made an exception to my method here, American would have won the tournament.</p>
<p>As of right now (Saturday afternoon) my method has picked 23 out of 33 games correctly and predicted some surprising upsets: Siena, Arizona, Cleveland State, Dayton, Texas A&amp;M, Maryland, and Michigan. </p>
<p>Follow me on @<a href="http://m.twitter.com/dizzySEO/" rel="nofollow">dizzySEO</a> to see how my brackets conclude. I will use the hash: <a href="http://twitter.com/search?q=%23marchmadness" rel="nofollow">#marchmadness</a>.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/twitter/how-twitter-filled-out-my-basketball-brackets/" rel="bookmark" class="crp_title">How Twitter Filled-Out My Basketball Brackets</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/keep-up-with-your-favorite-websites/" rel="bookmark" class="crp_title">Keep up with your favorite websites with RSS</a></li><li><a href="http://www.dizzysoft.com/web/how-will-google-integrate-twitter/" rel="bookmark" class="crp_title">How will Google integrate Twitter in their search results?</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/google-keywords-and-march-madness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yearly Bible Script</title>
		<link>http://www.dizzysoft.com/web/yearly_bible_script/</link>
		<comments>http://www.dizzysoft.com/web/yearly_bible_script/#comments</comments>
		<pubDate>Mon, 17 Apr 2006 09:28:31 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
This is a javascript program that will help its user track their progress as they read through the Bible in one year. Features (preview or use): Multiple Reading Plans. Hints and suggestions on reading the Bible. Links to the www.biblegateway.com to read your favorite translation or listen to the chapter on audio. Multiple user interface. [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p>This is a javascript program that will help its user track their progress as they read through the Bible in one year.</p>
<p>Features (<a href="http://www.zimorama.com/yearly_bible/today.html">preview or use</a>):</p>
<ul>
<li>Multiple Reading Plans.</li>
<li>Hints and suggestions on reading the Bible.</li>
<li>Links to the www.biblegateway.com to read your favorite translation or listen to the chapter on audio.</li>
<li>Multiple user interface.</li>
<li>Helps if you get behind.</li>
</ul>
<p>How to use:</p>
<ul>
<li>Download the <a href="http://www.dizzysoft.com/download/yearly_bible.zip">yearly_bible.zip</a> file and unzip it.</li>
<li>Upload to your website OR use on your home computer. NOTE: the hyperlink Bible passages will call www.biblegateway.com, so be careful if you have dial-up.</li>
<li>The &#8220;today.html&#8221; file is where you begin.</li>
</ul>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/palm-software/getmileage/the_getmileage_program_looks_like_a_zip/" rel="bookmark" class="crp_title">The GetMileage program looks like a zip file or my unzip program tries to extract the GetMileage program</a></li><li><a href="http://www.dizzysoft.com/palm-software/getmileage/how_to_use_getmileage/" rel="bookmark" class="crp_title">How to use GetMileage</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/track-read-items-in-an-rss-feed-reader/" rel="bookmark" class="crp_title">Track Read Items in an RSS Feed Reader</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/yearly_bible_script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Track Apache Error Logs with PHP RSS Feed</title>
		<link>http://www.dizzysoft.com/web/track-apache-error-logs-with-php-rss-fee/</link>
		<comments>http://www.dizzysoft.com/web/track-apache-error-logs-with-php-rss-fee/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 22:51:42 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[RSS]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
Previously, when I have written posts about RSS feeds, I have written them for non-programmers. After programming RSS feeds for a couple months now- primarily thanks to other people who have kindly posted their code on the web- I feel I owe the web and need to return the favor. One day I sat down [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p><em>Previously, when I have written posts about RSS feeds, I have written them for non-programmers. After programming RSS feeds for a couple months now- primarily thanks to other people who have kindly posted their code on the web- I feel I owe the web and need to return the favor.</em></p>
<p><img src="http://hongkiat.s3.amazonaws.com/rss02/CorouD.jpg" class="rightmargin" width="200" />One day I sat down to do some programming when I discovered that one of my automated programs was throwing errors. For days it had been misbehaving (and in a way that I didn&#8217;t notice). Since my web host had enabled Apache Error Logs- probably because I kept blaming them for problems I had created- there was one error log that was a couple megabytes large (the errors were occurring every five minutes over a couple-day period).</p>
<p>One day- when I am a PHP whiz and stop forgetting to add semi-colons at the end of lines or start treating objects as they are supposed to be treated- I won&#8217;t have to worry about such things. Until then I needed a way to tell me something was going wrong that was independent of the program itself (because, in this case, it appeared to be functioning normally).</p>
<p>I consider myself a RSS evangelist so it was time to start preaching to myself- his seemed to be a good use of an <a href="http://www.dizzysoft.com/index.php/rss/rss-in-plain-english">RSS feed</a>. Using the power of PHP I knew I could parse the error log and produce a RSS feed that would broadcast my errors to the world- or at least to me.</p>
<p><strong>Step 1: Parse the Apache Error Log</strong><br />
I first had to read the log file. The file is composed of any number of error messages in a standard format. For example (file names and directories have been changed to protect the innocent code):<br />
<code><br />
[23-Mar-2009 22:04:09] PHP Parse error:  syntax error, unexpected T_ECHO in /home/davidzim/public_html/your_mama/error.php on line 8<br />
</code><br />
All I had to do to get at each item was to read the file contents into an array:<br />
<code><br />
$lines= file("error_log");<br />
</code><br />
And iterate through the array with a foreach loop:<br />
<code><br />
foreach($lines as $line) {<br />
</code></p>
<p>You will notice the date is always in brackets and exactly 20 characters long. It was easy to strip this out of the line<br />
<code><br />
$date= substr($line, 1, 20);<br />
</code></p>
<p>The rest of the line- the error message itself- could then be read:<br />
<code><br />
$desc= substr($line, 23); // adding two spaces for the brackets and one for the space<br />
</code></p>
<p>Now I have a date for each error and the error itself. All that came next was to format this into a RSS feed</p>
<p><strong>Step 2: Creating a RSS Feed with PHP</strong><br />
This is where things seem a little more hairy but really they are pretty simple.</p>
<p>A RSS feed is simply an XML formatted file following a specific format. I like the <a href="http://www.rssboard.org/rss-specification" rel="nofollow">RSS 2.0 Specification</a>. There are certain elements that are required and others that might be helpful to add.</p>
<p>The basic information every feed needs is a <strong>&lt;title&gt;</strong>, a <strong>&lt;link&gt;</strong> (home page for the link), and a <strong>&lt;description&gt;</strong>. Another helpful element is the <strong>&lt;lastBuildDate&gt;</strong>. These nodes are all children of the <strong>&lt;channel&gt;</strong> node which is a child of the <strong>&lt;rss&gt;</strong> root.</p>
<p>I have found that it is easy to create an RSS feed in PHP if you use the DomDocument objects available in PHP 5. All you have to do is create a DomDocument object (in XML 1.0):<br />
<code><br />
$doc= new DomDocument('1.0');<br />
</code><br />
and then begin to add children to that node. Like I mentioned the root node of this XML document is <strong>&lt;rss&gt;</strong>. You must create the element and append it (as a child) to the document:<br />
<code><br />
// create root node<br />
$root = $doc->createElement('rss');<br />
$doc->appendChild($root);<br />
</code><br />
Since we are working with <a href="http://www.rssboard.org/rss-specification" rel="nofollow">RSS 2.0</a>, we need to add an attribute to that node stating the version is &#8220;2.0&#8243;:<br />
<code><br />
$version = $doc->createAttribute('version');<br />
$root->appendChild($version);<br />
$text= $doc->createTextNode('2.0');<br />
$version->appendChild($text);<br />
</code><br />
Although technically each RSS feed can have any number of channels, I have never seen a feed with more than one <strong>&lt;channel&gt;</strong>. It is a child of the <strong>&lt;rss&gt;</strong> root:<br />
<code><br />
$channel= $doc->createElement('channel');<br />
$root->appendChild($channel);<br />
</code><br />
Next the <strong>&lt;channel&gt;</strong> node gets its children. Its children start with information about that feed as a whole- a <strong>&lt;title&gt;</strong>, <strong>&lt;description&gt;</strong> and a <strong>&lt;link&gt;</strong>. A <strong>&lt;lastBuildDate&gt;</strong> can be useful as well:<br />
<code><br />
// nodes of channel<br />
$info= $doc->createElement('title');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode('Error log for '.$url);<br />
$info->appendChild($text);<br />
$info= $doc->createElement('link');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode($url.'error_log');<br />
$info->appendChild($text);<br />
$info= $doc->createElement('description');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode("This is the apache error log for $url");<br />
$info->appendChild($text);<br />
$info= $doc->createElement('lastBuildDate');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode(Date('r')); // now;<br />
$info->appendChild($text);<br />
</code><br />
In this above code I reference a variable called <strong>$url</strong>. I could have simply hard-coded the URL into this document, but instead I wanted this script to be dropped into any directory and report on the error log of that directory. To do this I just had to access the SERVER variable at the beginning of the script:<br />
<code><br />
$url= 'http://'.$_SERVER['HTTP_HOST'];<br />
$url.= substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'],'/')+1);<br />
</code><br />
Next comes the items for the feed. Naturally I want each item to be a line from the error log. This is where we iterate through the error log (as in step 1) and read the lines of the error log into items. Each item is a child of <strong>&lt;channel&gt;</strong>:<br />
<code><br />
$item = $doc->createElement('item');<br />
$channel->appendChild($item);<br />
</code><br />
And each <strong>&lt;item&gt;</strong> has children of its own. According to the RSS 2.0 specification, the only thing that is required is either a <strong>&lt;title&gt;</strong> or <strong>&lt;description&gt;</strong>. Commonly feed items contain both. They usually have a <strong>&lt;date&gt;</strong> for the item.</p>
<p>Since it&#8217;s good practice to have both a title and description, we can&#8217;t just read the non-date information off the line, but a little more parsing is required to make two different elements. I noticed that there is a basic error description that follows the date on each line of the error log. This basic error description is followed by a colon and two spaces. That phrase will become my <strong>&lt;title&gt;</strong>. For the description I decided to simply take the entire line of data. I convert the date into a usable format (with my favorite PHP function: <strong>strtotime()</strong>) and add these nodes to the <strong>&lt;item&gt;</strong> node using a <strong>foreach</strong> loop:<br />
<code><br />
// title is the phrase after the date and before the colon and two spaces<br />
$child = $doc->createElement('title');<br />
$item->appendChild($child);<br />
$first_colon= strpos($line, ":  ", 23);<br />
$title= substr($line, 23, $first_colon-23);<br />
$value = $doc->createTextNode($title);<br />
$child->appendChild($value);<br />
// the description is the entire contents of one line from the error log<br />
$child = $doc->createElement('description');<br />
$item->appendChild($child);<br />
$value = $doc->createTextNode($line);<br />
$child->appendChild($value);<br />
// the pubDate is printed between the two brackets and always 20 characters long<br />
$child = $doc->createElement('pubDate');<br />
$item->appendChild($child);<br />
$date= substr($line, 1, 20);<br />
$value = $doc->createTextNode(date('r', strtotime($date)));<br />
$child->appendChild($value);<br />
</code><br />
One important note: RSS feeds publish items from the most recent to the oldest items. The error log adds new items to the end of the file. Before we read the items into the feed, we need to reverse the order of the items in the array. We can simply use the <strong>array_reverse()</strong> function, when we read the file into an array at the beginning of this script:<br />
<code><br />
$lines= array_reverse(file("error_log"));<br />
</code></p>
<p>Finally, we write out the nodes of the DomDocument and we have a working RSS feed publishing our error log:<br />
<code><br />
echo $doc->saveXML();<br />
</code></p>
<p><strong>Apache Error Log RSS Feed in PHP (script in its entirety)</strong></p>
<p><code><br />
<?php<br />
/* Script by David Zimmerman</p>
<p>http://www.dizzysoft.com/</p>
<p>   Please feel free to use as long as you give me credit and understand there is no warranty that comes with this script.<br />
*/</p>
<p>$lines= array_reverse(file("error_log"));<br />
$url= 'http://'.$_SERVER['HTTP_HOST'];<br />
$url.= substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'],'/')+1);</p>
<p>$doc= new DomDocument('1.0');</p>
<p>// create root node<br />
$root = $doc->createElement('rss');<br />
$doc->appendChild($root);<br />
$version = $doc->createAttribute('version');<br />
$root->appendChild($version);<br />
$text= $doc->createTextNode('2.0');<br />
$version->appendChild($text);<br />
$channel= $doc->createElement('channel');<br />
$root->appendChild($channel);</p>
<p>// nodes of channel<br />
$info= $doc->createElement('title');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode('Error log for '.$url);<br />
$info->appendChild($text);<br />
$info= $doc->createElement('link');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode($url.'error_log');<br />
$info->appendChild($text);<br />
$info= $doc->createElement('description');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode("This is the apache error log for $url");<br />
$info->appendChild($text);<br />
$info= $doc->createElement('lastBuildDate');<br />
$channel->appendChild($info);<br />
$text= $doc->createTextNode(Date('r')); // now<br />
$info->appendChild($text);</p>
<p>// items for this channel<br />
foreach($lines as $line) {<br />
	$item = $doc->createElement('item');<br />
	$channel->appendChild($item);</p>
<p>	$child = $doc->createElement('title');<br />
	$item->appendChild($child);<br />
	$first_colon= strpos($line, ":  ", 23);<br />
	$title= substr($line, 23, $first_colon-23);<br />
	$value = $doc->createTextNode($title);<br />
	$child->appendChild($value);</p>
<p>	$child = $doc->createElement('description');<br />
	$item->appendChild($child);<br />
	$value = $doc->createTextNode($line);<br />
	$child->appendChild($value);</p>
<p>	$child = $doc->createElement('pubDate');<br />
	$item->appendChild($child);<br />
	$date= substr($line, 1, 20);<br />
	$value = $doc->createTextNode(date('r', strtotime($date)));<br />
	$child->appendChild($value);<br />
}<br />
echo $doc->saveXML();<br />
?><br />
</code></p>
<p>There&#8217;s a lot going on here, which is why I have to use the <a href="http://feedvalidator.org/" rel="nofollow">Feed Validator</a> to make sure everything is running smoothly.</p>
<p>You could always improve this script. You could add caching so that every time this script is called by a feed reader, it doesn&#8217;t have to read your file again. You could add a <strong>&lt;guid&gt;</strong> child to the <strong>&lt;item&gt;</strong> node to designate each item as unique (something the Feed Validator recommends). You could also add a &#8220;no error&#8221; item every so often to reassure you that the feed is still working and there are no errors in that directory.</p>
<p>What makes this really cool is in how you could receive this feed. You could send the feed to your cell phone as text messages (although beware you could get a message every five minutes if the same problem I had happens to you) or simply through your favorite blog reader. There are <a href="http://www.dizzysoft.com/index.php/rss/23-things-you-can-do-with-an-rss-feed">many different ways you can receive a RSS feed</a>.</p>
<p>One thing I don&#8217;t know about is security. Am I giving out intelligence to hackers by telling them I have error logs enabled? Am I making it worse by giving them a RSS feed to my error logs? (Notice I don&#8217;t tell you where to find my error log feed as an example) If you know about such things, I would appreciate your comments.</p>
<p>Did I overlook anything? Am I unclear or just wrong in any of my descriptions? Do you see a way this script can be improved? Then leave a comment below.</p>
<p>If this script is useful to you, subscribe to my <a href="http://www.dizzysoft.com/feed.php">RSS feed</a> and you might find more helpful posts like this one.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/rss-feeds/track-read-items-in-an-rss-feed-reader/" rel="bookmark" class="crp_title">Track Read Items in an RSS Feed Reader</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/save-gas-money-with-rss/" rel="bookmark" class="crp_title">Save Gas Money with RSS</a></li><li><a href="http://www.dizzysoft.com/palm-software/getmileage/the_getmileage_program_looks_like_a_zip/" rel="bookmark" class="crp_title">The GetMileage program looks like a zip file or my unzip program tries to extract the GetMileage program</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/track-apache-error-logs-with-php-rss-fee/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BarCamp Charlotte</title>
		<link>http://www.dizzysoft.com/web/barcamp-charlotte/</link>
		<comments>http://www.dizzysoft.com/web/barcamp-charlotte/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 08:00:01 +0000</pubDate>
		<dc:creator>dz</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
Related Posts:Manage Your Social Networks &#8211; BarCamp CharlotteGet Local Traffic Through Your Twitter AccountThe Best Driving Tips RSS Feed]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
	float:left;
	position: fixed;
	top: 60%;
	left: 10px;
}
#leftcontainerBox .buttons {
	float:left;
	clear:both;
	margin:4px 4px 4px 4px;
	padding-bottom:2px;
}
#bottomcontainerBox {
	width: 50%;
	padding-top: 1px;
}
#bottomcontainerBox .buttons {
	float: left;
	margin: 4px 4px 4px 4px;
}
</style>
<p><a href="http://www.barcampcharlotte.com/"><img src="http://barcampcharlotte.com/images/med-ad.jpg" /></a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dizzysoft.com/rss-feeds/manage-your-social-networks/" rel="bookmark" class="crp_title">Manage Your Social Networks &#8211; BarCamp Charlotte</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/get-local-traffic-through-twitter/" rel="bookmark" class="crp_title">Get Local Traffic Through Your Twitter Account</a></li><li><a href="http://www.dizzysoft.com/rss-feeds/the-best-driving-tips-rss-feed/" rel="bookmark" class="crp_title">The Best Driving Tips RSS Feed</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.dizzysoft.com/web/barcamp-charlotte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

