Friday, August 28, 2009

Revision Control Systems

Be it a source code of some software development project or various writings for some publication in journal or conference proceedings, we inevitably create different versions of the documents or the source code. Instead of simply naming them as v1, v2.. or some scheme similar to it, there are many tools available which help us maintain different versions in a more efficient manner. Some of them mentioned here:

Both GIT & Mercurial is based on distributed peer-to-peer model, while SVN & CVS are based on centralized client-server model. A review of these revision control systems is presented in an article in Communications of the ACM Magazine, Sept 2009 issue. The main conclusions of this survey is reproduced here:
"Choosing a revision-control system is a question with a surprisingly small number of absolute answers. The fundamental issues to consider are what kind of data your team works with, and how you want your team members to interact. If you have masses of frequently edited binary data, a distributed revision- control system may simply not suit your needs. If agility, innovation, and remote work are important to you, the distributed systems are far more likely to suit your needs; a centralized system may slow your team down in comparison.

There are also many second-order considerations. For example, firewall management may be an issue: Mercurial and Subversion work well over HTTP and with SSL (Secure Sockets Layer), but Git is unusably slow over HTTP. For security, Subversion offers access controls down to the level of individual files, but Mercurial and Git do not. For ease of learning and use, Mercurial and Subversion have simple command sets that resemble each other (easing the transition from one to the other), whereas Git exposes a potentially overwhelming amount of complexity. When it comes to integration with build tools, bug databases, and the like, all three are easily scriptable. Many software development tools already support or have plug-ins for one or more of these tools.

Given the demands of portability, simplicity, and performance, I usually choose Mercurial for new projects, but a developer or team with different needs or preferences could legitimately choose any of them and be happy in the long term. We are fortunate that it is easy to interoperate among these three systems, so experimentation with the unknown is simple and risk-free."

More of this from the article here: Making Sense of Revision Control Systems, by Brayn O'Sullivan

Managing bibliographies

Having reference lists is one of the most indispensable tools a researcher must posses. Whether is a journal or article from conference proceedings, to books to web-clippings. etc. Many tools are available for a researcher to manage their reference lists. Here are a few

  • Bibtex formatted text files: www.bibtex.org very useful when writing articles using Latex. Can also use various bibtex tools for searching, converting to other formats. Bibtex Tools
  • Mendeley: www.mendeley.org An integrated tool where you can view pdfs, add metadata, extract references from various publication databases based on doi, pubmed, arxiv, ..etc. Also has web interface (linked to a web account) through which you can view and share publications.
  • Zetero: www.zotero.org Similar to Mendeley and offers pretty much the same features, but this one is offered as a firefox web browser extension, while Mendeley is a standalone program. Not sure which one is better. Both have active development (frequent updates with new features). The verdict is still out there. Decide for yourself which one suits you better.
  • Besides the above there are few commercial software to manage bibliographies. A comparison of a many bibliography management software is mentioned here.