<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>(λ x. x x) (λ x. x x)</title>
	<atom:link href="http://vijaymathew.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://vijaymathew.wordpress.com</link>
	<description>A programmer&#039;s blog.</description>
	<lastBuildDate>Wed, 02 Sep 2009 09:01:52 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='vijaymathew.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/032e2e23540da7b6851a069b7b42b04f?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>(λ x. x x) (λ x. x x)</title>
		<link>http://vijaymathew.wordpress.com</link>
	</image>
			<item>
		<title>No more blogging</title>
		<link>http://vijaymathew.wordpress.com/2009/09/02/no-more-blogging/</link>
		<comments>http://vijaymathew.wordpress.com/2009/09/02/no-more-blogging/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 09:01:52 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=497</guid>
		<description><![CDATA[I have stopped blogging. I will continue to write, at a different place &#8211; http://vmathew.in. I just felt that the kind of stuff I write does not fit for a blog, that&#8217;s it.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=497&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I have stopped blogging. I will continue to write, at a different place &#8211; <a href="http://vmathew.in">http://vmathew.in</a>. I just felt that the kind of stuff I write does not fit for a blog, that&#8217;s it.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/497/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=497&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/09/02/no-more-blogging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>SQLite: A Lesson In Low-Defect Software</title>
		<link>http://vijaymathew.wordpress.com/2009/08/26/sqlite-a-lesson-in-low-defect-software/</link>
		<comments>http://vijaymathew.wordpress.com/2009/08/26/sqlite-a-lesson-in-low-defect-software/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 06:57:11 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=495</guid>
		<description><![CDATA[http://aleccolocco.blogspot.com/2009/08/sqlite-lesson-in-low-defect-software.html
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=495&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://aleccolocco.blogspot.com/2009/08/sqlite-lesson-in-low-defect-software.html">http://aleccolocco.blogspot.com/2009/08/sqlite-lesson-in-low-defect-software.html</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/495/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=495&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/08/26/sqlite-a-lesson-in-low-defect-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>Fermion &#8211; The Scheme Web Server</title>
		<link>http://vijaymathew.wordpress.com/2009/08/19/fermion-the-scheme-web-server/</link>
		<comments>http://vijaymathew.wordpress.com/2009/08/19/fermion-the-scheme-web-server/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 16:15:42 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Spark]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=469</guid>
		<description><![CDATA[Fermion is a fast and secure web server written in Scheme. It is optimized to serve dynamic content generated by Scheme scripts. It is part of the larger Spark-Scheme project. It uses light-weight green threads to handle client requests and can efficiently serve thousands of simultaneous connections.
The following code starts an instance of Fermion:


;; file: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=469&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Fermion is a fast and secure web server written in Scheme. It is optimized to serve dynamic content generated by Scheme scripts. It is part of the larger <a href="http://spark-scheme.wikispot.org">Spark-Scheme</a> project. It uses light-weight green threads to handle client requests and can efficiently serve thousands of simultaneous connections.</p>
<p>The following code starts an instance of Fermion:</p>
<pre class="brush: python;">

;; file: my-http.ss

(import (net)
        (http))    
(web-server-start (web-server))
</pre>
<p>Create a HTML file called <em>index.html</em> and place it along with <em>my-http.ss</em>. This will be the default page served by our http server.</p>
<p>Start the web server with the command `spark my-http.ss&#8217;. Now you can access <em>index.html</em> with the URL: http://localhost.</p>
<p>The forte of Fermion is not in serving static files, but in generating content dynamically based on user input or some other volatile parameter. Let us write a simple web application that will greet the user based on the time of the day.</p>
<pre class="brush: python;">

;; file: greet.ss

(import (aura))

(define (greet new-uri state)
 (((sgml 

 `(html
   (body
    (b ,(greeting-by-hour)))))

 'text)))

(define (greeting-by-hour)
 (let ((hour (date-hour (seconds-&gt;date (current-seconds)))))
    (cond ((&lt;= hour 12) &quot;Good morning!&quot;)
          ((&lt;= hour 17) &quot;Good afternoon!&quot;)
          (else &quot;Good evening&quot;))))

(list greet)
</pre>
<p>The procedure <em>greet</em> will be executed by the web server, by passing it two arguments. <em>new-uri</em> will be a dynamically generated URI to which any further requests, like a form POST, should be send. <em>state</em> is a hash table that contains the current state of the session. For instance, it will contain values posted by previous requests. The web application exports a list of procedures that will be executed by Fermion, in the given order. Thus the programmer can design a web application as a sequence of operations, much like a normal console program. The <em>greet</em> sample also makes use of a library called <em>aura</em> which can be used to write SGML documents in Scheme syntax.</p>
<p>Fermion is a <em>secure </em>web server. It is possible to impose some control over HTTP requests by using configuration options. An example is given below:</p>
<pre class="brush: python;">

(define httpd (web-server
                (list 'port 8080 ;; Web server will listen on port 8080.
                      'session-timeout (* 2 60) ;; 2 minutes
                      'max-header-length (* 112 1024) ;; Size of request header
                                                      ;; limited to 112kb.
                      'max-body-length (* 512 1024) ;; Size of request body limited to
                                                    ;; 512kb.
                      'max-response-size (* 512 1024)))) ;; Size of response limited to
                                                         ;; 512kb.
</pre>
<p>Fermion provide hooks where new procedures can be plugged-in to implement advanced security and compliance features. For instance, the following sample shows how to hook a procedure to check the length of the request URI. If the URI contain more than 512 characters, the request will be blocked.</p>
<pre class="brush: python;">

(import (net)
        (http-request-parser)
        (http))

(define httpd (web-server))

;; The security hook procedure.
(define (check-uri-length httpd
                          client-connection
                          http-request)
 (cond ((&gt; (string-length (http-request-uri http-request)) 512)
        (printf &quot;Request URI too long. Closing connection.~n&quot;)
        (flush-output)
        (socket-close (connection-socket client-connection))
        #f)
       (else ;; Let the web server's request handler do its job.    
        #t)))

(web-server-hook! httpd 'before-handle-request check-uri-length)
(web-server-start httpd)
</pre>
<p>User defined policies can be applied on the response by using the <em>&#8216;before-send-response</em> hook.</p>
<p>I hope that Scheme hackers will find Fermion useful in their real-world web development tasks.</p>
<p><strong>Links:<br />
<span style="font-weight:normal;"><a href="http://spark-scheme.wikispot.org/Web_applications">Fermion documentation</a>.</span></strong></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/469/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=469&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/08/19/fermion-the-scheme-web-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>John Backus Turing Award lecture</title>
		<link>http://vijaymathew.wordpress.com/2009/08/17/this-renewed-interest-in-functional-programming/</link>
		<comments>http://vijaymathew.wordpress.com/2009/08/17/this-renewed-interest-in-functional-programming/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 12:58:05 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=466</guid>
		<description><![CDATA[Read the Turing Award (1977) lecture by John Backus. This talk renewed the interest in pure functional programming. A must read &#8230;
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=466&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.stanford.edu/class/cs242/readings/backus.pdf">Read</a> the Turing Award (1977) lecture by<a href="http://en.wikipedia.org/wiki/John_Backus"> John Backus</a>. This talk renewed the interest in pure functional programming. A must read &#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/466/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=466&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/08/17/this-renewed-interest-in-functional-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>Spark moves to GitHub</title>
		<link>http://vijaymathew.wordpress.com/2009/08/12/spark-moves-to-github/</link>
		<comments>http://vijaymathew.wordpress.com/2009/08/12/spark-moves-to-github/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 07:33:55 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Spark]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=450</guid>
		<description><![CDATA[Spark-Scheme has moved to GitHub. The new repository is located here. So far, my experience with GitHub can be described as &#8220;delightful&#8221;. Git is fast. Managing and merging forks are easy. GitHub provides a nice interface to all the good facilities offered by git.
BTW, Amit Saha has volunteered to help me with the project. Welcome, and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=450&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Spark-Scheme has moved to GitHub. The new repository is located <a href="http://github.com/vijaymathew/spark-scheme/tree/master">here</a>. So far, my experience with GitHub can be described as &#8220;delightful&#8221;. Git is fast. Managing and merging forks are easy. GitHub provides a nice interface to all the good facilities offered by git.</p>
<p>BTW, <a href="http://amitksaha.wordpress.com/about/">Amit Saha</a> has volunteered to help me with the project. Welcome, and enjoy the ride Amit!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/450/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=450&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/08/12/spark-moves-to-github/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>Arduino</title>
		<link>http://vijaymathew.wordpress.com/2009/08/06/arduino/</link>
		<comments>http://vijaymathew.wordpress.com/2009/08/06/arduino/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 04:43:08 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=445</guid>
		<description><![CDATA[Those who are interetsed in electronics and microcontroller programming, check this out&#8230;
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=445&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Those who are interetsed in electronics and microcontroller programming, check <a href="http://www.arduino.cc/">this</a> out&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/445/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/445/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/445/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/445/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/445/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/445/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/445/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/445/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/445/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/445/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=445&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/08/06/arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>Good Assembly Language tutorial</title>
		<link>http://vijaymathew.wordpress.com/2009/07/24/good-assembly-language-tutorial/</link>
		<comments>http://vijaymathew.wordpress.com/2009/07/24/good-assembly-language-tutorial/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 07:21:05 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=442</guid>
		<description><![CDATA[http://www.drpaulcarter.com/pcasm/
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=442&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.drpaulcarter.com/pcasm/">http://www.drpaulcarter.com/pcasm/</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/442/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=442&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/07/24/good-assembly-language-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>Yaaec (Yet another attempt to explain continuations)!</title>
		<link>http://vijaymathew.wordpress.com/2009/07/22/yaaec-yet-another-attempt-to-explain-continuations/</link>
		<comments>http://vijaymathew.wordpress.com/2009/07/22/yaaec-yet-another-attempt-to-explain-continuations/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 16:48:45 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Spark]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=425</guid>
		<description><![CDATA[It seems blogs related to Scheme or Ruby contains at least one attempt to demystify continuations. Here is mine.
It is assumed that the reader is familiar with basic concepts like expressions and their evaluation, closures etc.
A continuation is a point in an expression being evaluated, frozen in time. Consider the following code:

&#60;/div&#62;
&#60;div id=&#34;_mcePaste&#34; style=&#34;position: absolute; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=425&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">It seems blogs related to Scheme or Ruby contains at least one attempt to demystify continuations. Here is mine.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">It is assumed that the reader is familiar with basic concepts like expressions and their evaluation, closures etc.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">A continuation is a point in an expression being evaluated, frozen in time. Consider the following code:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">
<pre class="brush: python;">&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;&lt;span style=&quot;font-family: Georgia; line-height: 19px; white-space: normal; font-size: 13px; &quot;&gt;(+ 2 3) ;; =&gt; 5&lt;span style=&quot;font-family: Consolas; line-height: 18px; font-size: 12px; white-space: pre; &quot;&gt;</pre>
</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">This expression can be split into three points: +, 2 and 3. We can freeze the program at any of these points and store it away. This is accomplished with the procedure call-with-current-continuation or call/cc. The name itself gives a hint as to what it does. call/cc takes a procedure as argument and evaluates it. The evaluated procedure is passed a closure which contains the expression upto where call/cc was called. Let us see call/cc in action by freezing the point where the value 3 is supplied:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">
<pre class="brush: python;">&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;(define frozen #f)&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;(+ 2 (call/cc (lambda (k) (set! frozen k) 3))) ;; =&gt; 5&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;
&lt;pre style=&quot;font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;&quot;&gt;</pre>
</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">The current continuation is wrapped into the procedure object &#8221;k&#8221;. We store this in the global variable &#8221;frozen&#8221; and return the value 3 as required by the original expression. So, when it is evaluated the first time, the result will be 5.  An easy way to understand continuations is to look at the expression as consisting of the procedure &#8216;+&#8217; and two holes:</p>
<pre class="brush: python;">  (+ [] [])  </pre>
<p>The first hole is filled by the value 2:</p>
<pre class="brush: python;">  (+ 2 [])  </pre>
<p>The second hole is filled by whatever &#8221;call/cc&#8221; evaluates to (in this case 3):</p>
<pre class="brush: python;">  (+ 2 3) ;; =&gt; 5  </pre>
<p>The expression with the hole is stored in the continuation object. Anytime in the future, we can reuse this object like this:</p>
<pre class="brush: python;">  (frozen 10) ;; =&gt; 12  </pre>
<p>What really happened when we evaluated &#8221;frozen&#8221;? The expression (+ 2 []) was resurrected and the hole was filled by the value returned by &#8221;frozen&#8221;. Thus the expression becomes (+ 2 10) and gets evaluated to 12.  If you are a C programmer, continuations could be understood in the context of the &#8216;&#8217;setjmp&#8221; and &#8221;longjmp&#8221; functions. While C allows you to jump back up the stack, &#8221;call/cc&#8221; allows moving in any direction. This is achieved by saving the entire stack at the point where &#8221;call/cc&#8221; was called. In our example, &#8221;frozen&#8221; is actually a closure that stores the stack up to the point where &#8221;call/cc&#8221; was evaluated.  One common use of continuations is in emulating keywords that provide &#8216;escape&#8217; from a context. In the C family of languages these keywords are &#8221;return&#8221;, &#8221;break&#8221; and &#8221;continue&#8221;. Let us see how we can emulate one of them &#8211; the &#8221;return&#8221; keyword:</p>
<pre class="brush: python;">  ;; This procedure searches a list for a value. ;; If the value is found, the procedure exits by ;; ''returning'' that value.  (define (find-element list-to-search is?)   (call/cc    (lambda (return)      (for element in list-to-search &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (if (is? element) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (return element)))      #f)))  ;; Test  (define (is-1900? e)   (= e 1900))  (find-element (list 1890 2009 1900 2001) is-1900?) ;; =&gt; 1900 (find-element (list 1890 2009 1901 2001) is-1900?) ;; =&gt; #f  </pre>
<p>The definition of &#8221;find-element&#8221; can be visualized as:</p>
<pre class="brush: python;">  (define (find-element list-to-search is?) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;[])  </pre>
<p>When the searched element is found, it is passed as the argument of &#8221;return&#8221;, which actually represents the point where the evaluation of the body of &#8221;find-element&#8221; starts. Each time &#8221;find-element&#8221; is evaluated, the hole is filled with either #f or the argument passed to the inner call to &#8221;return&#8221;. This creates an illusion that &#8221;find-element&#8221; actually &#8221;returns&#8221; a value, while in effect the entire body of &#8221;find-element&#8221; (the hole) is getting replaced (or filled) by the value to which the continuation procedure evaluates.  There is a built-in form that makes it easy to create escape continuations called &#8221;let/ec&#8221;. Here is the &#8221;find-element&#8221; procedure re-written using &#8221;let/ec&#8221;:</p>
<pre class="brush: python;">  (define (find-element list-to-search is?)   (let/ec return &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (for element in list-to-search &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (if (is? element) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (return element))) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; #f))  </pre>
<p>We can also use &#8221;let/ec&#8221; to emulate the &#8221;break&#8221; keyword, which can be used to terminate a loop prematurely:</p>
<pre class="brush: python;">  (define i 0)  ;; This loop prints up to 5 ;; and breaks. (let/ec break &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;(while (&lt; i 10) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (printf &quot;~a~n&quot; i) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (if (= i 5) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (break #f)) &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; (set! i (add1 i))))  </pre>
<p>Continuations find use in implementing features like exception handling, green threads, co-routines etc. Most of these are already taken care of by abstractions built into Spark, so the programmer is saved from directly dealing with continuations. But understanding how continuations work is important because it can be used to provide intuitive solutions to certain kind of problems.  Some links that provide more information on continuations:  1. [http://community.schemewiki.org/?call-with-current-continuation] 2. [http://en.wikipedia.org/wiki/Continuation] 3. [http://www.ps.uni-sb.de/~duchier/python/continuations.html] (Uses Python) 4. [http://www.ibm.com/developerworks/library/j-contin.html] (Uses Java)</p></div>
<p>Here is my short, simple explanation of continuations. The code examples are in Scheme.</p>
<p>It is assumed that the reader is familiar with basic concepts like expressions and their evaluation, closures etc.</p>
<p>A continuation is a point in an expression being evaluated, frozen in time. Consider the following code:</p>
<pre class="brush: python;">

(+ 2 3) ;; =&gt; 5
</pre>
<p>This expression can be split into three points: +, 2 and 3. We can freeze the program at any of these points and store it away. This is accomplished with the procedure call-with-current-continuation or call/cc. The name itself gives a hint as to what it does. call/cc takes a procedure as argument and evaluates it. The evaluated procedure is passed a closure which contains the expression up to where call/cc was called. Let us see call/cc in action by freezing the point where the value 3 is supplied:</p>
<pre class="brush: python;">

(define frozen #f)

(+ 2 (call/cc (lambda (k) (set! frozen k) 3))) ;; =&gt; 5
</pre>
<p>The current continuation is wrapped into the procedure object <em>k</em>. We store this in the global variable <em>frozen </em>and return the value 3 as required by the original expression. So, when it is evaluated the first time, the result will be 5.</p>
<p>An easy way to understand continuations is to look at the expression as consisting of the procedure &#8216;+&#8217; and two holes:</p>
<pre class="brush: python;">  (+ [] [])  </pre>
<p>The first hole is filled by the value 2:</p>
<pre class="brush: python;">  (+ 2 [])  </pre>
<p>The second hole is filled by whatever <em>call/cc</em> evaluates to (in this case 3):</p>
<pre class="brush: python;">  (+ 2 3) ;; =&gt; 5  </pre>
<p>The expression with the hole is stored in the continuation object. Anytime in the future, we can reuse this object like this:</p>
<pre class="brush: python;">  (frozen 10) ;; =&gt; 12  </pre>
<p>What happened when the above expression was evaluated? The expression (+ 2 []) was resurrected and the hole was filled by the value returned by <em>frozen</em>. Thus the expression becomes (+ 2 10) and gets evaluated to 12.</p>
<p>If you are a C programmer, continuations could be understood in the context of the <em>setjmp </em>and <em>longjmp</em> functions. While C allows you to jump back up the stack, <em>call/cc</em> allows moving in any direction. This is achieved by saving the entire stack at the point where <em>call/cc</em> was called. In our example, <em>frozen </em>is actually a closure that stores the stack up to the point where <em>call/cc</em> was evaluated.</p>
<p>One common use of continuations is in emulating keywords that provide &#8216;escape&#8217; from a context. In the C family of languages these keywords are <em>return</em>, <em>break </em>and <em>continue</em>. Let us see how we can emulate one of them &#8211; the <em>return</em> keyword:</p>
<pre class="brush: python;">  
(define (find-element list-to-search is?)
  (call/cc
   (lambda (return)
     (for element in list-to-search
	  (if (is? element)
	      (return element)))
     #f)))

;; Test

(define (is-1900? e)
  (= e 1900))

(find-element (list 1890 2009 1900 2001) is-1900?) ;; =&gt; 1900
(find-element (list 1890 2009 1901 2001) is-1900?) ;; =&gt; #f
</pre>
<p>The definition of<em> find-element</em> can be visualized as:</p>
<pre class="brush: python;">  
(define (find-element list-to-search is?)
      [])  </pre>
<p>When the searched element is found, it is passed as the argument of <em>return</em>, which actually represents the point where the evaluation of the body of<em> find-element</em> starts. Each time <em>find-element</em> is evaluated, the hole is filled with either #f or the argument passed to the inner call to <em>return</em>. This creates an illusion that <em>find-element </em>actually returns a value, while in effect the entire body of <em>find-element</em> (the hole) is getting replaced (or filled) by the value to which the continuation procedure evaluates.  There is a built-in form that makes it easy to create escape continuations called <em>let/ec</em>. Here is the <em>find-element</em> procedure re-written using<em> let/ec</em>:</p>
<pre class="brush: python;"> 
(define (find-element list-to-search is?)
  (let/ec return
	  (for element in list-to-search
	       (if (is? element)
		   (return element)))
	  #f))
 </pre>
<p>We can also use <em>let/ec</em> to emulate the <em>break </em>keyword, which can be used to terminate a loop prematurely:</p>
<pre class="brush: python;">
;; This loop prints up to 5
;; and breaks.
;; Note: while is a special form in Spark-Scheme.
(define i 0)
(let/ec break
 	(while (&lt; i 10)
 	       (printf &quot;~a~n&quot; i)
 	       (if (= i 5)
 		   (break #f))
	       (set! i (add1 i))))
</pre>
<p>Continuations find use in implementing features like exception handling, green threads, co-routines etc. Most of these are already taken care of by abstractions built into Spark, so the programmer is saved from directly dealing with continuations. But understanding how continuations work is important because it can be used to provide intuitive solutions to certain kind of problems.</p>
<p>Links and references:</p>
<ol>
<li><a href="http://community.schemewiki.org/?call-with-current-continuation">http://community.schemewiki.org/?call-with-current-continuation</a></li>
<li><a href="http://en.wikipedia.org/wiki/Continuation">http://en.wikipedia.org/wiki/Continuation</a></li>
<li><a href="http://www.ps.uni-sb.de/~duchier/python/continuations.html">http://www.ps.uni-sb.de/~duchier/python/continuations.html</a> (Examples in Python)</li>
<li><a href="http://www.ibm.com/developerworks/library/j-contin.html">http://www.ibm.com/developerworks/library/j-contin.html</a> (Examples in Java)</li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/425/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=425&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/07/22/yaaec-yet-another-attempt-to-explain-continuations/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>On NASA Software Quality Assurance</title>
		<link>http://vijaymathew.wordpress.com/2009/07/18/nasa-software-development-processes/</link>
		<comments>http://vijaymathew.wordpress.com/2009/07/18/nasa-software-development-processes/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 12:27:55 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/?p=422</guid>
		<description><![CDATA[http://sw-assurance.gsfc.nasa.gov/disciplines/quality/index.php
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=422&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://sw-assurance.gsfc.nasa.gov/disciplines/quality/index.php">http://sw-assurance.gsfc.nasa.gov/disciplines/quality/index.php</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/422/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=422&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/07/18/nasa-software-development-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
		<item>
		<title>Why GPL should be the preferred free software license?</title>
		<link>http://vijaymathew.wordpress.com/2009/07/14/why-gpl-should-be-the-preferred-free-software-license/</link>
		<comments>http://vijaymathew.wordpress.com/2009/07/14/why-gpl-should-be-the-preferred-free-software-license/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 05:50:30 +0000</pubDate>
		<dc:creator>vijaymathew</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://vijaymathew.wordpress.com/2009/07/14/why-gpl-should-be-the-preferred-free-software-license/</guid>
		<description><![CDATA[This article by Zed Shaw states a few valid reasons: http://zedshaw.com/blog/2009-07-13.html
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=419&subd=vijaymathew&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This article by Zed Shaw states a few valid reasons: <a href="http://zedshaw.com/blog/2009-07-13.html">http://zedshaw.com/blog/2009-07-13.html</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vijaymathew.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vijaymathew.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vijaymathew.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vijaymathew.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vijaymathew.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vijaymathew.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vijaymathew.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vijaymathew.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vijaymathew.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vijaymathew.wordpress.com/419/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vijaymathew.wordpress.com&blog=3197157&post=419&subd=vijaymathew&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://vijaymathew.wordpress.com/2009/07/14/why-gpl-should-be-the-preferred-free-software-license/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cb05e6bb685ad593fb55cf0bc0edab50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijaymathew</media:title>
		</media:content>
	</item>
	</channel>
</rss>