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

<channel>
	<title>Helixsoft</title>
	<atom:link href="http://www.helixsoft.nl/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.helixsoft.nl/blog</link>
	<description>Martijn van Iersel&#039;s blog on bioinformatics and open source software development</description>
	<lastBuildDate>Fri, 20 Aug 2010 17:32:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Oracle versus Google</title>
		<link>http://www.helixsoft.nl/blog/?p=329</link>
		<comments>http://www.helixsoft.nl/blog/?p=329#comments</comments>
		<pubDate>Fri, 20 Aug 2010 17:26:11 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[patents]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=329</guid>
		<description><![CDATA[A while back I wrote rather optimistically that I expected Oracle to play nice with the open source community &#8220;I don’t see why Oracle won’t be able to keep MySQL open and still have a nice profitable business model.&#8221; However, all that seems rather less likely, now that Oracle is suing Google over patent infringement [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.helixsoft.nl/blog/?p=208">A while back I wrote</a> rather optimistically that I expected Oracle to play nice with the open source community</p>
<p style="padding-left: 30px;">&#8220;I don’t see why Oracle won’t be able to keep MySQL open and still have a nice profitable business model.&#8221;</p>
<p>However, all that seems rather less likely, now that <a href="http://arstechnica.com/tech-policy/news/2010/08/oracle-sues-google-over-use-of-java-in-android-sdk.ars">Oracle is suing Google</a> over patent infringement in the open source Android platform.</p>
<p>Here is a great <a href="http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html">point of view from a Java developer</a> on this lawsuit. Not only it explains what the suit is all about, but also gives historical perspective, how Java got into this mess in the first place.</p>
<p>From that link:</p>
<p style="padding-left: 30px;">&#8220;Android actually *was* a great platform that supported existing Java  developers and libraries incredibly well (without actually being a Java  environment), and for the first time there was a serious contender to  &#8220;standard&#8221; Java that Sun had absolutely no control over.&#8221;</p>
<p>and:</p>
<p style="padding-left: 30px;">&#8220;If for nothing else, Jonathan Schwartz will be remembered as the man  who broke open the Sun piñata, simultaneously releasing more  open-source software than any company in history and killing Sun in the  process. Either Jonathan had no &#8220;step 2&#8243; or the inertia of a company  built on closed-source products was too great to overcome. In either  case, by spring of 2009 Sun was hemorrhaging&#8221;</p>
<p>It&#8217;s long but well worth a read if you are concerned about the future of Java.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=329</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going to COMBINE 2010</title>
		<link>http://www.helixsoft.nl/blog/?p=326</link>
		<comments>http://www.helixsoft.nl/blog/?p=326#comments</comments>
		<pubDate>Sat, 31 Jul 2010 11:06:05 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[biopax]]></category>
		<category><![CDATA[combine]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[sbgn]]></category>
		<category><![CDATA[sbml]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=326</guid>
		<description><![CDATA[COMBINE 2010 is a meeting about all systems biology standards: SBML, SBGN, BioPAX, &#8230; etc. It&#8217;s from October 6 to 9 in Edinburgh, just before the ICSB conference. Registration just opened, I&#8217;ve already signed up.]]></description>
			<content:encoded><![CDATA[<p><a href="http://sbml.org/Events/Forums/COMBINE_2010">COMBINE 2010</a> is a meeting about all systems biology standards: SBML, SBGN, BioPAX, &#8230; etc. It&#8217;s from October 6 to 9 in Edinburgh, just before the ICSB conference.</p>
<p>Registration just opened, I&#8217;ve already signed up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=326</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SBGN 5.5 Hackathon writeup</title>
		<link>http://www.helixsoft.nl/blog/?p=306</link>
		<comments>http://www.helixsoft.nl/blog/?p=306#comments</comments>
		<pubDate>Sun, 25 Apr 2010 14:46:25 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[sbgn]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=306</guid>
		<description><![CDATA[The goal of Systems Biology Graphical Notation or SBGN is to define a set of standard shapes for things like reactions, enzymes, genes, metabolites, compartments etc. For example, here is the reaction that takes place in your body after an alcoholic beverage, using SBGN notation. The SBGN community organizes regular meetings or &#8220;hackathons&#8221;, where specs [...]]]></description>
			<content:encoded><![CDATA[<p>The goal of Systems Biology Graphical Notation or <a href="http://www.sbgn.org">SBGN</a> is to define a set of standard shapes for things like reactions, enzymes, genes, metabolites, compartments etc. For example, here is the reaction that takes place in your body after an alcoholic beverage, using SBGN notation.</p>
<p><img class="alignnone" title="Alcohol dehydrogenase as SBGN diagram" src="http://libsbgn.svn.sourceforge.net/viewvc/libsbgn/trunk/test-files/adh.png?revision=2" alt="Alcohol dehydrogenase as SBGN diagram" width="363" height="253" /></p>
<p>The SBGN community organizes regular meetings or &#8220;hackathons&#8221;, where specs are discussed and new SBGN-related software is presented. This year I was present at the meeting held at Wittenberg in Germany (where you can still find the church door where Luther pinned his 95 theses). Here is my writeup, by no means complete, just a collection of impressions.</p>
<p><strong>Vanted SBGN-ED</strong><br />
In the category SBGN-related software, Tobias Czauderna demonstrated SBGN-ED,  a new plugin for <a href="http://vanted.ipk-gatersleben.de/">Vanted</a> that lets you create diagrams in SBGN format. Especially interesting is the nice validator that can tell you if you drew something that is not allowed by the SBGN specifications. A very complete SBGN editor and probably one of the nicest out there. No link yet, but there will be a publication very soon.</p>
<p><strong>Vanted BridgeDb plugin</strong><br />
Unfortunately a few presentations had to be canceled the first day due to the volcanic ash that was plaguing the European skies. To fill the gaps in the agenda, we just started hacking on random stuff. One result of this was a Vanted BridgeDb plugin that I made together with Christian Kuklas. Christian immediately found a number of bugs and requested new features in BridgeDb. There is not yet an easy way to install the plugin, but if you&#8217;re interested you can play with the <a href="http://svn.bigcat.unimaas.nl/vanted-bridgedb">source code</a></p>
<p><strong>SBGN Exchange format</strong><br />
The second and third day, most participants managed to overcome the disruption of the air traffic and join the conference. Besides discussion on the planned next release of SBGN, there was another important topic: LibSBGN.</p>
<p>SBGN currently only exists as a specification of glyphs and symbols and what they mean, there is no computer file format. But there are now several software packages out there that deal with SBGN, and they need a standard exchange format to work together.</p>
<p>The existing standard file formats for pathways, SBML and BioPAX, do not store  layout information, i.e. they do not store the position of the elements of a diagram. According to the SBGN spec, layout information does not carry any meaning. Biologically the diagram means the same thing, no matter if elements are arranged vertically, horizontally, in a circle, or in random order. So you would think there is no problem.</p>
<p>But as it turns out, it&#8217;s exactly the layout information that has to be exchanged between pathway software. It turns out that a good pathway layout is really hard to do automatically, so once you have painstakingly defined a layout you want to preserve it. So weirdly enough we want an SBGN file format to exchange information that is not part of the SBGN spec at all.</p>
<p>Because there is no standard, the current tools all defined their own ad-hoc file format out of necessity. The lack of a standard file format is really becoming an impediment to cooperation. There has been a lot of talk how this should look like, XML? DTD? GML? Object model? But in my opinion it doesn&#8217;t matter too much in the end, you just have to make a decision and stick with it. We&#8217;ve been able to turn a lot of discussion into tangible results in the form of a <a href="https://sourceforge.net/projects/libsbgn/">new SourceForge project</a>, and uploaded some small samples and the beginnings of an XML Schema definition. Hopefully we can keep the momentum and get it mostly done by the next SBGN meeting.</p>
<p><strong>jSBML</strong><br />
Not related to SBGN directly, but I found it interesting nontheless: A new java native library for SBML is being developed called <a href="http://sourceforge.net/projects/jsbml/">jSBML</a>. There already existed a library called libSBML, but it&#8217;s written in C++. Because LibSBML was considered a &#8220;good-enough&#8221; solution for java programs, the SBML community for a long time resisted the notion of a native java library. But it turned out that many SBML-based Java projects were actually developing their own native library anyway. Ironically,  the tendency to avoid duplication of work actually led to multiple incomplete projects that all duplicated each other. Sometimes it&#8217;s best to accept reality.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=306</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WikiPathways Curation Jamboree Evaluation</title>
		<link>http://www.helixsoft.nl/blog/?p=294</link>
		<comments>http://www.helixsoft.nl/blog/?p=294#comments</comments>
		<pubDate>Fri, 16 Apr 2010 19:51:33 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[curation jamboree]]></category>
		<category><![CDATA[evaluation]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[wikipathways]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=294</guid>
		<description><![CDATA[WikiPathways content is growing nicely, but it&#8217;s not growing like one of those nice exponential curves that you see in the first slide of almost every bioinformatics presentation nowadays. We want exponential curves in our presentations too, dammit, so we want to get more people actively involved. A big challenge for WikiPathways is to get [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wikipathways.org">WikiPathways</a> content is growing nicely, but it&#8217;s not growing like one of those nice exponential curves that you see in the first slide of almost every bioinformatics presentation nowadays. We want exponential curves in our presentations too,<em> </em><em>dammit,</em> so we want to get more people actively involved.</p>
<p>A big challenge for WikiPathways is to get people to take the first step, to get them over that initial hump and actually start participating. Certainly a lot of people are very interested in WikiPathways, but there is some hesitation to just start working on the content. It&#8217;s something we have to work on. Besides clearing technical hurdles, we try to gently help people, simply to get started.</p>
<p>As an experiment, we organized a dedicated <em>curation jamboree</em>, a focused effort to get together and crank through a list of curation tasks. We prepared <a href="http://www.wikipathways.org/index.php/Curation_Jamboree_2010">documentation</a>, contacted several mailing lists and harassed all our colleagues. We also put together a special chat channel where newcomers can get instantaneous contact and answers to quick questions. This event happened for two days in February.</p>
<p>So, was it a success? Yes, if you look at edit activity. Thomas made this graph of the number of pathways tagged with either &#8220;needs reference&#8221; (for pathways that don&#8217;t have any literature references) and &#8220;missing description&#8221; (for pathways that don&#8217;t have a nice description text). As you can see, the numbers dropped quickly during the two days of the curation event, by at least 25%. (ignore the initial jump in the blue line, that&#8217;s due to a bug in the data collection script). WikiPathways gained a lot of curated data in a short period of time.</p>
<p><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/04/curationevent_refdesc__tagcounts.png"><img class="size-full wp-image-296 alignnone" title="curationevent_refdesc__tagcounts" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/04/curationevent_refdesc__tagcounts.png" alt="Numbers of pathway with a curation tag over time" width="800" height="600" /></a></p>
<p>The most active contributors were the usual suspects: Thomas, Alex, Kristina and me, the core WikiPathways team. But you can see in the graph below that other people joined in as well. Even if they did only a few curation tasks, that&#8217;s good  enough. The most important thing is to get people to take the first step. So the graph below is misleading: participating really is more important than winning.</p>
<div id="attachment_297" class="wp-caption aligncenter" style="width: 810px"><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/04/curation_jamboree_frequencies.png"><img class="size-full wp-image-297" title="curation_jamboree_frequencies" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/04/curation_jamboree_frequencies.png" alt="" width="800" height="600" /></a><p class="wp-caption-text">Number of edits per user</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=294</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>That&#8217;s Great, Now Please Fix OpenOffice.org</title>
		<link>http://www.helixsoft.nl/blog/?p=261</link>
		<comments>http://www.helixsoft.nl/blog/?p=261#comments</comments>
		<pubDate>Thu, 08 Apr 2010 20:02:26 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[openoffice]]></category>
		<category><![CDATA[user-friendliness]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=261</guid>
		<description><![CDATA[Did you hear about the OpenOffice.org mouse? It&#8217;s a mouse that has no less than 18 buttons. From the press release: &#8220;With a revolutionary and patented design featuring 18 buttons, an analog joystick, and support for as many as 52 key commands, the OOMouse is intended to provide a faster and more efficient user interface [...]]]></description>
			<content:encoded><![CDATA[<p>Did you hear about the OpenOffice.org mouse? It&#8217;s a mouse that has no less than 18 buttons. From the <a href="http://openofficemouse.com/pr110609.html">press release</a>:</p>
<p style="padding-left: 30px;"><em>&#8220;With a revolutionary and patented design featuring 18 buttons, an analog joystick, and support for as many as 52 key commands, the OOMouse is intended to provide a faster and more efficient user interface for most complex software applications than the conventional icons, pull-down menus, and hotkeys presently permit.&#8221;</em></p>
<p style="text-align: center;"><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/OOmouse-proto3.jpg"><img class="aligncenter size-medium wp-image-262" title="OOmouse-proto3" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/OOmouse-proto3-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p>This is the same logic that brought us the 5-blade razor. Somebody please smack these people with a copy of <a href="http://mitpress.mit.edu/catalog/item/default.asp?tid=5393&amp;ttype=2">The Design of Everyday Things</a>. Why would anybody want such a complicated thing? Beginning users will not be interested in memorizing 18 unmarked buttons. And for advanced users, ordinary keyboard shortcuts are much more effective anyway, because they will prefer to keep their fingers near the home row (the row from &#8220;asdf&#8221; to &#8220;jkl;&#8221; &#8211; touch typists are trained to put their fingers there at all times). For maximum speed, you want to move your hand away from the keyboard as little as possible.</p>
<p>This is even more ironic when you consider that the OpenOffice.org suite, in spite of all its open-source karma, is still full of tiny annoyances. What OpenOffice.org needs now is a focus on user-friendliness, not a mouse that looks like the console of a nuclear power-plant.</p>
<p>Just a tiny example. I&#8217;ve used MS Word a fair bit and I&#8217;ve learned a lot of handy keyboard shortcuts. Just try this: if you want to change the style of a paragraph, just press Ctrl + Shift + S, and start typing the name of the style you want. The same trick works with Ctrl + Shift + F for font and Ctrl + Shift + P for font size (points). If you have to do this a lot, this shortcut is a great time saver. I haven&#8217;t been able to find any equivalent shortcut in OpenOffice.org. Is that the reason why we need an 18-button mouse now? Can&#8217;t we just fix the software itself?</p>
<p>I wonder why OpenOffice.org allowed their name to be used for such a weird project. I fear that this will only re-enforce the stereotype that open source software is never user-friendly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=261</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BridgeDb: now also with metabolite identifier mapping</title>
		<link>http://www.helixsoft.nl/blog/?p=276</link>
		<comments>http://www.helixsoft.nl/blog/?p=276#comments</comments>
		<pubDate>Thu, 25 Mar 2010 21:55:51 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bridgedb]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[identifier mapping problem]]></category>
		<category><![CDATA[metabolites]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=276</guid>
		<description><![CDATA[Ha, fooled ya! BridgeDb has been able to deal with metabolite identifiers since the beginning. But mapping genes is such a common problem that metabolites aren&#8217;t getting any attention. Nearly all the code examples that we have thus far are with genes. Somebody on the mailinglist asked for an example with metabolites. Well here you [...]]]></description>
			<content:encoded><![CDATA[<p>Ha, fooled ya! <a href="http://www.bridgedb.org">BridgeDb</a> has been able to deal with metabolite identifiers since the beginning. But mapping <em>genes</em> is such a common problem that <em>metabolites</em> aren&#8217;t getting any attention. Nearly all the <a href="http://bridgedb.org/wiki/ApiOverview">code examples</a> that we have thus far are with genes.</p>
<p>Somebody on the mailinglist asked for an example with metabolites. Well here you go, you&#8217;ll see it&#8217;s really easy. This example takes the ChEBI identifier for methionine, and looks up the corresponding PubChem identifier.</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Using the BridgeRest webservice as mapping </span><br />
<span style="color: #666666; font-style: italic;">// service, it does compound mapping fairly well.</span><br />
<span style="color: #666666; font-style: italic;">// We select the human species, but it doesn't really</span><br />
<span style="color: #666666; font-style: italic;">// matter which species we pick.</span><br />
<span style="color: #000000; font-weight: bold;">Class</span>.<span style="color: #006633;">forName</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;org.bridgedb.webservice.bridgerest.BridgeRest&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IDMapper mapper <span style="color: #339933;">=</span> BridgeDb.<span style="color: #006633;">connect</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">&quot;idmapper-bridgerest:http://webservice.bridgedb.org/Human&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Start with defining the Chebi identifier for</span><br />
<span style="color: #666666; font-style: italic;">// Methionine, id 16811</span><br />
Xref src <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Xref<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;16811&quot;</span>, BioDataSource.<span style="color: #006633;">CHEBI</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// the method returns a set, but actually there is only one result</span><br />
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Xref dest <span style="color: #339933;">:</span> mapper.<span style="color: #006633;">mapID</span><span style="color: #009900;">&#40;</span>src, BioDataSource.<span style="color: #006633;">PUBCHEM</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// this should print 6137,</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// the pubchem identifier for Methionine.</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #339933;">+</span> dest.<span style="color: #006633;">getId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Compile this example with org.bridgedb.jar, org.bridgedb.bio.jar and org.bridgedb.webservice.bridgerest.jar in the classpath, which can be downloaded from <a href="http://bridgedb.org/wiki/ApiOverview">http://bridgedb.org/data/releases/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=276</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code 2010</title>
		<link>http://www.helixsoft.nl/blog/?p=267</link>
		<comments>http://www.helixsoft.nl/blog/?p=267#comments</comments>
		<pubDate>Thu, 18 Mar 2010 19:51:46 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=267</guid>
		<description><![CDATA[Yay! It&#8217;s official, we&#8217;re going to be in the Google Summer of Code again this year. Our application as a mentoring organization was just accepted. Cytoscape, PathVisio, WikiPathways and even BridgeDb are all joined under the GenMAPP umbrella organisation. Unfortunately I don&#8217;t have time to mentor again, so I&#8217;ll be watching from the sidelines this [...]]]></description>
			<content:encoded><![CDATA[<p>Yay! It&#8217;s official, we&#8217;re going to be in the Google Summer of Code again this year. Our application as a mentoring organization was just accepted. <a href="http://www.cytoscape.org">Cytoscape</a>, <a href="http://www.pathvisio.org">PathVisio</a>, <a href="http://www.wikipathways.org">WikiPathways</a> and even <a href="http://www.bridgedb.org">BridgeDb</a> are all joined under the GenMAPP umbrella organisation. Unfortunately I don&#8217;t have time to mentor again, so I&#8217;ll be watching from the sidelines this year. But I do want to encourage students to apply.</p>
<p><img class="alignright" src="http://socrates2.cgl.ucsf.edu/GenMAPP/raw-attachment/wiki/Google_Summer_of_Code_2010/2010_NoURL_300x267px.jpg" alt="" width="300" height="267" />Students from all nations, we want to hear from you! If you&#8217;re interested in developing open source bioinformatics software, please send us a proposal. Check our <a href="http://socrates2.cgl.ucsf.edu/GenMAPP/wiki/Google_Summer_of_Code_2010">ideas page</a>, write a proposal and send it to our <a href="http://groups.google.com/group/wikipathways-discuss">mailinglist</a>. You have a chance to gain valuable development experience and earn a little money at the same time. The earlier you contact us, the better your chances.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=267</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Downside of Modularity</title>
		<link>http://www.helixsoft.nl/blog/?p=238</link>
		<comments>http://www.helixsoft.nl/blog/?p=238#comments</comments>
		<pubDate>Sat, 13 Mar 2010 18:15:12 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[modularity]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=238</guid>
		<description><![CDATA[I&#8217;m a big fan of modularity. I&#8217;ve even got a modular system in my living room. It consists of the following modules: One module that converts a digital signal to a two-dimensional picture. One module that reads a rotating plastic disk with a laser and produces a digital signal. One module that gets a digital [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a big fan of <a href="http://www.helixsoft.nl/blog/?p=241">modularity</a>. I&#8217;ve even got a modular system in my living room. It consists of the following modules:</p>
<ul>
<li>One module that converts a digital signal to a two-dimensional picture.</li>
<li>One module that reads a rotating plastic disk with a laser and produces a digital signal.</li>
<li>One module that gets a digital signal from a socket in the wall, stores it temporarily on magnetic disk, and sends it out again upon request.</li>
<li>One module that generates a digital signal based on a simulation of a virtual world, with which I can interact in real time using motion and pressure sensitive input devices.</li>
</ul>
<p>In case you hadn&#8217;t guessed already, I was talking about my TV, DVD player, Hard-disk recorder, and Game Console.</p>
<p>Imagine if all of this came in one device. A TV+DVD+HDR+Console-in-one. Imagine what it would cost. If only one part broke, I would have to get everything anew. I would never be able to move it abroad, because the HDR is tied to my cable provider. I would never be able to get the games that do not involve <a href="http://www.youtube.com/watch?v=iO10_IbDUBU">Italian plumbers</a>.</p>
<p>But to be fair, there are also disadvantages to modular systems. Just take a look at the remote control that comes with it:</p>
<p><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/dsc_0416.jpg"><img class="aligncenter size-medium wp-image-257" title="dsc_0416" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/dsc_0416-300x238.jpg" alt="" width="300" height="238" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=238</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to develop Modular Software</title>
		<link>http://www.helixsoft.nl/blog/?p=241</link>
		<comments>http://www.helixsoft.nl/blog/?p=241#comments</comments>
		<pubDate>Sat, 06 Mar 2010 18:07:21 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bridgedb]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[modularity]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=241</guid>
		<description><![CDATA[It&#8217;s always good to make software modular. Modular software is strong and healthy, monolithic software is sickly and bedridden. I&#8217;ve touched before on how modularity increases adaptability. But modularity also helps to keep software small, nimble and unbloated. I&#8217;ll illustrate how we&#8217;re applying modular design in BridgeDb. Modularity is the only known antidote against bloatware. [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s always good to make software <strong>modular</strong>. Modular software is strong and healthy, monolithic software is sickly and bedridden. I&#8217;ve touched before on how <a href="http://www.helixsoft.nl/blog/?p=109">modularity increases adaptability</a>. But modularity also helps to keep software small, nimble and unbloated. I&#8217;ll illustrate how we&#8217;re applying modular design in <a href="http://www.bridgedb.org">BridgeDb</a>.</p>
<p>Modularity is the only known antidote against bloatware. The more features a piece of software has, the larger it has to be. When you don&#8217;t use 90% of those features, it&#8217;s perceived as a problem. Bloated software takes a long time to start, fills up your hard drive, clogs your tubes. We want bioinformatics developers to use BridgeDb as much as possible, and we don&#8217;t want them to complain that BridgeDb is bloated.</p>
<p>For example, BridgeDb supports identifier mapping through several different web services. Some of those webservices are based on SOAP, others on XML-RPC or on REST. For each type of webservice, you need additional libraries. If it was only one monolithic chunk, you&#8217;d always need several megabytes of library dependencies.</p>
<p>You may say: &#8220;A few megabyte, so what?&#8221;. When I was at mediamarkt the other day, I couldn&#8217;t even find memory sticks smaller than 2 Gb anymore. But size still matters when you expect fast download times. For example <a href="http://www.wikipathways.org">WikiPathways</a> uses BridgeDb on each pathway page. Bigger libraries means longer load times, which means annoyed users.</p>
<p>We want many features, but we don&#8217;t want bloat. The solution is to cut BridgeDb up into many small pieces, where you can choose the ones you need, and ignore the rest. You also don&#8217;t need the dependencies of the parts you ignore.</p>
<p>So how do you decide which pieces of BridgeDb you need? I&#8217;ve compiled this handy graph. On the right side, you see all the different &#8220;features&#8221; (i.e. identifier mapping services) that you can choose. Follow the arrows to the left, and note the modules that you encounter. Those are the modules you need for that mapping service.</p>
<p><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/bridgedb-dependencies.png"><img class="size-full wp-image-245 alignnone" title="bridgedb-dependencies" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/bridgedb-dependencies.png" alt="" width="448" height="267" /></a></p>
<p>If you&#8217;re getting started with modular software development, I can give you a few tips. You really don&#8217;t need any of those terribly complicated frameworks like Maven or OSGi. All you need is a good IDE like <a href="http://www.eclipse.org/">Eclipse</a> and a bit of determination.</p>
<p>You have to be careful to manage the boundaries between modules. Eclipse can help you a great deal with this. Put each module in its own directory. In your Eclipse workspace, set up a separate project for each module, and add dependent projects in each project build path. This way you can never introduce cyclic dependencies or go across module boundaries. Eclipse will simply refuse to find the class and flag it as a compiler error.</p>
<p>For example, here is how I&#8217;ve set up BridgeDb in eclipse. In the package explorer you see that I&#8217;ve defined a separate project for each module in BridgeDb.</p>
<p style="text-align: center;"><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/Screenshot-Java-Eclipse-.png"><img class="size-full wp-image-243 aligncenter" title="Screenshot-Java - Eclipse" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/Screenshot-Java-Eclipse-.png" alt="" width="210" height="255" /></a></p>
<p>And to complete the example, here is how I configured the build path for the org.bridgedb.bio module. As you can see, the org.bridgedb project is listed as its sole dependency.</p>
<p><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/Screenshot-Properties-for-org.bridgedb.bio-.png"><img class="size-full wp-image-244 alignnone" title="Screenshot-Properties for org.bridgedb.bio" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/03/Screenshot-Properties-for-org.bridgedb.bio-.png" alt="" width="460" height="171" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=241</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BridgeDb paper published</title>
		<link>http://www.helixsoft.nl/blog/?p=219</link>
		<comments>http://www.helixsoft.nl/blog/?p=219#comments</comments>
		<pubDate>Tue, 12 Jan 2010 20:43:32 +0000</pubDate>
		<dc:creator>Martijn van Iersel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bridgedb]]></category>
		<category><![CDATA[identifier mapping problem]]></category>
		<category><![CDATA[japan]]></category>
		<category><![CDATA[middleware]]></category>
		<category><![CDATA[publication]]></category>

		<guid isPermaLink="false">http://www.helixsoft.nl/blog/?p=219</guid>
		<description><![CDATA[I&#8217;m very happy that our paper on BridgeDb was accepted by BMC Bioinformatics. It&#8217;s open access so download it to your hearts content. BridgeDb is all about identifier mapping, which I blogged about before (here, here and here). BridgeDb lets you find cross-references for identifiers, but BridgeDb is not simply a cross-reference database. BridgeDb provides [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very happy that our <a href="http://www.biomedcentral.com/1471-2105/11/5">paper on BridgeDb</a> was accepted by BMC Bioinformatics. It&#8217;s open access so download it to your hearts content. BridgeDb is all about identifier mapping, which I blogged about before (<a href="http://www.helixsoft.nl/blog/?p=93">here</a>, <a href="http://www.helixsoft.nl/blog/?p=133">here</a> and <a href="http://www.helixsoft.nl/blog/?p=153">here</a>).</p>
<p>BridgeDb lets you find cross-references for identifiers, but BridgeDb is not simply a cross-reference database. BridgeDb provides a standard method to access <strong>other</strong> cross-reference databases. And because of that level of standardization, you can easily decide to switch to a different source of cross-references.</p>
<p><a href="http://mndoci.com/2010/01/10/bridgedb-middleware-for-id-mapping/">Deepak Singh</a> uses the term &#8220;middleware&#8221;, which is a good way to explain it, if that sort of word means anything to you.</p>
<p><a href="http://www.helixsoft.nl/blog/wp-content/uploads/2010/01/DSC_0773.jpg"><img class="alignright size-medium wp-image-224" title="DSC_0773" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/01/DSC_0773-300x200.jpg" alt="" width="300" height="200" /></a> But let me try to explain in a different way. BirdgeDb is really a <strong>travel adapter</strong>. Suppose you&#8217;re in Japan and you&#8217;ve brought some gear like a laptop, cell phone and a nintendo DS (just in case you get stuck in a blizzard while transferring at CDG). Much to your dismay you discover, after checking into your hotel, that none of your plugs fit in Japanese electrical sockets. So what do you do? Do you go down to Akihabara and spend a grand on a new laptop, phone and portable video game unit? Or do you buy a travel adapter for $1.95?</p>
<p>Just like there are many different power plugs around the world, there are many databases that do identifier mapping. And just like travel adapters let you plug in your laptop anywhere, no matter what country, BridgeDb lets you use your favorite bioinformatics tool, no matter what the source of identifier mappings is (Provided that the tool uses BridgeDb).</p>
<div id="attachment_226" class="wp-caption alignright" style="width: 310px"><a href="http://en.wikipedia.org/wiki/AC_power_plugs_and_sockets"><img class="size-medium wp-image-226" title="500px-Weltkarte_verwendeter_Netzsteckertypen.svg" src="http://www.helixsoft.nl/blog/wp-content/uploads/2010/01/500px-Weltkarte_verwendeter_Netzsteckertypen.svg_1-300x152.png" alt="" width="300" height="152" /></a><p class="wp-caption-text">Power plugs around the world</p></div>
<p>It&#8217;s important to realize that BridgeDb is simply a conduit of information. It does not calculate cross-references from scratch, nor does it give any guarantees about the validity of those cross-references. You shouldn&#8217;t ask if BridgeDb provides better identifier mappings. That is like asking if a travel adapter provides better electricity. You still depend on the power company to give you a stable source of electricity. The travel plug just gives you flexibility to adapt to different circumstances.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helixsoft.nl/blog/?feed=rss2&amp;p=219</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
