Friday, February 27, 2009

[SW] JabRef -- An easy-to-use reference manager

When I was a 100% Windows user and had no idea about application software out of the scope of Microsoft's, it was a nightmare to write a list of reference for my paper or report. It's possible for me to survey and gather lots of papers in electric forms (e.g. *.pdf files) and then store them in folders of the hard disk. When it's time to list them out or to recall what I've read from those papers, however, I always got lost in those files, especially after a period of time, say, one month or even longer.

Besides the difficult of managing the papers I have found, there is another problem when I was composing my paper. Writing the reference listed in the final part of paper had been a bit of cumbersome work, if you type every single terms by yourself, just as what I had done. Actually, I am not sure whether the MS Word has clever ways, I mean, really clever ways, for the user to add the reference list to his or her own articles, but I was always type all the words of the reference list directly. It's apparently not a smart approach. What worse is that you, just like me, probably don't master all the styles of the reference you cite. For example, how to abbreviate the author's name? Put the first name in front of the last name or exchange their orders? Where to insert the volume number of a journal? To use a comma or a period? All the details will consume your energy or at least bother you every time when listing the reference.

Let JabRef do these works for you.

JabRef can help us to manage the many papers we have. Assume that you have dozens of papers saved in folders of your computer, you can link files to the items of your JabRef list. It's easy for you to group the papers, and every single paper could be assigned to more than one group. This makes life easier, because you can find papers of certain group even they are saved in different locations in your computer.

Another nice feature of JabRef is it allows you to input the information of reference without caring the format. There are fields for you to key in necessary and optional information of the papers, then the JabRef will arrange these information into the bib file which is extremely useful for composing articles by using LaTeX.

The usage of JabRef is quite easy. I have never refered to its help documents seriously and I still can use it happily.

Here are some screenshots of JabRef. Just take a look at it, and download it for a try.

Tuesday, February 24, 2009

[SW] GSL -- GNU Scientific Library

God, the open source community always make me surprised!

About 2 or 3 days ago, when I was searching for some open source code to add Gaussian random noise to my artificial data, I found the GSL (GNU Scientific Library). It's amazing. Although I am not very good at programming, but after some trials and with the help of examples, I produced Gaussian distributed random noise successfully! And there is pdf (probability distribution function) function for me to check the Gaussian distribution data.

Big thanks to all the people contributing to the open source world!

Here is the source code I used to generate Gaussian distributed random noise (first image), and also the pdf of the generated random noise (second image).

/*
* gcc -Wall rngGussian.c -o rngGussian -lgsl -lgslcblas -lm
*/

#include <stdio.h>
#include <time.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>

int main(void){
const gsl_rng_type * T;
gsl_rng * r;

double randomNum;
double randomPdf;
int i;

gsl_rng_env_setup();
T = gsl_rng_default;
r = gsl_rng_alloc (T);

gsl_rng_set (r, time(NULL)); /* use time() to generate the seed */
for(i=0; i<1000; i++){
randomNum = gsl_ran_gaussian(r, 1.0);
randomPdf = gsl_ran_gaussian_pdf(randomNum, 1.0);
printf("%lf %lf\n", randomNum, randomPdf);
}

gsl_rng_free (r);
return 0;
}