lunes, julio 31, 2006

Server X en un Browser????

Leyendo el Blog de Grady Booch llegué a una "tech talk" de google que me dejó la boca abierta. Muchos de los que me conocen saben de mi experiencia y gustó los el concern de UI en las arquitecturas, pero nunca me hubiese imaginado que se hubiese creado algo como lo siguiente, el nombre del proyecto es XML11, estos tipos se merecen un aplauso, literalmente...
Los tipos crearon en concepto inimaginado (al menos por mí) para el manejo de las aplicaciones Web. La "metáfora" de este proyecto es tener un Server X en el browser y aparte de eso, con este nuevo paradigma de aplicaciones web, RIA, tambien permite crear aplicaciones RIA/AJAX sin necesidad de programar JavaScript, pudiendo portar cualquier tipo de aplicación desarrollada en Java, en principio solo, AWT, en runtime, o sea, leen el .class y van generando código javascript. Está claro que en un post no se puede entender lo que estos muchachos han logrado, les recomiendo pegarle una mirada al sitio y mirár la tech talk por google video, aca les dejo el link a dicha tech talk, realmente vale la pena, los va a dejar con la boca abierta, se los aseguro, eso si, dura como una hora y veinte minutos.
XML11 Tech Talk
Viendo la presentación van a ver el potencial que tiene la herramienta, todavía les falta mucho para ponerla productiva, hay muchos temas de integración entre el browser y el server que no fueron del todo cerradas, pero están muy encaminados.
Me gustó mucho como manejan el Server Pushing o como le dice DWR, "Reverse Ajax".
Algo que me encanta cuando veo/escucho a estos capos/nerds es que se les cae la baba y se ríen al mismo tiempo cuando explican lo que hicieron.

domingo, julio 30, 2006

Se puede tener una cena romantica a los 9 meses de embarazo?


Y la respuesta es SI!
Como? Estando enamorado principalmente y como hace unos días que mecha no quiere ni salir de casa, tuvimos que armar un ambiente en nuestro depto:
1- hicimos una especie de Fondue (primero el quesos fundido con vino blanco)
2- los bocados: lomito, jamon, pan tostado, manzana verde,
3- compramos un Tinto espectacular (Lurton Reserva Malbec), obviamente mecha tomó dos sorbitos, solo para probar, no tuve problema en disfrutarlo yo solo.
4- y por ultimo la música de fondo, KT Tunstall, Dave Matthews Band, Dido, Norah Jones, etc.
La verdad que a todo esto, el tema de saber que dentro de su cuerpo tiene un hijo mío por momentos me sentí en el cielo y como nunca antes me habia sentido.

miércoles, julio 19, 2006

Podcasting

Todas las personas con las que me relaciono día a día (UTN Lab, IBM Martinez, IBM Huergo, IBM USA, APIT, MSN/GTalk) saben de mi fanatismo por los podcast. Este es uno de los principales medios de los cuales aprovecho para aprender y colaborar. Está demás decir que cualquier test de PNL que haga me dá como principal canal de recepción el auditivo, asi que los podcast pasaron a ser un medio fundamental para mi vida nerd. Si bien el podcasting puede venir en varios formatos:
- Video, generalmente MPEG. Generalmente son entrevistas o conferencias, tiene que estár muy buena para no aburrirme y ponerme hacer otra cosa, es muy tentador tener la laptop y solo estar viendo un video :D (recomiendo esta de Kent Beck)
- Flash/ActiveX/Applet, esto generalmente vienen con un Mp3 y una presentación que va pasando sola.
- Presentación con un Archivo MP3. Si el que habla no es muy claro y solo dice "next page" te perdés.
- MP3 pelado
El que a mi más me gusta es el que es un MP3 pelado, ya que de esta manera puedo aprovechar mucho mas el tiempo, debido a que el oído y parte de mi cerebro para procesar lo que llega solo tiene que estar atento. Por lo tanto:
  • Caminando. Amo hacerlo, es la mejor manera de aprovechar el tiempo... aunque a veces se complica por los colectivos/trenes/subtes, pero bue.. si el player permite volver atras por segundos es un golazo, el mío no lo permite :(
  • Manejando. Varios días a la semana voy a martinez, o sea que 120 minutos por día tengo para escuchar.
  • Codeando. Hace tiempo que no tengo que codear nada serio en java, pero cuando vengo un poco a full con Ruby es un lujo.
  • Maileando. Esto es básico.
Es muy raro que me tire en casa y solo escuche un podcast, a veces cuando el ingles es muy cerrado (no me queda otra) y lo hago, pero basicamente a los podcast los he metido como parte de mi vida, por semana como mínimo escucho 3 o 4 podcast, tal es asi, que ya estoy escuchando muchos de .NET por que del mundo de la arquitectura y Java no tengo mas :P
En blogs anteriores ya he mencionado mis fuentes principales de podcast, solo puedo agregar dos nuevas:
  • DeveloperWorks Podcast. Lo que me gustó de este son las entrevistas, es muy variado (dentro de lo que se puede esperar de IBM, vale la pena)
  • O'reilly Podcast, escuche muy pocos de aca, 1 o 2, pero apuntan mas a la creación de podcast por lo que pude ver.
A lo largo del post creo que se vieron muchas ventajas del podcasting, no hace falta enumerarlas, principalmente para nerds como yo que les jode un poco leer y prefieren escuchar. Lo que quizá a mi más me interesa es la aplicación de los podcast en el desarrollo de software, como algo integral, ya escuche cosas como Voice Driven Development, creo que aca se fueron al carajo... pero el concepto fundamental es poder tener comentarios en los entregables (documentos, diagramas, códigos, test cases), el nombre que más me gusta para esto es Voice Annotation, estoy viendo si puedo juntar gente para armar algún plugin para eclipse, aunque ya existe uno, pero es pago y solo anda en windows. Otro aspecto importante es la comunicación de la arquitectura, los podcast son increibles, cada persona que entre en vez de pasar uno o dos horas escuchandome, que se siente adelante de una compu y escuche el podcast. Esto pasa con todos, muchas veces poder dar ejemplo verbalmente son muchos más claros que textualmente.

Quiero decir que voy a seguir molestando con los podcast, estoy seguro que los articulos de mi sitio van a ser en formato podcast (aunque disminuya, por temas de accesibilidad). Y seguramente siga investigando sonbre como integrar el podcasting dentro del desarrollo de software, me parece una integración muy interesante, sobre todo para proyectos de offshoring entre diferentes países.

lunes, julio 10, 2006

Los aspectos de RIA (Rich Internet Application)

En este blog quiero exponer lo que yo pienso sobre los aspectos que tiene el paradigma de UI para la Web, RIA, principalmente de la rama de AJAX/DOM/AHAH.
  • Comunicación en Interacción entre el Browser y el Server
  • Actualización de la pantalla (DOM/AHAH)
  • Componentización de la Pantalla y Manejo de Eventos
  • Testeo Unitario
  • Portabilidad y Cross browser
  • Patterns y Errores Comunes
Comunicación en Interacción entre el Browser y el Server
A esto me refiero entre la comunicación que debe exister entre cualquier browser, los diferentes tipos de RPC. En lo que a la comunicación refiere, podemos detectar dos grandes tipos
- Client Pull : En donde el browser siempre hace pedidos al server
- Server Push: En donde el servidor actualiza la UI sin necesidad de que haya un evento desde el cliente.
Obviamente, el primero es el más común y el que se lleva bien con el protocolo HTTP. Aca vienen los diferentes concerns relacionados con el protocolo de comunicación, obviamente aca viene un poco el tema de los tipos de mensajes, tipo de interacción (sincrónica o asincrónica) y tipo de respuesta, esto está muy ligado a la compenentización y al manejo de evento (de componente o global). Para este tipo de concern existe un framework (java) que permite ambos tipos, este es DWR (Direct Web Reomoting) , dicho framework llama al Push, como Reverse Ajax. Y si no queremos aca hablar de algún framework podemos decir que los XML Request, dependiendo del Browser.

Actualización de la pantalla (DOM/AHAH)
Este concern refiere a como la pantalla se va actualizar luego de la interacción entre el browser y el server. Está claro que cada componete debería tener su manera de renderizarse, pero más alla de esa responsabilidad, hay que evaluar en cada caso que tipo de actualización vamos a hacer, es donde aca se debería definir estos tres tipos:
-Pantalla completa, el html se genera en el Server
-Manipulación del DOM, el html es un xml que se manipula por JS en el browser
-Uso de AHAH, este es el conocido innerHtml
Está claro que estos tres métodos pueden utilizarse una misma aplicación, es más, los tres se tienen que usar, deacuerdo al flow de la aplicación y sobre todo la performance y simpleza del código.

Componentización de la Pantalla y Manejo de Eventos
Este es uno de los conceptos más radicales para los que venimos trabajando orientados al MVC 2 o pagina completa u orientado a template. Aca volvemos un par de años atras cuando se desarrollaban GUI totalmente orientada a componentes y eventos, aca es exactamente lo mismo, las aplicaciones RIA posees mas componentes y eventos mucho más complejos. Está claro que aca es donde el tema se comienza a complejizar. No soy un experto en esto, pero es aca en donde los frameworks como Tapestry e implementaciones de JSF comienzan a tener un lugar en las UI Web, y por supuesto no puedo dejar de nombrar a Shale. Es aca en donde hay que tener mucho cuidado con la interacción entre el programador web con el diseñador de contenidos. Todavía no he encontrado una buena manera de poder definir una buena interacción entre ambos.

Testeo Unitario

Que lindo tema... pero que complicado tambien. Yo creo que aca hay que "divider and conquer" más que nunca, lamentablemente más alla de los "record and play" es muy dificil. Este es un campo bastante prematuro y que todavía no está resuelto para aplicaciones MVC 2, menos va a estar para RIA. Yo creo que el camino viene por separar el unit test de RIA en estos concern:
- Event Listeners (validar si el listener asociado con el evento llama al service/command específico)
- Comportamiento del Componente renderizado (como se darán cuenta, no tomo a la pagina como un todo, sino que mi unidad granular es un compoennte, ej. combo, boton, etc)
- Interfaz Completa (si o si creo que Record and Play es el camino, aunque lo odie ya que no me permite mockear nada) Aca estaría bueno poder moquear el acceso al negocio y generar todos los test cases necesarios de interfaz sin trabajar con el modelo... Como? rta. IoC.
- Como el componente se renderiza (uy que feo)
- Smoke Test desde la Interface, como todo, esto tiene que ser automático, miren esta tool, Selelium

Portabilidad y Cross browser

Está claro que este es un punto complicado, hace 7 años que trabajo con JS y esto es un plomo. No solo que el JS tiene que "compilar" sino que tambien tiene que comportarse de la misma manera en los diferentes browsers. Esta es una de las principales desventajas para JS, está claro. Pero por suerte hace un tiempo me comentó, Gona (un colega de IBM), que ya eso se viene solucionando, esto no quiere decir que los browser se pusieron de acuerdo y su interprete se comporta de la misma manera, no, es que ya las librerías de JS, como Prototype (que muchos frameworks de ajax usan como base) ya realmente nos abstraen del problema de portabilidad. Está claro que no este no es un tema menor, incluso unsando prototype se encuentran muchos problemas de portabilidad. Otro factor importante es el tema de los browser que no aceptan JS, y por supuesto tampoco nos permiten AJAX. O sea aca estamos graves problemas, como hacemos para desarrollar una aplicación RIA y que si el cliente acepte JS la aplicación cumpla con los req. funcionales básicos de cualquier aplicación Web.... muy muy complicado... casi que debería ser una capa de UI diferente para manejar cada caso. Y si, no nos queda otra. En algún momento cuando arranque con una proyecto en el Lab de Sistemas, vamos a encarar ese problema y seguramente publiquemos algún paper.

Patterns y Errores Comunes
Este tema está (o estoy) muy poco maduro, tengo poca experiencia en desarrollos RIA, el solo hecho de trabajar en Web nos acerca muchos patterns, pero específicos de RIA, todavía yo no puedo decir nada, creo que aca hay factores que tenemos que tener en cuenta:
- Concurrencia y Sincronización
- Manejos de Errores
- SessionTimeOut
- Performance (Latencia y Throughput)
- me ayudan?

Bueno este es mi opinción de los diferentes aspectos de una aplicación RIA, y tambien es la manera que estamos encarando RIA en el proyecto que estamos trabajando hoy. Espero comentarios, nuevas ideas, correcciónes, etc..

jueves, julio 06, 2006

APIT

Un poco de Historia
Como algunos saben, estoy dando en la UTN, con un conjunto de profesionales increíbles, una materia sobre Arquitectura de Software. Se llama, Arquitectura de Proyectos de IT. Digamos que vengo luchando con esta materia desde el 2003, cuando todavía no estaba recibido, andaba por 3 o 4 año de la carrera. El grupo de profesionales con el cual encaramos la encaramos mas o menos siempre fue el mismo, casi todos terminamos el mismo año. Fue mutando desde una materia práctica de java a lo que tenemos ahora, en donde encaramos los diferentes aspecto del rol del arquitecto de software de una aplicación. Costó mucho llegar a esto, horas y horas de lectura, investigación, discusión, pruebas y errores, etc. Despues de todo... creo que la materia hoy en día está bastante encaminada, todavía le falta limar muchas asperezas pero considero que la visión la tenemos bien definida. Por supuesto, nuestro trabajo de día a día en nuestras empresas, como arquitecto o líderes técnicos, nos permitió darle mucho más valor agregado del que podiamos obtener de la teoría, pudiendo relacionarnos con otros profesionales y la resolucion de problemas diarios. Basicamente la visión es brindar herramientas a los futuros ingenieros de la UTN, para poder crear, documentar, evaluar y comunicar arquitecturas y por supuesto formarse como arquitectos de software, ya sea de Aplicación como de Integración o Empresarial. Vamos pasando desde los temas más conceptuales y teoricos a la tecnología actual o estado del arte. Como asi tambien dejando un breve espacio para el delirio, o sea, lo que se viene. En lo que va de la cursada, hemos incorporado a 3 profesionales, dos ex-alumnos de la materia, Patricio Echagüe y Juan Arias. Luego este año se nos incorporó y aportó mucho de su experiencia, el Ing. Nicolas Passerini, la verdad que hay mucha química y gracias a su aporte y fuerza hemos hecho crecer la materia.
Presente
Actualmente estamos respetando el programa, pero en el primer cuatrimestre le damos más importancia a la parte conceptual (ver lo que viene) y en el segundo a la tecnología (ver lo que viene). Somos un conjunto de 7 prof/ayudantes. Estamos haciendo dos TP muy interesante, en uno estamos ayudando a crear una arquitectura desde cero, TP Cuatrimestral y el otro es una investigación sobre un tópico particular actual, en donde deben investigar y plasmar en un paper sus conclusiones.
Lo que viene, lo que viene...
Estamos pensando en dividir la materia en dos, una para el primer cuatrimestre y otra para el segundo, APIT1 y 2. La idea es dejar para la primer materia los conceptos mas abstractos y conceptuales para la 1 (lo que no cambia, iteratividad, estilos, attr. de calidad, etc) y para la 2, dedicarnos a la creacion de arquitecturas implementando la tecnología y los estandares actuales. Tambien estoy pensando en agregar temas de Enterprise Architecture, que como algunos saben es de lo que yo quiero laburar en el futuro, es mi visión como profesional. Tambien quiero incorporar a un excelente profesional que conocí trabajando en Telefonica, Jorge Bodoc que ya nos estuvo ayudando el año pasado, tambien al reciente recibido el Ing. Juan Tula, que está tomando unos meses sabaticos y por otro lado tambien ya tengo detectados dos o tres alumnos de este y el otro cuatrmiestre a los cuales voy a invitar a colaborar con la este proyecto al cual le estoy poniendo mucho esfuerzo y sobre todo huevo!, siento que por el momento está resultando y la gente que la cursa sale con herramienta suficiente para al menos saber que es una arquitectura, que entra y que sale, que hace un arquitecto y que tecnologías para los diferentes concerns de una aplicación se están utilizando.

domingo, julio 02, 2006

...desde la Panza

Les presento a mi hijo, esta es una foto de la 4D que hicimos semanas atras, todos dicen que tiene mi nariz, pero para mi es todo mentira, los bebes en la 4d son iguales, en lo unico que se parece a mi es en el bostezo y como se refriega los ojos de la segunda foto :P
Posted by Picasa

Me casé!!!!

Finalmente mecha lo logró me engancho :P
26 del 06 del 2006, cumpliendo 4 años de novios, llegó el gran día, me casé con la mujer que amo. Como dice mi suegra, "con el ternero al pie", mecha con 34 semanas y algunas contracciones pasamos un día genial.
Fue todo muy intimo, no hubo nada de protocolo, toda la gente que vino era la que realmente vemos día a día y quisimos que esté ahi. Solo faltaron mis dos hermanos paternos, Gastón y María, y sus respectivas parejas/hijos. Hubo un problema de comunicación mío. Ahora, todo legal, ya puedo recibir a Andrés, comprar la casa y disfrutar mi familia como lo vengo haciendo. Posted by Picasa

sábado, julio 01, 2006

Un-laptoped

En estos día estoy sufriendo una de las peores etapas, dentro de mi vida nerd... dentro de mis vidas paralelas (ya voy a postear algo sobre eso) debido a mi casamiento, y mutuo acuerdo con mi esposa (suena raro pasar de novia a esposa) tuve que deshacerme de mi laptop al menos por los días de licencia, por lo tanto aproveché y pedí una remasterización del disco, ya que el pobre XP no podía más, mas de un año y medio que venía palo y palo, creo que la registry iba a explotar. Voy a enumerar una serie de pasos que seguí que les pueden ser utiles en caso de que pasen por situaciones similares:
1- Backup de la Biblia, o sea, todos mis eBooks
2- Mover mails, 4 GB de bases Notes (incluyendo, Workflow Development/Sisdam/IBM)
3- Encontré una utilidad para mantener bookmarks del firefox. Foxmarks Bookmark Synchronizer
4- Mover los Podcast al MP3 Player, estuve aprovechando que no puedo usar la compu, ya que mecha tiene que laburar a full para la facu. Estuve escuchando PodCast internos de IBM, son de unas conferencias de technical leadership y it architecture, muy muy interesante, aunque tambien estuve escuchando unos proveniente de la comunidad .Net que valen la pena escucharlos. Un par eran de ArCast y otros de BlaBla Architecture. Desde el punto de vista de la arquitectura hay determinados temas en donde la plataforma, .net o java, no joden.
5- Luego los demás son detalles, Mis Documentos, Workspaces (ya llegan a 10, incluyendo mi entorno de desarrollo Ruby)

Esto es todo.