<?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>Brit Gardner ::: Web Developer ::: Dallas, TX &#187; couchdb</title>
	<atom:link href="http://britg.com/tags/couchdb/feed/" rel="self" type="application/rss+xml" />
	<link>http://britg.com</link>
	<description>The big yellow one&#039;s the sun.</description>
	<lastBuildDate>Sun, 10 Jan 2010 17:25:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GeoCouch in CakePHP</title>
		<link>http://britg.com/2008/08/26/geocouch-in-cakephp/</link>
		<comments>http://britg.com/2008/08/26/geocouch-in-cakephp/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 18:44:46 +0000</pubDate>
		<dc:creator>britg</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[couchdb]]></category>

		<guid isPermaLink="false">http://britg.com/?p=403</guid>
		<description><![CDATA[I released a small php script for easily handling geodata in couchdb via php a while ago, check it out here.  I also put together a short tutorial on how to integrate this script in your CakePHP application.  The article is available here on the CakePHP Bakery.
]]></description>
			<content:encoded><![CDATA[<p>I released a small php script for easily handling geodata in couchdb via php a while ago, <a href="http://britg.com/2008/08/15/using-couchdb-for-storing-google-geocoded-json-data/">check it out here</a>.  I also put together a short tutorial on how to integrate this script in your CakePHP application.  The article is available <a href="http://bakery.cakephp.org/articles/view/geocouch-plugin-storing-geocoded-data-in-couchdb">here on the CakePHP Bakery</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://britg.com/2008/08/26/geocouch-in-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using CouchDB For Storing Google Geocoded JSON Data</title>
		<link>http://britg.com/2008/08/15/using-couchdb-for-storing-google-geocoded-json-data/</link>
		<comments>http://britg.com/2008/08/15/using-couchdb-for-storing-google-geocoded-json-data/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 19:11:43 +0000</pubDate>
		<dc:creator>britg</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[google geocoding]]></category>

		<guid isPermaLink="false">http://britg.com/?p=329</guid>
		<description><![CDATA[Recently, I&#8217;ve been working on a project that requires a lot of geocoding.  Google provides a free service that takes any string as an input and returns a bunch of JSON encoded data if that string matches a physical location.  Check it out here.
Unfortunately, Google&#8217;s geocoding service is limited to 15k requests per day per [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://britg.com/wp-content/uploads/2008/05/couch.png" alt="" width="397" height="96" />Recently, I&#8217;ve been working on a project that requires a lot of geocoding.  Google provides a free service that takes any string as an input and returns a bunch of JSON encoded data if that string matches a physical location.  <a href="http://code.google.com/apis/maps/documentation/services.html#Geocoding">Check it out here</a>.</p>
<p>Unfortunately, Google&#8217;s geocoding service is limited to 15k requests per day per IP.  Sounds like a lot, but for certain applications this limit can be reached very quickly.</p>
<p>What&#8217;s a good solution in these cases?  Why, how about use my favorite up-and-coming database, <a href="http://incubator.apache.org/couchdb/">CouchDB</a>, to store a repository of geo-data mined from Google?  Why use CouchDB?  As previously mentioned, google natively return JSON data for geocoding requests.  Perfect.  CouchDB just happens to store documents natively in JSON!</p>
<p>The following is a rough and tumble library I put together called <a href="http://geocouch.googlecode.com/files/geocouch.php">GeoCouch</a> that you can use to easily handle geocoded data in CouchDB.  This lib has a narrow scope right now &#8211; the requirements are:</p>
<ol>
<li>PHP 5+</li>
<li>CouchDB</li>
<li>A Google API Key (<a href="http://code.google.com/apis/maps/signup.html">get one here</a>)</li>
</ol>
<h2>Usage</h2>
<p>Using the GeoCouch is dead simple.<br />
<a href="http://geocouch.googlecode.com/files/geocouch.php">Grab the file here.</a></p>
<pre lang="php">
<?php
	require ('geocouch.php');

	/*
	 * Don't forget to edit the $GeoCouch->conf parameters!
	 */
	$GeoCouch = new GeoCouch();

	/*
	 * The all-in-one method.
	 * This geocodes the string and writes it to CouchDB
	 * The second parameter is any other fields other
	 * than the Google data that you want to save along
	 * with this document.
	 *
	 * NOTE: if this address already exists in CouchDB
	 * a new revision is created.
	 *
	 * Returns the CouchDB response, i.e.:
	 * {"ok" : true, "rev":"3825793742", "id" : "dallas-tx" }
	 */
	$GeoCouch->save('Dallas, TX', array('custom_field' => 'value')); 

	/*
	 * Simply geo coding.
	 * Does not write to CouchDB.
	 * Returns an Google Geocoded Object.
	 */
	$geoObj = $GeoCouch->geoCode('Dallas, TX');

	/*
	 * Write some Geo JSON to CouchDB.
	 * First parameter is a unique name for the data
	 * Second parameter is the JSON - in
	 * this case the json_encoded $geoObj from above.
	 */
	$GeoCouch->put('Dallas, TX', json_encode($geoObj));

	/*
	 * Get some existing geo data
	 */
	$geoObj = $GeoCouch->get('Dallas, TX');
?>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://britg.com/2008/08/15/using-couchdb-for-storing-google-geocoded-json-data/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Erlang, CouchDB, Yaws and MochiWeb Amazon Machine Instance</title>
		<link>http://britg.com/2008/06/14/erlang-couchdb-yaws-and-mochiweb-amazon-machine-instance/</link>
		<comments>http://britg.com/2008/06/14/erlang-couchdb-yaws-and-mochiweb-amazon-machine-instance/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 19:50:04 +0000</pubDate>
		<dc:creator>britg</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[mochiweb]]></category>
		<category><![CDATA[yaws]]></category>

		<guid isPermaLink="false">http://britg.com/?p=196</guid>
		<description><![CDATA[I call this my erlang playground instance.  Here&#8217;s what&#8217;s installed:

Ubuntu Server Hardy 8.0.4
Apache 2 listening to port 80
Erlang R12B-3
CouchDB 0.8 listening to port 5984
Yaws v1.76 listening to port 8080
MochiWeb Library

The instance ID is ami-12ae4a7b and I&#8217;ve made it public so feel free to use it to your hearts content!
I plan to add to this instance [...]]]></description>
			<content:encoded><![CDATA[<p>I call this my erlang playground instance.  Here&#8217;s what&#8217;s installed:</p>
<ol>
<li>Ubuntu Server Hardy 8.0.4</li>
<li>Apache 2 listening to port 80</li>
<li>Erlang R12B-3</li>
<li>CouchDB 0.8 listening to port 5984</li>
<li>Yaws v1.76 listening to port 8080</li>
<li>MochiWeb Library</li>
</ol>
<p>The instance ID is <code>ami-12ae4a7b</code> and I&#8217;ve made it public so feel free to use it to your hearts content!</p>
<p>I plan to add to this instance whenever I find time.  I definitely want to get SSL socket communication going using <a href="http://www.trapexit.org/Distributed_erlang_using_ssl_through_firewalls">this tutorial</a>.  I&#8217;m also interested in Kevin&#8217;s <a href="http://weblog.hypotheticalabs.com/?p=198">virtuerl project</a> over a hypotheticalabs for quick and easy VM management because the whole reason I&#8217;m going through the trouble of doing this on EC2 is I think development on any erlang system should start and end with multiple physical machines.</p>
]]></content:encoded>
			<wfw:commentRss>http://britg.com/2008/06/14/erlang-couchdb-yaws-and-mochiweb-amazon-machine-instance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHPillow On Top of Couch</title>
		<link>http://britg.com/2008/05/26/phpillow-on-top-of-couch/</link>
		<comments>http://britg.com/2008/05/26/phpillow-on-top-of-couch/#comments</comments>
		<pubDate>Mon, 26 May 2008 20:26:27 +0000</pubDate>
		<dc:creator>britg</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[phpillow]]></category>

		<guid isPermaLink="false">http://britg.com/?p=122</guid>
		<description><![CDATA[Kore Nordmann recently shared his wrapper for working with CouchDB in PHP, PHPillow.  Check it out if you&#8217;re a php-er like me.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://kore-nordmann.de/blog.html">Kore Nordmann</a> recently shared his wrapper for working with CouchDB in PHP, <a href="http://kore-nordmann.de/blog/phpillow_php_couchdb_wrapper.html">PHPillow</a>.  Check it out if you&#8217;re a php-er like me.</p>
]]></content:encoded>
			<wfw:commentRss>http://britg.com/2008/05/26/phpillow-on-top-of-couch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming CouchDB 0.8 Incompatibilities</title>
		<link>http://britg.com/2008/05/26/upcoming-couchdb-08/</link>
		<comments>http://britg.com/2008/05/26/upcoming-couchdb-08/#comments</comments>
		<pubDate>Mon, 26 May 2008 15:38:00 +0000</pubDate>
		<dc:creator>britg</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[couchdb]]></category>

		<guid isPermaLink="false">http://britg.com/?p=119</guid>
		<description><![CDATA[cmlenz just posted a wiki page documenting the upcoming changes to CouchDB that aren&#8217;t backwards compatible.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://wiki.apache.org/couchdb/BreakingChanges">cmlenz </a>just posted a <a href="http://wiki.apache.org/couchdb/BreakingChanges">wiki page</a> documenting the upcoming changes to CouchDB that aren&#8217;t backwards compatible.</p>
]]></content:encoded>
			<wfw:commentRss>http://britg.com/2008/05/26/upcoming-couchdb-08/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux, Yaws, CouchDB, Erlang &#8211; LYCE</title>
		<link>http://britg.com/2008/05/23/linux-yaws-couchdb-erlang-lyce/</link>
		<comments>http://britg.com/2008/05/23/linux-yaws-couchdb-erlang-lyce/#comments</comments>
		<pubDate>Fri, 23 May 2008 17:20:24 +0000</pubDate>
		<dc:creator>britg</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[yaws]]></category>

		<guid isPermaLink="false">http://britg.com/?p=73</guid>
		<description><![CDATA[Just had a funny thought since CouchDB and Erlang have been on my mind so much lately.  Everyone&#8217;s familiar with the LAMP and WISC stacks, right? (Linux, Apache, MySQL, PHP and Windows, IIS, SQLServer, C# from those of you who aren&#8217;t)
Could the next big stack to hit mainstream be LYCE &#8211; Linux, Yaws, CouchDB, [...]]]></description>
			<content:encoded><![CDATA[<p>Just had a funny thought since CouchDB and Erlang have been on my mind so much lately.  Everyone&#8217;s familiar with the LAMP and WISC stacks, right? (Linux, Apache, MySQL, PHP and Windows, IIS, SQLServer, C# from those of you who aren&#8217;t)</p>
<p>Could the next big stack to hit mainstream be LYCE &#8211; Linux, <a href="http://yaws.hyber.org/">Yaws</a>, <a href="http://couchdb.com">CouchDB</a>, and <a href="http://erlang.org">Erlang</a>?</p>
<p>Given that scalability is such a huge issue right now, and Elastic/Cloud computing is almost certainly the next big infrastructure movement, I certainly think at least Erlang and CouchDB will go mainstream.</p>
<p>Another variant could be LYSE &#8211; Linux, Yaws, <a href="http://www.amazon.com/gp/browse.html?node=342335011">SimpleDB</a>, and Erlang.</p>
]]></content:encoded>
			<wfw:commentRss>http://britg.com/2008/05/23/linux-yaws-couchdb-erlang-lyce/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CouchDB</title>
		<link>http://britg.com/2008/05/22/couchdb/</link>
		<comments>http://britg.com/2008/05/22/couchdb/#comments</comments>
		<pubDate>Thu, 22 May 2008 17:20:53 +0000</pubDate>
		<dc:creator>britg</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://britg.com/?p=46</guid>
		<description><![CDATA[
One Apache project I find very interesting right now is CouchDB.  From the site:
Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API. Among other features, it provides robust, incremental replication with bi-directional conflict detection and resolution, and is queryable and indexable using a table-oriented view engine with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://britg.com/wp-content/uploads/2008/05/couch.png"><img class="alignnone size-full wp-image-48" title="couch" src="http://britg.com/wp-content/uploads/2008/05/couch.png" alt="" width="397" height="96" /></a></p>
<p>One Apache project I find very interesting right now is CouchDB.  From the <a href="http://incubator.apache.org/couchdb/index.html">site</a>:</p>
<blockquote><p>Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API. Among other features, it provides robust, incremental replication with bi-directional conflict detection and resolution, and is queryable and indexable using a table-oriented view engine with JavaScript acting as the default view definition language.</p></blockquote>
<p>Why is it interesting?</p>
<p><strong>Schema-free</strong> &#8211; as a web app developer, I can relate to anyone who has had frustration or is fed up with managing and maintaining schemas.  CouchDB offers a document-based system where each document in the database is loosely related.  This means no more schemas to update and manage &#8211; simply throw new data into the database.  <em>How do I retrieve data that is related to each other?</em> That&#8217;s a topic for another conversation, but <a href="http://incubator.apache.org/couchdb/docs/overview.html#views">this&#8217;ll get you started</a>.  Scroll to the section titled, &#8216;Views&#8217;.</p>
<p><strong>RESTful HTTP/JSON API</strong> &#8211; JSON is quickly becoming a powerhouse as a data-transfer mechanism.  Combined with the principles of <a href="http://en.wikipedia.org/wiki/REST">REST</a> and accessed through HTTP, querying a CouchDB will be familiar to anyone who&#8217;s worked with data-driven applications in Adobe&#8217;s Flex technology.  At <a href="http://figarointeractive.com">Figaro Interactiv</a>e, that&#8217;s pretty much all we do, so CouchDB fits right into our workflow!</p>
<p>There are more reasons why I&#8217;m excitedly watching the CouchDB project, but I&#8217;ll save them for a later post.  I just wanted to drop a quick line and increase awareness of this pretty cool project.</p>
]]></content:encoded>
			<wfw:commentRss>http://britg.com/2008/05/22/couchdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
