Older blog entries for cerquide (starting at number 45)

1 May 2004 (updated 1 May 2004 at 09:56 UTC) »

Many things to note, grouped by categories

Object Oriented Design and Layers

Nowadays everybody knows that a well architectered application consists in a set of layers (such as UI - Model - Database)and a well designed object oriented model. Even I do! Since I am teaching Programming Methodology I have tried to put together some nice tiny examples of object oriented layered architectures, and I have found that actual programming languages are not well suited for this need. If you do a good object oriented analysis, you will end up with an object model. This object model reappears at the three different layers. That, let's say I am implementing a TODO-list management program. I will have a UI layer Task and a Model layer Task, both containing the description of the task. Furthermore, if I make an inheritance hierarchy such that ImplementationTask inherits from Task and so does DesignTask, I have to repeat this inheritance hierarchy at every layer. Sure there will be objects specific for each layer, but most domain model objects will be present in all of them.

After thinking for a while I see two solutions to this:

  • Using a programming language that allows open classes. In Ruby you can think of having one (or a set of) .rb file for each layer. Since we can add functionality to objects, the UI layer will just reopen the model layer objects and add the UI related functionality. Since the model is implemented in separate files, there is no dependence between the model and the UI, but the UI shares the model object model. Drawbacks are that classes are to be open at every layer.

  • Providing usual OO languages such as Java with a construct and semantics to deal with layers and create an IDE that works with such constructs. While decoupling more and more from the filesystem, our way of programming and thinking of independence in programs is still very much influenced by how we store our code into files. In Java, for example, many times we assume everything under the same .java file as interdependant. We can break this by introducing (for example) a layer keyword that separates the different parts of the object that implement services for the different layers. So we will have something like

    public class A {

    layer Model

    //Model functionality

    layer UI

    //UI functionality


    Plus a file layers.xml for the complete application, describing the dependencies between the layers.

    The IDE will know which layer we are working in and will show :

    • The underlying layers as blackbox services (just the methods we can call, not the code)
    • The code of the layer we are working in
    • Nothing about layers that we do not depend on

Mass spectrometry classification

Finally I have found some GNU software and a reasonably well written article about mass spectrometry classification.

Network programming

J2EE sucks.


I have been reviewing papers for several conferences and workshops this week. Undoubtedly, GTDT04 papers were the most interesting and high quality. I will be really sad if I am not able to be in NY.

Family matters

Next Thursday I am driving to Seville to see my little niece. I will be back on Barcelona on Monday.

ZF inconsistent

fxn, I cannot reach the paper. Do this means we can now positively confirm my long time unproven theorem that 2+2=5? :o)

I have done the DanteĀ“s Inferno Test. Here come the results

The Dante's Inferno Test has banished you to the Second Level of Hell!

Here is how you matched up against all the levels:

Level | Score

Purgatory | Very Low

Level 1 - Limbo | Very Low

Level 2 | Very High

Level 3 | High

Level 4 | High

Level 5 | High

Level 6 - The City of Dis | Very High

Level 7 | High

Level 8- the Malebolge | Very High

Level 9 - Cocytus | High

Level descriptions: http://www.4degreez.com/misc/dante-inferno-information.html

Take the test: http://www.4degreez.com/misc/dante-inferno-test.mv


I have spent all Saturday morning cleaning. What a stupid way to start holidays!


Lots of work, as usual.

I have to prepare my UML course at f2i.

The course at Sony was really a nice experience.

I am trying to stablish a reasonable research framework with Oryzon genomics. I think the software we are developing could be interesting both from a research and from a commercial point of view.

I have been asked by Geoff Webb to coauthor a paper about TBMATAN, AODE and other classifiers based on improving TAN. I have accepted

I have been asked to review papers for IEEE SMC and IEEE Intelligent Systems.


In a few days I will have my nieces here sharing the holidays with us.

16 Mar 2004 (updated 16 Mar 2004 at 18:59 UTC) »

Today I have been learning C with Alfonso Maestre. We have been trying to understand pointers to functions. It is funny that

int x(int z) {return 0;};

int main() {

if (x == ****************x) {

printf ("I am a pointer to myself\n");



compiles and says a function is a pointer to itself!!! Isn't it surprising?

15 Mar 2004 (updated 15 Mar 2004 at 17:47 UTC) »

I have offered myself to Dr. Samek, to translate "PSSiCC" to spanish. He has forwarded the request to the publisher, CMP books, to see if there is a market. I think the book is good and deserves a spanish translation. If you look at amazon.com it is approx. 11.000 and "Design Patterns" is approx 6.000. Obviously "Design Patterns" has been translated (late).


I am on the program committee of the Workshop on Game Theoretic and Decision Theoretic Agents GTDT04. And I am quite happy to be. :o)


What happened in Madrid was awful. There is no point. Today Spain elects its government. I think they should have delayed the voting, because there is too much noise and unknowns floating around. The government is being criticized for hiding information. People is out in front of the government offices asking them to reveal the truth. In Pamplona, a civilian has been killed for dissenting. I do not feel like we are prepared to vote calmly. I hope that whoever wins asks for a second voting once all the unknowns have been sorted out. Anyhow, today I voted.

UML Statecharts

I have discovered UML statecharts. I have always been atracted by mathematical models of computation. Harel's Hierarchical State Machines, that support the concept of "Behavioural Inheritance" look like a very interesting approach. They provide the theory on the basis of UML statecharts. When the time gets tough, that is in real time systems, they are the most useful technique to formalize systems. I am teaching a UML course to the digital TV group in Sony. Obviously, they work on embedded real time systems (a.k.a. digital TVs). This has made me look into parts of the UML standard I disregarded before for being "too detailed". Nothing is "too detailed" if the system is complex enough. I have read "Doing Hard Time" by Douglas and I am reading "Practical Statecharts in C/C++" by Samek. I recommend both. I think "Doing Hard Time" is nice introduction to UML modelling, not just in real time systems. On the other hand, Samek's book introduces C+ as a simple way of translating object oriented constructs into C. It also introduces "Quantum Programming" (quite a hyped name IMHO), that is a way to translate statecharts to C/C++.

I was annoyed because my connections to remote machines through ssh were stopped by inactivity until I found spinner. What a nice, small and useful piece of software!

25 Jan 2004 (updated 25 Jan 2004 at 21:04 UTC) »

Congratulations chalst!

Research Programming

This weekend I have been recoding my framework to obtain experimental results for machine learning algorithms.

I have added an additional option to BNGenerator to allow the generation of networks with attributes with a fixed number of variables. I hope that Jaime merges it into the software.

I have made the framework able to benefit from a cluster. Now it distributes the work and feeds the different machines whenever they get idle.

I have learned to use several Perl modules in the process.

It was fun... and now I can have results in hours where formerly I had to wait for one week.

I think that in terms of running experiments the framework is quite robust now.

Teaching and programming

Preparing my Network Programming course I have found the following article by Jack Herrington:

Back End Code Generation Techniques for Java

It's worth a read. I have been looking at OptimalJ, ArcStyler and AndroMDA myself. I think I have to read some more on MDA. I am planning to build my homepage with AndroMDA. It is quite amazing how fast technologies mature. This MDA stuff looks ready for a try.


I am having problems with the experimental results of my learning algorithms. This week I have lost a lot of time with that with no success in understanding what was happening. Sigh!

Finally it happened. On December 15th, 2003, I successfully defended my PhD thesis. I am very happy that it is over. Now it is time to raise my head, look forward and think.

Finally it happened!!! After 8 3/4 months of waiting, my nephew was born on December 16th, 2003. I am anxiously waiting to see her.

So quite good news for Xmas, aren't they?

36 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!