<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[business|bytes|genes|molecules]]></title>
  <link href="http://blog.deepaksingh.net/atom.xml" rel="self"/>
  <link href="http://blog.deepaksingh.net/"/>
  <updated>2017-01-02T21:51:36-08:00</updated>
  <id>http://blog.deepaksingh.net/</id>
  <author>
    <name><![CDATA[Deepak Singh]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Highlight Reel Science]]></title>
    <link href="http://blog.deepaksingh.net/highlight-reel-science"/>
    <updated>2017-01-02T16:40:03-08:00</updated>
    <id>http://blog.deepaksingh.net/highlight-reel-science</id>
    <content type="html"><![CDATA[<p>We&rsquo;ve all seen the sports highlight reel (e.g the top 10 plays of the day etc). You get to see all the big plays and all the game changing moments. The problem with highlight reels is that you get to see all the spectacular stuff, but miss all the subtle moments, the little things that often make the game changers possible. For the casual sports fan (I suppose like me), the highlights are perfect, but for those deeply immersed in the sport they are a poor substitute for the real thing. <a href="https://twitter.com/NAChristakis/status/816060896200028160">This tweet</a> reminded me of a comment I once made about TED Talks, at least as they relate to science. They feel like the highlight reel. Lots of spectacular, often inspirational science but missing much of the essence of science (at least what I consider essence), which is the day to day work that scientists have to do.</p>

<p>Science is fundamentally incremental, setting up the occasional breakthrough that completely changes the field (e.g. PCR). It&rsquo;s why so many science &ldquo;moonshots&rdquo; fail, or at the very least disappoint those looking for the big play. I learnt this back during my masters. I was trying to see if you could use molecular sieves (specifically <a href="https://en.wikipedia.org/wiki/MCM-41">MCM-41</a>) to build conducting nanoscale wires. Just setting up the experiment took weeks. The hard part was getting just the right conditions under which the MCM-41 would deposit and adhere to a platinum electrode. That&rsquo;s not magic. It requires a ton of patience, discipline, and occasionally some luck.</p>

<p>There&rsquo;s nothing wrong with big hairy audacious goals. Risk is a fundamental part of any large undertaking, but too often in our quest for the spectacular we forget that the scientific process is painstaking and methodical. Let&rsquo;s not do that. It undermines all the hard work that grad students, post-docs, and researchers the world over do day in and day out.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Happy New Year]]></title>
    <link href="http://blog.deepaksingh.net/happy-new-year"/>
    <updated>2017-01-02T09:43:20-08:00</updated>
    <id>http://blog.deepaksingh.net/happy-new-year</id>
    <content type="html"><![CDATA[<p>It&rsquo;s a brand new year. I haven&rsquo;t blogged here for about a year and a half, although I have done some blogging out on <a href="https://medium.com/@mndoci">Medium</a>. Between work, fatherhood, moving houses, etc, something had to give. Let&rsquo;s see if this year is any better. Definitely going to give it a shot. Hopefully no technical difficulties. That tends to take me away for months. I miss ranting about <a href="http://blog.deepaksingh.net/more-on-gatk/">licenses</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[About software and bioinformatics]]></title>
    <link href="http://blog.deepaksingh.net/about-software-and-bioinformatics"/>
    <updated>2015-07-12T15:53:00-07:00</updated>
    <id>http://blog.deepaksingh.net/about-software-and-bioinformatics</id>
    <content type="html"><![CDATA[<p>It seems I end up writing something about software and bioinformatics every so often.  In fact, I pretty much wrote about this in my <a href="http://blog.deepaksingh.net/science-and-software/">last post</a>.  This time it is Lior Pachter&rsquo;s post on <a href="https://liorpachter.wordpress.com/2015/07/10/the-myths-of-bioinformatics-software/">The Myths of Bioinformatics Software</a>.  I <a href="https://twitter.com/mndoci/status/619492282153205760">commented</a> on it on Twitter leading to quite the discussion and a <a href="http://ivory.idyll.org/blog/2015-response-to-software-myths.html">follow up post</a> by Titus Brown.</p>

<p>Before I write more, I’ll try and set up my vantage point.  I wrote shoddy computational chemistry software in graduate school (what no version control?!!!), somewhat less shoddy software in my first job at a bioinformatics company (a very small startup), especially since we actually had real software developers, was exposed to a lot of in-licensing as a product manager at Accelrys, industrial strength commercial software at Rosetta Biosoftware, and the last seven years at Amazon where I currently own a growing service (product and engineering).  Suffice to say I have strong opinions.  The obvious caveat is that I haven’t been in bioinformatics for a long time, but thanks by marriage and through friends I continue to have a pretty close up view of things.</p>

<p>I started reading Titus’ post and was surprised by where it started, then I got to the point where he talked about being angry and frustrated.  I am not sure I am angry, but I strongly believe that the biggest problem with bioinformatics is that we expect shoddy in a field where quality should be critical, and the more I think about it the more it’s obvious to me that it is about culture and incentives.  So let me address the points one by one.</p>

<ol>
<li><strong>Somebody will build on your code</strong> - This may be true in general, but there are also several counterpoints.  I gave an example in my <a href="http://blog.deepaksingh.net/science-and-software/">last post</a> with my wife’s spectrum viewer.  But I also think I understand why this is not the norm.  My wife is a software developer and didn’t care about citations. What she did care about was making sure others knew where to send pull requests, and if there were things she could improve.  In other words, the code being used was way more important than being cited in a paper.  Unfortunately, that is not how people are measured and writing new code is a better option for many than building upon others.  It’s also a reason the licensing system is so screwed up, because people aren’t fundamentally thinking about the ecosystem and your licensing choices are often governed by how you think about your own software.  If you are writing software to publish, then your incentives are all wrong.  I sound like a broken record, but software systems are not about getting papers published, they are about getting people to do work more effectively (new algorithms are different and should be published)</li>
<li><strong>You should have assembled a team to build your software</strong> - This boils down to why the software exists.  There are many examples of open source projects that began as one person operations and stayed so for years, but the beauty of open source is that you have a broad community who contribute.  But I digress.  I don’t think good software needs large teams, but if you approach your software with the mentality that it’s meant to be a platform that’s going to be used by a set of people then you do need to make sure you are thinking about a team, potentially hiring real software developers.  Otherwise, your code will atrophy, no one will want to support it, and the vicious cycle starts again.  And a team doesn’t have to be too big either, especially if it’s a core team supporting an open source project.  I don’t think software these days (especially in the world I live in) is at all about large teams.  In fact it’s about being nimble and doing more with less by exposing the right interfaces.</li>
<li>See #4</li>
<li><strong>Making your software free for commercial use shows you are not against companies.</strong> - Software that is free for academics and not for commercial use is my biggest bugbear with scientific software.  That’s not how software should be.  You choose a license (closed, GPL, Apache) based on how you think about your software.  But this mixed mode thing is sheer arrogance, and prevents communities from being built around software.  It makes sure that smart people who may want to contribute to improving it, can’t, and it also makes terrible assumptions about business models.  You are locking out the bootstrapped startup, the lose computational geek in a larger organization who may have limited funding, and in general breaking the rules of software licensing because for some reason academia seems to think it is somehow supposed to hold the rights to science.  And remember, Apache licensed software can make money.  It boils down to your incentives again.  Maybe bioinformatics can learn a little from the technology community and its approach to licensing and commercialization.  Maybe I am over reacting, but I felt like that when I was still a grad student, and feel so even more strongly now.</li>
<li><strong>You should maintain your software indefinitely.</strong> - I am not sure I understand this one.  If you write software that you feel is solid and being used by others, you should think about sustainability, but no one expects software to be indefinite.</li>
<li><strong>Your “stable URL” can exist forever</strong>. - Probably not but you could at least try. Most don’t even bother because that URL existed just to write a paper and get funding.  There was never any intention of building something that could become a platform people used.  Yep I am cynical about why scientific software gets written.</li>
<li><strong>You should make your software “idiot proof</strong>”. - Well, nothing to say here.  You shouldn’t. Your software should be maintainable, and work for its target audience.  But as I read the details, I realized this.  People writing bioinformatics (scientific software in general) rarely think about their customers.  And no customers aren’t those that pay you.  They are those that use your software.  Your job is to make their lives easier and yes, they may do things that you may consider weird, but that’s a matter of education and drawing the line at things you won’t try and work around.  Another fundamental problem that we need to change.</li>
<li><strong>You used the right programming language for the task</strong>.  Mostly agree here (although I don’t understand how Spark got put into the language category).  The right programming language is the one you are effective in, allows you to be more productive, and helps foster a community.</li>
</ol>


<p>Reading these points, observing projects, and having seen how innovative software companies work up close and personal, it’s clear to me that the problem is the culture around software development in bioinformatics.  Open doesn’t come with caveats, software shouldn’t be about publishing, and there is nothing wrong with writing quality software, if only because you care.  We just seem to accept status quo and shrug our shoulders.  Our customers (the people using the software) deserve better.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Science and software]]></title>
    <link href="http://blog.deepaksingh.net/science-and-software"/>
    <updated>2015-05-02T14:53:00-07:00</updated>
    <id>http://blog.deepaksingh.net/science-and-software</id>
    <content type="html"><![CDATA[<p>I&rsquo;ve been busy, so I am rather late jumping into the fray.  My favorite source of post ideas, the <a href="http://ivory.idyll.org/blog/">Chuck Norris of Bioinformatics</a>, has written a series of super interesting, and rather provocative, posts on this subject</p>

<ul>
<li><a href="http://ivory.idyll.org/blog/2015-how-should-we-think-about-research-software.html">Please destroy this software after publication</a></li>
<li><a href="http://ivory.idyll.org/blog/2015-software-as-a-primary-product-of-science.html">Is software a primary product of science</a></li>
<li><a href="http://ivory.idyll.org/blog/2015-more-on-software.html">More on scientific software</a></li>
<li><a href="http://ivory.idyll.org/blog/2015-we-live-in-a-bubble.html">Popping the open source/open science bubble</a></li>
</ul>


<p>At the center of a lot of the debate is software quality, software maintainability, and in the end, the ability of scientists to write maintainable software.  There is also an intense debate of whether throwaway software is a good thing or not.  I come at this debate from an interesting place.  I wrote (bad) code in grad school and most of it was throw away code.  I wrote (somewhat better) code as a scientific programmer at my first job.  The quality of the code may not have been that much better, but others did look at it.  The code was version controlled and it wasn&rsquo;t meant just for me to use, so the bar was higher.  Since then I haven&rsquo;t written much code professionally but I&rsquo;ve worked with and led a number of engineering teams.  So I think I&rsquo;ve learnt a thing or two about what good software is all about.</p>

<p>I tend to put scientific software in three buckets.  There is software you write for maintenance (clean up, munging, etc). If you are a software engineer/developer, you are very likely to throw that up on Github today, since the likelihood that others may find it useful is > 0.  But if you&rsquo;re not, I don&rsquo;t see why you should.  Chances are that this is a one off anyway, and the quality bar is a little lower (famous last words).</p>

<p>Then there&rsquo;s the software you use to do your science; the algorithms, the implementation of well known algorithms, and analysis pipelines themselves.  This is the area where I feel that without open source software, without software peer review, there is so much room for error that not doing so is just plain bad science.  Especially today, when there are resources like Github that allow you to do so easily and make software peer review relatively easily.  I remember the day when one of our scientific collaborators sent us some code.  It declared a variable, then two lines later the same variable with the opposite sign.  Turns out the first one was from an experiment, but not removed.  There are many similar examples (FORTRAN allows for some really sloppy code), and it is that risk that makes me worry about how much published science is the result of badly written software.  You may ask, what about commercial code?  Good question.  One of the assumptions people make with commercial software is that (a) the software is a skin on top of well known academic software, or (b) you are assuming that the company is applying a level of rigor that makes their offerings worth your trust.</p>

<p>The third category is what I call infrastructure; databases, repositories, pipeline frameworks, visualization software.  That one is probably (hopefully) written by the best programmers in the field.  My preference is that these be open source, since platforms can be extended, and too many people build their own for no good reason.  The quality of software engineers in the sciences is only going up, and we have some robust platforms out there now.  I know teams that do routine code reviews, hire very good software developers, and function like a proper engineering team.  If you want to write sustainable software that&rsquo;s used by lots of other people, i.e. your goal isn&rsquo;t just to publish, you have no other choice.</p>

<p>I have one more anecdote.  My wife wrote a piece of software called <a href="https://code.google.com/p/lorikeet/">Lorikeet</a> (and yes, it needs to move to Github).  At the time she wrote it, she never expected anyone else outside her lab to use it.  But it turns out that because it was out there, open source, and usable, a lot of other people started using it.  It&rsquo;s been forked, enhanced, etc etc.  That only happens when your code is open source.</p>

<p>So, what does this add to the debate.  I suppose what I am saying is that &ldquo;it depends&rdquo;.  In general, open source is awesome, and having people publish their code is a good things since others can use it, improve on it, etc.  But I think there is room for throwaway code, but for a very narrow use case.  When it comes to algorithms, I really struggle to see how you can get away without peer review, especially when your science depends on it.</p>

<p>OK, enough rambling for now.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Adieu my Friend]]></title>
    <link href="http://blog.deepaksingh.net/adieu-my-friend"/>
    <updated>2015-03-09T21:23:00-07:00</updated>
    <id>http://blog.deepaksingh.net/adieu-my-friend</id>
    <content type="html"><![CDATA[<p>Friendfeed is <a href="http://recode.net/2015/03/09/facebook-shuts-down-friendfeed/">no more</a>.  It seems like many moons ago that I spent almost all my social time on Friendfeed.  I started a room called <a href="http://friendfeed.com/the-life-scientists">The Life Scientists</a> right around the time Friendfeed introduced rooms with no idea if anyone would ever show up. They did and we ended up forming a community that I will cherish for a long long time.  Many friendships were made. There were many discussions on a variety of topics near and dear to my heart.  Then came the acquisition and slowly most of all left.  This day was inevitable, and it has been ages since I visited the site, but I still feel a little down and definitely very nostalgic.  My old blog is no more, so all the articles around Friendfeed are also lost.  I suppose that blog and Friendfeed represent a period of innocence for a lot of us who cared about science, about open science, and the avenues that might make it work.  We&rsquo;ve all grown older and, hopefully, wiser.</p>

<p>Fittingly the best Friendfeed farewell <a href="https://nsaunders.wordpress.com/2015/03/10/some-brief-thoughts-on-the-end-of-friendfeed/">comes from Neil</a>, who to me is synonymous with those days.  He has also <a href="https://github.com/neilfws/friendfeed/tree/master/archive">archived</a> a couple of the best rooms.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Python]]></title>
    <link href="http://blog.deepaksingh.net/python"/>
    <updated>2013-06-01T21:52:00-07:00</updated>
    <id>http://blog.deepaksingh.net/python</id>
    <content type="html"><![CDATA[<p>One of the more frustrating parts of the last few years has been a lack of the kind of time required to learn new programming languages and re-learn stuff I had forgotten in my years on the road and not staying close to analytics and programming.  I picked up some Ruby along the way, partly cause I liked the elegance of the language, and partly because it is really good at things I still do from time to time - launching and managing instances, and automating infrastructure.  I still suck at it, but I can to launch an EC2 instance or two and can use Ruby-based static website generators.  Works for me for the most part until I get frustrated at not being able to do things I could do in my sleep 6-7 years ago.</p>

<p>A language I have resisted over the years is Python.  I didn&rsquo;t love the syntax, hated the whitespace, and given that I had no time to properly learn the language I was more interested in, there was no room for Python.  But there was always one reason I kept an eye on Python, scientific computing and analytics.  While Ruby seemed to rule the roost for the devops crowd, Python has always been a darling of the science types, and I watched <a href="http://www.scipy.org/">SciPy</a> and <a href="http://www.numpy.org/">Numpy</a> with more than a tinge of jealousy, and I&rsquo;ve long been an admirer of <a href="http://ipython.org/">iPython</a>.Then a colleague told me about <a href="http://pandas.pydata.org/">Pandas</a>.</p>

<p>Pandas is like R, but it is native Python, so lacks all the ugliness of R.  It&rsquo;s not as powerful as R today, but it was the final straw.  I am going to teach myself Python, even if it means I never really become the Ruby guru I&rsquo;ve always wanted to be.  In my day to day life, there is a lot of opportunity for number crunching, data structures and analysis, and the more numerically oriented Python tools provide a powerful toolkit.  I&rsquo;ll still use Ruby for all the infrastructure management I do and hopefully some day find time to get really good with both languages.  Given <a href="http://smu.gs/16AkYeS">recent developments</a>, not sure when that might be (maybe in another 17-18 years)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Repo of the week - Feb 9, 2013]]></title>
    <link href="http://blog.deepaksingh.net/repo-of-the-week-feb-9"/>
    <updated>2013-02-09T09:14:00-08:00</updated>
    <id>http://blog.deepaksingh.net/repo-of-the-week-feb-9</id>
    <content type="html"><![CDATA[<p>So the <a href="http://blog.deepaksingh.net/categories/repooftheweek/"><em>Repo of the Week</em></a> didn&rsquo;t quite pan out weekly, but I am going to keep the category going.</p>

<p>This weeks repo (well, pair of repos) comes to you courtesy of the <a href="http://dunnlab.org/">Dunn lab</a>.  The two repos are <a href="https://bitbucket.org/caseywdunn/biolite">biolite</a> and <a href="https://github.com/caseywdunn/agalma">agalma</a>.  What are these?</p>

<blockquote><p>BioLite is a bioinformatics framework written in Python/C++ that automates the collection and reporting of diagnostics, tracks provenance, and provides lightweight tools for building out customized analysis pipelines. It is distributed with Agalma, but can be used independently of Agalma.</p>

<p>Agalma is a de novo transcriptome assembly and annotation pipeline for Illumina data. Agalma is built on top of the BioLite framework. If you have downloaded Agalma+BioLite, the files that are specific to the Agalma pipeline are located in the agalma/ subdirectory.</p></blockquote>

<p>The authors have also made an <a href="http://aws.amazon.com/ec2">Amazon EC2</a> image available with Agalma and all its dependencies.  There is a <a href="https://github.com/caseywdunn/agalma/blob/master/TUTORIAL">tutorial</a> to get things working on EC2.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[More on GATK]]></title>
    <link href="http://blog.deepaksingh.net/more-on-gatk"/>
    <updated>2013-01-28T06:47:00-08:00</updated>
    <id>http://blog.deepaksingh.net/more-on-gatk</id>
    <content type="html"><![CDATA[<p>I <a href="http://blog.deepaksingh.net/the-return/">returned to blogging</a> because of a need to rant about <a href="http://blog.deepaksingh.net/the-gatk-license/">newly announced GATK licensing</a>.  Well, this time I am going to let others rant since things have only taken a turn for the worse.</p>

<p>I noticed a <a href="https://twitter.com/BioMickWatson/status/293833882728534017">tweet</a> from <a href="https://twitter.com/biomickwatson">Mick Watson</a>, which led me to <a href="http://gatkforums.broadinstitute.org/discussion/2091/upcoming-changes-to-the-license-the-retirement-of-gatk-lite-by-v-2-4">this discussion</a> on GATK licensing.</p>

<p>You can read my original post, the discussion, or Mick Watson&rsquo;s <a href="http://biomickwatson.wordpress.com/2013/01/28/gatk-why-it-matters/">blog post</a>. Having worked on the commercial side of scientific software for a good chunk of my career, I understand the commercial side and potential driving factors, but my complete distaste for academic/non-commercial use licensing is well known, and the GATK folks aren&rsquo;t exactly handling this well.</p>

<p>I will add one thing.  There are some whom I respect, who point out that commercial entities add pretty GUIs and don&rsquo;t add much value.  To that I say, that&rsquo;s pretty much why commercial informatics software is hard.  Any company that isn&rsquo;t really adding value is not going to succeed in the long run.  Let the market decide.  Your job as GATK is to create high quality, open source, software which benefits science.  If companies create no value or minimize the value it means the following in most cases</p>

<ul>
<li>In time the company will go under cause no one else is deriving any value.  This is the usual case and hardly something to get concerned about</li>
<li>If the company is providing value then it&rsquo;s a good thing.  In most cases, this will happen only if GATK is part of a much more comprehensive package or service that makes it easier for people to get stuff done</li>
<li>The onus is on the GATK devs and funders to figure out how to compete if they feel their work is being &ldquo;trivialized&rdquo;.  Competition is a good thing, even in pure open source code.  The problem seems to be, that the Broad considers this their code as opposed to a community resource with a rich developer community.  Get the latter behind you and any trivialization by people building pretty GUIs goes out of the window cause your community is going to do that for you if there is demand</li>
</ul>


<p>To cut a long story short, the Broad is not taking the right steps, but I don&rsquo;t blame them per sé.  Scientific software funding needs to evolve and the idea of community and broad developer outreach needs to evolve.  So as much as anything, I blame the system.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[On reproducibility]]></title>
    <link href="http://blog.deepaksingh.net/on-reproducibility"/>
    <updated>2012-11-17T19:25:00-08:00</updated>
    <id>http://blog.deepaksingh.net/on-reproducibility</id>
    <content type="html"><![CDATA[<p>There is an interesting discussion on Titus' blog on <a href="http://ivory.idyll.org/blog/vms-considered-harmful.html">VMs and reproducibility</a>, including some great comments.  I&rsquo;ve always considered VMs, especially those that can be deployed in the cloud, a convenience.  In other words, they make it easy for people to try and reproduce your work cause you give it to them in a turnkey-type way. However, I&rsquo;ve never felt that VMs were the optimal solution for doing science.  If you think about it, what do you need for good science</p>

<ul>
<li>Access to the raw data and any other data sets associated with the science.</li>
<li>A description of the methods used that are used in the research.  Ideally you should be able to use these methods and the data sets above to come up with the same results.</li>
<li>The code used to implement the methods above.</li>
<li>A list of dependencies and the execution environment.</li>
</ul>


<p>Is this a complete list?  I am sure if I think about it again the list may evolve, but it seems about right to me.  In the end you want to do three things (1) See if you can replicate the work; (2) have enough information to reproduce it but using your own code, in case you don&rsquo;t like the actual implementation and (3) evolve the science using existing work as a starting point.</p>

<p>What enables all this?  It&rsquo;s open data, it&rsquo;s open source and it&rsquo;s programmability.  If you think of your infrastructure and your overall system programmatically, it&rsquo;s a lot more elegant than a VM.  It&rsquo;s not easy, but if you can use recipes and configure a system on the fly then you aren&rsquo;t limited to a VM, but can dynamically generate the environment required, with the appropriate data sets and dependencies.  I&rsquo;ve always said that data is royal garden, but compute is a fungible commodity, and dynamic environments are super powerful tools that can enable really good science.  Unfortunately, they also require a level of skill that many scientists don&rsquo;t have.</p>

<p>These are topics that <a href="http://www.greenisgood.co.uk/">Matt Wood</a> and I talk about a lot (see the two decks below for some ideas)</p>

<script async class="speakerdeck-embed" data-id="4f414190156b230022011477" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>




<script async class="speakerdeck-embed" data-id="506a2eec9cc368000202b6f6" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>


<p>Yes it&rsquo;s a very cloud-centric view of the world, but there is a reason we work where we do.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[My chem coach carnival]]></title>
    <link href="http://blog.deepaksingh.net/my-chem-coach-carnival"/>
    <updated>2012-10-26T18:46:00-07:00</updated>
    <id>http://blog.deepaksingh.net/my-chem-coach-carnival</id>
    <content type="html"><![CDATA[<p><a href="https://plus.google.com/u/0/112933623429779400915/posts">Susan Baxter</a> <a href="https://plus.google.com/108883794732535350016/posts/QRCyNTAXTCn">blackmailed</a> me into writing this post, but it is actually an interesting one to write, since I am probably not the most likely person to write one for the <a href="http://justlikecooking.blogspot.com/2012/10/announcing-chem-coach-carnival.html">Chem Coach Carnival</a>.</p>

<p>I am a chemist by training.  Every degree (B.Sc., M.Sc. and Ph.D.) is in chemistry, but I am not a practicing chemist any more, and haven&rsquo;t been for a very long time.  However, I do not have any regrets about the path I have taken.  In fact, I think my background in chemistry has helped me quite a bit.</p>

<p>Today, I am a <a href="http://www.linkedin.com/in/dsingh">Principal Product Manager</a> at Amazon Web Services.  There I work on Amazon EC2 instance platforms.  In other words, I spend a lot of my time on the server platform that powers EC2.  What does this have to do with chemistry?  Not much.  So why do I think Chemistry has a role to play in this?</p>

<p>After my B.Sc. in chemistry, I spent most of my Master&rsquo;s and Ph.D. as a physical chemist/theoretical chemist.  That pretty much means that you have be analytical, learn to work with others (who are often doing bench chemistry), and have to learn your way around computers.  A lot of what I have done in my professional career has been around software, computers and analytical thinking.  Your traning as a chemisty allows you to think about the fundamentals of a problem, about how to break problems down into their consituent parts, and best of all teaches you how to set up experiments.  I am not formally trained in software development, web services, data management or product management, so I definitely believe that my training as a chemist has helped me transition into all these non-chemistry roles over the years.</p>

<p>Moral of the story: Your career can take many paths, but your training as a chemist is going to come in good stead along those paths, and stories about lab explosions always come in handy at parties.</p>

<p>Oh, and happy chemistry week.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Titus makes my life easy]]></title>
    <link href="http://blog.deepaksingh.net/titus-makes-my-life-easy"/>
    <updated>2012-10-18T19:20:00-07:00</updated>
    <id>http://blog.deepaksingh.net/titus-makes-my-life-easy</id>
    <content type="html"><![CDATA[<p>This is the second post in the short existence of this blog that starts with &ldquo;Titus&rdquo;.  Well there is a good reason.  In a <a href="http://ivory.idyll.org/blog/automated-testing-and-research-software.html">wonderful blog post</a> Titus pretty much nails my opinion on the matter of research software.  He writes</p>

<blockquote><p>I think this notion that research software is something special and deserving of some accomodation is so wrong that it&rsquo;s hard to even address it intelligently. What, you think people at Google aren&rsquo;t doing exploratory programming where they don&rsquo;t know the answer already? You think Amazon customers don&rsquo;t behave in unexpected ways? You think Facebook social network data mining is easy? The difference there is that companies have a direct economic incentive to solve these problems, and you don&rsquo;t.</p></blockquote>

<p>And I completely agree with him on the excuses.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Scientific software and being customer centric]]></title>
    <link href="http://blog.deepaksingh.net/scientific-software-and-being-customer-centric"/>
    <updated>2012-09-22T22:01:00-07:00</updated>
    <id>http://blog.deepaksingh.net/scientific-software-and-being-customer-centric</id>
    <content type="html"><![CDATA[<p>A lot of scientific software, and this is especially true in bioinformatics, is &ldquo;open source&rdquo; in some way or another.  That it seems the community doesn&rsquo;t quite understand the value of open source is another matter and another post, so for the sake of this post, let&rsquo;s assume it is.  Perhaps more importantly, a good chunk of the software used is developed by academia.  In my mind, this increases the bar on code quality and software stewardship.  Most importantly, developers of academic software need to think about their applications differently and funding agencies need to think about how they fund software development differently.</p>

<p>Under the assumption that the majority of code used to do scientific discovery originates in academia, the question to ask is, what responsibiity does a scientific software developer have?  Should they think of their potential users as customers from the beginning or is that something that becomes important later in the process.  While in some open source academic projects, especially ones that gave been developed ground up, a customer-centric approach seems to exist, in general it appears that much code is developed to get published or to get something out there to solve a particular problem.  Given the realities of scientific problems, I don&rsquo;t believe you can assume on day 1 that your applications are going to find use in the broader community, but it is a safe assumption to make that for many applications that is the end goal.  The reality is that you might be the only one that ever uses the code, especially if it is being developed to solve a specific problem, then it might be your team, then other labs and collaborators and ultimately a wider community.  This means that not only should scientific software developers take a step back and think about the potential scope of their project as it evolves, it means that funding agencies need to rethink how they fund software.</p>

<p>First, publishing software as papers needs to go away.  Algorithms should get published, novel architectures should get published.  Software should only be published as a note to aid discovery.  Funding agencies also need to recognize that funding new software projects for 3-5 years and expecting the developer to know the outcome at the beginning is short sighted.  Software evolves, features and scope evolves along the way. Three years is an eternity for a software project, five .. I don&rsquo;t have a word for how long that is.  Funders also need to recognize that there is a greater need for funding as a piece of software grows and is recognized by the community.  In a way that could be looked at as a return on investment.  The broader the reach and impact to science the more successful the initial funding, but you need the concept of angel funding as well to get a project off the ground, see how it will evolve.  We also need to raise the bar.  Should new proposals be funded or should developers be encouraged to contribute to existing projects?  Since there doesn&rsquo;t seem to be much emphasis on the latter, you see new applications being developed as opposed to getting funding to contribute to existing applications.</p>

<p>The problem with scientific software is more cultural than anything else.  As <a href="http://twitter.com/smbaxtersd">Susan Baxter</a> <a href="https://twitter.com/smbaxtersd/status/248163072999567360">tweeted</a></p>

<blockquote><p>bioinformatician still = PI mentality, not team-based or community</p></blockquote>

<p>Software development is different, it works at different time scales and it requires a different approach. Note that I am not talking about research code, but code that&rsquo;s meant to be used over a period of time, at the least by multiple generations in your research group.  The change has to start within the community, but they aren&rsquo;t going anywhere without funding agencies changing the incentives.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[repo of the week - Sept 8, 2012]]></title>
    <link href="http://blog.deepaksingh.net/repo-of-the-week-sept-8"/>
    <updated>2012-09-08T15:58:00-07:00</updated>
    <id>http://blog.deepaksingh.net/repo-of-the-week-sept-8</id>
    <content type="html"><![CDATA[<p>I have been on a soapbox lately around programming and bioinformatics.  So I am going to try and point to find a random repo every week that I like and put it up here.  They will mostly be from Github, but that&rsquo;s not a requirement.</p>

<p>Today&rsquo;s <a href="https://github.com/fls-bioinformatics-core/genomics">repo</a> comes to you via the <a href="http://www.ls.manchester.ac.uk/">Faculty of Life Sciences</a> at the University of Manchester.  The repo consists of &ldquo;Scripts, utilities and programs for genomic bioinformatics&rdquo;, and contains scripts for a variety of genome informatics tasks.</p>

<p>This is the kind of repo that&rsquo;s super useful.  For now their seems to be one person pushing code, so hopefully there will be more.  There are at least 2 forks, and reasonable <a href="https://github.com/fls-bioinformatics-core/genomics/graphs">activity</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[RAID doesn't make you resilient]]></title>
    <link href="http://blog.deepaksingh.net/raid-doesnt-make-you-resilient"/>
    <updated>2012-09-08T12:04:00-07:00</updated>
    <id>http://blog.deepaksingh.net/raid-doesnt-make-you-resilient</id>
    <content type="html"><![CDATA[<p>I&rsquo;ve now heard at least a couple of people managing large life science repositories talk about resiliency and durability and mention that they have durability cause they use RAID.  That&rsquo;s just a cringeworthy thing to hear.  I would hope that people managing core repositories know better.  To the best of my knowledge they do, but it is troubling.  I was reminded of the apparently lack of understanding in managing data by a tweet from <a href="https://twitter.com/adamkraut">Adam Kraut</a> earlier where he linked to a <a href="http://queue.acm.org/detail.cfm?id=2367378">paper</a> that talks about the challenges of maintaining file integrity.  In general, I recommend anyone in the world of informatics building large scale storage (or even small scale storage) check out James Hamilton&rsquo;s <a href="http://perspectives.mvdirona.com/2009/10/17/JeffDeanDesignLessonsAndAdviceFromBuildingLargeScaleDistributedSystems.aspx">blog post</a> covering a talk by Jeff Dean on building large distributed systems <a href="http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf">pdf</a>.  The key is failure happens.  Between 1-5% of your disks are going to fail over the course of a year and 2-4% of your storage servers.  There are any number of reasons these could happen and they all have different failure rates.  Google has published work on their analysis of disk failure rates <a href="http://research.google.com/archive/disk_failures.pdf">pdf</a> <a href="http://storagemojo.com/2007/02/19/googles-disk-failure-experience/">analysis on Storage Mojo</a>.</p>

<p>Where am I going with this?  As the size of our storage systems in informatics increases, as we keep data around for longer, we need to take a deeper look at how we are managing our data, and not make naive assumptions.  Think about the tradeoffs you need to make between performance, availiability and durability (and think through what durability means).  There are simple and creative ways of getting there (e.g. keeping a copy of a disk array in a friends lab in a different building), and a number of solutions (including some from my day job), but let&rsquo;s not assume that RAID = durability.  In the end managing your data is less about the hardware and more about the operational processes and software sitting on top of the hardware.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Titus has a point]]></title>
    <link href="http://blog.deepaksingh.net/titus-has-a-point"/>
    <updated>2012-09-03T16:19:00-07:00</updated>
    <id>http://blog.deepaksingh.net/titus-has-a-point</id>
    <content type="html"><![CDATA[<p>There seems to be a bit of a debate brewing in the bioinformatics community around code.  There have been a number of posts recently, including <a href="http://blog.deepaksingh.net/research-code/">my own</a>.  A recent entrants is a wonderful post by <a href="http://ivory.idyll.org/blog/anecdotal-science.html">Titus Brown</a>.  The concern that Titus raises, and I see in many comments and discussion is that a lot of computational science, at least in the life sciences, is very anecdoctal and suffers from a lack of computational rigor, and there is an opaqueness that makes science difficult to reproduce (or replicate as Titus prefers).  I&rsquo;ll let you read Titus' post for his reasoning and thought process.  My concern is where I think computational science is right now.  Maybe I am being too negative, but here&rsquo;s what I think</p>

<ul>
<li>We are accepting mediocrity and a non-open culture.  I crave a world of science full of gists and code thrown up on github.  Who knows how it might end up being useful, or end up fostering interesting collaboration.  But for whatever reason we aren&rsquo;t ready to do that.</li>
<li>Actually I think I do know why.  The bioinformatics community is all too aware that the quality of our code is very substandard.  Even today, we don&rsquo;t consider programming skills and computational literacy an essential requirement for biological research.  So we have way too many people writing poor code, even if it is code never meant to see the light of day.  My biggest concern is that this is driving shoddy science that we can&rsquo;t trust.  There is a difference in the skillset required for an algorithm developer, and someone using computational techniques to analyze data.  The code bar for the latter should be a lot lot higher.</li>
<li>We have a cultural problem cause good hacking skills are not exactly the route to scientific success.</li>
</ul>


<p>A recent example was a case where I was encouraging someone to cite an application by pointing to it&rsquo;s source, but others insisted on a paper (which was not even about that particular piece of code).  That&rsquo;s just wrong.  We have to do better.  I am getting a little tired of excuses about time and a lack of funding. Yes, funding is important, and funding agencies need to realize that we need to encourage the right skill sets.  But we have to be responsible for the quality of science and the quality of our work.  Perhaps all that work hidden in our machines is good, but right now I don&rsquo;t believe it.</p>

<p>Note that none of this is about software engineering.  There are software products, e.g. repositories, deployment infrastructure, visualization systems, that are different and have an even higher bar.  I am exclusively talking about the code we use to actually do exploratory research (good frameworks will make exploration a lot more effective, but that&rsquo;s another post).</p>

<p><em>Update:</em> <a href="http://third-bit.com/">Greg Wilson</a> <a href="http://software-carpentry.org/2012/09/not-really-disjoint/">adds</a> to this discussion as well.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Research Code]]></title>
    <link href="http://blog.deepaksingh.net/research-code"/>
    <updated>2012-08-26T18:56:00-07:00</updated>
    <id>http://blog.deepaksingh.net/research-code</id>
    <content type="html"><![CDATA[<p>Iddo Friedberg has an interesting post on <a href="http://bytesizebio.net/index.php/2012/08/24/can-we-make-research-software-accountable/">making research software accountable</a>.  While I have never been in academia since I left grad school, I have been around it through friends and my wife, and I am not sure I completely agree with the post.</p>

<p>He writes</p>

<blockquote><p>This practices of code writing for day-to-day lab research are therefore completely unlike anything software engineers are taught.</p></blockquote>

<p>and</p>

<blockquote><p>Research coding is not done with the purpose of being robust, or reusable, or long-lived in development and versioning repositories.</p></blockquote>

<p>Just reading these lines and seeing other issues I&rsquo;ve seen with academic code makes me think of a few things.  (1) Scientific programmers are either poor programmers or lazy programmers.  That measn that a lot of the reasons scientific code is not robust or maintainable is because they don&rsquo;t know how to write robust code.  (2) There seems to be an assumption that all code inside a software company is written with lots of time on hand and is user facing.  There is a lot of code that is created to create metrics, analyze data and is done in &ldquo;can I get that answer in the next 4 hours&rdquo;.</p>

<p>Perhaps more than anything what it brought to mind was &ldquo;<a href="http://en.wikipedia.org/wiki/Technical_debt">technical debt</a>&rdquo;.  For anyone that&rsquo;s been around software, technical debt is a reality and there is always a tension between speed and debt.  The fact remains that debt catches up with you.  And then you are faced with all kinds of issues.  In the scientific world, I&rsquo;ll call out specific examples of the impact of technical debt</p>

<ul>
<li>You hack something together to get some preliminary data.  You are short on time, so you hard code some parameters, and along the way you forget that you did.  Guess what, that could result in scientific errors down the line cause you have bad parameters or you made a mistake in some algorithm that you fat fingered in your hurry.</li>
<li>Your code is lying around and gets picked up by someone else.  They make assumptions, the wrong ones.</li>
<li>You essentially have to reinvent the wheel often cause you don&rsquo;t have quality reusable code, which also means that your research is going to take even longer.</li>
</ul>


<p>The fact is that every field has slice and dice code.  The better the quality of your programming the better the slicing and dicing.  The better your documentation, the more it goes from being something one person knows, to being part of the toolchest of an entire group.  I wonder if people would take such shortcuts with their lab protocols?</p>

<p>In the end, no amount of enforcement or procedure is going to help.  While there will always be a need to hack something up, and often, scientists need to become better programmers, and realize that code has impact on the quality of the science.  A few things that I do think will help.  Make programming more of a first class citizen.  Right now, it&rsquo;s still thought of as this other thing.  The successful groups have proper software engineers doing the hard stuff, but the majority of scientists can barely script, forget thinking through smart ways of building pipelines or even hacking. The concept of &ldquo;publishing&rdquo; scientific code also needs to change.  It should be less about publishing papers and more about publishing code.  Just throw it up on github, even if no one else is ever going to use it.  If you are using a version control system, and there is no excuse not to use one, then pushing that out to Github or similar is trivial.</p>

<p>Let&rsquo;s just stop using the &ldquo;we don&rsquo;t have time&rdquo; excuse.  I don&rsquo;t know too many graduate students who have more time pressure than an engineer or data scientist at a startup, where every minute counts and costs and people are wearing 10 hats.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Open Data begets cool]]></title>
    <link href="http://blog.deepaksingh.net/open-data-begets-cool"/>
    <updated>2012-08-22T05:09:00-07:00</updated>
    <id>http://blog.deepaksingh.net/open-data-begets-cool</id>
    <content type="html"><![CDATA[<p>I am a huge fan of <a href="http://commoncrawl.org/">Common Crawl</a>. For those who don&rsquo;t know, Common Crawl is a non-profit whose goal is to build and maintain an open crawl of the web.  Their hope is that with the availability of an open, high quality crawl, cool things will happen, e.g. like Michael Nielsen&rsquo;s how to on <a href="http://www.michaelnielsen.org/ddi/how-to-crawl-a-quarter-billion-webpages-in-40-hours/">crawling 250 million web pages quickly and inexpensively</a>.  The thing that makes Common Crawl work is not just quality raw data.  They also provide <a href="https://commoncrawl.atlassian.net/wiki/display/CRWL/About+the+Data+Set">JSON crawl metadata</a> in an S3 bucket, and an Amazon Machine Image to help both users get up and running quickly.  The image includes a copy of the Common Crawl User Library, examples, and launch scripts that show users how to analyze the Common Crawl corpus using their own Hadoop cluster or Amazon Elastic MapReduce.</p>

<p>It is this complete picture, data + tools, and the easy availability of infrastructure to do so that make a project like Common Crawl so compelling.  When you have the infrastructure in place, the friction to do something interesting gets reduced sufficiently that there are enough smart people using the data that interesting things are inevitable.  With people like Michael and <a href="http://commoncrawl.org/twelve-steps-to-running-your-ruby-code-across-five-billion-web-pages/">Pete Warden</a> publishing great getting started posts, the barriers to entry for Common Crawl are essentially the cost of running a small cluster for a few hours.</p>

<p>I can think of a few life science data sets that would benefit from such an approach, e.g. data sets releated to disease outbreaks, expression profiles, etc.  Data that can be analyzed and mashed up with other sources with minimal friction.  That would be awesome.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Data flow]]></title>
    <link href="http://blog.deepaksingh.net/data-flow"/>
    <updated>2012-08-18T20:25:00-07:00</updated>
    <id>http://blog.deepaksingh.net/data-flow</id>
    <content type="html"><![CDATA[<p><a href="http://datasyndrome.com/">Russell Jurney</a> has a great blog post on the Hortonworks blog entitled <a href="http://hortonworks.com/blog/pig-as-connector-part-one-pig-mongodb-and-node-js/"><em>Pig as Hadoop Connector &hellip;</em></a>.  I&rsquo;ve long been a fan of data flow-style approaches and <a href="http://pig.apache.org/">Pig</a> fits my mental model better than something like <a href="http://hive.apache.org/">Hive</a>.  The post does a great job explaining how you can move data through Hadoop, into MongoDB, and eventually turn the data into a web service (in this case via Node.js).  Such a workflow is a particularly nice fit for modern bioinfomratics, especially in a high scale next-gen world.  MongoDB with it&rsquo;s document-based model and rich query syntax is quite popular with the next-gen sequencing crowd, and I&rsquo;ve started to see a lot more Hadoop, especially in commercial services that need to scale cost-effectively.</p>

<p>Biological data is a great fit for Mongo-style key-value stores.  In practice, I wonder how many people are using such pipelines, where they may use something like Hadoop to aggregate a large number of &ldquo;events&rdquo;.  In this case an event could be the output from a single experiment or pipeline.  Essentially you could just stream the output from all your pipeline runs into one or more Hadoop clusters that would do your aggregation and sorting, and then feed that into MongoDB or similar K-V store.  From there, publishing the data as a service is a relatively simple step, and you can even make it look pretty quickly with something like <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>.</p>

<p>The key message here is that we have unprecedented access to the kinds of tools that allow us to work with data flexibly at various scales, and, even better still, make results available to a broader set of users and developers via web services.  Sometimes it feels like there are too many tools to keep track of and learn, and to some extent that is true (pretty much the story of my life), but it&rsquo;s a fun time to be a developer.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Platforms for citizen science]]></title>
    <link href="http://blog.deepaksingh.net/platforms-for-citizen-science"/>
    <updated>2012-08-04T12:59:00-07:00</updated>
    <id>http://blog.deepaksingh.net/platforms-for-citizen-science</id>
    <content type="html"><![CDATA[<p>Nice article in the NY Times around <a href="http://www.nytimes.com/2010/12/28/science/28citizen.html?pagewanted=all">citizen science</a> (<a href="https://www.evernote.com/shard/s4/sh/5f54e39c-4177-44c7-a3ac-fd876c53a6ab/39c04c88d16f0f74c832ea946bfcbe47">or here</a>).  It presents a balanced view of citizen science, a topic I care about deeply</p>

<script async class="speakerdeck-embed" data-id="4fa8b9b42edc72002200e5d7" data-ratio="1.3333333333333333" src="//speakerdeck.com/assets/embed.js"></script>


<p>In the end, citizen science is many things.  It is a way to stimulate public interest, help collect data that would be difficult to do without engaging the community, but perhaps most importantly, citizen science allows the broader public to be engaged in science.  Of the many people participating in data collection, perhaps a few will actually do some analysis, and an even fewer number will end up pursuing science as more than a hobby.  That&rsquo;s OK and that&rsquo;s how it should be.</p>

<p>The key in my mind is to make sure we are developing and nurturing the frameworks that enable participation.  The <a href="http://zooniverse.org">Zooniverse</a> is a great example of making participation easy and fun.  <a href="http://fold.it">Foldit</a> is another model that makes participation fun and rewarding.  The current reach of the web makes such platforms very viable and very powerful.  Do all models and efforts need to work?  No, that is very difficult.  Is it OK to leave the hard science to the &ldquo;experts&rdquo;?  To an extent, that is a good model, but you never know who the experts really are and assuming the sit in some laboratory is both limiting and naive. Not proceeding forward in areas where work can be done by the broader community in chunks because we worry about quality is going to only hold science back. The key once again is to make sure that the underlying platforms make participation easy, and also allow quality to be managed and filtered.  In the biological sciences, we haven&rsquo;t quite seen a project like the Zooniverse, at least not to my knowledge.  Initial success has come from efforts that involve the broader scientific community and some hobbyists.  Over time, hopefully we will achieve the scale that the web enables and reach a wider set of people, not just scientists.  I am pretty sure folks like <a href="http://sulab.org/andrew-i-su-ph-d/">Andrew Su</a> are thinking of how to do exactly this.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The GATK license]]></title>
    <link href="http://blog.deepaksingh.net/the-gatk-license"/>
    <updated>2012-07-28T19:18:00-07:00</updated>
    <id>http://blog.deepaksingh.net/the-gatk-license</id>
    <content type="html"><![CDATA[<p>One of the catalysts for restarting the blog was the new <a href="http://www.broadinstitute.org/gatk/">GATK</a> license.  GATK is a great tool for the genomics community and has historically had an open (MIT) license.  However, with GATK 2.0, the license is moving to a <a href="http://gatk.vanillaforums.com/discussion/17/gatk-2-0-announcement">hybrid licensing model</a>.  Per the announcement</p>

<blockquote><p>The complete GATK 2.0 suite will be distributed as a binary only, without source code for the newest tools. We plan to release the source code for these tools, but its unclear the timeframe for this. The GATK engine and programming libraries will remain open-sourced under the MIT license, as they currently are for GATK 1.0. The current GATK 1.0 tool chain, now called GATK-lite, will remain open-source under the MIT license and distributed as a companion binary to the full GATK binary. GATK-lite includes the original base quality score recalibrator (BQSR), indel realigner, unified genotyper v1, and VQSR v2.</p></blockquote>

<p>&hellip;</p>

<blockquote><p>GATK 2.0 is being released under a software license that permits non-commercial research use only. Until the beta ends and the full GATK 2.0 suite is officially launched, commercial activities should use the unrestricted GATK-lite version. In the fall we intend to release the full version of GATK 2.0. The full version will be free-to-use version for non-commercial entities, just like the beta. A commercial license will be required for commercial entities. This commercial version will include commercial-grade support for installation, configuration, and documentation, as well as long-term support for each commercial release.</p></blockquote>

<p>This is the wrong direction.  Mixed licensing has been the bane of chemistry codes for years, but seeing it in the genomics world, especially for something that started with a more permissive license is a step in the wrong direction.  Others have commented on the potential reasons; commercialization, concern about use by dodby DTC genomics sites; but all of those reasons are quite weak.</p>

<p>So why is this a mistake?  First, it shuts out those who may not be academics, but want to (a) do good science, and (b) contribute to good science.  What if I was a smart developer, perhaps at a small company, or working for myself.  Suddenly, not only is the code no longer available without a license, but their ability to contribute to improving the code is severely diminished.  Second, it betrays a lack of understanding of what open source means.  Yes, there are plenty of open core models, but GATK is not a company or commercial service. If it plans to be one, they should say so more clearly and spin off a company that does the work of developing products around an open source core.  This is neither here nor there, and all it does is come in the way of doing good science and writing good software.</p>

<p>In the end, this sets a terrible precendent.  The world of open source has lots of good models for monetizing software.  If that is the goal, it would be best to follow those models, or focus on providing quality services, but the non-commercial entity only model is a huge backward step.</p>
]]></content>
  </entry>
  
</feed>
