<?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>UXDriven</title>
	<atom:link href="http://blog.uxdriven.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.uxdriven.com</link>
	<description>Design. Build. Convert.</description>
	<lastBuildDate>Thu, 17 Sep 2009 18:58:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Making a Case For Endless Scrolling</title>
		<link>http://blog.uxdriven.com/2009/09/17/making-a-case-for-endless-scrolling/</link>
		<comments>http://blog.uxdriven.com/2009/09/17/making-a-case-for-endless-scrolling/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 16:30:02 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[article]]></category>

		<guid isPermaLink="false">http://blog.uxdriven.com/?p=101</guid>
		<description><![CDATA[Introduction



Every user action has an associated cost, and the key to many sites&#8217; conversion
lies within minimizing this cost, whether it means minimizing &#8220;clicks&#8221; or simply
requiring less from the user.

By and large, it comes down to efficiency and accomplishing a task in as painless of a way as
possible.  USAA&#8217;s Deposit@Mobile is a great example of [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>

<p><img src="http://blog.uxdriven.com/wp-content/uploads/2009/09/google_reader_thumb.png" alt="Google Reader Thumb" /></p>

<p><strong>Every user action has an associated cost</strong>, and the key to many sites&#8217; conversion
lies within minimizing this cost, whether it means minimizing &#8220;clicks&#8221; or simply
<a href="http://www.uie.com/articles/three_hund_million_button/" title="$300 Million Dollar Button">requiring less from the user</a>.</p>

<p>By and large, it comes down to efficiency and accomplishing a task in as painless of a way as
possible.  <a href="http://www.usaa.com/" title="USAA">USAA</a>&#8217;s <a href="https://www.usaa.com/inet/ent_blogs/Blogs?action=blogpost&amp;blogkey=newsroom&amp;postkey=deposit_a_check_from_anywhere" title="deposit@mobile">Deposit@Mobile</a> is a great example of how a company can
improve customer experience &amp; perception by simplifying the tedious process of depositing a check.</p>

<p>In my opinion, <em>Endless Scroll</em> is a technically simple idea that greatly reduces friction
in every day activities.</p>

<h2>Current Trends</h2>

<p><a href="http://uipatternfactory.com/p=endless-scrolling/" title="Endless Scrolling">Endless Scrolling</a> has been discussed before, but has seen limited adoption despite
<a href="http://reader.google.com/">Google Reader</a>&#8217;s seamless implementation:</p>

<p><object width="480" height="360" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab">
    <param name="src" value="http://blog.uxdriven.com/wp-content/uploads/2009/09/google_reader.mov">
    <param name="controller" value="true">
    <param name="autoplay" value="false">
    <embed src="http://blog.uxdriven.com/wp-content/uploads/2009/09/google_reader.mov"
        width="480" height="360"
        controller="true" autoplay="false"
        scale="tofit" cache="true"
        pluginspage="http://www.apple.com/quicktime/download/">
</object></p>

<p>Seeing how <a href="http://www.facebook.com/" title="Facebook">many</a>, <a href="http://digg.com/" title="Digg.com">many</a>, <a href="http://fmylife.com/" title="F My Life">many</a> sites offer a constant stream of new content,
pagination often interrupts the flow.  Granted, many sites (<a href="http://google.com/" title="Google">Google</a>) require paginated
content to distinguish valuable content from less desirable.</p>

<h2>User Experience</h2>

<p>Besides streamlining the experience for the user, there are potential negatives to be mitigated:</p>

<ul>
<li>Any content below main content may be &#8220;bumped&#8221; for newer content.  The footer may
never be accessible if it lies below new content.</li>
<li>Context of content (such as the date or event-related to content) may be lost.</li>
<li>Toggling this behavior would require user interaction, which defeats the purpose of automating
the &#8220;Next Page&#8221; event entirely.</li>
<li>&#8220;Progressing&#8221; through content goes away entirely, as pagination clearly defines where the user
is in terms of progress (&#8221;Page 23 of 61&#8243;).</li>
</ul>

<p>Many of these potential problems have already been solved in Google Reader&#8217;s implementation by
doing the following:</p>

<ul>
<li>&#8220;Frame&#8221; the content container so that main page components: <em>header</em>, <em>navigation</em>, <em>footer</em>, <em>etc.</em>
are still accessible no matter how far the user scrolls.</li>
<li>Clearly define the context of the content, such as the date, author, or category.</li>
<li>Message the user on how much progress has been made: &#8220;<em>23 of 467 Articles Loaded</em>&#8220;.</li>
</ul>

<h2>Conclusion</h2>

<p>For now, it seems <em>Endless Scroll</em> is best as an &#8220;opt-in&#8221; option for the user, whether by
<a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/bookmarklet.jquery.min.js">bookmarklet</a>
or other means.  If the behavior of the user is almost always to continue on to more content then
<em>Endless Scroll</em> can prove beneficial.</p>

<h2>Resources</h2>

<p>I recently <a href="http://blog.uxdriven.com/2009/09/16/de-pagify-endless-scroll-jquery-plugin/" title="De-Pagify - Endless Scroll jQuery Plugin">posted</a> a <a href="http://plugins.jquery.com/project/de-pagify" title="De-Pagify">De-Pagify jQuery Plugin</a> (<a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/demo.php" title="Demo">demo</a>) as an aid in
implementing <em>Endless Scroll</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.uxdriven.com/2009/09/17/making-a-case-for-endless-scrolling/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://blog.uxdriven.com/wp-content/uploads/2009/09/google_reader.mov" length="4053619" type="video/quicktime" />
		</item>
		<item>
		<title>De-Pagify &#8211; Endless Scroll jQuery Plugin</title>
		<link>http://blog.uxdriven.com/2009/09/16/de-pagify-endless-scroll-jquery-plugin/</link>
		<comments>http://blog.uxdriven.com/2009/09/16/de-pagify-endless-scroll-jquery-plugin/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 17:01:31 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[lab]]></category>

		<guid isPermaLink="false">http://blog.uxdriven.com/?p=91</guid>
		<description><![CDATA[De-pagify let&#8217;s you easily enable endless scroll for paged sites such as
fmylife, digg, failblog to enable functionality similar to
Bing image search.

See the article: Making a Case For Endless Scrolling.

You can find this plugin at
http://plugins.jquery.com/project/de-pagify
or view latest code &#38; documentation is available at
http://github.com/ericclemmons/de-pagify.

Demo

View Demo



Usage

Typical usage will follow the pattern:

jQuery(link).depagify(options);


Options

Where link matches the &#8220;Next Page&#8221; link and [...]]]></description>
			<content:encoded><![CDATA[<p>De-pagify let&#8217;s you easily enable <a href="http://uipatternfactory.com/p=endless-scrolling/" title="Endless Scroll">endless scroll</a> for paged sites such as
<a href="http://www.fmylife.com" title="F My Life">fmylife</a>, <a href="http://digg.com" title="Digg">digg</a>, <a href="http://failblog.org" title="Failblog">failblog</a> to enable functionality similar to
<a href="http://www.bing.com/images/search?q=jquery" title="jQuery Images">Bing image search</a>.</p>

<p>See the article: <a href="http://blog.uxdriven.com/2009/09/17/making-a-case-for-endless-scrolling/">Making a Case For Endless Scrolling</a>.</p>

<p>You can find this plugin at
<a href="http://plugins.jquery.com/project/de-pagify">http://plugins.jquery.com/project/de-pagify</a>
or view latest code &amp; documentation is available at
<a href="http://github.com/ericclemmons/de-pagify">http://github.com/ericclemmons/de-pagify</a>.</p>

<h2>Demo</h2>

<p><a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/demo.php">View Demo</a></p>

<p><span id="more-91"></span></p>

<h2>Usage</h2>

<p>Typical usage will follow the pattern:</p>

<pre><code>jQuery(link).depagify(options);
</code></pre>

<h3>Options</h3>

<p>Where <em>link</em> matches the &#8220;Next Page&#8221; link and <em>options</em> can override
any of the following:</p>

<ul>
<li><p><strong>container</strong>: (<em>defaults to <code>body</code></em>) Where content is appended and where
remote content comes from</p></li>
<li><p><strong>filter</strong>: (<em>defaults to <code>null</code></em>) Selector or function to filter remote content</p></li>
<li><p><strong>trigger</strong>: (<em>defaults to <code>0.90</code></em>) Float, integer, string or function to
determine when to load remote content.
The default is <code>0.90</code>, which is <code>90%</code>.
You can use <code>167</code>, for example, to load content when the user
scrolls within <code>167px</code> of the bottom of the page.
Also, you can specify a selector (such as <code>#footer</code>) to load
content when the <code>#footer</code> element scrolls into view.
Finally, you can write your own function that returns <code>true</code>
whenever you&#8217;d like load the next page&#8217;s content.</p></li>
<li><p><strong>request</strong>: Callback when content is being requested.  Useful for cleaning up
the page or providing UI feedback.</p></li>
<li><p><strong>success</strong>: Callback when content is appended.  Useful for cleaning up new
content or messaging the user.</p></li>
<li><p><strong>effect</strong>:  (<em>defaults to <code>$(this).show()</code></em>) Function to transition newly
loaded content.  (New content is wrapped by <code>$('&lt;div /&gt;).hide()</code>)</p></li>
</ul>

<h2>Recipes</h2>

<p>Here are a couple popular, ready-to-go bookmarklets you can inject into everyday
websites.  Keep in mind you may need to either inject jQuery with a bookmarklet
(<a href="http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet" title="jQuerify">link</a>) and the <a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/bookmarklet.jquery.js">De-pagify</a> bookmarklet.</p>

<ul>
<li><a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/recipes/digg.bookmarklet.js">Digg.com</a> (<a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/recipes/digg.js">source</a>)</li>
<li><a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/recipes/fmylife.bookmarklet.js">FMyLife.com</a> (<a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/recipes/fmylife.js">source</a>)</li>
</ul>

<h2>Examples</h2>

<p>To play around with de-pagify, you should probably get the
<a href="http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet" title="jQuerify">jQuerify Bookmarklet</a> which will inject jQuery into the page.</p>

<p>Secondly, take advantage of the <a href="http://uxdriven.com/static/js/uxdriven/jquery/de-pagify/bookmarklet.jquery.js">De-Pagify Bookmarklet</a></p>

<h3>Example 1:  FMyLife.com</h3>

<p>First &amp; foremost, we can simply enable de-pagify via:</p>

<pre><code>jQuery('.pagination:last a:last').depagify({
    container: '#wrapper',
});
</code></pre>

<p>Simply put, <code>.pagination:last a:last</code> will grab the last anchor tag in the last
<code>.pagination</code> element on the page.  All new content will be pulled from the remote
<code>#wrapper</code> element and appended to the current <code>#wrapper</code> element.</p>

<p>But let&#8217;s say we want to only load content when the footer comes into view,
and we&#8217;d like a smoother animation instead of showing results immediately:</p>

<pre><code>jQuery('.pagination:last a:last').depagify({
    trigger: '#footer',
    container: '#wrapper',
    effect: function() {
        jQuery(this).fadeIn('slow');
    }
});
</code></pre>

<p>When new content is inserted in the page, it is wrapped in a plain <code>&lt;div&gt;</code> to
simplify DOM manipulation.  This <code>&lt;div&gt;</code> is bound to <code>this</code> in the <code>effect</code>
callback.</p>

<p>So, we have a pretty nice, smooth experience now.  However, say you want to
remove the page lists (1, 2, 3, Next, Prev, etc.) and the ads to ensure a more
consistent experience:</p>

<pre><code>jQuery('.pagination:last a:last').depagify({
    trigger: '#footer',
    container: '#wrapper',
    effect: function() {
        jQuery(this).fadeIn('slow');
    },
    request: function(options) {
        jQuery('.pagination', options.container).remove();
    },
    success: function(event, options) {
        jQuery('#ad_leaderboard', options.container).remove();
    }
});
</code></pre>

<p>The code is self-explanatory.  When we send off the request, we remove the
<code>.pagination</code> element, as it is not needed anymore.  Similarly, when the new
content is inserted all ads are removed.  Both events could take place entirely
in the <code>success</code> callback, but for this example I separated the two.</p>

<h2>Conclusion</h2>

<p>If you can help in any way, please fork this project or provide feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.uxdriven.com/2009/09/16/de-pagify-endless-scroll-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Making Your Own Growl Widget With Dojo</title>
		<link>http://blog.uxdriven.com/2009/09/08/making-your-own-growl-widget-with-dojo/</link>
		<comments>http://blog.uxdriven.com/2009/09/08/making-your-own-growl-widget-with-dojo/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 19:15:14 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[tutorial]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.uxdriven.com/?p=14</guid>
		<description><![CDATA[Learn how to properly separate XHTML, CSS, and Javascript by creating
your own Growl Widget.

Demo


    
    
            // Since we're using CDN resources, we have to define any local
           [...]]]></description>
			<content:encoded><![CDATA[<p>Learn how to properly separate XHTML, CSS, and Javascript by creating
your own <a href="http://growl.info/screenshots.php">Growl</a> Widget.</p>

<h2>Demo</h2>

<div class="demo">
    <!-- Dojo Config -->
    <script type="text/javascript">
            // Since we're using CDN resources, we have to define any local
            // module paths first
            var djConfig = {
                // parseOnLoad: true,           // Look for dojo events/hooks
                // isDebug: true,               // Enable debugging
                baseUrl: "/static/js/uxdriven/dojo/",     // Base path for all modules
                modulePaths: {
                    demo: "demo"                // Path to "demo" namespace
                }
            };
    </script>

    <!-- Dojo Cross-Domain CDN (Dijits too!) -->
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js" type="text/javascript" charset="utf-8"></script>

    <!-- Include demo.ui.Error widget -->
    <link rel="stylesheet" href="/static/js/uxdriven/dojo/demo/ui/resources/Error.css" type="text/css" media="screen" charset="utf-8">
    <script type="text/javascript" charset="utf-8">
        dojo.require("demo.ui.Error");

        dojo.addOnLoad(function() {
            dojo.query('.demo form').connect('onsubmit', function(event) {
                event.preventDefault();

                new demo.ui.Error({
                    message: 'Please try your login again'
                });
            }).query('button').attr('innerHTML', 'Login')[0].removeAttribute('disabled');
        });
    </script>

    <form>
        <p>
            <em>Upon page load, this form no longer submits but displays a notification instead.</em>
        </p>

        <label>
            Username:
            <input type="text" name="username" value="uxdriven" />
        </label>

        <label>
            Password:
            <input type="password" name="password" value="password" />
        </label>

        <button type="submit" disabled="disabled">Waiting on Resources&#8230;</button>
    </form>
    
</div>

<p><span id="more-14"></span>
<a href="http://gist.github.com/183487">View Source</a></p>

<h2>Introduction</h2>

<p>Designing for code-reuse is one of the most important acquired skills
for a developer.  Unfortunately, Javascript widgets tend to contain
large amounts of embedded markup and styles.  I blame this primarily
on lackluster development &amp; deployment of client-side code, as well as
the fact that very few Javascript libraries are truly enterprise-ready
<!-- ([Javascript Frameworks in the Workplace][article]) -->.</p>

<p>In this tutorial, you&#8217;ll see some best-practices found in the <a href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js">Dojo Toolkit</a>
for name-spacing widgets and structuring resources.</p>

<h2><em>1</em> Requirements</h2>

<p>We want a growl widget that:</p>

<ul>
<li><strong>Will</strong> look good</li>
<li><strong>Will</strong> stack with other notifications</li>
<li><strong>Will</strong> disappear after a period of time</li>
<li><strong>Will</strong> close immediately of the user clicks it</li>
<li><strong>Will not</strong> disappear if the user hovers over it</li>
</ul>

<p><img src="http://blog.uxdriven.com/wp-content/uploads/2009/09/javascript_growl_screenshot.png" alt="Javascript Growl Screenshot" title="Javascript Growl Screenshot" /></p>

<h2><em>2</em> Marking it up</h2>

<p>The markup needed for the widget alone is simplistic; however, since we&#8217;re using
<a href="http://www.dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/writing-your-own-widget-class/template">dojo templating</a>, we need to add in just a little bit more code:</p>

<script src="http://gist.github.com/183202.js"></script>

<p>First, we&#8217;re tying mouse events <em>onMouseOver</em>, <em>onMouseOut</em> and <em>onClick</em> to the widget functions
<em>&#95;hoverOver</em>, <em>&#95;hoverOut</em> and <em>close</em>, respectively.</p>

<p>Second, we&#8217;re replacing our placeholder text with a template tag which will be replaced with the
variable <em>message</em> (more on this later).</p>

<h2><em>3</em> Styling the markup</h2>

<p>Since the markup is separate from the presentation, modifying the look-and-feel is a cinch.</p>

<script src="http://gist.github.com/183200.js"></script>

<h2><em>4</em> Scripting the widget</h2>

<script src="http://gist.github.com/183199.js"></script>

<h2><em>5</em> Calling the widget</h2>

<p>Include <a href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js">Dojo</a> and the script in your page:</p>

<pre><code>&lt;script src="/scripts/dojo/dojo.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;
&lt;script type="text/javascript" charset="utf-8"&gt;
    // Tell dojo where to find the "demo" namespace
    dojo.registerModulePath("demo", "/scripts/demo");

    // Require the notification script for this page
    dojo.require("demo.ui.Error");
&lt;/script&gt;
</code></pre>

<p>Now simply instantiate the class:</p>

<pre><code>new demo.ui.Error({
    message: "Howdy there!"
});
</code></pre>

<h2><em>6</em> Resources</h2>

<p>Here&#8217;s everything you need to get started:</p>

<ul>
<li><a href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js">Dojo Toolkit</a></li>
<li><a href="http://gist.github.com/183199">demo.error.ui.Error.js</a> (<a href="http://gist.github.com/183199/download">download</a>)</li>
<li><a href="http://gist.github.com/183202">demo.error.ui.templates.Error.html</a> (<a href="http://gist.github.com/183202/download">download</a>)</li>
<li><a href="http://gist.github.com/183200">demo.error.ui.resources.Error.css</a> (<a href="http://gist.github.com/183200/download">download</a>)</li>
<li><a href="http://gist.github.com/183487">Example</a> (<a href="http://gist.github.com/183487/download">download</a>)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.uxdriven.com/2009/09/08/making-your-own-growl-widget-with-dojo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Blogging with Textmate</title>
		<link>http://blog.uxdriven.com/2009/09/08/wordpress-blogging-with-textmate/</link>
		<comments>http://blog.uxdriven.com/2009/09/08/wordpress-blogging-with-textmate/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 18:33:53 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.uxdriven.com/?p=6</guid>
		<description><![CDATA[

One thing I&#8217;ve learned is that most good developers/designers strive for a streamlined,
cohesive work-flow.

Being a fan of TextMate, I feel more comfortable composing
blog posts in my native environment.

If you&#8217;re in the same boat, try out the
Blogging TextMate Bundle
which supports most major blogging platforms via XML-RPC.


I you have errors fetching blog posts then be sure to [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.uxdriven.com/wp-content/uploads/2009/09/textmate.png" alt="TextMate" /></p>

<p>One thing I&#8217;ve learned is that most good developers/designers strive for a streamlined,
cohesive work-flow.</p>

<p>Being a fan of <a href="http://macromates.com/">TextMate</a>, I feel more comfortable composing
blog posts in my native environment.</p>

<p>If you&#8217;re in the same boat, try out the
<a href="http://github.com/textmate/blogging.tmbundle/" />Blogging TextMate Bundle</a>
which supports most major blogging platforms via XML-RPC.</p>

<p><span id="more-6"></span>
I you have errors fetching blog posts then be sure to remove any posts that are marked as
<strong>Draft</strong>.  Alternatively, you can simply include <strong>Status: draft</strong> at the top of your
template in TextMate.</p>

<p><img src="http://blog.uxdriven.com/wp-content/uploads/2009/09/textmate_blogging_error.png" alt="textmate blogging error" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.uxdriven.com/2009/09/08/wordpress-blogging-with-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why WordPress?</title>
		<link>http://blog.uxdriven.com/2009/09/02/why-wordpress/</link>
		<comments>http://blog.uxdriven.com/2009/09/02/why-wordpress/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 19:56:12 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.uxdriven.com/?p=4</guid>
		<description><![CDATA[Myself and several others are comfortable with using WordPress as a blogging platform.  Via our own Zend_Service_Wordpress class, we can consume most all blog content (comments, tags, categories, posts, etc.) without being limited by the WordPress platform.
]]></description>
			<content:encoded><![CDATA[<p>Myself and several others are comfortable with using <a href="http://wordpress.com">WordPress</a> as a blogging platform.  Via our own <a href="http://github.com/ericclemmons/zend-service-wordpress">Zend_Service_Wordpress</a> class, we can consume most all blog content (comments, tags, categories, posts, etc.) without being limited by the WordPress platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.uxdriven.com/2009/09/02/why-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
