@ agnasg

agnasg


… era irresistiblemente atractiva, y no me pude zafar a tiempo

13-01-2013 12:24 PM

Este es un interesantísimo artículo sobre un sistema de recolección de memoria no utilizada (garbage collector) de Gmail. El artículo describe las pesquisas que el grupo de soporte hizo sobre un deterioro en el desempeño de gmail cuando era ejecutado en IE 6 (¡impactante!). Habla cómo Jon Perlow descubrió el problema y cómo lo solucionó, haciendo un hacking en el sistema para que IE 6 utilizara un mecanismo de recolección más eficiente y rápido de forma que el desempeño fuese mejor. Lo más sorprendente es el final:  el cambio impactó negativamente el tamaño de ciertas librerías y generaron problemas en el mecanismo de compresión GZIP. Como consecuencia de ello, el cambio fue eliminado. La sorpresa de este final me recordó mi tesis de grado: durante años estuvimos usando un emulador de máquina virtual para el curso de sistema operativos (era algo así como un predecesor de VMWARE o Virtual box, pero solamente ejecuta un sistema operativo muy simple). A mi tutor se le ocurrió que el desempeño del software podría mejorar si en vez de emular procesos (que ejecutan los programas), creábamos procesos reales corriendo en unix y los controlábamos utilizando la llamada al sistema ptrace. Esta es un llamada al sistema que permite controlar e inspeccionar a otro proceso. Mi presentación de la tesis fue como la de uno de esos trovadores que narran con todo tipo de adornos una gesta heroica, llena de vicisitudes y actos de valentía y nobleza. Describí mi implementación en C, las rutinas, los trucos, todo con lujo de detalles. Uno de los jurados (David Padua) no estaba al tanto del desenlace de la tesis porque no se la había leído (los jurados deben leer la tesis escrita antes de la presentación para que estén al tanto de lo que se va a hablar. En mi caso creo que era un documento de 200 páginas). Preguntó qué pasó, “¿en qué porcentaje fue la mejoría en el desempeño del emulador?”. “Ninguno” contesté, “el desempeño fue peor”. David literalmente pegó un brinco en su asiento. Estoy seguro que mi tesis fue el más exitoso fracaso que se ha presentado en mucho tiempo en mi universidad. Mi tesis fue aprobada, aunque Walter Cunto, otro de los jurados, me hizo la observación que debí tomar otra dirección al detectar que la solución no funcionaba. Lamentablemente ptrace, como solución, era irresistiblemente atractiva, y no me pude zafar a tiempo. La historia de mi vida.

Yo recomiendo paciencia

09-01-2013 7:56 AM

Yo no leo a Linus Torvals (el creador de linux) con frecuencia. Me parece un nazi de la programación (hablando de nazis). Recuerdo (pero no encontré la discusión) la respuesta que le dio a alguien que le preguntaba por qué no había programado git usando C++. Su respuesta fue algo como “… tú estás lleno de bullshit” ( la palabra en inglés para denominar el discurso cuya sustancia se puede reducir a gramíneas, o simple paja). Quizás porque yo también a veces tengo esas reacciones. Llegó a mis manos este artículo sobre el uso de apuntadores. Linus dice que detesta cuando ve que alguien programa la eliminación de un nodo de una lista enlazada simple (o single linked list) utilizando una variable para guardar el apuntador al nodo anterior. Algo así como esto:

[cce width=”620″]
if (prev)
prev->next = entry->next;
else
list_head = entry->next;
[/cce]
Honestamente yo he hecho eso toda la vida. Pero no por la razón que Linus dice (“no saben usar apuntadores”), sino porque de esa forma el código queda mucho más claro y fácil de entender para alguien que tenga que revisarlo, incluyendo a mi mismo mucho tiempo después.Sin embargo, esta vez, el punto de Linus es válido. Además resulta más elegante así. Pero este “error” está mucho más generalizado de lo que Linus supone. Estuve buscando en mi repositorio de código fuente (creo que tengo 3 gb de código fuente de todo tipo (juegos, herramientas, aplicaciones en general), y no encontré un solo sitio donde se utilice el doble direccionamiento. Todos utilizan la variable para guardar el anterior. Interesante… Linus debe estar irritado todo el tiempo… Artículo.

No se puede analizar HTML con expresiones regulares

06-01-2013 9:00 AM

Stackoverflow no es mi sitio favorito para conseguir respuestas. Me parece muy opresivo. Con frecuencia consigues regaños “Esta pregunta ya se hizo anteriormente aqui y aqui”. Parecen nazis. Es increíble que esta respuesta a la pregunta cómo analizar algunos tags HTML haya llegado tan lejos, incluyendo una respuesta con 4432 puntos de un individuo que enloquece diciendo “No se puede analizar HTML con expresiones regulares”. Yo descubrí eso malamente, porque haciendo scrapping (extrayendo info de web sites) hay que analizar los tags de html. Y lo he hecho con expresiones regulares, pero solamente tags muy sencillos, no he necesitado analizar cualquier construcción HTML. Porque la verdad es que no se puede analizar HTML con expresiones regulares. En la mencionada discusión (ya bloqueada por cierto) esta pregunta es respondida una y otra vez y se indica todo lo que puede suceder si lo intentas, incluyendo la destrucción de tu mente, la liberación de almas perdidas del plano astral, la profanación de vírgenes por el niño obsceno, la mente del programador será transportada a un mundo de delirio, etc. “Tratar de analizar HTML con expresiones regurales es como decirle a Paris Hilton que escriba un sistema operativo”. “Sólo Chuck Norris puede analizar HTML con expresiones regulares”. La discusión continúa hasta el infinito en similares términos.

 

En World of Warcraft, a diferencia de la vida real, la reputación no se pierde…

05-01-2013 5:20 PM

… y eso distingue inequívocamente a un político de un mafioso:  los mafiosos siempre cuidan su reputación.

En otras noticias más agradables, mi mago ya está exaltado con Shado Pan, aquí lo vemos con mi escolta favorita, Snow Blossom.