lunes, mayo 15, 2006

Este blog se mudó haga click aquí para continuar.

lunes, diciembre 12, 2005

OLE, COM, ActiveX sin remplazo en el campo de juego  

COM Para la época de Windows 3.0, una de las características que mejor vendieron el sistema operativo era la de poder incorporar "partes" de una aplicación en otra (digamos, por ejemplo, una planilla de Excel dentro de un informe creado con Word). Eso era OLE y era un desórden basado en conversaciones sobre mensajes Windows (DDE). Había que cambiar OLE desde su fundamento y Microsoft contrató a un grupo de arquitectos de software, mayormente ingleses. En Windows World 1994 (no me canso de contarlo), en Costa Salguero, tuve el gran honor de asistir a la conferencia del mismísimo Kraig Brockschmidt sobre COM. El autor de "Inside OLE 2" y gran arquitecto de COM estuvo clarísimo, chistoso y lo que mostró revolucionó mi forma de pensar el software de ahí en adelante. También dio una cachetada a los porteños presentándose no sólo sin corbata, sino calzado con sandalias (¡!). COM tenía la enorme ventaja de ser un concepto extremadamente simple. Si bien algunas de las interfaces, se puede decir, terminaron con demasiados miembros o nombres no muy buenos, la idea era redonda. Hasta que hubo que incorporar a Visual Basic. Para acomodar el entonces magro intérprete de VB, inventaron un modo para encontrar y llamar métodos por nombre en una interfaz única por objeto llamada IDispatch. El nombre que dieron al bicho fue "OLE Automation" y encima le hicieron propaganda sobre la supuesta ventaja de no tener que distribuir una biblioteca de tipos. Unos años después nos mandaron a los instructores de cursos oficiales a hacer entender que (una vez que VB pudo leer bibliotecas de tipo) hay que mantenerse lo más lejos posible del "late binding" (que es lo mismo que OLE Automation, pero el nombre nos indica que hay que odiarlo en vez de amarlo, viene a ser como "Anakin Skywalker" transformado a "Darth Vader"). En 1996 Microsoft decidió pagar su antigua deuda de manejo de transacciones y escalabilidad y lo hizo con la técnica de "intercepción", poniendo un programa en medio entre un cliente y un servidor COM. Pronto encontraron más usos, a parte de las transacciones, y completaron la idea de COM+ (COM con servicios basados en intercepción de llamadas). Para ese momento ya existía DCOM (prometido desde el inicio con COM), tristemente basado en un viejo RPC con criterios caprichosos de seguridad, tales como elegir un puerto al azar dentro de un rango (¿seguridad?). Un poco después, MS comenzó a trabajar sobre la plataforma .NET y a hacer público que dejaría de lado COM. Para ese momento Kraig había dejado la programación para dedicarse a la enseñanza de un antiguo instrumento de música ritual (más información en su libro al respecto). La plataforma .NET ofrece gran cantidad de información entre objetos y un conjunto de interfaces conocidos (ComponentModel) para utilizar partes entre sí. Sin embargo ¿en sus años de existencia, ha cumplido siquiera con la premisa de vincular e incrustar objetos entre aplicaciones? Todavía no he visto ningún paquete de aplicaciones de oficina que soporte esa operación desde .NET.

sábado, diciembre 10, 2005

DATCO terminó de comprar AOL  

(en Technorati) La empresa argentina  DATCO tiene algo para ofrecer: productividad, eficiencia y buenas ideas de administración. Su Director General es casi un genetista, que se mueve como pez en el agua comprando empresas en proceso de quiebra y convirtiéndolas en seres adaptados al medioambiente. Según lo veo, para AOL Argentina y para los empleados de esa empresa, la navidad trae nuevas esperanzas. en La Nación

miércoles, diciembre 07, 2005

La importancia del buen azar  

Durante el curso de Informática "Aplicada a la Inteligencia Criminal" expliqué que el momento de la generación de las claves RSA, sea que esto ocurra en una PC o dentro de un dispositivo especialmente diseñado al efecto, se requiere un "buen azar". Muchos reflexionaron sobre el tema y surgió la que -digo yo- es la misma pregunta de los amantes de las cartas o de la ruleta: ¿qué es un buen azar? ¿es un buen patrón? ¿es un patrón tan malo, que resulta difícil de repetir o predecir?

Por casualidad (¿suerte?) encontré un artículo muy interesante mientras -ejem- jugaba un backgammon y quería compartirlo con ustedes. Por favor fíjense en http://zone.msn.com/en/backgammon/article/bckgrandomness.htm , que no tiene desperdicio y describe en palabras simples el "azar de nivel criptográfico".


lunes, diciembre 05, 2005

Santa Fe,ómnibus línea 15, golpeo con la realidad  

Son las diez de la noche del lunes 5 de diciembre. Hace una hora tomamos con Antonia el 15 en Regis Martínez y Aristóbulo del Valle. Mientras subíamos, bajaba un agente femenino de la Policía de Santa Fe. Veníamos de disfrutar una picada en el club Escalante, después del ensayo de Antonia para el baile del Centro Andaluz. Apenas nos sentamos sentí un fuerte olor a pegamento y maldecí internamente al que hace esas cochinadas en el ómnibus y deja los restos para que tengamos que respirar los demás. Decidí que probáramos algunas filas más atrás por si se sentía menos.

Nos sentamos dos filas más atrás que los chicos: uno tendría no más de 9 años y el otro, como Antonia, 6. Los dos respiraban de a turnos sobre la bolsita con materia verdosa. Dos filas más atrás estábamos ya fuera del alcance de su conciencia espacial. Terminé de sentarme y ya no sentía el alma, había envejecido 20 años más y me había dado cuenta qué tonta ilusión era pensar que se podía hacer algo por la seguridad de la Nación mejorando las posibilidades de medir la repercusión de iniciativas de prevensión en el mediano plazo. Todo mentira.

Unas cuadras más adelante me di cuenta que podía ser incluso peligroso estar oliendo eso desde menos de dos metros y abrí la ventanilla. El aire que entró hizo evidente que el olor nos estaba invadiendo y decidí que bajáramos.

Yo, que no soy bueno, caminé dos cuadras llorando y después le expliqué a Antonia por qué estaba triste. Me siento responsable y copartícipe de lo que le pueda suceder a cada uno de mis vecinos santafesinos. Y no tengo ninguna respuesta.


martes, noviembre 29, 2005

Mi primer uso de método anónimo  

Y me resulta maravilloso, excelente, un orgasmo de programación. Creo que el código habla por sí solo (tomo un directorio, leo sus archivos y los ordeno por fecha de creación). Sólo hay que aclarar que de ninguna manera estaba buscando una "demostración" del uso de métodos anónimos, sino que la búsqueda surgió con total naturalidad. Aguante C#.

DirectoryInfo di = new DirectoryInfo(path); FileInfo[] fis = di.GetFiles(); Array.Sort(fis, delegate(FileInfo x, FileInfo y) { return (x.CreationTime - y.CreationTime).Seconds; });


domingo, noviembre 20, 2005

Las nuevas certificaciones Microsoft  

Este domingo volví a visitar -después de tal vez un año- el sitio de certificación de Microsoft, para encontrarme con una sorpresa: para el año que viene, van a cambiar (nuevamente, debo decir) todas las certificaciones.

Ahora parece que vamos a tener la posibilidad de crear "logos propios" que muestren un conjunto específico de tecnologías que nos diferencian como desarrollador/profesional de IT.

Pero lo más interesante es una nueva certificación como "Architect" que implica: tener al menos 10 años de experiencia en IT, al menos 3 años de trabajar como arquitecto (comprobables) y presentar una solución propia ante una Junta (Board). El mecanismo se parece mucho a la certificación para MSF tal como la tomó, por ejemplo, Cristian Rivas (BeyondIT).

Hasta ahora las ideas que vi me gustan. Espero que sirvan para, al menos, relanzar las certificaciones que últimamente no generan tanto interés como lo han hecho en otras épocas. Habrá que ver cuando esté todo en funcionamiento (¿primera mitad de 2006?).


sábado, octubre 15, 2005

Pantallas de error que son demasiado  

En este artículo de WTF se muestran ejemplos magníficos de increíbles mensajes.

Sin embargo, esos mensajes de error inusitados tienen su explicación y debo decir, no sin algo de vergüenza, que sé de dónde vienen.

Corría el año 1994 y trabajaba en Buenos Aires para un conocido BBS (¿alguien se acuerda de ellos?). La empresa con que colaboraba desarrollaba la interfaz Windows para el BBS (ventanas y multitarea para el maravillado usuario). El instalador que hicieron estaba muy bueno, pero tenía una desventaja: hecho en VB, quedaba incapacitado de instalar la biblioteca de tiempo de ejecución de VB.

Tuvieron que recurrir a mis por entonces escasos conocimientos del lenguaje C para que desarrollase un "pre-instalador" (un programita que copia la biblioteca básica una vez que es llamado por el primer programa). Para asegurarnos que al momento de la copia, el primer programa había cerrado, un parámetro de línea de comando indicaba en handle de la ventana que estaba llamando. Con ese número obtenía la ventana, de la ventana el proceso que la creó y esperaba que el mismo terminara.

Ahora bien, si mis conocimientos de la arquitectura de Windows llegaban a poner eso en práctica sin dificultad, una operación básica como transformar el parámetro de línea de comando desde cadena a entero, me resultaba complejísimo.

Para los fines de depuración (no conocía en detalle el funcionamiento del depurador de MS C), puse un cartel que, si la conversión daba cero, mostraba el mensaje "Cagamos" en una ventanita con el título (redundante) "Shit!".

Finalmente aprendí a transformar los números y el programa fue probado varias veces y en diversas condiciones antes de ser empaquetado e incluido en una revista de importante circulación nacional.

Cuando llegó a las manos de algún avispado lector con mucho tiempo libre, dicho sujeto se entretuvo buscando la seña de ejecutable (el famoso MZ) al incio de archivos que no tendrían la extensión ".exe" y dio con mi preinstalador.

En breve apareció un mensaje en un foro del BBS dando las instrucciones:

  • Renombrar tal archivo a .exe
  • Hacer doble clic
  • (como no se pasaba ningún parámetro y la conversión daba cero) Fijate el hermoso mensaje que dejaron como huevo de pascua

El asunto me valió un reto y aprendí, entre otras cosas, a controlar el lenguaje que uso en los programas, aún cuando estoy seguro que la frase no va a hacerse pública.


jueves, octubre 13, 2005

Al fin información nutricional  

Un reciente artículo en el diario La Nación dice que finalmente van a forzar a los productores a indicar el valor energético, entre otros indicadores, de los alimentos.

Parece una pavada, pero es algo a lo que uno se acostumbró en la década del 90 (cuando los helados que compraba eran daneses, los quesos franceses y los fiambres españoles). Y es increíble que la industria no lo haya hecho por propia iniciativa.

Vamos a poder dedicarnos al cuidado de uno mismo con una de las herramienta más propia del ser humano: el cálculo.


martes, octubre 11, 2005

Se trata de programar  

y ninguna otra cosa. No puedo entender a quien empieza una carrera como Ingeniería o Licenciatura en Informática y no quiere estudiar programación. Dejame que te cuente un secreto: esto se trata sólo de programar. Si existen actividades adicionales son extras, son secundarias. Sí hay que coordinar proyectos, sí hay que vender servicios, sí hay que administrar empresas. Pero programar es de lo que se trata: tomar el teclado y pegarle duro. Si tenés que elegir entre un curso de "nociones de contabilidad para programadores" y uno de mecanografía, podés engañarte pero sabés cuál te va a dar nociones más útiles. Y si coincidís conmigo, además de ejercitar el meñique sobre el punto y coma, te recomiendo el reciente weblog de un verdadero Gourmand chileno de la programación, mi amigo David Jirón.