<?xml version="1.0" encoding="UTF-8"?>
<posts>
  <post>
    <id type="integer">28</id>
    <title>Yegge on Branding</title>
    <content>
<p>Steve Yegge is a funny guy.  Not only did he persuade me to take up Emacs, but he writes long rambling posts late at night that seem to nicely fit with my own bleary-eyed reading habits.</p>

<p>He keynoted at OSCON about branding.  <a href="http://blip.tv/file/319044/">Check it here</a>.  Now I know how to pronounce his name.</p>

<p>The great factoid that I pulled was <em>&#8220;it takes a generation to reverse brand perception&#8221;</em>.  Yegge points out that programmers graduating now were born After Java, how even language use and popularity follows generations since who wants to use their dad&#8217;s compiler?  That just won&#8217;t do.  Perhaps some of Ruby and Python&#8217;s acclaim can be attributed to this, stealing mind-share from Java and Perl.</p>

<p>It works in the web app space as well, although the gaps appear to be smaller.  Friendster erupted and waned as its users have aged, while Facebook stepped in to claim that coveted college-aged crowd.  MySpace dominates younger folk, but soon enough it will be usurped by a new, shinier app targeted at the preteens that MySpace leaves behind.  Try as they might, these apps will likely fail to anchor themselves to their target demographic and will age instead, continuously leaving room for newcomers to stake a claim.</p>

<p>Similar patterns appear for blogging platforms and web email clients, although in these cases, age matters less.  And all of this simply demonstrates how frigging important branding is on the web.  Coups have occurred so often in such a short time span that we can only expect more of the same, and branding from the start is a great way to position yourself to take advantage of that next cycle.</p>    </content>
    <published-on type="datetime">2007-08-29T01:40:43Z</published-on>
    <created-on type="datetime">2007-08-29T01:40:43Z</created-on>
    <updated-on type="datetime">2007-08-29T01:40:43Z</updated-on>
  </post>
  <post>
    <id type="integer">27</id>
    <title>One Little Dot</title>
    <content>
<p>I write in Ruby all day and I use <em>autotest</em>.  In a nutshell, autotest is a <a href="http://rubyforge.org/projects/zentest/">ZenTest</a> tool that runs your unit tests automatically, after changes, and is a wonderful little aid for test-driven development.</p>

<p>Now autotest embodies the simple response scheme &#8211; green is good, red is bad &#8211; that&#8217;s nicely visualized by the <tt>autotest/emacs</tt> helper script.  For those using the one-true-editor, it places a small dot under the buffer that simply changes color whenever your tests run, pass or fail.  I fell in love with this little gem, since it told me at a glance how my tests were doing without having to switch back to the autotest buffer all the time.  Eventually, I developed a sixth sense for that dot &#8211; it was always available, at a glance or in the corner of my eye &#8211; and found that I had broken a habit of waiting for tests.  Sweet.</p>

<p><em>And yet&#8230;</em></p>

<p>Not all was well.  The dot is updated by calls to <tt>emacsclient</tt>, which has the most unfortunate side effect of aborting the mini-buffer.  <em>Crippling flaw</em> is probably a better description.  Having simple or complex commands interrupted again and again drove me to curse under my breath, until finally, I gave up.  I tried some of the notification based scripts after that, but those fleeting temporal notices only made my longing for the dot grow.</p>

<p>So I implemented the dot as a Gnome panel applet a few weeks ago.  Sorry for the long backstory.</p>

<p><img src="http://blogforsamurai.com/files/gaa.png" align="right" /></p>

<p>It works nearly identically as <tt>autotest/emacs</tt>, but works for runs started on the console as well.  The installation, however, is much more involved.</p>

<p>First, <a href="http://blogforsamurai.com/files/gaa.tar.gz">download the <em>gaa</em> (Gnome autotest applet) tarball</a>.  Terrible name, I know.</p>

<p>To run this, you&#8217;ll need to install both <a href="http://ruby-gnome2.sourceforge.jp/">Ruby-GNOME2</a> and <a href="http://trac.luon.net/ruby-dbus/">Ruby D-Bus</a>.  Hint: there&#8217;s an Ubuntu package for ruby-gnome2 available, but it&#8217;s old (as of Feisty) and won&#8217;t work.  I recommend just building from source, as it was uneventful and easy for me.</p>

<p>Next up, you&#8217;ll want to load <tt>gaa/lib/autotest/gaa.rb</tt> in your <tt>~/.autotest</tt> file.  I just dropped in the absolute path:</p>

<pre><code>require '/home/dave/gaa/lib/autotest/gaa'
</code></pre>

<p>And finally, fire up the applet using the <tt>gaa/bin/gaa</tt> script.  For those so inclined, add it to your session so that it shows up in the panel upon login &#8211; on Feisty, just open up <em>System > Preferences > Sessions</em> and add away.</p>

<p>That should be it.  Hope you like it.</p>    </content>
    <published-on type="datetime">2007-08-19T02:45:24Z</published-on>
    <created-on type="datetime">2007-08-19T02:45:24Z</created-on>
    <updated-on type="datetime">2007-08-19T02:47:20Z</updated-on>
  </post>
</posts>
