lunes, julio 31, 2006

Descarga gratuitamente MSDN Library Mayo 2006

Gracias a Firedancer me acabo de enterar que la MSDN Library se puede descargar gratuitamente.

Esta es la versión que se puede instalar directamente en la PC y consultar cuando lo desees, entre los detalles más novedosos se incluyen lo siguiente:
  • Visual Studio 2005 Team Foundation Server
  • SQL Server 2005
  • Microsoft Knowledge Base
  • Internet Information Server SDK
  • Internet Security and Acceleration SDK
  • ... y más!

Siempre es bueno tener a la mano la Library instalada, especialmente cuando no tienes acceso a internet o éste es limitado.

Finito.

domingo, julio 30, 2006

Liberada la Web Service Software Factory

Tom Hollander en su blog ha anunciado la liberación de la Web Service Software Factory. Este producto como los anteriores, implementa el concepto de fábrica de software en el ambiente de Visual Studio, mediante el cual se proporciona a los participantes del equipo de desarrollo secuencias de acción, recetas y elementos que automatizan en parte el desarrollo de un componente específico aumentando así la productividad y la calidad del resultado final.

A diferencia de las anteriores entregas, Smart Client y Mobile Client, esta fábrica esta circunscrita precisamente a Web Services, un elemento más familiar que permite desplazar el foco de atención al funcionamiento mismo de la fábrica.

Indudablemente este concepto de producción masiva automatizada requiere de más estudio para conseguir aprovechar los beneficios que pregona y sobre todo de conseguir la personalización para cada usuario y/o proyecto en el que se utilice, así que he de dedicar algunas horas a conocer más y probar profundamente esta entrega.

Finito.

sábado, julio 29, 2006

Reunión Mensual de la Comunidad .NET en el DF

Ayer tuve el gusto de volver a estar en la reunión mensual de la Comunidad .NET del DF a la cual ya tenía un tiempo de no asistir. Lamentablemente llegué solamente a la última exposición a cargo de Octavio Telis que tocó el tema de los valores anulables en .NET 2.0.

Sin embargo lo mejor estaba por venir. En la agenda publicada figuraba el nombre de Raúl Guerrero que inmediatamente me sonó familiar debido a las participaciones en los podcasts de Carlos Madrigal. Me entró la inquietud de conocer a la persona detrás de los comentarios así que al final de la reunión me acerque y me presenté directamente con Raúl. Grande fue su sorpresa y alegría al enterarse de que soy podescucha de Carlos y de él mismo. Y comentamos varias cosas hasta que tuve que despedirme. También para mí fue muy grato conocerlo y ver que si importa la retroalimentación de parte de los lectores y podescuchas de esos esfuerzos.

Hace un momento, leyendo los mensajes del día de la lista de Mono Hispano visité una de las ligas en la firma de los mensajes y grande fue mi sorpresa al encontrar que Iver también es podescucha de Pozo Técnico y SuperNeurona.

De aquí la reflexión de lo importante que son estos esfuerzos de compartir conocimiento y experiencias en tu idioma y además de una manera tan amena. Reciban desde aquí un caluroso abrazo y felicitación.

Finito.

lunes, julio 17, 2006

Laboratorios Prácticos

Desde la semana pasada he estado ejercitándome con los Hands On Labs del Composite UI Application Block. El mecanismo se me hace mmmuuuyyy chido, eso de la guía paso-por-paso y que te vas pa'trás, pa'delante y así te mueves, con soluciones preconstruidas donde vas agregando código que viene en la guía.
Es similar a lo que se usan en los cursos de certificación pero con esteroides.
En particular este conjunto de laboratios se enfocan al CAB, que es uno de los Application Blocks más esotéricos que han liberado (a mi gusto). Te presenta varios temas, desde los WorkItems pasando por la distribución ClickOnce hasta extender el mismo CAB.
A lo largo de los laboratorios es notable el uso de la técnica IoC/DI tan famosa ultimamente. En el caso de .NET la mayor parte se hace decorando mediante atributos los objetos que participan en la DI. En el fondo... muy en el fondo se encuentra ObjectBuilder, el componente que se encarga de hacer posible la DI y que también se usa en la Enterprise Library.

Notas acerca de PartnerApi

Hace algunos posts publiqué que estaba construyendo un API para encapsular las llamadas a las funciones del API de AppExchange. He tenido algunos lentos pero seguros progresos y ya conseguí devolver una lista de objetos encapsulando la llamada al método query() de AppExchange. Ahora estoy planeando los siguientes métodos para completar el conjunto de operaciones ABC (Alta, Baja, Cambios) en PartnerApi.

Estas son las firmas de los métodos que se van a implementar:

  • Insert(sObject) => (1)
  • Insert(IList sObjects) => (m)
  • Update(sObject) => (1) update by Id
  • Update(IList sObjects) => (m) update by Id
  • Delete(sObject) => (1) delete by Id
  • Delete(criteria) => (0..m) delete by condition
  • Delete(IList sObjects) => (m) delete by Id

La idea es tener siempre una versión que afecta un solo objeto (1) y la versión que afecta varios objetos (m). En las operaciones de Update y Delete es obvio que se puede establecer una relación directa con el objeto que se va afectar mediante el uso de Id. En el caso de la operación Delete se añade el caso adicional donde especificamos la condición que debe cumplirse para eliminar el objeto de la BD de AppExchange.

También falta por construir un método de conversión de un PartnerApi.sObject a un AppExchange.sObject. Es decir, se consulta a AppExchange y nos devuelve una colección de sObjects en su formato nativo. En PartnerApi se expone una clase que encapsula de una manera más natural los atributos de la clase y ahora se requiere un método que la regrese a su formato original, algo así como AppExchange.sObject => PartnerApi.sObject => AppExchange.sObject en donde cada => se debe entender como conversión.

Finito.

viernes, julio 14, 2006

¡Microsoft Virtual PC ahora es gratis!

Con el asunto de WinFx, ahora .NET 3.0, el Beta 2 de Vista y demás ejercicios de avanzada que demandan equipos para instalaciones, equipos que no están disponibles la única opción viable es la virtualización.

En una máquina virtual tu puedes hacer y deshacer pagando una pequeña penalidad de desempeño. La instalación no te la quitas de encima y si estás instalando alguna versión de Windows, todas las actualizaciones a la fecha. Pero al final tienes un ambiente para ejecutar todos las liberaciones Betas sin preocupaciones ni conflictos.

La principal oferta en este aspecto la venía haciendo VMWare, que ofrece toda una línea de productos orientada a la virtualización de equipos soportando una variedad de sistemas operativos (Windows, Linux, Solaris, Vista). Y hace medio año aproximadamente, lanzaron un producto, VM Player para simplemente ejecutar máquinas virtuales creadas con cualquiera de sus productos. En el ambiente Open Source también se ha apostado de alguna manera por este concepto y ofrecen (Fedora/RH en particular) un kernel llamado Xen que muchos critican por que no una virtualización total.

A todo esto, Microsoft tambien le entró a la onda de la virtualización adquiriendo una compañia, raro ¿no?, que se estaba abriendo paso y con los fondos virtualmente ilimitados de Redmond terminó convirtiendos en Virtual PC junto con su hermano mayor Virtual Server. El éxito del producto fue moderado aunque puedes ver a la maoyría de los expositores Microsoft hacer uso de este producto en sus demostraciones y exposiciones.

Realmente es genial poder encender una máquina de pruebas juguetear (thinker around) en nuevas herramientas y sistemas operativos sin tener que darle en la torre a tu equipo de todos los días. Adios a los temores de las BSOD, a los reformateos y conflictos en las instalaciones.

En lo particular he disfrutado más de VMWare. Se me hace más maduro, eficiente y portable. También he probado VPC y ahora con la característica de gratis va a inundar el mercado. VPC es lento, no es tan portable (cuando me refiero a portable se trata de lo siguiente. Crea una máquina virtual en la oficina, aprovechando la banda ancha descarga y aplica todos las actualizaciones. Copia esa VM a tu disco duro externo, llegas a casa, arrancas tu VPC y ¡nada! no funciona, cosa que no sucede con las VM de VMWare) pero es gratis. ja.

¿Quién podrá explicar como es que con la piratería, las demandas y las multas de la UE, Microsoft se da el lujo de tomar este tipo de decisiones?

Finito.

miércoles, julio 12, 2006

López vs. López

Hace unos momentos en el noticiero de la noche, López Obrador estuvo con el anfitrión, López Doriga.

Desde el inicio del programa se tocaron las notas del día relativas al inconcluso proceso electoral. Una nota muy personal, con nombre y cara fue la relacionada con el supuesto embarazo de urnas electorales en Salamanca, Guanajuato. El presidente de la casilla, estudiante de ingeniería y maestro de secundaria, rechazó categoricamente que el hecho tuviera el sentido que le ha querido dar el equipo de López Obrador. La representante de la Coalición por el Bien de Todos resumió en una frase su posición: "Si hubiera estado mal no hubiera firmado". Más adelante AMLO declara que si fue posible comprar votos, seguramente fue posible comprar representantes.

Ya en el enfrentamiento, López vs. López, López Doriga "El Teacher" lanzó el primer jab con una sección de la visita de AMLO al estudio en el cual declaró categoricamente que sería respetuoso del resultado de la elección. Del dicho al hecho, hay una respuesta digna de los mejores púgiles: "Voy a respetar la democracia y el 2 de julio no hubo democracia". Palabras más, palabras menos. Señala una vez más que fue una elección de estado, que si bien hubo una extensa participación ciudadana, también se aplicaron los métodos de la vieja escuela para revertir los resultados de la elección que declarar convencido haber ganado. "Gané y es mi palabra".

"El Teacher" siguió aplicando ataques a las zonas sensibles sin conseguir mucho éxito. AMLO dió muestra de la experiencia y tozudez propia de su estirpe. Una de las partes que más dió emoción al encuentro, fue la sútil descalificación, impropia de AMLO, de López Doriga. "Tu opinión es muy respetada pero no la comparto". En otras palabras: nada de lo que digas importa, sé que vas a tirarme a matar y no me voy a dejar.

El segundo revolcón lo consiguió AMLO al replicar sobre el asunto de la casilla de Salamanca. "Cualquiera que ha sido funcionario de casilla..." fue el inicio de la réplica de López Obrador. López Doriga solo pudo esquivar saltando al tema de la impugnación en el cual por más que "El Teacher" se lanzó a matar, AMLO se aperró, perdón, aferró a que no pretende invalidar la elección. No soy abogado y este es una de los momentos que quisiera serlo.

El cierre fue una pregunta directa: "¿respetará López Obrador el veredicto del TRIFE cuando ya anteriormente se comprometió a acatar el resultado del IFE y no lo hizo?". Dice que sí. Yo no le creo.

Finito.

jueves, julio 06, 2006

La victoria de la derecha

Se terminó finalmente el conteo de las actas en los Distritos Electorales y resulta que el candidato de derecha, Felipe Calderón consigue llevarse por un mínimo margen la mayoría quedando en segundo lugar el candidato de la izquierda Andrés Manuel López Obrador.

Este conteo, al contrario de lo que la mayoría cree, es el proceso formal y previsto para determinar el número de votos otorgados a cada candidato. No es el resultado de atender ninguna petición, ningún reclamo. El siguiente paso es entregar los resultados obtenidos al Tribunal Electoral para que sea éste órgano el encargado de otorgar la constancia de mayoría al candidato ganador.

Es ilusorio pensar que al ir corroborando las cuentas no se fue haciendo la suma de los votos. Tal es que tenemos al resultado previo, no oficial, que nos señala lo que ya conocíamos pero que la oposición se ha pertrechado en desconocer. La victoria de la derecha. Sin embargo en un afán incongruente con lo manifestado anteriormente, la izquierda pretende impugnar el resultado del conteo. Están en su derecho aunque definitivamente lo están haciendo con el mínimo de responsabilidad.

AMLO ya ha convocado a un mitín el próximo sábado ¿para qué? Es imposible descifrar el motivo de fondo. Lo único que consigue es agitar el polarizado entorno existente y confundir al mal informado (al fin y al cabo, mayormente hijos de López Obrador) pueblo mexicano. Le encantan los escenarios al Sr. López Obrador, mejor debiera ser conductor o actor.

Esperemos a ver cuales son en detalle las denuncias que van a realizar. Seguramente proporcionarán un gran tramo de tela donde cortar.

Finito.

miércoles, julio 05, 2006

¡Ya'stuvo! ¡Ya'stuvo!

Por fin quedó la instalación de Team Foundation Server en el servidor de pruebas. Incluso ya instalé Team Explorer en mi PC. Bien chido.

Ya cree mi primer Team Project con la plantilla MSF Agile y me creó el bonche de WorkItems... solo falta que recuerde que sigue... a revisar los apuntes del Workshop que tomamos a principio de año con el buen Beto Borbolla.

Después de esto, me tomé un momento de relax viendo los anuncios de Apple. Si bien toda la vida (laboral) he usado PC con algún SO de Microsoft, también he visto como han ido desfilando las diferentes variedades de equipos de Apple, algo que siempre han tenido en común ha sido el magnífico diseño. Los únicos que se han esforzado para aplicar algo de diseño ha sido Sony con su línea Vaio. De ahi en fuera pura consumer design.

En otros temas, sigue el conteo en los Distritos Electorales. En este recuento sigue llevando la delantera el candidote AMLO. Sin embargo la fuente que consulto bien claro agrega la siguiente leyenda:

Es necesario subrayar que los resultados pueden cambiar en cualquier momento y que por tanto no marcan ninguna tendencia.

¿Esperan acaso un milagro? ¿o están planeando alguna táctica descontadora? En lo particular no me agrada en lo más mínimo ver que AMLO llega a la presidencia. Ahora todas las víctimas del sistema van a reclamar lo que les corresponde por su condición ¿? No sabía que tener la desgracia de carecer de recursos te hace dueño de los beneficios que creamos una mediana parte de la sociedad. Deja me declaro en bancarrota y me convierto en un desprotegido hijo de López Obrador.

Finito.

Puras fallas

Sigo con el ejercicio de instalar VSTS no sin algunos desaciertos. Hoy impetuosamente me decidí a terminar la instalación y agarré mi disquito y me senté. Embriagado de contento inicié el clásico next, next, next para encontrar con el primer error: SQL Server no tenía activado el acceso a conexiones TCP/IP ¿¿¿??? ¿qué pex?

En el mismo impetuosismo, instalé originalmente una versión de evaluación de SQL Server 2005, así que asumo que por su naturaleza no debieras usarlo como se debe usar y pues viene con esa característica desactivada. No problema. Vas al SQL Server Configuration Manager y le aplicas el cambio.

Agarras el mouse y empiezas de nuevo: next, next, next... ¿y qué crees? ¡nnnoo! pus si... Otro error :-( Ahora resulta que el collation no era el correcto. Bien dicen RTFM pero no, ahí vas con el "next, next, next". Pues resulta que debes tomar en cuenta lo siguiente para seleccionar el correcto collation (son puros "no's"):

  • No soporta Accent Insensitive
  • No soporta Binary ni Binary2
  • No soporta Case Sensitive

Bueno, entonces ¿qué si soporta? Case Insensitive + Accent Sensitive y por si las moscas, púchale los check boxes pa'que soporte Hiragana/Katakana.

Pero lo tenía incorrecto, ¿cómo lo configuro al correcto? No pus ya te fregaste.... Bueno al menos es solo una prueba, pa'eso son, pa'regarla. Desinstalo SQL Server y ahora hago lo que debí haber hecho desde el principio.... Instalo el SQL Server 2005 con su licencia. Next, next, next...

Ahora otra vez con el VSTS... next, next, next.... ¡Oh! ¡no problema! Todo va excelente hasta que llegas a una ventana del wizard que dice: Service Logon Account ¡Chale! Pus le pongo la toda-poderosa-cuenta.... ¡Pelas! Nanay, no puedes usar la cuenta con que estás instalando.... Otra vez al pinky manual... ¡orales! Necesitas al menos otras dos cuentas de dominio TFSSERVICE y TFSREPORTS y si quieres verte chido, también TFSPROXY.....

Pus orale... a solicitarlas y a sentarme a tomar el fresquito del aire acondicionado.....

Finito.

[OFF-TOPIC]

Lo cuatitos de iBATIS liberaron hoy la siguiente versión en Beta de la versión .NET que entre otras cosas incluye el soporte a la versión 2.0 del framework ¡orales!

domingo, julio 02, 2006

A la cama sin un ganador

Justo acaba de dar su anuncio el titular del IFE en el cual señala que debido al escaso margen de diferencia entre los candidatos punteros, no es posible anunciar tendencias en los resultados dado que estos pueden variar.
A muchos les podrá parecer un esfuerzo por maquillar las cifras. Pudiera imponerse un resultado mediante maquiavélicas maniobras. Un escenario más para confirmar lo que a gritos ha venido anunciando la oposición: una elección de estado.
Ésta es mi segunda elección presidencial en la que participo como votante. Y he de reconocer muchos cambios, desde mi confirmación derechista y conservadora, muy distante de la izquierda radical que en mi temprana juventud manifesté. Pero el cambio que más me sorprende es la incertidumbre, la real indefinición que flota en el ambiente.
En este momento estoy escuchando al candidato de la izquierda, AMLO, que anuncia que aunque ha manifestado que respetará la decisión de las instituciones, se declara ganador debido a la información que posee. Ofrece convocar a un acuerdo nacional que involucre a todos los individuos y organizaciones. Una invitación franca según su dicho.
Sin embargo, el IFE tendrá que emitir el resultado final. Y a eso tendremos que atenernos todos los mexicanos (y mexicanas, claro).
Para mí no me queda clara la real tendencia de esta elección como dije anteriormente. Sin embargo, me parece saludable y se me antoja que le da un alto grado de confiabilidad al proceso de elección en si mismo.
Ahora estoy escuchando al candidato de la derecha, Felipe Calderon, que en su declaración anuncia el mismo sonsonente que su principal contrincante: somos ganadores. La supuesta ventaja son los resultados arrojados por diferentes encuestas de salida levantadas por empresas contratadas ex-profeso. Defiende sus resultados, remarca su victoria. Comparte sus felicitaciones a los gobernadores electos de su partido. Hace un breve esobozo del camino a seguir su gobierno.
Finalmente escuche el comentario del líder del PRI el cual pide que se respeten los tiempos definidos por el IFE. Ya sabe que se le avecina una tormenta. La caída total del partido. Ojala que recuperen lo bueno de lo perdido.
Esto sigue sin cerrarse.
Finito.

sábado, julio 01, 2006

Fábricas de Software - la otra visión

Cuando oímos el término fábricas de software generalmente nos imaginamos un espacio enorme con largas filas de desarrolladores que se extienden hasta el infinito con lámparas colgando sobre cada línea y el incesante repiqueteo de las teclas.

Pero es solo imaginación. La propuesta para hacer realidad es muy diferente. Jack Greenfield es su artículo "The Case for Software Factories" expone las razones que motivan la aparición de las fábricas de software. La incesante demanda de software, aún y cuando es una de las actividades más riesgosas en términos de tiempo y dinero, requiere de nuevos modelos de construcción de aplicaciones. Esta necesidad en ascenso requiere de una fuerza de trabajo que sea cada vez más productiva y se señala que el modelo de "maestro-aprendiz" que ha prevalecido no será capaz de generar los ejércitos de desarrolladores y que aún teniendolos más que demostrado queda que la solución no es agregar y agregar personal a los proyectos.

La industria del desarrollo de software ha pasado por esto antes y lo ha intentado resolver de muchas maneras (CASE, metologías formales, OOP, etc) pero llega el momento en que son rebasadas por la realidad y es necesaria una revolución en lo más profundo para continuar en el negocio.

Cada una de las revoluciones anteriores han ido aumentando el nivel de abstracción con el que trabajamos. Se ha ido desde bit por bit a lenguajes, de funciones a clases y métodos, de programatico a declarativo. Se puede representar esto como una torre en la que el siguiente piso permite manipular conceptos más abstractos, más despegados del hardware que el piso anterior. Sin embargo existe una diferencia de velocidad entre el avance de la plataforma, es decir el hardware, y las herramientas. Estamos en un punto donde las herramientas y procesos de desarrollo se han quedado estancadas y atrás en relación a la capacidad de cómputo disponible y sobre todo de las exigencias de los consumidores.

Haciendo un símil muy recurrido con la industria de la electrónica, Greenfield hace una comparación dura y directa: los chips actuales no se construyen transistor por transitor, ya existen componentes predefindos que sirven de base y que sin esfuerzo permiten tener en el mercado los productos demandados por los consumidores.

La pregunta de oro es ¿se puede automatizar el desarrollo de software de la misma manera? Se dice que sí y de hecho ponen como muestra SQL y las bases de datos. Mediante una estandarización se ha conseguido beneficios como la integración de datos y cierto nivel de independencia que consiguen hacer el acceso a datos más fácil y consistente. También se refieren a las interfaces gráficas. Al final se identifican algunos patrones recurrentes:
  • La repetición en la construcción de aplicaciones se identifican abstracciones reutilizables que se documentan y se aprovechan en desarrollos subsecuentes.
  • Después se construye un framework o engine para implementar estas abstracciones y patrones. Esto permite construir aplicaciones simplemente creando instancias, adaptando, configurando y conectando entre sí los componentes de este fx.
  • Finalmente se define un conjunto de herramientas y lenguajes para automatizar el proceso de construcción. Con esto se consigue reaccionar más rapidamente a los cambios ya que mucho del esfuerzo es automatizado y puede regenerse sin mucho esfuerzo.
Otras industrias aumentan su capacidad de producción moviendose a un proceso de manufactura en lugar del proceso artesanal individual o en pequeños grupos. En el proceso masivo se arman variantes de un mismo producto usando piezas genéricas de distintos proveedores y existe maquinaria para los procesos más simples y repetitivos. Se estandarizan procesos, diseños, empaque usando líneas de producto para facilitar la reutilización sistemática y al final, cadenas de suministro. Para poner en concreto lo anterior pénsemos en la industria automotriz. Hacen una implementación donde existen productos con algunas variantes (estándar, equipado, lujo) y se producen rápidamente (120 autos en 8 horas) y un rango de precios adecuados para su mercado.

Se han hecho analogías entre el software y otros bienes. Finalmente se reconoce que el software es similar a productos físicos o tangibles resultado de otros tipos de ingeniería tales como puentes, edificios y computadoras. Sin embargo existen importantes diferencias que le otorgan al software caraterísticas únicas. Al ser un ente lógico, abstracto, sin representación física, los costos se concentran en el desarrollo más que en la producción y debido a que el software no se desgasta ni acaba, su calidad depende de cualidades abstractas como fiabilidad y consistencia en lugar de durabilidad y resistencia.

El poder reutilizar componentes, cuyo desarrollo es caro, debe hacerse en un marco que permita aprovecharse en más de un producto dentro de un dominio (usar un mismo motor en más de un modelo de auto).

La reutilización sistemática da lugar a economías de escala y de alcance (scope) que son bien conocidas y aprovechadas en otras industrias. Las economias de escala aparecen cuando múltiples instancias identicas de un mismo producto se fabrican en masa en lugar de individualmente. A partir de un diseño original se crean prototipos (diseño), se refinan mediante procesos de ingeniería (desarrollo) y finalmente se fabrican masivamente (producción) mediante maquinaría o línes de producción de bajo costo (obreros) para satifacer la demanda. En el modelo de la economia de alcance se utilizan las mismas prácticas, procesos, herramientas y materiales para diseñar y crear prototipos de productos similares que se comercialzaran con algunas variantes.

La industria de software presenta importantes diferencias con las industria automotiva o electrónica pero se pueden encontrar algunas similitudes.
  • En el mercado de consumo masivo como aplicaciones de escritorio en el cual sistemas operativos y suites de oficina se producen en grandes cantidades, el sofware se comporta como una economia de escala, similar a la industria automotriz.
  • En el mercado empresarial en el que aplicaciones de negocio verticales no consiguen producirse masivamente, el software se comporta como una economia de alcance tal como la industria de la construcción.

¿Cómo se implementan estas prácticas de industralización en el desarrollo de aplicaciones? Si bien no existe una respuesta definitiva ya se están realizando esfuerzos para complementar los ambientes de desarrollo existentes. Microsoft dentro de su producto Visual Studio Team System ha aprovechado los esfuerzo que se han venido realizando en el equipo de Patterns & Practices. El resultado de esta estrategia se llama Guidance Automation Toolkit que es una extensión de Visual Studio 2005 que permite a los arquitectos y desarrolladores aprovechar los gadgets incluidos en los software factories para automatizar tareas claves del desarrollo desde el ambiente de Visual Studio.

Recientemente se han dado a conocer algunas software factories entre las que se incluyen la Smart Client Software Factory y la Mobile Client Software Factory. También existen otras factories que están desarrollo, por ejemplo la Web Service Factory que justo acaba de anunciar un último Community Drop.

En el Arquitecture Journal se publico el artículo A Software Factory Approach To HL7 Version 3 Solutions que fue el detonante para interesarme por este tema debido a que en el trabajo tenemos un área que procesa mensajes de HL7 mediante WebLogic Integration.

Finalmente, Haaron González expusó ayer en la Comunidad.NET del D.F. el tema Fábricas de Software de Cientes Inteligentes, lástima que olvidé la fecha y no pudo asistir.

Finito.

jueves, junio 29, 2006

Instalando Visual Studio Team System

Entre tantas cosas que no se habían hecho aunque si planeado, está la instalación de Visual Studio Team System (VSTS). El primer punto a resolver fue ¿qué carajos es VSTS? Obviamente solo la paciente lectura de más o menos 10,005 aburridos documentos me dió una pista. VSTS es un concepto. :S ¿Cómo?

Bueno, a mí me pareció más fácil verlo como un concepto. Lo traté de digerir de la siguiente manera: Exchange es el servidor de correo, Outlook es el cliente de correo. El problema aquí es que VSTS no es el servidor, en realidad el servidor se llama Team Foundation Server (TFS) ¡aahhh!

Además tenemos versiones cliente del ya conocido VS, son las versiones Team System entre las que se incluyen el recién publicado Database Professional, Architect, Developer, Tester y Project Manager. Cada uno para cada cual, lo que a la fecha no entiendo es por que tenemos como mil instalaciones de Developer y unas cuantas de las demás versiones (joke).

El sitio donde de plano le encontré sentido a todo esto fue en Installation and Administration of Team Foundation Server donde empecé con los requerimientos de harwdare (¿podrá correr en mi celeron 500 Mhz/64MB RAM?) y "planear" al tanteo nuestro ambiente de instalación. Fueron de gran ayuda los posts de Rob Caron y un par de documentos que en la misma página se pueden descargar.
A la conclusión que llegué es que de inicio vamos hacer una instalación en un solo equipo, nomás pa'ir calando la guía de instalación, que por cierto se me hace harto útil, la pueden encontrar en http://www.microsoft.com/downloads/details.aspx?FamilyId=E54BF6FF-026B-43A4-ADE4-A690388F310E&displaylang=en.

Es un archivo help que trae paso a paso las actividades necesarias para realizar la instalación. Por diversas causas todavía no termino, pero estoy seguro que antes de irme de vacaciones queda.

Para la instalación de producción tenemos planeado hacer una instalación en dos servidores. En primer lugar por que tenemos un mounstrito IA-64 queriendo ser usado y en segundo por que con eso de que no podemos tener el TFS en 64 bits (o al menos, no lo garantizan) vamos a tener SQL Server 2005 en IA-64 y TFS en un servidor normalito.
Ya veremos como termina este asunto.

martes, junio 27, 2006

Refresh masivo

Han sucedido algunas cosas en estos días ¿cuáles? puedo enumerar las siguientes:

Lo de la salida de México del Mundial... ya pasó... ni modo. Ahora para que se cumpla mi quiniela Argentina debe ganar la Copa.
Blaze Advisor ya no es una caja negra. Tome los cursos de "Fundamentals", "RMA" y "ARS". ¿Qué aprendí? A crear reglas, a usar metáforas de reglas (árboles de decisión, score tables, decision tables), a parametrizar reglas, a generar la interfaz web para los usuarios (RMA), a generar los servidores de reglas (ARS) y como usarlos dentro y fuera de contenedores J2EE (léase servidores de aplicación). Lo único malo es que fue debút y despedida. Mucho estudio, poco uso.
En relación a NHibernate, continué con mi ejercicio de definir relaciones padre-hijo para encontrarle sentido. Y aunque ya le he encontrado el modo, también aparecieron cosas que no me han gustado del todo. Eso me hizo colgarme un poco de iBATIS.NET pero todavía no le agarró cariño.
Y lo que creo que es más interesante. El AppExchange Connector.
Hace ya un par de años, desarrollé un proceso de integración entre salesforce.com y un ERP. Ahí me encontré por primera vez con servicios web "reales". Trabajé como tres meses en eso pero me quedó la inquietud de crear una biblioteca de clases que facilitara y sobre todo, generalizara, el uso de el API publicado por salesforce.com. Como un esfuerzo de generar una comunidad de desarrolladores han creado entre otras cosas, proyectos open source entre los que se incluyen un adaptador ADO.NET.
Lo que pretendo ofrecer no es un conector de este tipo sino una alternativa a generar sentencias de pseudo-SQL y aprovechar lo que ellos llaman la Partner API.
Inicié el desarrollo con .NET 1.1, hice un intento de construir una versión paralela en Mono, pero por diversos errores no lo conseguí y dejé abandonado el trabajo en esto. Un par de días atrás me preguntaron por el status del proyecto y eso me hizo reflexionar y decidir que iba a continuar y tomé al menos una decisión importante al respecto. Todo el desarrollo que venga a continuación se va hacer sobre .NET 2.0.
La plataforma ya está liberada e incluso ya ha sido objeto de los embates de mercadotecnia de los directivos de Microsoft, que ahora resulta que la combinación .NET 2.0 y WinFx (el ambiente de desarrollo de la siguiente generación de Windows) se llama .NET 3.0.
Este cambio de mkt, sirvió para iluminarme y tomar esta decisión. No me puedo quedar así. Quiero seguir evolucionando con la plataforma.
Veamos pués, que nos depara el futuro.

martes, junio 13, 2006

Bolsitas para la baba...

¡De verda' que a veces se nos van las cabras bien gacho!

Ayer estaba retomando un proyectín que tengo medio apagado y revisaba los fuentes con Vim para refrescar mi memoria cuando...



¿Qué onda? ¿Qué $%"#$"$"" le pasó a mi código? Empecé a debrayar y a imaginar cuanta tontería se me iba ocurriendo: que si falló el usb, el SVN, el usuario, etc.

Lo curioso fue que si abría el mismo archivo en Visual Studio .NET 2003, no había ningún problema...


¿Qué misterio había detrás? Estaba completamente perplejo. Después simplemente quedé como pende,0....

Existe la opción para cambiar el encoding de los archivos: File, Advanced Set Options y en esa caja de diálogo se cambia al tipo que deseamos usar:

Guardamos de nuevo el archivo y asunto resuelto....

jueves, junio 08, 2006

Sitio de Arquitectos WannaBe

Hoy me llegó una invitación para la Comunidad Empresarial de Arquitectos de Microsoft México. Son reuniones donde sin entrar en mucho mercadeo, tratan temas de arquitectura. Al menos eso me han dicho, ya que a la fecha no he asisitido a ninguna. ¿Por qué? Simplemente por que las reuniones generalmente son en el Club de Empresarios Bosques y su estricto código exige a los visitantes vestir saco y corbata.
Seguramente Microsoft no se va a acabar por que no asista a esas reuniones. Pero creo que habría una mayor asistencia si se realizaran en lugares menos exclusivos.
En la invitación viene una liga a un sitio muy interesante: Skyscrapr, una comunidad de wanna-be's en arquitectura. Chequen el video introductorio: http://www.skyscrapr.net/blogs/video/archive/2006/03/10/46.aspx

viernes, mayo 19, 2006

Da vergüenza

Todos los días uso el metrobus para llegar al trabajo. Lo abordo desde su terminal en Indios Verdes lidiando con trogloditos y trogloditas, hijos e hijas de López Obrador, que sienten que su "oprimida" condición les da derecho a no comportarse en orden. La batalla llega a tal grado, que prefiero dejar pasar uno, dos, tres, cuantos trenes sean necesarios para evitar en lo posible, despotricar contra un elegante trajeado con lagañas o una gorda perfumada con el maquillaje de ayer.
Finalmente consigo un lugar y voy sentado mirando por la ventana del metrobus. Coches, gente, edificios. Sobreviviendo a emisiones flatulentas y sobacales. Tratando de sobrellevar al clásico güey que se hace espacio y ¡ay de aquel que le reclame! - "Si no te parece vete en taxi". ¿Quién iba imaginar que una de mis frases más usadas me suene hoy a estupidez?
Sin embargo, esta semana sucedió algo fuera de lo común. En la ruta del metrobus cruzamos Reforma e Insurgentes, justo donde se encuentra el campamento de los manifestantes de los 400 pueblos. Esta semana retomaron su manifestaciones en carne viva. Y eso fue lo que hizo que la mayoría de los pasajeros del metrobus coincidieramos en algo. Conforme avanzabamos la vista se lleno de hombres solo en calzón y de mujeres desnudas en la base de la estatua de Cuauhtemoc. No pude soportarlo y baje la mirada. Se me ocurrió ver a los demás y reaccionaron de igual manera.
Es vergonzoso. No por la desnudez de esas personas. Si no por que atentando contra su dignidad, protestan contra las vejaciones que han sufrido. No imagino que cosas son capaces de motivarte a desnudarte en un lugar público. Y es vergonzoso por que a la fecha, no tengo noticia de que les hayan resuelto algo. De que haya alguien en el gobierno, estatal y/o federal, que no haya hecho las acciones necesarias para atender sus peticiones, en la medida que sean legítimas y razonables. Vergüenza de nosotros, espectadores, que simplemente agachemos la mirada y no hagamos más. Eso si debe de darnos vergüenza.

lunes, mayo 15, 2006

Usando NAnt con Mono bajo Windows

Creo que más de uno han batallado para hacer funcionar NAnt con el ambiente de ejecución de Mono.

La solución que propongo es la siguiente:

  • En el archivo NAnt.exe.config, buscanos la sección en la cual se define el ambiente para "mono-1.0"

  • Casi al final, lindando con la definición de "mono-2.0", encontramos las siguientes definiciones:
    <!-- determine if we're NOT dealing with a Mono 1.0.x release -->
    <if test="${version::get-major(version::parse(defaultCLR)) != 1 or version::get-minor(version::parse(defaultCLR)) != 0}">
    <!-- in Mono 1.1.x (and higher ?), the framework tools are located in the <installroot>\lib\mono\<profile> directory -->

  • Las líneas importantes son estas:
    <!-- property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" / -->
    <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />


Como se puede ver, en lugar de usar el valor de frameworkAssemblyDirectory, se sustituye por sdkInstallRoot y de agrega el sufijo 'bin/' a la ruta para llegar a mono.exe
Esto me funcionó para Mono 1.1.13.6 y 1.1.15 con NAnt 0.85.1932.0; rc3; bajo Windows XP-ESN

martes, mayo 09, 2006

Como desperdiciar un fin de semana

El viernes recibí un obsequió inesperado. La versión Beta 2 de Windows Vista y se me encendieron los ánimos de probarla, de llegar a casa e instalarla. Aunque tengo un par de proyectos personales en proceso, pensé que valía la pena desconfiguar la laptop para probar el nuevo juguete. Llegué cansado a casa y no hice más, de cualquier manera me esperaba un largo fin de semana.
Aprovechando el sábado para levantarme tarde, me desperté con una idea que se fue creando en mi mente a lo largo de la noche. Tengo por ahí una vieja laptop Celeron con 64 MB de RAM y 6 GB en DD. "Perfecta para Linux" - pensé. Que viejo se vuelve el HW de repente. Una de las versiones que me interesaba probar, Gentoo, requiere al menos 128 MB de RAM para instalarse. Knoppix requiere 96 MB si quieres que trabaje con un ambiente gráfico. No conseguí levantar más que Knoppix en una sesión en cámara lenta
Mientras tanto, Windows Vista se instaló en mi laptop (Pentium 725 1.6Ghz, 1.25 GB RAM, 80 GB en DD). Terminé los detalles de personalización ¡y a jugar!.... Bueno, eso pensé yo, al navegar por la configuración del sistema operativo, encontré un vista donde "calificaba" lo apropiado del HW para correr Vista. En una escala del 1 al 5, mi laptop, mi equipo más moderno calificó con UNO. ¡Oh decepción! Aún así me aferré un rato e instale el Visual Express C#. No tanto problema, solo la espera por la descarga y la instalación. Nada del otro mundo. Todo esto lo hice conectado por cable al modem-router, ahora seguía probar la configuración WiFi. Creo que lo conseguí pero nunca funcionó. Encontré que Vista instala IPv6, chicos previsores los de Redmond
Decepcionado, regresé al viejo y conocido XP :(. Ya saben, instalación del SO, instalación del SP2 y de todas las actualizaciones del año. Harto aburrido. Terminé la instalación y mis actividades del día y me fuí a dormir.
Con todas estas instalaciones, obviamente se perdió el arranque dual de Windows y Fedora, así que pa'variar, me faltaba instalar mi partición Linux. Tenía a la mano los cd's de instalación de Open Suse 10.0, así que dije "¿por qué no?" Y empecé la instalación. Algo larga por los 5 cd's. Bonito KDE. Mono "out-of-the-box". No sound.
Mi laptop se quedó muda. Y como me encanta el escándalo, tristemente dije "no" a Suse y regresé a FC4. Y va de nuez. Instalar, configurar y dije "¿qué tal si la actualizo a FC5? ¿por qué no?"... Y actualicé el kernel, kudzu y los initscripts... por ahí saltó un error pero no hice caso... craso error. Al reiniciar el equipo simplemente se quedó en blanco.
Y va de nuez... ahora estoy pensando seriamente en descargar el DVD de FC5, pero mientras de nueva vuelta instalé y configuré FC4, no actualicé nada, simplemente le instalé los paquetes de Mono y ya
Moraleja: No desperdicien su fin de semana instalando SO's.

viernes, mayo 05, 2006

BEA Dev2DevDays -México

Hoy se realizó el día Dev2Dev de Bea, un evento que reune a desarrolladores Java que trabajan con herramientas BEA, principalmente con la línea de productos WebLogic. Bajo el slogan de "Create. Innovate. Blend". La estrategia de BEA, es ofrecer sus productos integrando componentes Open Source de manera que la productividad del desarrollador aumente, las aplicaciones dejen satisfechos a los usuarios y todos contentos :-) .

Las presentaciones giraron alrededor de la integración de Spring, Hibernate y del nuevo entorno de desarrollo basado en Eclipse. Tocaron algo de Ajax, también hablaron de EJB 3.0, Kodo y JSF's. También promocionaron la comunidad en línea dev2dev; como dato curioso estuvo la nota de que O'Reilly está como editorial detrás del sitio. Hubo quienes vieron como novedad esta integración de software propietario y comercial. Hay quienes lo ven como algo de todos los días. La impresión que me quedó es que hay gente que realmente está clavada en estos y poseé conocimientos profundo del tema. De hecho, uno de los asistentes anunció un sitio bastante interesante: http://www.springhispano.org.

Lo más significativo para mí, es que este evento marco dos años de trabajo con WebLogic y la tecnología Java. Estos dos años han sido de aprendizaje sobre algo que siendo un desarrollador .NET de corazón continuamente nos lo presentan como el enemigo. No todo se resuelve con un martillo, hay otras herramientas muy útiles. En lo personal, creo que la habilidad del artesano, más que las herramientas, determina el resultado. No por poder usar un pincel me convierto en Van Gogh. En  fin, dos años durmiendo con el "enemigo". Han sido noches muy envidiables. ;-)