<?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>exploration &#187; couchdb</title>
	<atom:link href="http://robertcarlsen.net/tag/couchdb/feed" rel="self" type="application/rss+xml" />
	<link>http://robertcarlsen.net</link>
	<description>accounts of success and misadventure</description>
	<lastBuildDate>Tue, 13 Jul 2010 14:37:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LEITv: Fly or Pie show</title>
		<link>http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121</link>
		<comments>http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:25:12 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Live Experimental Interactive Television]]></category>
		<category><![CDATA[assignment]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[couchrest]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[itv]]></category>
		<category><![CDATA[leitv]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[sinatra]]></category>
		<category><![CDATA[two-screen]]></category>
		<category><![CDATA[voting]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1121</guid>
		<description><![CDATA[This assignment was to develop a concept around a two-screen, live event experience; specifically, using TV and computer via internet. Our group&#8217;s concept was a variety-style, Gong Show inspired show with binary voting from viewers to determine via aggregate whether a performance was Fly (a rousing success) or Pie (a miserable failure) which received a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-voting.png" rel="lightbox[1121]"><img class="alignright size-thumbnail wp-image-1128" title="flypie-voting" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-voting-150x150.png" alt="flypie-voting" width="150" height="150" /></a>This assignment was to develop a concept around a two-screen, live event experience; specifically, using TV and computer via internet. Our group&#8217;s concept was a variety-style, Gong Show inspired show with binary voting from viewers to determine via aggregate whether a performance was Fly (a rousing success) or Pie (a miserable failure) which received a whipped cream pie in the face. (We&#8217;re a classy outfit here..)<span id="more-1121"></span></p>
<p>My contribution to the project was the web voting interface and database backend as well as a simple API for communicating with it. I wrote the application using the Sinatra microframework for Ruby and utilized couchrest to communicate with a CouchDB database. A control panel interface enabled an operator to update the voting interface status messages and to open the next event for voting. A display page mocked up the live video with Fly and Pie status bars for viewers to watch.</p>
<p>Although the system is very rudimentary, all the pieces are in place for a live voting situation. During the class demo however, the server was crippled by only a dozen simultaneous connections, and become sluggish enough to be unusable. I believe that the problem stemmed from each of the clients polling the database, and couchrest seems to update a view each time it&#8217;s requested. CouchDB is quite fast at reads, but far slower at writes, and I think these things combined to make a big problem.</p>
<p>I think that performance could be greatly enhanced if status polling were eliminated, or at least read from static file that was generated by the control application or server when data needed to be refreshed.</p>
<p>Live voting is a tested and successful model, and the class seemed to enjoy the real-time updates at the beginning while the system was responsive. The show itself was successful largely thanks to Gordie and Lisa Maria&#8217;s performances (and willingness to take a pie to their faces from Jong Yoon).</p>

<a href='http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121/flypie-vote-submit' title='Voting Submit'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-vote-submit-150x150.png" class="attachment-thumbnail" alt="" title="Voting Submit" /></a>
<a href='http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121/flypie-voting' title='Voting Panel'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-voting-150x150.png" class="attachment-thumbnail" alt="" title="Voting Panel" /></a>
<a href='http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121/flypie-vote-accept' title='Vote Accepted'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-vote-accept-150x150.png" class="attachment-thumbnail" alt="" title="Vote Accepted" /></a>
<a href='http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121/flypie-video' title='Video Display'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-video-150x150.png" class="attachment-thumbnail" alt="" title="Video Display" /></a>
<a href='http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121/flypie-controlpanel-update' title='Operator&#039;s Control Panel'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-controlpanel-update-150x150.png" class="attachment-thumbnail" alt="" title="Operator&#039;s Control Panel" /></a>
<a href='http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121/flypie-controlpanel-status' title='Operator Control Panel voting'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/flypie-controlpanel-status-150x150.png" class="attachment-thumbnail" alt="" title="Operator Control Panel voting" /></a>

]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/02/23/leitv-fly-or-pie-show-1121/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sinatra + Kara == qwerty animals</title>
		<link>http://robertcarlsen.net/2010/02/20/sinatra-kara-qwerty-animals-1108</link>
		<comments>http://robertcarlsen.net/2010/02/20/sinatra-kara-qwerty-animals-1108#comments</comments>
		<pubDate>Sat, 20 Feb 2010 16:53:49 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[itp]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[couchrest]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[funaday]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[kara]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[qwerty]]></category>
		<category><![CDATA[rack]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[sass]]></category>
		<category><![CDATA[sinatra]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1108</guid>
		<description><![CDATA[Yesterday I released a small web app; it was my first using the Sinatra microframework for Ruby: http://qwerty.robertcarlsen.net

The app arranges illustrations of animals wearing lettered t-shirts to create user-supplied messages. Kara Schlindwein created the illustrations as part of her project for the 6th Annual Fun-a-Day project in Philadelphia, and I wrote the first draft of the [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I released a small web app; it was my first using the <a href="http://www.sinatrarb.com/" onclick="pageTracker._trackPageview('/outgoing/www.sinatrarb.com/?referer=');">Sinatra</a> microframework for Ruby: <a href="http://qwerty.robertcarlsen.net" onclick="pageTracker._trackPageview('/outgoing/qwerty.robertcarlsen.net?referer=');">http://qwerty.robertcarlsen.net</a></p>
<p style="text-align: center;"><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/sinatra.png" rel="lightbox[1108]"><img class="size-medium wp-image-1109 aligncenter" title="sinatra" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/02/sinatra-300x72.png" alt="sinatra" width="300" height="72" /></a></p>
<p>The app arranges illustrations of animals wearing lettered t-shirts to create user-supplied messages. <a href="http://karaschlindwein.com/qwerty_animals.php" onclick="pageTracker._trackPageview('/outgoing/karaschlindwein.com/qwerty_animals.php?referer=');">Kara Schlindwein</a> created the illustrations as part of her project for the 6th Annual <a href="http://artclash.com/" onclick="pageTracker._trackPageview('/outgoing/artclash.com/?referer=');">Fun-a-Day</a> project in Philadelphia, and I wrote the first draft of the app while sitting in a chair at the show a couple of weeks ago, still nursing my broken ankle.<span id="more-1108"></span></p>
<p>I&#8217;ve come to really like working with Sinatra / HAML / SASS – once I had a basic comprehension of how the components fit together I could see how to organize the app without getting mired in the code. Making changes to the app has been pleasantly easy. Deployment via <a href="http://www.modrails.com/" onclick="pageTracker._trackPageview('/outgoing/www.modrails.com/?referer=');">Passenger</a> (mod_rails) on Apache was simple enough my my local and development servers (after reading sample virtual host configurations) and setting up a subdomain on <a href="http://blog.nyerm.com/2009/03/21/deploying-a-sinatra-app-on-dreamhost/" onclick="pageTracker._trackPageview('/outgoing/blog.nyerm.com/2009/03/21/deploying-a-sinatra-app-on-dreamhost/?referer=');">Dreamhost</a> has been fine, too. Everything is coordinated via git, so pushing changes around has been simple.</p>
<p>I first heard about Sinatra (and couchdb for that matter) in a presentation by <a href="http://danieltsadok.wordpress.com/2009/03/26/its-all-middleware/" onclick="pageTracker._trackPageview('/outgoing/danieltsadok.wordpress.com/2009/03/26/its-all-middleware/?referer=');">Daniel Tsadock </a>at ITP last year and I&#8217;ve kept it in the back of my mind as something I wanted to try. I&#8217;m just now getting to development of my thesis project website and decided to use Sinatra for it, although I had a disappointing experience with the performance of another Sinatra + couchrest app I wrote for the Live Experimental Interactive Television class this past week. My VPS development server ground to a halt when a dozen classmates attempted to use the app at the same time. I&#8217;m pretty sure that my code was somewhat inefficient (with each client polling couchdb through an api provided via Sinatra routes), however I was hoping for usability beyond 12 simultaneous connections. I&#8217;m still optimistic though that it will work, and writing an app with the framework and view templates is fast and actually pretty fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/02/20/sinatra-kara-qwerty-animals-1108/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>it&#8217;s real (time) !</title>
		<link>http://robertcarlsen.net/2009/11/04/it-real-time-1013</link>
		<comments>http://robertcarlsen.net/2009/11/04/it-real-time-1013#comments</comments>
		<pubDate>Thu, 05 Nov 2009 03:10:23 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Rest of You]]></category>
		<category><![CDATA[Thesis]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1013</guid>
		<description><![CDATA[after a couple of late nights, i have a proof-of-concept in the real-time cycling-related datalogging. the reasons behind the project are still getting sorted, but lately my interest in ubiquitous urban sensor networks has been piqued and this is a tentative exploration in that area. sensors don&#8217;t have to remain static as part of physical [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/all-events.png" rel="lightbox[1013]"><img class="alignright size-thumbnail wp-image-1014" style="margin-left: 3px;" title="all events" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/all-events-150x150.png" alt="all events" width="150" height="150" /></a>after a couple of late nights, i have a proof-of-concept in the real-time cycling-related datalogging. the reasons behind the project are still getting sorted, but lately my interest in ubiquitous <a href="http://speedbird.wordpress.com/2009/10/11/toward-urban-systems-design/" onclick="pageTracker._trackPageview('/outgoing/speedbird.wordpress.com/2009/10/11/toward-urban-systems-design/?referer=');">urban sensor networks</a> has been piqued and this is a tentative exploration in that area. sensors don&#8217;t have to remain static as part of physical infrastructure&#8230;millions of people are carrying millions of sensors around with them daily.<span id="more-1013"></span></p>
<p>an iPhone application records accelerometer data at anywhere from 1-40Hz (arbitrary rate) which is geocoded using core location (including heading, altitude, and location). every second the most recent sample is uploaded to a server running <a href="http://couchdb.apache.org/" onclick="pageTracker._trackPageview('/outgoing/couchdb.apache.org/?referer=');">couchDB</a>. after a ride, the full-resolution file can be e-mailed or uploaded to the server. for the proof-of-concept the data is being plotted on a dynamic Google Map.</p>
<p>in the immediate future i&#8217;ll be adding live updating of the map via ajax or some other web sumthin&#8217; dot oh technology.</p>
<p>longer term is to build out similar applications for android and symbian (or maybe just j2me if it&#8217;s feasible). i&#8217;m also planning on getting back to the ardunio-based sensor packages which started the project.</p>
<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/couchdb-ride-events.png" rel="lightbox[1013]"><img class="alignleft size-medium wp-image-1015" title="couchdb ride events" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/couchdb-ride-events-282x300.png" alt="couchdb ride events" width="282" height="300" /></a><br />
<br style="clear:both;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/11/04/it-real-time-1013/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
