Saturday, September 25, 2004

Juan y Fabiola de vuelta

Hace unos días llegaron Juan y Fabiola, dos de mis mejores amigos a México. Léase este primer párrafo a manera de resumen. Pasaron 7 años fuera del país: sus 7 años de matrimonio. Durante este tiempo él estudió una maestría y ella terminó su carrera. Después trabajaron unos años en NY. Hubo visitas varias y recíprocas. Entre otras pudimos ir juntos a ver todo el Anillo del Nibelungo al MET en una semana muy intensa. Además de México, los Sadurní pudieron visitar algunos otros países en suertudos viajes que se echaron en los pasaportes. Sin embargo, antes de llegar a México, pasaron por más de 30 países en un viaje de 7 meses, ese detalle tampoco puede pasar desapercibido en este post (aunque no es, ni de broma, el tema del mismo). Sí, todos podemos caer en la tentación de juntar tanto 7 y restar 111. Está bien, si tienes esa obsesión, venga: tienes todo el derecho de jugar con lo que tú gustes. Pero mejor, entremos en materia.

Llegaron y reflexiono sobre la ausencia de unos amigos y la experiencia de tenerlos cerca, aquí, a todas horas. Sin duda, todo ser humano relativamente inteligente aprende a adaptarse a cualquier pérdida. Finalmente hace 7 años todos sufrimos de ellos. En un sentido, perdíamos a unos amigos. Claro que no se tome literal, por favor. No se pierde en todos los sentidos, pero sí en el sentido de la convivencia diaria o quasidiaria, en ver crecer y vencer obstáculos a tus amigos y estar ahí por si algún hombro se requiere. Y verdad es que la amistad se cultiva con la convivencia, sin duda alguna. Algo más, aprendí que yo soy un amigo muy distante en la distancia: no escribo con frecuencia. De hecho, escribo ridículamente poco.

Juan y Fabiola, como buenos amigos, entendieron esa parte de mí y eso, por supuesto que se los agradezco mucho. Hace 7 años (y un mes) se casaban y Juan era muy adelantado en ese terreno que el resto de nosotros. Ahora, ellos siguen sin hijos: han sabido disfrutar su pareja envidiablemente. Sin embargo, muchos de nosotros además de casados ya somos padres. Ellos están en proceso de mejorar su actitud ante esa realidad. Están en proceso de comprender que la vida pasa y que las etapas que nos hacen ser quienes somos pasan y más vale aprovecharlas en su momento lo más y mejor posible, para aprender lo que está ahí dispuesto a ser asimilado, a ser parte de uno mismo. Y entre esas etapas está la de que sus amigos son padres y aman a sus hijos. Ahora bien, está claro que vamos a platicar mucho de cómo es que uno termina amando a sus propios hijos. De hecho, ese tema será materia de otro post, pero sobretodo de conversaciones, que las anticipo, muy interesantes con mis amigos.

Regresan y la verdad que uno no lo cree o por lo menos uno tarda en darse cuenta de las consecuencias que eso significa. Hoy es sábado, ya entró la nochecita y sé que ellos están aquí. Casi siento que es fantasmagórico creer que tendremos el tiempo de cenar y pasar mucho tiempo juntos esta o cualquier otra noche. Durante 7 años los encuentros se sabían casi únicos en esa visita. Uno se acostumbra. Y quizá yo sea quien más lo pueda sentir de todos los amigos que Juan y Fabiola quieren más. ¿Por qué? Pues porque por mucho, y a diferencia de todos los demás amigos muy queridos de ellos, la mayor parte del tiempo en que hemos sido amigos ha sido en este mood de visitas express, de vacaciones volando.

Claro que ahora viene un periodo de aprender a compartir mucho nuestro tiempo y eso me emociona. Cuando un par de amigos regresan, sabes que no eres el mismo. No se es el mismo, más allá de la parte sentimental, que no negamos que importa muchísimo (uno está contento de pronto no más así, porque hay una realidad ahí que te pone de buenas, en medio del tráfico o de lo que sea), porque uno, como diría Borges, está hecho de tiempo. Y cuando amigos están ahora disponibles para compartir con uno, pues sabemos que nuestro tiempo, que es la vida, será distribuido de forma diferente. Sabemos que nos vamos a nutrir mutuamente, que vamos a reír mutuamente y que nos vamos a re-conocer mutuamente. Ese periodo de re-conocimiento creo que es de las más emocionantes. Claramente uno tiene expectativas de cómo esos amigos han crecido y tienes ganas de disfrutar eso, porque quizá estuviste lejos cuando tus amigos fueron dando esos "estirones". Y lo mismo, uno se siente más grande, más fuerte, más ser humano y quiere ofrecerle esos "bienes" a los que más quieres, a estos amigos que regresan y cambian en algún porcentaje importante tu horizonte.

Y si no ha quedado claro, lo que este texto ha querido decir en cada una de sus sílabas es que les damos la bienvenida en el corazón y en el espacio a Juan y a Fabiola, que se queden mucho tiempo por aquí y que quiero que reciban un abrazo que por lo menos dure 7 días seguidos para comunicar no con palabras todo el gusto que nos da que estén por aquí de vuelta y lo mucho que los queremos.

Wednesday, September 22, 2004

Mexican Catholics smite mobiles

This is very funny. Some mexican Roman Catholic churches have these devices but neither Bellas Artes or Sala Nezahualcóyotl (two of the most important concert halls in the Country) has any of these. This is a very accurate example of what my country is. Read about it here

Tuesday, September 21, 2004

Paychecks at Microsoft

I think that it's very interesting, whether you like Microsoft (its products or strategies) or not, to know the compensation of the top executives there.

Now, we should understand some Ballmer's scenes and dances : those numbers (more than) justify so.

Sunday, September 19, 2004

Google on the desktop (4 months ago)

Four months ago, this news title was shocking. Was this for real? Have you heard recently about it?

NYT: Google Moves Toward Clash With Microsoft. "Google is preparing to introduce a powerful file and text software search tool for locating information stored on personal computers."

Saturday, September 18, 2004

FeedBurner rocks!

Now my feed is published in a number of formats. It was possible because of FeedBurner.Please update your subscription to http://feeds.feedburner.com/gustavo. Do not take this new URL as my blog home page (it remains the same), it's just the feed for syndication. By the way, if you don't know what syndication is or RSS, you should read about it and get some RSS or Atom reader or aggregator.

Anonymous commented that (s)he couldn't subscribe to my feed because (her)his reader didn't support Atom, now this problem is knocked.

String.intern() and synchronization

It's very common that whenever you need to synchronize on a String value (for example, a username) you must synchronize on a common single object for all the intances of Strings that are Object.equals(Object) among them (you need to synchronize concurrent access to the system for the same user). Also it's very common to choose this common single object as the value of a Hashtable with the keySet being the String values.

Lets code it:

Map lockMap=new Hashtable();
//...
public boolean createWorkspace(String username) {
   synchronize(getCommon(username)) {
       //your stuff
   }
}
//...
//does not work!
private Object getCommon(String value) {
    Object common=lockMap.get(value);
    if(common==null) {
        common=new Object();
        lockMap.put(value,common);
    }
    return common;
}
 

This won't work because if two thread with the same username has just one line of difference they could return different "common" objects. The following doesn't work either for the same reason. Two different threads with the same value can enter into the if.

//doesn't work either!
private Object getCommon(String value) {
    if(lockMap.get(value)==null) {
        lockMap.put(value,new Object());
    }
    return lockMap.get(value);
}
 

So it seems that the only solution is to synchronize the whole method, whether on the lockMap object or on the instance of our code (suppose it's a singleton). The code should be something like:

private Object getCommon(String value) {
    synchronized(lockMap) {
        Object common=lockMap.get(value);
        if(common==null) {
            common=new Object();
            lockMap.put(value,common);
        }
        return common;
    }
}
 

And you maybe ask: what's the problem here? Well, the problem is that in some point of our system we are synchronizing (pausing) all threads when we just wanted to pause the threads that have the same username value. And we are doing this with all the users that want to use the system. So we are in a bottleneck scenario, so the problem here is performance.

So, what to do? Well, for a very unknown reason there is a String method that is almost unknown among all Java developers. This method have been in the String class at least since JDK 1.1 (but I'm almost sure I saw it in the very old 1.0.2, but at the moment of writing this post, this version wasn't available in the Archive: Java Technology Products Download page) The method documentation says

Returns a canonical representation for the string object.
A pool of strings, initially empty, is maintained privately by the class String.
When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.
It follows that for any two strings s and t,
s.intern() == t.intern()
is true if and only if s.equals(t) is true.
All literal strings and string-valued constant expressions are interned. String literals are defined in §3.10.5 of the
Java
 Language Specification

Returns:a string that has the same contents as this string, but is guaranteed to be from a pool of unique strings.

So, we should code as the following:

public boolean createWorkspace(String username) {
   synchronize(username.intern()) {
       //your stuff
   }
}
 

I used this aproximation about three years ago on an entry point of a online e-banking application, and worked quite well. Now, looking in the web about this solution I found that this was the topic of the Question of the week Number 158 of the developers.sun.com  more or less 30 weeks ago.

Firefox drawing fans away from Microsoft IE

According to this article from CNet News, Firefox is drawing fans away from Microsoft IE. The most significant numbers are:

"The percentage of visitors to e-commerce and corporate sites that used Firefox or another Mozilla browser grew to 5.2 percent in September, from 3.5 percent in June 2004. Meanwhile, Microsoft's share of the users shrank from 95.5 percent in June to 93.7 percent in September, according to the company [WebSideStory]."

"W3Schools.com, a Web development tutorial site found that Mozilla-based browsers were used by 18 percent of its visitors in September, up from 8 percent in January. Internet Explorer use dropped to 75 percent from 84 percent in the same period.

Among CNET News.com readers, site visitors with the Firefox and Mozilla browsers jumped to 18 percent for the first two weeks of September, up from 8 percent in January."

Actually, I like the W3Schools.com statistics about the browser market share. But it lacks of market, sites and web apps segmentations.

Friday, September 17, 2004

Top 22 Reasons to vote for George W. Bush

Todd Berman posted this blog and I wanted to link it here. To be honest I found it not just funny but also literal.

Try A9

Amazon launched A9, this search service uses Google, Internet Movie Database, Amazon itself, etc giving a richer experience that allows to link your history search with related books, images, movies, etc...

I liked this search aproach. Try it yourself.

Thursday, September 16, 2004

Gmail Notifier

For those who have a Gmail account, I just found Gmail Notifier and it works just fine. It seems no to be listed in the Google Labs page.

Wednesday, September 15, 2004

Bonobos

This is an excellent resource about Bonobos. I'm convinced that every human being should read about these close relatives. Read the Bonobo Sex and Society article. This article was originally published by Scientific American. Afterwards, you can read more about bonobos reading the book Bonobo: The Forgotten Ape. Both, the book and article were written by the same author: Frans de Waal.

Comparación

Imaginemos a una madre de familia haciendo que diariamente todos sus hijos digan al unísono algo muy agradable a su padre con una invitación del estilo: "Todos digan: te amamos mucho, papá", justo cuando el papá llega a desayunar. Ahora añadamos a la escena el hecho de que el papá se la cree y de hecho realmente disfruta de que los niños hagan ese esfuerzo, aunque realmente como que los niños no hagan el esfuerzo de aprenderse exactamente las palabras que deben decir en ese momento. Pero eso no importa, el papá se la cree y realmente se siente amado por sus hijos.

Ok, ahora comparemos eso al hecho semanal de un sacerdote que dice en muchos momentos de la Misa: "Respondemos todos: Bendito seas por siempre, Señor". Imagínense qué clase de deidad debiera ser para creersela y pensar que está cool que todos repitan así la liturgia. Pues esa es la clase de deidad que promueve el catolicismo... o por lo menos un buen número de sacerdotes católico. Sinceramente me pregunto qué crerán los sacerdotes que gana para su dios y su gloria el hecho de que todos repitan después de él la frase correcta. Claramente es un asunto religioso, esto es, la que gana ahí es la religión y con ello el fortalecimiento del vínculo entre la conciencia y los estatutos morales que rigen los valores de esa religión. Pero la pregunta persiste: ¿qué tiene que ver una religión con una deidad? ¿qué podríamos saber de una deidad a través de religiones o ministros de ese calibre?

Sin duda, un asunto penoso. Sobretodo si se reflexiona sobre los elementos tan mezquinos con los que se amarran a las conciencias de los hombres y las mujeres que caen en ese trinomio culpa-arrepentimiento-perdón.

 

Tuesday, September 14, 2004

Una observación

Todo Rey de JackBe es, por definición, un Rey Mago.

La pregunta persiste: ¿tenemos a Melchor o a Gaspar? Baltazar sin duda no coincide con nuestro Rey.

Sin embargo, ¿existía un cuarto Rey Mago que no vení­a del Oriente sino de Escandinavia?, ¿acaso es posible un Rey Mago bárbaro?

¡Ya hay heredero!

¡Enhorabuena! Los Reyes de JackBe tendrán un hijo(a) y el pueblo entero salta gozoso. He aquÃí la prueba de tan bienaventurada noticia.
De todo corazón, ¡felicidades Mariola y Ricardo!
Supongo que los tributos no se harán esperar.
Heredero(a)

Camila, my daughter

Aarhus on Borges

Estaba buscando la bibliografía de Borges para citar algunos libros de poesía con precisión en mi profile y me encuentro sorpresivamente que en la Universidad de Aarhus, donde hacen Criptología y teoría de Object-Oriented Software Systems del mejor nivel (de hecho supe de esa universidad encontrando datos sobre Rijndael (AES) en octubre del 2000) también tengan un centro especializado en el estudio de la obra y vida de Jorge Luis Borges. Desgraciadamente en México, sólo en la UNAM sistemáticamente podemos encontrar tal diversidad, pero quizá no con tanta profundidad; insisto: sistemáticamente (porque sabemos de varios garbanzos de a libra).
Simplemente como dato: Aahus es una ciudad de apenas 285,000 habitantes... Seguro nos hace pensar en algo...
Más aún el país entero tiene apenas 5,397,640 habitantes... Ya mejor no sigo dando más datos sobre ellos. Y por favor, que conste que es la primera vez que me intereso en Dinamarca (claro, después de mi periodo súper ñoño en la primaria y secundaria cuando me aprendía cuanto dato inservible y ocioso me encontrara, pensando que eso era cool).

Tesis

Tal como Juan Román informó al mundo, finalmente empezaré mi tesis de nuevo. Es la tercera vez que la empiezo y, aunque sea un lugar común, la verdad sí me gustaría que esta fuera la vencida. No me importa a qué dioses de la retórica me acerque, pero sí quiero terminarla.

Tal como Gustavo Preciado sugirió con toda intensión, Gabriel López Calva me guiará en este arduo camino. Es justamente porque él me la dirigirá que confío más en que yo sí la acabe. No tanto porque los anteriores asesores no hayan hecho un excelente trabajo (Grabinsky y Alfaro-González), sino que la neta el compromiso moral que adquiero con Gabriel es superlativo. Básicamente sé que le va a dedicar tiempo y sé sus niveles de compromiso, sé que está en su último año de doctorado y seguro tendrá una presión bien perra. Entonces claramente hacer que él invierta un poco de su tiempo y yo no responder como debo, sí sería de lo más mezquino. Así pues, supongo que la motivación la tengo de sobra.

Para empezar, tengo que leer casi toda la primera parte del Nocedal para diciembre. Así que tengo mucho que estudiar. La idea de la tesis es muy simple, entender los algoritmos y ver la forma de diseñar (y yo creo que también algo de implementar) alguna arquitectura flexible y altamente configurable para los solvers.

Ahora bien, sobre el lenguaje ya veremos en qué lo hacemos... una opción es, sin duda, C# y en ese caso el post de Juan tendrá sentido; sin embargo Java 5.0 también es un candidato fuerte. Más aún, si realmente quisiéramos montarnos en el Access Grid, entonces tendría que programar algo en Python.

Monday, September 13, 2004

JavaScript links

Recently Alex Mancilla found, as long as I know, the best articles and sugar tools about JavaScript. Check them out in the JavaScript section of this page.