Thursday, November 06, 2008

Recuentos del PDC2008 - III

El dia 3 comenzó muy bien, mucho mejor que el día 2, y eso que terminamos yendo al Universal Studios de Los Angeles, muy bonito, de verdad, y escalofriante tambien, ya que todo estaba acorde a la noche de brujas. La sensacion del momento, pues las casas de terror... y no me digan nada de Elm Street, que alli no regreso.

Pero bueno, el día tres comenzó y camino al keynote de la gente de Research me di cuenta de lo poco que había comido ultimamente.
Ya dentro del keynote quede algo sorprendido por algunas cosas que ya se habian visto, es decir, los avances que se tenían en Microsoft Robotics, pero cuando ya comenzaron a hablar de programacion sobre sensores y que ya se tenian implementaciones que administraban la temperatura, comencé a pensar en tantas cosas... (Estos quieren meterse en HW!!!)
Luego tuve que salir un momento a revisar unos libros al Store del evento, puesto que el día anterior fuí y me dijeron "lo siento, cerrado".

Días despues Edgar Sanchez (una gran persona) me comentó que me habia perdido de algo muy bueno, lo siento, pero prefiero no recordar ahora lo que me perdí, lo gracioso es que me salí media hora antes de terminar la sesión, todo sea por los Libros que queria revisar (y ya les contaré)

Bueno, el día continuó muy bien, primero con la sesion de WCF 4.0 (4.0!!!) en la cual comentaban como la convergencia entre WCF y WF se hacia cada vez mas natural, claro, que todo bajo .net 4.0 (es decir...)
De por si este es un tema que conlleva demasiado tiempo en una conversación, lamentablemente las personas que interactuen deben tener una background estable en WCF y WF, por suerte hoy se tuvo al menos un alcance de que es lo que se busca con algunas de estas tecnologías.
Un momento, dije hoy, si... es que una vez mas, tuve dos sesiones con dos equipos diferentes, una en el almuerzo, con un breve resumen de este PDC, mientras que en otra veiamos varios puntos relevantes con todo lo que se viene (pero bueno, este es un post del PDC no de otras cosas!)

Bien, volviendo al tema en mención, me gustó mucho la breve intro que hizo Ed Pinto (que pena que no tenga su blog actualizado), puesto que, una de las primeros slides es algo asi como "pero, un momento, de que estamos hablando? que es WorkFlow Foundation?" y sigue con un breve resumen de lo que es, la mejor explicacion es "WF es un coordinador de actividades sin demasiada ceremonia" (osea sin mucho trabajo, asi, de frente, esta es la mejor definición de WF, me encantó la palabra ceremonia). Ya poco a poco habla del resto de componentes, es decir, el runtime mismo (el motor que gestiona los workflows) y herramientas adicionales.
Aqui nos detenemos un poco y vemos el nuevo editor de WF, un designer completamente basado en WPF, en este momento ya se veia la seriedad con que estan tomando el uso de WPF (pues claro, si todo el VS estará basado en eso!)
De por si la convergencia entre ambas tecnologías ya se veia venir, puesto que, WCF, en resumidas cuentas se encarga de que servicios que estamos construyendo, sean disponibles in the cloud (no, no debi decir eso, pero bueno a la larga es la verdad).
Es decir(una vez mas) WCF es un empaquetador de lógica de negocio, y bueno, los flujos construidos en WF son un reflejo de (una vez mas) lógica de negocio.
Es decir... la convergencia se ve como algo natural, o no?

Pues bien, de WCF debo confesar que hace muchos años (no recuerdo ya, hace cuanto), conversando con un amigo le contaba mi afinidad por COM+, y de como es que, me sorprendia que los chicos de Redmon sacaban conceptos como System.Transaction y de como se hacian las implementaciones a mano limpia (es decir, puro código), pero que no se hablaba de un gestor que permita la administración de los servicios ya publicados. Si, algo como el Enterprise Services. Yo recuerdo claramente como le decia, que lo ideal sería que Indigo (pues asi le decian los chicos de la vieja escuela) tenga su gestor.
Pues les cuento (o quizá ya deben saberlo, pues este blog posiblemente esté demasiado desactualizado), el concepto que tanto pediamos con algunos amigos, saldrá a la luz, mientras que de momento se llama Dublin, la idea de este producto es tener un set de herramientas que se integre a la interfaz del IIS, y permita hacer una administracion mas decorosa, de los servicios que vamos construyendo/publicando.

La pregunta es, porque esperaron tanto tiempo?

Ya para este momento la sesión estaba por terminar y la pregunta que todo desarrollador WCF/WF estaba haciendose era "un momento, pero cuando uso esta convergencia", y para eso uno de los ultimos slides indicaba los puntos clave, los cuales en resumen decian cosas como "cuando la lógica se complique, o hayan ejecuciones en paralelo, o cuando haya secuencia/coordinación de mensajes".

Ya entrando al lunch session (conseguí algunas frutas y me fui volando al salón) de Windows Seven, Principios de Diseño, escuchaba algunas consideraciones que debemos tomar en cuenta al construir aplicaciones basadas en Windows Seven.
La verdad, muy bonita la presentación (sobre todo porque aun recuerdo haber escuchado cientos de veces "we love the jumplists!"), pero siento que de momento no la iré a aprovechar demasiado (bueno, estoy muy tentado de instalar Seven en mi laptop, ustedes que dicen?)

Entré luego a una sesión de Performance y Escalabilidad, la cual dejó como mensaje principal lo siguiente "tengamos las metas de PyE claras, incluso desde la fases iniciales de nuestro proyecto". Lamentablemente hay paradigmas que evitan esto, y ciertamente les digo, me he encontrado con casos en los que decian "eso lo podemos ver despues", o peor aun "pero, eso no es todavia en la fase de pruebas?".
Dicho sea de paso, hablaron un poco del funcionamiento del Garbage Collector y de porque debemos de preocuparnos de tener siempre en cuenta el uso/abuso de los objetos en memoria (espero que esto no requiera explicación).
Es imposible dejar mencionar que mostraron las características del VS2010 orientadas a estos aspectos. Aquí dejenme decirles que, si usaron el Ants Profiler, pues se encontrarán con algo muy familiar.

Ya bueno, dejenme comentarles (quizá una vez mas) que andaba completamente cansado, no de escuchar todo lo que venia, o que tenia que aprender, estudiar o compartir. Estoy hablando de un aspecto físico, pues ciertamente, el Convention Center no era gigante pero no era un cuarto pequeño, y a mi me gusta caminar, pero, creo que varios días con una dieta reducida estaban destruyendome! En fin, continuemos!

Minutos despues me iba acercando a la sala que tenia como ponente al mismo Anders Hejlsberg (si, el papá de C#), en una sesión que dejó las cosas muy claras, C# es y será cada vez un lenguaje mas potente.
La influencia de la programación dinámica tiene mucho que ver en todo esto, ya que, el trabajo y reconocimiento del tipo de dato en tiempo de ejecución permite explotar el trabajo en diferentes aspectos.

Si de dan cuenta, no estoy mencionando ejemplo alguno, pues me detengo dado que, si volvemos al pasado, recordaremos uno de los puntos claves de .net, un ambiente con lenguajes fuertemente tipados, y si hablamos de C#, se llegaba a un poco mas, su falta de soporte a parámetros opcionales obligaba a marcar la diferencia entre lo que es programar en VB.net y C#.

Pues bueno, Anders partió del hecho "El cliente lo pide, al cliente se lo damos", ademas claro, de aceptar la culpabilidad de la pureza con la que fue construido el lenguaje.

En si, todo parte del hecho del advenimiento de lenguajes como IronPython y la programacion dinámica persé, la necesidad del trabajo con objetos COM que trabajan si, es cierto, con parámetros opcionales.
Asi que, si estas bajo C# y requieres interoperar con COM, pues en algunos casos tendras que lidiar con parámetros opcionales, como indica esta referencia.

Anders indicó que ellos tenian en mente que COM iba desaparecer y que la interoperabilidad sería, por ende, un problema menos con que lidiar "pero, seguimos aqui, y COM sigue vivo", asi que, "de paso que mejoraremos la interoperabilidad a nivel de performance, tambien habran mejoras a nivel de programación, por eso, soportaremos parámetros opcionales"

Ya bueno, para terminar con la programación dinámica mostró rapidamente como trabajar con un poco de AJAX y objetos Javascript, haciendo llamadas a estos, desde el codebehind!
Y si no sabes un poco de JavaScript, no seria mejor, que aprovechemos los tipos dinámicos y peguemos el JS en el código .net y con unas modificaciones (tipos de dato, dinámicos, basicamente), ejecutar todo desde la misma página? Pues si, si se puede, claro, en C# 4.0

Luego comentó sobre el concepto de Compilador como Servicio, es decir, permitir usar las APIs del compilador. Es decir, ejecutar el metodo Compile() en tiempo de ejecución? pues si.
Ya para esto la gente estaba tomándole fotos al código fuente, la chica de mi costado sonreía como loca y yo no sabia si tomar fotos, apuntar, grabar, hacerle el habla en mi ingles menos que masticado, pero bueno, a seguir.
Luego, Anders poco a poco construyó una aplicación que recibía una expresión, por ejemplo, una suma o algo combinando restas y divisiones, y esta era ejecutada por el compilador.
Eso ya me habia dejado todo claro, ya lo habia visto en otro lado. Asi es, en Mono y en Interactive C# Shell. Recuerdan el post?

Ya terminando comenzaron las preguntas y respuestas, yo necesitaba salir un momento, alli cerca de la puerta me encontré con Edgar Sanchez (MVP de Ecuador y RD) y luego de presentarme, le comenté sobre lo poco que habia revisando en Mono, y que justo eso del Compilador como servicio era algo que ya estaba liberado, pero claro, en Mono. Conversamos un poco mas, y bueno, me fui camino a la sesión de Mono.

La sala estaba comenzando a llenarse, faltaban quince minutos (eso lo dijo Miguel de Icaza), yo hace mucho que queria saber mas de como exponía, me habian comentado que tiene un método particular. Yo, ya dije, quería saber mas.
Asi que me senté en la primera fila, vacia por cierto.
Luego de unos minutos, vino un chico, algo gordito y le dice a uno que está a un lado si podía moverse un poco a la izquierda que vendrían "sus amigos", yo vi a ese chico y me parecía alguien conocido.
Lo cual confirmé cuando vinieron casi al instante, de "sus amigos", algunos de ellos venían con la camisa celeste de Microsoft, yo dije "un momento..." mientras que Miguel de Icaza dijo algo tipo "chicos de MS, humm me siento intimidado..."

Comenzó la sesión de Mono y mientras todo estaba, no miento, completamente lleno, Miguel comenzaba diciendo que ellos amaban .net pero que buscaban una alternativa basada en Linux, pues, tambien amaban Linux.
En su escritorio pude ver tres sistemas operativos diferentes, un Leopard, un Linux (no recuerdo la distribución) y un Windows Vista.
Todo continuaba bien, y comentaba como es que mejoraron la performance del compilador, puesto que, cuando querian trabajar sobre 10000 líneas de código, 16 segundos de compilación eran demasiados.
Luego de ciertas mejoras comentaron que "a pedido de Anders" hicieron una comparación con el compilador oficial de C#, y que, pasaron la prueba, habian mejorado muchismo (y aquí estamos hablando de una mejora considerable)
Me sorprendí cuando llegaron al tema de Compilador como Servicio, si... justo lo que queria preguntar. No puedo negar que en ese momento sonreí pues mi dudas estaban aclarándose, Mono es una plataforma que debe respetarse, y desde hace tiempo esta haciendo cosas, a manera de perfil bajo.

Ya cuando comenzaron las demos, fue demasiado gracioso, ver como todo parecía una parodia de las demos realizadas en la sesión de C# 4.0 que acababa de terminar, ademas claro de una demo similar a un administrador de fotos que mostraron en el KeyNote de Live Services, pero claro todo esto basado en Mono.
Sinceramente, fue muy bacan, ver en dos sesiones, dos plataformas que trabajan en contextos diferentes, presentando servicios similares.
Claro, es mas bacan escuchar a alguien de Mono decir "justo como Anders hizo" mientras hacia la demo. Por cierto Miguel de Icaza escribe en C# como si fuera una bala!

En lo que respecta a programación para juegos, mono está bastante avanzado (no por algo hace un tiempo Second Life migró a Mono), llegando incluso a mostrar un juego que pudo desplegarse y ejecutarse sin problemas en un iPhone!. Aunque ya en ese momento, solo los que estabamos en primera fila vimos el iPhone y el juego en mención (no jail-breaking). Aqui pueden ver un poco mas de lo que les cuento.

Como nota aparte, al mostrar el visor de imagenes, Miguel queria hacer una demo de inyecccion de código sobre procesos que ya estaban ejecutandose. El problema es que el visor de imagenes comenzó a presentar problemas (no le hacía caso) y el gordito de adelante grito "inyecta un parche para que se arregle!", en ingles claro.
Por esos momentos Miguel ya habia dicho "los chicos de esta fila son de Microsoft y los de esta otra de Novell", yo me senti, como decirlo, sorprendido, pues... estaba en primera fila!

La ronda de preguntas y respuestas fue todo muy rapido, preguntas en todos los idiomas y fotos con todo el mundo, desde la puerta del otro extremo se escuchó un "we love mono!!!", en ese momento no pude reconcerlo, pero... fue acaso Don Box? (En realidad, fue Brad Adams)

Muchas de las preguntas eran del tipo "por que no hay WPF?" mientras que las respuestas de Miguel eran del tipo "eres bienvenido a ayudarnos a construirlo!"

Yo me acerqué casi al final y me presenté, le dije que estaba bacan la presentación y que bueno que hayan liberado el concepto de compilador como servicio, pero si es que habia alguna influencia desde C# 4.0 (que aun no sabemos cuando será liberado), obtuve como respuesta "es todo una coincidencia pero nosotros nos demoramos en construirlo solo dos semanas" Dos semanas!
Miguel fue una persona muy amable, me dió una de sus tarjetas y mientras todos peleaban por un polo de Moonlight (el cual ya esta terminado, mas no liberado, cuestiones de Marketing y MS), yo me tomaba una foto de despedida y un gusto de conversar con alguien tan inteligente.

Ya luego tomé mis souvenirs y me fuí, pues era demasiado tarde y mi cuerpo no soportaba mas, necesitaba reflexionar sobre ese dia, que fue de verdad, alucinante.

Claro, que cuando salía, me encontré con el gordito de primera fila y no dude en preguntarle si era Jeff Atwood, si, el mismisimo de Coding Horror!
Luego de una breve conversación y felicitaciones por el nacimiento de su hijo, pues, se despidió!
Claro, antes de irse, me dió algo que tenía en la mano, un sticker de CodingHorror!!! no sabia que habia algo asi!!! Es mas, no sabia que se vendían!

Y bueno, asi terminó el día 3.

No comments: