<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>The Ship's Log</title>
    <description>Terralien Blog</description>
    <link>/blog/rss</link>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/terralien-ships-log" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Nathaniel at FutureRuby</title>
      <description>&lt;p&gt;I had the opportunity to open up the &lt;a href="http://futureruby.com"&gt;FutureRuby&lt;/a&gt; conference in Toronto, Canada this past weekend. For more details, including the full text of the talk, head over here: &lt;a href="http://blog.talbott.ws/articles/2009/7/15/owning-the-means-of-production"&gt;Owning the Means of Production&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Wed, 15 Jul 2009 15:50:07 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/9ZbY5mlF5w8/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2009/07/15/nathaniel-at-futureruby/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2009/07/15/nathaniel-at-futureruby/</feedburner:origLink></item>
    <item>
      <title>The Lean Startup Primer</title>
      <description>&lt;p&gt;&lt;strong&gt;I&amp;#8217;ve been focused on the care and feeding of young businesses for over three years now.&lt;/strong&gt; It&amp;#8217;s my passion. It&amp;#8217;s what compels me to run Terralien. It&amp;#8217;s what got me interested in the ideas behind &lt;a href="http://spreedly.com"&gt;Spreedly&lt;/a&gt;. It&amp;#8217;s one of the skills I&amp;#8217;m most excited about passing onto each of my children. It&amp;#8217;s something that I&amp;#8217;m on a never-ending quest to get better at.&lt;/p&gt;
&lt;p&gt;So when an idea comes along that has the potential to make more young businesses successful, I get &lt;em&gt;really&lt;/em&gt; excited about it. Sometimes so excited that I have to do something to promulgate it right away. When I ran across the growing Lean Startup meme last week, it intersected with my passion so powerfully that I spent most of the weekend building the &lt;a href="http://leanstartupprimer.com?referrer=terralienblog"&gt;Lean Startup Primer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now, my interest in Lean Startup concepts didn&amp;#8217;t begin last week: I&amp;#8217;ve been applying some lean principles for years, mostly under the auspices of &lt;a href="http://gettingreal.37signals.com"&gt;Getting Real&lt;/a&gt;, and have further been studying lean manufacturing concepts for months seeking ways to help Terralien deliver better value for our clients. As a matter of fact, just this past Tuesday I had a discussion before the &lt;a href="http://agile.meetup.com/29/"&gt;Agile &lt;span class="caps"&gt;RTP&lt;/span&gt; meeting&lt;/a&gt; about wanting to put on a course about lean principles and how they apply to young software businesses. But I was missing Customer Development, &lt;a href="http://steveblank.com"&gt;Steve Blank&amp;#8217;s&lt;/a&gt; excellent methodology for finding out what the market really wants &lt;em&gt;before&lt;/em&gt; spending time building the wrong thing.&lt;/p&gt;
&lt;p&gt;With a (more) complete picture of how to apply lean principles to formational businesses, I knew it was time to get real and actually teach the material, and thus the &lt;a href="http://leanstartupprimer.com?referrer=terralienblog"&gt;Lean Startup Primer&lt;/a&gt; was born. The goal is not to teach you everything there is to know about Lean Startups (the mind boggles), but rather to give you an overview of the powerful principles involved and a jumping off point from which to learn more. With a very small class size (12 people max) and hosted at the wonderful Carrboro Creative Coworking, it should be a fantastic experience. If it goes at all well there will be additional events, though the price will go up after this inaugural session.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I&amp;#8217;m really, really excited about the Lean Startup Primer, and I hope to see you in Carrboro on June 17th: &lt;a href="http://leanstartupprimer.com?referrer=terralienblog"&gt;sign up now!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
</description>
      <pubDate>Mon, 08 Jun 2009 14:35:33 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/KUOOdQG7tyI/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2009/06/08/the-lean-startup-primer/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2009/06/08/the-lean-startup-primer/</feedburner:origLink></item>
    <item>
      <title>Five Skills Every Freelancer Must Have</title>
      <description>&lt;p&gt;If there&amp;#8217;s one thing I do a lot at &lt;a href="http://terralien.com"&gt;Terralien&lt;/a&gt;, it&amp;#8217;s &lt;a href="http://terralien.com/about/people"&gt;work with freelancers&lt;/a&gt;. And if there&amp;#8217;s one thing I&amp;#8217;ve learned while working with them, it&amp;#8217;s that some freelancers are way better than other freelancers, and the difference usually isn&amp;#8217;t technical. Thus I&amp;#8217;ve been chewing on the idea of giving a talk about some of the important differences between those who excel and those who struggle, and I got my first chance to do so at &lt;a href="http://www.nfjsone.com/conference/raleigh/2009/02/index.html"&gt;RubyRX&lt;/a&gt; this past weekend.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d appreciate any feedback you have, either in the comments below or at &lt;a href="http://speakerrate.com/talks/226-five-skills-every-freelancer-must-have"&gt;SpeakerRate&lt;/a&gt;, as I&amp;#8217;m hoping to take this material (and more) and flesh it out in to a course and/or a book.&lt;/p&gt;
&lt;p&gt;&lt;object width="400" height="302"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3390147&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=60B144&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3390147&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=60B144&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;A little about how this was recorded: I set up my &lt;a href="http://www.amazon.com/gp/product/B000V1MLCI?ie=UTF8&amp;tag=talbottfamily-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000V1MLCI"&gt;Flip Video Recorder&lt;/a&gt; on a little tripod with the expectation that it would run out of space at 60 minutes and I&amp;#8217;d have a recording to review for technique and to improve the next talk, but that I wouldn&amp;#8217;t capture the whole thing. Well, I was wrong: I got everything except the last 5-10 minutes of questions! I &lt;strong&gt;think&lt;/strong&gt; because the view was stationary that the video compressed well. All in all I captured just over 83 minutes on my 60 minute Flip.&lt;/p&gt;</description>
      <pubDate>Fri, 27 Feb 2009 19:51:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/66AkI1zeCE8/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2009/02/27/five-skills-every-freelancer-must-have/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2009/02/27/five-skills-every-freelancer-must-have/</feedburner:origLink></item>
    <item>
      <title>A Coffee Shop Chat</title>
      <description>&lt;p&gt;As part of the lead-up to &lt;a href="http://www.nfjsone.com/conference/raleigh/2008/02/index.html"&gt;RubyRX&lt;/a&gt; I got the opportunity to sit down with &lt;a href="http://agileartisans.com/main"&gt;Jared Richardson&lt;/a&gt; and chat about &lt;a href="http://ruby-lang.org"&gt;Ruby&lt;/a&gt;, what makes a well-rounded programmer, &lt;a href="http://spreedly.com"&gt;Spreedly&lt;/a&gt;, the importance of going to at least one or two conferences a year, and more:&lt;/p&gt;
&lt;p&gt;&lt;embed src="http://blip.tv/play/5hzpwgCF_mc" type="application/x-shockwave-flash" width="427" height="340" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;The funny thing (in retrospect at least!) is that we did the interview twice, but the first time, unbeknownst to us, the tape ran out halfway through! I&amp;#8217;m just glad it turned out natural the second time, probably because we talked about a somewhat different set of topics.&lt;/p&gt;
&lt;p&gt;Thanks to Jared for doing the interview &amp;#8211; it was a blast. Hope you enjoy it!&lt;/p&gt;</description>
      <pubDate>Tue, 03 Feb 2009 15:23:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/Xrc2WvWmx1s/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2009/02/03/a-coffee-shop-chat/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2009/02/03/a-coffee-shop-chat/</feedburner:origLink></item>
    <item>
      <title>Why You Should Be At RubyRX</title>
      <description>&lt;p&gt;In his excellent book &lt;a href="http://www.amazon.com/gp/product/0446691437?ie=UTF8&amp;amp;tag=talbottfamily-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0446691437"&gt;The War of Art&lt;/a&gt;, Steven Pressfield talks about &amp;#8220;Turning Pro&amp;#8221; as the key to overcoming resistance and consistently spending time on what we truly value:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Aspiring artists defeated by Resistance share one trait. They all think like amateurs. They have not yet turned pro.&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;The traditional interpretation is that the amateur pursues his calling out of love, while the pro does it for money. Not the way I see it. In my view, the amateur does not love the game enough. If he did, he would not pursue it as a sideline, distinct from his &amp;#8220;real&amp;#8221; vocation.&lt;/p&gt;
&lt;p&gt;The professional loves it so much he dedicates his life to it. He commits full-time.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s what I mean when I say turning pro.&lt;/p&gt;
&lt;p&gt;Resistance hates it when we turn pro.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Steven Pressfield, The War of Art, &amp;#8220;Professionals and Amateurs&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For myself, a big part of turning pro in software development was committing that I would go to at least one &lt;strong&gt;excellent&lt;/strong&gt; conference every year. It&amp;#8217;s a costly commitment at times, but it&amp;#8217;s been so incredibly worth the investment. I&amp;#8217;ve formed lasting relationships, gotten the jump on important techniques and technology, and found out about tools that I still use on a regular basis. I&amp;#8217;ve also seen that a conference serves to get me pumped up to tackle things that I&amp;#8217;ve been putting off, and gives me new perspective on problems I&amp;#8217;ve been scratching my head over.&lt;/p&gt;
&lt;p style="float:right;margin-left:1em;"&gt;&lt;a href="http://nfjsone.com/conference/raleigh/2008/02/index.html"&gt;&lt;img src="/images/RubyRx125x125.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m a big fan of hobbyist conferences. &lt;a href="http://rubyconf.org/"&gt;RubyConf&lt;/a&gt; has been my mainstay for years, and I&amp;#8217;ll be at the most excellent &lt;a href="http://actsasconference.com"&gt;acts_as_conference&lt;/a&gt; in a few weeks. But I also think there&amp;#8217;s an important part to be played by professional conferences that have an invite-only speaker list, and are paid for by attendees rather than by sponsors. If you look at the &lt;a href="http://nfjsone.com/conference/raleigh/2008/02/speakers.html"&gt;list of speakers&lt;/a&gt; and the &lt;a href="http://nfjsone.com/conference/raleigh/2008/02/sessions.html"&gt;set of sessions&lt;/a&gt; scheduled for &lt;a href="http://nfjsone.com/conference/raleigh/2008/02/index.html"&gt;RubyRX&lt;/a&gt;, you&amp;#8217;ll find an A-list of smart folks and a wide set of topics guaranteed to teach you something outside your comfort zone. And if you&amp;#8217;re a professional software developer, as I know many of you are, then I believe you&amp;#8217;ll find yourself more than paid back in learning and growth by attending. There&amp;#8217;ll be talks on &lt;a href="http://nfjsone.com/show_session_view.jsp?presentationId=13307&amp;amp;showId=199"&gt;Merb and Rails 3&lt;/a&gt;, &lt;a href="http://nfjsone.com/show_session_view.jsp?presentationId=13036&amp;amp;showId=199"&gt;Erlang&lt;/a&gt;, &lt;a href="http://nfjsone.com/show_session_view.jsp?presentationId=13060&amp;amp;showId=199"&gt;Rewriting Rails in 90 Minutes&lt;/a&gt;, &lt;a href="http://nfjsone.com/show_session_view.jsp?presentationId=13071&amp;amp;showId=199"&gt;Clojure&lt;/a&gt;, &lt;a href="http://nfjsone.com/show_session_view.jsp?presentationId=13311&amp;amp;showId=199"&gt;Sinatra&lt;/a&gt; and more &amp;#8211; how many of these topics have you wanted to explore but just haven&amp;#8217;t had time to yet? Well here&amp;#8217;s your chance!&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re not a professional yet, still sitting on the sidelines, then this could be a great opportunity to make the jump. A conference like RubyRX is a great kick in the pants, and can give you the confidence to go to the next level. You&amp;#8217;ll get lots of hallway time to chat and get inspiration from those who&amp;#8217;ve already turned pro, and the sessions will generate all kinds of ideas on how to go from being an amateur to being a professional. I&amp;#8217;ll personally be giving two talks that I think every professional should hear &amp;#8211; one on the &lt;a href="http://nfjsone.com/show_session_view.jsp?presentationId=13038&amp;amp;showId=199"&gt;Fear of Programming&lt;/a&gt; (with more from the War of Art) and one on the &lt;a href="http://nfjsone.com/show_session_view.jsp?presentationId=13039&amp;amp;showId=199"&gt;Five Skills Every Freelancer Should Have&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://nfjsone.com/conference/raleigh/2008/02/index.html"&gt;RubyRX&lt;/a&gt; is February 19th-21st, 2009 in Raleigh, NC. You have until the end of the week to (January 30th) to get the early bird price, so don&amp;#8217;t delay. I can&amp;#8217;t guarantee that RubyRX will be one of the excellent conferences this year, but I can guarantee that Jared, myself, the other speakers and all the attendees are going to do our best to make it so. &lt;strong&gt;And it&amp;#8217;s even more likely to be excellent if you decide to come, so &lt;a href="http://nfjsone.com/conference/raleigh/2008/02/register.html"&gt;sign up&lt;/a&gt;, come out, and let us help you &amp;#8220;turn pro&amp;#8221;!&lt;/strong&gt;&lt;/p&gt;
</description>
      <pubDate>Mon, 26 Jan 2009 17:27:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/LVZ4tPvKS_c/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2009/01/26/why-you-should-be-at-rubyrx/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2009/01/26/why-you-should-be-at-rubyrx/</feedburner:origLink></item>
    <item>
      <title>Sprint or Marathon?</title>
      <description>&lt;p&gt;Both sprints and marathons have starting lines, and the people lined up behind them are equally pumped up to start running the race. Adrenaline courses through the veins of a marathon runner on the starting line as surely as it does through the runner of a sprint waiting for the gun. And each kind of runner looks towards the finish line for their race, the end goal in sight.&lt;/p&gt;
&lt;p&gt;And yet &amp;#8211; what happens between the start and finish of a marathon and a sprint couldn&amp;#8217;t be more different. In a sprint, the effort is focused in to mere seconds or perhaps minutes, and the runners push hard, giving everything they&amp;#8217;ve got with each foot traveled. It doesn&amp;#8217;t matter if they collapse after only running a few hundred yards &amp;#8211; so long as they got over the finish line first, they&amp;#8217;ve won. The start is critical, as it makes up a huge percentage of the race, and as the race is run, a tiny stumble spells doom. It&amp;#8217;s a very unforgiving race &amp;#8211; everything must be done just right, or there&amp;#8217;ll be no trophy.&lt;/p&gt;
&lt;p&gt;A marathon is something altogether different. Everyone knows as they leave the starting line that they&amp;#8217;re going to be running a long time, and that if they don&amp;#8217;t pace themselves they&amp;#8217;ll never make it to the end much less have the best time. The start is important, but pales in comparison to sustained progress. Even a large stumble disappears in to the noise of the race so long as it doesn&amp;#8217;t result in any physical damage. And the race is as much against the clock as it is against the other runners, with everyone striving towards their personal best.&lt;/p&gt;
&lt;p&gt;Now, I&amp;#8217;m more of a sitter than a runner, so I know these things not from experiencing them but rather from watching &lt;a href="http://www.imdb.com/title/tt0082158/"&gt;Chariots of Fire&lt;/a&gt; and talking to people who have run marathons. But what I do have lots of first hand experience with is building businesses, and I can tell you that there are important, enduring lessons to be had in this comparison for anyone thinking of starting a business. The external view of entrepreneurship, and the view of many just starting out in it, is that it&amp;#8217;s a sprint: all the energy focused in to a small period of time for a huge pay-off at the end. Yet once you have a few months of a new business under your belt you&amp;#8217;ll discover that it&amp;#8217;s really a marathon, with the focus being on endurance and constant progress. Going really fast turns out to be overrated, and envisioning and constantly moving towards a finish line that is well out of sight is what separates the winners from the losers.&lt;/p&gt;
&lt;p&gt;Those who approach business as a sprint quickly burn out. They run the first few months, maybe even the first year or two, with a gusto that seems enviable. And yet, as time wears on, they tire and start to get discouraged, and often collapse well before the half way point. Those who realize they&amp;#8217;re embarking on a marathon, however, get off to a good start, and yet quickly fall far behind the sprinters. But soon enough they catch up, and then gradually leave those less prepared behind.&lt;/p&gt;
&lt;p&gt;As you think about the business you want to start (I know you have one!), are you prepared for it to be a marathon? Are you ready to stick it out for years to make it a success? Big, sudden success stories are usually the product of years of quiet persistence, or &lt;a href="http://www.gather.com/viewArticle.jsp?articleId=281474976794753"&gt;as Sam Walton said of Wal-Mart&lt;/a&gt;, &amp;#8220;Like most other overnight successes, it was about 20 years in the making.&amp;#8221;&lt;/p&gt;
&lt;p&gt;So which are you planning to run? A sprint, or a marathon?&lt;/p&gt;
</description>
      <pubDate>Mon, 12 Jan 2009 19:13:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/jOomPpln7Z4/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2009/01/12/sprint-or-marathon/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2009/01/12/sprint-or-marathon/</feedburner:origLink></item>
    <item>
      <title>Nathaniel at acts_as_conference</title>
      <description>&lt;p&gt;I&amp;#8217;ll be keynoting at acts_as_conference in Orlando, Florida in February, and I can&amp;#8217;t wait! &lt;a href="http://blog.talbott.ws/articles/2008/12/17/keynoting-at-acts_as_conference"&gt;More details over at my personal blog&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Wed, 17 Dec 2008 19:37:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/jWNmSadywII/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/12/17/nathaniel-at-acts_as_conference/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/12/17/nathaniel-at-acts_as_conference/</feedburner:origLink></item>
    <item>
      <title>Codename MC</title>
      <description>&lt;p&gt;Terralien&amp;#8217;s building a product! Come follow along at &lt;a href="http://codenamemc.terralien.com/"&gt;Codename MC&lt;/a&gt; to get a peek at what we&amp;#8217;re building and the process we&amp;#8217;re building it with.&lt;/p&gt;</description>
      <pubDate>Mon, 08 Dec 2008 20:55:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/o8aWHkG93tg/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/12/08/codename-mc/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/12/08/codename-mc/</feedburner:origLink></item>
    <item>
      <title>Now or Never</title>
      <description>&lt;p&gt;There&amp;#8217;s a lot of uncertainty right now about the economy, about jobs, and more immediately for some folks, about paying for Christmas. Economic times are tough, or so they tell us, and all the talking heads (who were, it should be noted, saying how great things were six months ago) are telling us the sky is falling. Regardless of how sound your personal financial position is, it&amp;#8217;s hard to not accept at least a part of that vibe in to your own thinking, and start panicking inside over what might (or might not) happen.&lt;/p&gt;
&lt;p&gt;And yet, the amazing thing is that today is pretty much like yesterday, and this month is pretty much like last month. The only real difference is in our perception and understanding (right or wrong) of reality.&lt;/p&gt;
&lt;p&gt;So the question is, why aren&amp;#8217;t you starting that business you&amp;#8217;ve been contemplating for months? Or maybe it&amp;#8217;s been years? Is it because of the current economic news? I doubt it. If it was, you would&amp;#8217;ve started it before we realized things were bad, and it would already be in process now.&lt;/p&gt;
&lt;p&gt;The story we tell ourselves is key, and while we might be getting bombarded with a particularly sour story right now externally, it&amp;#8217;s the internal story that prevents (or enables!) us to build something successful. And that&amp;#8217;s why a whole bunch of smart people with way more experience than me are saying that right now is a great time to start a business, &lt;a href="http://sethgodin.typepad.com/seths_blog/2008/09/looking-for-a-r.html"&gt;Seth Godin&lt;/a&gt; and &lt;a href="http://www.paulgraham.com/badeconomy.html"&gt;Paul Graham&lt;/a&gt; being just two of them.&lt;/p&gt;
&lt;p&gt;Regardless of what you decide to do, I know what I&amp;#8217;m going to do: lean in to the wind of popular opinion and use this time to build something great. I hope you&amp;#8217;ll join me!&lt;/p&gt;
&lt;p&gt;Of course, I have an ulterior motive in encouraging you to get started, since it&amp;#8217;s startups and entrepreneurs and small agile businesses that we focus on here at &lt;a href="http://terralien.com"&gt;Terralien&lt;/a&gt;. If you need help on the software design+development side of things, I hope you&amp;#8217;ll &lt;a href="http://terralien.com/contact/"&gt;drop me a line&lt;/a&gt; so we can figure out how Terralien can help you succeed regardless of what the pundits say.&lt;/p&gt;
</description>
      <pubDate>Thu, 04 Dec 2008 21:53:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/98Ipe6b__iM/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/12/04/now-or-never/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/12/04/now-or-never/</feedburner:origLink></item>
    <item>
      <title>Smart Asset Management for Rails Plugins</title>
      <description>&lt;p&gt;Many Rails plugins require that certain files like images, &lt;span class="caps"&gt;CSS&lt;/span&gt;, and JavaScript get copied to the public folder during installation. The typical way to do this is add code to install.rb, which then gets executed when you first install the plugin in your Rails project. What happens when the assets in a plugin you&amp;#8217;re using change, though? You end up having to manually copy files around anytime the plugin gets updated, which is an extremely error-prone process (if you remember to do it in the first place!).&lt;/p&gt;
&lt;p&gt;I got tired of mucking around with install.rb and having to sling files around whenever a plugin changed, and so I wrote &lt;a href="http://github.com/pelargir/asset_copier/tree/master"&gt;asset_copier&lt;/a&gt;. It&amp;#8217;s a generator that runs against your plugin and installs an asset management system that gets checked in with the rest of your plugin code. Once installed, any Rails app your plugin is installed in gets a plugin_name:install task that intelligently copies over any files located in the /files subdirectory in the plugin. Files will also be copied over every time the plugin is reloaded or Rails is restarted in development mode. When running in production mode, warnings will be printed to the log for files that are missing or have changed.&lt;/p&gt;
&lt;p&gt;You can check out the &lt;a href="http://github.com/pelargir/asset_copier/tree/master#readme"&gt;&lt;span class="caps"&gt;README&lt;/span&gt;&lt;/a&gt; for installation instructions and additional documentation, and I&amp;#8217;d love to get any and all feedback you have as you start using it in your own plugins.&lt;/p&gt;
&lt;p&gt;Oh, and if you&amp;#8217;re looking for a plugin using asset_copier, look no further than the &lt;a href="http://terralien.com/blog/articles/2008/10/29/announcing-the-textile_toolbar-plugin/"&gt;textile_toolbar&lt;/a&gt; that Terralien announced recently.&lt;/p&gt;
</description>
      <pubDate>Fri, 14 Nov 2008 20:23:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/UoR0Xrc30eo/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/11/14/smart-asset-management-for-rails-plugins/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/11/14/smart-asset-management-for-rails-plugins/</feedburner:origLink></item>
    <item>
      <title>Announcing the textile_toolbar Plugin</title>
      <description>&lt;p&gt;I&amp;#8217;m tired of settling for a &lt;span class="caps"&gt;WYSIWYG&lt;/span&gt; editor in my Rails apps. Plugins like &lt;a href="http://www.fckeditor.net/"&gt;FCKeditor&lt;/a&gt; and &lt;a href="http://tinymce.moxiecode.com/"&gt;TinyMCE&lt;/a&gt; work moderately well for the end user, but they can generate ugly &lt;span class="caps"&gt;HTML&lt;/span&gt; on the backend. I hate dealing with that. &lt;a href="http://hobix.com/textile/"&gt;Textile&lt;/a&gt; is so much better, but our clients often dislike dealing with the markup. Isn&amp;#8217;t there a way to bridge the niceness of Textile with the end user experience of a &lt;span class="caps"&gt;WYSIWYG&lt;/span&gt; editor?&lt;/p&gt;
&lt;p&gt;It turns out that there is: it&amp;#8217;s &lt;a href="http://github.com/pelargir/textile_toolbar"&gt;the new textile_toolbar plugin&lt;/a&gt;. Extracted from a recent Terralien project, the plugin adds a handy toolbar to Textile-enabled form fields. The buttons on the toolbar generate the appropriate Textile markup for your users. For example, clicking the &amp;#8220;Bold&amp;#8221; button will surround the highlighted word with the correct Textile markup to make it bold.&lt;/p&gt;
&lt;p&gt;textile_toolbar lets you retain the benefits of Textile while at the same time offering your users a friendly interface for generating markup. The plugin is a great way to learn Textile, but even if your users don&amp;#8217;t want to bother with memorizing the markup, the toolbar will still be there to assist them with their editing.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s easy to get started with textile_toolbar. To install the plugin in your Rails 2.1 (or greater) project, run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
script/plugin install git://github.com/pelargir/textile_toolbar.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To add the toolbar to an existing text area, change the text_area or text_field helper call to textile_area. It&amp;#8217;s that simple! Be sure to check out the &lt;span class="caps"&gt;README&lt;/span&gt; for further integration guidelines and options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; A live example of a Textile-enabled text area can now be found &lt;a href="http://terralien.com/projects/textile-toolbar/"&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Wed, 29 Oct 2008 21:51:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/JLeB86CJCEo/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/10/29/announcing-the-textile_toolbar-plugin/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/10/29/announcing-the-textile_toolbar-plugin/</feedburner:origLink></item>
    <item>
      <title>%B %Y Archives</title>
      <description>&lt;r:archive:children:each order="asc"&gt;
&lt;div class="item"&gt;
&lt;div class="item_details"&gt;
      &lt;h3&gt;&lt;r:link /&gt;&lt;/h3&gt;
      &lt;div class="info"&gt;Posted by &lt;r:author /&gt; on &lt;r:date format="%b %d, %Y" /&gt;&lt;r:comment&gt; | &lt;a href="http://blog.terralien.com/past/2008/6/18/radiant_cms_extensions/#comments"&gt;1 Comment&lt;/a&gt;&lt;/r:comment&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;
&lt;r:content /&gt;
      &lt;p&gt;&lt;r:if_content part="extended"&gt;&lt;r:link anchor="extended"&gt;Read More&amp;#8230;&lt;/r:link&gt;&lt;p&gt;&lt;/r:if_content&gt;&lt;/p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/r:archive:children:each&gt;</description>
      <pubDate>Fri, 27 Jun 2008 15:59:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/MzlsdeeXnaI/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/06/27/monthly-archives/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/06/27/monthly-archives/</feedburner:origLink></item>
    <item>
      <title>Radiant CMS Extensions</title>
      <description>&lt;p&gt;Up until recently I had admired the &lt;a href="http://radiantcms.org/"&gt;Radiant Content Management System&lt;/a&gt; from afar but hadn&amp;#8217;t had a chance to really dig in to it. While &lt;a href="http://terralien.com/"&gt;the Terralien website&lt;/a&gt; runs on Radiant, a lot of the power of Radiant doesn&amp;#8217;t come to the fore until you want to extend it, and our website&amp;#8217;s needs are very vanilla. So when an opportunity came along for us to do the back-end for a content heavy site for &lt;a href="http://ignitesocialmedia.com/"&gt;Ignite Social Media&lt;/a&gt;, I jumped at the chance to put Radiant through its paces. In particular I got to do a bunch of Radiant extension development, both writing an extension from scratch as well as doing heavy hacking on some existing extensions, and I&amp;#8217;d like to talk some about that process as well as highlighting the (all open source) extensions that came out of it.&lt;/p&gt;
&lt;p&gt;First, a little about the site we built: it&amp;#8217;s a marketing site for a newly launched product, and we were tasked with taking comps from Ignite, implementing them in Radiant, and hooking up the various dynamic pieces of the site. Those dynamic bits included a quiz visitors can take, blog comments, various mailer forms, site search, a site map, etc. All fairly standard stuff, but the goal was to build out exactly the back-end that was need for the project rather than using a &lt;span class="caps"&gt;CMS&lt;/span&gt; that provides everything and the kitchen sink and ending up with a cluttered, confusing admin interface. Of course Radiant being Rails-based was also a big draw: almost every project needs to &amp;#8220;draw outside the lines&amp;#8221; at least once, and we think it&amp;#8217;s ever so much nicer to do custom development in Ruby than it is in &lt;span class="caps"&gt;PHP&lt;/span&gt;, the lingua franca of most popular CMS&amp;#8217;s.&lt;/p&gt;
&lt;p&gt;After getting Radiant up and running on our staging server &amp;#8211; a completely painless process &amp;#8211; work commenced with the &lt;a href="http://github.com/ntalbott/radiant-quiz-extension/tree/master"&gt;quiz extension&lt;/a&gt; which I wrote from scratch. The experience was mostly painless, but there were two aspects I think can be improved on. First of all, the &lt;a href="http://wiki.radiantcms.org/"&gt;available documentation&lt;/a&gt; is a bit spotty, and while this didn&amp;#8217;t bother me too much (I&amp;#8217;m an avid code reader) I could see it causing issues for some folks. The other thing I found somewhat disconcerting when getting started was the lack of direction on how best to implement the mechanics of an extension. Some extensions post back to a custom page type, some extensions provide their own controllers, and error handling is all over the map. I think some of the issue is just that generic component-based development is hard, but that doesn&amp;#8217;t mean that a &amp;#8220;best practice&amp;#8221; extension style couldn&amp;#8217;t be adopted and encouraged. I ended up settling on a particular style that I think works well, but it still has some significant drawbacks, and I&amp;#8217;ll definitely be continuing to noodle on the issue as I work on future extensions.&lt;/p&gt;
&lt;p&gt;After the quiz extension, I moved on to some areas that already had existing extensions available, in particular &lt;a href="http://github.com/radiant/radiant-mailer-extension/tree/master"&gt;mailers&lt;/a&gt; and &lt;a href="http://github.com/artofmission/radiant-comments/tree/master"&gt;comments&lt;/a&gt;. &lt;a href="http://github.com/ntalbott"&gt;Github&lt;/a&gt; was the star that stole the show here, since I ended up forking both of these extensions and hacking on them extensively to get them working like I wanted. Since the comments extension was already on Github I was then able to submit the changes to it right back to the original author, and he incorporated them in to his repo. Currently you can only get my mailer changes from &lt;a href="http://github.com/ntalbott/radiant-mailer-extension/tree/master"&gt;my Github hosted fork&lt;/a&gt;, but a little birdy has told me that Radiant will be moving wholesale to git in the near future, and when it does I&amp;#8217;ll be contributing my changes back.&lt;/p&gt;
&lt;p&gt;Of course, we also used a bunch of extensions completely as-is, in particular the &lt;a href="http://gravityblast.com/projects/radiant-copymove-extension/"&gt;Copy Move extension&lt;/a&gt;, the &lt;a href="http://github.com/radiant/radiant-reorder-extension/tree/master"&gt;Reorder extension&lt;/a&gt;, and the &lt;a href="http://github.com/radiant/radiant-search-extension/tree/master"&gt;Search extension&lt;/a&gt;. Thanks so much to the authors of these extensions as well as the ones we forked: you saved us so much time!&lt;/p&gt;
&lt;p&gt;And we&amp;#8217;re not done yet: in the works we have a &amp;#8220;ratings extension&amp;#8221;, and we&amp;#8217;ll also be doing some serious hacking around &lt;span class="caps"&gt;WYSIWYG&lt;/span&gt; editing and asset management. You can keep up with the latest by watching &lt;a href="http://github.com/ntalbott"&gt;my Github page&lt;/a&gt;, or I&amp;#8217;ll try to post an update when we push out our next batch of extension-y goodness.&lt;/p&gt;
&lt;p&gt;In the meantime, have you tried out Radiant? What did you think of it? Any cool extensions you&amp;#8217;ve found whilst poking around the internet that we should be sure to take a look at? Have you written an extension yourself? I&amp;#8217;d love to hear your thoughts!&lt;/p&gt;</description>
      <pubDate>Wed, 18 Jun 2008 09:32:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/QoeQr-WYIUU/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/06/18/radiant_cms_extensions/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/06/18/radiant_cms_extensions/</feedburner:origLink></item>
    <item>
      <title>Ruby Hoedown!</title>
      <description>&lt;p&gt;If there&amp;#8217;s one thing that we believe in (and have benefited from in a big way) at Terralien, it&amp;#8217;s the power of the Ruby community. Since I attended the first RubyConf in Tampa in 2001, I&amp;#8217;ve been constantly amazed by the vibrancy, passion, and all-around &lt;em&gt;niceness&lt;/em&gt; of Rubyists when they gather in groups, whether virtually or physically. And so it is with great pleasure I point you to the second annual &lt;a href="http://rubyhoedown.com/"&gt;Ruby Hoedown&lt;/a&gt;, the southeast region&amp;#8217;s premier Ruby conference, taking place this year in Huntsville, AL. The organizers already have &lt;a href="http://rubyhoedown2008.confreaks.com/"&gt;the schedule&lt;/a&gt; up and &lt;a href="http://rubyhoedown.eventwax.com/ruby-hoedown-2008/register"&gt;registration open&lt;/a&gt;, so head on over there, check out the top-notch offerings, and make your plans to be in Huntsville in August this year. While I&amp;#8217;m not helping to organize the conference this year, I&amp;#8217;m definitely going to be attending it, so I&amp;#8217;ll see you there!&lt;/p&gt;
</description>
      <pubDate>Wed, 11 Jun 2008 09:38:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/lVPeZcBh_FY/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/06/11/ruby_hoedown/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/06/11/ruby_hoedown/</feedburner:origLink></item>
    <item>
      <title>Prices: To Publish, or Not to Publish?</title>
      <description>&lt;p&gt;It&amp;#8217;s an age-old question for services companies: should we publish our prices, at least some of them, or should we wait until we&amp;#8217;ve had a conversation with a potential client before discussing price? Recently at Terralien we&amp;#8217;ve changed our answer to that question and decided to start publishing some of our prices, and I thought I&amp;#8217;d write a bit about the thought process that went in to the decision.&lt;/p&gt;
&lt;p&gt;Actually this process started at least a year ago when I added a little drop-down box to our contact form that had general budget information in it. The options started at $10k and went up from there, and the reasoning was simple: I was getting at least one request a week from people looking to get their huge projects done for $2k (more or less). Talking to people with such unrealistic expectations was a complete waste of time: no, we&amp;#8217;re not going to do your 400+ hour design/development project for $5/hour. Really. And just putting that little $10,000 budget as the lowest option immediately cut these requests out almost completely.&lt;/p&gt;
&lt;p&gt;Now we&amp;#8217;ve taken it a step further: on our &lt;a href="http://terralien.com/about/product-outlining"&gt;Product Outlining&lt;/a&gt; and &lt;a href="http://terralien.com/about/launch-cycles"&gt;Launch Cycle&lt;/a&gt; pages you&amp;#8217;ll find a published price for each of those services. These prices, and a price for our Background Work, also show up on our updated &lt;a href="http://terralien.com/contact"&gt;contact page&lt;/a&gt; as well. Of course, all prices are negotiable &amp;#8211; we&amp;#8217;d love to customize a project for you that fits your budget and your timeline. That said, we think that providing at least a starting point for negotiations helps potential clients to envision and plan what it would take to get their idea live, and that&amp;#8217;s important for an entrepreneur.&lt;/p&gt;
&lt;p&gt;We had some interesting internal discussions about publishing prices, and I&amp;#8217;m not 100% sure it&amp;#8217;s something we&amp;#8217;ll do long-term &amp;#8211; for now it&amp;#8217;s very much on probation. There are concerns that it makes us appear as a commodity instead of the custom software shop we are. On the other hand, there was a lot of internal excitement about being so transparent. As entrepreneurs ourselves, we know how useful it can be to get an initial peek at what it might take to launch our ideas before diving in to details negotiations.&lt;/p&gt;
&lt;p&gt;So what are your thoughts? Should services companies publish at least some of their prices? Should Terralien? Does it help or hurt?&lt;/p&gt;</description>
      <pubDate>Wed, 04 Jun 2008 11:22:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/D3QWBwjyRzk/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/06/04/prices_to_publish_or_not/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/06/04/prices_to_publish_or_not/</feedburner:origLink></item>
    <item>
      <title>Refining and Refreshing</title>
      <description>&lt;p&gt;We just launched a refresh of the content on our &lt;a href="http://terralien.com"&gt;main site&lt;/a&gt; &amp;#8211; do check it out! While the changes aren&amp;#8217;t very drastic, they do reflect a significant refinement to how we do business and I wanted to take the opportunity to talk a bit about why we made them&amp;#8230;&lt;/p&gt;
&lt;p&gt;As any business owner will tell you, two years of running a business will net you a lot of learning, and that&amp;#8217;s certainly been true with Terralien. As I&amp;#8217;ve worked with clients and crew members over the past two years, I&amp;#8217;ve been able to start recognizing some patterns in the requests that we get, and in the expectations that our clients have. In particular I&amp;#8217;ve found that our clients highly value three things: insight, predictability, and transparency. Every successful Terralien project has had a high level of these three things, and every failure of any size has been lacking in one or more of them. I&amp;#8217;ve come to realize that if Terralien can consistently deliver all three, we stand a good chance of making each and every project a raging success, which is of course our ever-present goal. So how are we addressing each of them?&lt;/p&gt;
&lt;p&gt;In the area of insight one of the primary ways we&amp;#8217;ve failed in the past is at the start. We&amp;#8217;re not big fans of lots of up-front planning, but me whipping out an estimate in a couple of hours was &lt;em&gt;not&lt;/em&gt; cutting it. Part of the difficulty is the snow-ball effect &amp;#8211; if the project gets started off on the wrong foot, it&amp;#8217;s a lot more likely that things will get worse than that they will get better. Thus we&amp;#8217;ve started going through an explicit &lt;a href="http://terralien.com/about/product-outlining"&gt;product outlining&lt;/a&gt; process with most clients where we spend some quality time understanding what needs building before we try to build it. As an added benefit, product outlining generates portable insight: clients can take what we learn and use it to get estimates from shops other than Terralien. Definitely &lt;a href="http://terralien.com/about/product-outlining"&gt;check out the details&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Predictability is a real conundrum since we haven&amp;#8217;t yet figured out how to predict the future, and reading &amp;#8220;Prognostication for Dummies&amp;#8221; didn&amp;#8217;t seem to help much. Regardless of the difficulties, though, this is one of the most immediate concerns clients have, and every project starts out with the same questions: &amp;#8220;How much will it cost and how long will it take?&amp;#8221; While we can&amp;#8217;t predict the future, past experience has taught us that we can almost always launch a useful product in about two months. We call these two month time boxes &lt;a href="http://terralien.com/about/launch-cycles"&gt;launch cycles&lt;/a&gt; and we&amp;#8217;re finding they really help clients to both know what their budget will be for initial launch and to stay focused within that window.&lt;/p&gt;
&lt;p&gt;Finally, there&amp;#8217;s the all-important quality of transparency. Transparency isn&amp;#8217;t so much about one big thing; rather, it&amp;#8217;s about a lot of little things that add up to a big thing. If a client is paying us they deserve to know how the work is going and to feel comfortable with our progress, and there are lots of small ways we&amp;#8217;ve learned and are learning to keep them in the loop. Most important is just making sure they&amp;#8217;re comfortable telling us when they&amp;#8217;re not satisfied so we can fix it, and I personally am learning a lot about making myself open and available to hear the concerns. It&amp;#8217;s not always easy to do, but it&amp;#8217;s always worth it.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ve really tried to capture the essence of these things in the site refresh, so please have a look and let us know if we&amp;#8217;ve succeeded. &lt;a href="http://terralien.com/contact"&gt;Feedback is always welcome!&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 05 May 2008 14:03:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/7J5UG67zdaY/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2008/05/05/refining_and_refreshing/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2008/05/05/refining_and_refreshing/</feedburner:origLink></item>
    <item>
      <title>"Camping in 10" at BarCampRDU</title>
      <description>&lt;p&gt;I&amp;#8217;m currently hanging out at &lt;a href="http://barcamp.org/BarCampRDU"&gt;BarCampRDU&lt;/a&gt; 2007 and having a blast. BarCamps are &amp;#8220;unconferences&amp;#8221;, which means the talks are proposed and given by the attendees on the day of the conference. Rather than just soak it all in, I decided to throw my hat in to the presenting ring and do a redux of the &lt;em&gt;Camping in 10&lt;/em&gt; talk I put together for &lt;a href="http://ruby.meetup.com/3/"&gt;Raleigh.rb&lt;/a&gt; a little while ago. After getting through a few projector struggles, it went really well, and I was able to expose about 30 people to Camping.&lt;/p&gt;
&lt;p&gt;A few folks asked for my slides, so I threw them up on the interwebs, and you can get them here: &lt;a href="http://talbott.ws/personal/talks/camping_in_10.pdf"&gt;&lt;em&gt;Camping in 10&lt;/em&gt; slides&lt;/a&gt;. Enjoy, and if you attended the talk and end up writing a Camping app of your own, drop me an email or a comment and tell me about it &amp;#8211; I&amp;#8217;d love to see what folks come up with.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/210721"&gt;Ya&amp;#8217;ll make delicious pork pies!&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 04 Aug 2007 11:40:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/mTjKNMrIwdM/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2007/08/04/camping_in_10_at_barcamprdu/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2007/08/04/camping_in_10_at_barcamprdu/</feedburner:origLink></item>
    <item>
      <title>Sales Jeopardy! at RailsConf!</title>
      <description>&lt;p&gt;So the tricky part about proposing a talk so many months in advance is that you never know what you&amp;#8217;ll have learned (or not learned) by the time the conference actually rolls around. Back in November when I proposed &lt;a href="http://conferences.oreillynet.com/cs/rails2007/view/e_sess/11559"&gt;my RailsConf talk&lt;/a&gt;, I was thinking that by now I would&amp;#8217;ve reduced my sales and marketing efforts down to at least a general outline I could share with those at the conference. Boy was I wrong! The more I work to land projects, the more I realize that at least in this business, each sales process is unique as a snowflake. Yup, that&amp;#8217;s right, the &amp;#8220;&lt;span class="caps"&gt;MVC&lt;/span&gt;&amp;#8221; pattern I put in the abstract is really clever, but turns out to not be very useful, at least for me.&lt;/p&gt;
&lt;p&gt;So where&amp;#8217;s that leave my presentation on Saturday? Never fear! Because while snowflakes are each unique, they do share common properties. So what I&amp;#8217;m going to do is switch from focusing on a process, and instead do my best to pass along the tips, tricks and rules of thumb I&amp;#8217;ve picked up over the last year and a half of selling Terralien. I might not have a useful system for selling custom software, but I sure have a lot of great &amp;#8220;lessons learned&amp;#8221; that I think everyone at the talk will find hugely valuable.&lt;/p&gt;
&lt;p&gt;Upon figuring all this out, I was left with one problem: how do I structure the presentation? I mean, c&amp;#8217;mon, every presentation needs a gimmick, right? After much mulling, I struck upon the perfect approach a few days ago, and instead of doing a plain old boring presentation, we&amp;#8217;re going to do a super-agile game show! That&amp;#8217;s right, we&amp;#8217;ll be playing &lt;strong&gt;Sales Jeopardy!&lt;/strong&gt;, with actual cash prizes to boot. Of course, not being a rich TV show, the prizes will lose a few zeroes off the usual Jeopardy pay-out, but hey, somebody might be able to at least buy themselves dinner ;-)&lt;/p&gt;
&lt;p&gt;Hope to see you on Saturday in Portland!&lt;/p&gt;
</description>
      <pubDate>Wed, 16 May 2007 14:20:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/5Q9UhqrGiRM/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2007/05/16/sales_jeopardy_at_railsconf/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2007/05/16/sales_jeopardy_at_railsconf/</feedburner:origLink></item>
    <item>
      <title>Ruby Hoedown!</title>
      <description>&lt;p&gt;I don&amp;#8217;t want to dup the whole post, but in case you don&amp;#8217;t follow &lt;a href="http://blog.talbott.ws/"&gt;my personal blog&lt;/a&gt;, &lt;a href="http://blog.talbott.ws/articles/2007/3/28/ruby-hoedown/"&gt;I just posted over there about the upcoming&lt;/a&gt; &amp;nbsp;&lt;a href="http://www.rubyhoedown.com/"&gt;Ruby Hoedown 2007&lt;/a&gt;. Have a look and make sure to sign up for the announcement list if you&amp;#8217;re at all interested in coming. See you in August!&lt;/p&gt;
</description>
      <pubDate>Tue, 27 Mar 2007 21:01:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/fNe7rie7Ujg/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2007/03/27/ruby_hoedown_again/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2007/03/27/ruby_hoedown_again/</feedburner:origLink></item>
    <item>
      <title>Ruby Tidbit: Enumerable#collect_one</title>
      <description>&lt;pre&gt;
&lt;code&gt;  module Enumerable
    def collect_one(default=nil)
      inject(default) do |d,e|
        if v = yield(e)
          break v
        else
          d
        end
      end
    end
  end&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;So this:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;  element = %w(a bb ccc).detect{|e| /b/ =~ e}
  size = (element ? element.size : 0)&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Becomes this:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;  size = %w(a bb ccc).collect_one(0){|e| e.size if /b/ =~ e}&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Discussion starter: does the name communicate?&lt;/p&gt;
</description>
      <pubDate>Thu, 01 Mar 2007 14:02:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/OyZjJDbYyeY/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2007/03/01/ruby_tidbit_enumerablecollect_one_again/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2007/03/01/ruby_tidbit_enumerablecollect_one_again/</feedburner:origLink></item>
    <item>
      <title>TextMate tip - Run Last</title>
      <description>&lt;p&gt;When coding Ruby, I love being able to run a test suite right in &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; (Command-R), but recently I was wanting something a bit more. Back in my bad old &lt;a href="http://eclipse.org/"&gt;Eclipse&lt;/a&gt; days, I used a nice little feature that let you hit Ctrl-F11 to re-launch the last command you&amp;#8217;d run in the &lt;span class="caps"&gt;IDE&lt;/span&gt;, regardless of where you currently were. After an intensive cycle of test-code-test-code in TextMate, I was getting tired of having to switch back to my test to re-run it, so I decided to take a page from Eclipse&amp;#8217;s book and &amp;#8220;Run Last&amp;#8221; was born. Lets walk through it.&lt;/p&gt;
&lt;h3&gt;Create the new command (by ripping off the standard one)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Hop in to TextMate (it&amp;#8217;s already running, isn&amp;#8217;t it?)&lt;/li&gt;
&lt;li&gt;Select &amp;#8220;Bundles&amp;gt;Bundle Editor&amp;gt;Edit Commands&amp;#8221; from the menu&lt;/li&gt;
&lt;li&gt;Expand the Ruby bundle, and select the &amp;#8220;Run&amp;#8221; command&lt;/li&gt;
&lt;li&gt;Click the little &amp;#8216;double-plus&amp;#8217; at the bottom, which duplicates the current command&lt;/li&gt;
&lt;li&gt;Name the new command &amp;#8216;Run Last&amp;#8217;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Make it use our special file&lt;/h3&gt;
&lt;p&gt;With &amp;#8220;Run Last&amp;#8221; still selected, paste this in to the text area:&lt;br /&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;pre&gt;&lt;code&gt;
  export RUBYLIB="$TM_BUNDLE_SUPPORT/RubyMate${RUBYLIB:+:$RUBYLIB}"
  export TM_RUBY=$(which "${TM_RUBY:-ruby}")&lt;/p&gt;
export TM_FILEPATH=`cat &amp;#8220;$TM_PROJECT_DIRECTORY/.tm_last_run_ruby&amp;#8221;`
cat &amp;#8220;$TM_FILEPATH&amp;#8221; | &amp;#8220;${TM_RUBY}&amp;#8221; &amp;#8212; &amp;#8220;$TM_BUNDLE_SUPPORT/RubyMate/run_script.rb&amp;#8221;
&lt;p&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br/&gt;
What we&amp;#8217;re doing is reading a hidden &amp;#8216;.tm_last_run_ruby&amp;#8217; file to figure out what file to run.&lt;/p&gt;
&lt;h3&gt;Get the special file written out&lt;/h3&gt;
&lt;p&gt;Now go back to the &amp;#8220;Run&amp;#8221; command, and change it to this:&lt;br /&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;pre&gt;&lt;code&gt;
  export RUBYLIB="$TM_BUNDLE_SUPPORT/RubyMate${RUBYLIB:+:$RUBYLIB}"
  export TM_RUBY=$(which "${TM_RUBY:-ruby}")&lt;/p&gt;
echo &amp;#8220;$TM_FILEPATH&amp;#8221; &amp;gt; &amp;#8220;$TM_PROJECT_DIRECTORY/.tm_last_run_ruby&amp;#8221;
&amp;#8220;${TM_RUBY}&amp;#8221; &amp;#8212; &amp;#8220;$TM_BUNDLE_SUPPORT/RubyMate/run_script.rb&amp;#8221;
&lt;p&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br/&gt;
This writes out the file about to be run to the special &amp;#8216;.tm_last_run_ruby&amp;#8217; file.&lt;/p&gt;
&lt;h3&gt;Enjoy!&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Assign a key combo to &amp;#8220;Run Last&amp;#8221;. I use Command-Ctrl-R.&lt;/li&gt;
&lt;li&gt;Delete the scope in &amp;#8220;Run Last&amp;#8221; &amp;#8211; we want to be able to run it anywhere and everywhere.&lt;/li&gt;
&lt;li&gt;Ignore &amp;#8216;.tm_last_run_ruby&amp;#8217; in your source control, lest it bug you.&lt;/li&gt;
&lt;li&gt;Run a Ruby file like normal, then go anywhere and re-run it with impunity.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Make it better&lt;/h3&gt;
&lt;p&gt;This is totally my little hack &amp;#8211; if you have ideas for a better way to do it, I&amp;#8217;d love to hear them. Also, if there&amp;#8217;s a good way to distribute things like this that doesn&amp;#8217;t involve all the manual steps, I&amp;#8217;d love tips on that, too. And of course, if this helps you, I&amp;#8217;d love to hear about it.&lt;/p&gt;</description>
      <pubDate>Thu, 08 Feb 2007 10:40:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/lvAkWnB5oz4/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2007/02/08/textmate_tip_run_last_again/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2007/02/08/textmate_tip_run_last_again/</feedburner:origLink></item>
    <item>
      <title>Rails Sharing++</title>
      <description>&lt;p&gt;Our own &lt;a href="http://terralien.com/about/people/#johnlong"&gt;John Long&lt;/a&gt; has &lt;a href="http://wiseheartdesign.com/2006/12/6/rails-needs-something-better-than-engines/"&gt;a very thought-provoking article&lt;/a&gt; over on his weblog about Rails needing &lt;em&gt;something&lt;/em&gt; better than Engines for sharing large chunks of functionality between applications. While John and I have had a lively discussion about where the infrastructure for such sharing should live, we both agree 100% that (a) we need something better than what we have, and (b) Rails itself should at least make it easier to do things like add additional template_roots and externally define new routes. So go have a read, have a look at some of the various attempts in existence (such as &lt;a href="http://github.com/radiant"&gt;Radiant&amp;#8217;s extension system&lt;/a&gt;, &lt;a href="http://mephistoblog.com/2006/11/15/mephisto-plugins-day-1-and-2"&gt;Mephisto&amp;#8217;s plugin infrastructure&lt;/a&gt;, &lt;span style="text-decoration:line-through;"&gt;PluginAWeek&amp;#8217;s collection of plugins&lt;/span&gt; (no longer available) or &lt;a href="http://rails-engines.org/"&gt;the venerable Rails Engines&lt;/a&gt;) and lets all start brainstorming and hacking to find the best solution going forward.&lt;/p&gt;
</description>
      <pubDate>Tue, 19 Dec 2006 11:08:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/tmee7wsdojo/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/12/19/rails_sharing/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/12/19/rails_sharing/</feedburner:origLink></item>
    <item>
      <title>Using Protected Attributes in your Rails Models</title>
      <description>&lt;p&gt;Terralien crew member &lt;a href="http://terralien.com/about/people/#matthewbass"&gt;Matthew Bass&lt;/a&gt; has a great article over on his weblog outlining &lt;a href="http://www.matthewbass.com/blog/2006/11/26/using-protected-attributes-in-your-rails-models/"&gt;how to use protected attributes to protect your Rails models from malicious use&lt;/a&gt;. Definitely worth a read, both to understand one of the vulnerabilities that a Rails application can have, and how to combat it.&lt;/p&gt;
</description>
      <pubDate>Tue, 28 Nov 2006 09:40:44 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/nPrvBjcAs4o/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/11/28/using_protected_attributes_in_your_rails/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/11/28/using_protected_attributes_in_your_rails/</feedburner:origLink></item>
    <item>
      <title>Ruby Certification NOW!</title>
      <description>&lt;p&gt;Terralien is a people-centric business. I just had a conversation with a customer wherein he praised the developer working on his project (&lt;a href="http://terralien.com/about/people/#matthewbass"&gt;Matthew Bass&lt;/a&gt;) up one side and down the other, asked me how in the world I found such a great developer, and then wondered somewhat incredulously if I had any more. Why yes, as a matter of fact I do, and if you&amp;#8217;d like one working on your project, drop me a line :-)&lt;/p&gt;
&lt;p&gt;But that is a good question &amp;#8211; how &lt;em&gt;do&lt;/em&gt; I find great developers (and designers) for the Terralien network? Just like with any other selection process, I stereotype, judge and discriminate. Oops, I guess the more politically correct term these days is, I &amp;#8220;filter&amp;#8221;. So what are my filter criteria? Well, some of the folks in Terralien are people I&amp;#8217;ve worked with in the past. That one&amp;#8217;s pretty easy &amp;#8211; I know from first-hand experience they can cut it. In the absence of that, the first thing I&amp;#8217;m looking for is code, often via the open source projects someone is involved with. Oh, and seeing the code goes for designers just as much as it does for developers &amp;#8211; pretty is great and necessary, but what I really want to know is does the designer get the web, and their code is the best way to tell that.&lt;/p&gt;
&lt;p&gt;I have two other filters that really matter to me. First, I want to see how someone communicates. One of the Terralien distinctives is that we&amp;#8217;re not just code monkeys &amp;#8211; everyone communicates well with the &amp;#8220;business people&amp;#8221; and can do their own day-to-day project management. Thus I&amp;#8217;m looking for blogging, conference presentations, project documentation, etc., that will tell me if the person involved is a good communicator. Second, entrepreneurial pursuits are really important to me, since they say something about initiative and a passion for software that goes beyond the technology and in to the business. Since we like working with people starting things, it makes a big difference if my designers and developers have tried to start something themselves.&lt;/p&gt;
&lt;p&gt;So what does all this have to do with certification? Well, there&amp;#8217;s been a big rumbling in the Ruby community lately about certification, brought on by &lt;a href="http://on-ruby.blogspot.com/2006/11/ruby-certification-what-should-it.html"&gt;Pat Eyler&amp;#8217;s revelation that he&amp;#8217;s working with a university on a certification program&lt;/a&gt;. Now I know Pat, and I know he&amp;#8217;s very interested in community feedback, as his &lt;a href="http://on-ruby.blogspot.com/2006/11/ruby-certification-is-it-worth-it.html"&gt;Ruby Certification: Is It Worth It?&lt;/a&gt; post makes clear. My impression is that Pat might be on the fence, especially now that guys like &lt;a href="http://weblog.jamisbuck.org/2006/11/10/just-say-no-to-certification"&gt;Jamis Buck are saying &lt;span class="caps"&gt;NOT&lt;/span&gt; to do it&lt;/a&gt;, and I want to make sure he makes the right decision.&lt;/p&gt;
&lt;p&gt;So here&amp;#8217;s what I think, Pat &amp;#8211; we need Ruby certification (and Rails certification) as soon as you can make it happen. It would simplify my filtering job a lot, since I would be able to immediately discount a whole swath of potential network members. I&amp;#8217;d be able to quickly tell if someone just can&amp;#8217;t cut it in the real world, has trouble communicating, is more interested in having things given to them than in making things happen, has no passion for software, and likes to buy their way rather than earning it. This would be of great value to me, and to a lot of others like me, so lets do it sooner rather than later.&lt;/p&gt;
&lt;p&gt;Now, I know a lot of people are going to say that someone having a certification doesn&amp;#8217;t tell you any of those things, but they&amp;#8217;re wrong. You see, the problem most people have when filtering by certification is that they disqualify people who &lt;strong&gt;don&amp;#8217;t&lt;/strong&gt; have them. I&amp;#8217;ll be instantly disqualifying everyone who &lt;strong&gt;does&lt;/strong&gt; have a certification, or at least everyone who&amp;#8217;s lame enough to tell me they do, and I can&amp;#8217;t think of a better first-pass filter.&lt;/p&gt;
&lt;p&gt;So what are we waiting for? Lets make this Ruby certification thing happen, and start separating the wheat from the chaff. It&amp;#8217;ll just make my job that much easier.&lt;/p&gt;
</description>
      <pubDate>Wed, 15 Nov 2006 10:55:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/jBi9-oo0sCQ/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/11/15/ruby_certification_now/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/11/15/ruby_certification_now/</feedburner:origLink></item>
    <item>
      <title>Repeating Query Parameter (Quick Tip)</title>
      <description>&lt;p&gt;Say you&amp;#8217;re using &lt;a href="http://api.rubyonrails.com/classes/ActiveRecord/Base.html#M000860"&gt;ActiveRecord&lt;/a&gt;, and you want to write a query that uses the same parameter value several times. For instance:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;
  Lead.find(:all, :conditions =&amp;gt; 
    ['created_at &amp;gt; ? AND updated_at &amp;gt; ? AND published_at &amp;gt; ?', 
      10.days.ago, 10.days.ago, 10.days.ago])
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Hmmm&amp;#8230; that&amp;#8217;s not very &lt;a href="http://www.artima.com/intv/dry.html"&gt;&lt;span class="caps"&gt;DRY&lt;/span&gt;&lt;/a&gt;, is it? How about we spiff it up some with a bit of Ruby hackery:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;
  Lead.find(:all, :conditions =&amp;gt; 
    ['created_at &amp;gt; ? AND updated_at &amp;gt; ? AND published_at &amp;gt; ?', 
      *([10.days.ago] * 3)])
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;That works, and it&amp;#8217;s probably the shortest solution you&amp;#8217;ll find, but it has a few problems. Most glaringly, we&amp;#8217;re still not really &lt;span class="caps"&gt;DRY&lt;/span&gt;, because the idea that there are three query parameters is repeated in both the query itself and in the substitution values. Named parameters to the rescue:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;
  Lead.find(:all, :conditions =&amp;gt; 
    ['created_at &amp;gt; :time_limit AND updated_at &amp;gt; :time_limit AND published_at &amp;gt; :time_limit', 
      {:time_limit =&amp;gt; 10.days.ago}])
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;While this is actually the longest solution character-wise, it&amp;#8217;s the shortest conceptually, and that&amp;#8217;s the way we like it. The one other thing I&amp;#8217;d want to do in a case like this is look at the underlying data model and make sure there&amp;#8217;s a good reason to repeat the parameter like that&amp;#8230; but that&amp;#8217;s a topic for another day.&lt;/p&gt;
&lt;p&gt;Named parameters are an oft-neglected option in ActiveRecord, even though &lt;a href="http://www.robbyonrails.com/articles/2005/10/21/using-named-placeholders-in-ruby"&gt;folks like Robby were riffing on them over a year ago&lt;/a&gt;. They&amp;#8217;re a major DRY&amp;#8217;ing agent, so add them to your toolbox today!&lt;/p&gt;
</description>
      <pubDate>Fri, 10 Nov 2006 11:16:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/Bk9lCOiZGvY/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/11/10/repeating_query_parameter_quick_tip/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/11/10/repeating_query_parameter_quick_tip/</feedburner:origLink></item>
    <item>
      <title>Site Downtime</title>
      <description>&lt;p&gt;It figures that right after putting up &lt;a href="http://blog.terralien.com/past/2006/10/26/open_classes_open_companies_rubyconf_2006/"&gt;my RubyConf talk&lt;/a&gt; the server I host &lt;a href="http://terralien.com/"&gt;terralien.com&lt;/a&gt; on would bounce, and I would find out that the cron job I set up to re-spawn the site didn&amp;#8217;t quite work. Oh, and that all this would occur whilst I was out all day at meetings. And on top of this, I would attempt to show a client our portfolio page in the midst of a sales meeting and get a 500 error. Oh Murphy, how I love thee, let me count the ways&amp;#8230;&lt;/p&gt;
&lt;p&gt;Moral of the story? Test your cron jobs, especially the ones that only happen at system boot. Only an idiot wouldn&amp;#8217;t (d&amp;#8217;oh!).&lt;/p&gt;
</description>
      <pubDate>Fri, 27 Oct 2006 16:04:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/Gf6D8qC8KsU/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/10/27/site_downtime_again/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/10/27/site_downtime_again/</feedburner:origLink></item>
    <item>
      <title>Open Classes, Open Companies - RubyConf 2006</title>
      <description>&lt;p&gt;&lt;em&gt;This was my talk at &lt;a href="http://www.rubyconf.org/"&gt;RubyConf&lt;/a&gt; 2006, and I can&amp;#8217;t tell you what an honor it was for me to address RubyConf for the sixth consecutive year. With each passing year I&amp;#8217;ve been a little more surprised, since I just know that someday, one of two things is going to happen: either a baby is going to come in October, or the organizers are going to realize they could fill the time better! Until then, though, I&amp;#8217;ll just keep enjoying the opportunity to get up in front of some of the smartest, friendliest people I know, throw some ideas out, and learn something from the conversation that ensues. And boy, have I learned a few things in the past six years!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So here&amp;#8217;s the basic premise for today&amp;#8217;s talk &amp;#8211; the language you&amp;#8217;ve chosen to spend time with, &lt;a href="http://ruby-lang.org/"&gt;Ruby&lt;/a&gt;, has certain characteristics that in turn reflect back on you, for better or for worse. I want to take what I consider to be some of the most positive characteristics of Ruby and use them to shine a light on what I further consider to be some of the best ways of doing business &amp;#8211; at least if you&amp;#8217;re a Rubyist.&lt;/p&gt;
&lt;p&gt;A disclaimer &amp;#8211; we&amp;#8217;re going to be talking about my experiences, both personal as well as what I&amp;#8217;ve been able to vicariously glean from the writings and presentations of others. I don&amp;#8217;t suppose to know very much about business, and in fact, that&amp;#8217;s one of the reasons I&amp;#8217;m excited to be giving this talk. I&amp;#8217;m really, really hoping that you take these ideas about business and turn them over, poke at them, try them out, and report your experiences. That&amp;#8217;s what I&amp;#8217;ve had the opportunity to do over the last year or so, and what I plan to continue doing in to the foreseeable future, and let me tell you, it&amp;#8217;s a lot of fun.&lt;/p&gt;
&lt;p&gt;From whence do these experiences grow? Well, at the end of 2005, after trying my hand at being a regular employee (that didn&amp;#8217;t really work out), I decided to get serious about doing consulting. Even while making the transition back in to freelance work, it became readily apparent that being completely independent was going to be tough. Either you&amp;#8217;re heads down, trying to get client work done, or you&amp;#8217;re scrambling to try to find work when you get finished with a client. Sure, you can hold down multiple contracts, but that&amp;#8217;s a recipe for not seeing your family much and not having time to work on other ventures.&lt;/p&gt;
&lt;p&gt;The other thing I quickly realized when I got back in to consulting was that my 5+ years in the Ruby community was finally starting to pay off, as the Rails boom was driving demand, and I already had an established name. So, I found &lt;a href="http://terralien.com/about/people/"&gt;some of the best developers and designers&lt;/a&gt; I knew that were available and interested in breaking in to Ruby and Rails, and I started finding work, sub-contracting it out, and supporting work in progress. Thus &lt;a href="http://terralien.com/"&gt;Terralien&lt;/a&gt; was born &amp;#8211; it&amp;#8217;s a very different feel from any contracting/consulting company I&amp;#8217;ve ever seen (in a good way), and it&amp;#8217;s been a blast.&lt;/p&gt;
&lt;p&gt;Now that you know a little bit more about where this is coming from, lets jump right in to our analogy. Again, &lt;strong&gt;the premise is that the language we&amp;#8217;ve decided to spend time with, Ruby, has certain characteristics that we value, and that we can gain some insight in to business by looking at how those characteristics manifest in business.&lt;/strong&gt; So for our first characteristic, lets look at &lt;strong&gt;dynamic&lt;/strong&gt;. This is one of the first things a lot of people hear about Ruby &amp;#8211; &amp;#8220;It&amp;#8217;s a dynamic language&amp;#8221;. It&amp;#8217;s good that it&amp;#8217;s a positive word, unfortunately it&amp;#8217;s also a very vague one. For me, when I say Ruby&amp;#8217;s &amp;#8220;dynamic&amp;#8221;, I&amp;#8217;m contrasting that against &amp;#8220;static&amp;#8221;, and I&amp;#8217;m talking about Ruby&amp;#8217;s typing. In practical terms, Ruby&amp;#8217;s dynamism means that I get to spend my time building my program, not feeding a type checker. The boogy-man of ending up with a type I don&amp;#8217;t expect pretty much stays in the closet, and I get a lot more done. Static typing sounds great in theory, but in practice turns out to not be worth the cost.&lt;/p&gt;
&lt;p&gt;Where do we find this in business? How about job titles? &amp;#8220;Everyone needs to know where they fit and what they&amp;#8217;re responsible for.&amp;#8221; Sounds good in theory, but does it work out so well in practice? Think about your current title. Does it help you do your job? My experience has been that when you stick a person in a box, they happily stay in it. This is nice for Human Resources, since it makes it easier to figure out what to pay that person. It&amp;#8217;s not so nice for the long-term success of your business, however, since that person becomes, even if just sub-consciously, limited in what they will and won&amp;#8217;t do by the title they&amp;#8217;ve been given.&lt;/p&gt;
&lt;p&gt;In Ruby we have duck-typing, right? If it walks like a duck and quacks like a duck, it must be a duck. When I came to RubyConf in 2001, I was a programmer. I bet you can list off a litany of things a programmer is &amp;#8211; but have you ever thought of what a programmer isn&amp;#8217;t? A programmer isn&amp;#8217;t an accountant, isn&amp;#8217;t a &amp;#8220;business person&amp;#8221;, isn&amp;#8217;t a salesman, isn&amp;#8217;t ultimately responsible for the success of the business. And so when I came to the 2002 RubyConf in Seattle, I wasn&amp;#8217;t a salesman, even though I&amp;#8217;ve now found out that I can quack a lot like a salesman. What if I hadn&amp;#8217;t been boxed in by my own myopic views of titles? Maybe I wouldn&amp;#8217;t have been laid off in 2003, because maybe I would&amp;#8217;ve grown beyond the code and taken ahold of the business.&lt;/p&gt;
&lt;p&gt;Of course, hindsight is 20/20, and I&amp;#8217;m sure there was a lot I needed to learn between where I was then and where I am now &amp;#8211; things that help me to sell now. Things like Ruby, which has since taught me the power of dynamism and not being too quick to label things.&lt;/p&gt;
&lt;p&gt;Where to next? How about this one &amp;#8211; Ruby is &lt;strong&gt;interpreted&lt;/strong&gt;. By this I&amp;#8217;m not so much referring to Ruby&amp;#8217;s current implementation that happens to run the program straight out of source code, but rather to the fact that in Ruby, the program that gets run is order-dependent. I know coming from Java to Ruby, this one tripped me up &amp;#8211; the difference here goes way beyond not having a &amp;#8220;main&amp;#8221; method. Once you embrace the simple fact that Ruby strictly, without fail, interprets statements as it encounters them, you&amp;#8217;ll start to understand something fundamentally different about Ruby, something that adds great power. For instance, all that nifty meta-programming in Rails that gives us validates_presence_of and it&amp;#8217;s ilk &amp;#8211; that flows from the interpreted nature of Ruby as much as it does from the ease of meta-programming.&lt;/p&gt;
&lt;p&gt;So what insight for business can we draw from Ruby&amp;#8217;s interpreted nature? How about this &amp;#8211; it&amp;#8217;s much more powerful to be able to react to changes as they happen than it is to plan what&amp;#8217;s going to happen in advance. Interpretive code is inherently more flexible, because so many things can be decided at run-time, and in the same way, a business that can put as many decisions off until the last possible moment is a business that will weather external change much more smoothly. Of course, Ruby&amp;#8217;s built for this, and a business that&amp;#8217;s going to do it will have to be, too.&lt;/p&gt;
&lt;p&gt;Have you read the original &lt;a href="http://www.amazon.com/gp/product/0345370775?ie=UTF8&amp;amp;tag=talbottfamily-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0345370775"&gt;Jurassic Park&lt;/a&gt;? One of my favorite parts of that book is the meta-narrative that surrounds the chapters, which weave a lecture by the book&amp;#8217;s mathematician character around the whole &amp;#8220;modern day dinosaurs&amp;#8221; theme. In that meta-narrative, he explains how systems must walk the line between order and chaos. If they get too ordered, they will become too rigid, and get overrun by something more flexible. If on the other hand they become to chaotic, they will lose cohesion and fly apart at the seams. When I talk about putting decisions off, I don&amp;#8217;t mean to imply that decisions should be avoided altogether &amp;#8211; rather that we want to remain adaptive until the last possible moment, make a decision when we need to and then keep moving. This line between chaos and order is fine, and I think Ruby walks it well &amp;#8211; hopefully my business can do the same.&lt;/p&gt;
&lt;p&gt;Paul Graham is entirely too quotable &amp;#8211; that guy just needs to slow down and let the rest of us catch up. Anyhow, he has this great quote, actually the title of one of his essays, &amp;#8220;&lt;a href="http://www.paulgraham.com/power.html"&gt;Succinctness is Power&lt;/a&gt;&amp;#8221;. To me that sums up a lot of the reasons I think we&amp;#8217;ve seen Ruby catapulted from obscure language out of Japan in to &amp;#8220;blow the doors off of RubyConf&amp;#8221; popularity. Ruby is &lt;strong&gt;succinct&lt;/strong&gt;, and I believe from what I&amp;#8217;ve heard matz say both &lt;a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/9030"&gt;just last week on ruby-core&lt;/a&gt; and &lt;a href="http://www.rubyist.net/~matz/slides/rc2002/"&gt;at RubyConfs in years past&lt;/a&gt; that succinctness is one of his goals for Ruby.&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s so great about succinctness? Well, it allows us to do more. The hypothesis Paul Graham puts forward in his article, and that I&amp;#8217;ve found holds true in my own experience, is that the amount of code we can produce is somewhat constant, on average, regardless of what language we&amp;#8217;re using. If that&amp;#8217;s true, then the more functionality a language allows you to implement in the same amount of code, the more powerful that language is. Of course, someone who uses &lt;span class="caps"&gt;PERL&lt;/span&gt; could stand up now and assert that &lt;span class="caps"&gt;PERL&lt;/span&gt; must therefore be more powerful than Ruby, because I think we can all agree that &lt;span class="caps"&gt;PERL&lt;/span&gt; is often more &amp;#8220;succinct&amp;#8221; than Ruby. The problem is that succinctness is a read/write thing &amp;#8211; code is read more than it&amp;#8217;s written, and for succinctness to be powerful, it can&amp;#8217;t be in a funky shorthand even the author has trouble reading afterwards.&lt;/p&gt;
&lt;p&gt;So Ruby is power, I&amp;#8217;m preaching to the choir, ra, ra, etc. What about business? Well, let me tell you one of the things that I think has been a secret of my success with Terralien. It&amp;#8217;s a closely guarded trade secret, you know&amp;#8230; well not really. Actually it&amp;#8217;s just that I&amp;#8217;ve never asked a client to sign any agreement of any kind longer than two pages in length. And the second page is usually just signatures. What&amp;#8217;s the secret here? Well, if succinctness is power in programming because it makes better use of the limited amount of code we can generate in a given week, then a succinct legal agreement is power because it makes wise use of the limited attention a client can give to figuring out what in the world he&amp;#8217;s signing his name to.&lt;/p&gt;
&lt;p&gt;Big disclaimer &amp;#8211; I am not a lawyer, and you should talk to one before you take my advice here. However, I would also encourage you to find a lawyer you can have a good fight with, because too much legal advice is just taken at face value. Have you ever had the feeling that you&amp;#8217;re just sort of making things up as you go along, and you wonder when somebody&amp;#8217;s going to figure it out and call you on it? Well, your lawyer does that to. Sure, he&amp;#8217;s had some expensive schooling, has some experience, and I&amp;#8217;m sure he knows more about the law than you do, but he&amp;#8217;s in a box (remember those?). From that box, everything is a threat except the fact that you might never actually do any work if you spend all your time worrying about threats.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the key point &amp;#8211; legal agreements have one purpose, and that purpose is to properly set expectations on paper, so that nobody gets surprised. When succinctness is neglected, we end up with a situation where that purpose is lost, and the legal document can actually obfuscate the expectations of each side, with each side defending their position rather than trying to come to a common understanding so they can work together.&lt;/p&gt;
&lt;p&gt;Lets say you&amp;#8217;re an employee &amp;#8211; how does this apply to you? Do you understand your employment agreement? Does it succinctly state both your and your employers expectations? Or does it obfuscate the fact that they expect you to be a corporate slave (maybe they call that the &amp;#8220;no moonlighting&amp;#8221; clause)? Or perhaps it says they want you having no part in that &amp;#8220;open source&amp;#8221; thing? I would highly recommend having a look at what you&amp;#8217;ve agreed to, and making sure your expectations are in line with your employer&amp;#8217;s.&lt;/p&gt;
&lt;p&gt;The next Ruby quality I&amp;#8217;d like to consider is &lt;strong&gt;reflection&lt;/strong&gt;. Now, a lot of languages have reflection, but what I find great about Ruby&amp;#8217;s reflection is its extreme transparency and the way it&amp;#8217;s built in to the language from the ground up. Rather than an occasional trick used to work around language limitations, reflection in Ruby is a constant companion. One reason I think reflection is so key to Ruby is Ruby&amp;#8217;s dynamic nature we talked about earlier &amp;#8211; we have to have reflection in order to deal with everything not having a label.&lt;/p&gt;
&lt;p&gt;In business, I think the same is true. If we don&amp;#8217;t box ourselves in with titles and roles, then we need constant reflection on what we&amp;#8217;re doing, how it&amp;#8217;s working, and what we could change. Ask yourself &amp;#8211; does the business you&amp;#8217;re involved with now make asking questions about the way things are done easy? Or is it uncomfortable and potentially perilous?&lt;/p&gt;
&lt;p&gt;The last characteristic of Ruby I&amp;#8217;d like to discuss is the first one I analogized when I was trying to write a proposal for this talk. It&amp;#8217;s also potentially the most controversial out of the bunch. I&amp;#8217;m talking about Ruby&amp;#8217;s &lt;strong&gt;open classes&lt;/strong&gt; &amp;#8211; allowing any code, anywhere in the program, to open up an existing class and add functionality to it, remove functionality from it, or generally mess around with its internals. Of course, this goes so far as having &amp;#8220;evil&amp;#8221; methods like #instance_variable_get and #instance_variable_set that allow us to intentionally break encapsulation. Could I break things horribly? Sure, but Ruby treats me like an adult and for that I love it.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the trade-off I think Ruby makes in intentionally allowing open classes &amp;#8211; it values open communication and implementor power over security through obscurity and implementor safety. That&amp;#8217;s something I want to do in my business &amp;#8211; trade the security and safety of hiding information for the possibility of my sub-contractors and clients suggesting and doing useful things I never would have thought of because they can see what&amp;#8217;s going on inside my business.&lt;/p&gt;
&lt;p&gt;This can get scary, because when people close to you know so much about you, they can really hurt you. However, I&amp;#8217;ve found that open communication, especially in the face of personal risk, is very good at building trust, which is the essential ingredient of any successful business transaction. If you don&amp;#8217;t trust the other person, I don&amp;#8217;t care how great your lawyers are, the deal is not going to be a good one in the long-term.&lt;/p&gt;
&lt;p&gt;How does open communication work in practice? Well, do you know what your peers are paid? Do you know what deals are in the pipeline? Can you see the books any time you want? Have you been offered stock options where the big guessing game is, &amp;#8220;how many outstanding shares are there?&amp;#8221;&lt;/p&gt;
&lt;p&gt;The real kick-off for Terralien was engendered by &lt;a href="http://campfirenow.com/"&gt;Campfire&amp;#8217;s&lt;/a&gt; lacking access controls &amp;#8211; I wanted to invite a bunch of the best developers I knew in to my Campfire, but I also wanted to be able to discuss confidential client information without worrying about who was listening in. So I created a one-page agreement that basically said, &amp;#8220;You&amp;#8217;ll keep client information private&amp;#8221;, and sent it around. What it didn&amp;#8217;t do was place any restriction on sharing Terralien internals. Could someone use something they learn to hurt me? Probably. Will they? I don&amp;#8217;t think so because I trust them.&lt;/p&gt;
&lt;p&gt;One more example &amp;#8211; I send out Statements of Work to my sub-contractors via Basecamp as private messages. The first time I had two subs on a project, I realized that they would be able to see one another&amp;#8217;s hourly rate, and in this case, it happened to be different. I did it anyhow, though &amp;#8211; if I can&amp;#8217;t explain the rate disparity to them, why does it exist?&lt;/p&gt;
&lt;p&gt;So, am I naive? Probably. But I think Ruby&amp;#8217;s open classes are wonderfully naive as well.&lt;/p&gt;
&lt;p&gt;So, five questions to ask yourself about your current situation:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Are you boxed in by a title?&lt;/li&gt;
	&lt;li&gt;How much is planned ahead, and how much remains flexible and gets dealt with as it arises?&lt;/li&gt;
	&lt;li&gt;Do you understand the agreements you sign and/or give others to sign?&lt;/li&gt;
	&lt;li&gt;Is introspection rewarded or penalized?&lt;/li&gt;
	&lt;li&gt;What&amp;#8217;s the default for information? Allow or deny?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;#8217;m assuming that to some extent, if you value Ruby, you value things that are dynamic, interpreted, succinct, reflective and open. If so, and you&amp;#8217;re not in a business that also values those things, why not?&lt;/p&gt;
</description>
      <pubDate>Thu, 26 Oct 2006 17:34:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/CY3XOcvp_sA/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/10/26/open_classes_open_companies_rubyconf_2006/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/10/26/open_classes_open_companies_rubyconf_2006/</feedburner:origLink></item>
    <item>
      <title>Terralien In Lights!</title>
      <description>&lt;p&gt;I just couldn&amp;#8217;t resist:&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/terralien-betabrite.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Via &lt;a href="http://redhanded.hobix.com/inspect/hackASignOnSomeoneElseSWoodFloors.html"&gt;RedHanded&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Mon, 02 Oct 2006 22:22:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/VB89BYdXZio/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/10/02/terralien_in_lights/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/10/02/terralien_in_lights/</feedburner:origLink></item>
    <item>
      <title>Open Response To (Clueful) Recruiters</title>
      <description>&lt;p&gt;There are three types of recruiters out there &amp;#8211; those who can count, and those who can&amp;#8217;t. OK, it&amp;#8217;s an old joke, but I&amp;#8217;m a programmer, and my jokes are usually either old or lame (and often both). My point is, I get contacted by recruiters who fall in to two groups: clueful and in-need-of-a-cluestick. The latter are easy to spot &amp;#8211; they ask for my resume in Word format. Lets not go there &amp;#8211; I&amp;#8217;d like to converse, not rant.&lt;/p&gt;
&lt;p&gt;So instead we&amp;#8217;ll talk about the clueful recruiters. I got an email from one tonight, and thought I&amp;#8217;d share, since I might be off base in my reply, and folks seemed to like my post on &lt;a href="http://blog.talbott.ws/articles/2006/02/22/rejection-letter-too-harsh"&gt;entrepreneurial pitches&lt;/a&gt;. Responses to clueful recruiters is something I really do chew on, as I think anyone would who gets regular offers of good money from reasonable folks.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what I received:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Subject: Java J2EE Agile dev positions, any interest?&lt;/p&gt;
&lt;p&gt;Hi,&lt;br /&gt;
I am looking for Java J2EE Agile mentors who are hands on developers who want to work with teams to get a smooth oiled Scrum team in place, what I call Agile Advocates.  Usually these folks are all the same &amp;#8216;archetype&amp;#8217;&amp;#8212;very strong with XP (&lt;span class="caps"&gt;TDD&lt;/span&gt;, Pairing), usually working on open source projects and have been on a Scrum team for 6+ months.  Usually someone who prefers not to have a title.  Our clients are starting to request direct-hire candidates because they have stronger willingness for knowledge transfer, the ones who understand what they are getting themselves into understand that these transitions take years.  I am constantly looking for this type of person.  Right now we have openings for Agile Java developers in [3 locations].&lt;/p&gt;
&lt;p&gt;Please feel free to send your resume and to share your thoughts with me and thank you!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Of course, this poor lady&amp;#8217;s first mistake was to ask me for my thoughts&amp;#8230; so I gave them to her:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;name withheld&amp;gt;,&lt;/p&gt;
&lt;p&gt;Everyone I know who fits your description is fed up with big company politics and is fed up with the mess that is J2EE. I&amp;#8217;m very glad that I&amp;#8217;m flush with Ruby and Rails consulting work and don&amp;#8217;t ever foresee doing Java again. I&amp;#8217;m also glad to be working on small, entrepreneurial pursuits, and I don&amp;#8217;t foresee being an employee ever again. I wish you the best of luck in finding the people you need, but while I easily know a dozen qualified candidates, I don&amp;#8217;t know of one that would be interested. If you want to, you can tell your clients for me that if they want to succeed, they&amp;#8217;re going to have to start changing faster.&lt;/p&gt;
&lt;p&gt;Sorry to be so negative, but I&amp;#8217;ve decided to be blunt with recruiters that contact me &amp;#8211; you need to know what you&amp;#8217;re really up against.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I really respect recruiters like this &amp;#8211; this was obviously not a mass-mail, keyword based spamming &amp;#8211; she has definitely looked at my credentials a bit. She also gets my respect for trying to find people against these odds &amp;#8211; J2EE (blech), multi-year agile adoption process (ick), and full-time employment to a company with the same (gag). I&amp;#8217;ll tell you one reason small, innovative companies are in right now &amp;#8211; because by and large, the kind of people you want working for you aren&amp;#8217;t going to work for anything else!&lt;/p&gt;
&lt;p&gt;Now, maybe I&amp;#8217;m way off base &amp;#8211; if this sounds like your cup of tea, drop me an email and I&amp;#8217;ll put you in touch with her. Of course, I know that some of what we&amp;#8217;re seeing right now is cyclical &amp;#8211; I can buy that there&amp;#8217;ll be a few less one-man Rails consulting shops and a few less &amp;#8220;web 2.0&amp;#8221; startups when the tech economy retreats a bit. But still, I think we&amp;#8217;re seeing something fundamentally different &amp;#8211; a whole generation of the best designers and developers is realizing that they don&amp;#8217;t &lt;strong&gt;have&lt;/strong&gt; to work places they don&amp;#8217;t like, that the security of a big company is no security, and that it is possible to build something small &lt;strong&gt;and&lt;/strong&gt; successful.&lt;/p&gt;
&lt;p&gt;So, best of luck my clueful recruiting friends, but you&amp;#8217;ve got a tough row to hoe. Maybe it&amp;#8217;s time for you, too, to think about how to serve the Fortune 5,000,000 and stop beating your head against the wall of the Fortune 5000. If you want my thoughts on &lt;strong&gt;that&lt;/strong&gt;, I&amp;#8217;d love to talk with you about it.&lt;/p&gt;
</description>
      <pubDate>Wed, 27 Sep 2006 20:43:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/oyXzHvn6rQc/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/09/27/open_response_to_clueful_recruiters_again/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/09/27/open_response_to_clueful_recruiters_again/</feedburner:origLink></item>
    <item>
      <title>Colophon</title>
      <description>&lt;p&gt;I saw a &amp;#8220;Colophon&amp;#8221; section on a site the other day, where it was used to describe the technologies used in the site. Curious, I just &lt;a href="http://www.google.com/search?q=define%3Acolophon"&gt;looked up&lt;/a&gt; the term, and it has &lt;a href="http://en.wikipedia.org/wiki/Colophon_%28book%29"&gt;a fascinating history&lt;/a&gt;. It started out as &amp;#8220;meta-data,&amp;#8221; if you will, on clay tablets, and today is a publishing term for a book section delineating typefaces, ink, paper, and other production details. Colophons apparently show up most often in limited edition and private press printings &amp;#8211; I suppose hard-core bibliophiles eat that sort of stuff up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So here&amp;#8217;s our colophon&lt;/strong&gt;: we&amp;#8217;re running &lt;a href="http://terralien.com/"&gt;terralien.com&lt;/a&gt; on &lt;a href="http://radiantcms.org/"&gt;Radiant &lt;span class="caps"&gt;CMS&lt;/span&gt;&lt;/a&gt;, which is of course by our own &lt;a href="http://terralien.com/about/people/#johnlong"&gt;John Long&lt;/a&gt;. &lt;a href="http://blog.terralien.com/"&gt;The Ship&amp;#8217;s Log&lt;/a&gt;, which you&amp;#8217;re reading now, is running on &lt;a href="http://simplelog.net/"&gt;SimpleLog&lt;/a&gt;, which just so happens to use &lt;a href="http://terralien.com/about/people/#mattmccray&amp;#39;s"&gt;Matt McCray&lt;/a&gt; excellent &lt;a href="http://www.mattmccray.com/pivot/archive.php?c=Theme_Support"&gt;theme_support&lt;/a&gt; plugin. Both apps are served as &lt;a href="http://lighttpd.net/"&gt;Lighttpd&lt;/a&gt; fastcgis running on TextDrive, and use MySQL databases.&lt;/p&gt;
&lt;p&gt;So, how do I like the setup? I&amp;#8217;m really loving SimpleLog &amp;#8211; it lives up to its name, and seems to be developing very nicely. I&amp;#8217;ve noticed that comment support is being added to trunk, so you can look forward to doing some heckling in the future (feel free to email me in the meantime &amp;#8211; I&amp;#8217;m always open for some heckling). Radiant is also a joy to work with, and of course it helps that I can IM John whenever I run in to something sticky (which is not very often). Lighty is great, and I can&amp;#8217;t wait until 1.5 sees the light of day and I can use it in front of a pack of &lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrels&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I hope that satiates the technophiles &amp;#8211; I&amp;#8217;m one myself, and I&amp;#8217;d love it if all sites had a colophon. Of course, the literal meaning of colophon is &amp;#8220;finishing stroke,&amp;#8221; so putting it in one of the first posts to the blog seems a bit backwards. However, if you consider the fact that a blog is usually viewed in reverse chronological order, this post will be at the end soon enough!&lt;/p&gt;
</description>
      <pubDate>Thu, 21 Sep 2006 11:16:00 +0000</pubDate>
      <link>http://feedproxy.google.com/~r/terralien-ships-log/~3/WmIrVXkplwU/</link>
      <guid isPermaLink="false">http://terralien.com/blog/articles/2006/09/21/colophon_again/</guid>
    <feedburner:origLink>http://terralien.com/blog/articles/2006/09/21/colophon_again/</feedburner:origLink></item>
  </channel>
</rss>
