<?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"
	>

<channel>
	<title>The eflow blog</title>
	<atom:link href="http://blog.eflow.org/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.eflow.org</link>
	<description>Insert some amazingly witty tagline here</description>
	<pubDate>Tue, 26 Aug 2008 01:37:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Alternative to LastTab Firefox Extension</title>
		<link>http://blog.eflow.org/archives/71</link>
		<comments>http://blog.eflow.org/archives/71#comments</comments>
		<pubDate>Tue, 26 Aug 2008 01:37:10 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[babble]]></category>

		<category><![CDATA[extension]]></category>

		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=71</guid>
		<description><![CDATA[Ever since upgrading to Firefox 3, I&#8217;ve been without my beloved LastTab.   It was but a simple extension: it allowed me to control-tab back and forth between tabs that I was working on.  With the many (many) tabs I like to keep open, well, being able to control-tab back through them in the order [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since upgrading to Firefox 3, I&#8217;ve been without my beloved <a href="https://addons.mozilla.org/en-US/firefox/addon/112">LastTab</a>.  <img title="Firefox Logo" src="http://blog.eflow.org/wp-content/uploads/2008/08/firefox.png" alt="firefox" align="right" /> It was but a simple extension: it allowed me to control-tab back and forth between tabs that I was working on.  With the many (many) tabs I like to keep open, well, being able to control-tab back through them in the order I last saw them was a real time saver.</p>
<p>Something better has finally come along: <a href="https://addons.mozilla.org/en-US/firefox/addon/112">ctrl-tab</a>.  It is as simple as LastTab&#8230;only prettier.  It apparently is <a href="http://developer.mozilla.org/devnews/index.php/2008/07/28/firefox-31-alpha-1-now-available-for-download/">slated to be included in Firefox 3.1</a>.  Very nice.</p>
<p>(It appears that LastTab has been upgraded to work with 3.0 finally.  I&#8217;m a little disappointed I&#8217;m only finding out about this now.  I had added the writers blog to my Reader with the <em>sole intent</em> of being able to get the updated extension on its release date&#8230;but no!  No announcement was made by Timothy Humphrey on this blog.  For months now I&#8217;ve been reading his mumbo jumbo posts for naught!  Bah!)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/71/feed</wfw:commentRss>
		</item>
		<item>
		<title>Puzzling DBUnit Error</title>
		<link>http://blog.eflow.org/archives/65</link>
		<comments>http://blog.eflow.org/archives/65#comments</comments>
		<pubDate>Sat, 09 Aug 2008 13:36:47 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[openmrs]]></category>

		<category><![CDATA[dbunit]]></category>

		<category><![CDATA[hibernate]]></category>

		<category><![CDATA[hsqldb]]></category>

		<category><![CDATA[junit]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=65</guid>
		<description><![CDATA[When writing a dbunit test for the CohortServiceTest, I encountered this non-informative error:
org.dbunit.dataset.NoPrimaryKeyException: COHORT_MEMBER
In the Cohort mapping file the cohort_member table is mapped like any hibernate collection:

&#60;set name="memberIds" cascade="none" lazy="true" table="cohort_member"&#62;
    &#60;key column="cohort_id" /&#62;
    &#60;element column="patient_id" type="integer" /&#62;
&#60;/set&#62;

It looks normal enough.  Cohort.memberIds is a list of integers defined by [...]]]></description>
			<content:encoded><![CDATA[<p>When writing a <a href="http://dbunit.sourceforge.net/">dbunit</a> test for the <a href="http://dev.openmrs.org/browser/openmrs/trunk/test/api/org/openmrs/test/api/CohortServiceTest.java">CohortServiceTest</a>, I encountered this non-informative error:</p>
<blockquote><p>org.dbunit.dataset.NoPrimaryKeyException: COHORT_MEMBER</p></blockquote>
<p>In the <a href="http://dev.openmrs.org/browser/openmrs/trunk/metadata/api/hibernate/org/openmrs/api/db/hibernate/Cohort.hbm.xml">Cohort</a> mapping file the cohort_member table is mapped like any hibernate collection:</p>
<blockquote>
<pre>&lt;set name="memberIds" cascade="none" lazy="true" table="cohort_member"&gt;
    &lt;key column="cohort_id" /&gt;
    &lt;element column="patient_id" type="integer" /&gt;
&lt;/set&gt;</pre>
</blockquote>
<p>It looks normal enough.  <a href="http://resources.openmrs.org/doc/org/openmrs/Cohort.html#getMemberIds()">Cohort.memberIds</a> is a list of integers defined by the cohort_member table.</p>
<p>Hibernate automatically creates the schema in our test hsqldb because we have hbm2ddl set to &#8220;auto&#8221;.  The problem arose here because hibernate wasn&#8217;t creating a dual primary key on the member_ids table.  Digging through the code, I found that Hibernate only assumes the primary keys are the columns that set to &#8220;not null&#8221;.</p>
<p>The corrected mapping with both columns set to be not-null:</p>
<blockquote>
<pre>&lt;set name="memberIds" cascade="none" lazy="true" table="cohort_member"&gt;
    &lt;key column="cohort_id" not-null="true"/&gt;
    &lt;element column="patient_id" type="integer" not-null="true"/&gt;
&lt;/set&gt;</pre>
</blockquote>
<p>Now hibernate creates the table with primary keys and hsql is happy again.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/65/feed</wfw:commentRss>
		</item>
		<item>
		<title>Hard Drive Savers Review</title>
		<link>http://blog.eflow.org/archives/59</link>
		<comments>http://blog.eflow.org/archives/59#comments</comments>
		<pubDate>Thu, 07 Aug 2008 14:02:16 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[babble]]></category>

		<category><![CDATA[hard drive]]></category>

		<category><![CDATA[hdd]]></category>

		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=59</guid>
		<description><![CDATA[Meghan&#8217;s laptop hard drive recently died.  It was a painful death.  One consisting of much clicking and clacking with no data retrieval.
Of course she didn&#8217;t have any backup solutions, so it was looking like her data was gone forever.
She cries, &#8220;Unacceptable!&#8221;
I retort, &#8220;But its expensive!&#8221;.  I cry.
So I do some googling for hard drive recovery [...]]]></description>
			<content:encoded><![CDATA[<p>Meghan&#8217;s laptop hard drive recently died.  It was a painful death.  One consisting of much clicking and clacking with no data retrieval.</p>
<p>Of course she didn&#8217;t have any backup solutions, so it was looking like her data was gone forever.</p>
<p>She cries, &#8220;Unacceptable!&#8221;</p>
<p>I retort, &#8220;But its expensive!&#8221;.  I cry.</p>
<p>So I do some <a href="http://google.com">googling</a> for hard drive recovery reviews and companies.  I call a few and they all say it&#8217;ll be in the <em>thousands</em> of dollars.  So I turned to my trusty friend, <a href="http://ebay.com">ebay</a>.  I found one company called <a href="http://hddsavers.com/">Hard Drive Savers</a> offering <em>invasive</em> recovery it for only $300.  (I had taken the top off my drive already and saw it was a hardware problem, so I knew I needed invasive).</p>
<p>I was skeptical, so I did some more googling to get some background on <a href="http://hddsavers.com/">HDDSavers</a>.  I found relatively few comments on them, but all were good.  So off went Meghan&#8217;s hard drive.</p>
<p>Lo and behold, a week later a dvd arrived with the contents of the folders she needed!  John over there at hddsavers came through!  I highly recommend them for anyone needing to recover data from a dead hard drive.</p>
<p>Disclaimer for all you doubters out there:<br />
I am in no way affiliated or obligated to hddsavers.com.</p>
<p>Feel free to contact me via the comments (won&#8217;t be published) if you want any more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/59/feed</wfw:commentRss>
		</item>
		<item>
		<title>Migrating from Junit3 to Junit4</title>
		<link>http://blog.eflow.org/archives/63</link>
		<comments>http://blog.eflow.org/archives/63#comments</comments>
		<pubDate>Tue, 05 Aug 2008 13:37:52 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[openmrs]]></category>

		<category><![CDATA[junit]]></category>

		<category><![CDATA[spring]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=63</guid>
		<description><![CDATA[While migrating from JUnit 3.x to the new 4.x framework, one method I found that was missing was Spring&#8217;s getLoadCount() method on the 
AbstractDepenpendencyInjectionTest. The value returned allowed us to tell whether a test was running by itself or in a group a tests (like with the ant junit-report target or right-clicking on /test/src and [...]]]></description>
			<content:encoded><![CDATA[<p>While migrating from <a href="http://www.junit.org/">JUnit</a> 3.x to the new 4.x framework, one method I found that was missing was <a href="http://www.springframework.org">Spring</a>&#8217;s <a href="http://static.springframework.org/spring/docs/1.2.x/api/org/springframework/test/AbstractDependencyInjectionSpringContextTests.html#getLoadCount()">getLoadCount()</a> method on the <a href='http://junit.org'><img src="http://blog.eflow.org/wp-content/uploads/2008/08/junit-logo.jpg" alt="" title="junit logo" align="right" border="0" /></a><br />
<a href="http://static.springframework.org/spring/docs/1.2.x/api/org/springframework/test/AbstractDependencyInjectionSpringContextTests.html">AbstractDepenpendencyInjectionT</a><a href="http://static.springframework.org/spring/docs/1.2.x/api/org/springframework/test/AbstractDependencyInjectionSpringContextTests.html">est</a>. The value returned allowed us to tell whether a test was running by itself or in a group a tests (like with the ant junit-report target or right-clicking on /test/src and choosing run-as junit test).</p>
<p>Having this method was useful for two reasons:</p>
<ol>
<li>A test like <a href="http://dev.openmrs.org/browser/openmrs/trunk/test/api/org/openmrs/test/CreateInitialDataSet.java">CreateInitialDataSet</a> that is meant to be configured and run alone.  If this test sees that its being run in a group, it returns early and doesn&#8217;t actually run the test</li>
<li>The module tests needed to have the application context refreshed before running.  To do this, I made the previous test mark the context as &#8220;dirty&#8221; so that the test directly following it would have a fresh app context.</li>
</ol>
<p>There were actually two separate solutions:</p>
<ol>
<li>All tests extend <a href="http://dev.openmrs.org/browser/openmrs/trunk/test/api/org/openmrs/test/BaseContextSensitiveTest.java">BaseContextSensitiveTest</a> for convenience methods and setup.  Every junit class will invoke this class and its constructor.  By adding a static variable <code>loadCount</code> and incrementing that in the constructor, I am able to know how many tests have been run up to that point.</li>
<li>The application context doesn&#8217;t need to be marked as dirty.  The dummy method could actually be removed without replacement.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/63/feed</wfw:commentRss>
		</item>
		<item>
		<title>OpenMRS Metrics</title>
		<link>http://blog.eflow.org/archives/60</link>
		<comments>http://blog.eflow.org/archives/60#comments</comments>
		<pubDate>Fri, 25 Jul 2008 17:16:57 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[openmrs]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=60</guid>
		<description><![CDATA[I was recently tasked with finding out the number of methods in each class in each package inside of OpenMRS.  My first thought was to write a java class to do some reflection.  My second thought was to find a java class that someone else had written and use that.  My third [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently tasked with finding out the number of methods in each class in each package inside of OpenMRS.  My first thought was to write a java class to do some reflection.  My second thought was to find a java class that someone <em>else</em> had written and use that.  My third thought was to find a way for Eclipse to do it.</p>
<p>I really should have jumped to that last one first.  Googling for my second thought gave me nothing useful.  However, simply adding &#8220;eclipse&#8221; to my search term brought up the <a href="http://metrics.sourceforge.net/">Metrics plugin</a> as the first result!  The Metrics plugin counts all different types of things.  Lucky for me, &#8220;number of methods&#8221; just happens to be one of them.</p>
<p>To get the counts working for you, follow these easy steps:</p>
<ol>
<li>Add <strong>http://metrics.sourceforge.net/update</strong> to eclipse as a plugin update site</li>
<li>Turn metrics on for your project:
<ol>
<li>Right click on the root of your project in <span style="text-decoration: underline;">Package Explorer</span> view</li>
<li>Choose Properties&#8211;&gt;Metrics&#8211;&gt;Enable Metrics</li>
</ol>
</li>
<li>Do an Eclipse clean rebuild</li>
<li>Click on the root of your project in the Package Explorer</li>
<li>Open the &#8220;Metrics&#8221; view</li>
</ol>
<p>These are the relevant statistics from the OpenMRS project:</p>
<p><a href="http://blog.eflow.org/wp-content/uploads/2008/07/metrics.png"><img class="alignnone size-full wp-image-61" title="metrics" src="http://blog.eflow.org/wp-content/uploads/2008/07/metrics.png" alt="" width="448" height="127" /></a></p>
<p>The second api/web are from the test package.  We have a lot of work to do to catch our total number of unit test methods up with our number of api methods.</p>
<p>I&#8217;ve also uploaded the <a href="http://blog.eflow.org/wp-content/uploads/2008/07/metrics-total.png">entire OpenMRS metrics output</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/60/feed</wfw:commentRss>
		</item>
		<item>
		<title>OpenMRS in Durban</title>
		<link>http://blog.eflow.org/archives/57</link>
		<comments>http://blog.eflow.org/archives/57#comments</comments>
		<pubDate>Fri, 20 Jun 2008 20:57:05 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[babble]]></category>

		<category><![CDATA[openmrs]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[durban]]></category>

		<category><![CDATA[hisa]]></category>

		<category><![CDATA[south africa]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=57</guid>
		<description><![CDATA[This week most of the OpenMRS developers converged on Durban, South Africa  for our third annual conference. We combined with a few other informatics groups from South Africa that are part of HISA.  There were almost 400 attendees and OpenMRS made up the majority of them, so I&#8217;m estimating we could have had [...]]]></description>
			<content:encoded><![CDATA[<p>This week most of the OpenMRS developers converged on Durban, South Africa <img src="http://blog.eflow.org/wp-content/uploads/2008/06/openmrs_cross.gif" align="right" /> for our third annual conference. We combined with a few other informatics groups from South Africa that are part of <a href="http://hisa.airwave.co.za/">HISA</a>.  There were almost 400 attendees and OpenMRS made up the majority of them, so I&#8217;m estimating we could have had somewhere close to 250 people at this conference.  This is continuing our <a href="http://en.wikipedia.org/wiki/Moores_law">Moore&#8217;s Law</a> -esque style of doubling every year.  (Cape Town 2006 had around 75 implementers and Cape Town 2007 had 150.) I&#8217;m not sure how we&#8217;ll increase by as much for next year, but I&#8217;m pretty sure that&#8217;s what CPU designers have been saying every year for decades!</p>
<p>
I managed to steal some bandwidth at the hotel at 2AM a few nights ago and posted my <a href="http://blog.eflow.org/photos#sa2008">pictures from the safari to Hluhluwe</a> that <a href="http://openmrs.org/wiki/User:Jegg">James Egg</a>, <a href="http://openmrs.org/wiki/User:Jacobb">Jacob Brauer</a>, and I went on.</p>
<p>
We&#8217;re sitting in the lounge in Johannesburg now (thanks <a href="http://www.docpaul.net/">Paul</a>!), I promise to post a few more thoughts from the conference over the next few days.</p>
<p>
(As a side note while I&#8217;m thinking about it: The new logo is really growing on me.  Chris Seebregts made heavy use of it at the conference.  He even made up some pretty slick black t-shirts using it that he gave away to all the attendees.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/57/feed</wfw:commentRss>
		</item>
		<item>
		<title>Installation troubles with MySQLdb-python</title>
		<link>http://blog.eflow.org/archives/54</link>
		<comments>http://blog.eflow.org/archives/54#comments</comments>
		<pubDate>Thu, 29 May 2008 18:34:03 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[babble]]></category>

		<category><![CDATA[centos]]></category>

		<category><![CDATA[gcc]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=54</guid>
		<description><![CDATA[I&#8217;m in the middle of moving OpenMRS&#8217;s web presence from a shared virtual machine to a new dedicated box.  The only trouble I ran into was with the mysql python module (again).
For posterity&#8217;s sake, I&#8217;m going to write my solution here.
easy_install mysql-python
I received this error when trying to install the MySQLdb-python module into python on [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in the middle of moving OpenMRS&#8217;s web presence from a shared virtual machine to a new dedicated box.  The only trouble I ran into was with the mysql python module (again).</p>
<p>For posterity&#8217;s sake, I&#8217;m going to write my solution here.</p>
<blockquote><p>easy_install mysql-python</p></blockquote>
<p>I received this error when trying to install the MySQLdb-python module into python on centOS:</p>
<blockquote><p>_mysql.c:2808: error: expected declaration specifiers before ‘init_mysql’<br />
_mysql.c:2886: error: expected ‘{’ at end of input<br />
error: Setup script exited with error: command &#8216;gcc&#8217; failed with exit status 1</p></blockquote>
<p>The fix I remembered.  I just had to install the python development packages:</p>
<blockquote><p>yum install python-devel</p></blockquote>
<p>I then had another very odd and strangely familiar error:</p>
<blockquote><p>In file included from _mysql.c:35:<br />
/usr/include/mysql/my_config.h:15:28: error: my_config_i386.h: No such file or directory<br />
error: command &#8216;gcc&#8217; failed with exit status 1</p></blockquote>
<p>Googling around gave me nothing helpful&#8230;in fact the results looked strangely familiar as well.  I couldn&#8217;t remember the solution to this one though.</p>
<p>Eventually, I actually <em>read</em> the error message and realized that our new vm isn&#8217;t an x64 box.  For some reason there was a my_config_x64.h file in /usr/include/mysql but there wasn&#8217;t a <a href="http://blog.eflow.org/wp-content/uploads/2008/06/my_config_i386.h">my_config_i386.h</a>.  Luckily, that file <em>was</em> present on the old server. <strong>Copying that file from /usr/include/mysql on the old box to the new was the cure.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/54/feed</wfw:commentRss>
		</item>
		<item>
		<title>What I Love About Eclipse Today&#8230;</title>
		<link>http://blog.eflow.org/archives/52</link>
		<comments>http://blog.eflow.org/archives/52#comments</comments>
		<pubDate>Thu, 15 May 2008 15:15:30 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[babble]]></category>

		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=52</guid>
		<description><![CDATA[
&#8230;are the shortcuts.
I&#8217;ve been using control-shift-t extensively since Darius first showed it to me a few months ago.  It will let you quickly find and jump to a java class across your current workspace.  (There is also an Open Type button by default in eclipse that you can use.)
I&#8217;ve always wanted a way to do [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.eflow.org/wp-content/uploads/2008/05/eclipse_logo_white-300x174.jpg" alt="" width="190" align="right" /></p>
<p>&#8230;are the shortcuts.</p>
<p>I&#8217;ve been using control-shift-t extensively since Darius first showed it to me a few months ago.  It will let you quickly find and jump to a java class across your current workspace.  (There is also an Open Type button by default in eclipse that you can use.)</p>
<p>I&#8217;ve always wanted a way to do the same except with our jsp, xml, and properties files.  I know most of the names of files and know where they are, I&#8217;m just lazy.  I want to be able to jump to them without having to expand the whole tree.</p>
<p>Well, Open Resource to the rescue!  Control-shift-r works just like the Open Type except with nonjava files.  Woot!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/52/feed</wfw:commentRss>
		</item>
		<item>
		<title>Keeping up with the Bollinis</title>
		<link>http://blog.eflow.org/archives/51</link>
		<comments>http://blog.eflow.org/archives/51#comments</comments>
		<pubDate>Sat, 10 May 2008 13:58:30 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[openmrs]]></category>

		<category><![CDATA[gsoc]]></category>

		<category><![CDATA[gsoc2008]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=51</guid>
		<description><![CDATA[Leslie&#8217;s recent Google Open Source post highlighted a few students from some other GSoC 2008 projects.  One of whom was Filippo Bollini. She hightlighted one of his typical weekly updates for his MySQL mentor: http://www.filippobollini.it/soc/?p=4. The details he put into the post included his thought patterns for the week, what was accomplished, and what is [...]]]></description>
			<content:encoded><![CDATA[<p>Leslie&#8217;s recent <a href="http://google-opensource.blogspot.com/2008/05/moments-of-inspiration.html">Google Open Source post</a> highlighted a few students from some other GSoC 2008 projects.  One of whom was <a href="http://www.filippobollini.it/soc/">Filippo Bollini</a>. She hightlighted one of his typical weekly updates for his MySQL mentor: <a href="http://www.filippobollini.it/soc/?p=4">http://www.filippobollini.it/soc/?p=4</a>. The details he put into the post included his thought patterns for the week, what was accomplished, and what is planned for the coming week.  Filippo sets the bar pretty high, but I think my student,<a href="http://upulgsoc.wordpress.com/"></a> <a href="http://upulgsoc.wordpress.com/">Upul</a>, is up to the challenge.  I would hope all of the other <a href="http://openmrs.org/wiki/Summer_Of_Code_2008">OpenMRS GSoC 2008</a> students also strive for this kind of detail! <img src='http://blog.eflow.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/51/feed</wfw:commentRss>
		</item>
		<item>
		<title>What I Love About Eclipse Today&#8230;</title>
		<link>http://blog.eflow.org/archives/47</link>
		<comments>http://blog.eflow.org/archives/47#comments</comments>
		<pubDate>Sat, 10 May 2008 01:43:44 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[babble]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://blog.eflow.org/?p=47</guid>
		<description><![CDATA[
&#8230;is that most of the other users of Eclipse are also software developers.  I&#8217;d bet that 75% of the users of Eclipse are capable of writing a plugin for it.  This is part of the reason there are tons of eclipse plugins, as I&#8217;ve talked about before.
Yesterday I was lamenting the fact that Eclipse doesn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.eflow.org/wp-content/uploads/2008/05/eclipse_logo_white-300x174.jpg" alt="" title="eclipse_logo_white" width="190" align="right" /><br />
&#8230;is that most of the other users of Eclipse are also software developers.  I&#8217;d bet that 75% of the users of Eclipse are capable of writing a plugin for it.  This is part of the reason there are tons of <a href="http://www.eclipseplugincentral.com/">eclipse plugins</a>, as I&#8217;ve <a href="/archives/18">talked about before</a>.</p>
<p>Yesterday I was lamenting the fact that Eclipse doesn&#8217;t have a middle-click-closes-tab functionality as Firefox does.  It finally disturbed me enough to go and do a quick google search for it.  Lo and behold, out of those many other Eclipse-loving programmers out there, one of them felt as I did.</p>
<p>I now have the ability to close my tabs with a simple middle click thanks to Andriy Palamarchuk and the <a href="http://www.hlsoft.com/clickclosestab_eclipse">middle click closes tab plugin</a>.</p>
<p>Plugin site: <a href="http://www.hlsoft.com/clickclosestab_eclipse">http://www.hlsoft.com/clickclosestab_eclipse</a><br />
Plugin update url for eclipse: <a href="http://update.mousefeed.com/">http://update.mousefeed.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eflow.org/archives/47/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
