<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Dead Ink Vinyl</title>
	<atom:link href="http://blog.deadinkvinyl.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.deadinkvinyl.com</link>
	<description>Musings of David L Kinney</description>
	<pubDate>Wed, 05 Nov 2008 06:05:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Most important election</title>
		<link>http://blog.deadinkvinyl.com/2008/11/05/most-important-election/</link>
		<comments>http://blog.deadinkvinyl.com/2008/11/05/most-important-election/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 06:05:00 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Parenthood]]></category>

		<category><![CDATA[barackobama]]></category>

		<category><![CDATA[election]]></category>

		<category><![CDATA[election2008]]></category>

		<category><![CDATA[vote]]></category>

		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=164</guid>
		<description><![CDATA[Today I voted in the most important election of my life. Not because of the historic accomplishment of Barack Obama or the magnitude of the challenges facing my country, but because it was the first election after the birth of my daughter. This is the first election in which I voted for her future, not [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today I voted in the most important election of my life. Not because of the historic accomplishment of Barack Obama or the magnitude of the challenges facing my country, but because it was the first election after the birth of my daughter. This is the first election in which I voted for her future, not my own. And what an amazing future it will be.  </p>
Posted in Personal&nbsp;&nbsp;&nbsp;Tagged: barackobama, election, election2008, Parenthood, vote, voting&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=164&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/11/05/most-important-election/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>Hands-on with the new Apple laptops</title>
		<link>http://blog.deadinkvinyl.com/2008/10/19/hands-on-with-apple-laptops/</link>
		<comments>http://blog.deadinkvinyl.com/2008/10/19/hands-on-with-apple-laptops/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 16:34:07 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Review]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[handson]]></category>

		<category><![CDATA[laptop]]></category>

		<category><![CDATA[macbook]]></category>

		<category><![CDATA[macbookpro]]></category>

		<category><![CDATA[trackpad]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=161</guid>
		<description><![CDATA[I got to spend a few minutes with the new MacBook and MacBook Pro in the Oak Brook Apple Store on Saturday. Visually, the new laptops are stunning. When they are closed, they look sleek, yet rugged. When they are open, the screen is brilliant &#8212; crisp, with fantastic colors. The glass does have glare, [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I got to spend a few minutes with the new MacBook and MacBook Pro in the Oak Brook Apple Store on Saturday. Visually, the new laptops are stunning. When they are closed, they look sleek, yet rugged. When they are open, the screen is brilliant &#8212; crisp, with fantastic colors. The glass does have glare, but I was unable to gauge how bad it would be in practice. (In truth, I do very little work on my laptop outside of controlled &#8212; or controllable &#8212; environments, so the whole glare issue isn&#8217;t high on my list of concerns.) </p>
<p>My wife doesn&#8217;t like the black keyboard, but I pointed out that it matches the black border around the screen. I only performed a little typing on the keyboard, so I can&#8217;t report how well it would feel to use for extended coding or writing sessions. </p>
<p>The &#8220;trackpad-as-button&#8221; was far more intuitive to me than I expected. My reflex is still to press at the bottom of the trackpad where the button is located on my <span class="caps">MBP</span>. All of my existing mousing and clicking gestures worked flawlessly, so the migration would seem to be painless for existing Apple laptop users. I then played with clicking and click-dragging the new way, by just pressing my finger down in-place to click. This worked exactly as advertised and feels pretty natural. I believe that I would find it very intuitive if I were using an Apple laptop for the first time and did not have preexisting muscle memory for these operations. The new gestures enabled by the design feel far more ergonomic and comfortable, so I believe I will invest the time to retrain myself when I eventually get one of these laptops. </p>
Posted in Review, Uncategorized&nbsp;&nbsp;&nbsp;Tagged: apple, handson, laptop, macbook, macbookpro, Review, trackpad&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/161/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=161&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/10/19/hands-on-with-apple-laptops/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>Pattern for Success</title>
		<link>http://blog.deadinkvinyl.com/2008/10/12/pattern-for-success/</link>
		<comments>http://blog.deadinkvinyl.com/2008/10/12/pattern-for-success/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 16:43:15 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[inspiration]]></category>

		<category><![CDATA[keitholberman]]></category>

		<category><![CDATA[olbermann]]></category>

		<category><![CDATA[quotes]]></category>

		<category><![CDATA[roosevelt]]></category>

		<category><![CDATA[teddyroosevelt]]></category>

		<category><![CDATA[theodoreroosevelt]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=158</guid>
		<description><![CDATA[Daniel B. Honigman shared a bit of Sunday morning wisdom:

The world bursts at the seams with people ready to tell you that you&#8217;re not good enough. On occasion, some may be correct. But do not do their work for them. Seek any job; ask anyone out; pursue any goal. Don&#8217;t take it personally when they [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Daniel B. Honigman <a href="http://twitter.com/dan360man/statuses/956510259">shared</a> a bit of Sunday morning <a href="http://twitpic.com/fvkr">wisdom</a>:</p>
<blockquote>
<p>The world bursts at the seams with people ready to tell you that you&#8217;re not good enough. On occasion, some may be correct. But do not do their work for them. Seek any job; ask anyone out; pursue any goal. Don&#8217;t take it personally when they say &#8220;no&#8221; &#8212; they may not be smart enough to say &#8220;yes.&#8221; (Keith Olbermann)</p>
</blockquote>
<p>When I was younger, I believed that <code>success = capability + luck</code>. This implies that the more capable you have, the less luck your require to be successful. Since you cannot control luck, the rational path to success would be to build your capability. This is the reason parents send their children to college, right? Sure, there is some abstract notion of broadening horizons blah blah, but nobody pays $25,000+ a year (plus room and board) for &#8220;broadening horizons&#8221; &#8212; they pay $25,000+ a year so that their child will land a good first job. </p>
<p>Thus, an observation of successful people should indicate that the majority are exceptionally capable at their professions. But this reasoning has other consequences, too. If the role of luck is to be minimized, then failure is a reflection on the person, not the circumstances. Thus, failure is feared and the drive to avoid failure can easily overshadow the drive to be successful &#8212; and so we take the safe bets, work 9-5 jobs, take shelter in big companies, dread change, and avoid risk. <em>The mass of men lead lives of quiet desperation.</em></p>
<p>However, my observations of successful people &#8212; entrepreneurs in particular &#8212; indicate that greater part of success is simply <em>not fearing failure</em>. The role of luck is accepted and managed by trying again and again. </p>
<p>Keith Olbermann is right. And his advice is just a coffee-cup-length, modern regurgitation of the timeless insight eloquently made by Teddy Roosevelt:</p>
<blockquote>
<p>It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat. (April 13, 1910)</p>
</blockquote>
<p>All of us chooses to either be ruled by circumstance or to create our own. Each day, decide anew which is the right path for you. </p>
Posted in Personal&nbsp;&nbsp;&nbsp;Tagged: inspiration, keitholberman, olbermann, quotes, roosevelt, teddyroosevelt, theodoreroosevelt, twitter&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=158&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/10/12/pattern-for-success/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>TypePad and SquareSpace</title>
		<link>http://blog.deadinkvinyl.com/2008/10/11/typepad-and-squarespace/</link>
		<comments>http://blog.deadinkvinyl.com/2008/10/11/typepad-and-squarespace/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 02:51:27 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<category><![CDATA[Review]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[typepad]]></category>

		<category><![CDATA[squarespace]]></category>

		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=155</guid>
		<description><![CDATA[WordPress.com has started to tick me off this weekend. I&#8217;ve lost control over the widgets that appear in the left and right menus. I&#8217;m investigating alternative commercial blog hosting solutions. The top two contenders are TypePad and SquareSpace. 
Both offer paid hosting with domain mapping for less than $15 per month. I&#8217;ve signed up for [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>WordPress.com has started to tick me off this weekend. I&#8217;ve lost control over the widgets that appear in the left and right menus. I&#8217;m investigating alternative commercial blog hosting solutions. The top two contenders are <a href="http://www.typepad.com/">TypePad</a> and <a href="http://www.squarespace.com/">SquareSpace</a>. </p>
<p>Both offer paid hosting with domain mapping for less than $15 per month. I&#8217;ve signed up for the two week free trials on both sites. I&#8217;ve exported my WP blog, spent a couple of hours with <a href="http://java.sun.com/javaee/5/docs/tutorial/doc/bnbem.html">StAX</a> to clean up the output, and have successfully imported everything into both TP and SS. In both cases, I need to perform some manual tuning to get things the way I like them. </p>
<p>Quick summary of my thoughts so far:</p>
<ul>
<li>TypePad annoyed me a little by asking for my credit card number up front, whereas SquaredSpace doesn&#8217;t require it until I&#8217;ve made a commitment to join. </li>
<li>For my needs, TypePad is much less expensive ($8 versus $14).</li>
<li>TypePad is straightforward to use, but a bit painful. I need to mass-delete all 200+ of the custom &#8220;categories&#8221; it imported from WP and it requires a two-click process for each. Additionally, things are not quite laid out cleanly on the management side. Tabs within tabs kind of thing. </li>
<li>SquareSpace takes a radically different &#8212; and better &#8212; approach to content management. It threw me for a loop at first, but it&#8217;s great once I got a handle on its metaphors. Switching to SS from Blogger, WP, or TP is a bit like switching to a Mac from a PC. It&#8217;s a new, scary, and aggrevating environment until you understand it, then it&#8217;s obvious and elegant.</li>
<li>TypePad has an iPhone application already available. SquareSpace is still working on theirs.</li>
</ul>
Posted in Community, Review&nbsp;&nbsp;&nbsp;Tagged: blog, hosting, squarespace, typepad, wordpress&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/155/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=155&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/10/11/typepad-and-squarespace/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>XSL in Adobe AIR</title>
		<link>http://blog.deadinkvinyl.com/2008/10/09/xsl-in-adobe-air/</link>
		<comments>http://blog.deadinkvinyl.com/2008/10/09/xsl-in-adobe-air/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 05:22:46 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[HowTo]]></category>

		<category><![CDATA[adobe]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[actionscript]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[xml]]></category>

		<category><![CDATA[xsl]]></category>

		<category><![CDATA[xslt]]></category>

		<category><![CDATA[as3]]></category>

		<category><![CDATA[mikechambers]]></category>

		<category><![CDATA[brianriggs]]></category>

		<category><![CDATA[flacc]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[cpp]]></category>

		<category><![CDATA[xalan]]></category>

		<category><![CDATA[xalanc]]></category>

		<category><![CDATA[xerces]]></category>

		<category><![CDATA[xercesc]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=145</guid>
		<description><![CDATA[Brian Riggs shows us how to perform client-side XSL/XSLT in an AIR application. Thanks to Brian for shining light on this, and thanks to Mike Chambers for sharing the link on Twitter today. Brian&#8217;s post is from May, so many of you may have already seen it.
The solution Brian outlines requires JavaScript because the only [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Brian Riggs shows us <a href="http://blogs.adobe.com/briggs/2008/05/using_air_for_xslt_processing.html">how to perform client-side XSL/XSLT in an AIR application</a>. Thanks to Brian for shining light on this, and thanks to Mike Chambers for <a href="http://twitter.com/mesh/statuses/951840353">sharing the link</a> on Twitter today. Brian&#8217;s post is from May, so many of you may have already seen it.</p>
<p>The solution Brian outlines requires JavaScript because the only XSL toolkit AIR provides is inside of the WebKit HTML rendering engine. Consequently, AIR developers working with the Flash or Flex APIs will need to use an ActionScript-JavaScript bridge. Brian provides a nice code snippet showing how to create that bridge. Great, but still a kludge. </p>
<p>Unfortunately, XSL doesn&#8217;t seem to have made it into the <a href="http://livedocs.adobe.com/flex/gumbo/langref/">Gumbo API</a> for the next version of Flex and AIR. There is also no mention of XSL in Mike Chambers&#8217; September post <a href="http://www.mikechambers.com/blog/2008/09/11/adobe-air-15-cosmo-builds-now-in-flex-sdk-nightly-builds/">about AIR 1.5</a>. I have <em>not</em> had an opportunity to pull down a recent nightly build of the Flex trunk to verify that the ActionScript API for AIR continues to lack XSL support, but all indications are that XSL is not present. </p>
<p>A little bit of Googling indicates that I am not alone in desiring XSL capabilities in AIR that do not require a bridge to JavaScript. I know that XSL is not like the hot stuff that Adobe like to tout in its products (<acronym title="Online Analytical Processing">OLAP</acronym> only made it in because of its use in visualization), but it&#8217;s a real asset for enterprise developers. </p>
<p>I suspect that Adobe&#8217;s plan may be to leave out XSL&#8212;and a lot of other large-but-niche APIs&#8212;and let teams needing those capabilities include them with <a href="http://www.peterelst.com/blog/2008/10/04/what-is-flacc-all-about/">FlaCC</a>, the upcoming C/C++ to Flash byte code compiler. (More info about FlaCC, including links to slides and a hi-res presentation video is available <a href="http://www.peterelst.com/blog/2008/10/05/more-information-on-flacc/">here</a>). Specifically, for XSL, <a href="http://xml.apache.org/xalan-c/">Xalan</a> and <a href="http://xerces.apache.org/xerces-c/">Xerces</a> could be imported. In truth, I find this to be an attractive solution, in part because I&#8217;m sure someone else will go through the hassle of compiling the popular C/C++ libraries to SWCs for me&#8212;I will only need drop those into my project.</p>
<p>However, if you are an AIR developer who cannot wait for FlaCC or want to see XSL make it into AIR&#8217;s officialy ActionScript API, consider <a href="http://www.adobe.com/go/wish">submitting an enhancement request</a>. </p>
Posted in Development, HowTo&nbsp;&nbsp;&nbsp;Tagged: actionscript, adobe, air, as3, brianriggs, c, cpp, flacc, javascript, mikechambers, xalan, xalanc, xerces, xercesc, xml, xsl, xslt&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=145&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/10/09/xsl-in-adobe-air/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>Flex 3 addChild() and initialize()</title>
		<link>http://blog.deadinkvinyl.com/2008/10/05/flex-3-addchild-and-initialize/</link>
		<comments>http://blog.deadinkvinyl.com/2008/10/05/flex-3-addchild-and-initialize/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 05:21:22 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[addchild]]></category>

		<category><![CDATA[component]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[flexauthority]]></category>

		<category><![CDATA[initialize]]></category>

		<category><![CDATA[lifecycle]]></category>

		<category><![CDATA[ooad]]></category>

		<category><![CDATA[oop]]></category>

		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=136</guid>
		<description><![CDATA[Okay, I&#8217;ve walked through all of the code in UIComponent and Container to work this out, so I&#8217;m going to share it: the sequence of operations when addChild(child) is invoked on a container and child extends UIComponent. 
Since the primary use for this knowledge is managing the initialization portion of the component life cycle, I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Okay, I&#8217;ve walked through all of the code in <a href="http://opensource.adobe.com/svn/opensource/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/UIComponent.as">UIComponent</a> and <a href="http://opensource.adobe.com/svn/opensource/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/Container.as">Container</a> to work this out, so I&#8217;m going to share it: the sequence of operations when <code>addChild(child)</code> is invoked on a container and <code>child</code> extends UIComponent. </p>
<p>Since the primary use for this knowledge is managing the initialization portion of the component life cycle, I&#8217;ve highlighted the lines where your component may extend the behavior of UIComponent to perform its own operations. </p>
<p>The <code>addChild()</code> code bounces around through a lot of the <code>Container</code> class hierarchy, so I&#8217;ve included the class name with the method calls inside the parent&#8217;s instance so that you know where in the class hierarchy things get handled. </p>
<p>For simplicity, I skip showing the parameters to method calls and I don&#8217;t expand some operations (depicted by <em>italicized</em> text).</p>
<ol>
<li>Container.addChild()
<ol>
<li>calls Container.addChildAt()
<ol>
<li><em>removes child&#8217;s previous parent, if present</em></li>
<li>calls Container.addingChild()
<ol>
<li>calls UIComponent.addingChild()
<ol>
<li><span style="background-color:#ff8;">calls child.parentChanged()</span></li>
<li>performs style setup on child</li>
<li><span style="background-color:#ff8;">calls child.stylesInitialized()</span></li>
</ol>
</li>
<li><em>invalidates size and display list of parent</em></li>
</ol>
</li>
<li>calls UIComponent.$addChildAt()
<ol>
<li>calls Sprite.addChild()</li>
</ol>
</li>
<li>calls Container.childAdded()
<ol>
<li>parent dispatches &#8220;childrenChanged&#8221;</li>
<li>parent dispatches &#8220;childAdd&#8221;</li>
<li>calls child.dispatchEvent()
<ol>
<li><span style="background-color:#ff8;">child dispatches &#8220;add&#8221;</span></li>
</ol>
</li>
<li>calls UIComponent.childAdded()
<ol>
<li><span style="background-color:#ff8;">calls child.initialize()</span>
<ol>
<li><span style="background-color:#ff8;">dispatches &#8220;preinitialize&#8221;</span></li>
<li><span style="background-color:#ff8;">calls child.createChildren()</span></li>
<li><span style="background-color:#ff8;">calls child.childrenCreated()</span>
<ol>
<li><em>invalidates properties, size, and display list of child</em></li>
</ol>
</li>
<li><span style="background-color:#ff8;">calls child.initializeAccessibility()</span></li>
<li><span style="background-color:#ff8;">calls child.initializationComplete()</span>
<ol>
<li>sets processedDescriptors = true
<ol>
<li><span style="background-color:#ff8;">dispatches &#8220;initialize&#8221;</span></li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
<p>There you have it: the order of operations when you invoke Container.addChild(). I hope this proves useful. </p>
Posted in Development&nbsp;&nbsp;&nbsp;Tagged: addchild, component, Development, flex, flexauthority, initialize, lifecycle, ooad, oop, opensource&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=136&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/10/05/flex-3-addchild-and-initialize/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>Things I learned about myself this week</title>
		<link>http://blog.deadinkvinyl.com/2008/09/27/things-i-learned-about-myself-this-week/</link>
		<comments>http://blog.deadinkvinyl.com/2008/09/27/things-i-learned-about-myself-this-week/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 14:43:15 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[baby]]></category>

		<category><![CDATA[career]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[selfmotivation]]></category>

		<category><![CDATA[userexperience]]></category>

		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=133</guid>
		<description><![CDATA[
I have grown so unhappy programming Java that I&#8217;m willing to turn away opportunities to advance my career from interested employers at amazing companies who want me to continue programming in Java. 
I dislike JavaScript more than Java, but find that because I&#8217;m using JavaScript to directly enhance the user&#8217;s experience, it&#8217;s a smidgen more [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><ul>
<li>I have grown so unhappy programming Java that I&#8217;m willing to turn away opportunities to advance my career from interested employers at amazing companies who want me to continue programming in Java. </li>
<li>I dislike JavaScript more than Java, but find that because I&#8217;m using JavaScript to directly enhance the user&#8217;s experience, it&#8217;s a smidgen more palatable. </li>
<li>I find that watching my baby girl identify goals (&#8220;I want that toy over there&#8221;), identify the hurdles in achieving those goals (&#8220;that&#8217;s too far away&#8221;), and address those hurdles (&#8220;pulling on the baby blanket moves the toy closer&#8221;) is far more rewarding than anything I&#8217;ve done in my professional life. </li>
<li>I can lose weight without being miserable.</li>
</ul>
Posted in Personal&nbsp;&nbsp;&nbsp;Tagged: baby, career, java, javascript, selfmotivation, userexperience, ux&nbsp;&nbsp;&nbsp;<a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/133/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=133&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/09/27/things-i-learned-about-myself-this-week/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone OpenGL ES [UPDATED]</title>
		<link>http://blog.deadinkvinyl.com/2008/08/06/iphone-opengl-es/</link>
		<comments>http://blog.deadinkvinyl.com/2008/08/06/iphone-opengl-es/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 02:15:50 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Conference]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[3d]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[barcamp]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[iphonedevcamp]]></category>

		<category><![CDATA[opengl]]></category>

		<category><![CDATA[opengles]]></category>

		<category><![CDATA[opensource]]></category>

		<category><![CDATA[sourcecode]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=129</guid>
		<description><![CDATA[Brad Larson of Sunset Lake Software and creator of Molecules gave an excellent presentation about OpenGL ES development for the iPhone at iPhoneDevCamp Chicago this past weekend. Today, he posted the non-NDA-breaking highlights of his presentation online. It&#8217;s an excellent resource for anyone starting out with OpenGL development. I find it very inspiring that someone [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.sunsetlakesoftware.com/about">Brad Larson</a> of <a href="http://www.sunsetlakesoftware.com/">Sunset Lake Software</a> and creator of <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284943090&#38;mt=8">Molecules</a> gave an excellent presentation about OpenGL ES development for the iPhone at <a href="http://iphonedevcampchicago.pbwiki.com/">iPhoneDevCamp Chicago</a> this past weekend. Today, he posted the non-NDA-breaking <a href="http://deadinkvinyl.wordpress.com/wp-admin/post-new.php">highlights of his presentation</a> online. It&#8217;s an excellent resource for anyone starting out with OpenGL development. I find it very inspiring that someone can go from &#8220;I know nothing about OpenGL&#8221; to finished application in three weeks working only nights and weekends. </p>
<p><strong>UPDATE:</strong> With the NDA lifted, Brad has generously <a href="http://sunsetlakesoftware.com/2008/10/02/molecules-source-code-now-available">released the source code</a> for Molecules!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/deadinkvinyl.wordpress.com/129/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/deadinkvinyl.wordpress.com/129/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=129&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/08/06/iphone-opengl-es/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>Rules for Flash Indexing</title>
		<link>http://blog.deadinkvinyl.com/2008/07/14/rules-for-flash-indexing/</link>
		<comments>http://blog.deadinkvinyl.com/2008/07/14/rules-for-flash-indexing/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 04:33:04 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[blogsearch]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[fleximagically]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[rpc]]></category>

		<category><![CDATA[ryanstewart]]></category>

		<category><![CDATA[searchable]]></category>

		<category><![CDATA[seo]]></category>

		<category><![CDATA[soap]]></category>

		<category><![CDATA[zedianet]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=126</guid>
		<description><![CDATA[I&#8217;ve been thinking a lot about the Ryan Stewart&#8217;s Flex SEO contest (also known as the &#8220;Fleximagically Searchable&#8221; contest). As I posted earlier, I believe the best and correct method for &#8220;making Flash indexable&#8221; is not to index Flash at all, but rather to index the data. I spent a lot of time thinking about [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve been thinking a lot about the Ryan Stewart&#8217;s <a href="http://blog.digitalbackcountry.com/?p=1478">Flex SEO contest</a> (also known as the &#8220;Fleximagically Searchable&#8221; contest). As <a href="http://blog.deadinkvinyl.com/2008/07/08/a-thought-about-flash-indexing/">I posted earlier</a>, I believe the best and correct method for &#8220;making Flash indexable&#8221; is not to index Flash at all, but rather to index the data. I spent a lot of time thinking about how I could get Google to index my content but link to my Flex application and I finally <a href="http://www.google.com/help/about_blogsearch.html">found a mechanism</a> to do this! However, upon very close reading of Ryan&#8217;s rules I see that <a href="http://blog.digitalbackcountry.com/?p=1478#comment-698675">he specifically does not want this solution</a>&#8212;he wants the content to be indexed by Googlebot &#8220;interacting&#8221; with the application. </p>
<p><em>That&#8217;s just silly.</em></p>
<p>For data-driven sites&#8212;which would be most Web sites with Flex front-ends&#8212;this is an completely artificial restriction. The only place where this would make any sense is for applications that do not dynamically <em>load</em> content, but rather dynamically <em>generate</em> content, such as for client-side mash-ups. Additionally, <a href="http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html">according to Google</a> &#8220;if your Flash file loads an HTML file, an XML file, another SWF file, etc., Google will separately index that resource, but it will not yet be considered to be part of the content in your Flash file.&#8221; That implies that dynamically loaded content must be RPC-based (and binary?) to be considered part of your SWF (as Ryan Stewart desires) instead of a separate resource. <em>Yuck!</em></p>
<p>I will continue with my planned solution because demonstrating the technique and learning how well it works for SEO will provide valuable information for the community. </p>
<p>Finally, I&#8217;d like to announce that I&#8217;ve purchased the domain <a href="http://www.fleximagicallysearchable.com/">fleximagicallysearchable.com</a> for this contest<sup><a href="#fn1">1</a></sup>. There is nothing there now, but I would like to turn it into a blog or user forum for discussing Flex SEO strategies and make it a resource that lives beyond this contest, continuing to be useful in the future by providing tutorials and covering the emerging best practices for Flash and Flex SEO. </p>
<p><sup>1</sup> Not to be confused with <a href="http://fleximagically-searchable.com/">fleximagically-searchable.com</a>, which is <a href="http://blog.digitalbackcountry.com/?p=1478#comment-698674">owned by zedia.net</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/deadinkvinyl.wordpress.com/126/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/deadinkvinyl.wordpress.com/126/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=126&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/07/14/rules-for-flash-indexing/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
		<item>
		<title>CouchDB on MacOSX Leopard</title>
		<link>http://blog.deadinkvinyl.com/2008/07/12/couchdb-on-macosx-leopard/</link>
		<comments>http://blog.deadinkvinyl.com/2008/07/12/couchdb-on-macosx-leopard/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 02:39:13 +0000</pubDate>
		<dc:creator>dlkinney</dc:creator>
		
		<category><![CDATA[HowTo]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[couchdb]]></category>

		<category><![CDATA[daemon]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[db]]></category>

		<category><![CDATA[documentoriented]]></category>

		<category><![CDATA[dscl]]></category>

		<category><![CDATA[launchctl]]></category>

		<category><![CDATA[leopard]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[service]]></category>

		<category><![CDATA[sudo]]></category>

		<guid isPermaLink="false">http://deadinkvinyl.wordpress.com/?p=125</guid>
		<description><![CDATA[I got CouchDB up and running as a service on my MBP OSX Leopard this past Monday. It wasn&#8217;t as straight-forward as I&#8217;d hoped, so I thought I&#8217;d share my process for the benefit of others.
Installing CouchDB
I installed CouchDB from source. This requires the Leopard development tools (Xcode) and MacPorts. I expect all developers to [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I got CouchDB up and running as a service on my MBP OSX Leopard this past Monday. It wasn&#8217;t as straight-forward as I&#8217;d hoped, so I thought I&#8217;d share my process for the benefit of others.</p>
<h3>Installing CouchDB</h3>
<p>I installed CouchDB from source. This requires the Leopard development tools (Xcode) and <a href="http://www.macports.org/">MacPorts</a>. I expect all developers to have Xcode installed and most developers to have MacPorts installed, so I won&#8217;t detail those steps here. </p>
<p>First, install CouchDB&#8217;s dependencies using MacPorts:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>sudo port install icu erlang spidermonkey</code></pre>
<p><a href="http://incubator.apache.org/couchdb/downloads.html">Download CouchDB</a> and extract it. This is standard configure, make, make install territory here:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>./configure
make &#38;&#38; sudo make install</code></pre>
<p>Wasn&#8217;t that easy?</p>
<h3>Creating a couchdb System Account</h3>
<p>Find a user number that is available. To see a list of what numbers are already in use, run:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>dscl . -list /Users UniqueID | awk '{print $2}' | sort -n</code></pre>
<p>Now find a group number that is available.  To see a list of what numbers are already in use, run:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>dscl . -list /Groups PrimaryGroupID | awk '{print $2}' | sort -n</code></pre>
<p>On my system, number 103 was available for both a user number and a group number. The rest of this article assumes you are using 103 as well. </p>
<p>The following commands create the group and the user and set the user&#8217;s home directory to the CouchDB lib folder. </p>
<pre style="background-color:#edf5fa;padding:1em;"><code>sudo dseditgroup -o create -i 103 -r "CouchDB Users" couchdb
sudu dscl . -create /Users/couchdb
sudu dscl . -create /Users/couchdb UniqueID 103
sudu dscl . -create /Users/couchdb UserShell /bin/bash
sudu dscl . -create /Users/couchdb RealName "CouchDB Administrator"
sudu dscl . -create /Users/couchdb NFSHomeDirectory \
        /usr/local/var/lib/couchdb
sudu dscl . -create /Users/couchdb PrimaryGroupID 103
sudu dscl . -create /Users/couchdb Password *</code></pre>
<p>Finally, we give the couchdb user ownership of the CouchDB lib and log directories:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>sudo chown -R couchdb:couchdb /usr/local/var/&lt;strong&gt;lib&lt;/strong&gt;/couchdb
sudo chown -R couchdb:couchdb /usr/local/var/&lt;strong&gt;log&lt;/strong&gt;/couchdb</code></pre>
<p><strong>DONE!</strong> Now you can launch CouchDB as the couchdb user instead of root. </p>
<pre style="background-color:#edf5fa;padding:1em;"><code>sudo -u couchdb couchdb</code></pre>
<h3>Running as a Service</h3>
<p>To control CouchDB using launchctl, I needed to add the appropriate PATH information to CouchDB&#8217;s Launch Daemon plist so that gawk is found. Unfortunately, I couldn&#8217;t find a solution to edit the plist in-place as a privileged user, so I copied the file to the /var/tmp directory without root privileges so that I could update the copy. </p>
<p>Creating a copy of the plist and opening it for editing is done by:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>cp /usr/local/Library/LaunchDaemons/org.apache.couchdb.plist \
        /var/tmp/org.apache.couchdb.plist
open /var/tmp/org.apache.couchdb.plist</code></pre>
<p>In the Property List Editor that opens, follow this steps:</p>
<ol>
<li>Open Root &rarr; EnvironmentVariables </li>
<li>Click on Add Child</li>
<li><strong>Name:</strong> PATH</li>
<li><strong>Value:</strong> /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin</li>
<li>File &rarr; Save</li>
<li>Quit Property List Editor</li>
</ol>
<p>Then copy the updated plist over the original plist:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>sudo cp /var/tmp/org.apache.couchdb.plist \
        /usr/local/Library/LaunchDaemons/org.apache.couchdb.plist </code></pre>
<p>Now CouchDB can be controlled and monitored by the standard Leopard daemon manager:</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>sudo launchctl load \
        /usr/local/Library/LaunchDaemons/org.apache.couchdb.plist </code></pre>
<h3>Launch CouchDB on Startup</h3>
<p>To automatically launch on start up, run</p>
<pre style="background-color:#edf5fa;padding:1em;"><code>sudo ln -s /usr/local/Library/LaunchDaemons/org.apache.couchdb.plist \
        /Library/LaunchDaemons/org.apache.couchdb.plist</code></pre>
<p><strong>Congratulations!</strong> You have CouchDB running as a system service that will start when you boot your Mac. Let the fun commence.  </p>
<h3>I&#8217;d Like to Thank the Academy&#8230;</h3>
<p>I&#8217;d like to thank the following sites and resources for providing me enough information to piece together the process:</p>
<ul>
<li><a href="http://svn.apache.org/repos/asf/incubator/couchdb/trunk/README">CouchDB Source Code: README</a></li>
<li><a href="http://www.sysadminschronicles.com/articles/2007/10/19/creating_a_system_account_in">SysAdmin&#8217;s Chronicles: Creating a System Account in Mac OS X 10.5 Leopard</a></li>
<li><a href="http://evang.eli.st/blog/2007/10/28/installing-postgres-8-2-on-leopard-includes-system-account" title="includes system account!">evang.eli.st: Installing Postgres 8.2 on Leopard</a></li>
</ul>
<p>I particularly recommend the evang.eli.st article, as it explains the <code>dscl</code> command, which may be an unfamiliar account management tool.</p>
<p>I should point out that evang.eli.st also has a <a href="http://evang.eli.st/blog/2007/9/3/building-and-installing-couchdb-on-os-x">complete write-up</a> on how to install CouchDB on OSX. That walk-through is almost a year old, though, and entails editing the Makefile&#8212;which doesn&#8217;t sit well with me. However, where Leopard departs from standard UNIX behavior, I cease being an aficionado, so his tweaks may be important in ways I haven&#8217;t yet discovered.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/deadinkvinyl.wordpress.com/125/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/deadinkvinyl.wordpress.com/125/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/deadinkvinyl.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/deadinkvinyl.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/deadinkvinyl.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/deadinkvinyl.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/deadinkvinyl.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/deadinkvinyl.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/deadinkvinyl.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/deadinkvinyl.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/deadinkvinyl.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/deadinkvinyl.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.deadinkvinyl.com&blog=2908484&post=125&subd=deadinkvinyl&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.deadinkvinyl.com/2008/07/12/couchdb-on-macosx-leopard/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dlkinney-128.jpg" medium="image">
			<media:title type="html">David</media:title>
		</media:content>
	</item>
	</channel>
</rss>