Monday, December 19, 2011

Comparing hostip and geoip

What is the best IP address to geolocalisation system?

Seeking to analyze web log files by the country of request origin, I recently proposed a simple plugin wrapping hostip.info API. Of course, the major competitor in the field is maxmind geoip and they provide a free light version of their database. This database can be queried through their java API of a geoip Grails plugin.
Time has come for numbers. How each module perform on the same set of ip address? Even with 3% of uncertainties, maxmind geoip lite shows to be clearly the best.

Wednesday, December 14, 2011

hostip grails plugin: from IP address to localisation

Getting a localisation from an IP address is somehow straight forwards with available web services. However, for massive report (such as analyzing web logs from the remoteIP perspective), it is not doable, even with caching.
The idea of the plugin is to use the free distributed hostip database, mirror it locally and give a Grails service to query it.
There is another post, comparing hostip with maxmind geoip. It should certainly be read before jumping to hostip.

Tuesday, December 13, 2011

Perl & Hudson: continuous testing & deployment

One of the key point of Agile driven development is an infrastructure to seamlessly build, test and deploy the software at every commit.

Although lot of framework exists in the Java world, there is less available pointers on this topic with Perl. The aim of this post if to give a few practical hints on how we set up our continuous testing and deployment system using Husdon for multiple, dependent perl distributions.

Be ready, it's easy!

Sunday, October 2, 2011

A Perl URL checker

URL::Check : yet another URL check system
You want to get notified is something goes weird on a web site you develop and that should be running 24/7?
Given a list of url, you want to check if they exist and send receive an email in case of trouble.
The problem is so common and hundreds of solutions exists on the web, from simple crontab shell to more complex system (hyperic & co).
We propose here one more system. The constraints were:

  • check availability of url, response time or contents,
  • get email to be notified in case of failure,
  • a simple configuration system.

Friday, September 16, 2011

A Grails GSP template caching system

Caching a whole rendered page is not always the best options, because some minor parts of the page can change from one user to another (e.g. login info).
In other situations, different perspectives can have common components and caching them can dramatically reduce page rendering time (typically a search results).
Inspired from the very good UiPerformance and springcache and based on ehCache, we propose an idea to go a bit further and cache either template rendering or a piece of gsp.

Sunday, September 11, 2011

A Grails template rendering profiler


A complex grails page if often a cascade of templates rendering, nested in each others.
Optimizing page views starts with profiling which template takes time and which template is called by which one.
We offer a capture mechanism of all calls and several rendering: call stack, template time summary, and a visual display of the call graph.

Tuesday, August 23, 2011

Problem solving & low scale decision process


In this post, we’ll try to address the decision process that happens at low scale, more precisely within a team of 2-8 people building software (see http://alexandre-masselot.blogspot.com/2011/08/creating-scientific-bioinformatics.html for the role of such a team). By low-scale, we mean that we will not talk about high level orientation choices (even though there is much in commons), which are out of the scope today.
Once a goal as been stated beforehand (upper management, marketing, scientific, sprint start meeting or whatever), we must decide on how this goal should be reached and it is exactly this step that we’ll talk about here.
Such decision taking is of course a daily process in software development that can involve the full team, a subset for a dedicated aspect, a mix of developers and customers or even only two persons in pair programming. It can cover brain storming, architectural aspects, risk planning, strategy, task scheduling, technology choice, minimal viable product target (http://en.wikipedia.org/wiki/Minimum_viable_product), software design etc. This process can take a few minutes, one hour or even full days (off-site brainstorming).

Sunday, August 14, 2011

20% of blue sky

Motivating software developers in a scientific research environment... 
...and getting benefit from it


Having managed individuals and teams of bioinformaticians (i.e. developers creating software tools for life scientists) and observed practices around me in other fields (and literature), I try to address the question of how to create an environment where people feel good, work at their best, produce good software and get fun from it.

There is much more to say (and so many books to read) about how to build such an environment but I will present here some views on one particular aspect, the 20% “free” time, that can easily be implemented, and the kind of benefit the company can get.

After exploring the concept in the industry, we’ll try to make a proposal on how can (and “why should”) a research center (academic or private) implement the 20% rule for the tool maker developers.


Saturday, August 13, 2011

Creating scientific (bioinformatics) software: going Agile?


This post is the summary of a few personal thoughts about scientific research software development process. This is the results of personal experiences as phD in physics computational modeling, bioinformatician up to head of software development (CTO) in a medium size biotech software company (www.genebio.com), academic research/service group leader and programming course lecturer. These thoughts are based on a lot of personal failures, some success stories, even more observations of other projects and of course literature (see references)...


Verbier to Zinal in speed flying, 2009