It's an old friend but, on some rainy days, I like to see this identity a lot of times. It's very cool that Google Calculator know how to calculate it.
Ya es vieja conocida, pero siempre es grato ver esta identidad reconocida por Google Calculator.
This is the old blog. Take a look of the new one http://justavo.wordpress.com/.
It's an old friend but, on some rainy days, I like to see this identity a lot of times. It's very cool that Google Calculator know how to calculate it.
Ya es vieja conocida, pero siempre es grato ver esta identidad reconocida por Google Calculator.
Dawid Kurzyniec has announced that he has written a backport of JSR 166 to Java 1.4.
"I am happy to announce availability of a backport of java.util.concurrent API to Java 1.4. The backport is based on sources from JSR 166 CVS repository (September 2004), and dl.util.concurrent 1.3.4. The backport is nearly complete; unsupported functionality is limited mostly to the following classes: 1) requiring explicit JVM support (e.g. nanosecond clock), 2) some non-essential functions described as "designed primarily for use in monitoring in system state, not for synchronization control", 3) functionality that would affect performance, or 4) functionality that would require development of substantial amount of new code."
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.
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.
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."
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.
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:
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.
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:
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:
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.
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.
Todd Berman posted this blog and I wanted to link it here. To be honest I found it not just funny but also literal.
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.
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.
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?
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.
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.