<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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: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>Comments for The Knut Hellan Blog</title>
	<atom:link href="http://knuthellan.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://knuthellan.com</link>
	<description>General geekyness and starting a company</description>
	<lastBuildDate>Sun, 20 May 2012 20:20:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on Crash course in Erlang by Knut O. Hellan</title>
		<link>http://knuthellan.com/2012/05/15/crash-course-in-erlang/#comment-94</link>
		<dc:creator><![CDATA[Knut O. Hellan]]></dc:creator>
		<pubDate>Sun, 20 May 2012 20:20:42 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=381#comment-94</guid>
		<description><![CDATA[Thanks a lot for those corrections. Looks like I was in too much of a hurry writing this down. I have corrected the errors you pointed out and fixed a couple of more that I found now as well.]]></description>
		<content:encoded><![CDATA[<p>Thanks a lot for those corrections. Looks like I was in too much of a hurry writing this down. I have corrected the errors you pointed out and fixed a couple of more that I found now as well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Crash course in Erlang by pdursuau</title>
		<link>http://knuthellan.com/2012/05/15/crash-course-in-erlang/#comment-93</link>
		<dc:creator><![CDATA[pdursuau]]></dc:creator>
		<pubDate>Sun, 20 May 2012 14:03:21 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=381#comment-93</guid>
		<description><![CDATA[Err, second paragraph:

&quot;Variables in Erlang are *mutable* so assigning a new value to an existing variable is not allowed&quot; 

Should read:

&quot;Variables in Erlang are *immutable* so assigning a new value to an existing variable is not allowed&quot;

Next paragraph: &quot;first match assigns a value to the variable.&quot; -&gt; &quot;first statement assigns a value to the variable.&quot;

A bit further on: &quot;Fibonacci is always a nice way to show things in a functional language.&quot; -&gt; &quot;Fibonacci numbers are an easy demonstration the capabilities of a functional language.&quot;

And I would put in the URL to the Wikipedia articles on Fibonacci numbers, http://en.wikipedia.org/wiki/Fibonacci_number. Most of your readers will know the sequence but some may not or may not remember it clearly. 

Sorry, had to stop here to write reviews and some blog posts. Will be mentioning your post as a resource on Erlang on my blog.]]></description>
		<content:encoded><![CDATA[<p>Err, second paragraph:</p>
<p>&#8220;Variables in Erlang are *mutable* so assigning a new value to an existing variable is not allowed&#8221; </p>
<p>Should read:</p>
<p>&#8220;Variables in Erlang are *immutable* so assigning a new value to an existing variable is not allowed&#8221;</p>
<p>Next paragraph: &#8220;first match assigns a value to the variable.&#8221; -&gt; &#8220;first statement assigns a value to the variable.&#8221;</p>
<p>A bit further on: &#8220;Fibonacci is always a nice way to show things in a functional language.&#8221; -&gt; &#8220;Fibonacci numbers are an easy demonstration the capabilities of a functional language.&#8221;</p>
<p>And I would put in the URL to the Wikipedia articles on Fibonacci numbers, <a href="http://en.wikipedia.org/wiki/Fibonacci_number" rel="nofollow">http://en.wikipedia.org/wiki/Fibonacci_number</a>. Most of your readers will know the sequence but some may not or may not remember it clearly. </p>
<p>Sorry, had to stop here to write reviews and some blog posts. Will be mentioning your post as a resource on Erlang on my blog.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Iterating over joins in Pig by knuthellan</title>
		<link>http://knuthellan.com/2012/04/20/iterating-over-joins-in-pig/#comment-84</link>
		<dc:creator><![CDATA[knuthellan]]></dc:creator>
		<pubDate>Tue, 24 Apr 2012 08:49:53 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=372#comment-84</guid>
		<description><![CDATA[Thanks for the clarification, Dmitriy. I have looked for explanations both in the Pig wiki and in Alan F Gates&#039; book &quot;Programming Pig&quot;, but found nothing. Looked at the code now and found this in LOJoin.java:

newFS = new LogicalSchema.LogicalFieldSchema(((LogicalRelationalOperator)op).getAlias()+&quot;::&quot;+fs.alias ,fs.schema, fs.type, fs.uid);

Wonder if I had spotted that if I had checked before writing the post.]]></description>
		<content:encoded><![CDATA[<p>Thanks for the clarification, Dmitriy. I have looked for explanations both in the Pig wiki and in Alan F Gates&#8217; book &#8220;Programming Pig&#8221;, but found nothing. Looked at the code now and found this in LOJoin.java:</p>
<p>newFS = new LogicalSchema.LogicalFieldSchema(((LogicalRelationalOperator)op).getAlias()+&#8221;::&#8221;+fs.alias ,fs.schema, fs.type, fs.uid);</p>
<p>Wonder if I had spotted that if I had checked before writing the post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Iterating over joins in Pig by Dmitriy Ryaboy (@squarecog)</title>
		<link>http://knuthellan.com/2012/04/20/iterating-over-joins-in-pig/#comment-83</link>
		<dc:creator><![CDATA[Dmitriy Ryaboy (@squarecog)]]></dc:creator>
		<pubDate>Sun, 22 Apr 2012 22:17:31 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=372#comment-83</guid>
		<description><![CDATA[That&#039;s not quite correct. &quot;::&quot; is not an operator at all. It&#039;s a disambiguating string Pig inserts to let you distinguish between fields that come from different sides of the join. If you say &quot;describe joined&quot;, you will see that it does not have fields called &quot;list0&quot; and &quot;list1&quot; -- internal fields of those relations get flattened out during a join.  So referencing &quot;list0&quot; is illegal -- or, due to Pig&#039;s scalar feature, might mean referencing the *relation* list0, and treating it as a scalar. Which is why it complains when it discovers list0 is not, in fact, a scalar. That&#039;s the known bug -- bad error messaging. We should warn you earlier since we can figure out what you *probably* mean when you say list0.key .

You can hit the same error without a join:

Let&#039;s say you have a relation called &quot;foo&quot; with fields &quot;some_field&quot; and &quot;some_other_field&quot;.

You want to extract all the values of some_field, so you write:

newfoo = foreach foo generate foo.some_field;

You are iterating over foo, so at every iteration, you are working on a single row from foo, which has a schema (&quot;some_field&quot;, &quot;some_other_field&quot;). Note that in this schema, there is no foo in sight. So referencing foo.some_field means you are trying to read foo while iterating over foo.. this causes the universe to collapse onto itself and the dreaded &quot;not a scalar&quot; error pops up.]]></description>
		<content:encoded><![CDATA[<p>That&#8217;s not quite correct. &#8220;::&#8221; is not an operator at all. It&#8217;s a disambiguating string Pig inserts to let you distinguish between fields that come from different sides of the join. If you say &#8220;describe joined&#8221;, you will see that it does not have fields called &#8220;list0&#8243; and &#8220;list1&#8243; &#8212; internal fields of those relations get flattened out during a join.  So referencing &#8220;list0&#8243; is illegal &#8212; or, due to Pig&#8217;s scalar feature, might mean referencing the *relation* list0, and treating it as a scalar. Which is why it complains when it discovers list0 is not, in fact, a scalar. That&#8217;s the known bug &#8212; bad error messaging. We should warn you earlier since we can figure out what you *probably* mean when you say list0.key .</p>
<p>You can hit the same error without a join:</p>
<p>Let&#8217;s say you have a relation called &#8220;foo&#8221; with fields &#8220;some_field&#8221; and &#8220;some_other_field&#8221;.</p>
<p>You want to extract all the values of some_field, so you write:</p>
<p>newfoo = foreach foo generate foo.some_field;</p>
<p>You are iterating over foo, so at every iteration, you are working on a single row from foo, which has a schema (&#8220;some_field&#8221;, &#8220;some_other_field&#8221;). Note that in this schema, there is no foo in sight. So referencing foo.some_field means you are trying to read foo while iterating over foo.. this causes the universe to collapse onto itself and the dreaded &#8220;not a scalar&#8221; error pops up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A functional approach to Ruby by Marco Nogueira (@marcofognog)</title>
		<link>http://knuthellan.com/2010/06/22/a-functional-approach-to-ruby/#comment-82</link>
		<dc:creator><![CDATA[Marco Nogueira (@marcofognog)]]></dc:creator>
		<pubDate>Tue, 17 Apr 2012 16:43:31 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=276#comment-82</guid>
		<description><![CDATA[Great thoughts. It&#039;s been quite a while I&#039;m feeling that the classic OOP aproach ended up weird in Ruby. I mean, every tutorial  that introduces Ruby starts with those OOP features of the language, when, instead,  you can be much more concise with a more functional aproach. To me, the last statement of the post sums up that all pretty well.]]></description>
		<content:encoded><![CDATA[<p>Great thoughts. It&#8217;s been quite a while I&#8217;m feeling that the classic OOP aproach ended up weird in Ruby. I mean, every tutorial  that introduces Ruby starts with those OOP features of the language, when, instead,  you can be much more concise with a more functional aproach. To me, the last statement of the post sums up that all pretty well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The CouchDB indexer &#8211; lightweight search engine in hours by knuthellan</title>
		<link>http://knuthellan.com/2009/07/09/the-couchdb-indexer-lightweight-search-engine-in-hours/#comment-61</link>
		<dc:creator><![CDATA[knuthellan]]></dc:creator>
		<pubDate>Sat, 05 Mar 2011 00:14:53 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=185#comment-61</guid>
		<description><![CDATA[In writing that Quora post, I revisited this blog post and realized that it is indeed outdated. My presentation at JavaZone 2010, http://bit.ly/cO1AE5, shows how to do this with just a summing reducer and I admit I should probably write a new blog post about that.]]></description>
		<content:encoded><![CDATA[<p>In writing that Quora post, I revisited this blog post and realized that it is indeed outdated. My presentation at JavaZone 2010, <a href="http://bit.ly/cO1AE5" rel="nofollow">http://bit.ly/cO1AE5</a>, shows how to do this with just a summing reducer and I admit I should probably write a new blog post about that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The CouchDB indexer &#8211; lightweight search engine in hours by knuthellan</title>
		<link>http://knuthellan.com/2009/07/09/the-couchdb-indexer-lightweight-search-engine-in-hours/#comment-60</link>
		<dc:creator><![CDATA[knuthellan]]></dc:creator>
		<pubDate>Sat, 05 Mar 2011 00:14:53 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=185#comment-60</guid>
		<description><![CDATA[In writing that Quora post, I revisited this blog post and realized that it is indeed outdated. My presentation at JavaZone 2010, http://bit.ly/cO1AE5, shows how to do this with just a summing reducer and I admit I should probably write a new blog post about that.]]></description>
		<content:encoded><![CDATA[<p>In writing that Quora post, I revisited this blog post and realized that it is indeed outdated. My presentation at JavaZone 2010, <a href="http://bit.ly/cO1AE5" rel="nofollow">http://bit.ly/cO1AE5</a>, shows how to do this with just a summing reducer and I admit I should probably write a new blog post about that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The CouchDB indexer &#8211; lightweight search engine in hours by Quora</title>
		<link>http://knuthellan.com/2009/07/09/the-couchdb-indexer-lightweight-search-engine-in-hours/#comment-59</link>
		<dc:creator><![CDATA[Quora]]></dc:creator>
		<pubDate>Sat, 05 Mar 2011 00:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.com/?p=185#comment-59</guid>
		<description><![CDATA[&lt;strong&gt;Is real-time search fundamentally different from various search services Google already provides?...&lt;/strong&gt;

The short answer is no. Search consists of data collection, creation of an index and ranking. Traditional data collection is done by crawlers following links. Obviously that&#039;s not optimal for real-time search unless you treat oft-changing sites differ...]]></description>
		<content:encoded><![CDATA[<p><strong>Is real-time search fundamentally different from various search services Google already provides?&#8230;</strong></p>
<p>The short answer is no. Search consists of data collection, creation of an index and ranking. Traditional data collection is done by crawlers following links. Obviously that&#8217;s not optimal for real-time search unless you treat oft-changing sites differ&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on OAuth and the 4 hour work day by knuthellan</title>
		<link>http://knuthellan.com/2009/06/05/oauth-and-the-4-hour-work-day/#comment-58</link>
		<dc:creator><![CDATA[knuthellan]]></dc:creator>
		<pubDate>Fri, 04 Mar 2011 19:11:40 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.wordpress.com/?p=92#comment-58</guid>
		<description><![CDATA[The OAuth system included a login page implemented in haml and based on the haml template for the rest of the site. I stored all persistent data including request, access tokens and remote service credentials in CouchDB.

I did not add the user page to revoke access at the same time, but the basic support for that was included. Adding it meant another haml view and some basic sinatra post handling. This addition was probably a couple of days work.

Sticky sessions in the load balancer will avoid problems related to request tokens not being synchronized between database replicas in time.]]></description>
		<content:encoded><![CDATA[<p>The OAuth system included a login page implemented in haml and based on the haml template for the rest of the site. I stored all persistent data including request, access tokens and remote service credentials in CouchDB.</p>
<p>I did not add the user page to revoke access at the same time, but the basic support for that was included. Adding it meant another haml view and some basic sinatra post handling. This addition was probably a couple of days work.</p>
<p>Sticky sessions in the load balancer will avoid problems related to request tokens not being synchronized between database replicas in time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on OAuth and the 4 hour work day by Raj</title>
		<link>http://knuthellan.com/2009/06/05/oauth-and-the-4-hour-work-day/#comment-57</link>
		<dc:creator><![CDATA[Raj]]></dc:creator>
		<pubDate>Thu, 03 Mar 2011 15:32:58 +0000</pubDate>
		<guid isPermaLink="false">http://knuthellan.wordpress.com/?p=92#comment-57</guid>
		<description><![CDATA[Thanks for quick turnaround. Also wanted to ensure, it had
1) user&#039;s authorization via Login page.
2) did you store all the request/access tokens in db
3)Did it include a website for users to revoke access to apps when needed?]]></description>
		<content:encoded><![CDATA[<p>Thanks for quick turnaround. Also wanted to ensure, it had<br />
1) user&#8217;s authorization via Login page.<br />
2) did you store all the request/access tokens in db<br />
3)Did it include a website for users to revoke access to apps when needed?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

