domingo, 18 de septiembre de 2011

De romance con Lenovo y Dinámica

Lenovo K330: la nueva estación de trabajo de Dinámica

OJO: ver actualización mayo 2012 al final.

Llegó el momento de renovar nuestras computadoras de escritorio para crear las próximas versiones de Dinámica, no es solo una compra sino también una inversión. Una cosa tengo claro, nada de comprar piezas y mandar a armar "a la medida", nunca quedé satisfecho con el resultado. Esta vez compramos marca de calidad, Lenovo. A la hora de revender también saldremos mejor parados si es de marca.

Lenovo tiene mejores precios que HP, aunque esta última era nuestra primera opción, buscando en Amazon (en Venezuela estamos un poco limitados a comprar en Amazon por cuestiones de billing address) conseguí que Lenovo también ofrecía mejores opciones, por ejemplo: HP vende por Amazon lo que en apariencia son muy buenos PCs de escritorio, pero con discos de 5200RPM! no tiene sentido. En cambio las PC de Lenovo vienen con configuraciones más "honestas", por decirlo así, y con una diferencia de precio sustancial.

Hay otro punto a favor de Lenovo: su fuerte integración con Windows en la forma de una ventaja llamada Windows Enhanced Experience, que hace que Windows 7 funcione más rápido, sobre todo en el arranque. En algunos modelos seleccionados viene también con un disco SSD que permite implementar una técnica propietaria de Lenovo llamada RapidDrive y provee un tiempo de respuesta instantáneo para levantar aplicaciones. La navegación y funciones de red también se sienten más rápidas.

El modelo seleccionado por nosotros es el K330 77274HU, que viene con un procesador Intel I7 2600 de 2da generación de 3.4Ghz que en modo turbo llega hasta 3.8, 12GB de RAM de 1333Mhz, un disco duro de 7200RPM de 1.5TB, una quemadora DVD y una tarjeta de video ATI RADEON 6450 con 1GB de RAM DDR3.

Está ensamblada de una manera muy limpia, la incorporación de nuevos componentes de hardware se realiza sin necesidad de herramientas, el interior es ordenado, sin enredos de cables, realmente impresionante el resultado final. Muy bien ventilada, super silenciosa, la más silenciosa que he usado, además de fresca, prácticamente no produce calor, su fuente de poder es de 280W.

Los componentes de la PC no se ven de lujo ni estrambóticos, al contrario, se ven muy modestos pero se percibe que Lenovo manda a manufacturar a la medida versiones OEM de todo lo que requiere para su plan de ingeniería que resulta en una PC rápida, silenciosa, fresca y de bajo consumo de corriente.

Los precios son muy dinámicos en estos días (agosto-septiembre 2011), la primera la compramos en US$999.- hace un par de semanas, la restantes en US$850.-, nada mal la rebaja. Otros modelos K330 de Lenovo también bajaron de precio en Amazon en días recientes.

Lo que no me gustó

Algo casi religioso en nuestro ritmo de trabajo es una partidita de Call of Duty WAW a todo tren al final de la tarde. Y aquí viene el punto débil de esta oferta de Lenovo: la tarjeta Radeon 6450 no tiene poder para juegos exigentes como COD WAW,  al menos no a resoluciones altas, lo que resulta decepcionante en una PC que se mercadea para Gamers y entretenimiento. La tarjeta se porta bien para todo excepto para juegos modernos, su índice de Windows Experience era bastante bajo, como de 5.0.

La fotografía que aparece arriba muestra la versión OEM de la ATI Radeon 6450, pues la versión OEM de Lenovo es aún más simple, sin conector DVI y más liviana, casi que parece "de juguete", pero es una muestra interesante de como Lenovo manda a modificar las piezas para lograr su concepto de PC ultra cool, aunque en este caso se pasaron de tacaños.

La cambiamos, pero no fue tan fácil, porque la fuente de poder es de 280W, muy baja, no puedes usar cualquier tarjeta de video, hay que seleccionar con cuidado y Lenovo no brinda información al respecto en su website de soporte. Finalmente dimos con la Radeon 5670 con 1GB DDR3, que por unos US$75.- brinda un desempeño bastante bueno sin perturbar el funcionamiento fresco y silencioso de este PC, y eso era importante para nosotros, no queríamos intervenir en nada el equipo, está perfecto salvo por la mala elección de tarjeta de video que hizo Lenovo. Hasta donde pude averiguar cambiar la fuente de poder de esta PC no es tan fácil, viene con unos conectores especiales para un selector de modo de operación que tiene el Case Lenovo en la parte frontal (Turbo, Auto, Cool). Lenovo no vende fuentes de poder alternativas para este modelo.

La Radeon 5670 que aparece en la foto de arriba a la derecha, viene con conector DVI, lo que nos permitió aprovechar la conexión digital de nuestros monitores de 22", y el índice de Windows Experience saltó de 5.0 a 6.8! Ahora el juego se siente realmente bien, considerando que la fuente de poder es de 280W, la máquina se calienta apenas un poco más solo luego de jugar, no durante la operación rutinaria, y no causa problemas de estabilidad. Es la tarjeta que esta máquina debió traer desde un principio, estoy seguro que además en una versión OEM especial para Lenovo se integraría aun mejor en este PC.



El teclado y el mouse podrían ser de mejor calidad, se sienten un poco baratos, podrían haber hecho uno parecido al que vende Microsoft, que no es nada caro pero su calidad y funcionalidad es notablemente superior, con teclas de acceso directo realmente útiles, como la calculadora, el navegador y los controles multimedia y de volumen, a diferencia del de Lenovo que no trae nada de eso.

Rectificación

Lenovo acaba de sacar nuevos modelos de la línea K330, con fuente de poder de 450W y de una vez vienen con una tarjeta nVidia GeForce GTX 460 capaz de correr eficientemente juegos pesados como COD WAW. Idénticos a nuestro modelo pero incluyen también una unidad Blueray y más espacio en disco duro, aunque son un poco más caros y no siempre están disponibles en Amazon, sino directamente en la tienda online de Lenovo. 

Conclusión

En lo personal yo puedo vivir con la fuente de 280W, pero la PC debió traer de una vez una tarjeta de video más potente y compatible con esa fuente de poder. Otra adición importante seria un disco SSD, haría realmente una diferencia mejorando aun más el rendimiento de la PC. Se le puede añadir, pero Lenovo podría haberlo incorporado de una vez de forma transparente con su tecnología RapidDrive sin impactar demasiado el costo, para disparar el rendimiento de Windows y de las aplicaciones más importantes (Eclipse, Java, Office, etc).

Cuando compras un PC de lujo como este no quieres estar perdiendo tiempo modificándolo, debería venir listo de fábrica para cumplir con las tareas para las cuales se mercadea, video games entre otras. Al menos Lenovo hizo los ajustes en los modelos poseriores que acaba de lanzar. De cualquier manera estoy muy contento, no tuve que gastarle mucho más para que tuviera el rendimiento que yo esperaba, y añadir un SSD rápido y confiable de 64GB  cuesta alrededor de los US$110.-. A los precios actuales de nuestro modelo, te termina saliendo como US$1030.- con video mejorado Radeon HD 5670 y SSD de 64GB, nada mal.

Recomiendo los K330, me quedo con Lenovo, aunque hay mucho que pueden mejorar, incluyendo su website y servicio de soporte. En mi nueva PC las máquinas virtuales de Linux y Windows XP corren muy rápido con VirtualBox, además podemos correr al mismo tiempo varios servidores de base de datos y todo el entorno Java de desarrollo, con Eclipse y Tomcat, y además levantar COD WAW y no quedamos estrechos de memoria en ningún momento. Por cierto hay espacio para llevarla a 16GB, no es nada costoso, solo hay que tener cuidado de comprar el chip correcto para ese modelo, nosotros conseguimos las memorias originales Samsung en Amazon y aumentamos la RAM a 16GB por un costo muy razonable.

Actualización del 8/mayo/2012:

El modelo actual que pueden conseguir en Amazon se llama Lenovo IdeaCentre K330 77275SU, es prácticamente el mismo que compramos nosotros el 2011, pero viene con 2TB en disco duro, y actualmente lo venden en $950.- + S&H, directamente de Amazon.


Esta PC también soporta la tarjeta gráfica ATI Radeon 6670, que es más poderosa que la 5670, lleva el índice de rendimiento gráfico de Windows a 7.1 en vez de 6.8, y se consigue desde $70.- en Amazon (han bajado de precio este año), de diversos fabricantes. Nosotros compramos la de Asus, pero no es tan silenciosa como la de XFX. La 6670 tiene un bajo consumo de corriente y es perfectamente soportada por la fuente de poder que viene de fábrica con la K330 que vende Amazon (280W solamente). Viene con 1GB de memoria DDR3 o DDR5, soporta un monitor de 27" HDMI a máxima resolución sin problemas, y permite jugar COD WAW a esta resolución con alto rendimiento - ¡un asunto importante en esta empresa!

lunes, 18 de julio de 2011

Tomcat 7: cuatro puntos a favor

Esta es una mini-entrada para contarles rápidamente mis impresiones del Tomcat 7.0.16, que ya es un release estable para producción y funciona muy bien con Dinámica, incluyendo el ambiente de desarrollo.

Lo que me gustó:

1.- Por fin los logs de Catalina pueden ser rotados diariamente cuando corre como servicio Windows. Este es un problema con Tomcat 6, el log de errores crece sin medida cuando se ejecuta el proceso como servicio. Además utiliza logging.properties para la configuración de los logs. Por cierto que la última versión de Dinámica (3.1.4) que publicamos hoy incorpora un servicio para descargar los archivos de log de tomcat vía browser, de uso opcional y sujeto a seguridad por supuesto, muy útil en producción cuando el entorno es cerrado y no hay acceso al filesystem del host.

2.- El context.xml privado de cada webapp se queda en un solo sitio. Tomcat 6 tenía la mala costumbre de hacer una copia a /conf/Catalina/localhost apenas hacía deploy de la webapp, y a partir de ese momento ese era el Context.xml (renombrado a XXX.xml según el nombre del contexto) que valía. Ahora no, el context.xml se queda en la carpeta /META-INF de la webapp. Si lo quiere editar, basta con tocar el archivo en esa carpeta.

3.- Es rápido, hemos visto tiempos promedios por debajo de los 10ms para solicitudes de web services que retornan recordsets serializados, por poner un ejemplo. Llegamos a obtener tiempos de hasta de 4ms para ejecutar Actions de Dinámica. Nada mal.

4.- Los utilities Monitor y WebApp Reloader de Dinámica siguen funcionando bien con Tomcat 7, aunque tuvimos que hacer ajustes a los servicios de diagnóstico porque hubo leves cambios en los nombres de ciertos atributos en relación a Tomcat 6, pero fue una molestia menor, la última versión de Dinámica resuelve este problema y garantiza un comportamiento homogeneo de estas facilidades entre la Tomcat 6 y Tomcat 7.


Y otro punto a favor es que las modificaciones que le hicimos a Tomcat 6 para que permitiera contraseñas encriptadas en los archivos context.xml siguieron funcionando sin necesidad de modificar el código en Tomcat 7.


Ya están disponibles nuestras distros de Tomcat 7 para Windows y Linux, en nuestro estilo minimalista, sin JSP, sin webapps preinstaladas y con un server.xml casi vacío. Vienen listas para desarrollar con Dinámica, incluyendo JAX-WS 2.2.5, JavaMail 1.4.4, los últimos drivers JDBC de PostgreSQL y SQLServer (jTDS), JMS y un manager de transacciones distribuidas JTA (JOTM). Empresarial pero sin sobrecarga ni complicaciones.

Si lo quieren descargar (Tomcat 7.0.27):

Windows 32 y 64 bits (incluye lo necesario para correr como servicio).
Linux

A tomar en cuenta: Aunque Tomcat 6.0.32 es una versión muy sólida, hay que tener en cuenta que Tomcat 7 es la continuación de esta línea de velocidad y estabilidad, pero con mejoras, y más importante aun, todo el esfuerzo de desarrollo se enfoca ahora en Tomcat 7, así que tarde o temprano tocará migrar.

De la especificación de servlets 3.0, hasta el momento puedo decir que lo único que me gusta es que finalmente regularon el tema de los Uploads como parte del estándar y del API, ya era hora, y es una verdadera mejora al excelente modelo de programación web que representan los Servlets. El resto me parece que es un exceso de Annotations y concesiones con los frameworks dominantes y aburridos, ya que sus creadores son miembros del comité JCP que regula la especificación.

UPDATE del 8 de mayo 2012: recientemente le pusieron a Tomcat una mejora para inicializar los contextos en paralelo, lo que hace que el servicio levante más rápido, es un atributo del elemento Host, llamado StartStopThreads, por defecto es 1 pero lo pueden poner en 3 o 4 para ver la diferencia... funciona!

Un abrazo,
El team Dinámica

miércoles, 8 de junio de 2011

¿Un Tomcat Transaccional?

Vamos a explicar como incorporar en Tomcat la capacidad de coordinar transacciones entre diferentes bases de datos, usando el API estándar JTA (Java Transaction API), que permite englobar en una misma transacción acciones con distintas bases de datos, coordinadas por un Transaction Manager que corre dentro de Tomcat. Para que una base de datos pueda participar en una transacción distribuida de este tipo, debe tener un driver JDBC capaz de soportar este tipo de tareas, y el manejador como tal también debe ser compatible con "XA Transactions".

Tomcat por defecto es un contenedor de servlets, no un servidor de aplicaciones completo JEE, por eso no cubre esta funcionalidad de un coordinador de transacciones. Un servidor de aplicaciones JEE si incorpora esta facilidad y muchas más que en general no son necesarias para desarrollar aplicaciones web eficientes. Nosotros preferimos partir de un servidor liviano y rápido como Tomcat y luego añadirle lo que realmente necesitamos del estándar JEE. Así lo hicimos con el caso de las transacciones JTA, integramos un producto muy fácil de usar, JOTM - Java Open Transaction Manager.

La integración es muy sencilla, pero nosotros la simplificamos aun más, consolidando en un solo JAR todo el subsistema de JOTM. Lo pueden descargar desde nuestro website, deben añadirlo a la carpeta "tomcat6/lib". En el context.xml de la aplicación donde se definen los pools de conexiones es donde vienen los cambios clave:

<Context>

<Resource name="jdbc/dinamica" auth="Container" type="javax.sql.DataSource"
factory="org.objectweb.jotm.datasource.DataSourceFactory"
initialSize="5" maxActive="20" maxIdle="5" maxWait="3000"
username="postgres" password="basica"
driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost/demodb" />

<Transaction factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60"/>

</Context>

Como pueden ver lo único nuevo es el la incorporación del elemento "Transaction" y también el factory que se utiliza para el pool de conexiones, que es especial para el manejador de transacciones.

En el caso de Dinámica el uso del coordinador de transacciones es transparente, ya que se implementó como un filtro, por la vía de los "filter-mapping" se le indica que Actions debe englobar, y el Action o proceso server-side de Dinámica procederá a ejecutar su lógica de negocios sin preocuparse por el manejo de la transacción, incluso si se ejecuta la lógica contra varias bases de datos. El filtro coordina, garantiza un COMMIT si no hay error o un ROLLBACK que mantendrá la consistencia en todas las BD involucradas si hay error.


De esta manera, usando un producto compacto open source de fácil integración con Tomcat, y las bondades de una especificación de servlets tan bien pensada, se le añaden a Tomcat características empresariales sin complicarlo ni ponerlo más pesado.

Un abrazo,
El Team Dinámica

sábado, 4 de junio de 2011

Integrando JMS y Dinámica

Cuando estuve en Lima en julio del año pasado, durante una presentación en la SUNAT (el organismo recaudador de impuestos), alguien me preguntó como se hacía para interactuar con un servidor de colas de mensajería, yo le explique que bastaba con extender una clase base del framework para lógica de negocios y añadir el código para hacer las llamadas al API de mensajería estándar de Java JMS. No he tenido necesidad de usar JMS en ningún proyecto, pero se que en algunas telefónicas en Venezuela usaban fuertemente un producto de IBM para tal fin.

Luego en febrero de este año, durante un curso de Dinámica Deluxe en Caracas, me vuelven a hacer la misma pregunta... así que me pareció una señal: hay que integrar esto en Dinámica, aunque no lo usemos, de manera transparente al programador, siguiendo los principios del framework, para que se pueda usar de forma declarativa sin escribir ni una línea de código.

Los servicios de mensajería que ataca JMS se refieren específicamente a comunicación entre aplicaciones o componentes, y de forma asíncrona, no es como enviar email. Estos servicios están pensados para intercambiar data entre procesos, pero de forma desacoplada, a través de una cola de mensajes, donde uno envía y el otro recibe, sin estar conectados entre sí.

Para mayor información sobre JMS leer este tutorial.

De manera que procedimos a bajar el servidor de mensajería más simple que conseguimos: OpenJMS, nos gustó mucho para las pruebas por lo fácil que fue ponerlo a andar sin saber nada del tema, aunque el producto lamentablemente está descontinuado, pero disponible en open source sin embargo.

Extendimos el framework con una clase genérica, que al heredar de GenericTableManager puede ejecutar todo tipo de tareas de lógica de negocios contra una base de datos SQL sin necesidad de programar, pero además con una simple configuración adicional también puede enviar un mensaje a una cola en un servidor JMS:


El nuevo módulo o plugin quedó integrado de manera natural dentro de la arquitectura MVC de Dinámica, permitiendo su uso de forma declarativa:


Todos los parámetros de entrada que recibe un proceso server-side, una vez validados pueden ser inyectados automáticamente en la plantilla de texto del mensaje y luego enviado a la cola, justo después de haber ejecutado la lógica de negocios contra el servidor SQL.

Todo el asunto fue incorporado como un aporte para los suscriptores de Dinámica Deluxe, incluyendo un documento que registra de forma estructurada el conocimiento adquirido:


Bueno, con esto finalizamos nuestra aventura con las colas, por ahora. Sirvió también para demostrar la extensibilidad de Dinámica para incorporar APIs específicos dentro de la lógica de negocios, y si se le pone un poquito de inteligencia, puede ser un plugin genérico, configurable y reutilizable sin programar.

Saludos,
El Team Dinámica

jueves, 2 de junio de 2011

Un Tomcat diferente

El framework Dinámica incluye un Tomcat light, reempaquetado por nosotros para que sea fácil de usar en desarrollo y producción con Dinámica, y sea sobre todo rápido y seguro.

Para eso le sacamos todo el exceso de equipaje que suele incorporar, todas las aplicaciones de administración y los ejemplos, lo dejamos vacío, y también le desactivamos en el web.xml global lo que no vamos a utilizar: JSP entre otras cosas. También limpiamos el server.xml y le desactivamos lo que no necesitamos, básicamente solo dejamos el conector HTTP 1.1 con la compresión GZIP para las salidas de texto y la válvula de log HTTP, la cual es de uso opcional si lo quieren hacer aún más liviano. Le ponemos suficientes Threads de fábrica y la parte de SSL comentada pero lista para usar.

En Windows le dejamos la auto-recarga activada para facilitar el desarrollo, pero en la distro de Linux se la quitamos, porque esta generalmente se usa para producción, y se recomienda hacer lo mismo con la de Windows si la van a usar para producción. Para cubrir la falta de la auto-recarga proveemos un utility seguro que corre local al proceso Tomcat y permite recargar una webapp aunque la facilidad esté desactivada.

Luego vienen los complementos. Una vez que el Tomcat está liviano y seguro, hay que añadirle capacidades empresariales de uso muy frecuente: soporte para publicar web services usando el API estándar JAX-WS y JavaMail, además de los drivers JDBC open source para PostgreSQL 9 y SQLServer/Sybase. Todo en sus últimas versiones estables:

- Tomcat 7.0.53
- JAX-WS 2.2.8
- JavaMail 1.5.1
- postgresql-9.3-1100.jdbc4.jar
- jtds-1.3.1.jar

En resumen: tiene lo necesario para aplicaciones modernas de negocios web, incluyendo web services de alta velocidad, sin sobrecargar al servidor ni hacerlo complicado en su instalación o administración. No hay que olvidar que las webapps hechas con Dinámica incluyen una serie de facilidades para monitore y diagnóstico, así que no hay que añadirle nada de esto a Tomcat, basta con su instrumentación JMX en modo local (no hace falta activarla para acceso remoto, así es más seguro).

Todo esto va distribuido entre las carpetas "lib" y "endorsed" de Tomcat 7. Para correr este Tomcat se puede usar Java 6, Java 7 o Java 8 (recomendado).

Esta idea se parece al concepto de "Web Profile" de la última especificación Java EE, que define containers que no tienes que incluir todo el peso de JEE, en el caso Web permite incorporar solo algunas funcionalidades empresariales, aun así nos parece sobre cargada y deja por fuera JavaMail, que es muy necesario. Para mayor información sobre los profiles JEE:

Java EE: The web profile

Si le quieren añadir otras cosas, como un cliente JMS o soporte para transacciones distribuidas JTA, solo necesitan incorporar los JARs en la carpeta "lib" de Dinámica. Para el caso de transacciones JTA, quizá lo más fácil de integrar con Tomcat 7 es JOTM. Para pruebas con JMS lo más sencillo es OpenJMS. Los JARs que conforman la capa cliente de OpenJMS se pueden consolidar fácilmente en un solo JAR y añadir a Tomcat 7. En Dinámica existe soporte declarativo para enviar mensajes a una cola de forma transparente al programador, se ha probado con OpenJMS y ActiveMQ de Apache, solo requiere que Tomcat tenga los JARs cliente de JMS en su carpeta "lib".

En el caso de Linux, nuestra distro Tomcat es muy fácil de instalar, se descomprime un TGZ y se corre un script install.sh que deja Tomcat como servicio en Ubuntu.

Aunque la documentación de Dinámica que concierne a nuestra distro Tomcat y otras facilidades del framework está solo disponible para nuestros suscriptores, las distros como tal pueden ser descargadas del website del framework.

Nuestro objetivo ha sido proveer un servidor de aplicaciones web que cubra el 100% de nuestros requerimientos, y que sea rápido y confiable tanto en su estabilidad como en su seguridad. Nos gustó Tomcat desde la versión 6 porque se hizo más sencillo en su empaquetamiento y configuración, y adquirió madurez en su Core, suficiente como para competir con productos establecidos como Resin o WebLogic, que se han vuelto en contraste cada vez más complicados, y sigue siendo más simple de usar que las alternativas open source  como Glassfish o JBoss.

Saludos,
El Team Dinámica

jueves, 26 de mayo de 2011

Dinámica - en honor a mi Papá


Hace pocos días murió mi viejo, el 9 de mayo en la noche temprano, luego de una vida intensamente recorrida y un final tortuoso que duró demasiado. Fue un gran periodista latinoamericano que se hizo conocido desde joven a finales de los 60's, pasó por los mejores periódicos de Latinoamérica, a veces en épocas muy conflictivas como las dictaduras de los 70's en Argentina, donde estuvo preso un tiempo, se llamaba Ted Córdova-Claure, nacido en Bolivia, especialista en análisis de política internacional. Fue emprendedor, brillante, descuidado con su apariencia personal, sibarita, buen padre, mal marido, gastador, le encantaba el fútbol, la buena música y la historia. Le dieron 7 balazos en una emboscada durante un golpe de Estado y sobrevivió... perseverante sobre todas las cosas.

La obra más relevante de mi vida hasta el momento, el framework Dinámica, no existiría si no fuera por mi Viejo. No le resto mérito a mi Madre, pero las cuerdas que me movieron a esta aventura tienen que ver mucho con mi Papá, sobre todo por el espíritu emprendedor y el gusto por la aventura y el desdén por la incertidumbre que emprender algo implica. Me influenció mucho verlo emprender cosas, a veces para llegar a ningún lado, pero el sacrificio personal porque le gustaba una idea o porque tenía que rebuscarse para mantener a la familia, fue algo que me marcó profundo. La paciencia y la perseverancia fue otra lección que nunca olvidaré, y esa la aprendí como a los 10 años, cuando ensamblamos un modelo miniatura de un avión de la 2da guerra mundial y me puse a llorar porque no me salía bien, mi viejo me reprendió y me inculcó la paciencia, de tal manera que me ayudó mucho en momentos difíciles en la universidad y muchísimo más en mi vida profesional, esa lección ha significado la diferencia entre el éxito y el fracaso en muchas ocasiones.


Pero además de la formación del carácter, mi viejo fue fundamental en lo que significó mi encuentro con la informática, concretamente sucedió en una visita a Epcot Center, cuando apenas estaba inaugurado. En el salón de la informática de Epcot fue donde se sembró la semilla que me daría de comer, luego mi viejo pondría a mi alcance una Commodre VIC-20, y después me "nombraría" su ayudante en todo lo relativo al manejo de sus computadoras, una Apple II y una PC compatible. El siempre fue un interesado en los avances tecnológicos, y un visionario, aunque no era especialista en estos temas, entendía a profundidad su impacto. Cuando salieron las impresoras láser y los primeros programas de "auto-edición" como Ventura Publisher y PageMaker, se le hizo un sueño realidad, ser su propio editor-diagramador, y fue como darle una ametralladora a un mono, hicimos en corto tiempo algunas de las diagramaciones más feas de la historia, pero con contenidos brillantes, y editamos por unos 2 años un newsletter llamado Orbita-Bip, donde colaboraban algunos de los más prestigiosos articulistas de Latinoamérica, periodistas que habían sido compinches de mi Papá en su juventud, como Tomás Eloy Martínez, Carlos Gumucio y Rogelio García Lupo entre otros. Mi Papá bautizó el momento de la salida del Postscript, los printers láser y los programas de auto-edición como la nueva era Guttenberg, estaba feliz como niño con juguete nuevo.


Cuando entré a estudiar matemáticas en la Universidad Central de Venezuela, en parte porque no logré ingresar a la escuela de computación y en parte por mi desencanto con lo que vi en esa escuela (aun se perforaban tarjetas, en tanto que yo ya tenía mi propia PC y usaba Clarion Developer 4GL), le pregunté a mi viejo: ¿Que estudio? ando mal con las matemáticas, no son lo mío. Me dio un consejo excelente: "estudia Economía, te abrirá puertas, te dará una formación muy integral, adecuada para comprender la globalidad en la que nos estamos metiendo (era 1987)". No dejo de estar agradecido por ese consejo, hizo una gran diferencia para mí al inicio de mi carrera a partir de 1992. Esa formación plural que me dio mi querida Escuela de Economía me aportó ventajas mas allá del conocimiento técnico que había ido adquiriendo en el arte de la programación y la ingeniería de software desde los 15 años, cuando comencé a trabajar en el área por un salario.

El pragmatismo fue otra cosa muy importante que aprendí a apreciar con El, hoy en día un rasgo característico de mi proceder en el trabajo, y el framework Dinámica lo refleja sin reparo y sin complejos: no comemos cuento de nadie. Tengo 43 años, he visto mucho en informática como para pensar que Hibernate, Spring o Struts son buenas ideas, nada que te ponga a trabajar de más y a correr más lento puede ser una buena idea, o que los Facade Patterns y los Stateless Beans de EJB son algo que inventaron en la era del Java... aquí no hay espacio para las mariconerías ni nos dejamos impresionar por el marketing. Mis secuaces de antaño (Chino Soques, Carlos Pineda) y yo hacíamos componentes distribuidos DCOM con Visual Basic y experimentábamos con los problemas del marshalling de data y del multi-tier cuando el Java y el EJB no eran más que ideas en servilletas, el Java en particular una buena idea. En el 2002 conocí pendejos que se enervaban cuando les contaba que el JDBC le debía su existencia al ODBC y mas atrás a un estándar llamado SQL-CLI del cual nadie se acuerda, y que el modelo DAO de Visual Basic marcó una era en la programación de regla de negocios, y el VB en particular fue el punto de inflexión para el avance de las herramientas de programación. Yo lo afirmo no solo porque lo viví, sino porque mi viejo me aportó otra cosa, perspectiva histórica. Me animó a leer a futurólogos e historiadores, y me llevó a Europa a presenciar la unificación (y a comer como locos) a principios de los 90's, una experiencia que me dio cierto "caché" en los primeros dos semestres de Economía con las chicas, pero no duró mucho...

Varias veces me han preguntado de donde salió Dinámica, y si bien el framework es un homenaje a las herramientas que me marcaron de jovencito y me dieron de comer (Clarion, VB, etc), Dinámica en el fondo viene de la educación que me dieron mis viejos, y la influencia de mi Papá en particular, de su espíritu emprendedor y sin aversión al riesgo y su falta de miedo a nadar contracorriente, y así Dinámica llegó a su 7mo aniversario este año, nadando contracorriente en un mundo lleno de Nerds como es el Java y el Linux, pero captando adeptos allí donde haya una mente atrevida y de buen gusto... en Chile, Perú, Argentina, México, Colombia, España, Italia, Venezuela (quedan algunas) y hasta en China.

Lo que NO saqué de mi viejo fue el mal vestir. Perdóname Papá donde quiera que estés.

Un abrazo,
Martin Córdova
http://www.martincordova.com

PD: aunque este es un homenaje a mi Papá y su relación con Dinámica, este framework no habría llegado a donde está de no ser por la oportunidad de desarrollo profesional que me dio la prestigiosa empresa Mega Soft y al enorme aporte de trabajo de mi socio, Francisco Galizia (Hell Boy).