<?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>Jake's Weblog &#187; MovableType</title>
	<atom:link href="http://jacob.steenhagen.us/blog/categories/computers/movabletype/feed/" rel="self" type="application/rss+xml" />
	<link>http://jacob.steenhagen.us/blog</link>
	<description>A blog by Jacob Steenhagen</description>
	<lastBuildDate>Fri, 13 Nov 2009 00:16:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Made the Switch</title>
		<link>http://jacob.steenhagen.us/blog/2005/07/made-the-switch/</link>
		<comments>http://jacob.steenhagen.us/blog/2005/07/made-the-switch/#comments</comments>
		<pubDate>Fri, 29 Jul 2005 17:08:10 +0000</pubDate>
		<dc:creator>Jake</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[MovableType]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.steenhagen.us/~jake/blog/?p=63</guid>
		<description><![CDATA[The SPAM finally got to me. I don&#8217;t know if WordPress will be any better at handling SPAM or not, but I can dream . The design is still very much off the shelf, so I&#8217;ll have to play with that in the months to come and, of course, I still have to learn about [...]]]></description>
			<content:encoded><![CDATA[<p class="first">The SPAM finally got to me. I don&#8217;t know if <a href="http://wordpress.org">WordPress</a> will be any better at handling SPAM or not, but I can dream <img src='http://jacob.steenhagen.us/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . The design is still very much off the shelf, so I&#8217;ll have to play with that in the months to come and, of course, I still have to learn about how to use this software. But I&#8217;m hoping that it will be much better than MoveableType was. In my brief playing while evaluating and setting it up, I think I like it better. MoveableType 3.0 may have been much better, but I didn&#8217;t wanna have to pay for it.</p>
<p>So, if you&#8217;re curious, read on to find out how I set it up. It really was quite simple. I first downloaded and installed WordPress using their <a href="http://wordpress.org/docs/installation/5-minute/">5 minute install guide</a>. After that, I followed the instructions for <a href="http://wordpress.org/docs/tutorials/import-mt/">importing from MoveableType</a>. The most difficult part was making sure my permalinks from MovableType (like the archives) still worked. To do that, I created an <tt>.htaccess</tt> file to leaverage <tt><a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewrite</a></tt>. It looks like this:</p>
<pre>
RewriteEngine on
RewriteRule ^archives/0*(\d+).html /~jake/blog/index.php?p=$1
RewriteRule index.rdf /~jake/blog/index.php?feed=rdf
RewriteRule index.xml /~jake/blog/index.php?feed=rss2
</pre>
<p>So, we&#8217;ll have to see how well this really works for me, but at this point I&#8217;d have to say that I&#8217;ve already committed to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacob.steenhagen.us/blog/2005/07/made-the-switch/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Are Spammers Retarded?</title>
		<link>http://jacob.steenhagen.us/blog/2005/03/are-spammers-retarded/</link>
		<comments>http://jacob.steenhagen.us/blog/2005/03/are-spammers-retarded/#comments</comments>
		<pubDate>Wed, 09 Mar 2005 14:12:01 +0000</pubDate>
		<dc:creator>Jake</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[MovableType]]></category>

		<guid isPermaLink="false">http://www.steenhagen.us/~jake/trunk/?p=56</guid>
		<description><![CDATA[It seems that the average spammer must have the IQ of a 1st grader. Nevermind the fact that they constantly are trying to get around people&#8217;s spam filters in email, an action that only serves to upset those from whom they want money, I&#8217;m not even gonna go there right now. What&#8217;s got me upset [...]]]></description>
			<content:encoded><![CDATA[<p class="first">It seems that the average spammer must have the IQ of a 1st grader. Nevermind the fact that they constantly are trying to get around people&#8217;s spam filters in email, an action that only serves to upset those from whom they want money, I&#8217;m not even gonna go there right now. What&#8217;s got me upset is the constant fact that they keep hitting me with trackback spam. I never used to get that. I used to get my share of comment spam, but every since <a href="http://www.steenhagen.us/~jake/blog/archives/000046.html">I installed</a> the <a href="http://james.seng.cc/archives/000145.html">SCode</a> plugin, I&#8217;ve been hit with a constant deluge of trackback spams. My guess is that their script noticed the error message when they tried to post a comment spam and switched over to trackback instead. What&#8217;s really kinda strange, however, is that when I just had comments off, that didn&#8217;t happen. It was only after I took the step of installing SCode and turning old comments back on that this happened. Now, the idiocy comes in because I also have the <a href="http://james.seng.cc/archives/000152.html">Bayesian filtering</a> plugin installed and it marks all these trackback pings as spam as soon as they&#8217;re posted (In fact, it has a tendency to mark things as spam even when their not&#8230; probably because my spam corpus is so much larger than my non-spam). Not one single time has one of these trackback spams actually appeared visible on my site. Not once. You&#8217;d think they&#8217;d kinda want that to happen in order for it to even be worth their time in constantly spamming me. But what do I know, I&#8217;m just a lowly consumer.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacob.steenhagen.us/blog/2005/03/are-spammers-retarded/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Problems with Bayesian Comment Filtering</title>
		<link>http://jacob.steenhagen.us/blog/2005/01/problems-with-bayesian-comment-filtering/</link>
		<comments>http://jacob.steenhagen.us/blog/2005/01/problems-with-bayesian-comment-filtering/#comments</comments>
		<pubDate>Thu, 06 Jan 2005 07:17:11 +0000</pubDate>
		<dc:creator>Jake</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[MovableType]]></category>

		<guid isPermaLink="false">http://www.steenhagen.us/~jake/trunk/?p=46</guid>
		<description><![CDATA[As much as it sounded like a good idea, my previous solution to comment spams had a few issues. Well, not so much issues as annoyances. The original author of that plugin posted his list of issues, so I knew about those going in, though I was unconcerned. To me, the biggest issue is simply [...]]]></description>
			<content:encoded><![CDATA[<p class="first">As much as it sounded like a good idea, <a href="http://www.steenhagen.us/~jake/blog/archives/000042.html">my previous solution</a> to comment spams had a few issues. Well, not so much issues as annoyances. The original author of that plugin posted his <a href="http://james.seng.cc/archives/000337.html"> list of issues</a>, so I knew about those going in, though I was unconcerned. To me, the biggest issue is simply fact that comment spam still gets posted. Sure, it doesn&#8217;t appear to the user, nor does it appear to the search engine when it comes to index my site, but I still get an email for each comment and I still have to sort through it on the backend. So, I decided to exclude blind people from being able to post comments on my blog (sorry). I&#8217;m now using the <a href="http://james.seng.cc/archives/000145.html">SCode</a> plugin instead of (well, truthfully, in addition to) the bayesian filter.</p>
<p>I did run into a couple of problems when trying to install it. After following the instructions in the README file, it still wasn&#8217;t working. So, I ran the <tt>scodetest.cgi</tt> script. It kept telling me that my temporary directory wasn&#8217;t writable by the webserver, which I knew to be an incorrect statement. So I did what any reasonable person trying to install a plugin would do: I started looking at the code. It really is a simple module, so it didn&#8217;t take long to figure out what was going on. The <tt>scodetest.cgi</tt> script as well as the <tt>mt-scode.cgi</tt> image generation script were calling MT::SCode::scode_get($code) to retrieve a security code. There was an <tt>if</tt> block in that subroutine that would call <tt>scode_generate()</tt> and return that subroutine&#8217;s return value as the return value for <tt>scode_get</tt>. That seemed like the right thing to do, but it wasn&#8217;t. The problem is that <tt>scode_generate()</tt> doesn&#8217;t make any effort whatsoever to save the value that it generated so that it will be associated with the <tt>$code</tt> originally passed to <tt>scode_get()</tt>. This is what was causing the <tt>scodetest.cgi</tt> script to always say that my tmp directory wasn&#8217;t writable (that script simply calls the <tt>scode_get()</tt> routine twice and checks to see if it got the same result both times). So, I modified my <tt>scode_get()</tt> routine to call <tt>scode_create()</tt> (which calls <tt>scode_generate()</tt> and saves the value) instead of <tt>scode_generate()</tt>. The relavent portion of that subroutine now looks like this:</p>
<pre class="code"># Random number back...if have not initialized
if ($code< =0 || $code>$scode_maxtmp || !-e $tmpdir.$code ) {
return scode_create($code);
}</pre>
<p>Because I&#8217;m still trying to return this random value to whatever called <tt>scode_get()</tt>, I needed to modify the <tt>scode_create()</tt> subroutine to return the generated code. My new <tt>scode_create()</tt> routine looks like:</p>
<pre class="code">sub scode_create {
my $code = shift;

return if (-e $tmpdir.$code);

my $scode = scode_generate();
if ($code&gt;0 &#038;&#038; $code&lt;=$scode_maxtmp) {
open(OUTFILE,"&gt;${tmpdir}${code}");
print OUTFILE $scode;
close(OUTFILE);
}
return $scode
}</pre>
<p>And now everything works. The only other issue I noticed was an incorrect usage of the <tt>alt</tt> tag for an image in the installation instructions. The <tt>alt</tt> tag is not supposed to be used as a tooltip, but as alternate text to display when the image is unable to be displayed. As such, it should say something like: &#8220;Image required in order to post.&#8221; The tag that should be used for the text &#8220;Please enter the security code you see here&#8221; (what the plugin author put in the <tt>alt</tt> tag) is the <tt>title</tt> tag.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacob.steenhagen.us/blog/2005/01/problems-with-bayesian-comment-filtering/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bayesian Filtering for Comments</title>
		<link>http://jacob.steenhagen.us/blog/2004/12/bayesian-filtering-for-comments/</link>
		<comments>http://jacob.steenhagen.us/blog/2004/12/bayesian-filtering-for-comments/#comments</comments>
		<pubDate>Thu, 23 Dec 2004 12:07:15 +0000</pubDate>
		<dc:creator>Jake</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[MovableType]]></category>

		<guid isPermaLink="false">http://www.steenhagen.us/~jake/trunk/?p=42</guid>
		<description><![CDATA[Bayesian filtering for MoveableType? I didn&#8217;t even know such a thing existed! I found a plugin written by James Seng. At the time, I was actually looking for one of those little images that aren&#8217;t OCR readable and the user has to type whatever&#8217;s in the image (I&#8217;ve since discovered that&#8217;s called captcha and is [...]]]></description>
			<content:encoded><![CDATA[<p class="first">Bayesian filtering for MoveableType? I didn&#8217;t even know such a thing existed! I found <a href="http://james.seng.cc/archives/000152.html">a plugin</a> written by James Seng. At the time, I was actually looking for one of those little images that aren&#8217;t OCR readable and the user has to type whatever&#8217;s in the image (I&#8217;ve since discovered that&#8217;s called captcha and is implemented using the <a href="http://james.seng.cc/archives/000145.html">SCode plugin</a>). I knew that this method introduced usability problems for the visually impaired and people who use text only web browsers, but I felt that it was a fair trade off in order to stop SPAM. But, in the process of looking for this, I figured I may as well look at other solutions, too (especially considering that GD isn&#8217;t working on my machine right now). Wouldn&#8217;t you know it, I found one I liked even better. I&#8217;ve liked the theory behind Bayesian filtering every since I&#8217;ve read Paul Graham&#8217;s <a href="http://www.paulgraham.com/spam.html">A Plan For Spam</a>. <a href="http://www.spreadfirefox.com/?q=affiliates&#038;id=46357&#038;t=181">Mozilla Thunderbird</a> uses this method of filtering, and while at first it&#8217;s quite inaccurate, it gets better with time (actually, with a larger sample of both good and bad stuff). Anyway, I&#8217;ve now implemented this method for comments on this site. I should now be able to re-open all my entries to comments, undoing the change I made back in <a href="http://www.steenhagen.us/~jake/blog/archives/000031.html">November 2003</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacob.steenhagen.us/blog/2004/12/bayesian-filtering-for-comments/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Facelift For My Weblog</title>
		<link>http://jacob.steenhagen.us/blog/2004/12/facelift-for-my-weblog/</link>
		<comments>http://jacob.steenhagen.us/blog/2004/12/facelift-for-my-weblog/#comments</comments>
		<pubDate>Tue, 21 Dec 2004 11:09:14 +0000</pubDate>
		<dc:creator>Jake</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[MovableType]]></category>

		<guid isPermaLink="false">http://www.steenhagen.us/~jake/trunk/?p=41</guid>
		<description><![CDATA[Minor though it may be, I&#8217;ve now given my blog a bit of a face lift. The design itself is still pretty much the default from MoveableType, but I&#8217;ve done a little more with colors. I also added a little bit of Mozilla specific CSS. While the page is certainly still functional in Internet Explorer, [...]]]></description>
			<content:encoded><![CDATA[<p class="first">Minor though it may be, I&#8217;ve now given my blog a bit of a face lift. The design itself is still pretty much the default from MoveableType, but I&#8217;ve done a little more with colors. I also added a little bit of Mozilla specific CSS. While the page is certainly still functional in Internet Explorer, it looks better in Mozilla based browsers. CSS really is a beautiful thing once you figure out how it works (I remember it taking quite a while for me to even want to make the transition, let alone actually do it&#8230; I probably still haven&#8217;t, completely). In addition to the front end improvements, I&#8217;ve also made a couple on the semi-backend (eg, not the MT code, but not just CSS). I finally figured out how to make it so links show up in syndicated versions of this blog (this was quite a problem in <a href="http://www.steenhagen.us/~jake/blog/archives/000040.html">my last post</a>). In case you&#8217;re curious, it was as simple as changing <code>&lt;$MTEntryExcerpt encode_xml="1"$&gt;</code> to <code>&lt;$MTEntryBody encode_xml="1"$&gt;</code> in the RSS templates. That also has the side effect of having the entire post be syndicated (at the option of the syndicating site) instead of just the first few characters. The other backend thing I did was made the new archive pages (<a href="http://www.steenhagen.us/~jake/blog/archives-03.html">&#8217;03</a> and <a href="http://www.steenhagen.us/~jake/blog/archives-04.html">&#8217;04</a>) much easier. Using a template modules and include statements, I was able to greatly reduce the amount of &#8220;code&#8221; required to make a calendar. In fact, all I need is:</p>
<pre class="code">&lt;!-- JANUARY_2003 --&gt;
&lt;table border="0" cellspacing="4" cellpadding="0"&gt;
&lt;caption class="calendarhead"&gt;January 2003&lt;/caption&gt;
&lt;$MTInclude module="CalendarDOW"$&gt;
&lt;MTCalendar month="200301"&gt;
&lt;$MTInclude module="CalendarDays"$&gt;
&lt;/MTCalendar&gt;
&lt;/table&gt;
&lt;!-- /JANUARY_2003 --&gt;</pre>
<p>That&#8217;s still a lot more than should be required had a better templating system been used. It would be nice to have all that layout type stuff in one template module so I could just say something like <code>&lt;MTInclude module="Calendar" month="200301"&gt;</code> and still be able to get my own layout, but I this is still better than what MoveableType uses by default.</p>
<p><strong>UPDATE</strong>: I was just looking at the <a href="http://www.steenhagen.us/~jake/blog/archives-04.html">2004 Archive</a> page. With this entry, I&#8217;ve now posted more in the month of December than I have for the entire other 11 months of 2004. Kinda sad, isn&#8217;t it?</p>
]]></content:encoded>
			<wfw:commentRss>http://jacob.steenhagen.us/blog/2004/12/facelift-for-my-weblog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

