<?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>subbu.org &#187; Blog</title>
	<atom:link href="http://www.subbu.org/blog/category/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org</link>
	<description>HTTP, REST and some Cycling</description>
	<lastBuildDate>Tue, 13 Jul 2010 00:09:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Movable Type 4.0</title>
		<link>http://www.subbu.org/blog/2007/07/movable-type-40</link>
		<comments>http://www.subbu.org/blog/2007/07/movable-type-40#comments</comments>
		<pubDate>Wed, 11 Jul 2007 20:38:20 +0000</pubDate>
		<dc:creator>Subbu Allamaraju</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://wp.subbu.org/2007/07/movable-type-40/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p></p><p>After some hesitation, I have upgraded this blog to Movable Type 4.0 Beta 6 today. The upgrade process itself went smoothly without errors. I had to disable to some old Movable Type plugins (e.g. <a href="http://bradchoate.com/weblog/2002/07/11/mtsql">Brad Choate&#8217;s SQL plugin</a>) and remove relevant tags from my templates to successfully rebuild a couple of entries. This release is feature rich, but one key feature missing is a way to upgrade/transform old templates to the new style to take advantage of all the new features more easily. In the absence of this ability, I am going to have some time exploring the new default templates. There are still a few bugs, but overall, it is an impressive and major enhancement to Movable Type.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subbu.org/blog/2007/07/movable-type-40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo&#8217;s Term Extraction + Google Search API</title>
		<link>http://www.subbu.org/blog/2006/03/yahoos-term-extraction-google-search-api</link>
		<comments>http://www.subbu.org/blog/2006/03/yahoos-term-extraction-google-search-api#comments</comments>
		<pubDate>Sun, 26 Mar 2006 21:00:18 +0000</pubDate>
		<dc:creator>Subbu Allamaraju</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://wp.subbu.org/2006/03/yahoos-term-extraction-google-search-api/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p></p><p>
I just finished a major enhancement to my blog. The idea is show links<br />
from the web related to the current entry. To see how this works, just<br />
click on the &quot;Similar Entries from Google&quot; link above. This feature uses<br />
Yahoo&#8217;s<br />
<a href="http://developer.yahoo.com/search/content/V1/termExtraction.html"><br />
Term Extraction</a> service to extract keywords from my Movable Type blog<br />
entries, and feed these keywords to Google&#8217;s<br />
<a href="http://www.google.com/apis/reference.html">Search API</a> to<br />
fetch related entries. The feature is still experimental, and I need to<br />
make a few more refinements. </p>
<p><span id="more-62"></span></p>
<p>
The first step is to extract some keywords for each Movable Type blog<br />
entry. I wanted this step to be automated. Yahoo has a term extraction API<br />
available as a REST service now, and Nick<br />
Gerakines just wrote a<br />
<a href="http://blog.socklabs.com/keywordextractor/">MT-KeywordExtractor</a><br />
plugin, which automatically generates keywords as you save an entry. I had<br />
to make a few tweaks to this plugin for two reasons. Firstly, this plugin<br />
uses HTTP method GET to get keywords for the given content, and the blog<br />
entry content itself is encoded in the request URL. This does not work for<br />
large posts due to URL length restrictions. So, I modified this plugin to<br />
use HTTP POST to submit the entry content. The second issue is the<br />
keywords returned from the service. In most cases I tested, this service<br />
returned too many keywords with no apparent ranking. Since I was going to<br />
feed these keywords into Google&#8217;s search API, I just picked the first few<br />
tags returned. The results are mixed. The search results did not make<br />
sense always.</p>
<p>
The second step is to feed these keywords to<br />
the Google search API. This turned out to be a trivial step.</p>
<p><strong>Update (04/01/2006):</strong> This feature is no longer experimental. I updated the scripts to feed as many keywords as Yahoo returned to Google.</p>
<p><strong>Update (06/16/2006):</strong> After using this for almost three months, I decided to disable the MT-KeywordExtractor plugin in my blog. The terms extracted by Yahoo&#8217;s term extraction service are too vague and broad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subbu.org/blog/2006/03/yahoos-term-extraction-google-search-api/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog Usability</title>
		<link>http://www.subbu.org/blog/2006/01/blog-usability</link>
		<comments>http://www.subbu.org/blog/2006/01/blog-usability#comments</comments>
		<pubDate>Mon, 02 Jan 2006 16:00:43 +0000</pubDate>
		<dc:creator>Subbu Allamaraju</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://wp.subbu.org/2006/01/blog-usability/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p></p><p>I have been running a web site at this domain since 1999, and started blogging in 2004.<br />
Overall, I am pleased with my blogging experience, and feel that I should<br />
have started this sooner. Blogs make it easier to write often, and take<br />
care of a lot of details of publishing, such as styles/formatting,<br />
uploading files, providing links, and finally, making it easy for others<br />
to reach my blog entries. While setting up a blog is fairly easy, making<br />
it usable takes some effort. Here is my list of blog usability issues. </p>
<p><span id="more-56"></span></p>
<h3>
Default Blog Templates</h3>
<p>
I find that site templates that software like Movable Type provide are<br />
suitable only if you<br />
are running a news blog, where the date/time of the entry is more relevant<br />
than the content itself. For example, a typical Movable Type blog entry<br />
would look like</p>
<div class="note">
January 2, 2006<br/><br />
Blah Blah Blah<br/><br />
<br/><br />
Blah blah blah. Blah blah. Blah blah Blah blah Blah blah. &#8230;<br/><br />
<br/><br />
Posted by Jo Blogger at 2:30 am<br/>
</div>
<p>This format is not the best if the blog is about, let&#8217;s say, some tech<br />
topic. In fact, the default Movable Type index page template uses <code>h2</code> for the date but <code>h3</code> for the title of the entry, in effect overemphasizing the date of the<br />
entry. Most of the blogs I read are tech related, and the above format does<br />
not fit such blogs. A better style would be</p>
<div class="note">
Blah Blah Blah<br/><br />
<br/><br />
Blah blah blah. Blah blah. Blah blah Blah blah Blah blah. &#8230;<br/><br />
<br/><br />
Posted by Jo Blogger on January 2, 2006 at2:30 am<br/>
</div>
<p>This style emphasizes the title and the content. The fact that it was<br />
published on a given date is just one of the details of the entry.</p>
<p>Other stylistic issues that fall into the same category include (a)<br />
calendar of posts, and (b) date wide archives. Both are unnecessary unless<br />
the posts are trying to present a historic view of the entries. Default blog templates are partly to blame<br />
for these stylistic issues, and it is just a matter of customizing the<br />
templates to change the emphasis.</p>
<h3>
No Ability to Comment</h3>
<p> Since not all bloggers are well-known,  letting visitors post comments will help establish/increase the<br />
credibility of the blog. Whenever I come across a post that I agree with, or disagree with, or find<br />
thought-provoking, I would like to post a comment on the same blog. But a large number of blogs are not set up to take comments from visitors, and I avoid visiting such blogs. I just don&#8217;t find<br />
them credible. Such bloggers should probably run a magazine instead of a blog.</p>
<h3>
Announcements</h3>
<p>Whenever something important is advertised somewhere, I usually come across a<br />
large of number of posts all pointing to that source. For example, recent<br />
announcement by Google about the Reader API generated a lot of posts in my<br />
Google Reader account. Given that most people use some kind of blog reader<br />
software or a site like del.icio.us to keep up with blogs, I find these kind of posts quite unnecessary. IMO,<br />
they generate a lot of useless chatter. Unless a blogger wants to say something more specific,<br />
I don&#8217;t find any point in posting such posts. So, instead of posting about &quot;Google announced blah blah&quot;, it would be more useful to post about, say,  &quot;My review of Google&#8217;s blah blah&quot;.</p>
<h3>Blogrolling</h3>
<p>I can&#8217;t believe people still maintain these. With so many blogs coming up<br />
every day, it is pointless to maintain  blog rolls. Sites like del.icio.us and blog readers like Bloglines and<br />
Google Reader are much better for discovering interesting posts. </p>
<h3>
Navigating to Past Entries</h3>
<p><a href="http://www.useit.com">Jakob Nielsen</a> recently listed this among his <a href="http://www.useit.com/alertbox/weblogs.html">Weblog Usability: The Top Ten Design Mistakes</a>. Most blogs don&#8217;t allow visitors to find interesting and relevant entries. Partly, blogging<br />
software like Movable Type and Blogger are to be blamed for this. These<br />
tools don&#8217;t provide an easy way to point users to most popular entries, or<br />
entries relevant to the current entry. It is not that it is impossible to<br />
setup these on blogs, but it takes some effort. So far, my experiments with<br />
Movable Type are somewhat successful. I managed to provide links to all entries, and also relevant entries from<br />
every post on my blog. So, when you are reading this particular entry, you<br />
will find links to relevant entries I posted previously on the same page. I  would like to provide more features like<br />
this, and expect blogging software to catch up. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.subbu.org/blog/2006/01/blog-usability/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Paginated MovableType Entry Listing with Ajax</title>
		<link>http://www.subbu.org/blog/2005/10/paginated-movabletype-entry-listing-with-ajax</link>
		<comments>http://www.subbu.org/blog/2005/10/paginated-movabletype-entry-listing-with-ajax#comments</comments>
		<pubDate>Sat, 01 Oct 2005 12:45:24 +0000</pubDate>
		<dc:creator>Subbu Allamaraju</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://wp.subbu.org/2005/10/paginated-movabletype-entry-listing-with-ajax/</guid>
		<description><![CDATA[Here is a way to display a paginated list of movable type blog entries using Ajax. Take a look at the sidebar on the home page of this site. You will notice that it includes a list of entries (most recent first). After these entries there is a link to browse older entries. I reworked [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Here is a way to display a paginated list of movable type blog entries using Ajax. Take a look at the sidebar on the <a href="/">home page</a> of this site. You will notice that it includes a list of entries (most recent first). After these entries there is a link to browse older entries. I reworked my blog this morning to build a paginated view of past entries using Ajax. The link for older entries fetches older entries and updates the page. Read on for more details.</p>
<p><span id="more-43"></span></p>
<h4>Requirements</h4>
<p>Here is the list of things you need to download and install for adding this feature to any MovableType blog.</p>
<ul>
<li>PHP Support: Your blog needs to support PHP for this to work.</li>
<li><a href="http://openrico.org/rico/home.page">Rico Ajax</a>: Any Ajax library would probably do, but I relied on this library for Ajax support. Install Rico and any others scripts Rico requires on your site. </li>
<li><a href="http://www.nonplus.net/software/mt/MTPaginate.htm">MTPaginate Plugin</a>: Download and install the MTPaginate pluin. We will use this plugin below to generated paginated listing of entries.</li>
</ul>
<p>I verified these steps with MovableType 3.2. Your mileage may vary with older versions.</p>
<h4>Step 1. Fix MTPaginate.pl</h4>
<p>I noticed that some MTPaginate tags add <code>&amp;nbsp;</code>s in their output making the generated XML invalid. So, the first step is to fix this.</p>
<p>Open MTPaginate.pl, and look for the following line.</p>
<div class="code-snippet">
<pre>
my $format = decode_html($args->{format}) || "&amp;nbsp;%d&amp;nbsp;";
</pre>
</div>
<p>Remove those <code>&amp;nbsp;</code>s from this line. The changed line should look like the one below.</p>
<div class="code-snippet">
<pre>
my $format = decode_html($args->{format}) || "%d";
</pre>
</div>
<h4>Step 2: Add a New MovableType Template</h4>
<p>The next step is to add a new MovableType template in your blog. This template generates the XML response for the Ajax script.</p>
<p>Here is the content of this template.</p>
<div class="code-snippet">
<pre>
&lt;?php
header('Content-type: text/xml');
?&gt;
&lt;ajax-response&gt;
&lt;response type="element" id="entryPage"&gt;
&lt;div class="entries"&gt;
&lt;MTPaginate&gt;
&lt;ul&gt;
&lt;MTPaginateContent max_sections="10"&gt;
&lt;MTEntries&gt;
&lt;span class="entry_link"&gt;&lt;li&gt;&lt;a href="&lt;$MTEntryPermalink
valid_html="1"$&gt;"&gt;&lt;$MTEntryTitle$&gt;&lt;/a&gt;&lt;/li&gt;&lt;/span&gt;
&lt;$MTPaginateSectionBreak$&gt;
&lt;/MTEntries&gt;
&lt;/MTPaginateContent&gt;
&lt;MTPaginateIfMultiplePages&gt;
&lt;li&gt;
&lt;div class="sbPageNav"&gt;
&lt;MTPaginateIfPreviousPage_&gt;
&lt;a href="javascript:getEntryPage('&lt;$MTPaginatePreviousPage$&gt;')"
class="rnavLink"&gt;Newer&lt;/a&gt;&lt;/MTPaginateIfPreviousPage_&gt;
&lt;a href="/entries.php"&gt;All&lt;/a&gt;
&lt;MTPaginateIfNextPage_&gt;
&lt;a href="javascript:getEntryPage('&lt;$MTPaginateNextPage$&gt;')"
class="rnavLink"&gt;Older&lt;/a&gt;&lt;/MTPaginateIfNextPage_&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/MTPaginateIfMultiplePages&gt;
&lt;/ul&gt;
&lt;/MTPaginate&gt;
&lt;/div&gt;
&lt;/response&gt;
&lt;/ajax-response&gt;
</pre>
</div>
<p>For this template, enter the output file name with a .php extension, and select the check box that says &#8220;Rebuild this template automatically when rebuilding index templates&#8221;. I used sb_entries.php as the output file name. You will need to use this file name in the next step below. Then save and build the template.</p>
<p>To verify that this template is working correctly, hit the .php file directly from your browser. This should generate a valid XML page without any parse errors. If there are parse errors, fix them first before proceeding further. </p>
<h4>Step 3: Update Index Template</h4>
<p>You will need to make a number of changes for your index template to add a paginated listing of blog entries.</p>
<h5>Import the Script</h5>
<p>In the <code>&lt;head&gt;</code> section of your index template, add the following script imports.</p>
<div class="code-snippet">
<pre>
&lt;script src="prototype.js"&gt;&lt;/script&gt;
&lt;script src="rico.js"&gt;&lt;/script&gt;
&lt;script&gt;
ajaxEngine.registerRequest( 'getEntryPage', 'sb_entries.php' );
&lt;/script&gt;
&lt;script&gt;
ajaxEngine.registerAjaxElement('entryPage');
&lt;/script&gt;
&lt;script&gt;
function getEntryPage(page) {
ajaxEngine.registerAjaxElement('entryPage');
ajaxEngine.sendRequest('getEntryPage', "page=" + page);
}
&lt;/script&gt;
</pre>
</div>
<p>In this script, the second argument to the <code>registerRequest</code> function must be the name of the php template added in Step 2 above.</p>
<p>Also, update the &lt;body&gt; tag to display the first page of entries during its onload.</p>
<div class="code-snippet">
<pre>
&lt;body onload="javascript:getEntryPage('1')"&gt;
</pre>
</div>
<h5>Add a Div Tag to List Entries</h5>
<p>The last step is to add a div tag to display entry list in the sidebar of your index template.</p>
<div class="code-snippet">
<pre>
&lt;div style="display:inline" id="entryPage"&gt;
Downloading list of recent entries...
&lt;/div&gt;
</pre>
</div>
<h4>Step 4: Add Styles</h4>
<p>Add whatever styles you like for the entry list. </p>
<p>That&#8217;s it. Happy pagination.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.subbu.org/blog/2005/10/paginated-movabletype-entry-listing-with-ajax/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
