It's been a long time without a post, due (mainly) to high workload... you know, the blisses and woes of a start-up. Nevertheless, i've not been idle. To begin with, i've come back to debian. FreeBSD's ports exhausted my patiente, due to poor dependency handling (i had to install gnome-pilot as a pre-requisite for mrproject!), an obsolete libtool version that nobody seems to be updating (more than a year old) and that prevented my compiling cvs versions of dia and guile, total lack of up-to-date compiled packages and some other minor quirks led me to try a fresh install of debian, and i got hooked again. It's really a pity, for bsd's kernel is so much better, imho, than linux 2.4 (i'm using 2.2.10 at home, btw). But, at the end of the day, i realised that i was using exactly the same applications in both os's, so that the important thing is the package management. Debian's is simply better.
i also got tired of waiting for the update of the OCaml port to 3.04, once i decided that OCaml was the right choice for my next projects. i finished a fp-and-co-languages review, incluing OCaml, Haskell (very nice), Scheme (extremely elegant), ML (well, you've got OCaml) and, last and very least, Python (please, use Perl instead). At first, it was hard to get used to OCaml's syntax, but i learnt step by step to love it... and, oh well, it's just syntax. What really matters is the new semantic world that functional programming opens up; each functional language i've tried came loaded with a handful of little conceptual treasures: type inference, first-class currying and functors in ocaml; lazy evaluation and monads in haskell (with the nicest quicksort evaluation i've ever seen); continuations and macros in scheme... no wonder that reading the python tutorial was so disappointing! It is also a pleasure to find , when using and reading books about, say, ocaml, a direct map between advanced computer science issues and the language you're using; you feel like using a tool from the ground up... imperative languages like C++, Perl or Java are like folk, pop or rock music: funny and light, with some harmonic surprises now and then; funcional languages are the classical music of programming, harmony itself.
As a result of these musings, i don't feel so partial to C++ against Java: they're more or less on the same league. So, it's been not that traumatic to use java at work, a decision we took due to schedule and stuff constraints. Reading Meyer's Object Oriented Software Construction (almost finished) has also made me reconsider some of the relative virtues of both languages, and i'm beginning to appreciate some java features such as garbage collection and reflection (i still terribly miss templates and generic programming features, though). Meyer's book is, by the way, worth reading. It's very well written and insightful, once you factor out his dogmatic defense of Eiffel as the only true solution to virtually all your problems.