<?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:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Warpspire</title>
	
	<link>http://warpspire.com</link>
	<description>my god, it's full of stars</description>
	<lastBuildDate>Thu, 19 Nov 2009 21:09:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<feedburner:info uri="warpspire" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://warpspire.com/feed" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Optimizing asset bundling and serving with Rails</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/GnkFQI5n0qk/</link>
		<comments>http://warpspire.com/tipsresources/application-development/optimizing-asset-bundling-and-serving-with-rails/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 21:08:39 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Application Development]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=420</guid>
		<description><![CDATA[I wrote up a pretty lengthy post over at <a href="http://github.com/blog/551-optimizing-asset-bundling-and-serving-with-rails">the GitHub blog</a> explaining how we do asset bundling and serving.  Well worth the read for anyone who's interested in front end performance and works on ruby apps.

<a href="http://github.com/blog/551-optimizing-asset-bundling-and-serving-with-rails">Go check it out</a>]]></description>
			<content:encoded><![CDATA[<p>I wrote up a pretty lengthy post over at <a href="http://github.com/blog/551-optimizing-asset-bundling-and-serving-with-rails">the GitHub blog</a> explaining how we do asset bundling and serving.  Well worth the read for anyone who&#8217;s interested in front end performance and works on ruby apps.</p>

<p><a href="http://github.com/blog/551-optimizing-asset-bundling-and-serving-with-rails">Go check it out</a></p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/GnkFQI5n0qk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/tipsresources/application-development/optimizing-asset-bundling-and-serving-with-rails/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://warpspire.com/tipsresources/application-development/optimizing-asset-bundling-and-serving-with-rails/</feedburner:origLink></item>
		<item>
		<title>It’s just not about how many hours you work</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/H2ZEldtPiM8/</link>
		<comments>http://warpspire.com/features/work-life-balance/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 21:07:27 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=410</guid>
		<description><![CDATA[My favorite discussion amongst web professionals is when people start talking about work/life balance and how many hours they're working.  There's been no end of interesting ideas to pop out from this -- everything from 4 hour work weeks to 100 hour work weeks.  And everyone thinks that they've got the answer. But I think everyone's just arguing about an irrelevant metric: the hour.]]></description>
			<content:encoded><![CDATA[<p>My favorite discussion amongst web professionals is when people start talking about work/life balance and how many hours they&#8217;re working.  There&#8217;s been no end of interesting ideas to pop out from this &#8212; everything from 4 hour work weeks to 100 hour work weeks.  And everyone thinks that they&#8217;ve got the answer. But I think everyone&#8217;s just arguing about an irrelevant metric: the hour.</p>

<h2>Let&#8217;s talk about that work/life balance thing</h2>

<p>Most of this discussion always seem to revolve around the idea of a work/life balance.  The basic idea is to keep yourself sane.  Don&#8217;t abandon your real life for your work.  That makes sense, until people start attaching hours to it.  I&#8217;ve had discussions with people where they try and argue to me that 40 hour work weeks keep them balanced.  But I have to wonder, where does that magical number 40 come from?</p>

<p>The fallacy here is that people are thinking in black and white terms of &#8220;work&#8221; and &#8220;life.&#8221;  I never really understood that, and I think I&#8217;ve gotten to a point in my life where I can see why: it&#8217;s a bunch of bullshit that employers made up to promote 40 hour work weeks.  If you really think that there is a certain number of hours you can work a week to balance your life, you&#8217;re doing it wrong. So let&#8217;s ditch this idea of a work/life balance, because it just doesn&#8217;t make sense.</p>

<h2>It&#8217;s about creating a creative environment in your life</h2>

<p>It&#8217;s just that simple.  If you&#8217;re in the creative field, you need to make sure your life promotes a creative environment.  There isn&#8217;t one catch-all formula to do this.  There isn&#8217;t a number of hours you need to work.  You just need to experiment and find out what works for you.  What I will do is try and offer some advice.</p>

<h3>Find your passion in life and try to make money from it</h3>

<p>If you hate your job, it&#8217;s unlikely that you&#8217;ll be successful in fostering a creative environment.  Try your best to fix this.  Find out what you&#8217;re good at, and try to make money from it.  You&#8217;ll be producing better (more valuable) work and enjoying life more.</p>

<h3>Explore projects that are explicitly not for profit</h3>

<p>Money taints things, there is no denying this.  So I suggest to find an outlet that you purposefully can&#8217;t/don&#8217;t make money from to help exercise your brain.  That might mean creating websites, making music, or hacking on an epic perl script that no one but yourself will use.  It doesn&#8217;t have to be something different from your work &#8212; it just has to be separated from your work.  Something you can change or destroy without worrying about what others think.</p>

<h3>Stop working if you&#8217;re producing crap</h3>

<p>The only thing worse than being unproductive at work is forcing false productivity.  If you find yourself at your desk and you can&#8217;t come up with anything useful, just stop trying.  Leave your desk and go do something else.  Maybe for a few hours, maybe for a week, maybe <a href="http://www.fastcompany.com/blog/cliff-kuang/design-innovation/design-geniuss-secret-time-and-lots-it">for a year</a>.</p>

<h3>Accept that there is no way you can be productive for 40 hours a week</h3>

<p>The 40 hour work week is completely unsustainable.  Human beings are not meant to sit down and <em>really</em> focus for 40 hours a week, 50 weeks a year.  Our brains can&#8217;t handle it.  I&#8217;m sure startup founders will come in here exclaiming how they&#8217;ve been working 100 hour work weeks for 6 months now and every hour was well spent.  They&#8217;re lying.</p>

<p>Your brain <em>needs</em> to purposefully not think in order to come up with creative ideas.  That might mean relaxing to your favorite book or movie while your subconscious attacks your latest project.  You&#8217;re not working in the strict sense&#8211;but you&#8217;re getting work done.</p>

<p>That&#8217;s not to say you can&#8217;t have weeks where you get hundreds of hours of work done.  But in my experience, after a week like that, I need another week or two to decompress.</p>

<h2>Focus on what matters</h2>

<p>My goal with this post is to hopefully get people to stop thinking in hours.  Start focusing on making great things.  It&#8217;s about the things you produce, not the hours required to make them.</p>

<p>Once you realize you&#8217;ve been focused on the wrong metric I think you&#8217;ll realize  arguing about a work/life balance is just ridiculous.  Spend time on your life. Spend time on your work. But always strive to do better. That&#8217;s all you need.</p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/H2ZEldtPiM8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/features/work-life-balance/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://warpspire.com/features/work-life-balance/</feedburner:origLink></item>
		<item>
		<title>Joining GitHub</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/srB9-RpbJ8E/</link>
		<comments>http://warpspire.com/tipsresources/personal/joining-github/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 02:31:16 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Tips & Resources]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=404</guid>
		<description><![CDATA[I still feel like it was last week I decided to give up my &#8220;safe&#8221; job at Web Associates Level Studios to play around with the ENTP crew.  Well, it&#8217;s time for another move.  Last week I was given an offer I just couldn&#8217;t refuse&#8211;to join the amazing GitHub team (my GitHub profile. [...]]]></description>
			<content:encoded><![CDATA[<p>I still feel like it was last week I decided to <a href="/features/ch-ch-ch-changes/">give up my &#8220;safe&#8221; job at <strike>Web Associates</strike> Level Studios</a> to play around with the <a href="http://entp.com">ENTP</a> crew.  Well, it&#8217;s time for another move.  Last week I was given an offer I just couldn&#8217;t refuse&#8211;to join the amazing <a href="http://github.com">GitHub</a> team (<a href="http://github.com/kneath">my GitHub profile</a>.  For those of you who don&#8217;t know who GitHub is: shame on you.  GitHub has taken something as boring as source control and made it something that <em>brings people together</em>.  Social coding, indeed.</p>

<h2>A brief look at the past couple years</h2>

<p>The past couple of years have been a crazy blur of projects for me.  Most of what I did for ENTP was for [redacted], so you won&#8217;t be seeing most of what I did, but I thought I&#8217;d spend a few minutes to archive (for my own good) some of the public-facing projects I completed.</p>

<h3><a href="http://tenderapp.com">Tender</a></h3>

<div class="figure"><a href="http://tenderapp.com"><img src="/images/posts/github/tender_marketing.jpg" alt="Tender's Marketing Site" /></a></div>

<p>By in large, the biggest project I worked on ENTP was <a href="http://tenderapp.com">Tender</a> &#8212; and I&#8217;ll be honest, it&#8217;s going to hurt to let this go.  Tender was my baby, and I did all of the IA, design and front-end work for the site as well as some marketing and analytical work.  The shining side of that tunnel is that of course GitHub <a href="http://support.github.com">uses Tender</a> for their support, so I&#8217;ll at least get to use it and see how ENTP shapes the product.</p>

<h3><a href="http://iphone.lighthouseapp.com">Lighthouse iPhone</a></h3>

<div class="figure"><a href="http://iphone.lighthouseapp.com"><img src="/images/posts/github/lighthouse_iphone.jpg" alt="Lighthouse iPhone Screenshots" /></a></div>

<p>Designing an iPhone optimized interface was one of my first projects at ENTP.  It doesn&#8217;t benefit from any of the OS 2.0+ features (HTML5, CSS Animations, Etc) since the code was created before these came along, but it gets the job done.  It was a great exploration in turning a complicated interface and trimming it down to the bare essentials.</p>

<h3><a href="http://entp.com">ENTP.com</a></h3>

<div class="figure"><a href="http://entp.com"><img src="/images/posts/github/entp.jpg" alt="ENTP.com Screenshot" /></a></div>

<p>I designed this in collaboration with Justin Palmer when ENTP decided they needed a new site.  It&#8217;s got a few interesting features (like pulling in our current GitHub projects on demand in the footer), but it&#8217;s mostly just a brochure site for the agency.</p>

<h3><a href="http://hoth.entp.com">Hoth</a></h3>

<div class="figure"><a href="http://hoth.entp.com"><img src="/images/posts/github/entp_hoth.jpg" alt="Hoth Screenshot" /></a></div>

<p>Hoth is ENTP&#8217;s blog.  This design accompanied the new ENTP.com design and added in a bit of tumble-like functionality to the templates.</p>

<h2>On to the next chapter</h2>

<p>So now I enter the third dream job I&#8217;ve had in the 4 years since I graduated college (none of which have been slightly related to my degree). I&#8217;ll be diving into a design/front-end role for the team and help clean up and take the product to the next level.</p>

<div class="figure"><a href="http://github.com"><img src="/images/posts/github/octocat.png" alt="OctoCat" /></a></div>

<p>I&#8217;ll see ya&#8217;ll at the next GitHub drinkup.</p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/srB9-RpbJ8E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/tipsresources/personal/joining-github/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<feedburner:origLink>http://warpspire.com/tipsresources/personal/joining-github/</feedburner:origLink></item>
		<item>
		<title>Why aren’t there any journalistic startups?</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/KsD-o5dbWUc/</link>
		<comments>http://warpspire.com/tipsresources/personal/why-arent-there-any-journalistic-startups/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 19:31:48 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=396</guid>
		<description><![CDATA[I think it&#8217;s time that we can all agree that the news industry is failing.  Hundreds of newspapers have declared bankruptcy and gone under in the past couple years &#8212; and thousands of Journalists are out of work.  But I&#8217;m curious: what are all these journalists doing?  Laying down and giving up? [...]]]></description>
			<content:encoded><![CDATA[<p>I think it&#8217;s time that we can all agree that the news industry is failing.  Hundreds of newspapers have declared bankruptcy and gone under in the past couple years &#8212; and thousands of Journalists are out of work.  But I&#8217;m curious: what are all these journalists doing?  Laying down and giving up?  I&#8217;m wondering why I don&#8217;t see a flurry of journalistic startups.</p>

<h2>The state of startups</h2>

<p>Call it &#8220;Valley Culture&#8221; or however the hipsters wants to spin it &#8212; there is a definite attitude of Entrepreneurship in California.  I&#8217;ve lived around it my whole life.  People are itching to start companies so bad that they get VCs to give them extraordinary amounts of money for really dumb ideas. I mean, really dumb ideas. Ideas that never had a hope in the world of making money, let alone becoming popular.</p>

<p>My point being: if we can get VCs to put up millions of dollars for practically any idea, why don&#8217;t we see more lean journalistic startups? Nothing fancy, just some (good) reporters, editors, and a small syndication (web) team.  Editors &amp; reporters generally get paid shit, and you wouldn&#8217;t need more than 2-3 tech people to support a couple dozen reporters with today&#8217;s technology — so a few million would go a long way.</p>

<h2>It&#8217;s not the news that&#8217;s dying, it&#8217;s the news organization</h2>

<p>Increasingly I&#8217;ve been hearing the same mantra from smart people around the web: It&#8217;s not the news that&#8217;s the problem, it&#8217;s the newsroom.  In any modern newspaper, the people producing content (editors &amp; reporters) are a small fraction of the costs.   One of my favorite quotes on the subject comes from <a href="http://daringfireball.net/2009/07/charging_for_access_to_news_sites">Mr Gruber</a>:</p>

<blockquote>
  <p>The question these companies should be asking is, “How do we keep reporting and publishing good content?” Instead, though, they’re asking “How do we keep making enough money to support our existing management and advertising divisions?” It’s dinosaurs and mammals.</p>
</blockquote>

<p>The truth is, people are hungry for news. And there&#8217;s plenty of money to be made. I don&#8217;t see TechCrunch or Mashable hurting for money. And they&#8217;re out there just producing bottom-of-the-barrel reporting. Could you imagine how much money someone would make if they had a TechCrunch style news organization with <em>real</em> reporters?  People might even start trusting them as a source of information.</p>

<h2>So where are the startups?</h2>

<p>Maybe it&#8217;s me, but the answer seems so clear in my head.  We have thousands of unemployed journalists.  Good journalists.  We have VCs ready to hand out money for a shit sandwich.  We have a proven business model.  Why don&#8217;t I see a flurry of journalistic startups?  Get rid of the cruft of the newsroom, give power to the reporters and content producers.</p>

<p>Stop trying trying to grasp onto idiotic ideas like &#8220;social news&#8221; or stabbing blindly at twitter in hopes of saving an archaic organizational structure.  People aren&#8217;t buying printed newspapers? Stop printing them.  People only want to read their news online? Let them read it online.</p>

<p>America needs to stop concentrating on how to save our dying industries and start concentrating on how to create the next booming industries.  Isn&#8217;t that what the American dream is all about, anyways?</p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/KsD-o5dbWUc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/tipsresources/personal/why-arent-there-any-journalistic-startups/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		<feedburner:origLink>http://warpspire.com/tipsresources/personal/why-arent-there-any-journalistic-startups/</feedburner:origLink></item>
		<item>
		<title>Quick &amp; Dirty Referral Tracking</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/ASC5ZmtvxWo/</link>
		<comments>http://warpspire.com/tipsresources/programming/quick-dirty-referral-tracking/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 06:11:53 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips & Resources]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=391</guid>
		<description><![CDATA[Ever wondered where people came from to sign up for your web app?  Recently I wanted to track referrals for <a href="http://tenderapp.com">Tender</a> and wanted something quick and dirty.  The only problem? Our <a href="http://setup.tenderapp.com/setup">setup page</a> is on a different domain than our <a href="http://tenderapp.com">marketing site</a>. This meant I couldn't use Google Analytics since it thought every "goal" came from exactly one place: the marketing site.]]></description>
			<content:encoded><![CDATA[<p>Ever wondered where people came from to sign up for your web app?  Recently I wanted to track referrals for <a href="http://tenderapp.com">Tender</a> and wanted something quick and dirty.  The only problem? Our <a href="http://setup.tenderapp.com/setup">setup page</a> is on a different domain than our <a href="http://tenderapp.com">marketing site</a>. This meant I couldn&#8217;t use Google Analytics since it thought every &#8220;goal&#8221; came from exactly one place: the marketing site.</p>

<p>So instead, what I did was hack together a quick referral script using Javascript to track where people came from and add that to a field on the Site model (each install of Tender is considered a &#8216;Site&#8217;).  The Javascript (in MooTools):</p>

<pre><code class="javascript">var Tracker = new Class({
  tracker: null,

  initialize: function(){
    this.initCookie();
    this.updateCookie();
    this.markLinks();

    var field = $('site_referral');
    if (field){
      field.value = this.tracker;
    }
  },

  initCookie: function(){
    this.tracker = Cookie.read('tracker');
    if (!this.tracker || this.tracker == "") this.setTracker();
  },

  // Order of precidence
  // 1. ?source= from in the URL
  // 2. ?utm_campaign= in the URL
  // 3. Referrer / Direct
  setTracker: function(){
    var final_source = document.referrer ? document.referrer : "direct";
    var args = $get();
    if (args.utm_campaign &amp;&amp; args.utm_campaign.trim() != '') final_source = args.utm_campaign;
    if (args.source &amp;&amp; args.source.trim() != '') final_source = args.source;
    Cookie.write('tracker', final_source, {duration:1});
    this.tracker = final_source;
  },

  // Updates the cookie if another ?source or ?utm_campiagn is set
  updateCookie: function(){
    var final_source = null;
    var args = $get();
    if (args.utm_campaign &amp;&amp; args.utm_campaign.trim() != '') final_source = args.utm_campaign;
    if (args.source &amp;&amp; args.source.trim() != '') final_source = args.source;
    if (final_source){
      Cookie.write('tracker', final_source, {duration:1});
      this.tracker = final_source;
    }
  },

  markLinks: function(){
    $$('a.signup-link').each(function(el){
      el.href += "?source=" + this.tracker;
    }, this);
  }
});

function $get(key,url){  
   if(arguments.length &lt; 2) url =location.href;  
   if(arguments.length &gt; 0 &amp;&amp; key != ""){  
       if(key == "#"){  
            var regex = new RegExp("[#]([^$]*)");  
        } else if(key == "?"){  
            var regex = new RegExp("[?]([^#$]*)");  
        } else {  
            var regex = new RegExp("[?&amp;]"+key+"=([^&amp;#]*)");  
        }  
        var results = regex.exec(url);  
        return (results == null )? "" : results[1];  
    } else {  
        url = url.split("?");  
        var results = {};  
            if(url.length &gt; 1){  
                url = url[1].split("#");  
                if(url.length &gt; 1) results["hash"] = url[1];  
                url[0].split("&amp;").each(function(item,index){  
                    item = item.split("=");  
                    results[item[0]] = item[1];  
                });  
            }  
        return results;  
    }  
}
</code></pre>

<p>The way this works is the following:</p>

<ol>
<li>If someone comes with ?source=something or ?utm_campain=something (a Google Analytics keyword), it stores that value in a cookie called &#8216;tracker&#8217;</li>
<li>If no ?source or ?utm_campaign can be found, it stores the referrer</li>
<li>If no referrer can be found, it stores the value &#8216;direct&#8217;</li>
<li>Every URL that has the class <code>signup-link</code> gets ?source=trackerhere appended, so that the referral gets tracked over to our setup domain.</li>
<li>If it finds a field with the id of <code>site_referral</code> (the rails default for <code>Site#referral</code> field), it sets that value to whatever is stored in the tracker cookie.</li>
</ol>

<p>Now when people sign up, I can see where they came from in the admin panel:</p>

<div class="figure"><img src="/images/posts/referral_screen.gif" alt="Referral Screen" /></div>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/ASC5ZmtvxWo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/tipsresources/programming/quick-dirty-referral-tracking/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://warpspire.com/tipsresources/programming/quick-dirty-referral-tracking/</feedburner:origLink></item>
		<item>
		<title>Having fun with the Lighthouse API</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/Nr4Yisdqwpo/</link>
		<comments>http://warpspire.com/tipsresources/application-development/having-fun-with-the-lighthouse-api/#comments</comments>
		<pubDate>Tue, 05 May 2009 16:07:18 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Application Development]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=376</guid>
		<description><![CDATA[I&#8217;ve been using Lighthouse since it&#8217;s inception, but now that I&#8217;m working with the ENTP folks I get to thinking about what to do with Lighthouse a lot more.  I&#8217;ve had a few ideas on ways to play with the API and I finally got around to implementing one of those ideas with Burndown. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://lighthouseapp.com">Lighthouse</a> since it&#8217;s inception, but now that I&#8217;m working with the <a href="http://entp.com">ENTP</a> folks I get to thinking about what to do with Lighthouse a lot more.  I&#8217;ve had a few ideas on ways to play with the API and I finally got around to implementing one of those ideas with <a href="http://github.com/kneath/lighthouse_burndown">Burndown</a>.  </p>

<p>Burndown is a simple little app that adds a new dimension to Lighthouse &#8211; Time.  It shows you a burndown chart for each milestone in your project, recording the number of open tickets each day so you can see the progress of your milestone.  If you&#8217;re running in short iterations, it&#8217;s a good way to measure your team&#8217;s velocity all agile and whatnot.  You can see an example for <a href="http://lh-burndown.heroku.com/timeline/13">Tender&#8217;s current milestone</a>.  As a bonus, you can keep tabs on our development on Lighthouse and Tender for the <a href="http://lh-burndown.heroku.com">sample install</a> :)</p>

<div class="figure"><img src="http://share.kyleneath.com/captures/Timeline___Graph_%E2%80%93_Burndown-20090504-085916.gif" alt="Screenshot" /></div>

<h2>Miniapps are fun</h2>

<p>Burndown is what I&#8217;d call a miniapp &#8212; it can&#8217;t survive on it&#8217;s own, doesn&#8217;t have fancy permissioning, security or even the best code. It just gets the job done.  For me, it was a way to play with a lot of new technologies I haven&#8217;t played with before.  It&#8217;s currently running on Heroku, powered by Sinatra &amp; Datamapper, with the front-end powered by jQuery &amp; Raphael.  I haven&#8217;t touched a single one of these, but the app still only took about a week to build.</p>

<p>If you want to try it out, I&#8217;d suggest opening up an account over at <a href="http://heroku.com">Heroku</a>.  From there, it should take a few minutes to get your own Burndown instance running.</p>

<h2>Some thoughts on the tech</h2>

<p>Since this was an all new experience I thought I might share some of my thoughts on the tech I used to build Burndown.</p>

<h3>Heroku&#8230; rocks</h3>

<p>I&#8217;d heard great things about Heroku, but never really had a need to play around with it.  My first reaction: holy crap this is awesome.  Getting the app up and deployed was <em>easier</em> than setting up Wordpress on Dreamhost.  That says a lot.  That being said, there were definitely some rough patches debugging the app, and I&#8217;m really not sure what was causing them.  I&#8217;m guessing it&#8217;s whatever database they&#8217;re using, but can&#8217;t be certain. Weird ordering with my records.</p>

<h3>Datamapper&#8230; I&#8217;ll take AR, thanks</h3>

<p>Datamapper was definitely a struggle. I&#8217;m not down with the way conditions work at all. I understand what they&#8217;re trying to do here, but <code>:age.gte =&gt; 15</code> is freakin weird lookin Ruby no matter how you slice it.  I also ran into quite a few random bugs where my association finders weren&#8217;t getting scoped (want an example of a <em>really</em> hard bug to track down?).  All in all, I&#8217;ll take my ActiveRecord over it any day.</p>

<h3>Sinatra&#8230; rocks, reloading does not</h3>

<p>Sinatra is an awesome little framework.  I&#8217;ve played around with it in the past to the extent of hacking other people&#8217;s code, but never deployed something for myself.  It&#8217;s a pretty rockin framework, and with PassengerPrefPane it exists seamlessly in my dev environment.  Unfortunately the lack of code reloading is really a pain.  Can&#8217;t tell you how many times I typed in <code>touch tmp/restart.txt</code>&#8230;</p>

<h3>Raphael is awesome, if a bit obfuscated</h3>

<p>I wanted to play around with a more powerful graphing library, so I ended up choosing <a href="http://www.raphaeljs.com/">Raphael</a>.  The end result is smooth, awesomely extendable, and fast.  Unfortunately the sample code is really hard to understand.  A few comments in <a href="http://raphaeljs.com/analytics.js">this file</a> would have gone miles.  So would have using regular hex color values instead of crazy hue math.  There is also zero documentation from what I can tell. Yes, there&#8217;s a documentation page&#8230; it does not show you how to use it.</p>

<h3>When you HTTParty, you must party hard!</h3>

<p>My first turn when interacting with the Lighthouse code base was to turn to the Lighthouse API gem, but because of the ActiveSupport dependency &#8212; and quite frankly gem conflicts I didn&#8217;t want to deal with &#8212; I decided to go the HTTParty route.  Honestly, it&#8217;s just too easy to use. It made dealing with the API a breeze.</p>

<h2>Go forth and create Lighthouse miniapps!</h2>

<p>Feel free to fork / steal the <a href="http://github.com/kneath">source</a> (including the design!) and create more miniapps for Lighthouse.  Everyone uses bug trackers differently, and sometimes the best idea is to just build the interface / chart / feature you need.  This app should cover the basics of saving / validating API keys, as well as some simple examples of how to sync data locally through cron jobs.</p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/Nr4Yisdqwpo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/tipsresources/application-development/having-fun-with-the-lighthouse-api/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://warpspire.com/tipsresources/application-development/having-fun-with-the-lighthouse-api/</feedburner:origLink></item>
		<item>
		<title>Stop complaining about App Store approval times</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/Qxy7uFsifHI/</link>
		<comments>http://warpspire.com/features/test-your-iphone-app/#comments</comments>
		<pubDate>Mon, 04 May 2009 05:11:05 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=371</guid>
		<description><![CDATA[I'm getting kind of tired of all these <em>web</em> developers complaining about the time it takes to get updates to their apps up on the iTunes App Store.  The truth is this complaining has some merit.  But you have to realize that these people are not making <em>web</em> applications, they're making <em>installable</em> applications.  The problem is not Apple. The problem is lack of QA testing.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m getting kind of tired of all these <em>web</em> developers complaining about the time it takes to get updates to their apps up on the iTunes App Store.  The truth is this complaining has some merit.  But you have to realize that these people are not making <em>web</em> applications, they&#8217;re making <em>installable</em> applications.  The problem is not Apple. The problem is lack of QA testing.</p>

<h2>Your application will have many bugs</h2>

<p>The first rule of development: your code is going to have a lot of bugs. I don&#8217;t care if you&#8217;ve got 3 days experience or 30 years experience in the industry. <strong>Your code will have bugs.</strong> This isn&#8217;t a pride issue, it&#8217;s a fact of life. Good developers know this and rely on testing (code, user-acceptance, performance) to expose bugs so they can fix them.</p>

<h2>Bugs will appear after your code is deployed</h2>

<p>Whether it&#8217;s the Y2k bug, deprecation of a technology, or your application getting blacklisted from a web service &#8212; some bugs are going to show up after your code is deployed.  This is something you should expect.  Again, this is not negotiable. It is going to happen.</p>

<h2>The web makes us lazy</h2>

<p>The truth is, developing web applications makes us lazy.  I can fix a bug, deploy, and it&#8217;s fixed in about 15 seconds.  This is why I <em>love</em> working on hosted web applications.  You&#8217;ve got such immense power over the deployment process.  Some things that rock about web apps:</p>

<ul>
<li>You can be <em>really lazy</em> with UAT (User Acceptance Testing).  Users will do your UAT for your and you can fix it on the fly.</li>
<li>You can be <em>really lazy</em> with bugs that will appear after deploy.  If a web service changes, you fix it and redeploy. Done.</li>
<li>You only need <em>one computer</em> to test your application.  No need to purchase multiple hardware platforms, video cards, or install multiple operating systems!</li>
</ul>

<h2>You can&#8217;t be lazy with installable applications</h2>

<p>I once worked on a desktop application that was being sent out on millions of machines.  This application was going to be the first thing that started up when the user booted the machine.  It also meant we didn&#8217;t have the option to issue updates for the application after deployment.  We spent <em>tons</em> of time doing user testing on dozens of machines.  And then the client did user testing.  And then the client&#8217;s QA department did even more testing.  And then the client&#8217;s QA department did more testing throughout the whole time they were writing hard drives.</p>

<p>Remember the days when you updated applications with <em>CDs</em> or <em>floppy disks</em>?  My god, for a while there it just <em>wasn&#8217;t feasible</em> to update installable applications over the internet.  The end result? Software development firms spent a lot of time and money on QA.  Same goes for game development companies.</p>

<p>My point is: if you know that one of your restraints is updating can be slow or impossible, you <em>spend more time testing the application.</em></p>

<h2>The App Store is slow</h2>

<p>It&#8217;s true the App Store is slow when it comes to delivering updates.  To me, this is just a known variable.  Wouldn&#8217;t it be awesome if they had 24 hour turnaround? Sure would be.  But it&#8217;s one of those tradeoffs you get with a closed system.  If you want to trade it for an open system &#8212; build a web application.  It&#8217;s not that hard.</p>

<p>I know it sucks testing your application.  I know as a lone developer you don&#8217;t have the money to hire testers.  </p>

<p>But think of the rewards.  The App Store is something of a gold rush right now.  A small group of people have made obnoxious profits off very little effort.  There&#8217;s almost no overhead ($100 application fee? psh) &#8212; and anyone can submit apps.  It&#8217;s a shitty closed ecosystem controlled by Apple. But it&#8217;s a shitty closed ecosystem of chocolate-filled pools lined with gold and supermodels dressed in nothing but $100 bills if you strike it rich.</p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/Qxy7uFsifHI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/features/test-your-iphone-app/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://warpspire.com/features/test-your-iphone-app/</feedburner:origLink></item>
		<item>
		<title>Working Remote</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/w5F2Y-QfmCU/</link>
		<comments>http://warpspire.com/features/working-remote/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 04:39:59 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=365</guid>
		<description><![CDATA[For about a year now, I've been working from my house -- working on stuff for <a href="http://entp.com">entp</a> and the occasional contract here and there.  Overall, I think it's been an immensely positive move. Let's start off with what's been working out great.  First off: I get to focus when I want.  Previously, I was one of those "9 to 5" workers, meaning I got into work at 8:30am and left around 6:30pm or later.  My problem is that my greatest focus time is generally around 7-9pm and 11-2am.  The time I was at home.  So now I get to work when I want, which means I get far more done in less time.]]></description>
			<content:encoded><![CDATA[<p>For about a year now, I&#8217;ve been working from my house &#8212; working on stuff for <a href="http://entp.com">entp</a> and the occasional contract here and there.  Overall, I think it&#8217;s been an immensely positive move.</p>

<h2>The good things</h2>

<p>Let&#8217;s start off with what&#8217;s been working out great.  First off: I get to focus when I want.  Previously, I was one of those &#8220;9 to 5&#8243; workers, meaning I got into work at 8:30am and left around 6:30pm or later.  My problem is that my greatest focus time is generally around 7-9pm and 11-2am.  The time I was at home.  So now I get to work when I want, which means I get far more done in less time.</p>

<p>This whole focus thing can&#8217;t be exaggerated enough.  I <em>do not function</em> in the mornings.  Sure, I can force myself to wake up, get dressed, get to work, pound some coffee, but I just don&#8217;t get the work done I do later on in the day.  Don&#8217;t give me the &#8220;you&#8217;ll get used to it&#8221; speech, because I did this 8-6 thing for 5 straight years. My body just doesn&#8217;t function in the mornings.</p>

<p>The second best part of working from home is controlling my nutrition. When I worked at an office, my diet was pretty horrid.  I was constantly grabbing quick food from various places, for lunch, for dinner, for a breakfast snack.  But now I get to wake up, make some coffee and enjoy a bowl of fruit or oatmeal as I catch up on the day.  It&#8217;s also a lot easier to make several smaller meals throughout the day.  I&#8217;ve also been able to exercise a lot more &#8212; I don&#8217;t have to wait until getting off work, or worry about bringing my gym bag, etc &#8212; I just go for a run when I have some spare time.</p>

<p>Lastly, I tend to waste a lot less time when I set down to work.  I spend <em>much</em> less time in meetings (meetings used to consume an ungodly amount of my time at an office). I can close myself off in my room, put on some headphones and just get things done.  Nobody to come by my desk and annoy me, or useless meetings to attend.  Less talking, more doing.</p>

<h2>The not so good things</h2>

<p>My biggest problem right now is separation of work from home life.  My desk sits opposite my bed right now, which means my computer&#8217;s always there in my bedroom.  My next place I&#8217;d like to try and get a loft or something where there&#8217;s a really clear separation between sleeping space and working space. (Let me know if you know of an awesome loft opening up in San Francisco around July)</p>

<p>The second problem for me has been not working human hours.  I have a few friends downtown who try and get me to go have beers with them at 5 when they get off.  Unfortunately by then sometimes I&#8217;ve only clocked in a couple of hours for work &#8212; so I have to stay home and work through.  This is of course directly in battle with my productive times, so it&#8217;s hard to find a clear winner here.</p>

<h2>The future, perhaps?</h2>

<p>Back in the late nineties, it seemed as though everyone thought telecommuting was going to be the future.  I wonder if maybe we&#8217;re swinging back towards that now.  Traffic of course only gets worse &#8212; while people&#8217;s homes are getting larger and further from city centers.  About half of <a href="http://entp.com">entp</a> works from remote (from Tennessee to Uruguay) right now and we seem to get things done alright.  </p>

<p>There&#8217;s no denying having an office is awesome, but I have a feeling it&#8217;s going to move from the &#8220;necessity&#8221; column over to the &#8220;nice to have&#8221; column in the next decade or two.  Especially for professions like design &amp; programming which take a certain amount of closed-off concentration to get things done.  The problem is that people in our profession work well in <em>small groups</em> &#8212; and much worse in <em>large groups.</em>  A small group breeds healthy debate and conversation, while a large group breeds endless arguments and criticism.</p>

<p>In any case, I wish more companies would try out having less strict hours for working in offices.  It&#8217;s crystal clear to me that forcing people to work 9-5 only breeds a culture where your effort is measured in hours spent, and not work produced.  It&#8217;s easy for someone to put in 8 hours of programming and get less done than another person who puts in 1 hour of work.  It all has to do with breeding work conditions that work towards their advantage.</p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/w5F2Y-QfmCU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/features/working-remote/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://warpspire.com/features/working-remote/</feedburner:origLink></item>
		<item>
		<title>Ruby Training in Atlanta, April 1-3</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/XVgFomZVl7I/</link>
		<comments>http://warpspire.com/tipsresources/programming/ruby-training-in-atlanta-april-1-3/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 20:25:59 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=361</guid>
		<description><![CDATA[<a href="http://entp.com">entp</a>'s Jeremy McAnally is teaming up with <a href="http://www.rubypal.com/">Ruby Power and Light</a> (that'd be the very David Black) to put on a three day Ruby training session in Atlanta April 1st-3rd.  Early bird pricing ends March 11th (three days from now!) so get on it while the going's good!

<a href="http://hoth.entp.com/2009/3/2/join-us-for-ruby-training-april-1-3-in-atlanta">More info at Hoth</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://entp.com">entp</a>&#8217;s Jeremy McAnally is teaming up with <a href="http://www.rubypal.com/">Ruby Power and Light</a> (that&#8217;d be the very David Black) to put on a three day Ruby training session in Atlanta April 1st-3rd.  Early bird pricing ends March 11th (three days from now!) so get on it while the going&#8217;s good!</p>

<p><a href="http://hoth.entp.com/2009/3/2/join-us-for-ruby-training-april-1-3-in-atlanta">More info at Hoth</a></p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/XVgFomZVl7I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/tipsresources/programming/ruby-training-in-atlanta-april-1-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://warpspire.com/tipsresources/programming/ruby-training-in-atlanta-april-1-3/</feedburner:origLink></item>
		<item>
		<title>Do people really like the window management in xCode?</title>
		<link>http://feedproxy.google.com/~r/warpspire/~3/UtH4ohrTs2M/</link>
		<comments>http://warpspire.com/tipsresources/programming/do-people-really-like-the-window-management-in-xcode/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 20:00:27 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://warpspire.com/?p=349</guid>
		<description><![CDATA[I posted some thoughts to twitter last night about how much the xCode window management drives me insane.  What I got back was a huge reaction of "it's perfect" and "this is how OSX works"  Suddenly I was wondering, am I just insane for thinking the window management is absolutely horrible?

No, no. I'm not. It's horrible.  Just because Apple built it, does not make it perfect.]]></description>
			<content:encoded><![CDATA[<div class="infobox">
<p><strong>Hi, did you come here to tell me that XCode offers &#8220;all-in-one&#8221; editing?</strong> Please, don&#8217;t send me an email. This is addressed in this article if you take time to read it.</p>
</div>

<p>I posted some thoughts to twitter last night about how much the xCode window management drives me insane.  What I got back was a huge reaction of &#8220;it&#8217;s perfect&#8221; and &#8220;this is how OSX works&#8221;  Suddenly I was wondering, am I just insane for thinking the window management is absolutely horrible?</p>

<p>No, no. I&#8217;m not. It&#8217;s horrible.  Just because Apple built it, does not make it perfect.</p>

<h2>Tabs are the future (actually it&#8217;s been the standard for years)</h2>

<p>Tabs have clearly proven themselves to be a superior method for editing multiple code files.  Why? Because the most recognizable thing about code file is it&#8217;s <em>filename</em>.  Not the look of the text.  Let&#8217;s look at this through some examples.</p>

<h3>Case #1: Window-based management FTW, Photoshop</h3>

<div class="figure">
  <a href="/images/posts/xcode-windows/photoshop_full.jpg"><img src="/images/posts/xcode-windows/photoshop.jpg" /></a>
  <small>Example of window management in Photoshop</small>
</div>

<p>Window management in OSX defaults to a new window for each document. This works wonderfully for most applications when you can see the differences visually.  Photoshop is a great example.  Using Exposé, I can see which document I mean to be working on at a glance  The <em>visual representation</em> of the document is the unique identifier.</p>

<p>Some more points on why this works so well:</p>

<ul>
<li>Image documents are the <em>only windows</em> you will ever see in Photoshop. Everything else is a panel. This functionality is the same for all five-star document-based apps. iWork, iLife, etc.  There is a really good reason Apple chose to hide panels when activating Exposé.</li>
<li>Photoshop is a document immersive program. It&#8217;s unlikely you&#8217;ll be working on more than one PSD at a time.  The document is all that matters. Conversely with code, the project is all that matters (not one code file).</li>
</ul>

<h3>Case #2: Tab-based management FTW, Texmtate</h3>

<div class="figure">
  <a href="/images/posts/xcode-windows/textmate_full.jpg"><img src="/images/posts/xcode-windows/textmate.jpg" /></a>
  <small>Example of window management in Texmate</small>
</div>

<p>Window management for Textmate is handled via tabs and a persistent sidebar.  At a glance, you can see all files you&#8217;re currently working on.  In the case of Cocoa, you are often switching between interface &amp; implementation files, but this is easily handled via cmd-opt-up, so long as you have the name of the class right, you&#8217;ve got the right file.</p>

<p>Some points on why this works so well:</p>

<ul>
<li>Windows provide a way to group files in a meaningful manner. Each window is a unique project. Remember, the project is the important thing &#8212; when coding in Cocoa, you&#8217;ll need to edit multiple files at once to make them work with one another.</li>
<li>I can quickly move between individual files via the keyboard. Considering coding is almost purely typing, keeping my hands on the keyboard is <em>killer</em>.</li>
</ul>

<h3>Case #3: WTF-based management FTL, xCode</h3>

<div class="figure">
  <a href="/images/posts/xcode-windows/xcode_full.jpg"><img src="/images/posts/xcode-windows/xcode.jpg" /></a>
  <small>Example of window management in xCode</small>
</div>

<p>Window management for xCode is handled via a combination of this thing called a Project window, which morphs depending on it&#8217;s toolbar state, windows for each document, and windows for ancillary programs (like the model editor).  Please note I have the same number of windows open in this screenshot as I did in Textmate (7).  It&#8217;s actually a pretty small program,  but completely overwhelming.</p>

<p>Some points on why this doesn&#8217;t work so well:</p>

<ul>
<li>Windows mean different things.  Some mean code documents, some mean visual aid, some mean a kind of &#8220;project&#8221; that groups all things.</li>
<li>The project window continually morphs it&#8217;s state as you enter and exit debugging. It&#8217;s appearance is different, not upon your application&#8217;s state, but rather the toolbar button in the upper left, that automatically changes (one-way).</li>
<li>All the code looks the same. There is no unique identifier in Exposé mode. I must selectively hover over each file and read it&#8217;s filename. Or, I can exposé to try and find the project window (which can look much like a code window too), and then open a new document.</li>
<li>If I accidentally Cmd-W the Project window, I have to start from scratch, opening the whole project and each document again. This often happens as you accidentally open windows and want to immediately close them.</li>
</ul>

<p>Some may counter, telling me that xCode offers editing inside the project window. Sure, this works, but offers just as many frustrations.</p>

<ul>
<li>You <em>must</em> single click on files to open them. Double-clicking them still opens them in a new document.</li>
<li>Because of the above, and the last bullet on the previous list, I constantly find myself accidentally closing the project because I was trying to close an accidentally opened window.</li>
<li>Unless I choose not to run my program, I constantly have to switch out of debug mode and back into editing mode via the toolbar.</li>
<li>Every single time I open xCode I have to force it into editor mode.</li>
<li>There is a delay in single clicking a document.  You click the file on the sidebar, the sidebar highlights, but the new document doesn&#8217;t open in the editing window for a second or two. When trying to scan documents for some code, this results in endless confusion.</li>
<li>There&#8217;s no idea of &#8220;open files&#8221; in this mode. No context for which I&#8217;m working. I can&#8217;t say, work on the View Controllers by opening each of them. Each time I must select the unique view controller in the sidebar, ordered alphabetically.</li>
</ul>

<h2>It&#8217;s a shame</h2>

<p>It&#8217;s a shame, because other than the window management, xCode is really an awesome IDE. The actual text editing is great as is debugging, scriptability, and file management. It really helps solve all the problems that Cocoa apps force upon mere text editors (long method names, class names, files being in one directory, different types of files in the same directory, etc).</p>

<p>It&#8217;s the program&#8217;s fatal flaw in my mind.  It isn&#8217;t that it&#8217;s sub-par, or not good enough &#8212; it&#8217;s downright infuriating to use. I want to do mean things to cute kittens whenever I use it.  So I don&#8217;t. I use TextMate. Which actually is very good at Cocoa &amp; Objective-C. But it means much more typing (especially with the shift key) since TextMate favors tab-triggers rather than tab-completion.</p>

<p>At the end of the day, this is the kind of stuff I hope Mac developers care about.  It&#8217;s about making the user experience the #1 priority in software development.  And it&#8217;s something that I&#8217;m confident Apple knows about and intends to fix in future versions of xCode. Because they care about the user experience.</p>
<img src="http://feeds.feedburner.com/~r/warpspire/~4/UtH4ohrTs2M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://warpspire.com/tipsresources/programming/do-people-really-like-the-window-management-in-xcode/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		<feedburner:origLink>http://warpspire.com/tipsresources/programming/do-people-really-like-the-window-management-in-xcode/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.649 seconds -->
