<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>cavemonkey50.com</title>
	
	<link>http://cavemonkey50.com</link>
	<description>Tech in the eyes of cavemonkey50.</description>
	<pubDate>Tue, 11 Nov 2008 05:07:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://cavemonkey50.com/feed/" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fcavemonkey50.com%2Ffeed%2F" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fcavemonkey50.com%2Ffeed%2F" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Fcavemonkey50.com%2Ffeed%2F" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.rojo.com/add-subscription?resource=http%3A%2F%2Fcavemonkey50.com%2Ffeed%2F" src="http://blog.rojo.com/RojoWideRed.gif">Subscribe with Rojo</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://cavemonkey50.com/feed/" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fcavemonkey50.com%2Ffeed%2F" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fcavemonkey50.com%2Ffeed%2F" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fcavemonkey50.com%2Ffeed%2F" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>About the Lack of Writing…</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/449170776/</link>
		<comments>http://cavemonkey50.com/2008/11/about-the-lack-of-writing/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 05:07:14 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Site News]]></category>

		<category><![CDATA[The Real Life]]></category>

		<category><![CDATA[business]]></category>

		<category><![CDATA[freelancing]]></category>

		<category><![CDATA[school]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1451</guid>
		<description><![CDATA[Wow, I have not updated cavemonkey50.com in forever. I feel bad for not updating, but unfortunately the past few months have brought many changes in my life.
In August I moved from Allentown, Pennsylvania to State College, Pennsylvania to finish my last two years of college at Penn State&#8217;s Main Campus. In addition to the move, [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, I have not updated cavemonkey50.com in forever. I feel bad for not updating, but unfortunately the past few months have brought many changes in my life.</p>
<p>In August I moved from Allentown, Pennsylvania to State College, Pennsylvania to finish my last two years of college at Penn State&#8217;s Main Campus. In addition to the move, the last few months I have been launching a new freelance company with a good friend of mine, Jesse Altman (more on that in the coming weeks). So, I have not exactly had the time I normally put into blogging.</p>
<p><span id="more-1451"></span>While I have not been blogging, I have not let cavemonkey50.com fall apart either. I have still been answering your comments and pushing out updates to <a href="http://cavemonkey50.com/code/">my many plugins</a>. I just have not been finding time to actually write.</p>
<p>I want to change that. Hopefully, over the coming weeks my post count will slowly grow as I start getting back into the groove of writing. I&#8217;m not sure what I&#8217;m going to write about, but I&#8217;m hoping I can get back to my roots and pump out some interesting unique content.</p>
<p>I need your help, though. As I get back to writing, give me your feedback. Let me know what you like and what you don&#8217;t. I am open to any feedback you can dish out.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/449170776" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/11/about-the-lack-of-writing/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F11%2Fabout-the-lack-of-writing%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/11/about-the-lack-of-writing/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 11 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/361359093/</link>
		<comments>http://cavemonkey50.com/2008/08/soc-atompub-week-11-status/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 21:27:14 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1431</guid>
		<description><![CDATA[Week 11 of the Summer of Code brought the ending to a summer long problem, the MT WSSE authentication issue. The MT importer is now officially a reality, and I am happy to say I will be able to complete my original set goals.
Fixing My MT WSSE Authentication Problem
Earlier this week I received a great [...]]]></description>
			<content:encoded><![CDATA[<p>Week 11 of the Summer of Code brought the ending to a summer long problem, the MT WSSE authentication issue. The MT importer is now officially a reality, and I am happy to say I will be able to complete my original set goals.</p>
<h3>Fixing My MT WSSE Authentication Problem</h3>
<p>Earlier this week I received a great deal of help from two Movable Type developers, Mark Paschal and Byrne Reese. After <a href="http://cavemonkey50.com/2008/08/soc-atompub-week-10-status/">finding the source of my issue</a>, Mark took a closer look at the specific problem. <a href="http://cavemonkey50.com/2008/08/soc-atompub-week-10-status/#comment-83542">His diagnosis</a>: I had a bug in my end of the WSSE authentication.</p>
<p><span id="more-1431"></span>After spending numerous weeks working with the <a href="http://www.tbray.org/ape/">Atom Protocol Exerciser</a>, I came to rely on it as a crutch. Whenever my Atom retrieval failed, the APE always succeeded. Well, that turned out to be a bad habit. Movable Type&#8217;s WSSE authentication was implemented differently than the APE, and thus the APE was useless against it. So, when I ran into a problem with my code and the APE didn&#8217;t work either, I assumed the issue was on MT&#8217;s end. That was simply not the case.</p>
<p>After Marked looked at my code, he informed me my nonces were repeating. The AtomPub library I had be using did not rebuild the nonce after each sequential request, and therefore failed to authenticate on the second Atom request, the list of posts. After I added a snippet of code Mark suggested, everything started authenticating perfectly.</p>
<p>So, this entire issue came down to one line of code on my end, and it could have been completely avoided had a took a closer look at my end of the code. Had I approached the problem differently, I am confident I would have found the repeating nonces, but I didn&#8217;t even look in that direction. I will definitely be taking this programming lesson with me into future projects.</p>
<h3>The Status of the Movable Type Importer</h3>
<p>Now that everything is authenticating, the MT importer is not far behind. I&#8217;m currently putting the finishing touches on some changes I had to make that differed from TypePad. Once those changes have been made, the importer should be working fine. I expect the MT importer to be completed over the next couple of days, and I should finally have everything submitted to WordPress&#8217; Trac.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/361359093" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/08/soc-atompub-week-11-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F08%2Fsoc-atompub-week-11-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/08/soc-atompub-week-11-status/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 10 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/354092823/</link>
		<comments>http://cavemonkey50.com/2008/08/soc-atompub-week-10-status/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 03:57:46 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1426</guid>
		<description><![CDATA[I have great news this week. I have finally figured out the whole Movable Type authentication debacle.
The WSSE Authentication Problem
I want to preface my findings with this advisory. I do not have a full understanding of Perl, and my statements may be wrong. If anyone can correct me, please do. I would rather be told [...]]]></description>
			<content:encoded><![CDATA[<p>I have great news this week. I have finally figured out the whole Movable Type authentication debacle.</p>
<h3>The WSSE Authentication Problem</h3>
<p>I want to preface my findings with this advisory. I do not have a full understanding of Perl, and my statements may be wrong. If anyone can correct me, please do. I would rather be told I&#8217;m completely wrong than continue down the wrong path.</p>
<p><span id="more-1426"></span>Late last night while inspecting MT&#8217;s Atom API code, I found the troublesome line of code (/lib/MT/AtomServer.pm, line 168-170):</p>
<pre><code>if ($nonce_record &amp;&amp; $nonce_record-&gt;id eq $auth-&gt;{Nonce}) {
        return $app-&gt;auth_failure(403, &quot;Nonce already used&quot;);
}</code></pre>
<p>When commenting out this line of code, the authentication passed, and I was finally seeing a list of posts stored in Movable Type&#8217;s database. Once I realized this was the problematic line, I started investigating what this line is doing. From my limited understanding of Perl, this line is checking to see if the nonce has been used in the past. If it has, the check fails to authenticate.</p>
<p>Once I realized this, I looked at my nonces being sent. I verified each nonce generated was different from the last one, eliminating the possibility of the problem being on my end. This tells me somehow Movable Type is incorrectly adding the current nonce to the list of previous nonces before performing that check.</p>
<p>Looking at the slightly bigger picture:</p>
<pre><code>my $app = shift;
my $auth = $app-&gt;get_auth_info
    or return $app-&gt;auth_failure(401, &quot;Unauthorized&quot;);
for my $f (qw( Username PasswordDigest Nonce Created )) {
    return $app-&gt;auth_failure(400, &quot;X-WSSE requires $f&quot;)
        unless $auth-&gt;{$f};
}
require MT::Session;
my $nonce_record = MT::Session-&gt;load($auth-&gt;{Nonce});

if ($nonce_record &amp;&amp; $nonce_record-&gt;id eq $auth-&gt;{Nonce}) {
    return $app-&gt;auth_failure(403, &quot;Nonce already used&quot;);
}
$nonce_record = new MT::Session();
$nonce_record-&gt;set_values({
    id =&gt; $auth-&gt;{Nonce},
    start =&gt; time,
    kind =&gt; &#39;AN&#39;
});
$nonce_record-&gt;save();</code></pre>
<p>From what I&#8217;m understanding, the code appears to add the nonce to the record after checking, however, the nonce is passed through MT::Session-&gt;load before the check is performed, indicating that may the source of the issue. Sure enough, MT::Session-&gt;load is the problem. After replacing the passed nonce with a blank string, the nonce is no longer in the list of previous nonces and the check passes.</p>
<p>I have notified Movable Type&#8217;s developers of this problem, and I hope to hear back soon. The good news is once this error is resolved in Movable Type, the importer should work wonders. The bad news is it may be a bit until the next version of MT is released or the bug is fixed. I&#8217;ll try to keep everyone updated on the status as I hear back from the developers.</p>
<h3>Future Branches of the Atom Importer</h3>
<p>Beyond working with Movable Type, after talking with Lloyd this week, we have decided to look into the possibility of porting the importer to other platforms; namely Vox and WordPress itself. We talked about Vox as there is currently no importer at all, as Vox lacks export methods and APIs such as XML-RPC. The idea for WordPress came up because we thought it might be a great way to move a blog from location to location without having to deal with export files.</p>
<p>Over the next week I will be looking at creating those branches of the importer. Thankfully, since the Atom API is a standard, I should be able to quickly and easily make the ports. We&#8217;ll see how that goes next week.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/354092823" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/08/soc-atompub-week-10-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F08%2Fsoc-atompub-week-10-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/08/soc-atompub-week-10-status/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 8 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/339340855/</link>
		<comments>http://cavemonkey50.com/2008/07/soc-atompub-week-8-status/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 21:09:01 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1422</guid>
		<description><![CDATA[Week 8 of the Summer of Code was nothing short of a roller coaster ride. At some points I wanted to tear my hair out, other times I was jumping for joy. Here is what went down this week:
Bad: Regular Expressions Are Not My Thing
While working towards media importing this week, I had to write [...]]]></description>
			<content:encoded><![CDATA[<p>Week 8 of the Summer of Code was nothing short of a roller coaster ride. At some points I wanted to tear my hair out, other times I was jumping for joy. Here is what went down this week:</p>
<h3>Bad: Regular Expressions Are Not My Thing</h3>
<p>While working towards media importing this week, I had to write a few regex statements. I&#8217;ll admit it, I completely suck at regular expressions. They bring me back to my not so fond days of <a href="http://en.wikipedia.org/wiki/Discrete_mathematics">Discrete Mathmatics</a>; days I would rather forget. Regardless, I managed to get through them and ended with some working code.</p>
<p><span id="more-1422"></span><br />
<h3 class='more'>Good: Faster Response Times From TypePad</h3>
<p>I noticed while working on media importing, TypePad&#8217;s server have greatly increased in speed this week. I found that importing took roughly half the time it did in the previous week, with no code optimizations on my part. The speed increases managed to stay consistent through the week, so I&#8217;m hoping the changes are here to stay.</p>
<h3>Bad: Media Importing is Near Impossible</h3>
<p>Wednesday came to a grinding halt when I noticed there was no way to reliably import media by parsing images from posts. There are several reasons to this:</p>
<ul>
<li>TypePad has two different methods for uploading images.</li>
<li>The markup TypePad generates for images is unclean and is not standardized. Users have the ability to modify the output code template.</li>
<li>TypePad puts the full size image on a separate HTML page that is linked to via a URL that tells nothing about the original file. Due to this, it is near impossible to link the full size image with the originating link.</li>
</ul>
<p>So, media importing is unfortunately looking very glum. I will try to come up with something since importing media is a crucial feature in my book, but I&#8217;m not sure what. More on this in the coming weeks.</p>
<h3>Good: WordPress 2.6 Released</h3>
<p>The new version of WordPress was released this week, and I was happy for several reasons. First off, I was able update my blog and take advantage of the new features, but more importantly, trunk is going bleeding again. Hopefully in the next week or so the TypePad importer should land in trunk. Stay on the lookout!</p>
<h3>Good/Bad: Headway Made on Movable Type Authentication Issue</h3>
<p>I managed to get in touch with the developer over at Six Apart who originally wrote Movable Type&#8217;s Atom API implementation. The good news is he confirmed I&#8217;m not crazy and MT is authenticating differently than TypePad. The bad news is he couldn&#8217;t remember off hand what is different with the implementation.</p>
<p>From what it sounds like, MT is not following the <a href="http://www.rfc-editor.org/rfc/rfc5023.txt">RFC 5023</a> spec in regards to WSSE, simply because the specification was not standardized when the original code was written. I&#8217;m not sure where this leaves me, because I don&#8217;t really know what is different with authentication at the moment. Also, I&#8217;m unsure if Movable Type will correct the authentication difference in the near future.</p>
<p>At the moment, it appears I will be brushing up on my Perl skills and looking at the source code for Movable Type next week. With a little luck, this issue will finally be ironed out. Who knows, maybe I&#8217;ll even figure out something for media importing next week as well. Right now, I&#8217;m just hoping next week is the week of miracles.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/339340855" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/07/soc-atompub-week-8-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F07%2Fsoc-atompub-week-8-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/07/soc-atompub-week-8-status/</feedburner:origLink></item>
		<item>
		<title>How to Make the iPhone a Trusted Platform</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/333993931/</link>
		<comments>http://cavemonkey50.com/2008/07/how-to-make-the-iphone-a-trusted-platform/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 03:54:24 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Editorials]]></category>

		<category><![CDATA[app store]]></category>

		<category><![CDATA[applications]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[ipod touch]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1415</guid>
		<description><![CDATA[The launch of Apple&#8217;s iPhone / iPod touch App Store appears to have been a great success. Apple managed to pull in several well known Mac, Palm, and game developers to contribute to the over 500 available applications at launch. Already there is an application to meet nearly every need, and with the majority of [...]]]></description>
			<content:encoded><![CDATA[<p>The launch of Apple&#8217;s iPhone / iPod touch <a href="http://www.apple.com/iphone/appstore/">App Store</a> appears to have been a great success. Apple managed to pull in several well known Mac, Palm, and game developers to contribute to the over 500 available applications at launch. Already there is an application to meet nearly every need, and with <a href="http://www.macrumors.com/2008/07/12/apple-opening-up-iphone-developer-program/">the majority of remaining developers being accepted into the developer program</a>, I&#8217;m sure there will be more great applications in the coming days and weeks.</p>
<p>While the App Store and applications have been a huge hit, playing around with applications over the past two days has filled me with some worries. Worries that Apple will need to address if they want the iPhone to succeed as a platform.</p>
<p><span id="more-1415"></span><br />
<h3 class='more'>Application Data</h3>
<p>After trying out several applications yesterday, a major flaw in the way application data is stored became apparent. Application data (preferences, files, saved data such as games) are all stored directly linked with the application that created them. Therefore, if an application is uninstalled, everything that application ever created is cleaned up and throw into the ether. Sounds like a great way to make sure the iPhone stays uncluttered, no? Well it is, but keeping the iPhone clutter free brings problems.</p>
<p>Due to the nature of the application / data relationship, <strong>if an application is removed from the iPhone unintentionally, everything that application ever stored is removed permanently</strong>. Let me give you an example.</p>
<p>While messing with iTunes&#8217; settings yesterday, I changed my iPod touch&#8217;s Application syncing preference to selective applications only. I forgot to select a few applications, and they were removed from my iPod touch the second I clicked apply. No big deal, right? I reselected the applications, and they appeared on my iPod touch with one exception - they were reset to their default settings and no longer contained my saved data. Thankfully, I only lost my Facebook login settings, my Flickr login settings, and my level 8 save game of Enigmo, but the results could have been much worse.</p>
<p>Looking at the list of applications currently available in the App Store, I would say 95% of applications would be fine with their data reset. Users would only lose some display settings, maybe a login or two, and that would be all. However, as the platform matures, more applications (and their users) will become reliant on stored data. Imagine finding out a year&#8217;s worth of mileage logs disappeared during your last iPhone&#8217;s restore. That could be a disaster.</p>
<h3>Syncing</h3>
<p>Part of this problem is due to the application / data relationship, but the bigger issue is the lack of a standardized syncing method in the iPhone OS. I would have no problem loosing data after a restore if that data could easily be added back, but at the moment there is no way to restore application data (yes, I&#8217;m aware iTunes currently stores a backup, but that is only of the most reason sync, and is no help if a single application looses its data).</p>
<p>Currently all of the native iPhone applications, with the exception of Notes and SMS, sync through an application that manages the iPhone&#8217;s stored data. Calendar items sync with iCal, addresses sync with Address Book, and so on. However, third-party applications are left to fend for themselves. Some application developers have cleverly worked around this by utilizing &#8220;the cloud&#8221; (great example is <a href="http://www.omnigroup.com/applications/omnifocus/iphone/">OmniFocus&#8217; WebDAV sync</a>), but applications without desktop counterparts are left stranded.</p>
<h3>How to Trust the iPhone Platform</h3>
<p>If Apple wants the iPhone platform to be trusted among businesses and consumers, they need to address these issues. Start backing up application data separate from the application itself. So, when the application is reinstalled, the data can be restored as well. With simple changes such as this, the iPhone will not only be the most innovate mobile platform today, the iPhone can become the most trusted mobile platform as well.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/333993931" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/07/how-to-make-the-iphone-a-trusted-platform/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F07%2Fhow-to-make-the-iphone-a-trusted-platform%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/07/how-to-make-the-iphone-a-trusted-platform/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 7 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/332943092/</link>
		<comments>http://cavemonkey50.com/2008/07/soc-atompub-week-7-status/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 19:22:35 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1414</guid>
		<description><![CDATA[In short, this past week of the Summer of Code has been a rebuilding and planning week. In addition to filling out midterm surveys and reports, I shifted gears toward media importing.
Why Import Media?
The first question I asked myself this week is why should TypePad&#8217;s media be imported into WordPress. This was a relatively easy [...]]]></description>
			<content:encoded><![CDATA[<p>In short, this past week of the Summer of Code has been a rebuilding and planning week. In addition to filling out midterm surveys and <a href="http://comox.textdrive.com/pipermail/wp-hackers/2008-July/020902.html">reports</a>, I shifted gears toward media importing.</p>
<h3>Why Import Media?</h3>
<p>The first question I asked myself this week is why should TypePad&#8217;s media be imported into WordPress. This was a relatively easy question to answer. TypePad, being a paid service, <a href="http://support.typepad.com/cgi-bin/typepad.cfg/php/enduser/std_adp.php?p_faqid=95&#038;p_created=1125529468&#038;p_sid=36jBKv8j&#038;p_lva=&#038;p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9MTEmcF9wcm9kcz0mcF9jYXRzPTAmcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1jYW5jZWw*&#038;p_li=&#038;p_topview=1">will delete and remove all content when canceled</a>. This includes images uploaded and stored in TypePad&#8217;s cloud. So, importing images and the like is important if a TypePad switcher does not want to see broken images all over the place.</p>
<p><span id="more-1414"></span><br />
<h3 class='more'>Can TypePad Media Be Imported?</h3>
<p>After determining media importing is essential, I explored my options for getting media into WordPress. Thankfully, TypePad has an AtomAPI for their web galleries. Unfortunately, from my testing this Atom API does not include single image uploads. So, the Atom API may be out of the question for media importing.</p>
<p>Since Atom API media importing appears out of the question, I started looking at their XML-RPC documentation. To no surprise, they do not have a method for retrieving media through XML-RPC. Therefore, I&#8217;m left with one option: finding media through URLs during the import process.</p>
<p>Sadly, this option is not ideal. For one, it will add time to the already slow import process. Also, this option will force media to be imported at the time of the initial import, since the content can only easily be traversed during the post import. So, I&#8217;m not too pleased with my options.</p>
<h3>Next Week</h3>
<p>Next week I plan on starting to code the media importing during the import process. I plan on making this optional, since it will most likely add significant time to the import process. However, before I do that, I will go through my options one more time. If anyone thinks of any alternatives from now until then, I&#8217;d love to hear them.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/332943092" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/07/soc-atompub-week-7-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F07%2Fsoc-atompub-week-7-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/07/soc-atompub-week-7-status/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 6 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/327082602/</link>
		<comments>http://cavemonkey50.com/2008/07/soc-atompub-week-6-status/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 02:26:47 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1413</guid>
		<description><![CDATA[Time is flying. The conclusion of this week marks the midway point of the Summer of Code, and the supposed ready for core date I set back in the beginning of summer. So, how did I stack up?
This Week
This week saw the addition of Atom URI detection based on the straight blog URL. To detect [...]]]></description>
			<content:encoded><![CDATA[<p>Time is flying. The conclusion of this week marks the midway point of the Summer of Code, and the supposed <a href="http://groups.google.com/group/wordpress-soc-2008/web/movable-type-typepad-atompub-based-content-importer">ready for core date</a> I set back in the beginning of summer. So, how did I stack up?</p>
<h3>This Week</h3>
<p>This week saw the addition of Atom URI detection based on the straight blog URL. To detect the Atom URI, I have to parse the HTML page for the RSD page, then parse the RSD page for the Atom URI. It&#8217;s a multi-step process, but the most reliable should TypePad ever change the Atom URI on me. In fact, I&#8217;d like to mention that every single URI (comments, paging, etc) is automatically detecting within the importer, so the importer should be URI future proof.</p>
<p><span id="more-1413"></span>In addition to AtomPub URI detection, I added a progress bar this week. I thought this would be a huge process, but thankfully the coding was relatively simple. I learned some techniques to force PHP to dump the output buffer, essentially updating the page. Paired with some simple Javascript, I was able to create a fairly responsive progress bar. I chose this method over a completely Javascript method since the Javascript method would require additional time to run (I can explain this technically if anyone wants to know why).</p>
<h3>Overall Status</h3>
<p>Since we&#8217;re at the midway point, I thought now would be a great time to look back at the overall status. As I mentioned earlier in the post, I choose this date as the ready for core inclusion date. Since the release cycle for WordPress 2.6 has been pushed up, core inclusion will most likely be pushed back since the AtomPub importer will not be ready for 2.6. Regardless of the actual core inclusion, the deadlines have not changed in my mind.</p>
<p>According <a href="http://groups.google.com/group/wordpress-soc-2008/web/movable-type-typepad-atompub-based-content-importer">my requirements for core inclusion</a>, by now the importer should be converting AtomPub data in to actual WordPress data. That&#8217;s occurring, so I&#8217;m definitely still on track.</p>
<h3>The Second Half</h3>
<p>So, where&#8217;s the importer going from here? Well, I plan to start working on the media importing portion of the importer next week. I&#8217;m figuring that may take at least two weeks. By then, WordPress 2.6 should be near release, so core inclusion can be considered once trunk goes bleeding again. After the importer is included in core, I can start getting real feedback from users. That should allow me to find and fix bugs, in addition to working on speed enhancements on a much larger scale.</p>
<h3>The Importer In Action</h3>
<p>I thought I would leave you this week with a look at the importer action. A few notes for the video:</p>
<ol>
<li>The first item takes a while to display since the first 20 posts need to be requested, plus two requests for comments, in additional to the standard trackback and draft checks.</li>
<li>I would like to add a throbber to the in progress page to make the wait for the first post less painful.</li>
<li>You&#8217;ll notice the importer semi-stall after 20 posts. This is because it needs to request another group of 20 posts.</li>
<li>By the time the average WordPress user sees this, I would really love to see the importer work ever faster than this, and will strive the second half to make that happen.</li>
</ol>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="537" height="41g" id="viddler"><param name="movie" value="http://www.viddler.com/player/2abc26f1/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/2abc26f1/" width="537" height="416" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler" ></embed></object></p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/327082602" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/07/soc-atompub-week-6-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F07%2Fsoc-atompub-week-6-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/07/soc-atompub-week-6-status/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 5 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/321669073/</link>
		<comments>http://cavemonkey50.com/2008/06/soc-atompub-week-5-status/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 23:35:36 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1412</guid>
		<description><![CDATA[Another week down, another step closer to a working AtomPub importer. Unfortunately, week 5 went anything but according to plan. Sure, I fixed the bugs found at the end of last week, but new issues came to light, requiring changes in the week&#8217;s plan.
New Issues Found
Additional testing early in the week by my mentor Lloyd [...]]]></description>
			<content:encoded><![CDATA[<p>Another week down, another step closer to a working AtomPub importer. Unfortunately, week 5 went anything but according to plan. Sure, I fixed the <a href="http://cavemonkey50.com/2008/06/soc-atompub-week-4-status/">bugs found at the end of last week</a>, but new issues came to light, requiring changes in the week&#8217;s plan.</p>
<h3>New Issues Found</h3>
<p>Additional testing early in the week by my mentor Lloyd brought forth some coding challenges. First off, Lloyd found a few error messages on import. Those were quickly resolved, but once Lloyd made it past the error messages, he found the performance of the importing to be subpar.</p>
<p><span id="more-1412"></span>After adding some performance measurements to the importer, the source of the problem was revealed. The multiple requests of different feeds of data adds up over time. Essentially, for every post the importer needs to ping the post URL to check for a 404 (draft status), request the comments feed, and request the trackbacks XML-RPC data. Each post was taking over a second, quickly adding up over time.</p>
<h3>Progress, Progress, Progress</h3>
<p>Unfortunately, nothing can be done at this time to lower the request time; the feed requests are at the mercy of the internet. However, the notifications can be enhanced so a user is not wondering why the importer has not finished.</p>
<p>So, after discussing the issue with Lloyd, I think a progress bar is needed in this situation. Unfortunately, due to the nature of PHP applications, I can&#8217;t just add a progress bar out of nowhere. I will need to modularize the importer into a more AJAXy interface, so an AJAX progress bar can be updated with the import status. I will begin looking at solutions for this later in the upcoming week.</p>
<h3>Even More Issues</h3>
<p>The performance issues was not my only problem this week. Lloyd found that when importing from a blog with 3,000 entries, the importer ran out of memory. Surprisingly, it ran out of memory around 130MB, which would be crazy under a normal web server, given PHP is typically limited to 16MB of RAM.</p>
<p>Once this issue was pointed out to me, I quickly found the problem. I had been putting all entries in a massive array before looping through them to import. So, to correct this I limited the importer to batches of 20 posts at a time, freeing the memory between each set of posts. This appears to have corrected the problem.</p>
<p>In addition to the memory leak, I found out that the comments feed has the same 20 comments as time restriction that the main feed had. Already familiar with the issue for the main feed, I corrected that issue and all comments started to be imported.</p>
<h3>Outlook Looks Good</h3>
<p>Despite the massive amounts of issues discovered this week, I think the future of the importer is looking better than ever. Some major hurdles were overcome this week, and because of that, this week ends with a more memory efficient, error-free version of the importer.</p>
<p>With the new discoveries, obviously the plan has been changed a bit. Currently, I&#8217;m looking at finally (and yes, I mean finally) writing the code to automatically detect the Atom API feed at the beginning of next week. From there, I will begin working on updating the interface to be more AJAXy, providing notifications along the way.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/321669073" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/06/soc-atompub-week-5-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F06%2Fsoc-atompub-week-5-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/06/soc-atompub-week-5-status/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 4 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/316656387/</link>
		<comments>http://cavemonkey50.com/2008/06/soc-atompub-week-4-status/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 03:33:04 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1410</guid>
		<description><![CDATA[Now completing the fourth week of coding, the AtomPub importer is finally starting to take shape. This week I managed to retrieve trackbacks, successfully start importing the previously retrieved data into WordPress, and added a user interface enhancement.
Trackbacks Are Go
If you remember last week, I had some difficulties getting trackbacks working. Well, thankfully that is [...]]]></description>
			<content:encoded><![CDATA[<p>Now completing the fourth week of coding, the AtomPub importer is finally starting to take shape. This week I managed to retrieve trackbacks, successfully start importing the previously retrieved data into WordPress, and added a user interface enhancement.</p>
<h3>Trackbacks Are Go</h3>
<p>If you remember last week, I had some <a href="http://cavemonkey50.com/2008/06/soc-week-3-status/">difficulties getting trackbacks working</a>. Well, thankfully that is no longer the case. Earlier this week <a href="http://joseph.randomnetworks.com/">Joseph Scott</a> helped me figure out the code needed for accessing TypePad&#8217;s XML-RPC API. With this addition, all standard blog data is now being imported.</p>
<p><span id="more-1410"></span><br />
<h3 class='more'>Importing is Go</h3>
<p>After solving the trackback dilemma, I started working on actually importing the array&#8217;s retrieved from the AtomPub server. Since much of the import code is shared between other WordPress importers, this process went fairly quickly. I only needed to make a few minor adjustments on some code, and by Thursday arrays were becoming rows in WordPress&#8217; database.</p>
<h3>Notifications Are Go</h3>
<p>After testing importing several times, a logical enhancement occurred to me. Occasionally the AtomPub server can take a while to respond and feed the data into WordPress. During this time, a user would be sitting at the initial page with no notification of activity other than the browser&#8217;s loading notification. This event could have raised suspicions that the page was not loading, when in fact everything was working perfectly. So, I added a small <a href="http://en.wikipedia.org/wiki/Throbber">throbber</a> and message text while the importing occurs. The enhancement is small, but it should bring a piece of mind to those getting antsy.</p>
<p><img src="http://cavemonkey50.com/wp-content/uploads/2008/06/throbber.png" alt="AtomPub Throbber" title="AtomPub Throbber" width="500" height="26" class="alignnone size-full wp-image-1411 noborder" /></p>
<h3>Bugs Are Go</h3>
<p>What would a coding project be without bugs. Today, my mentor Lloyd notified me of several small bugs. It turns out the importer has been generating warning messages left and right. I&#8217;ve been oblivious to this since apparently <a href="http://www.mamp.info/en/index.php">MAMP</a> had PHP error reporting disabled. I have since <a href="http://www.jhuskisson.com/code-tidbits/re-enabling-error-reporting-in-mamp">enabled error reporting</a>, and will start fixing the small bugs early next week.</p>
<p>Unfortunately, a major bug was also discovered. Lloyd found that only 20 entries will import. Since I&#8217;ve been working with only a few entries at a time, I had not run into this problem yet. I suspect the issue is with the AtomPub server, and an additional request will be needed for each set entries over 20. I&#8217;ll know more next week when I take a closer look at the issue.</p>
<h3>Ronald is coding &#8230;and he has a plan.</h3>
<p>I hope someone gets the above reference. Anyway, as you may have guessed, the early part of next week will focus solely on tackling the bugs found today. Hopefully the issues will not be problematic so I can begin the next task: allowing users to select an author to import all entries under. Once the author override code is committed, the next step on my coding agenda is to finally write the code to automatically the detect the AtomPub URL based on the website&#8217;s blog address. Those three items should keep me busy next week, and as always, I&#8217;ll let you know next week how the coding went.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/316656387" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/06/soc-atompub-week-4-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F06%2Fsoc-atompub-week-4-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/06/soc-atompub-week-4-status/</feedburner:origLink></item>
		<item>
		<title>Why Should Anyone Use Safari on the Mac?</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/312809935/</link>
		<comments>http://cavemonkey50.com/2008/06/why-should-anyone-use-safari-on-the-mac/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 01:35:51 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Editorials]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[browser]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1409</guid>
		<description><![CDATA[Alright, that is a sensationalist title, but I needed a strong title to show my hypocrisy. Today, I have made the switch from Safari 3 to Firefox 3. I have realized despite the numerous advantages Safari has with direct operating system integration, Firefox still wins out feature-wise. To help make my decision, I made several [...]]]></description>
			<content:encoded><![CDATA[<p>Alright, that is a sensationalist title, but I needed a strong title to show <a href="http://cavemonkey50.com/2008/04/why-should-anyone-use-firefox-on-the-mac/">my hypocrisy</a>. Today, I have made the switch from Safari 3 to Firefox 3. I have realized despite the numerous advantages Safari has with direct operating system integration, Firefox still wins out feature-wise. To help make my decision, I made several lists of the advantages and disadvantages that matter to me. Below are those lists.</p>
<p><span id="more-1409"></span><br />
<h3 class='more'>Advantages of Safari</h3>
<ul>
<li>Operating system dictionary integration. Supporting shortcuts like dictionary lookup (command+shift+D).</li>
<li>iPod touch bookmark syncing.</li>
<li>Launches fairly fast and browses pretty quickly.</li>
<li>Has an <a href="http://www.inquisitorx.com/safari/">amazing search plugin</a>.</li>
<li>Interface is completely &#8220;Mac-like&#8221;.</li>
</ul>
<h3>Disadvantages of Safari</h3>
<ul>
<li>Flash currently chokes in Safari. Safari won&#8217;t crash, but can easily freeze for over a minute when viewing Flash content.</li>
<li>After three operating system updates, <a href="http://theappleblog.com/2008/01/13/safari-losing-your-cookies/">the vanishing cookie bug</a> remains.</li>
<li>Some websites still won&#8217;t let you use Safari to fill out forms, etc.</li>
</ul>
<h3>Advantages of Firefox</h3>
<ul>
<li>Lightning fast. Has not crashed or froze on me once since install.</li>
<li>The amazing <a href="http://mozillalinks.org/wp/2007/11/firefox-3-location-bar-just-became-almighty/">awesome bar</a>.</li>
<li>The bookmark &#8220;star&#8221; system works wonders. Very easy for temporarily bookmarking websites for later reference.</li>
<li>When multiple tabs are open, the tab bar scrolls.</li>
<li>Supports <a href="http://gears.google.com/">Google Gears</a>.</li>
<li>Extensions can fill any feature void.</li>
</ul>
<h3>Disadvantages of Firefox</h3>
<ul>
<li>Interface is only partially Mac-like, even with <a href="http://www.takebacktheweb.org/">GrApple</a>.</li>
<li>Spell checking is not as nice as Safari.</li>
<li>Firefox 3 occasionally renders some pages strangly, due to the new text rendering.</li>
</ul>
<p>Looking over the lists, Safari&#8217;s advantages are mostly in the interface, while the disadvantages can quickly become show stoppers. For Firefox, the advantages are in the features, while the disadvantages are only minor quibbles. When you enumerate the features, Firefox wins hands down - at least for me.</p>
<p>So, my final ruling is Firefox wins this browser round. If Safari 4 can manage to fix the Flash freezes and remember cookies, Safari has a good chance of winning round 4. Until then, Firefox will remain my browser of choice.
<p><strong><em>Advertisement</em></strong>:  <a href="http://www.text-link-ads.com/packageDetail.php?packageID=44415">Advertise Your Site in This Space</a><em> </em></p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/312809935" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/06/why-should-anyone-use-safari-on-the-mac/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F06%2Fwhy-should-anyone-use-safari-on-the-mac%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/06/why-should-anyone-use-safari-on-the-mac/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 3 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/311563972/</link>
		<comments>http://cavemonkey50.com/2008/06/soc-week-3-status/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 02:42:38 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1408</guid>
		<description><![CDATA[Week 3 of the Summer of Code has been by far the most productive week yet. The main focus of this week was to parse the AtomPub data into a PHP array, and I&#8217;m pleased to say this was a success.
The XML Parser
I started the week off by writing the custom XML parser I talked [...]]]></description>
			<content:encoded><![CDATA[<p>Week 3 of the Summer of Code has been by far the most productive week yet. The main focus of this week was to parse the AtomPub data into a PHP array, and I&#8217;m pleased to say this was a success.</p>
<h3>The XML Parser</h3>
<p>I started the week off by writing the custom XML parser I talked about <a href="http://cavemonkey50.com/2008/06/soc-atompub-week-2-status/">last week</a>. To do this, I researched several different methods for utilizing PHP&#8217;s <a href="http://www.php.net/xml_parse">xml_parse function</a>. Since the parsing occured on an established standard where the tag names will not change on me, I decided to parse the tags based on a tag name <a href="http://www.php.net/switch">switch</a>. This worked well until I started running into nested tags. Although, that problem was quickly resolved with the use of a few class variables.</p>
<p><span id="more-1408"></span><br />
<h3 class='more'>Missing Data</h3>
<p>Once the XML was in a parsed array, I began looking over the array and envisioned how this data would import into WordPress. During this process, I realized the AtomPub feed was missing two bits of key data: the draft status of posts and a list of trackbacks. I immediately began looking into possible workarounds.</p>
<p>While I investigated solutions, my mentor Lloyd discussed the missing data with Six Apart. We were assured support for <a href="http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-17.html#rfc.section.13.1.1">app:draft</a> was on their todo list, but they did not commit to any date for availability. So, Lloyd gave me the go ahead for workarounds.</p>
<p>To solve the draft problem, I ended up creating a 404 checker. Assuming that drafts will not be published, the URL for the post should result in a 404. Knowing this, while posts are imported I loop through the URLs and check the HTTP status codes. The workaround certainly isn&#8217;t the best as it&#8217;s resource intensive, but for the time being it works.</p>
<p>After fixing the draft problem, I looked into solutions for the missing trackbacks. I found <a href="http://www.sixapart.com/developers/xmlrpc/movable_type_api/mtgettrackbackpings.html">this function</a> on TypePad&#8217;s XML-RPC developer site, however, attempts to implement the function call have failed me. So, I continued to search for alternatives.</p>
<p>I found out today that Movable Type has a <a href="http://www.movabletype.org/documentation/trackback_manual.html#trackback%20ping%20format">hidden RSS feed for trackbacks</a>. I tested this and indeed is it true. Unfortunately, TypePad does not seem to have this feed. My guess is this is because of their <a href="http://www.typepad.com/pricing/">premium pricing model</a>, removing support for additional and custom templates in the lower tiers. If anyone happens to know the super-secret URL for a post&#8217;s trackbacks on TypePad, I would love to know, but I truly believe that feed does not exist.</p>
<p>Therefore, the search for a trackback solution continues. For the time being this is being put on the back-burner. When I get some free time over the next couple of weeks or during the second half of the Summer of Code I will revisit this problem, but at the moment trackback support is being forgone.</p>
<h3>Next Week&#8217;s Plan</h3>
<p>So, what&#8217;s up for next week? Early next week I plan on working on the actual importing of data into WordPress. All the arrays are prepped and the functions are ready, so the importing process should go fairly quickly. I&#8217;m actually anticipating finishing up the import code by the middle of next week, but if things don&#8217;t go to plan I have until the end of the following week. Should I finish early, I will revisit some of the priority two items accumulated over the past few weeks. With a little luck, next week will bring a functioning importer with some additional fixes.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/311563972" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/06/soc-week-3-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F06%2Fsoc-week-3-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/06/soc-week-3-status/</feedburner:origLink></item>
		<item>
		<title>SoC: AtomPub Week 2 Status</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/306519811/</link>
		<comments>http://cavemonkey50.com/2008/06/soc-atompub-week-2-status/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 02:31:20 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1407</guid>
		<description><![CDATA[While I didn&#8217;t blog about last week&#8217;s status, significant progress has been made in parsing TypePad and Movable Type AtomPub feeds (well, parsing TypePad feeds). This week started off by completing more research on the AtomPub spec. In order to parse an AtomPub feed, I had to learn about X-WSSE authentication. From there, I found [...]]]></description>
			<content:encoded><![CDATA[<p>While I didn&#8217;t blog about <a href="http://groups.google.com/group/wordpress-soc-2008/t/baf8e2a27f76b3aa">last week&#8217;s status</a>, significant progress has been made in parsing TypePad and Movable Type AtomPub feeds (well, parsing TypePad feeds). This week started off by completing more research on the AtomPub spec. In order to parse an AtomPub feed, I had to learn about <a href="http://www.xml.com/pub/a/2003/12/17/dive.html">X-WSSE authentication</a>. From there, I found a great <a href="http://scripts.ringsworld.com/content-management/webpad-3.0-personal/plugins/-blogging/class.wsse.php.html">X-WSSE class</a> that <a href="http://groups.google.com/group/wordpress-soc-2008/t/8bd7ae6d7cb17eb">I included</a> in my test version of WordPress. Then, the fun began.</p>
<h3>Movable Type Hates Me</h3>
<p>Almost immediately, I was retrieving the RAW XML of TypePad&#8217;s AtomPub feed. Unfortunately, I could not say the same for Movable Type. Due to some server configuration issues on my end or possibly a bug in Movable Type, I am unable to retrieve Movable Type AtomPub feeds at the moment. I&#8217;ve tried <a href="http://www.tbray.org/ape/">various</a> <a href="http://www.witha.jp/eXeries/software/">methods</a> of parsing the feed and each method returns <a href="http://mt.cavemonkey50.com/mt/mt-atom.cgi/weblog">the same cryptographic error message</a>. I&#8217;ve called in the experts (my mentor, Lloyd) to help me, but if anyone has any clue as to why Movable Type hates me, I would appreciate the feedback.</p>
<p><span id="more-1407"></span><br />
<h3 class='more'>Parsing the Feed</h3>
<p>Regardless of the error, I kept on trucking with the TypePad AtomPub feed, knowing that Movable Type will fall in line once I can figure out my retrieval problems. Working with TypePad&#8217;s feed, I started trying different methods of Atom parsing. I first tried WordPress&#8217; built in <a href="http://magpierss.sourceforge.net/">Magpie</a> parser, but due to Magpie not supporting Atom 1.0, that was little help. I then tried some <a href="http://www.php.net/manual/en/ref.xml.php">code snippets on php.net</a>, but unfortunately none of the snippets parsed in the manner I required. So, I started <a href="http://www.php.net/manual/en/ref.xml.php">writing my own basic XML parser</a>.</p>
<p>That&#8217;s where I stand today. This coming week I will continue writing my custom XML parser, completing the parser by the end of next week. The goal is to have all AtomPub data in array, so I certainly have my work cut out for me.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/306519811" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/06/soc-atompub-week-2-status/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F06%2Fsoc-atompub-week-2-status%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/06/soc-atompub-week-2-status/</feedburner:origLink></item>
		<item>
		<title>Summer of Code 2008 Kickoff</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/298597738/</link>
		<comments>http://cavemonkey50.com/2008/05/summer-of-code-2008-kickoff/#comments</comments>
		<pubDate>Mon, 26 May 2008 20:16:06 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[summer of code]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1405</guid>
		<description><![CDATA[Google&#8217;s Summer of Code 2008 is officially underway! This year I am working on creating an AtomPub-based content importer for WordPress. The goal is to import entries and other content from Movable Type and TypePad into WordPress in as few clicks as possible.
Since the AtomPub spec (RFC 5023) is so new, this should prove to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/soc/2008/">Google&#8217;s Summer of Code 2008</a> is officially underway! This year I am working on creating an <a href="http://groups.google.com/group/wordpress-soc-2008/web/movable-type-typepad-atompub-based-content-importer">AtomPub-based content importer for WordPress</a>. The goal is to import entries and other content from Movable Type and TypePad into WordPress in as few clicks as possible.</p>
<p>Since the AtomPub spec (<a href="http://www.ietf.org/rfc/rfc5023.txt">RFC 5023</a>) is so new, this should prove to be an interesting summer. I will be one of the first to implement a real world use of AtomPub, and I suspect documentation will be scarce. Regardless, I am up for the challenge and can&#8217;t wait to see how the end product turns out.</p>
<p>If you&#8217;re interested in the progress of this project, just stayed tuned to this blog. I will be blogging weekly updates on my progress, so you will always know where I stand.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/298597738" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/05/summer-of-code-2008-kickoff/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F05%2Fsummer-of-code-2008-kickoff%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/05/summer-of-code-2008-kickoff/</feedburner:origLink></item>
		<item>
		<title>Microsoft Forcing Update to IE7 with XP SP3</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/286559395/</link>
		<comments>http://cavemonkey50.com/2008/05/microsoft-forcing-update-to-ie7-with-xp-sp3/#comments</comments>
		<pubDate>Fri, 09 May 2008 03:53:42 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[On the Web]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[ie7]]></category>

		<category><![CDATA[internet explorer]]></category>

		<category><![CDATA[microsoft]]></category>

		<category><![CDATA[sp3]]></category>

		<category><![CDATA[web design]]></category>

		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1404</guid>
		<description><![CDATA[I noticed this interesting article from ComputerWorld earlier today:
Microsoft Corp. has warned users updating to Windows XP Service Pack 3 (SP3) that they won&#8217;t be able to downgrade from Internet Explorer 7 to the older IE6 without uninstalling the service pack.
As a web designer, this article hit close to home. While I think forcing Internet [...]]]></description>
			<content:encoded><![CDATA[<p>I noticed <a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&#038;articleId=9083318">this interesting article from ComputerWorld</a> earlier today:</p>
<blockquote><p>Microsoft Corp. has warned users updating to Windows XP Service Pack 3 (SP3) that they won&#8217;t be able to downgrade from Internet Explorer 7 to the older IE6 without uninstalling the service pack.</p></blockquote>
<p>As a web designer, this article hit close to home. While I think forcing Internet Explorer 7 down XP users&#8217; throats is great (eliminating the horrible non-standard compliant IE6), this only further complicates the IE6 / web designer relationship.</p>
<p><span id="more-1404"></span>If I choose to upgrade to XP Service Pack 3, which includes multiple important bug fixes and speed increases, I remove my ability to test in Internet Explorer 6. I could care less for my own personal projects, but I am sure not having the ability to test in IE6 would upset my clients. Then again, this change may remove the remaining IE6 users off the net, thus making IE6 testing obsolete.</p>
<p>Just for kicks, I checked my own website statistics. Currently 20% of my traffic comes from Internet Explorer, with 6% of my total traffic being IE6 users. Do you think this number will dwindle over the coming weeks and months or will the remaining IE6 users remain strong (most likely spyware-infested computers with automatic updates disabled)? When do you think disregarding IE6 users is fair as a web designer?</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/286559395" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/05/microsoft-forcing-update-to-ie7-with-xp-sp3/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F05%2Fmicrosoft-forcing-update-to-ie7-with-xp-sp3%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/05/microsoft-forcing-update-to-ie7-with-xp-sp3/</feedburner:origLink></item>
		<item>
		<title>9rules Relaunched Today</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/281140525/</link>
		<comments>http://cavemonkey50.com/2008/04/9rules-relaunched-today/#comments</comments>
		<pubDate>Thu, 01 May 2008 00:21:10 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Asides]]></category>

		<category><![CDATA[On the Web]]></category>

		<category><![CDATA[9rules]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1401</guid>
		<description><![CDATA[Just a heads up, 9rules, the most awesome blogging network in the universe, relaunched today. The forum discussions have been removed from the site, returning 9rules to the original idea; highlighting great content from around the web. Check out the new site when you get a chance.
On a side note, I realize my last post [...]]]></description>
			<content:encoded><![CDATA[<p>Just a heads up, <a href="http://9rules.com/">9rules</a>, the most awesome blogging network in the universe, <a href="http://blog.9rules.com/2008/04/9rules-vol-3-edition-1/">relaunched today</a>. The forum discussions have been removed from the site, returning 9rules to the original idea; highlighting great content from around the web. Check out the new site when you get a chance.</p>
<p>On a side note, I realize <a href="http://cavemonkey50.com/2008/04/your-blogging-environment/">my last post</a> is extremely ironic considering I have not posted since publishing that post. The second my finals are over you&#8217;ll see some great content, I promise.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/281140525" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/04/9rules-relaunched-today/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F04%2F9rules-relaunched-today%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/04/9rules-relaunched-today/</feedburner:origLink></item>
		<item>
		<title>Your Blogging Environment</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/273281881/</link>
		<comments>http://cavemonkey50.com/2008/04/your-blogging-environment/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 02:22:31 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Asides]]></category>

		<category><![CDATA[The Real Life]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[paper]]></category>

		<category><![CDATA[writeroom]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1400</guid>
		<description><![CDATA[For the past few months I have had difficultly blogging. Part of the difficulty has been finding the time to blog, but most of the problem has been my blogging environment. My desk had become cluttered, my work environment noisy, and I could not find a moment of peace to myself.
I solved these problems by [...]]]></description>
			<content:encoded><![CDATA[<p>For the past few months I have had difficultly blogging. Part of the difficulty has been finding the time to blog, but most of the problem has been my blogging environment. My desk had become cluttered, <a href="http://www.viddler.com/cavemonkey50/videos/43/">my work environment noisy</a>, and I could not find a moment of peace to myself.</p>
<p>I solved these problems by starting to write my rough drafts on paper, away from my normal work area. I write while I&#8217;m waiting for class, or even in class when the professor is boring. When I am on my computer, I have started using an excellent application, <a href="http://hogbaysoftware.com/products/writeroom">WriteRoom</a>, which removes the normal background noise. This combination has allowed me to resume a regular post schedule without much difficulty.</p>
<p><span id="more-1400"></span>I&#8217;m curious if other bloggers and writers run into the same problem as me. Do you find your working environment difficult to write in at times? How do you deal with this? Change of scenery? Hit up Panera or Starbucks? I&#8217;d love to hear how others deal with this frustration.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/273281881" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/04/your-blogging-environment/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F04%2Fyour-blogging-environment%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/04/your-blogging-environment/</feedburner:origLink></item>
		<item>
		<title>To iPhone Development and Beyond!</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/268006599/</link>
		<comments>http://cavemonkey50.com/2008/04/to-iphone-development-and-beyond/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 23:22:57 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Code]]></category>

		<category><![CDATA[The Real Life]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[ipod]]></category>

		<category><![CDATA[ipod touch]]></category>

		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1399</guid>
		<description><![CDATA[When Apple first unveiled the iPhone and iPod touch&#8217;s SDK I welcomed it with joy. Watching the keynote filled my mind with excitement as the SDK appeared extremely powerful for developers. I envisioned future applications I would be using, however, the thought of developing my own application never crossed my mind.
Now four weeks later, I [...]]]></description>
			<content:encoded><![CDATA[<p>When Apple first unveiled the iPhone and iPod touch&#8217;s <abbr title="Software Development Kit">SDK</abbr> I welcomed it with joy. Watching the keynote filled my mind with excitement as the SDK appeared extremely powerful for developers. I envisioned future applications I would be using, however, the thought of developing my own application never crossed my mind.</p>
<p>Now four weeks later, I am seriously considering developing my first non-web application. The iPhone seems like the perfect platform for such a task, thanks to its powerful SDK and numerous development tools.</p>
<p><span id="more-1399"></span><br />
<h3 class='more'>The Beginnings of Native Application Development</h3>
<p>I know what you&#8217;re thinking. Why haven&#8217;t I developed a native application yet? Well, while I know C++ and Java, neither of my courses ever entered the realm of graphical user interfaces. Everything I have done thus far with native application development has been strictly confined to the command-line. Not very helpful in today&#8217;s GUI-driven world. Also, while C++ is useful on the Windows side, Mac OS X is strictly Objective-C, presenting a minor barrier to my development entrance.</p>
<p>That is all about to change, though. I just scheduled a required course next semester in object-oriented programming. If I am unable to learn Objective-C on my own, <a href="http://bulletins.psu.edu/bulletins/bluebook/university_course_descriptions.cfm?letter=I&#038;courselong=IST%7c311%7clatest">IST 311</a> should help me fill in the gaps.</p>
<p>Although, more importantly, the iPhone SDK offers something I have yet to fully discover in Mac OS X development: an interface builder. The iPhone interface builder looks drop-dead simple, hopefully helping me cross over into GUI development.</p>
<h3>Picking an Application to Develop</h3>
<p>Now that the technical hurdles have been overcome, the real challenge lies ahead. I need to come up with an application to develop. While I&#8217;m learning I will stick to simplistic applications, such as &#8220;Hello World&#8221; and others, however eventually I would love to develop an application that others will use. That should not be difficult as the iPhone, being a new platform, will have numerous voids to fill.</p>
<p>I will be sure to keep you updated in my crossover into native application development. In the mean time, if anyone has any ideas for applications, I would enjoy hearing them. I am trying to stay unique, as I am certain when the Apple Store is launched there will be a plethora of To Do applications and so on, but do not hold back on your suggestions. Anyway, I hope to see you on the flip-side, a native iPhone application, soon.</p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/268006599" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/04/to-iphone-development-and-beyond/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F04%2Fto-iphone-development-and-beyond%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/04/to-iphone-development-and-beyond/</feedburner:origLink></item>
		<item>
		<title>Why Should Anyone Use Firefox on the Mac?</title>
		<link>http://feeds.feedburner.com/~r/ronaldheft/~3/264852023/</link>
		<comments>http://cavemonkey50.com/2008/04/why-should-anyone-use-firefox-on-the-mac/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 03:36:04 +0000</pubDate>
		<dc:creator>Ronald Heft</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Editorials]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[browser]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[internet explorer]]></category>

		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://cavemonkey50.com/?p=1398</guid>
		<description><![CDATA[Last night I stumbled on a very well thought out article by John Gruber of Daring Fireball. John Gruber presented the argument that while Firefox 3&#8217;s Mac interface is an improvement from previous versions, Firefox is still faking the Mac experience.
I have to agree with John whole-heartily on this issue. Firefox 3 is generic cereal; [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I stumbled on a very <a href="http://daringfireball.net/2008/04/firefox_3_safari_3">well thought out article</a> by John Gruber of <a href="http://daringfireball.net/">Daring Fireball</a>. John Gruber presented the argument that while Firefox 3&#8217;s Mac interface is an improvement from previous versions, Firefox is still faking the Mac experience.</p>
<p>I have to agree with John whole-heartily on this issue. Firefox 3 is generic cereal; while it may look like the name-brand cereal, the taste is horribly off. Firefox belongs on Windows, and I don&#8217;t think Mozilla can ever hide that fact.</p>
<p><span id="more-1398"></span><br />
<h3 class='more'>Why Even Use Firefox?</h3>
<p>That got me thinking, why should anyone use Firefox on the Mac? I mean, Safari is quite an amazing browser for being the default Mac browser. Safari has a mind-blowing user interface, is completely standards compliant (arguably better than Firefox), loads blazingly fast, and even includes some kick-ass web developer tools. Well, I think I have an answer: no one cares about that stuff.</p>
<h3>The Voices in My Head</h3>
<p>People have been trained over the years to despise Internet Explorer and embrace Firefox. I don&#8217;t think most people even know why they hate Internet Explorer; they&#8217;ve just been told by some geek in their life that Firefox is better and they should use that. When they make the switch to Mac, that sub-conscience kicks in and they feel the need to use Firefox.</p>
<p>Yesterday, my brother approached me and told me he hated Macs. Baffled by that statement, I pushed him for some reasoning. It turns out his school Macbooks have a really old version of Firefox (1.5) running on Leopard. There must be some bug in that configuration because the keyboard always freezes up on him. After hearing his reasoning, I simply told him to use Safari. He quickly responded, &#8220;Safari sucks&#8221;. Again baffled, I pressed him for a response. He couldn&#8217;t come up with one; he just assumed that every operating system&#8217;s default browser sucks and he should use Firefox.</p>
<p>I look back now, and when I first made the switch to OS X in 2005, I had the same knee-jerk reaction. Of course, back then Safari did kind of suck, especially on pages with heavy Javascript, but still; Safari was no where near the level of crappy-ness as Internet Explorer. I just assumed Firefox was the correct browser to use without ever giving Safari a try.</p>
<h3>A Win-Win Situation</h3>
<p>So, I&#8217;m not really sure what to make of this. Firefox certainly has a purpose on Macs; to offer an alternative, familiar experience to Windows users, while satisfying the power-user. And, Safari certainly has the short end of the stick; with many switchers passing over an amazing browser for a recognizable name.</p>
<p>I guess the true solution to this stalemate is just to be happy. I mean, this is a web geek&#8217;s dream. For once, people are using standards compliant browsers in mass numbers. The movement has become so noticeable that Microsoft has been <a href="http://www.microsoft.com/presspass/press/2008/mar08/03-03WebStandards.mspx">forced to raise the bar on standards in Internet Explorer 8</a>. A Mac user can&#8217;t go wrong; either option is a good one, and in the end as long the page displays correctly, that is all that should matter.
<p><strong><em>Advertisement</em></strong>:  <a href="http://www.text-link-ads.com/packageDetail.php?packageID=44415">Advertise Your Site in This Space</a><em> </em></p>
<img src="http://feeds.feedburner.com/~r/ronaldheft/~4/264852023" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cavemonkey50.com/2008/04/why-should-anyone-use-firefox-on-the-mac/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=ronaldheft&amp;itemurl=http%3A%2F%2Fcavemonkey50.com%2F2008%2F04%2Fwhy-should-anyone-use-firefox-on-the-mac%2F</feedburner:awareness><feedburner:origLink>http://cavemonkey50.com/2008/04/why-should-anyone-use-firefox-on-the-mac/</feedburner:origLink></item>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=ronaldheft</feedburner:awareness></channel>
</rss><!-- Dynamic Page Served (once) in 1.007 seconds --><!-- Cached page served by WP-Super-Cache --><!-- Compression = gzip -->
