<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10none.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/noitems.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://blog.josephholsten.com/wp-atom.php">
	<title type="text">libera ideoj</title>
	<subtitle type="text" />

	<updated>2012-05-15T08:54:13Z</updated>

	<link rel="alternate" type="text/html" href="http://blog.josephholsten.com" />
	<id>http://blog.josephholsten.com/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.3.2">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/libera-ideoj" /><feedburner:info uri="libera-ideoj" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/libera-ideoj" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Flibera-ideoj" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[William Butler Yeats]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/uvSoHcP8TJg/" />
		<id>http://blog.josephholsten.com/?p=519</id>
		<updated>2012-05-15T08:12:37Z</updated>
		<published>2012-05-15T08:12:37Z</published>
		<category scheme="http://blog.josephholsten.com" term="Draft" />		<summary type="html" />
		<content type="html" xml:base="http://blog.josephholsten.com/2012/05/william-butler-yeats/">&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/W._B._Yeats"&gt;&lt;img src="http://assets.josephholsten.com.s3.amazonaws.com/images/William_Butler_Yeats.jpg" alt="William Butler Yeats" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/uvSoHcP8TJg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2012/05/william-butler-yeats/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2012/05/william-butler-yeats/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2012/05/william-butler-yeats/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[Smalltalk in Smalltalk in Javascript]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/fRLC1-IuEE4/" />
		<id>http://blog.josephholsten.com/?p=510</id>
		<updated>2012-05-03T07:28:34Z</updated>
		<published>2012-05-03T07:28:34Z</published>
		<category scheme="http://blog.josephholsten.com" term="Draft" />		<summary type="html"><![CDATA[Amber is written in itself, including the parser and compiler, and compiles into efficient JavaScript, mapping one-to-one with the JS equivalent. Nicolas Petton, Amber Smalltalk.]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2012/05/smalltalk-in-smalltalk-in-javascript/">&lt;blockquote&gt;&lt;p&gt;Amber is written in itself, including the parser and compiler, and compiles into efficient JavaScript, mapping one-to-one with the JS equivalent.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Nicolas Petton, &lt;a href="http://amber-lang.net/"&gt;Amber Smalltalk&lt;/a&gt;. &lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/fRLC1-IuEE4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2012/05/smalltalk-in-smalltalk-in-javascript/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2012/05/smalltalk-in-smalltalk-in-javascript/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2012/05/smalltalk-in-smalltalk-in-javascript/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[Always verify SSL certificates]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/u9qENDUifuI/" />
		<id>http://blog.josephholsten.com/?p=505</id>
		<updated>2012-04-25T20:10:57Z</updated>
		<published>2012-04-25T20:10:57Z</published>
		<category scheme="http://blog.josephholsten.com" term="Draft" />		<summary type="html"><![CDATA[All you need to do is require this gem and you’ll get good security by default. James Golick. You should.]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2012/04/always-verify-ssl-certificates/">&lt;blockquote&gt;&lt;p&gt;All you need to do is require this gem and you’ll get good security by default.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/jamesgolick/always_verify_ssl_certificates"&gt;James Golick&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;You should.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/u9qENDUifuI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2012/04/always-verify-ssl-certificates/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2012/04/always-verify-ssl-certificates/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2012/04/always-verify-ssl-certificates/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[Dedicated + Cloud = Hybrid]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/h2yDJqkTeO4/" />
		<id>http://blog.josephholsten.com/?p=500</id>
		<updated>2012-04-24T16:35:50Z</updated>
		<published>2012-04-24T16:35:49Z</published>
		<category scheme="http://blog.josephholsten.com" term="Draft" />		<summary type="html"><![CDATA[Combined with storing all data and indexes in RAM, we get an average MongoDB query speed of 0.35ms at around 1000 writes (mostly updates) per second from the dedicated hardware + SSDs for the core application database. David Mytton, Evolution of our hosting – hybrid.]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2012/04/dedicated-cloud-hybrid/">&lt;blockquote&gt;&lt;p&gt;Combined with storing all data and indexes in RAM, we get an average MongoDB query speed of 0.35ms at around 1000 writes (mostly updates) per second from the dedicated hardware + SSDs for the core application database.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;David Mytton, &lt;a href="http://blog.serverdensity.com/2012/04/17/evolution-of-our-hosting-hybrid/"&gt;Evolution of our hosting – hybrid&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/h2yDJqkTeO4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2012/04/dedicated-cloud-hybrid/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2012/04/dedicated-cloud-hybrid/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2012/04/dedicated-cloud-hybrid/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[12% combined]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/ul-2FNKV9B0/" />
		<id>http://blog.josephholsten.com/?p=493</id>
		<updated>2012-04-24T07:30:46Z</updated>
		<published>2012-04-24T07:30:40Z</published>
		<category scheme="http://blog.josephholsten.com" term="Published" />		<summary type="html"><![CDATA[The USDA standards for processed, packaged “Salisbury steak” require a minimum content of 65% meat, of which up to 25% can be pork, except if defatted beef or pork is used, the limit is 12% combined. No more than 30% may be fat. Meat byproducts are not permitted; however, beef heart meat is allowed. Extender [...]]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2012/04/12-percent-combined/">&lt;blockquote&gt;&lt;p&gt;The USDA standards for processed, packaged “Salisbury steak” require a minimum content of 65% meat, of which up to 25% can be pork, except if defatted beef or pork is used, the limit is 12% combined. No more than 30% may be fat. Meat byproducts are not permitted; however, beef heart meat is allowed. Extender (bread crumbs, flour, oat flakes, etc.) content is limited to 12%, except isolated soy protein at 6.8% is considered equivalent to 12% of the others.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Wikipedia, &lt;a href="https://en.wikipedia.org/w/index.php?title=Salisbury_steak&amp;#038;oldid=485884139"&gt;Salisbury steak&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/ul-2FNKV9B0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2012/04/12-percent-combined/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2012/04/12-percent-combined/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2012/04/12-percent-combined/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[D.D.]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/rky7imYKET0/" />
		<id>http://blog.josephholsten.com/?p=477</id>
		<updated>2012-04-23T03:32:57Z</updated>
		<published>2012-04-23T03:32:57Z</published>
		<category scheme="http://blog.josephholsten.com" term="Draft" />		<summary type="html"><![CDATA[The Weeknd, 2011.]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2012/04/d-d/">&lt;p&gt;&lt;audio src=http://assets.josephholsten.com/audio/The%20Weeknd/Echoes%20of%20Silence/01%20D.D..mp3 controls preload /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://the-weeknd.com/" title="D.D., Echoes of Silence"&gt;The Weeknd&lt;/a&gt;, 2011.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/rky7imYKET0" height="1" width="1"/&gt;</content>
<link href="http://assets.josephholsten.com/audio/The%20Weeknd/Echoes%20of%20Silence/01%20D.D..mp3" rel="enclosure" length="12354010" type="audio/mpeg" />
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2012/04/d-d/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2012/04/d-d/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2012/04/d-d/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[The Most Wonderful Way to Augment Reality]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/nW5DFy4eO2s/" />
		<id>http://blog.josephholsten.com/2011/03/the-most-wonderful-way-to-augment-reality/</id>
		<updated>2011-03-24T14:06:18Z</updated>
		<published>2011-03-24T14:04:27Z</published>
		<category scheme="http://blog.josephholsten.com" term="Published" />		<summary type="html"><![CDATA[I&#8217;ve been working at building augmented reality tech for a while. It&#8217;s so math heavy that getting the minimum viable product out the door is excruciating. So the project has stalled. In the mean time, I&#8217;ve learned a little about lean. And I&#8217;ve come to realize that I&#8217;ve been building a solution to too many [...]]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2011/03/the-most-wonderful-way-to-augment-reality/">&lt;p&gt;I&amp;#8217;ve been working at building augmented reality tech for a while. It&amp;#8217;s so math heavy that getting the minimum viable product out the door is excruciating. So the project has stalled.&lt;/p&gt;
&lt;p&gt;In the mean time, I&amp;#8217;ve learned a little about lean. And I&amp;#8217;ve come to realize that I&amp;#8217;ve been building a solution to too many problems. Worst of all, I&amp;#8217;ve been split between the problems of too many people. So it&amp;#8217;s time to regroup. Figure out who matter, and what matters to them.&lt;/p&gt;
&lt;p&gt;In the broadest sense, there are three groups in augmenting reality: the audience, the artists, and the patrons. Ultimately the driving force is the taste of the audience. We&amp;#8217;ll only give our attention to the most beautiful and useful. But at the moment, the landscape is so sparse that the only projects that are seeing life are ones with good backing or a driven creator. The sponsors tend to be limiting their support to marketing efforts, movies and brands are hunting cool, there isn&amp;#8217;t much sponsorship of abstract art or niche business tools. But the budgets of these sponsors are constrained by the domain of the possible. Artists who know the field are the best guides. Given the latitude, I think they&amp;#8217;ll prefer to make sponsored projects with the best tools they can find.&lt;/p&gt;
&lt;p&gt;So that&amp;#8217;s where I want to go. I want to build the best tools an artist could wield. So what I need to do now is learn what sucks most about today&amp;#8217;s tools. I need to know how projects are being built today, how they are designed, constructed, delivered and maintained. Would the most good from a better CAD, framework, toolkit or platform? What&amp;#8217;s the stack of tools to make most beautiful augments?  What&amp;#8217;s the most flexible stack for getting a working solution turned around quickly?&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/nW5DFy4eO2s" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2011/03/the-most-wonderful-way-to-augment-reality/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2011/03/the-most-wonderful-way-to-augment-reality/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2011/03/the-most-wonderful-way-to-augment-reality/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[Deploying with Bundler and Capistrano]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/baUhp_HUpHw/" />
		<id>http://blog.josephholsten.com/?p=389</id>
		<updated>2012-05-15T08:54:13Z</updated>
		<published>2010-09-03T10:05:09Z</published>
		<category scheme="http://blog.josephholsten.com" term="Published" />		<summary type="html"><![CDATA[When I stumbled across Richard Huang&#8217;s DRY bundler in capistrano, I got excited thinking I&#8217;d learn even more about bundler&#8217;s internals and maybe even a few more tricks with using bundler and capistrano together. Unfortunately, all I really got was to use this in my deploy.rb: Now that will probably be enough for most people. [...]]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2010/09/deploying-with-bundler-and-capistrano/">&lt;p&gt;When I stumbled across Richard Huang&amp;#8217;s &lt;a href="http://rails-bestpractices.com/posts/51-dry-bundler-in-capistrano"&gt;DRY bundler in capistrano&lt;/a&gt;, I got excited thinking I&amp;#8217;d learn even more about bundler&amp;#8217;s internals and maybe even a few more tricks with using bundler and capistrano together. Unfortunately, all I really got was to use this in my &lt;code&gt;deploy.rb&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: ruby; title: ; notranslate"&gt;
require 'bundler/capistrano'
&lt;/pre&gt;
&lt;p&gt;Now that will probably be enough for most people. But if you&amp;#8217;re already using bundler 1.0 with capistrano, you probably aren&amp;#8217;t most people.&lt;/p&gt;
&lt;p&gt;The bundler team has put a lot of work into documenting every little part of the project, so after we&amp;#8217;ve required bundler&amp;#8217;s capistrato recipe, let&amp;#8217;s grab the task explanation:&lt;/p&gt;
&lt;pre class="brush: bash; title: ; notranslate"&gt;
% cap --explain bundle:install
------------------------------------------------------------
cap bundle:install
------------------------------------------------------------
Install the current Bundler environment. By default, gems will be installed to
the shared/bundle path. Gems in the development and test group will not be
installed. The install command is executed with the --deployment and --quiet
flags. You can override any of these defaults by setting the variables shown
below.

  set :bundle_gemfile,      &amp;quot;Gemfile&amp;quot;
  set :bundle_dir,          fetch(:shared_path)+&amp;quot;/bundle&amp;quot;
  set :bundle_flags,        &amp;quot;--deployment --quiet&amp;quot;
  set :bundle_without,      [:development, :test]
&lt;/pre&gt;
&lt;p&gt;You&amp;#8217;re probably going to want to start playing around with bundler 1.0 on your dev machine before you deploy it on production. Since bundler 0.9 doesn&amp;#8217;t support all the useful flags in 1.0, so we need to empty a couple of these default settings to make it work:&lt;/p&gt;
&lt;pre class="brush: ruby; title: ; notranslate"&gt;
set :bundle_dir, &amp;quot;&amp;quot;
set :bundle_flags, &amp;quot;&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Now you can have 1.0 on your dev machines and test that this deploys properly.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re like me, you forgot that need a few gems in your development group on your staging machine. So just set the groups you can live without:&lt;/p&gt;
&lt;pre class="brush: ruby; title: ; notranslate"&gt;
set :bundle_without, [:test]
&lt;/pre&gt;
&lt;p&gt;Of course, our production environment doesn&amp;#8217;t actually need anything in the development group, and we use separate &lt;code&gt;production&lt;/code&gt; and &lt;code&gt;staging&lt;/code&gt; cap tasks to load settings for our different environments. So we just modify those to have the right bundler groups:&lt;/p&gt;
&lt;pre class="brush: ruby; title: ; notranslate"&gt;
task :staging do
  set :bundle_without, [:test]
  # other staging specific settings, like
  # set :rails_env, 'staging'
end

task :production do
  # this is the default, but left here for reference
  set :bundle_without, [:development, :test]
  # other production specific settings, like
  # set :rails_env, 'production'
end
&lt;/pre&gt;
&lt;p&gt;Once you&amp;#8217;ve got everything tailored and working, you can update bundler on your boxes and restart the app servers. You could leave the &lt;code&gt;bundle_dir&lt;/code&gt; and &lt;code&gt;bundle_flags&lt;/code&gt; settings the way they are, but I strongly recommend using the &lt;code&gt;--deployment&lt;/code&gt; flag to run in &lt;a href="http://gembundler.com/deploying.html"&gt;deployment mode&lt;/a&gt;, the &lt;code&gt;--quiet&lt;/code&gt; flag to stop printing so much information, and a &lt;a href="http://gembundler.com/bundle_install.html"&gt;bundle directory&lt;/a&gt;  in your &lt;code&gt;shared_path&lt;/code&gt; instead of deployment mode&amp;#8217;s default of &lt;code&gt;vendor/bundle&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ll also want to start using &lt;a href="http://gembundler.com/bundle_package.html"&gt;bundle package&lt;/a&gt;  to include all the gems you need into &lt;code&gt;vendor/cache&lt;/code&gt;. Check that into your in your version control to make the deployment process even better, you won&amp;#8217;t even have to talk to rubygems when you run &lt;code&gt;bundle install&lt;/code&gt; during a deploy.&lt;/p&gt;
&lt;p&gt;If you like more technical documentation, bundler goes into even more depth in its manual pages for &lt;a href="http://gembundler.com/man/bundle-install.1.html"&gt;bundle-install(1)&lt;/a&gt; and &lt;a href="http://gembundler.com/man/bundle-package.1.html"&gt;bundle-package(1)&lt;/a&gt;. They explain in depth how deployment mode works differently, how conservative updating works, how gems are cached and quite a bit more. If you find yourself wanting even more control than I&amp;#8217;ve explained here, that&amp;#8217;s where I would look.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/baUhp_HUpHw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2010/09/deploying-with-bundler-and-capistrano/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2010/09/deploying-with-bundler-and-capistrano/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2010/09/deploying-with-bundler-and-capistrano/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html"><![CDATA[Your New New Web Identity]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/V8xl5MF4wPE/" />
		<id>http://blog.josephholsten.com/?p=315</id>
		<updated>2010-08-01T20:12:57Z</updated>
		<published>2010-05-16T05:33:10Z</published>
		<category scheme="http://blog.josephholsten.com" term="Published" />		<summary type="html"><![CDATA[David Recordon just let us know about a little strawman proposal he&#8217;s calling OpenID Connect. It&#8217;s not exactly perfect, but it&#8217;s a good jumping off point for the ideas that are shaping the next version of OpenID. And I love that he&#8217;s just throwing some ideas out there. It&#8217;s really in the original spirit of [...]]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2010/05/your-new-new-web-identity/">&lt;p&gt;David Recordon just let us know about a little strawman proposal he&amp;#8217;s calling &lt;a href="http://openidconnect.com/"&gt;OpenID Connect&lt;/a&gt;.  It&amp;#8217;s not exactly perfect, but it&amp;#8217;s a good jumping off point for the ideas that are shaping the next version of OpenID. And I love that he&amp;#8217;s just throwing some ideas out there. It&amp;#8217;s really in the original spirit of Request For Comments. There&amp;#8217;s even code in there!&lt;/p&gt;
&lt;p&gt;Most noticibly, the proposal guts most of the work in OpenID, replacing its discovery and security bits with &lt;a href="http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/"&gt;LRDD&lt;/a&gt; and &lt;a href="http://hueniverse.com/2010/05/introducing-oauth-2-0/"&gt;OAuth 2&lt;/a&gt; respectively. LRDD is a rewrite of the discovery process used in OpenID 2 intended to be more modular and simpler. OAuth 2 is also a rewrite, but not of existing OpenID parts. Instead, it takes the OAuth concept and makes it easier for to write clients, among many other changes. But with OAuth 2, you can just use curl to get at APIs instead of having to dig into HTTP headers. Having OAuth 2 underneath OpenID should make it much easier to write clients that work with OpenIDs.&lt;/p&gt;
&lt;p&gt;There are some other changes as well. OpenID currently lets you delegate your OpenID from any web address to any OpenID server. This is pretty much only used by early adopters who want vanity OpenIDs. That&amp;#8217;s how I&amp;#8217;ve got my OpenID set up today. But really it provides almost no benefit with the new disco process. And most people are using an insecure web address to delegate from, making them vulnerable to well known weaknesses in OpenID. The consesus is that all future OpenID versions will have to mandate TLS to keep things safe. If you&amp;#8217;re enough of a power user to limit your vanity web address to HTTPS, you&amp;#8217;ll have no trouble setting up your own OpenID Provider as well. So losing delegation is a non-issue.&lt;/p&gt;
&lt;p&gt;But the OpenID Connect proposal has one change that I can&amp;#8217;t talk myself into to supporting. It introduces a very simple User Information API that provides the basic personal information every site needs for registering an account. The problem is that we already have the Simple Registration Extension and Attribute Exchange. Instead of reusing the format of either, it introduces another new one.&lt;/p&gt;
&lt;p&gt;Instead of inventing another new format for the next version of OpenID, I&amp;#8217;d much rather it have a common way to embed existing formats like hCard, vCard, FOAF and PoCo. Like &lt;a href="http://en.wikipedia.org/wiki/Yadis"&gt;YADIS&lt;/a&gt; so long ago, we&amp;#8217;ve got a bunch of competing tools for the same job. So let&amp;#8217;s build a way for them to compete instead of one more extremely specialized solution. LID and DIX may no longer be with us, but OpenID incorporated their best ideas. Maybe we could call it Yet Another Personal Information Schema System? Nah.&lt;/p&gt;
&lt;p&gt;I figure &lt;a href="http://hueniverse.com/2010/05/jrd-the-other-resource-descriptor/"&gt;X/JRD&lt;/a&gt; gets us most of the way. Webfinger demos show that we can already do this stuff by just pointing around. But what&amp;#8217;s missing is a way to inline the data so clients don&amp;#8217;t have to keep making requests to get standard data. I imagine it could be as simple as:&lt;/p&gt;
&lt;pre class="brush: jscript; title: ; notranslate"&gt;
{&amp;quot;user_id&amp;quot;:&amp;quot;https://graph.fb.me/24400320&amp;quot;,
 &amp;quot;url&amp;quot;:&amp;quot;http://fb.me/davidrecordon&amp;quot;,
 &amp;quot;link&amp;quot;: [
   {&amp;quot;rel&amp;quot;:&amp;quot;http://portablecontacts.net/spec/1.0#me&amp;quot;,
    &amp;quot;href&amp;quot;:&amp;quot;http://poco.fb.me/davidrecordon&amp;quot;,
    &amp;quot;entity&amp;quot;:
      {&amp;quot;entry&amp;quot;:
        {&amp;quot;id&amp;quot;: &amp;quot;692&amp;quot;,
         &amp;quot;displayName&amp;quot;: &amp;quot;David Recordon&amp;quot;,
         &amp;quot;name&amp;quot;:
           {&amp;quot;familyName&amp;quot;: &amp;quot;David&amp;quot;,
            &amp;quot;givenName&amp;quot;: &amp;quot;Recordon&amp;quot; },
         &amp;quot;emails&amp;quot;:
           [{&amp;quot;value&amp;quot;: &amp;quot;recordond@gmail.com&amp;quot;,
             &amp;quot;type&amp;quot;: &amp;quot;home&amp;quot;,
             &amp;quot;primary&amp;quot;: &amp;quot;true&amp;quot; }],
          &amp;quot;photos&amp;quot;:
            [{&amp;quot;value&amp;quot;: &amp;quot;http://pics.fb.me/davidrecordon&amp;quot;,
              &amp;quot;type&amp;quot;: &amp;quot;home&amp;quot;,
              &amp;quot;primary&amp;quot;: &amp;quot;true&amp;quot; }]}}},
   {&amp;quot;rel&amp;quot;:&amp;quot;describedby&amp;quot;,
    &amp;quot;type&amp;quot;: &amp;quot;application/rdf+n3&amp;quot;,
    &amp;quot;href&amp;quot;:&amp;quot;http://foaf.fb.me/daveman692&amp;quot;,
    &amp;quot;entity&amp;quot;: &amp;quot;You get the idea&amp;quot;}]}
&lt;/pre&gt;
&lt;p&gt;Specifically, this would just be an OAuth API that provides X/JRD data to authorized clients. The only extension is to add an &lt;code&gt;entity&lt;/code&gt; element to a resource descriptor link that includes the copy of the linked resource.&lt;/p&gt;
&lt;p&gt;Two things complicate a solution like this. First,  &lt;a href="http://cf.josephholsten.com/post/174607916/when-the-world-ends-the-only-things-left-will-be" title="When the world ends, the only things left will be cockroaches, rats, Keith Richards, and mangled text that has been escaped one-too-many or one-too-few times"&gt;encoding is hard&lt;/a&gt;. There are four main kinds of data that people will want to embed, JSON, XML, binary data, and everything else. XML and JSON are special because they could concievably be included inline in XRD and JRD respectively. And really, that&amp;#8217;s the ideal because no one likes having to pull out more than one parser just to deal with some data. I&amp;#8217;m not entirely sure how to handle this, but formats that have both XML and JSON would be very nice. So Portable Contacts gets extra points here.&lt;/p&gt;
&lt;p&gt;Binary and other data still make trouble though. What&amp;#8217;s the best way to signal that you&amp;#8217;re using Base64? Is it enough to just use the &lt;code&gt;type&lt;/code&gt; of the link? Only some implementation experience will really tell. Singpolyma has done some fancy things with data: URIs, so that may be a starting point for binary.&lt;/p&gt;
&lt;p&gt;The other issue is that web resources are more than just data. Good HTTP servers provide all sorts of metadata about when the resource was updated, how long to cache, &amp;#038;c. The simplest solution would be to just include the entire HTTP response as a string, but that&amp;#8217;s certainly more trouble than it&amp;#8217;s worth. &lt;a href="http://getcloudkit.com/rest-api.html"&gt;CloudKit&lt;/a&gt; handles this by tacking on &lt;code&gt;etag&lt;/code&gt; and &lt;code&gt;last_modified&lt;/code&gt; values. Seems like a sound blueprint to me.&lt;/p&gt;
&lt;p&gt;If OpenID adopts this sort of solution, it&amp;#8217;s not just good for OpenID users. Everything else that uses XRD would benefit. If you want to have standard data publicly available, you could have that on your public XRD, while more sensitive things would be available to clients you trust. And maybe you could finally start doing more with your web identity than just log in.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/V8xl5MF4wPE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2010/05/your-new-new-web-identity/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2010/05/your-new-new-web-identity/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2010/05/your-new-new-web-identity/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>josephholsten</name>
						<uri>http://josephholsten.com</uri>
					</author>
		<title type="html" />
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/libera-ideoj/~3/HdwFMj73R-U/" />
		<id>http://blog.josephholsten.com/?p=310</id>
		<updated>2010-05-24T12:47:16Z</updated>
		<published>2010-04-21T22:08:02Z</published>
		<category scheme="http://blog.josephholsten.com" term="Published" />		<summary type="html"><![CDATA[Walgreens: If I penned “I&#8217;m Joseph. Thank you for allowing me to serve you today.” onto a handwritten receipt for a client, it would be super creepy. That you write it in cheap register monospace on every single receipt doesn&#8217;t make it cool. It&#8217;s just soulless, institutionalized super creepy.]]></summary>
		<content type="html" xml:base="http://blog.josephholsten.com/2010/04/creepy-service/">&lt;p&gt;Walgreens:&lt;/p&gt;
&lt;p&gt;If I penned “I&amp;#8217;m Joseph. Thank you for allowing me to serve you today.” onto a handwritten receipt for a client, it would be super creepy. That you write it in cheap register monospace on every single receipt doesn&amp;#8217;t make it cool. It&amp;#8217;s just soulless, institutionalized super creepy.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/libera-ideoj/~4/HdwFMj73R-U" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.josephholsten.com/2010/04/creepy-service/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.josephholsten.com/2010/04/creepy-service/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.josephholsten.com/2010/04/creepy-service/</feedburner:origLink></entry>
	</feed>

