<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>Cubicle Muses</title>
 <subtitle>Combined Feed for Cubicle Muses and Peregrinari</subtitle>
 
 <link href="http://cubiclemuses.com" />
 <updated>2008-07-21T03:55:12Z</updated>
 <author>
   <name>J Aaron Farr</name>
 </author>
 <author>
   <name>Jennifer Farr</name>
 </author>
 <author>
   <name>William Taysom</name>
 </author>
 <id>http://cubiclemuses.com/feed</id>

 
  
  <link rel="self" href="http://feeds.feedburner.com/cubiclemuses-combined" type="application/atom+xml" /><entry>
    <title>2009 Open Source China Summit</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/IXL-SVV0Uk8/" />
    <id>http://cubiclemuses.com/cm/articles/2009/06/30/2009-open-source-china-summit/</id>
    <updated>2009-06-30T09:41:03Z</updated>
    <author>
      <name>J Aaron Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>This was my third year attending the <a href="http://www.economist.com/displayStory.cfm?story_id=13740181">Open Source China, Open Source
World Summit</a>.  The schedule was similar - a day packed of 20
minutes “keynotes” followed by a half-day round table (which I had to
miss this year).  </p>
      <p>Despite being a regular attendee and occasional speaker, I have mixed
feelings about the summit.  Let’s be clear, it’s not a technical
event.  The speakers include CTOs and Directors of IBM, Sun, Intel,
Google, Red Flag, and so on.  Even Microsoft was there this year,
demoing Windows 7 of all things.</p>

<p>The intended topic was open source for mobile and netbook computing,
but somehow a fair bit of cloud computing made its way in too.  Some
of the talks were great.  I think Mark Shuttleworth’s point about
regularly scheduled releases is important.  Others were little more
than marketing show and tell.</p>

<p>Despite all that, I do think the summit has value.  It’s useful to get
these people together to compare notes, network and discuss
strategies.  Open source has <a href="http://www.economist.com/displayStory.cfm?story_id=13740181">grown up</a> and this is part of that
world, like it or not.  And for those wanting a quick introduction
into the state of open source in China, the summit’s worth attending
at least once.</p>

<p>For those looking for the technical side of open source in China,
there’s no better starting point than the <a href="http://www.beijinglug.org">Beijing Linux User
Group</a>.  The BLUG puts most other user groups to shame and has
become an incredible resource over the last few years.  Seriously,
it’s worth scheduling your visit to Beijing around one of their
events.</p>

<p>One final note: a few of us at Apache are hoping to run another event
in Beijing (and maybe Shanghai) again this year, likely at the end of
November.  Last year we did a single day of <a href="http://us.apachecon.com/c/accn2008">technical talks</a>
followed by a single day <a href="http://www.barcamp.org/BarCampBeijing">barcamp</a>.  We’re putting together ideas
of what to do now.  If we do another single day of talks, then I think
we need to be a bit more focused on which projects or technologies to
highlight.  It’s hard to cover much in just a single day.  Would half
or full day training sessions be more interesting?</p>

<p>I’d also like to see an even bigger BarCamp in Beijing this year.  I’m
really surprised that a Barcamp community hasn’t emerged out of
Beijing.  Or maybe it’s just doing a really good job of hiding.
Whatever the case, if you’d like to be involved in either an Apache
developer event in Beijing or the 2009 Beijing BarCamp, please send me
an [email][mailto:farra@apache.org].</p>

<h3>2009 Open Source China, Open Source World Summit Schedule</h3>

<p>I didn’t see the schedule published anywhere, so for the sake of
posterity, here was the first day.  Might help someone decide if
they’d like to attend in the future:</p>

<ul>
<li>Mobile Internet and Open Terminal, Prof Lu Shouqun, Chairman of COPU</li>
<li>The State of the Linux Ecosystem and Its Opportunity, Jim Zemlin, Director of Linux Foundation</li>
<li>An untitled talk by Mark Shuttleworth, Ubuntu founder</li>
<li>Community Matters, Louis Suarex-Potts, OpenOffice.org President</li>
<li>Cloud Computing and Smarter Planet, Dr. Thomas Li, CTO of IBM GCG</li>
<li>Create the Mobile Internet Future, Dr. Bob Lian, GM of Intel (AP) R&amp;D</li>
<li>Open Source Chances and Challenges for Nokia, Gunther Kottzieper, Director Open Source for Nokia</li>
<li>Android Platform, James Su, Google</li>
<li>Status of OSS and the Role of Public Services Platform, Dr. Qiu Shanqin, Director CSIP</li>
<li>Open Source Cloud Computing, Andrew Hu, President of Red Hat Greater China</li>
<li>Promoting OSS by Innvocation and Application, Han Nanping, GM of China Standard Software Co.</li>
<li>Increate Efficiency with Open Source, Jia Dong, CEO of Red Flag Software</li>
<li>Open Cloud Computing Platform, James Bai, Director Open Source Centre Sun Micro (China)</li>
<li>OSS Represents the Direction of the Service, Hu Caiyang, GM Red Flag Chinese 2000 Software</li>
<li>Openness at Microsoft, Dr. Sean Zhang, CTO Microsoft Greater China Region</li>
<li>Open Source Work of the Daoli Project, Dr, Mao Wenbo, Director of EMC Research China</li>
<li>Cloud Computing and IBM Cloud Offerings, Tian Yong, IBM Open Partnership Center</li>
<li>Moblin: The Open Source Mobile Computing Platform, Dr. Elton Yang, Engineering Director of Intel OTC (China)</li>
</ul>
      <hr />
      <div class="entry-info">
        <em>Written by J Aaron Farr on Tuesday, June 30, 2009 for <a href="http://cubiclemuses.com/cm">Cubicle Muses</a>. <a href="/cm/articles/2009/06/30/2009-open-source-china-summit/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/IXL-SVV0Uk8" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/cm/articles/2009/06/30/2009-open-source-china-summit/</feedburner:origLink></entry>
  
  <entry>
    <title>Packing up, Moving out</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/PLKVRC_giA8/" />
    <id>http://cubiclemuses.com/pg/articles/2009/06/28/packing-up-moving-out/</id>
    <updated>2009-06-29T09:46:39Z</updated>
    <author>
      <name>Jennifer Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>I’ve got three more nights in Hong Kong, and only one with Aaron.  My happy hacker is in Beijing right now, oiling the gears on his networking machine.  And so the world turns.</p>
      <p>My younger brother, Joe, just left us after a comfortable five-week visit.  Joe flew west as Aaron headed north today.  And I stay here to consolidate, pack, store, and get sentimental with memories.</p>


	<p>What I won’t miss about my life in Hong Kong:</p>


	<ol>
	<li>mosquitoes</li>
		<li>95 percent humidity</li>
		<li>personal space boundaries (or lack there of) in public areas</li>
		<li>grumpy faces and the general gravity toward work, work, work</li>
		<li>the air that drifts from China</li>
	</ol>


	<p>What I will miss:</p>


	<ol>
	<li>using my feet (not to push the gas pedal)</li>
		<li>healthy food choices and juice shops</li>
		<li>Minda</li>
		<li>awesome fashion</li>
		<li>foreign accents</li>
		<li>the most amazing city skyline in the world</li>
		<li>markets</li>
		<li>the ten minute walk to the beach</li>
		<li>the ability to say “I live on a tropical island in Hong Kong”</li>
	</ol>


	<p>I’m astounded that my lists have weighed out as they have, considering my general grumpiness toward Hong Kong.  I’m just full of surprises.  And here’s to hoping that the next few days will be without surprises and neatly packed up and put away.  I just may be coming back in a half year.  And until then, we have a nice British guy subletting our place whose coming from <a href="http://en.wikipedia.org/wiki/Brunei">Brunei,</a> a country still run by a sultan.  What a world we live in.</p>
      <hr />
      <div class="entry-info">
        <em>Written by Jennifer Farr on Sunday, June 28, 2009 for <a href="http://cubiclemuses.com/pg">Peregrinari</a>. <a href="/pg/articles/2009/06/28/packing-up-moving-out/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/PLKVRC_giA8" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/pg/articles/2009/06/28/packing-up-moving-out/</feedburner:origLink></entry>
  
  <entry>
    <title>Rent our Lamma Flat</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/uf2s9pzCxIQ/" />
    <id>http://cubiclemuses.com/pg/articles/2009/06/15/rent-our-lamma-flat/</id>
    <updated>2009-06-15T11:47:40Z</updated>
    <author>
      <name>J Aaron Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>Our <a href="http://cubiclemuses.com/pg/articles/2009/06/11/always-something-new/">extended holiday</a> away from Hong Kong allows us to offer some lucky person or two the chance to rent our flat on <a href="http://www.lamma.com.hk/">Lamma Island</a>.  The apartment will be available for up to <em>6 months</em> starting in July at HK$7,000 per month and comes fully furnished.  Located in quiet Tai Wan Old Village, the apartment is approximately half-way between the Yung Shue Wan ferry pier and the public beach (<a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;ll=22.224475,114.116278&amp;spn=0.015116,0.01826&amp;t=h&amp;z=16&amp;msid=113096511113732545963.00046c61650c3392f5d43">see map</a>).  With three bedrooms, it’s perfect for a small family.</p>
      <p><a href="http://www.flickr.com/photos/jaaronfarr/667156148/" title="Home Sweet Home by jaaron, on Flickr"><img src="http://farm2.static.flickr.com/1186/667156148_bd193ac6e4_m.jpg" width="240" height="160" alt="Home Sweet Home" style="float:right;" /></a></p>

<p><strong>Apartment Features</strong></p>

<ul>
<li>700 square feet</li>
<li>1st floor (nice families above and below)</li>
<li>3 bedrooms: 2 double beds, one single bed</li>
<li>1 bathroom with tub</li>
<li>Balcony with green view</li>
<li>Utilities setup including internet (wifi router installed)</li>
<li>Fully furnished including:
<ul>
<li>3 beds</li>
<li>Sofa</li>
<li>Dining table</li>
<li>Bookshelves and closets</li>
<li>Kitchen cookery, dishes, fridge, etc.</li>
<li>Office desk and more</li>
</ul></li>
</ul>

<p>We’ve really enjoyed living here and know you will too!  Please email us at <a href="mailto:lamma@cubiclemuses.com">lamma@cubiclemuses.com</a> for more info.</p>
      <hr />
      <div class="entry-info">
        <em>Written by J Aaron Farr on Monday, June 15, 2009 for <a href="http://cubiclemuses.com/pg">Peregrinari</a>. <a href="/pg/articles/2009/06/15/rent-our-lamma-flat/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/uf2s9pzCxIQ" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/pg/articles/2009/06/15/rent-our-lamma-flat/</feedburner:origLink></entry>
  
  <entry>
    <title>Always Something New</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/6mHc4Yjj81A/" />
    <id>http://cubiclemuses.com/pg/articles/2009/06/11/always-something-new/</id>
    <updated>2009-06-11T16:55:25Z</updated>
    <author>
      <name>Jennifer Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>Dreams, schemes, and flying it seems… that’s what’s in store for the Farr family in these next six months.</p>
      <h3>Dreams</h3>


	<p>Indie Arcade has been Aaron and William’s startup dream.  In short, Indie Arcade is online software that allows beginners as well as programming whizzes to create and share games. The duo have been working off and on for a few years, though something has always stalled their dream of 100% focus to complete the project and put it on the market.  However, recently they’ve seen some promising developments which may finally allow them to put full effort into the project.</p>


	<h3>Schemes</h3>


	<p>With dreaming comes scheming and the inevitable shuffling of players.  For sundry reasons, Aaron needs to work on Indie Arcade from the industrious Chinese city of Guangzhou, which is a two hour train ride north of Hong Kong.  Just last week he secured the fabled six month multiple entry business visa.  His crew of masterminds will be coding in Guangzhou in between prayers for Red Bull to <a href="http://news.yahoo.com/s/afp/20090602/bs_afp/hongkongaustriacrimedrugsdrinkredbull">return to stores.</a>  All the chess pieces are quickly mobilizing to ensure a final shot at startup stardom.</p>


	<h3>Flying it seems</h3>


	<p>Meanwhile, Maeli and I have been planning a summer visit to the US.  This was long in the works and still part of the master plan.  However, my summer in the States is transforming into a half-year in the States as I purchase one way tickets.  Guangzhou, with all its fast paced wheels and deals may be ideal for starving startup hackers, but it’s not my vision of paradise.  Aaron needs to execute and I need a break from Asia.  So we’ll be staring at each other across the Pacific for a few months until Aaron can make it back to the US himself later this year.</p>


	<h3>Further adventures</h3>


	<p>Not ones to sit around and watch reruns, Maeli and I are filling our calendar with new adventures.  We’re considering a 70 mile backpacking trip across the <a href="http://www.shol.com/featheredprop/lhht_info.htm">Laurel Highland Ridge Trail</a> in Pennsylvania in autumn.  We also want to try our hand as <a href="http://www.wwoof.org">WWOOFers.</a>  Of course, Aaron threatens to crash the party and make a few trips back to the US so we don’t forget his face completely.  If all goes to plan, we should be together in the US for the holidays and then making the trip back to Asia together in early 2010.</p>


	<p>Of course, there is always the possibility of changing everything.  The smog of China may appeal to me after a few months without my happy hacker.  Time will tell.  Dreams will persist.  And scheming is always part of the journey, driving our adventures.</p>
      <hr />
      <div class="entry-info">
        <em>Written by Jennifer Farr on Thursday, June 11, 2009 for <a href="http://cubiclemuses.com/pg">Peregrinari</a>. <a href="/pg/articles/2009/06/11/always-something-new/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/6mHc4Yjj81A" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/pg/articles/2009/06/11/always-something-new/</feedburner:origLink></entry>
  
  <entry>
    <title>Where I Put Stuff</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/zrYGlKifWek/" />
    <id>http://cubiclemuses.com/cm/articles/2009/05/24/where-i-put-stuff/</id>
    <updated>2009-05-24T17:04:25Z</updated>
    <author>
      <name>J Aaron Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>Over this weekend I found myself searching for a particular bit of data that I knew I had, well, somewhere.  This prompted me to clean up some of my files and do some organizing.  Since I always like learning how others solve these sort of problems, I figured I’d share where I put my digital stuff.</p>
      <h3>Organize by type of information</h3>

<p>Where I put things depends on how I intend to use it.  Do I need to share the data regularly?  Do I just need to archive it?  With that in mind, I divide up my stuff into the following categories and I try to keep the data in one place per category.</p>

<h4>To Do Lists</h4>

<p>I use the <a href="http://orgmode.org/">emacs org-mode</a> to keep track of all my lists be it personal, work, or whatever.</p>

<h4>Projects</h4>

<p>If I have to share the information with others, then I tend to use a <a href="http://basecamphq.com/">Basecamp project</a>.  I’m often tempted to use <a href="http://sites.google.com/">Google Sites</a> and if I weren’t so invested in Basecamp, I might migrate.</p>

<p>If code is involved, then I use my private subversion repository for closed source code.  For open source code, I have stuff in Apache, GitHub and Google Code repositories and that’s pretty much my order of preference too.</p>

<p>I currently don’t have a good system for personal projects.  I’ve used Basecamp projects, Google Sites, <a href="http://backpackit.com/">Backpack</a>, personal wikis and other online solutions.  I’ve tried to keep everything in org-mode and subversion.  I’ve also considered products like <a href="http://flyingmeat.com/voodoopad/">VoodooPad</a> and <a href="http://www.devon-technologies.com/products/devonthink/">DevonThink</a>.  This is the messiest part of my digital space and I’d be happy to hear what works for others.</p>

<h4>Files</h4>

<p>I use an sftp account for important backups and file sharing.  I’ve thought about using <a href="http://www.getdropbox.com/">Dropbox</a> or <a href="http://www.zumodrive.com/">Zumodrive</a>, but considering how much space I use, I’m sticking with sftp for now.</p>

<p>Otherwise, everything is just thrown into my <code>Documents</code> folder.  There’s a small bit of organization there, but mostly I rely on desktop search to help me find what I’m looking for.</p>

<h4>Calendar</h4>

<p>iCal collects all the calendars I’m interested in and <a href="http://spanningsync.com/">Spanning Sync</a> publishes it to my Google account.  I subscribe to my Facebook events, my friend and coworker’s calendars, Basecamp milestone calendars and so on.  All of this ends up in iCal.  It’s great for me, but not necessarily good for anyone else who wants to follow where I am as there’s no one public calendar that keeps all my busy/free time.</p>

<h4>Music and Media</h4>

<p>iTunes for music.  iPhoto for photos.  The files themselves are stored on external drives.  For music, it’s a drive shared over my home network.  For photos, it’s on an external drive that I plug as needed.  I used to have decent backup systems for both, but now I have so much data that I need larger drives.  Don’t have an remote/online backup system.</p>

<p>Photos I want to share end up on <a href="http://flickr.com/photos/jaaronfarr">Flickr</a>.  I only use Facebook for photos taken at events planned via Facebook.</p>

<h4>Miscellaneous</h4>

<p>I’m happily using <a href="http://evernote.com/">Evernote</a> for all those bits of information which don’t seem to belong anywhere else.  This includes reminders, account information, registration codes, directions to places, whatever.  It’s my digital notebook.  I don’t use it for anything that needs more structure (ie- projects), but it’s been a great place to catch random data.  The fact that it syncs with my iPhone is critical.</p>

<h3>Your Solution</h3>

<p>So how do you organize your digital stuff?  Do you use a strict filing system or do you rely on search?  Online or offline?  A few tools or special tools for everything? </p>
      <hr />
      <div class="entry-info">
        <em>Written by J Aaron Farr on Sunday, May 24, 2009 for <a href="http://cubiclemuses.com/cm">Cubicle Muses</a>. <a href="/cm/articles/2009/05/24/where-i-put-stuff/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/zrYGlKifWek" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/cm/articles/2009/05/24/where-i-put-stuff/</feedburner:origLink></entry>
  
  <entry>
    <title>CoverStory on the iPhone</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/vX83y9I9XiU/" />
    <id>http://cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/</id>
    <updated>2009-05-14T05:05:07Z</updated>
    <author>
      <name>William Taysom</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>Since <a href="http://www.kanchoo.com/">Kanchoo</a> is getting to be a serious app, it’s time to make rewrite, refactor, and to adopt <a href="http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting">automated testing</a>.  How do you know whether your tests cover all possible cases? That’s hard, but you can at least verify that all your code is covered.  Yes, today we’re talking about <a href="http://en.wikipedia.org/wiki/Code_coverage">code coverage</a>.</p>


	<p><a href="http://code.google.com/p/coverstory/">CoverStory</a> is an awesome application for inspecting <span class="caps">GCC</span>’s <a href="http://gcc.gnu.org/onlinedocs/gcc/Gcov-Intro.html">gcov</a> output.  As you would expect from <span class="caps">GCC</span>, setting up gcov is easy and obscure.  You need to:</p>


<ul>
<li>Add “-lgcov” to Other Linker Flags.</li>
<li>Set <span class="caps">GCC</span>_GENERATE_TEST_COVERAGE_FILES to <span class="caps">YES</span>.</li>
<li>Set <span class="caps">GCC</span>_INSTRUMENT_PROGRAM_FLOW_ARCS to <span class="caps">YES</span>.</li>
<li>Run your app, then open the “Objects-normal” folder in CoverStory.</li>
</ul>

	<p>Let’s go over these steps in more detail.  In Xcode, get info on the target you want to cover.  Switch to the Build tab.  Double click on the value of the “Other Linker Flags” setting.</p>


<img src="http://cubiclemuses.com/page_attachments/0000/0029/build-tab.png" alt="" />
<hr class="space" />

	<p>Add “-lgcov”.  OK.  Now add two user-defined settings: <span class="caps">GCC</span>_GENERATE_TEST_COVERAGE_FILES and <span class="caps">GCC</span>_INSTRUMENT_PROGRAM_FLOW_ARCS.  Set the value of both to <span class="caps">YES</span>.</p>


<img src="http://cubiclemuses.com/page_attachments/0000/0031/user-defined.png" alt="" />
<hr class="space" />

	<p>Build and run.  Now find the Objects-normal folder.  The path is something like:</p>


<ul>
<li>CoverageExample/build/CoverageExample.build/Debug-iphonesimulator/CoverageExample.build/Objects-normal</li>
</ul>

	<p>Or in general:</p>


<ul>
<li>${PROJECT_DIR}/build/${PRODUCT_NAME}.build/${CONFIGURATION}-${PLATFORM_NAME}/${PRODUCT_NAME}.build/Objects-normal</li>
</ul>

	<p>Open the Objects-normal folder in CoverStory: drag, drop, see the report, a summary showing the percent coverage of each file with a detail view showing the number of hits for each line in the gutter.  When the hit count is zero, the line is highlighted in red.</p>


	<p>Sometime lines of code were never meant to run: inconceivable, <a href="http://code.google.com/p/coverstory/wiki/NonFeasibleCode">non-feasible</a>.  Mark these lines with <span class="caps">COV</span>_NF_LINE comments or mark a block with <span class="caps">COV</span>_NF_START followed by <span class="caps">COV</span>_NF_END.  If non-feasible lines do get executed, CoverStory will warn you.</p>


	<p>May your code be ever covered and your tests perpetually passing.</p>
      
      <hr />
      <div class="entry-info">
        <em>Written by William Taysom on Thursday, May 14, 2009 for <a href="http://cubiclemuses.com/cm">Cubicle Muses</a>. <a href="/cm/articles/2009/05/14/coverstory-on-the-iphone/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/vX83y9I9XiU" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/</feedburner:origLink></entry>
  
  <entry>
    <title>Expat Communities</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/MPbycTbSjVM/" />
    <id>http://cubiclemuses.com/pg/articles/2009/05/07/expat-communities/</id>
    <updated>2009-05-07T06:51:07Z</updated>
    <author>
      <name>Jennifer Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>I only know a handful of expats that have family living nearby.  This one fact induces serious expat networking and a well oiled community to compensate for family birthday parties, holiday get-togethers, or even cousin Caleb’s soccer game.</p>
      <p>This morning I got a text from a French mother on Lamma:</p>


	<p>“Morning mummys. What a beautiful day! Charlotte and I will spend the morning at the beach.  Maybe see u there!”</p>


	<p>Maeli gets invited to regular functions to a point of near excess.  Usually there are a few birthday parties every month and then the handful of weekly play date invitations, as well as the monthly outings to a larger event or venue off of Lamma.  Don’t forget the neighborhood kids that just started knocking on our door regularly.</p>


	<p>I’m pretty certain Maeli wouldn’t have this many friends if we were living close to our extended family.  I would stick to family just like a lot of other people in their homeland.  There wouldn’t be the drive for these never ending social networks.</p>


	<p>With all of these positives, we can’t forget the negatives.</p>


	<p>These communities are transient.  Already, a few of Maeli’s friends have moved away and I let Maeli know that she will one day host a goodbye party for all of her friends.  The sense of security just isn’t the same as, for instance, my parents who’ve lived in the same house for 29 years.</p>


	<p>Wacky parenting styles are another negative, which isn’t exclusive to expat communities.  There are plenty of complaints about over-giving grandparents or a lazy aunt. (I’ll stop now before someone in my own family thinks I’m talking about them!)  But, at least for me, I’m able to clearly tell my family and in-laws about my parenting style and I know they try to respect that.  It’s harder to do that with transient families.  And, since these kids have <em>so many</em> friends, they get a sample of every parenting style.</p>


	<p>I know parents who can’t discipline their kids, others who over discipline, some who can’t stop screaming, others who are over cautious, and some who let their toddlers run around Lamma with no adult.</p>


	<p>We all have flaws as parents but it becomes hectic when the community is so big and children get too many different examples of parenting.  All of these parenting models are wonderful learning material for me, but they may be confusing for Maeli.  I’m starting to hear “Well, so-and-so is allowed to do that, or eat that, or watch that.”  Again, this probably isn’t completely exclusive to expat communities.</p>


	<p>I know my own family will read this and wonder if I think expat communities are better than living close to family.  I have no answer for that.  To be honest, I think Maeli would be a happy kid either way.</p>
      <hr />
      <div class="entry-info">
        <em>Written by Jennifer Farr on Thursday, May 07, 2009 for <a href="http://cubiclemuses.com/pg">Peregrinari</a>. <a href="/pg/articles/2009/05/07/expat-communities/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/MPbycTbSjVM" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/pg/articles/2009/05/07/expat-communities/</feedburner:origLink></entry>
  
  <entry>
    <title>A Community of Rockstars</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/ztV3wwTRbYs/" />
    <id>http://cubiclemuses.com/cm/articles/2009/04/28/a-community-of-rockstars/</id>
    <updated>2009-04-28T17:00:24Z</updated>
    <author>
      <name>J Aaron Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>The <a href="http://www.slideshare.net/mattetti/couchdb-perform-like-a-pr0n-star">problem</a> with the Ruby on Rails community isn’t simply <a href="http://www.ultrasaurus.com/sarahblog/2009/04/gender-and-sex-at-gogaruco/">sexism</a>, <a href="http://dyepot-teapot.com/2009/04/25/dear-fellow-rubyists/">unprofessionalism</a>, or <a href="http://www.rubyrailways.com/rails-is-still-a-ghetto/">ghetto-ism</a>, but that Rails is, at its core, a culture which values individual ego more than community.  David and his posse have purposefully encouraged a tradition of <a href="http://www.loudthinking.com/posts/39-im-an-r-rated-individual">edginess</a>, individual expression, one-upmanship, and disregard for such fluffy, fake egalitarian notions as consensus, inclusion and <a href="http://www.flickr.com/photos/doesrails/128015501/">good manners</a>.  It is expressed in the take-it-or-leave-it, <a href="http://www.flickr.com/photos/urbanwide/244690884/">I-don’t-owe-you-anything</a> objectivism that guides Rails framework development and even many of the <a href="http://www.37signals.com/svn/archives2/getting_real_forget_feature_requests.php">businesses</a> built on it.  The result is a community which collaborates largely by aggressive competition and <a href="http://workingwithrails.com/">fierce meritocracy</a>.</p>
      <p>To be clear, I use Ruby on Rails for this website and several others.  A Rails hater, I am not.  However, technical merits aside, the culture of an open source community influences the character of those attracted to it and consequently who I work with, hire, train or sell to.  Thus I care to some degree what the public perception of the technology is.</p>

<p>But beyond that, I have spent the last six years as a contributor to projects in the Apache Software Foundation and the differences between the Apache culture and the Rails culture astound me.  Apache, like Rails, is a strict meritocracy, but I believe that may be where the similarities end.  There’s nothing wrong with giving credit where credit is due, but the Apache philosophy asserts that collaborative peer development trumps rockstars.  Rockstars are an anathema to the ASF culture.  In the long run, a large, diverse community of contributors provides a stability and quality that cannot be matched by a benevolent dictator who may face conflicting interests, may be unable to scale with the community, or who might <a href="http://www.wired.com/threatlevel/2008/04/reiser-guilty-o">murder his wife</a>.</p>

<p>Cultures which value diversity and collaboration over individual ego are required to cultivate an enticing environment.  It’s difficult to attract a wide range of contributors if the environment is constantly abrasive.  This is why you’ll find Apache members spouting off about the importance of consensus, inclusion, and equality amongst peers.  We’ll even go so far as to suggest <a href="http://www.jimjag.com/imo/index.php?/archives/182-Why-community-matters.html">community over code</a>.  Perhaps we must do so simply because such virtues are not necessarily in our nature.  Open source developers tend to be an ego-driven, strong minded, smart-ass bunch.</p>

<p>If it’s unsurprising that a community of rockstars would gravitate to a hip tool like git, which favors individual forks, compared to a staid tool like subversion, which forces developers to work together in a centralized repository, then it should be equally unsurprising that the rockstars don’t care that they <a href="http://twitter.com/dhh/status/1631100714">offend</a> or <a href="http://afreshcup.com/2009/04/28/a-painful-decision/">drive others away</a>.  Their culture doesn’t value building a community.  If it happens, great.  But they aren’t doing it <a href="http://www.infoq.com/interviews/David-Hansson">for you or anyone else</a>.  This is a community of ones.</p>

<p>That may work well for David and the Rails community for now.  And they seem willing to accept the consequences of being <a href="http://www.codinghorror.com/blog/archives/001065.html">douchebags</a>.  But I hope, for the sake of a technology I enjoy working with, that the community matures.  Because if it doesn’t, a pack of individuals will not stand the test of time and David may just get his wish of writing code for just himself.</p>
      <hr />
      <div class="entry-info">
        <em>Written by J Aaron Farr on Tuesday, April 28, 2009 for <a href="http://cubiclemuses.com/cm">Cubicle Muses</a>. <a href="/cm/articles/2009/04/28/a-community-of-rockstars/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/ztV3wwTRbYs" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/cm/articles/2009/04/28/a-community-of-rockstars/</feedburner:origLink></entry>
  
  <entry>
    <title>Your Fly is Down</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/qIp9Xz6HdAI/" />
    <id>http://cubiclemuses.com/pg/articles/2009/04/28/your-fly-is-down/</id>
    <updated>2009-04-29T07:55:45Z</updated>
    <author>
      <name>Jennifer Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>Recently we’ve had family visit from Pittsburgh.  Shayla, Aaron’s sister, and her husband Sean stayed only for a week.  Of course we reconnected with them with late night talks and daily outings.  As always, it was too short a visit.  Toward the end, Aaron and I agreed how much we relish our visitors and hope to always have a guest bedroom wherever we live.</p>
      <p>When people stay with us, we gain perspective on their lives and even ours.  Their reactions to the way we live, what we eat, where we go, and how we spend our free time are valuable bits of information.  When moving so far away it’s hard to gain full perspective on your new life until confronted with the past, or confronted with people from the past.  Visitors are easy ways to come full circle and see how much growth has been achieved, or how much we’ve regressed.</p>


	<p>What I enjoyed about this recent blast from the past was how truly American my in-laws are.  Shayla even refers to Pittsburgh folk as “salt of the earth people”.  Personally, I love how open Americans are.  They won’t shy away from making a rude sarcastic joke, or hesitate to tell you that your fly is down.  But it’s not all crude behavior.  Americans really look you in the eye and shake your hand with a forceful sincerity.</p>


	<p>I’m guilty as charged.  I was at a beach bonfire party this past weekend and ended up talking to a Chinese guy for ten minutes.  I asked him if he knew any other Americans.  He said, “I really like Americans.  They are really…  They are…  Um…”  Then he got out his i Phone and looked up the Chinese character that meant “frank” and “straight forward”.  I couldn’t help but think that I was acting more frank because of the recent visit with Shayla and Sean.  Those two sparked my true nature, which sometimes gets suppressed here.  Most of the people I know in Hong Kong are Brits and Chinese.  Brits certainly aren’t frank…they are all politeness.  Chinese are only frank about facts, not so much about feelings.    So it’s nice to pour a shot of straight frank-talk down the hatch.  Thank goodness my brother is coming to visit in a few weeks.</p>
      <hr />
      <div class="entry-info">
        <em>Written by Jennifer Farr on Tuesday, April 28, 2009 for <a href="http://cubiclemuses.com/pg">Peregrinari</a>. <a href="/pg/articles/2009/04/28/your-fly-is-down/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/qIp9Xz6HdAI" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/pg/articles/2009/04/28/your-fly-is-down/</feedburner:origLink></entry>
  
  <entry>
    <title>Dog Sitting</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/ESsLJ1wfMTo/" />
    <id>http://cubiclemuses.com/pg/articles/2009/04/13/dog-sitting/</id>
    <updated>2009-04-13T06:23:18Z</updated>
    <author>
      <name>Jennifer Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>There are a lot of dogs on Lamma, and consequently people complain about their kids being bit, or the random droppings in the middle of the street.  I grew up with dogs, so I’m indifferent to Lamma’s dog mania.  But, Maeli isn’t used to dogs, especially the huge menacing ones.  She shrieks in fear every time one approaches her, even if it’s a miniature yapping one.  I decided it was time for a change.</p>
      <p>A friend of a friend of a friend needed a dog sitter.  I jumped at the opportunity, considering it was only for three days.  After I told Maeli the good news, she demanded a three day stay at Minda’s flat, attempting to avoid the dog entirety.</p>


	<p>We weren’t really thrilled when the dog arrived, considering the thing looked like a bear.  Indy (short for Indian Jones) is some sort of overgrown, fluffed-out collie.  Luckily, Indy is eight years old, affording him a gentle temperament.  Maeli steered clear of Indy during the first night, shrieking every time he moved.  However, to our great satisfaction, at the end of Indy’s stay, Maeli was walking him by herself, brushing him, and hugging him like an old friend.  My little plan worked, and I recommend dog sitting for anyone with dog-fearing children.</p>
      <hr />
      <div class="entry-info">
        <em>Written by Jennifer Farr on Monday, April 13, 2009 for <a href="http://cubiclemuses.com/pg">Peregrinari</a>. <a href="/pg/articles/2009/04/13/dog-sitting/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/ESsLJ1wfMTo" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/pg/articles/2009/04/13/dog-sitting/</feedburner:origLink></entry>
  
  <entry>
    <title>Short and Canonical URLs</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/jzFyyT_T-5g/" />
    <id>http://cubiclemuses.com/cm/articles/2009/04/12/short-and-canonical-urls/</id>
    <updated>2009-04-12T21:54:16Z</updated>
    <author>
      <name>J Aaron Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>Slashdot just posted an article about <a href="http://developers.slashdot.org/article.pl?sid=09/04/12/1834205">using canonical URLs for URL shortening</a> which does a bad job in my opinion of explaining the problem.  So here’s a breakdown that I hope helps.</p>
      <h4>Multiple URLs</h4>

<p>Let’s take a step back and look at an earlier problem.  A particular <em>resource</em> on the internet might be <em>located</em> in multiple places.  Let’s say we have an article about swedish fish candy (<a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">thanks, Google</a>).  This article might be found at any number of locations on my website:</p>

<ul>
<li>http://www.example.com/products/swedish-fish</li>
<li>http://www.example.com/product.php?item=swedish-fish</li>
<li>http://www.example.com/product.php?item=swedish-fish&amp;category=gummy-candy</li>
<li>http://www.example.com/product.php?item=swedish-fish&amp;trackingid=1234&amp;sessionid=5678</li>
<li>http://www.example.com/psf</li>
</ul>

<p>Suppose any one of those URLs will direct you to the same, or effectively the same article about swedish fish.  Wouldn’t it be nice if I, as the author of that article, could specify which URL is the <em>best</em> address?  This way when Google sees all of those different links, it treats them as links to a single, best address.</p>

<p>Turns out, Google <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">has a solution</a>.  All you need to do is add a single line of HTML code at the top of each of these articles that looks like this:</p>

<pre><code>&lt;link rel="canonical" href="http://www.example.com/product/swedish-fish" /&gt;
</code></pre>

<p>This tells Google when it processes those links and pages that they all really refer to this single <em>canonical</em> URL.  At least Ask, Microsoft and Yahoo also respect this directive.  So if we have multiple URLs for a single resource, we can tell other services which URL we designate is the <em>best</em> URL.</p>

<h4>Short URLs</h4>

<p>One useful alternate URL is a <em>shorter</em> version of the canonical URL.  Consider the following two URLs:</p>

<ul>
<li>http://tinyurl.com/db2myk</li>
<li>http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=lamma+island,+hk&amp;ie=UTF8&amp;ll=22.238578,114.147263&amp;spn=0.264079,0.215607&amp;z=12</li>
</ul>

<p>Both URLs refer to the same map, but the first is much easier to pass along in an email, SMS, twitter post, etc.  Despite being useful, it also has <a href="http://joshua.schachter.org/2009/04/on-url-shorteners.html">all sorts of problems</a> including being opaque and a possible point of failure.</p>

<p>There’s a new idea going around that would let us have our short URLs and avoid these problems by using <a href="http://revcanonical.appspot.com/">rev=”canonical”</a>.  Rev?  Well, it turns out <code>rev</code> is the opposite of <code>rel</code> for <code>link</code> elements.  So that we might have the following:</p>

<pre><code>&lt;!-- included in the code at 'http://www.example.com/psf' --&gt;
&lt;link rel="canonical" href="http://www.example.com/product/swedish-fish" /&gt;

&lt;!-- included in the code at 'http://www.example.com/product/swedish-fish' --&gt;
&lt;link rev="canonical" href="http://www.example.com/psf" /&gt;
</code></pre>

<p>The first says, “Hello.  The preferred address for this resource is <code>http://www.example.com/product/swedish-fish</code>.  Have a nice day.”  The second says, “Hello.  I am the preferred address for <code>http://www.example.com/psf</code>.  Have a nice day.”</p>

<p>The proponents of “revcanonical,” as they’re tagging it, suggest that we can use this second scenario to let services know about a possible shorter URL for a given longer URL.  It also allows for websites to provide their own URL shortening service instead of relying on third parties like Tiny URL.  In this case, when someone submits the longer URL to a service like Twitter, Twitter could inspect the HTML at that URL, discover the suggested shorter URL and thus use and display the shorter address.  To reduce the processing overhead, there’s even a suggestion to use this <code>rev=canonical</code> information in <a href="http://shiflett.org/blog/2009/apr/a-rev-canonical-http-header">HTTP headers</a>.</p>

<h4>A solution to linkrot?</h4>

<p>I’ve long been a fan of Tiny URL.  I use it for emails and tweets regularly.  But I’m also keenly aware of the flaws and issues in introducing a third party URL shortening service.  I welcome any idea that helps solve this problem.</p>

<p>The trouble is, I’m not sure <code>revcanonical</code> is a good solution and this is beyond just the challenges of getting services like Twitter (let alone browsers) to support it.  First off, <code>rev</code> here means <em>reverse</em>.  In other words, the <em>reverse canonical</em>.  Just because some address is a reverse canonical address doesn’t mean that it’s necessarily shorter.  The <code>revcanonical</code> proposal requires us to assume this intent.</p>

<p>Even worse, <code>revcanonical</code> mixes up the idea of alternative URLs with the idea of a <em>canonical</em> URL.  The proposal would have us suggest that the following:</p>

<pre><code>&lt;!-- included in the code at 'http://www.example.com/product/swedish-fish' --&gt;
&lt;link rev="canonical" href="http://www.example.com/psf" /&gt;
</code></pre>

<p>Means ”<code>http://www.example.com/psf</code> is a shorter URL for <code>http://www.example.com/product/swedish-fish</code>” when in fact it means ”<code>http://www.example.com/product/swedish-fish</code> claims to be the canonical URL for <code>http://www.example.com/psf</code>.”  Think about that for a second.  It’s the difference between one person saying, “Yeah, Joe speaks for me” versus Joe saying, “Yeah, I speak for this whole group.”  To confirm Joe’s statement, we’d have to ask each person in the group.  Likewise, that means if one URL says it’s the canonical address for another, we’d have to check that second URL to make sure it agrees.  Otherwise, we open ourselves up to <a href="http://benramsey.com/archives/a-revcanonical-rebuttal/#comment-288475">highjacking</a>.</p>

<p>There are two other issues with this proposal.  First, while <code>rev</code> is a valid HTML 4 element, it isn’t in the latest <a href="http://dev.w3.org/html5/spec/Overview.html#the-link-element">HTML 5 drafts</a>.  That means the proposal is pushing forward something which will soon been invalid markup.  That alone should kill this particular idea immediately.</p>

<p>Finally, as <a href="http://benramsey.com/archives/a-revcanonical-rebuttal/">Ben Ramsey</a> pointed out, the proposal is confusing.  The difference between <code>rel</code> and <code>rev</code> is subtle and will definitely lead to misunderstanding and misinterpretation.  It was confusing enough that I felt it worthwhile to write this article just to make sure I understood it.  A good solution should be immediately apparent.</p>

<p>So, while I applaud the effort of those who are looking to solve our tiny url issues, I sincerely hope this proposal receives more inspection before wide adoption.  Personally, I’d much rather see something like a <code>rel="shorter"</code> attribute used on <code>link</code> and <code>a</code> elements.</p>
      <hr />
      <div class="entry-info">
        <em>Written by J Aaron Farr on Sunday, April 12, 2009 for <a href="http://cubiclemuses.com/cm">Cubicle Muses</a>. <a href="/cm/articles/2009/04/12/short-and-canonical-urls/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/jzFyyT_T-5g" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/cm/articles/2009/04/12/short-and-canonical-urls/</feedburner:origLink></entry>
  
  <entry>
    <title>Rails with Passenger on Open Solaris and EC2</title>
    <link href="http://feedproxy.google.com/~r/cubiclemuses-combined/~3/nGNie0UP9mk/" />
    <id>http://cubiclemuses.com/cm/articles/2009/04/09/rails-passenger-open-solaris-ec2/</id>
    <updated>2009-04-09T08:53:15Z</updated>
    <author>
      <name>J Aaron Farr</name>
    </author>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
      <p>You can now run Sun’s Open Solaris images on EC2 without signing up for
their beta program.  The newly released “web stack” AMI includes Open Solaris 2008.11, 
Apache, MySQL and PHP:</p>

<pre><code>Open Solaris 2008.11 + AMP
32-bit AMI: ami-c7cf28ae
</code></pre>

<p>The bad news is that there’s still some work to do if you want to run Ruby on Rails.
The good news is that the most recent releases of Ruby on Rails (2.3) and Phusion
Passenger (2.1.3) include patches that make it much easier to run
on Open Solaris.  There’s still some work to do and this article aims to
give you all the steps needed.</p>

<p>My notes assume you have some experience with EC2, Open Solaris (or at
least some Unix/Linux variant) and Rails.  Please leave a comment below 
if anything is unclear.</p>

<p>This article was written using:</p>

<ul>
<li>Ruby on Rails 2.3</li>
<li>Passenger Phusion 2.1.3</li>
<li>Open Solaris 2008.11</li>
</ul>
      <h4>Installing basic GNU tools</h4>

<p>We’ll want to go ahead and install <code>gmake</code>, <code>gcc</code>, <code>svn</code> and <code>git</code>.
We need to compile the last one from source.  As this is the only
package we’re installing this way, I just install it directly into
<code>/usr</code>.  If you feel this is blasphemy of some sort, feel free to
install it into your favorite local directory by adding a parameter
such as <code>prefix=/opt/local</code>  to the <code>configure</code> step.</p>

<p>Steps:</p>

<ul>
<li>install gmake</li>
<li>install gcc</li>
<li>install subversion</li>
<li>install git</li>
</ul>

<p>Commands:</p>

<pre><code> $ pfexec pkg install SUNWgmake
 $ pfexec pkg install SUNWgcc
 $ pfexec pkg install SUNWsvn
 $ mkdir -p /opt/src
 $ cd /opt/src
 $ wget http://kernel.org/pub/software/scm/git/git-1.6.2.2.tar.gz
 $ tar xzf git-1.6.2.2.tar.gz
 $ cd git-1.6.2.2
 $ ./configure [--prefix=/opt/local]
 $ gmake
 $ pfexec make install
 $ git --version
</code></pre>

<h4>Installing Ruby on Rails</h4>

<p>Ruby 1.8.6 is already installed with Sun’s AMP stack.  However, we
need to upgrade ruby gems and apply a few patches.</p>

<p>Steps:</p>

<ul>
<li>update rubygems</li>
<li>add github gem server (may not be needed depending on what gems you use)</li>
<li>install rails</li>
<li>Modify path.  Should put this in your <code>profile</code> somewhere.</li>
</ul>

<p>Commands:</p>

<pre><code> $ gem update --version
 $ gem sources -a http://gems.github.com
 $ gem install rails
 $ PATH=/usr/ruby/1.8/bin:$PATH
</code></pre>

<p>If we want to install gems with native code, we’ll need to update our
<code>rbconfig.rb</code> file.  Luckily <a href="http://blogs.sun.com/prashant/entry/dtrace_support1">Prashant Srinivasan</a> has made it
simple for us.</p>

<pre><code> $ wget http://blogs.sun.com/prashant/resource/gcc/rbconfig.rb
 $ mv /usr/ruby/1.8/lib/ruby/1.8/i386-solaris2.11/rbconfig.rb /usr/ruby/1.8/lib/ruby/1.8/i386-solaris2.11/rbconfig.rb.original
 $ mv rbconfig.rb /usr/ruby/1.8/lib/ruby/1.8/i386-solaris2.11/rbconfig.rb
</code></pre>

<p>We can now install the database gems</p>

<pre><code> $ gem install mysql -- --with-mysql-dir=/usr/mysql/5.0
 $ gem install sqlite3-ruby
</code></pre>

<p>We also need to fix an issue with <code>iconv</code> that requires us to both
install the gnu version and change how we link to that library.
Details are on the <a href="http://woss.name/2008/10/16/edge-rails-pre-22-iconv-transliteration-and-solaris/">Rubaidh</a> blog and a <a href="https://rails.lighthouseapp.com/projects/8994/tickets/1396-framework-crashes-on-launch-on-solaris-with-invalid-encoding-asciiignoretranslit-utf-8">ticket is open</a> in the
Rails bug tracker.</p>

<pre><code> $ pfexec pkg install SUNWgnu-libiconv
 $ pfexec crle -u -E LD_PRELOAD=/usr/gnu/lib/preloadable_libiconv.so
 $ pfexec crle -s /lib/secure -s /usr/lib/secure -s /usr/gnu/lib
</code></pre>

<p>If you don’t like this method of updating your LD_PRELOAD parameter,
you can configure Phusion Passenger with <a href="http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/">custom environmental
variables</a>.  This is a useful way to handle any path issues you
bump into.</p>

<h4>Installing Phusion Passenger (mod_rails)</h4>

<p>To install Passenger, we first need to install fastthread.
Unfortunately, the lastest gem has issues on Open Solaris, so we’ll
install version 1.0.1.  After that, we can proceed with installing
passenger.</p>

<pre><code> $ gem install fastthread --version 1.0.1
 $ gem install passenger
 $ passenger-install-apache2-module
</code></pre>

<p>Now you need to update your Apache httpd configuration:</p>

<pre><code> $ PASSENGER_CONF=/etc/apache2/2.2/conf.d/passenger.conf 
 $ echo "LoadModule passenger_module \ 
 $    /usr/ruby/1.8/lib/ruby/gems/1.8/gems/passenger-2.1.3/ext/apache2/mod_passenger.so"  \
      &gt; $PASSENGER_CONF
 $ echo "PassengerRoot /usr/ruby/1.8/lib/ruby/gems/1.8/gems/passenger-2.1.3" &gt;&gt; $PASSENGER_CONF
 $ echo "PassengerRuby /usr/ruby/1.8/bin/ruby"  &gt;&gt; $PASSENGER_CONF
</code></pre>

<h4>Testing</h4>

<p>Let’s create a simple rails app using the new Rails 2.3 templates:</p>

<pre><code> $ mkdir /var/apache2/2.2/apps
 $ cd /var/apache2/2.2/apps
 $ rails blog
 $ cd blog
 $ ./script/generate controller welcome index
 $ chown -R webservd:webservd /var/apache2/2.2/apps
</code></pre>

<p>Now we add the virtual host information for passenger:</p>

<pre><code>  $ vi /etc/apache2/2.2/conf.d/vhosts.conf

    &lt;VirtualHost *:80&gt;
     ServerName [YOUR-EC2-DNS-HERE]
     DocumentRoot /var/apache2/2.2/apps/blog/public

     &lt;Directory /var/apache2/2.2/apps/blog&gt;
      Options +FollowSymLinks -SymLinksIfOwnerMatch +MultiViews -Indexes -ExecCGI
      AllowOverride ALL
      Order allow,deny
      Allow from all
     &lt;/Directory&gt;

    &lt;/VirtualHost&gt;
</code></pre>

<p>Now we restart apache:</p>

<pre><code>   $ svcadm restart http:apache22
</code></pre>

<p>And we should be able to view our new rails app by going to the public
address for our EC2 server.  To confirm rails is actually configured
correctly, visit <code>/welcome</code> and you should see something like:</p>

<pre><code>Welcome#index

Find me in app/views/welcome/index.html.erb
</code></pre>

<p>I’ll leave setting up Capistrano as an exercise for the reader.  I’m
going to do some more testing with this setup and I may release a
<a href="http://wiki.opscode.com/display/chef/Home">Chef</a> configuration for it or my own custom AMIs if there’s interest.</p>
      <hr />
      <div class="entry-info">
        <em>Written by J Aaron Farr on Thursday, April 09, 2009 for <a href="http://cubiclemuses.com/cm">Cubicle Muses</a>. <a href="/cm/articles/2009/04/09/rails-passenger-open-solaris-ec2/">Permalink</a>.</em>
      </div>
     <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/cubiclemuses-combined/~4/nGNie0UP9mk" height="1" width="1" /></div></content>
  <feedburner:origLink>http://cubiclemuses.com/cm/articles/2009/04/09/rails-passenger-open-solaris-ec2/</feedburner:origLink></entry>
  
 
 
</feed>
