Monthly Archives: September 2008

Suggestion for search engines

When I search for a particular software application (Wt, CMake, etc), please show me, in the results page, the latest version and a link to the download page (or even to the file, if there is only one file to be downloaded) so that I do not need to enter the website, check if there is a newer version and, if there is, go to the download page. Here you have a mockup:

Mockup of Google showing the latest version of CMake in the results page

Mockup of Google showing the latest version of CMake in the results page

Free English-Spanish tip

This is a common mistake I see every time an English speaker tries to speak Spanish, or a Spanish speaker tries to speak English.

  • Mister = Señor
  • Sir = Caballero

When in English you would say “Sir, your umbrella”, do not say “Señor, su paraguas” but “Caballero, su paraguas”. Also, never say “Gracias, señor” for “Thank you, Sir” but just a plain “Gracias”.

Estudios científicos, periodistas y desconocimiento de Estadística

Hoy publica El Mundo un artículo titulado Apostar por el bilingüísmo puede ocasionar un problema de tartamudez. El titular dice claramente que los niños bilingües son más propensos a ser tartamudos.

Pero, ¿es cierto?

Pues no.

Basta con leer el artículo para darse cuenta de que ni el periodista, ni los que han hecho el artículo, saben nada de Estadística ni Inferencia Estadística.

El primer error es la población elegida para el estudio: sólo niños tartamudos. Con ese punto de partida, es IMPOSIBLE y TOTALMENTE ERRÓNEO concluir que el bilingüísmo lleva al tartamudeo. Para poder obtener esa conclusión habría que haber hecho el estudio con niños tartamudos monolingües, niños tartamudos bilingües, niños no tartamudos monolingües y niños no tartamudos bilingües. De esos cuatro grupos, sólo los dos primeros estaban en la población elegida para el estudio. Esto, de por sí, ya anula todo el estudio.

Segundo error: sólo clínicas y hospitales públicos. Los padres adinerados llevan a sus hijos a clínicas privadas, así que la población estudiada son niños pobres y tartamudos. ¿Y quién suele encuadrarse entre los pobres tan pobres que ni haciendo un esfuerzo pueden llevar a sus hijos a una clínica privada? Pues los inmigrantes, claro. Que da la casualidad que suelen venir de otro país, así que hablan otro idioma. Eso explica el bilingüísmo de esos niños.

La única conclusión válida que se podría sacar de este estudio es que las familias pobres con niños tartamudos los llevan a clínicas públicas, no privadas. Cualquier otra cosa es errónea o malintencionada.

Es increíble que todavía se publiquen tantos artículos, en periódicos y en revistas de prestigio, que pequen de la falacia del tercer factor (“Cum hoc ergo, propter hoc”).

Para terminar, un ejemplo de un estudio muy antiguo que pecaba también del proper hoc. Se hizo un estudio y se vio que aquellas personas que compraban muchos zapatos, también compraban muchos libros. ¿Sería que leían mientras se ponían los zapatos? ¿Mientras esperaban en la zapatería? ¿Deberíamos regalar zapatos para “fomentar” la lectura, como parecía concluirse del estudio? Pues tampoco: es simplemente que quienes compraban muchos zapatos eran gente con dinero, así que podían permitirse comprar más libros. El estudio ni siquiera miraba si esos libros eran luego leídos: había mucha gente que apenas compraba zapatos, pero iba a la biblioteca y leía más libros que los “comprazapatos compulsivos”

Subtle errors

I am adding Strigi support to an application using the Strigi socket interface (it’s faster than DBus and, in my case, easier to use). When using the socket interface, Strigi needs to to know where the socket should be created (for instance, /home/pgquiles/.strigi/socket) and it will search for indices in a subdirectory of that directory (/home/pgquiles/.strigi/clucene if using the CLucene backend, /home/pgquiles/.strigi/estraier if using the HyperEstraier backend, etc).

So I was telling Strigi the socket should be created in /home/pgquiles/.strigi/socket and to use the CLucene backend, thus indices would be looked for in /home/pgquiles/.strigi/clucene. Problem is, I was not getting any result back!

    std::string socketpath("/.strigi/socket");

    const char *homeVariableName = "HOME";
    char *home = getenv(homeVariableName);

    if( 0 != home ) {
      std::string socketpath = std::string(home) + "/.strigi/socket";      
    }

    socket.setSocketPath( (const char*)socketpath.c_str() );

Notice the subtle error with block-scoped std::string socketpath hiding method-scoped std::string socketpath. Due to that, Strigi tried to use a socket from /.strigi/socket (which did not exist) instead of the right one, so it did not even try to look for indices!.