<?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"
	>
<channel>
	<title>Comments on: A CouchDB primer for an ActiveRecord mindset</title>
	<atom:link href="http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/feed/" rel="self" type="application/rss+xml" />
	<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/</link>
	<description></description>
	<pubDate>Fri, 09 Jan 2009 13:37:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
		<item>
		<title>By: CouchDb docs, tutorials, link, blogs &#171; Aler Diary</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-44064</link>
		<dc:creator>CouchDb docs, tutorials, link, blogs &#171; Aler Diary</dc:creator>
		<pubDate>Wed, 07 Jan 2009 21:58:58 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-44064</guid>
		<description>[...] CouchDb for an ActiveRecord mindset [...]</description>
		<content:encoded><![CDATA[<p>[...] CouchDb for an ActiveRecord mindset [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charlie</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-43895</link>
		<dc:creator>Charlie</dc:creator>
		<pubDate>Mon, 05 Jan 2009 12:28:19 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-43895</guid>
		<description>I know that by default CouchDB uses javascript for its map and reduce functions that generate its views, but that this is implemented as a separate module and is therefore entirely replaceable by any other language.

It seems to me that if one wants to define these functions within a project to keep them version controlled and bundled together with the rest of the application (seems reasonable), one might as well directly write the functions directly rather than, say writing a ruby thingy that generates the javascript view functions.

Better to use the full power of CouchDB's MapReduce implementation (which, as an aside, and as has been noted elsewhere, might better be named "MapCombine" to distinguish it from the flavor described in the MapReduce whitepaper, the difference being that CouchDB requires Reduce functions to be commutative and associative so they can be sliced, diced, memoized and combined) and write your map and reduce functions directly.

Either javascript or ruby would be reasonable choices for a rails or merb project, it seems to be. Either way, I wouldn't bother to translate it since CouchDB can use pretty much any language natively for this task.</description>
		<content:encoded><![CDATA[<p>I know that by default CouchDB uses javascript for its map and reduce functions that generate its views, but that this is implemented as a separate module and is therefore entirely replaceable by any other language.</p>
<p>It seems to me that if one wants to define these functions within a project to keep them version controlled and bundled together with the rest of the application (seems reasonable), one might as well directly write the functions directly rather than, say writing a ruby thingy that generates the javascript view functions.</p>
<p>Better to use the full power of CouchDB&#8217;s MapReduce implementation (which, as an aside, and as has been noted elsewhere, might better be named &#8220;MapCombine&#8221; to distinguish it from the flavor described in the MapReduce whitepaper, the difference being that CouchDB requires Reduce functions to be commutative and associative so they can be sliced, diced, memoized and combined) and write your map and reduce functions directly.</p>
<p>Either javascript or ruby would be reasonable choices for a rails or merb project, it seems to be. Either way, I wouldn&#8217;t bother to translate it since CouchDB can use pretty much any language natively for this task.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Markus</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-41070</link>
		<dc:creator>Markus</dc:creator>
		<pubDate>Tue, 11 Nov 2008 22:18:11 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-41070</guid>
		<description>Vodka bottles would be nice too! It looks nice :)</description>
		<content:encoded><![CDATA[<p>Vodka bottles would be nice too! It looks nice <img src='http://upstream-berlin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Couch Potato unleashed - a couchdb persistence layer in ruby &#124; upstream agile - software</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-40073</link>
		<dc:creator>Couch Potato unleashed - a couchdb persistence layer in ruby &#124; upstream agile - software</dc:creator>
		<pubDate>Mon, 27 Oct 2008 09:52:01 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-40073</guid>
		<description>[...] Potato on github now. For an introduction to CouchDB and ruby please read my previous blog post A CouchDB primer for an ActiveRecord mindset. The following is a very short introduction into using Couch Potato. If you want to know more you [...]</description>
		<content:encoded><![CDATA[<p>[...] Potato on github now. For an introduction to CouchDB and ruby please read my previous blog post A CouchDB primer for an ActiveRecord mindset. The following is a very short introduction into using Couch Potato. If you want to know more you [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: เร็วส์ หกสิบหก » นั่งเทียนเขียนข่าว#12</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-37385</link>
		<dc:creator>เร็วส์ หกสิบหก » นั่งเทียนเขียนข่าว#12</dc:creator>
		<pubDate>Thu, 02 Oct 2008 21:21:01 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-37385</guid>
		<description>[...] A CouchDB primer for an ActiveRecord mindset &#124; upstream agile - software [...]</description>
		<content:encoded><![CDATA[<p>[...] A CouchDB primer for an ActiveRecord mindset | upstream agile - software [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexander Lang</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-36947</link>
		<dc:creator>Alexander Lang</dc:creator>
		<pubDate>Fri, 26 Sep 2008 08:21:50 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-36947</guid>
		<description>@vity that'll be a 2.0 feature ;)</description>
		<content:encoded><![CDATA[<p>@vity that&#8217;ll be a 2.0 feature <img src='http://upstream-berlin.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vity</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-36850</link>
		<dc:creator>Vity</dc:creator>
		<pubDate>Thu, 25 Sep 2008 21:31:09 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-36850</guid>
		<description>If you use submodules you should call them chips


...sorry</description>
		<content:encoded><![CDATA[<p>If you use submodules you should call them chips</p>
<p>&#8230;sorry</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AndrewO</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-36835</link>
		<dc:creator>AndrewO</dc:creator>
		<pubDate>Thu, 25 Sep 2008 14:28:49 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-36835</guid>
		<description>&#62; damnit, i’m just reading on wikipedia that “Potatoe” is actually considered incorrectly spelled and it should be “Potato”

And all thought time I thought you were just making a Dan Quayle joke! :D  That probably would have been a little dated though...</description>
		<content:encoded><![CDATA[<p>&gt; damnit, i’m just reading on wikipedia that “Potatoe” is actually considered incorrectly spelled and it should be “Potato”</p>
<p>And all thought time I thought you were just making a Dan Quayle joke! <img src='http://upstream-berlin.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  That probably would have been a little dated though&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexander Lang</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-36834</link>
		<dc:creator>Alexander Lang</dc:creator>
		<pubDate>Thu, 25 Sep 2008 13:58:46 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-36834</guid>
		<description>hey there,

sorry i had actually planned to include couchobject into the talk but ran out of time. 

yeah, not having an additional generic layer is definitely an option i'm considering. but then again i'm hoping to maybe gather some new ideas simply by playing around with things. we'll see how it goes. there must be something worth improving, somewhere :)</description>
		<content:encoded><![CDATA[<p>hey there,</p>
<p>sorry i had actually planned to include couchobject into the talk but ran out of time. </p>
<p>yeah, not having an additional generic layer is definitely an option i&#8217;m considering. but then again i&#8217;m hoping to maybe gather some new ideas simply by playing around with things. we&#8217;ll see how it goes. there must be something worth improving, somewhere <img src='http://upstream-berlin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johan S</title>
		<link>http://upstream-berlin.com/2008/09/25/a-couchdb-primer-for-an-activerecord-mindset/#comment-36833</link>
		<dc:creator>Johan S</dc:creator>
		<pubDate>Thu, 25 Sep 2008 13:37:03 +0000</pubDate>
		<guid isPermaLink="false">http://upstream-berlin.com/?p=282#comment-36833</guid>
		<description>Your approach sounds very similar to my CouchObject library (http://gitorious.org/projects/couchobject), it even has a module called Persistable and inlined/external has_many's.

However, and this is quite interesting, after working with couchdb some more I've sort of come to the conclusion that it's still not the "right" way to interact with it. I think couchrest gets a lot more right by being minimal up front and letting your domain objects just use a repository-like pattern to retrieve the actual data from the hash, because really, that's what it is in couchdb; a hash. Or document, if you will.
And then you can take it from there to make it more specific to whatever way you prefer to build apps. Don't look at activerecord for inspiration, you won't find much (other than maybe the abstract domain things, like validation, but there's a validatable gem for that)</description>
		<content:encoded><![CDATA[<p>Your approach sounds very similar to my CouchObject library (http://gitorious.org/projects/couchobject), it even has a module called Persistable and inlined/external has_many&#8217;s.</p>
<p>However, and this is quite interesting, after working with couchdb some more I&#8217;ve sort of come to the conclusion that it&#8217;s still not the &#8220;right&#8221; way to interact with it. I think couchrest gets a lot more right by being minimal up front and letting your domain objects just use a repository-like pattern to retrieve the actual data from the hash, because really, that&#8217;s what it is in couchdb; a hash. Or document, if you will.<br />
And then you can take it from there to make it more specific to whatever way you prefer to build apps. Don&#8217;t look at activerecord for inspiration, you won&#8217;t find much (other than maybe the abstract domain things, like validation, but there&#8217;s a validatable gem for that)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
