<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>What You're Doing Is Rather Desperate</title>
	<atom:link href="http://nsaunders.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nsaunders.wordpress.com</link>
	<description>Notes from the life of a bioinformatics researcher</description>
	<lastBuildDate>Fri, 03 Jul 2009 02:42:25 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
		<url>http://www.gravatar.com/blavatar/0b37f699acf883c95592039b9959d13a?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>What You're Doing Is Rather Desperate</title>
		<link>http://nsaunders.wordpress.com</link>
	</image>
			<item>
		<title>Where to share?</title>
		<link>http://nsaunders.wordpress.com/2009/07/03/where-to-share/</link>
		<comments>http://nsaunders.wordpress.com/2009/07/03/where-to-share/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 02:40:27 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[publications]]></category>
		<category><![CDATA[web resources]]></category>
		<category><![CDATA[reference management]]></category>
		<category><![CDATA[social bookmarking]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1418</guid>
		<description><![CDATA[A brief and unscientific survey of social bookmarking buttons provided by journal websites.  Take with pinch of salt and/or tongue in cheek.
















I know, all bookmarking services provide their own tools, such as bookmarklets.  However, I suspect that a button is more convenient for many people:  it&#8217;s a courtesy and an advertisement for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1418&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A brief and unscientific survey of social bookmarking buttons provided by journal websites.  Take with pinch of salt and/or tongue in cheek.</p>
<table>
<tr>
<td valign="bottom">
<div id="attachment_1419" class="wp-caption alignnone" style="width: 258px"><a href="http://nsaunders.files.wordpress.com/2009/07/plos_share.png"><img src="http://nsaunders.files.wordpress.com/2009/07/plos_share.png?w=248&#038;h=77" alt="Share at PLoS" title="plos_share" width="248" height="77" class="size-full wp-image-1419" /></a><p class="wp-caption-text"><strong><em>PLoS get it.  As you'd expect.</em></strong></p></div>
</td>
<td valign="bottom">
<div id="attachment_1424" class="wp-caption alignnone" style="width: 97px"><a href="http://nsaunders.files.wordpress.com/2009/07/bmc_share.png"><img src="http://nsaunders.files.wordpress.com/2009/07/bmc_share.png?w=87&#038;h=93" alt="BMC get it too." title="bmc_share" width="87" height="93" class="size-full wp-image-1424" /></a><p class="wp-caption-text"><strong><em>BMC get it too.</em></strong></p></div>
</td>
<td valign="bottom">
<div id="attachment_1427" class="wp-caption alignnone" style="width: 174px"><a href="http://nsaunders.files.wordpress.com/2009/07/acs_share.png"><img src="http://nsaunders.files.wordpress.com/2009/07/acs_share.png?w=164&#038;h=160" alt="Even ACS kind of get it." title="acs_share" width="164" height="160" class="size-full wp-image-1427" /></a><p class="wp-caption-text"><strong><em>Even ACS kind of get it.</em></strong></p></div>
</td>
</tr>
<tr>
<td valign="bottom">
<div id="attachment_1441" class="wp-caption alignnone" style="width: 241px"><a href="http://nsaunders.files.wordpress.com/2009/07/nar_share.png"><img src="http://nsaunders.files.wordpress.com/2009/07/nar_share.png?w=231&#038;h=75" alt="OUP get the serious options" title="nar_share" width="231" height="75" class="size-full wp-image-1441" /></a><p class="wp-caption-text"><strong><em>OUP get it to a degree.</em></strong></p></div>
</td>
<td valign="bottom" colspan="2" align="center">
<div id="attachment_1429" class="wp-caption alignnone" style="width: 181px"><a href="http://nsaunders.files.wordpress.com/2009/07/npg_share.png"><img src="http://nsaunders.files.wordpress.com/2009/07/npg_share.png?w=171&#038;h=31" alt="Someone doesn&#39;t get it." title="npg_share" width="171" height="31" class="size-full wp-image-1429" /></a><p class="wp-caption-text"><strong><em>Someone doesn't get it.</em></strong></p></div>
</td>
</tr>
</table>
<p>I know, all bookmarking services provide their own tools, such as bookmarklets.  However, I suspect that a button is more convenient for many people:  it&#8217;s a courtesy and an advertisement for social bookmarking and online reference management tools.</p>
<p>So NPG:  is it &#8220;we promote sharing&#8221; or &#8220;we promote sharing so long as you use our service?&#8221;</p>
Posted in publications, web resources Tagged: reference management, social bookmarking <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1418&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/07/03/where-to-share/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>

		<media:content url="http://nsaunders.files.wordpress.com/2009/07/plos_share.png" medium="image">
			<media:title type="html">plos_share</media:title>
		</media:content>

		<media:content url="http://nsaunders.files.wordpress.com/2009/07/bmc_share.png" medium="image">
			<media:title type="html">bmc_share</media:title>
		</media:content>

		<media:content url="http://nsaunders.files.wordpress.com/2009/07/acs_share.png" medium="image">
			<media:title type="html">acs_share</media:title>
		</media:content>

		<media:content url="http://nsaunders.files.wordpress.com/2009/07/nar_share.png" medium="image">
			<media:title type="html">nar_share</media:title>
		</media:content>

		<media:content url="http://nsaunders.files.wordpress.com/2009/07/npg_share.png" medium="image">
			<media:title type="html">npg_share</media:title>
		</media:content>
	</item>
		<item>
		<title>Great work, ISMB microblogging team</title>
		<link>http://nsaunders.wordpress.com/2009/07/03/great-work-ismb-microblogging-team/</link>
		<comments>http://nsaunders.wordpress.com/2009/07/03/great-work-ismb-microblogging-team/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 00:42:35 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[bioinformatics]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[meetings]]></category>
		<category><![CDATA[web resources]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[iscb]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[ismb]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1415</guid>
		<description><![CDATA[Another year, another ISMB/ECCB meeting and &#8211; another great blogging effort.
It&#8217;s all at the FriendFeed group:  ISMB/ECCB Stockholm 2009, with outgoing links to individual blogs too.
Thanks and congratulations to all involved for a great effort.  Looking forward to the official write-up.
Posted in bioinformatics, computing, meetings, web resources Tagged: friendfeed, iscb, ismb, microblogging  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1415&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Another year, another <a href="http://www.iscb.org/ismbeccb2009/index.php">ISMB/ECCB</a> meeting and &#8211; another great blogging effort.</p>
<p>It&#8217;s all at the FriendFeed group:  <a href="https://friendfeed.com/ismbeccb2009">ISMB/ECCB Stockholm 2009</a>, with outgoing links to individual blogs too.</p>
<p>Thanks and congratulations to all involved for a great effort.  Looking forward to the official write-up.</p>
Posted in bioinformatics, computing, meetings, web resources Tagged: friendfeed, iscb, ismb, microblogging <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1415&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/07/03/great-work-ismb-microblogging-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
		<item>
		<title>How-to:  search across linked tables using acts_as_ferret</title>
		<link>http://nsaunders.wordpress.com/2009/07/01/how-to-search-across-linked-tables-using-acts_as_ferret/</link>
		<comments>http://nsaunders.wordpress.com/2009/07/01/how-to-search-across-linked-tables-using-acts_as_ferret/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 07:38:40 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[computing]]></category>
		<category><![CDATA[research diary]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[acts_as_ferret]]></category>
		<category><![CDATA[foreign keys]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1409</guid>
		<description><![CDATA[I&#8217;m in the process of adding search to a Rails application, using acts_as_ferret and ran into this issue.  How to search a table using a field from another table, supplied by a foreign key?

Let&#8217;s say you created a table for a model named Feature:


  create_table &#34;features&#34;, :force =&#62; true do &#124;t&#124;
   [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1409&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m in the process of adding search to a Rails application, using <a href="http://github.com/jkraemer/acts_as_ferret/tree/master">acts_as_ferret</a> and ran into this issue.  How to search a table using a field from another table, supplied by a foreign key?<br />
<span id="more-1409"></span><br />
Let&#8217;s say you created a table for a model named Feature:</p>
<pre name="code" class="ruby">

  create_table &quot;features&quot;, :force =&gt; true do |t|
    t.integer  &quot;feature_name_id&quot;
    t.integer  &quot;chromosome_id&quot;
    t.integer  &quot;start&quot;
    t.integer  &quot;end&quot;
    t.string   &quot;strand&quot;
    t.datetime &quot;created_at&quot;
    t.datetime &quot;updated_at&quot;
  end
</pre>
<p>This model, Feature, belongs_to two models,  FeatureName and Chromosome, each with a field &#8220;name&#8221;:</p>
<pre name="code" class="ruby">

  create_table &quot;feature_names&quot;, :force =&gt; true do |t|
    t.string   &quot;name&quot;
    t.datetime &quot;created_at&quot;
    t.datetime &quot;updated_at&quot;
  end

  create_table &quot;chromosomes&quot;, :force =&gt; true do |t|
    t.string   &quot;name&quot;
    t.integer  &quot;length&quot;
    t.datetime &quot;created_at&quot;
    t.datetime &quot;updated_at&quot;
  end
</pre>
<p>You want to search for features using the associated feature_name or chromosome_name.</p>
<p>Here&#8217;s the trick.  Edit app/models/feature.rb to look something like this (just showing the relevant parts here):</p>
<pre name="code" class="ruby">

class Feature &lt; ActiveRecord::Base
  acts_as_ferret :fields =&gt; [:fname,:cname]
  belongs_to :feature_name
  belongs_to :chromosome

  # ferret indexing on foreign keys
  def fname
    &quot;#{self.feature_name.name}&quot;
  end

  def cname
    &quot;#{self.chromosome.name}&quot;
  end

end
</pre>
<p>That tells acts_as_ferret to index whatever is returned by the methods <em>fname</em> and <em>cname</em>.  Which is:  the name field from the FeatureName and Chromosome models, respectively.</p>
<p>For testing, I use a small rake task to pre-build indices.  Run it with &#8220;rake ferret:build&#8221;.</p>
<pre name="code" class="ruby">

namespace :ferret do
  # Rebuild index task.
    desc &quot;Rebuild a Ferret index.&quot;
      task :build =&gt; :environment do
        [Feature,MyOtherModel1,MyOtherModel2].each do |model|
            model.rebuild_index
        end
  end
end
</pre>
<p>If search isn&#8217;t returning results following your changes, don&#8217;t forget to restart the server.</p>
Posted in computing, research diary, ruby Tagged: acts_as_ferret, foreign keys, rails <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1409/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1409&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/07/01/how-to-search-across-linked-tables-using-acts_as_ferret/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
		<item>
		<title>At a complete (Rails) loss</title>
		<link>http://nsaunders.wordpress.com/2009/06/29/at-a-complete-rails-loss/</link>
		<comments>http://nsaunders.wordpress.com/2009/06/29/at-a-complete-rails-loss/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 01:29:34 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[computing]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[stupidity]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1388</guid>
		<description><![CDATA[I&#8217;ve been banging my head against the wall for almost a week with a Rails application.  This post is not a plea for help &#8211; I&#8217;d use a forum for that &#8211; just a record of the problem.  That said, feel free to comment, especially if you have a similar problem.
This is all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1388&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve been banging my head against the wall for almost a week with a Rails application.  This post is not a plea for help &#8211; I&#8217;d use a forum for that &#8211; just a record of the problem.  That said, feel free to comment, especially if you have a similar problem.</p>
<p>This is all using Rails 2.3.2, Mongrel 1.1.5, installed as gems on Ubuntu 9.04.</p>
<p>The basic issue:  2 models, 2 controllers, 2 sets of views.  Identical in almost every respect, little more than basic CRUD (index, create, update, destroy).  (1) works, (2) does not.</p>
<p><em>Update &#8211; thanks for your comments, here and elsewhere.  In the end I rebuilt from scratch with scaffolding and it&#8217;s all good so far.  Guess there was something rogue in my hand-crafted code.</em><br />
<span id="more-1388"></span><br />
The details:<br />
<strong>1.  The models</strong><br />
Model Organism:</p>
<pre name="code" class="ruby">

class Organism &lt; ActiveRecord::Base
  has_many :chromosomes
  has_many :platforms

  validates_presence_of     :name,:binomial,:taxid
  validates_numericality_of :taxid
  validates_uniqueness_of   :name,:binomial,:taxid
end
</pre>
<p>Model Chromosome:</p>
<pre name="code" class="ruby">

class Chromosome &lt; ActiveRecord::Base
  belongs_to :organism
  has_many   :features

  validates_presence_of     :name, :length
  validates_numericality_of :length
  validates_uniqueness_of   :name, :scope =&gt; :organism_id
end
</pre>
<p><strong>2.  The routes</strong><br />
File routes.rb contains (just the relevant lines):</p>
<pre name="code" class="ruby">

ActionController::Routing::Routes.draw do |map|
  map.resources :chromosomes
  map.resources :organisms
end
</pre>
<p><strong>3.  Controller for Chromosome (this works)</strong><br />
Here&#8217;s the controller for Chromosome.  It&#8217;s just your basic CRUD.<br />
chromosomes_controller.rb</p>
<pre name="code" class="ruby">

class ChromosomesController &lt; ApplicationController

  def index
    @chromosomes = Chromosome.all
  end

  def edit
    @chromosome = Chromosome.find(params[:id])
  end

  def update
    @chromosome = Chromosome.find(params[:id])
    if @chromosome.update_attributes(params[:chromosome])
      flash[:notice] = &quot;Chromosome updated&quot;
      redirect_to :action =&gt; :index
    else
      render :action =&gt; :new
    end
  end

  def new
    @chromosome = Chromosome.new
  end

  def create
    @chromosome = Chromosome.new(params[:chromosome])
    if @chromosome.save
      flash[:notice] = &quot;Chromosome added&quot;
      redirect_to :action =&gt; &quot;index&quot;
    else
      render :action =&gt; &quot;new&quot;
    end
  end

  def destroy
    @chromosome = Chromosome.find(params[:id])
    # don&#039;t delete chromosome if linked to features
    if Feature.all(:conditions =&gt; {:chromosome_id =&gt; @chromosome.id}).length &gt; 0
      flash[:notice] = &quot;Cannot delete chromosome:  it has features&quot;
      redirect_to :action =&gt; &quot;index&quot;
    else
      @chromosome.destroy
      flash[:notice] = &quot;Chromosome deleted&quot;
      redirect_to :action =&gt; &quot;index&quot;
    end
  end

end
</pre>
<p><strong>3.  Views for Chromosome (these work too)</strong><br />
Now the views:  index, edit, new and a partial named &#8220;_form.html.erb&#8221;.<br />
index.html.erb:</p>
<pre name="code" class="ruby">

&lt;h1&gt;Chromosomes&lt;/h1&gt;
&lt;div class=&quot;info&quot;&gt;Add a &lt;%= link_to &#039;new chromosome&#039;, new_chromosome_path %&gt; here.&lt;/div&gt;
&lt;div class=&quot;info&quot;&gt;Or click a &#039;last update&#039; table entry to view/edit/delete.&lt;/div&gt;

&lt;table&gt;
 &lt;tr&gt;
   &lt;th&gt;Name&lt;/th&gt;
   &lt;th&gt;Length&lt;/th&gt;
   &lt;th&gt;Organism&lt;/th&gt;
   &lt;th&gt;Last Updated&lt;/th&gt;
 &lt;/tr&gt;

 &lt;% @chromosomes.each do |@chrom| %&gt;
   &lt;tr class=&quot;data&quot;&gt;
     &lt;td&gt;&lt;%=h @chrom.name %&gt;&lt;/td&gt;
     &lt;td&gt;&lt;%=h @chrom.length %&gt;&lt;/td&gt;
     &lt;td&gt;&lt;%=h @chrom.organism.name %&gt;&lt;/td&gt;
     &lt;td&gt;&lt;%= link_to @chrom.updated_at, edit_chromosome_path(@chrom) %&gt;&lt;/td&gt;
   &lt;/tr&gt;
 &lt;% end %&gt;
&lt;/table&gt;
</pre>
<p>new.html.erb and edit.html.erb &#8211; are essentially identical except for wording:<br />
new.html.erb</p>
<pre name="code" class="ruby">

&lt;h1&gt;New Sequence&lt;/h1&gt;
&lt;div class=&quot;info&quot;&gt;Enter sequence details and click &#039;Save&#039;.&lt;/div&gt;

&lt;%= render :partial =&gt; &quot;form&quot; %&gt;
</pre>
<p>Here&#8217;s the partial ERB file, _form.html.erb:</p>
<pre name="code" class="ruby">

&lt;% form_for(@chromosome) do |f| %&gt;
  &lt;%= f.error_messages %&gt;
  &lt;table&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;%= f.label      :name %&gt;&lt;/td&gt;
      &lt;td&gt;&lt;%= f.text_field :name %&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;%= f.label      :length %&gt;&lt;/td&gt;
      &lt;td&gt;&lt;%= f.text_field :length %&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;%= f.label      :organism %&gt;&lt;/td&gt;
      &lt;td&gt;
        &lt;%= render :partial =&gt; &quot;organisms/select&quot;, :locals =&gt; {:organisms =&gt; @organisms} %&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td colspan=&quot;2&quot; class=&quot;right&quot;&gt;&lt;%= f.submit &#039;Save&#039; %&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;
&lt;% end %&gt;

&lt;% if @chromosome.id %&gt;
&lt;div class=&quot;info&quot;&gt;Or &lt;%= link_to &#039;delete&#039;, @chromosome,
                         :confirm =&gt; &quot;Are you sure?&quot;,
                         :method =&gt; :delete %&gt; this chromosome permanently.&lt;/div&gt;
&lt;% end %&gt;
</pre>
<p>The partial app/views/organisms/_select.html.erb is simply:</p>
<pre name="code" class="ruby">

&lt;%= collection_select(:chromosome, :organism_id, Organism.all, :id, :name) %&gt;
</pre>
<p><strong>4. Controller and views for Organism (these don&#8217;t work)</strong><br />
The controller organisms_controller.rb is identical to that for chromosomes, EXCEPT that @chromosome(s) is replaced by @organism(s) throughout and the destroy method is:</p>
<pre name="code" class="ruby">

  def destroy
    @organism = Organism.find(params[:id])
    # don&#039;t delete organism if linked to chromosomes
    if Chromosome.all(:conditions =&gt; {:organism_id =&gt; @organism.id}).length &gt; 0
      flash[:notice] = &quot;Cannot delete organism:  it has chromosomes&quot;
      redirect_to :action =&gt; &quot;index&quot;
    else
      @organism.destroy
      flash[:notice] = &quot;Organism deleted&quot;
      redirect_to :action =&gt; &quot;index&quot;
    end
  end
</pre>
<p>And index.html.erb, new.html.erb, edit.html.erb are also identical, except that @chrom(osome) is replaced by @org(anism) throughout and the fields are those for Organism.  For example in _form.html.erb:</p>
<pre name="code" class="ruby">

&lt;% form_for(@organism) do |f| %&gt;
  &lt;%= f.error_messages %&gt;
  &lt;table&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;%= f.label      :name %&gt;&lt;/td&gt;
      &lt;td&gt;&lt;%= f.text_field :name %&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;%= f.label      :binomial %&gt;&lt;/td&gt;
      &lt;td&gt;&lt;%= f.text_field :binomial %&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;%= f.label      :taxid %&gt;&lt;/td&gt;
      &lt;td&gt;&lt;%= f.text_field :taxid %&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td colspan=&quot;2&quot; class=&quot;right&quot;&gt;&lt;%= f.submit &#039;Save&#039; %&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;
&lt;% end %&gt;

&lt;% if @organism.id %&gt;
&lt;div class=&quot;info&quot;&gt;Or &lt;%= link_to &#039;delete&#039;, @organism,
                         :confirm =&gt; &quot;Are you sure?&quot;,
                         :method =&gt; :delete %&gt; this organism permanently.&lt;/div&gt;
&lt;% end %&gt;
</pre>
<p><strong>5.  The problem</strong><br />
Chromosome works just fine.  Index shows a list of chromosomes.  New adds a new chromosome.  Edit fills in the form with chromosome parameters and allows update or destroy.</p>
<p>Organism does not work just fine.  The <em>new</em> method works and adds a new organism.  But <em>edit</em> gives this error (I removed the ERB/HTML tags as they mess up blog formatting):<br />
<code><br />
 NoMethodError in Organisms#edit<br />
Showing app/views/organisms/_form.html.erb where line #1 raised:<br />
undefined method `organism__path' for #ActionView::Base:0xb6a81fe0<br />
Extracted source (around line #1):</p>
<p>1: form_for(@organism) do |f|<br />
2:    f.error_messages </p>
<p>Trace of template inclusion: app/views/organisms/edit.html.erb</p>
<p>RAILS_ROOT: /bioinfo/neil/projects/microarray_mining/code/Rails/ArrayMiner<br />
Application Trace | Framework Trace | Full Trace</p>
<p>/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/polymorphic_routes.rb:109:in `__send__'<br />
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/polymorphic_routes.rb:109:in `polymorphic_url'<br />
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/polymorphic_routes.rb:116:in `polymorphic_path'<br />
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/helpers/form_helper.rb:298:in `apply_form_for_options!'<br />
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/helpers/form_helper.rb:277:in `form_for'<br />
code/Rails/ArrayMiner/app/views/organisms/_form.html.erb:1:in `_run_erb_app47views47organisms47_form46html46erb_locals_form_object'<br />
code/Rails/ArrayMiner/app/views/organisms/edit.html.erb:4:in `_run_erb_app47views47organisms47edit46html46erb'<br />
</code></p>
<p><strong>The problem?</strong><br />
There seems to be some issue with routes.  For some reason, form_for(@organism) works fine with the new method, but not with the edit method.  The error &#8220;undefined method &#8216;organism__path&#8217;&#8221; (note the 2 underscores) is perplexing.<br />
Other observations &#8211; (1) moving lines around in routes.rb then restarting Mongrel has sporadically fixed the problem, but then errors return.  (2) I have similar code for a model named Technology which misbehaves in the same way, but code for 3 other models in addition to Chromosome works fine.  As before, all the code is more or less identical, just with different variable names.</p>
Posted in computing, ruby Tagged: bug, rails, stupidity <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1388/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1388&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/06/29/at-a-complete-rails-loss/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
		<item>
		<title>Querying NCBI Entrez database fields using Ruby</title>
		<link>http://nsaunders.wordpress.com/2009/05/27/querying-ncbi-entrez-database-fields-using-ruby/</link>
		<comments>http://nsaunders.wordpress.com/2009/05/27/querying-ncbi-entrez-database-fields-using-ruby/#comments</comments>
		<pubDate>Wed, 27 May 2009 07:33:41 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[bioinformatics]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[entrez]]></category>
		<category><![CDATA[eutils]]></category>
		<category><![CDATA[hpricot]]></category>
		<category><![CDATA[ncbi]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1377</guid>
		<description><![CDATA[Here&#8217;s a problem.  You&#8217;d like to construct a complex query at NCBI Entrez using various fields.  Example:
&#8220;9606&#8243;[Taxonomy ID]
to limit your search to Homo sapiens.  Except &#8211; you don&#8217;t know which fields are available for the database that you want to query.

EInfo can return an XML file with this information.  Ruby + [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1377&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Here&#8217;s a problem.  You&#8217;d like to construct a complex query at NCBI Entrez using various fields.  Example:</p>
<blockquote><p>&#8220;9606&#8243;[Taxonomy ID]</p></blockquote>
<p>to limit your search to <em>Homo sapiens</em>.  Except &#8211; you don&#8217;t know which fields are available for the database that you want to query.<br />
<span id="more-1377"></span><br />
<a href="http://www.ncbi.nlm.nih.gov/corehtml/query/static/einfo_help.html">EInfo</a> can return an XML file with this information.  Ruby + <a href="http://github.com/why/hpricot/tree/master">Hpricot</a> eats XML for breakfast.  Here&#8217;s an example using the GEO Datasets (gds) database.</p>
<pre name="code" class="ruby">

#!/usr/bin/ruby

require &#039;rubygems&#039;
require &#039;hpricot&#039;
require &#039;open-uri&#039;

doc = Hpricot(open(&quot;http://eutils.ncbi.nlm.nih.gov/entrez/eutils/einfo.fcgi?db=gds&quot;))

(doc/&#039;//fieldlist/field&#039;).each do |f|
  puts &quot;#{(f/&#039;/name&#039;).inner_html},#{(f/&#039;/fullname&#039;).inner_html},#{(f/&#039;description&#039;).inner_html}&quot;
end
</pre>
<p>And the first few lines of output:<br />
<code><br />
ALL,All Fields,All terms from all searchable fields<br />
UID,UID,Unique number assigned to publication<br />
FILT,Filter,Limits the records<br />
ORGN,Organism,exploded organism names<br />
....24 more lines....<br />
<code></p>
Posted in bioinformatics, computing, ruby Tagged: entrez, eutils, hpricot, ncbi <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1377/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1377&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/05/27/querying-ncbi-entrez-database-fields-using-ruby/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
		<item>
		<title>Baby steps with RSRuby in Rails</title>
		<link>http://nsaunders.wordpress.com/2009/05/20/baby-steps-with-rsruby-in-rails/</link>
		<comments>http://nsaunders.wordpress.com/2009/05/20/baby-steps-with-rsruby-in-rails/#comments</comments>
		<pubDate>Wed, 20 May 2009 10:27:04 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[computing]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[cran]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rsruby]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1361</guid>
		<description><![CDATA[Plotting and charting libraries for Ruby (on Rails) abound.  However, few are sophisticated enough for scientists and many are not actively maintained.  Plotting in R, on the other hand, is about as sophisticated as it comes.
Can we bridge Ruby and R?  Yes we can, thanks to Alex Gutteridge&#8217;s RSRuby.  The next [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1361&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Plotting and charting libraries for Ruby (on Rails) abound.  However, few are sophisticated enough for scientists and many are not actively maintained.  Plotting <a href="http://cran.r-project.org/">in R</a>, on the other hand, is about as sophisticated as it comes.</p>
<p>Can we bridge Ruby and R?  Yes we can, thanks to Alex Gutteridge&#8217;s <a href="http://github.com/alexgutteridge/rsruby/tree/master">RSRuby</a>.  The next logical question:  how to plot data using RSRuby in your shiny new Rails application?<br />
<span id="more-1361"></span><br />
First, thanks to Peter Lane over at <a href="http://rubyforscientificresearch.blogspot.com/">Ruby for Scientific Research</a>, a relatively-new blog with some excellent <a href="http://rubyforscientificresearch.blogspot.com/search/label/RSRuby">introductory RSRuby articles</a>.  Thanks also to Alex for providing RSRuby.</p>
<ol>
<li><strong>Install RSRuby</strong></li>
<p>My OS is  Ubuntu 9.04 with <a href="http://rubygems.org/">rubygems 1.3.3</a>, installed from source and Rails 2.3.2.  This works for me:</p>
<pre name="code" class="bash">

sudo gem install rsruby -- --with-R-home=/usr/lib/R --with-R-include=/usr/share/R/include
</pre>
<li><strong>Make the RSRuby gem available to Rails</strong></li>
<p>I edited config/environment.rb to include the gem:</p>
<pre name="code" class="ruby">

Rails::Initializer.run do |config|
  config.gem &#039;rsruby&#039;
  # other config options here...
end
</pre>
<li><strong>Create your Rails application</strong></li>
<p>Let&#8217;s call it Plotter.  Usual procedure:</p>
<pre name="code" class="bash">

rails Plotter
cd Plotter
rake db:create
</pre>
<p>We won&#8217;t use the database (default sqlite3) in this example, but you may use it later on.</p>
<li><strong>Tell the application about R_HOME</strong></li>
<p>RSRuby will fail unless the environment variable R_HOME is set.  To tell Plotter that R_HOME is /usr/lib/R, I put this in the file <em>app/helpers/application_helper.rb</em>:</p>
<pre name="code" class="ruby">

module ApplicationHelper
# set R_HOME if not set
  if ENV[&#039;R_HOME&#039;].nil?
    ENV[&#039;R_HOME&#039;] = &quot;/usr/lib/R&quot;
  end
end
</pre>
<li><strong>Make an instance of RSRuby available to all controllers</strong></li>
<p>RSRuby works by providing an instance of an &#8220;R object&#8221;, on which you call R functions as methods.  I provided the object by editing <em>app/controllers/application_controller.rb</em> to include a method named <em>InitR</em>:</p>
<pre name="code" class="ruby">

class ApplicationController &lt; ActionController::Base
# Make R instance available to all
  def InitR
    @r = RSRuby.instance
    return @r
  end
end
</pre>
<li><strong>Create a sample controller and view</strong></li>
<p>For testing purposes, I created a controller named <em>Home</em> with a single view named <em>index</em>:</p>
<pre name="code" class="bash">

./script/generate controller Home index
rm public/index.html
</pre>
<p>I edited <em>config/routes.rb</em> so as the root of the application is the index view for the home controller:</p>
<pre name="code" class="ruby">

ActionController::Routing::Routes.draw do |map|
  map.root      :controller =&gt; &quot;home&quot;  #default view is app/views/home/index.html.erb
  map.connect  &#039;:controller/:action/:id&#039;
  map.connect  &#039;:controller/:action/:id.:format&#039;
end
</pre>
<p>Now we can get to work on the file <em>app/controllers/home_controller.rb</em>.  I wrote a sample method, <em>show_image</em> to plot a histogram using R via RSRuby:</p>
<pre name="code" class="ruby">

  def show_image
  # next 6 lines use R to plot a histogram
    @r = InitR()
    @d = @r.rnorm(1000)
    @l = @r.range(-4,4,@d)
    @r.png &quot;/tmp/plot.png&quot;
    @r.par(:bg =&gt; &quot;cornsilk&quot;)
    @r.hist(@d, :range =&gt; @l, :col =&gt; &quot;lavender&quot;, :main =&gt; &quot;My Plot&quot;)
    @r.eval_R(&quot;dev.off()&quot;)  #required for png output
    # then read the png file and deliver it to the browser
    @g = File.open(&quot;/tmp/plot.png&quot;, &quot;rb&quot;) {|@f| @f.read}
    send_data @g, :type=&gt;&quot;image/png&quot;, :disposition=&gt;&#039;inline&#039;
  end
</pre>
<p>Not the prettiest code, but you get the idea.  Obviously the owner of the HTTP daemon (www-data on Ubuntu) must have write permission to the location of the PNG file; /tmp in this case.</p>
<li><strong>Create the view</strong></li>
<p>All that remains is to edit <em>app/views/home/index.html.erb</em> so as it displays the image:</p>
<pre name="code" class="ruby">

&lt;h1&gt;Home#index&lt;/h1&gt;
&lt;p&gt;Find me in app/views/home/index.html.erb&lt;/p&gt;
&lt;%= image_tag(url_for(:controller =&gt; &quot;home&quot;, :action =&gt; &quot;show_image&quot;)) %&gt;
</pre>
<p>Which just says &#8220;wrap whatever comes out of the method show_image in an IMG SRC tag&#8221;.
</ol>
<p><div id="attachment_1370" class="wp-caption alignright" style="width: 280px"><a href="http://nsaunders.files.wordpress.com/2009/05/rsruby.png"><img src="http://nsaunders.files.wordpress.com/2009/05/rsruby.png?w=270&#038;h=300" alt="RSRuby on Rails histogram plot" title="rsruby" width="270" height="300" class="size-medium wp-image-1370" /></a><p class="wp-caption-text">RSRuby on Rails histogram plot</p></div><br />
Fire up your application using &#8220;./script/server&#8221;, point your browser at http://localhost:3000 and you should see something like the image to the right.</p>
<p>One drawback of this approach is the need to write a file to disk and so have to worry about naming, cleaning up and so on.  I have not found a way to make R output plots to stdout or as a base64 string.  If you think this is possible, leave a comment.</p>
<p>OK &#8211; so now you can get serious, write some generic methods, design a database schema to store data for plotting and so on.</p>
Posted in computing, ruby Tagged: cran, rails, rsruby <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1361&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/05/20/baby-steps-with-rsruby-in-rails/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>

		<media:content url="http://nsaunders.files.wordpress.com/2009/05/rsruby.png?w=270" medium="image">
			<media:title type="html">rsruby</media:title>
		</media:content>
	</item>
		<item>
		<title>Where next for this blog?</title>
		<link>http://nsaunders.wordpress.com/2009/05/12/where-next-for-this-blog/</link>
		<comments>http://nsaunders.wordpress.com/2009/05/12/where-next-for-this-blog/#comments</comments>
		<pubDate>Tue, 12 May 2009 05:34:31 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[bioinformatics]]></category>
		<category><![CDATA[this blog]]></category>
		<category><![CDATA[web resources]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1354</guid>
		<description><![CDATA[It&#8217;s apparent that my activity at this blog has been on a downward-slope for some time.  I currently post about once a month and when I do, it&#8217;s more likely to be a rant about some social network/web2.0 application than about bioinformatics.
So the question is what to do about it.
Update: thanks for the many, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1354&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It&#8217;s apparent that my activity at this blog has been on a downward-slope for some time.  I currently post about once a month and when I do, it&#8217;s more likely to be a rant about some social network/web2.0 application than about bioinformatics.</p>
<p>So the question is what to do about it.<br />
<em><strong>Update:</strong> thanks for the many, rapid and helpful responses.  The unanimous view was &#8211; stay here, keep blogging.  So that&#8217;s what it will be!</em><br />
<span id="more-1354"></span><br />
Options include:</p>
<ol>
<li>Nothing; just let it slide, don&#8217;t worry and post when I have something to say</li>
<li>Declare this blog closed and focus on other activities</li>
<li>Declare this blog closed and start afresh elsewhere, with good intentions</li>
</ol>
<p>Option (3) entails a move to a hosting platform that allows for more customisation; so as I can, for example, aggregate content from other services (and so write less).  WordPress.com is not good at this, but I don&#8217;t have the time or energy for self-hosting &#8211; which I suppose leaves Blogger as the only option.</p>
<p>Thoughts welcome.</p>
Posted in bioinformatics, this blog, web resources  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1354&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/05/12/where-next-for-this-blog/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
		<item>
		<title>Brief words on the FriendFeed beta</title>
		<link>http://nsaunders.wordpress.com/2009/04/07/brief-words-on-the-friendfeed-beta/</link>
		<comments>http://nsaunders.wordpress.com/2009/04/07/brief-words-on-the-friendfeed-beta/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 09:06:37 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[web resources]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1349</guid>
		<description><![CDATA[The best place for discussion about the latest FriendFeed beta is at FriendFeed, of course.  However, it would be amiss of me not to record a couple of thoughts.
On the whole, there&#8217;s little about which I feel strongly for better or worse &#8211; which rather suggests that the current design is just fine.  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1349&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The best place for discussion about the latest <a href="http://beta.friendfeed.com">FriendFeed beta</a> is at FriendFeed, of course.  However, it would be amiss of me not to record a couple of thoughts.</p>
<p>On the whole, there&#8217;s little about which I feel strongly for better or worse &#8211; which rather suggests that the current design is just fine.  With three major exceptions:<br />
<span id="more-1349"></span></p>
<ol>
<li><strong>The service favicons and service filtering</strong></li>
<p>Someone has decided that the source of information is less important than the content &#8211; in fact, that the source is irrelevant.  I and many others disagree <em>strongly</em>.  It seems that many people use the small icons that identify the item source as a subconscious visual cue, in ways that the designers have not anticipated.  Richard <a href="http://scilib.typepad.com/science_library_pad/2009/04/why-i-dont-like-friendfeed-beta.html">describes this concisely</a>.<br />
<em>Retain source icon and ability to filter by source</em>.</p>
<li><strong>Merging of rooms and individuals into subscriptions</strong></li>
<p>Rooms have been renamed groups and are presented, at least in the sidebar menu, in the same context as individual users.  Mistake.  Rooms are not individuals; they really are virtual places where people gather for in-depth discussion of specific topics.<br />
<em>Keep rooms distinct</em>.</p>
<li><strong>Real-time as default</strong></li>
<p>You&#8217;ve got to be kidding me.  Seriously, who uses <em>any</em> site in real-time?  Who has time to sit and stare at the screen as updates scroll by?<br />
This is not how I use FriendFeed.  I browse, search and read items in some depth as and when I feel like it.  This design decision creates a worse, not a better, impression of not being able to keep up with the information stream.<br />
I can only assume that someone has been influenced by some self-appointed web guru telling us that real-time is the new static, or some such stupid soundbite.<br />
<em>Real-time as option, not default</em>.
</ol>
<p>I feel, as do others, that FriendFeed&#8217;s appeal lies in the &#8220;information first, then people&#8221; ethos and that we are seeing a shift to personality-centric streams with an unwelcome similarity to <em>e.g.</em> Facebook.  Ultimately, I guess FriendFeed is a business that has to attract users &#8211; and if the majority want a Facebook clone, then that&#8217;s what we will get.  It will be a terrible shame if we have to move elsewhere &#8211; time will tell.</p>
Posted in web resources Tagged: beta, community, friendfeed, web2.0 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1349/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1349/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1349/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1349&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/04/07/brief-words-on-the-friendfeed-beta/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
		<item>
		<title>Slideshare FAIL</title>
		<link>http://nsaunders.wordpress.com/2009/04/02/slideshare-fail/</link>
		<comments>http://nsaunders.wordpress.com/2009/04/02/slideshare-fail/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 03:08:53 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[web resources]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[slideshare]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1339</guid>
		<description><![CDATA[I enjoy a good joke.  I&#8217;m not so politically-correct that I won&#8217;t laugh at the expense of others &#8211; remember I grew up in the UK, where bullying was part of the culture ;-), nor so po-faced that I can&#8217;t laugh at my own expense.
I do not enjoy April Fools.  Jokes on this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1339&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I enjoy a good joke.  I&#8217;m not so politically-correct that I won&#8217;t laugh at the expense of others &#8211; remember I grew up in the UK, where bullying was part of the culture ;-), nor so po-faced that I can&#8217;t laugh at my own expense.</p>
<p>I do not enjoy April Fools.  Jokes on this day are rarely, if ever, good jokes.  Perhaps they were more fun when humans lived in small, isolated communities with little knowledge of the outside world and so could be fooled <em>en masse</em> by <a href="http://en.wikipedia.org/wiki/Spaghetti_Tree">spaghetti trees</a>.  However, this is the 21st century, the age of information.  We should be harder to fool, because we know more about the world.</p>
<p>Paradoxically, it&#8217;s the information age that enables the flood of tedious, blatantly false, time-wasting stories in our inboxes and feed readers every April 1st.  You might even say that everyday is April 1st, somewhere on the Web.  The elements of surprise and ignorance are gone.  Perhaps it&#8217;s time to abandon this quaint custom.</p>
<p>Which brings me to Slideshare, who decided that it would be tremendously funny to (1) inflate users&#8217; slide views by adding two zeroes and (2) inform their users by email.  <span id="more-1339"></span>Some users are rather upset by this because rather than check the facts, they instantly tweeted the news &#8220;I am a slideshare rock star&#8221; and now feel rather foolish.  Well, not much sympathy from me there (see paragraph 1).</p>
<p>Others <a href="http://philbradley.typepad.com/phil_bradleys_weblog/2009/04/slideshare-april-fool-joke-goes-disasterously-wrong.html">have outlined some better reasons</a> why this was not a smart move on Slideshare&#8217;s part, so I&#8217;ll just briefly reiterate:</p>
<ol>
<li>Time-wasting, unsolicited email = spam</li>
<li>Whilst user data were not manipulated, the act gave the impression that they may have been &#8211; which does not inspire confidence or trust</li>
<li>Many users view Slideshare as a professional showcase for their work &#8211; this act detracted from that professionalism
</li>
<li>Slideshare have enough problems (and yesterday, more so) maintaining the functionality of their site &#8211; users appreciate more effort in that direction and less on pranks</li>
</ol>
<p>To their credit, public apologies from Slideshare are flowing freely.  My advice for next year &#8211; just stay clear of the whole April 1st rubbish.  It&#8217;s not funny or clever and as several commenters said, Slideshare isn&#8217;t YouTube.</p>
Posted in web resources Tagged: communication, slideshare, web 2.0 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1339/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1339&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/04/02/slideshare-fail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
		<item>
		<title>everyONE&#8230;</title>
		<link>http://nsaunders.wordpress.com/2009/03/24/everyone/</link>
		<comments>http://nsaunders.wordpress.com/2009/03/24/everyone/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 02:25:51 +0000</pubDate>
		<dc:creator>nsaunders</dc:creator>
				<category><![CDATA[bioblogs]]></category>
		<category><![CDATA[blogroll]]></category>
		<category><![CDATA[publications]]></category>

		<guid isPermaLink="false">http://nsaunders.wordpress.com/?p=1332</guid>
		<description><![CDATA[&#8230;is the new community blog from PLoS ONE.  They write:

This blog is for authors who have published with us and for users who haven’t and it contains something for everyone.

You&#8217;ll need a WordPress.com account to contribute; it&#8217;s a quick, unobtrusive sign-up and why not start a blog there too, if you haven&#8217;t already done [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1332&subd=nsaunders&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>&#8230;is the new <a href="http://everyone.plos.org/">community blog</a> from <a href="http://www.plosone.org/">PLoS ONE</a>.  They write:</p>
<blockquote><p>
This blog is for authors who have published with us and for users who haven’t and it contains something for everyone.
</p></blockquote>
<p>You&#8217;ll need a WordPress.com account to contribute; it&#8217;s a quick, unobtrusive sign-up and why not start a blog there too, if you haven&#8217;t already done so.<br />
Bora <a href="http://friendfeed.com/e/5c312018-9a16-e5f2-2faf-f493360c8015/RT-p_binfield-PLoS-ONE-launches-everyONE-our-new/">writes</a>:</p>
<blockquote><p>
and spread the word, outside of just twitter and friendfeed ;-)
</p></blockquote>
Posted in bioblogs, blogroll, publications  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nsaunders.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nsaunders.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nsaunders.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nsaunders.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nsaunders.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nsaunders.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nsaunders.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nsaunders.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nsaunders.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nsaunders.wordpress.com/1332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nsaunders.wordpress.com&blog=334198&post=1332&subd=nsaunders&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://nsaunders.wordpress.com/2009/03/24/everyone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d0b5d29adc226ac2d2270d407ee2b67?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">nsaunders</media:title>
		</media:content>
	</item>
	</channel>
</rss>