Paolo Ribeca's software
I post here some of the software which I have developed along the last ten years or so, hoping that you will find it useful. Please refer to the license accompanying each of the packages, since not all of them are distributed under the same conditions.
However, before starting with the actual list I cannot refrain from some (completely unsolicited) advertising :) .
In praise of OCaml
I am not boasting when I say that during my life I have developed complex applications in almost any kind of existing computer language. When I was young and inexperienced, I believed that C and C++ were the best programming languages in the world; now that I am wiser :) , I tried out many and found that Objective Caml is without any doubt the one which suits best my personal taste and needs. In fact, it was more than a discovery; it was more like falling in love :) , or like when you find out that your new shoes instead of hurting a lot just feel like the old ones.
I find it wonderful, really. ML is extremely elegant by itself (if you want to understand and appreciate why you can for example take a look at the exquisite Introduction to Functional Programming by John Harrison), and the way OCaml is implemented adds up to the magic: extremely solid, at the same time spartane and refined, and more than everything else extremely efficient. The design of the compiler, in particular, is really amazing (please do dive into the source of the compiler if you have some time to kill! it is like reading an excellent book).
So, give it a try if you can, please... but without expecting miracles, of course. Maybe the magic will not work out on you as it did for me; after all, even OCaml has of course its (very minor) annoyances and oddities, and, as its implementors love to state, "there are no good programming languages, only good programmers".
Projects available for download
There are three projects available for download so far.
-
The first project is FeynCAD, a GUI-based WYSIWYG program to typeset Feynman diagrams, and graphs in general; your CAD-like vector graphics is translated in real-time to EPS through MetaPost, resulting in a very good output quality.
I wrote it as a byproduct of my Master and Ph.D. thesis, to help speeding up the drawing of the hundreds of Feynman diagrams I needed for these documents.
It is a C++ project based on Trolltech's QT libraries, and accordingly it should compile and run under virtually almost all Unices — but in principle, even if I do not really care about this possibility :) , also under Window$, although in this case one needs a separate license from Trolltech to compile.
Both the sources and a Linux executable are distributed, under the terms of the GNU license. -
The second project is PATRONUS, a software which allows you to compute in the fastest known way the exact Markovian probability scores for the occurrence number of a motif in a sequence (in fact, the program computes the whole probability distribution function of the motif occurrences).
I developed it while working as a computational biologist at CRG.
It is a mixed C/OCaml project, and it should compile without any problem on all the platforms where OCaml is present (the only prerequisite being an installed FFTW C library).
PATRONUS is free for academic and non-commercial use, but you need a license if you intend to redistribute it or put it to any commercial use. At some later point in the future the program will be made open-source; at the moment, only a Linux/x86 executable is provided. -
The third project is ART, a functional general-purpose programming language which I have designed to ease the development of small but computationally-intensive problem-dedicated computer algebra systems, like those needed nowadays by many research problems in physics and mathematics; it comes with both a bytecode and a native-code compiler (the native-code compiler is in fact a translator to mixed C/OCaml executables), a debugger, and many more tools.
I developed it while working in the field of lattice perturbation theory.
It is an OCaml project, so it should compile on almost every architecture where OCaml is present (again possibly with a little preference for Unix).
The thing is not yet publicly available at the moment (the access to the ART wiki is still restricted), but a first release is expected to happen quite soon — that is, at some point before the end of year 2008, if I am still alive at that time :) .
I will add another old project of mine, M.A.D. (which stands for Machine Aided Deconvolution) as soon as I find the time to properly refactor it.