viernes, 7 de diciembre de 2007

GeneXus Rocha Beta 2: de dónde bajarla (download)

Imagen: anuncio aparecido en televisión. (Bueno, algo parecido)

Downloads / Descargas:
GeneXus Rocha Beta 2
GXextensions SDK Beta 2
[Actualización: estas descargas ya no están disponibles desde la liberación de la versión RC. Las descargas de la RC están disponibles en la sección Downloads de la columna de la izquierda]

Ayer se hizo público el download de la Beta 2 de GeneXus Rocha con importantes mejoras con respecto a la Beta 1: conversión de KBs de la versión 9.0, posibilidad de múltiples ambientes , manejo de versiones, y muchas otras cosas interesantes.

¿Querés probarla? ¿Todavía no sos Beta tester? Comenzá por aquí. ♦

viernes, 9 de noviembre de 2007

No sos vos, soy yo

Una historia de amor sin frases hechas


Imagen de 'Nos sos vos, soy yo'Imagen: El carácter chino para "amor". (es interesante que unos cuantos de esos trazos parezcan lágrimas)

GeneXus Rocha tiene una personalidad compleja, de eso no hay duda, y para muestra basta un botón: en su incansable afán de expandir sus horizontes, de alcanzar puntos a los que nunca había llegado, de vivir nuevas experiencias y sensaciones, se asocia y relaciona con múltiples er... llamemosle "contrapartes" a falta de mejor nombre, que lo complementan y lo extienden, por así decirlo, si se me permite la expresión.

GeneXus no promete exclusividad, y ellas lo saben, pero como no podía ser de otra manera, a todas les da su atención, les permite expresarse, e incluso les da participación en muchas de sus decisiones. Tampoco pone reparos en que se comuniquen directamente entre ellas e interactúen tanto como quieran: vivir y dejar vivir, ese es su lema. En definitiva, la situación está planteada así, y a la hora de la verdad, todos parecen disfrutarlo y ninguno se queja, a lo hecho pecho, y a otra cosa mariposa.

Pero detenerse es una forma de retroceder; GeneXus lo tiene muy claro y el conformismo nunca fue lo suyo. La vida pasa, el futuro no espera, el show debe continuar, y es tiempo de afrontar nuevos desafíos. Por eso, todos los días nace un nuevo GeneXus.

En ocasiones, los cambios son tales que una o más de las partes se ve afectada, la relación se vuelve incompatible, y será necesario dejarla atrás, por duro que resulte. Sí, es claro que como consecuencia de cada una de estas relaciones, y de la suma de ellas, GeneXus goza de una vida más saludable, disfruta experiencias más enriquecedoras, y por si todo esto fuera poco, aumenta significativamente su poder. Pero también es sabido que un gran poder implica una gran responsabilidad, y a veces, lo que comienza como un pequeño "problemita" en alguna de ellas, puede provocar efectos que irremediablemente se transmitirán al conjunto, y naturalmente todos terminarán sufriendo, de una manera o de otra. No es algo que pueda tomarse a la ligera, alguien debe tomar el toro por los cuernos y cortar por lo sano, para evitar males mayores.

Por eso a partir de ahora, luego de cada cambio importante, GeneXus se cuidará de verificar que aquellas que quieran seguirlo acompañando, estén dispuestas a renovar su compromiso explícitamente. De no ser así, y hasta tanto eso no se cumpla, no habrá otra altertiva que interrumpir la relación. Quizá sea triste, pero así es la vida.

— Tenemos que hablar. Lo he estado pensando mucho, y he llegado a la conclusión de que lo nuestro no da para más. Mirá..., yo ahora estoy en una nueva etapa y ya no puedo volver atrás. Necesito que quienes me acompañen estén dispuestos a aceptarme como soy, para bien o para mal, y seguirme apoyando en cada paso que doy. Creo que sería bueno que nos diéramos un tiempo para reflexionar, cada uno por su lado. Te juro que me duele más a mí que a vos. Te deseo lo mejor. Por supuesto, no sos vos, soy yo.

lunes, 29 de octubre de 2007

Hacémela corta

Imagen de 'Hacémela corta'Imagen: Corta de tueros con tronzón. Aparentemente eso en Asturias es un deporte. ¡Estos asturianos están majaretas!

En Blogger se puede configurar cuántos artículos se desea que aparezcan en la página principal, pero cada uno de ellos aparece siempre completo. Esto funciona bien para artículos cortos (dos o tres párrafos), pero no tanto cuando son más largos, ya que la página se vuelve demasiado extensa, y se hace bastante engorroso pasar de un artículo a otro buscando algo.

Por eso muchos prefieren mostrar sólo un extracto de cada artículo, que si se desea se puede expandir para leer el resto. Lamentablemente Blogger no ofrece ninguna opción para hacer esto automáticamente, pero existen algunos hacks que con algo de trabajo permiten lograrlo, y es lo que se usa, por ejemplo, en este mismo blog.

Una posibilidad es que al expandir un artículo, se muestre en la propia página principal. Las instrucciones para lograr esto son bastante simples, pero si eso te resulta chino, o quizá malayo, o incluso indonesio, quizá prefieras leer la versión original en inglés. También parece haber una versión en español, pero más que una traducción, es la explicación de ciertas modificaciones para lograr algunas mejoras [Oct. 31, 2007: parece que justo ayer am0x modificó totalmente su artículo. Ahora sí es simplemente una traducción del artículo de Ramani, y las mejoras que antes proponía no aparecen por ningún lado. La máquina del tiempo, afortunadamente, no me deja mentir], así que aquí va, para quien pueda interesarle, una traducción al español del artículo original.

Artículos expandibles en Blogger
(traducción de Blogger hack: Expandable posts with Peekaboo view)

La página principal de tu blog usualmente muestra el contenido completo de cada artículo. Si tus artículos son normalmete de más de 2 párrafos, el lector encontrará difícil encontrar rápidamente lo que le interesa porque necesitará mucho desplazamiento hacia abajo en la página. Para esto es que eran útiles los resúmenes expandibles de artículos para el antiguo Blogger. ¡Este truco tiene la misma utilidad en el nuevo Blogger y aún más! Es decir, la página principal mostrará sólo los resúmenes de los artículos y cuando le des click a "Leer más", ¡el artículo completo aparecerá en la propia página (vista Peekaboo)! Tuve algunos pedidos para implementar este truco y me las arreglé para hacerlo andar. Luego, Hans lo mejoró agregando un enlace "Sólo resumen" con el cual puedes colapsar nuevamente el artículo a su resumen. Entre ambos, también hicimos que el enlace "Leer más" se muestre sólo para los artículos que están resumidos. Este es un truco sorprendente pero necesitas tener cuidado al cambiar tu plantilla. Si no estás familiarizado con HTML, te recomiendo conseguir la ayuda de alguien que sepa HTML para aplicar este truco. Estos son los pasos a seguir:

Paso 0: Descargar y guardar tu plantilla de modo que puedas volver a ella en caso de algún problema con este truco (¡Importante!)

Paso 1: Encontrar en tu plantilla la marca

<head>


y agregar justo antes todo el código de esta página.

Paso 2: Encontrar un includable llamado 'post' y copiar y pegar los cambios que están resaltados en esta página (ten mucho cuidado de no cometer errores. Fíjate que la palabra "uncustomized-post-template" puede no aparecer en tu plantilla pero no hay problema con eso). Para enconrar el includable, podrías buscar la expresión id='post'. Si no lo encuentras, puede que no hayas expandido la plantilla. Marca la opción "Expandir plantillas de artilugios" (expand widget templates), que está justo encima del código de la plantilla.

Paso 3. Ir a Configuración->Formato (Settings->Formatting) y al final de la página encontrarás el casillero para especificar la "Plantilla de entrada" (post template). Copiar y pegar estas líneas dentro de ese casillero y guardar la configuración. (Por favor NO escribas tú mismo estas líneas porque podrías introducir espacios en blanco que harían que no funcionase).

Escribe tu resumen aquí

<span id="fullpost">

Escribe aquí el resto del artículo

</span>


Si ahora creas un nuevo artículo, verás claramente dónde escribir el resumen y dónde agregar el resto del artículo. Es importante cerciorarse de que la marca </span> quede al final. Para asegurarte de esto, usa el modo "Edición de Html" en lugar de "Redactar" mientras escribes el artículo. Después de escribir puedes ir al modo "Redactar" y cambiar fuentes, colores, etc. Fíjate que también puedes editar algunos de tus anteriores artículos (o todos) para dividirlos en resumen y artículo completo. El enlace "Leer más" aparecerá solo para los artículos que hayan sido divididos de esta manera.

[Si es tu primera visita a mi blog, no te pierdas estas otras cosas bonitas que ofrezco:
1. Un sitio para compartir blogs al estilo Digg - bvives.com.
2. Plantilla rápida manejada por AJAX - Neo ]

Notas importantes:
Nota 1: Por favor no olvides agregar un enlace a Hackosphere en tu barra lateral. Eso es lo único que espero a cambio.
Nota 2: Si te gustarían algunos efectos especiales fade in / fade out para este truco, los puedes tener haciendo estos pocos cambios descriptos en este otro artículo.
Nota 3: Si quisieras que el enlace "Leer mas" te llevara a la página del artículo, en lugar de expandirse en la propia página principal, usa este otro truco [Nota del traductor: también traducido al español más abajo]
Nota 4: Después de hacer click en "Entradas antiguas", el enlace "Leer más" puede aparecer incluso para artículos que no hayan sido divididos en resumen y articulo completo. Es un problema conocido que aún no hemos resuelto.

Ahora bien, en lugar de que el artículo se expanda en la misma página, también se puede lograr que al hacer click se vaya a la página propia del artículo, en la que se muestra el contenido completo y los comentarios. Esta variante, del mismo autor, está explicada en Selective Expandable posts. La versión tailandesa también puede resultar divertida, y recíprocamente, ofrezco esta traducción al español para que se diviertan los tailandeses:

Artículos expandibles selectivos
(traducción de Selective Expandable posts)

Anteriormente había anunciado los artículos Peekaboo que muestran resúmenenes de los artículos en la página principal y los expande en la misma página. Pero a algunas personas les gustaría usar el modo clásico de expandir los artículos que lleva al lector a la página del artículo al hacer click en "Leer más". Uno de ellos me preguntó como hacer para mostrar el enlace "Leer más" sólo para artículos largos y no para otros. Le di una combinación de código peekaboo y no peekaboo que sirve para esto. Como comencé a recibir más de estos pedidos, pensé en publicar el código para todos quienes quieran usarlo. Esto es lo que necesitas hacer:

1. Encontrar en tu plantilla la marca

<head>


y agregar justo antes todo el código de esta página.

2. Encontrar la marca div para post-body, y agregar el código que está en rojo.

   <div class='post-body'  expr:id='"post-" + data:post.id' >

<b:if cond='data:blog.pageType == "item"'>
<style>#fullpost{display:inline;}</style>
<p><data:post.body/></p>
<b:else/>
<style>#fullpost{display:none;}</style>

<p><data:post.body/></p>

<span id='showlink'>
<a expr:href='data:post.url'>Leer más......</a>
</span>
<script type='text/javascript'>
checkFull("post-" + "<data:post.id/>");
</script>
</b:if>

<div style='clear: both;'/> <!-- clear for photos floats -->
</div>


3. Ir a Configuración->Formato (Settings->Formatting) y al final de la página encontrarás el casillero para especificar la "Plantilla de entrada" (post template). Copiar y pegar estas líneas dentro de ese casillero y guardar la configuración. (Por favor NO escribas tú mismo estas líneas porque podrías introducir espacios en blanco que harían que no funcionase).

Escribe tu resumen aquí

<span id="fullpost">

Escribe aquí el resto del artículo

</span>


Si ahora creas un nuevo artículo, verás claramente dónde escribir el resumen y dónde agregar el resto del artículo. Es importante cerciorarse de que la marca </span> quede al final. Para asegurarte de esto, usa el modo "Edición de Html" en lugar de "Redactar" mientras escribes el artículo. Después de escribir puedes ir al modo "Redactar" y cambiar fuentes, colores, etc. Fíjate que también puedes editar algunos de tus anteriores artículos (o todos) para dividirlos en resumen y artículo completo. El enlace "Leer más" aparecerá solo para los artículos que hayan sido divididos de esta manera.

Nota 1: Si no puedes encontrar las lineas a cambiar, puede que no hayas expandido la plantilla. Marca la opción "Expandir plantillas de artilugios" (expand widget templates), que está justo encima del código de la plantilla.

Nota 2: Después de hacer click en "Entradas antiguas", el enlace "Leer más" puede aparecer incluso para artículos que no hayan sido divididos en resumen y articulo completo. Es un problema conocido que aún no hemos resuelto.

Espero que agregues un enlace a Hackosphere en tu barra lateral. Es lo único que espero a cambio ;)

Posiblemente haya otras maneras de lograr lo mismo que se explica aquí, pero de estas técnicas (en particular la segunda), puedo decir que funcionan sin problemas, y que aunque requieren un poquito de trabajo para la configuración inicial, luego el uso para cadad artículo no es para nada engorroso.

Un aspecto importante a tener en cuenta, es que si bien se logra que la página principal muestre resúmenes, en el HTML se está cargando el contenido completo de cada artículo, por lo que el tamaño y los tiempos de transferencia y carga de la página siguen siendo básicamente los mismos. ♦

miércoles, 24 de octubre de 2007

jueves, 4 de octubre de 2007

The name is Bond, James Bond

Imagen de 'The name is Bond, James Bond'No hace mucho contaba cómo un grupo de colaboradores voluntarios me estaba ayudando a crear unos montajes con PhotoShop para utilizar en una charla sobre la persuasión para el Encuentro GeneXus.

Uno de los puntos de esa presentación tenía que ver con la manera en que las personas que nos gustan tienen un mayor poder de influencia sobre nosotros. Ese gustar ciertamente incluye a la atracción física o sexual pero no se restringe a ella; también puede aplicar a quienes nos resultan simpáticos (piensen en actores de comedia), o inteligentes, o nos despiertan ternura (piensen en los bebés o los niños en general), o lo que sea que implique que alguien nos agrade en general.

Durante la charla, esto iba ejemplificado con algunas fotos de los casos más típicos de explotación de esta debilidad tomados del campo de la publicidad. Entre algunas fotos de chicas bonitas posando junto a autos, aparecía también ésta del principio con Pierce Brosnan promocionando los relojes Omega, y otra de Brad Pitt para los relojes Tag Heuer.

Brad Pitt - relojes Tag HeuerEl punto con estas dos fotos era que alguien podría cuestionar si su efecto en la publicidad estaba dado por el hecho de ser tipos lindos, o por ser también sumamente famosos (en el caso de Brosnan, además, fuertemente ligado nada menos que a James Bond).

Sin embargo, yo creo que salvo en los casos en que cierta celebridad guarda alguna relación directa con el producto (como puede ser Ronaldinho en una publicidad de zapatos de fútbol Nike, o Michael Schumacher en un comercial de Shell), la elección tiende a recaer sobre un famoso lindo, o en caso de no poder pagarlo, sobre un desconocido pero que sea lindo.

Como forma de probar esta conjetura, y más en broma que en serio, el propósito era jugar a imaginar qué pasaría si en cualquiera de estas fotos sustituyeramos al famoso-lindo por alguien famoso pero no lindo. Ese era el trabajo que le pedí a los artistas del PhotoShop.

Gracias a la colaboración de gente como Andrés "ElAndrew" Rodríguez, Carmen de Moura, Gonzalo Losada, Hernán Hiriart, María Inés Carriquiry, Rodrigo Alvarez, y Viviana Domínguez, llegamos a juntar 26 montajes, todos muy buenos. Como estaba previsto, algunos de los trabajos aparecieron durante la presentación (y a juzgar por las risas del momento, con todo éxito), pero para que se puedan apreciar todos los trabajos preparé estos dos videos:




Si quieren acceder a cada una de las fotos, también pueden hacerlo a través del mini-sitio que usábamos para ver los trabajos a medida que iban llegando.

La verdad es que todo esto me resultó una experiencia sumamente divertida, y quiero agradecer públicamente a los artistas por su colaboración, y felicitarlos por el excelente trabajo que hicieron. ♦

jueves, 20 de septiembre de 2007

Radiolandia 2007

Imagen de 'Subiendo hacia atrás'Falta muy poquito para que comience el Encuentro GeneXus de este año, y una manera interesante de comenzar a vivirlo puede ser la Radio del Encuentro.

Este año, la Radio funciona utilizando entrevistas grabadas que se publican en formato mp3. Las primeras entrevistas comenzaron a aparecer desde hace unos días en la Página de la Radio, pero a partir de hoy, están también disponibles en formato podcast, lo cual tiene una doble utilidad: por un lado, que suscribiendose a ese feed, uno puede estar al tanto de las nuevas entrevistas que se vayan publicando, y por otro lado aquellos que utilizan iPod o similares, pueden descargarse las entrevistas para escucharlas offline. ♦

lunes, 27 de agosto de 2007

Subiendo hacia atrás

Imagen de 'Subiendo hacia atrás'Hace unos días estaba con un amigo, y saltando de un tema a otro, caímos en Julio Cortázar. Rayuela es probablemente su obra más famosa, pero lo que a mí más me gusta son sus cuentos.

Lo primero que escuché de Cortázar fue con el Flaco Iglesias hace mucho, mucho tiempo, en la casa de altos en que vivían sus padres. El Flaco tenía en uno de aquellos cassettes al propio Cortázar enseñando más sobre escaleras. Hasta el día de hoy, y aunque lo lea yo mismo, sigo escuchando aquella voz afrancesada del cassette.

Tiempo después llegué a aquel lugar de la bibliografía y conocí la otra escalera. En realidad era la primera, pero yo venía subiendo hacia atrás. Leí muchas cosas más de él y en todas logró sorprenderme, y dejarme queriendo más, incluso de aquellas historias que por su propia naturaleza son imposibles de continuar. ♦

viernes, 24 de agosto de 2007

El Experimento PhotoShop: Chrlas 2.0 (Beta)

Imagen de 'El Experimento PhotoShop'Todo comenzó con un mensaje a la lista de Artech, preguntando si alguno me podía dar una mano con unos montajes de fotos que quiero hacer para una charla en el próximo Encuentro GeneXus (a propósito, ¿ya vieron el video?).

Como no tengo ninguna experiencia, ni tiempo suficiente como para ponerme a aprender, preferí pedir ayuda. Por las dudas aclaré que tampoco estaba buscando nada demasiado sofisticado, sino simplemente cambiar alguna cara en una foto con los rostros de otras personas, y sin mayores pretensiones de que no se note (en realidad parte de la gracia es que sí se note).

La verdad es que cuando lo mandé pensaba que podía sentirme afortunado si alguno respondía. Para mi sorpresa, al poco rato ya había recibido, no una sino seis contestaciones de personas dispuestas a darme una mano. Algunos de los mensajes eran del estilo "soy conocedor, me tengo fe", y otros eran más del tipo "alguna vez hice algo, pero si no conseguís otro mejor, avisáme", pero todos se mostraban dispuestos a ayudar. Así fue como de pronto me vi enfrentado a demasiadas opciones: ¿cómo hacer para elegir a alguno? Aunque después de todo...

¿Por qué tendría que elegir sólo a uno? En lugar de eso, le respondí a todos contándoles de qué trataba la charla y qué era lo que pretendía hacer en ella con esas fotos trucadas (por supuesto pidiéndoles confidencialidad, porque tampoco es cuestión de andar quemándola ☺), y les propuse que trabajáramos en forma conjunta, cada uno proponiendo cuantas opciones quisiera de aquello que les describí, para luego entre todos elegir tres para utilizar en la charla. La parte más interesante era que el resto de las propuestas no iban a ser en vano, sino que la idea era formar una suerte de "extras del DVD" para pasar al final de la charla (si da el tiempo), para mandar a los amigos, para publicar en internet, o para lo que queramos.

Debo confesar que lo mandé con muchas dudas: ¿no era forzar demasiado? ¿les resultaría divertido? ¿aceptaría alguno? A pesar de mis dudas, sorpresa N° 2, resultó que sí, que la mayoría lo encontró divertido, y como no les implica mucho tiempo, ni les impone una responsabilidad, la mayoría se prendió de la idea. Así fue como de pronto me encontré con que contaba con todo un equipo de creativos.

Pero las sorpresas no terminaron ahí. Resulta que de mi primer mensaje, parece que alguien entendió que estaba buscando un diseñador gráfico para contratar (y digo contratar en aquel sentido antiguo en que uno tenía que pagar por lo que la gente hacía), y se lo pasó a una amiga diseñadora gráfica [1], quien rápidamente me escribió poniéndose a disposición. Le contesté explicándole que no, que en realidad no estaba pensando en contratar sino en que alguno me ayudara "de onda". Su siguiente respuesta me hizo levantar una ceja [2]:


ok, no hay problema. De todos modos si no encontrás a nadie dentro de Artech que sepa Photoshop avisame y si no es algo que lleve muchas horas, yo te ayudo "de onda" :)

Hmm... ¡sorpresa N° 3! Sin pensarlo demasiado, le mandé copia de lo que ya habían recibido los otros, y le dije que si le divertía, también era bienvenida. Para hacer la historia corta, sorpresa N° 4 que sí, que se anotaba, y sorpresa N° 5, ¡me envió las dos primeras contribuciones al grupo!

¡Santas coincidentes sorpresas, Batman! — dije para mí [3]. ¿Hasta dónde llega esto? ¿Habrá más gente interesada en participar? ¿Por qué no publicarlo en forma abierta para quien quiera sumarse? ¿Eeeeh?

Así que aquí estoy haciendo precisamente esa invitación:


Si te manejás bien con el PhotoShop [4], y te divierte la idea de participar de este proyecto colaborativo, sin presiones, y sin mucho esfuerzo, ponete en contacto conmigo (jlr arroba artech.com.uy) y te cuento exactamente de qué se trata.

¿Cuántos llegarán a sumarse? ¿Habrá una sorpresa N° 6? El tiempo será testigo. Mientras tanto, de ayer a hoy, el grupo inicial ya produjo cuatro montajes, todos muy divertidos y estoy seguro de que surgirán muchos más. Ya lo verán. ♦


---
[1] Nunca supe quién era su amigo dentro de Artech que le había pasado el aviso, pero si está leyendo esto, muchas gracias.
[2] Me refiero a levantar una sola, pero digamos que es una licencia literaria: nunca aprendí a levantar una ceja sin levantar también la otra.
[3] Otra licencia: no suelo hablarme en esos términos, ni decirme a mí mismo Batman, y mucho menos (aclaro por las dudas) vestirme como Robin, pero quería poner en algún lado el link a esa página.
[4] No hace falta ser experto. Si sos capaz de sustiuir una cara en una foto, tenés lo que se necesita

domingo, 24 de junio de 2007

Lejos del teclado, cerca del ratón

Imagen de 'Lejos del teclado, cerca del ratón'Durante las próximas tres semanas voy a estar de viaje en plan de vacaciones familiares, y entre los preparativos para eso y la cercana liberación del próximo CTP de la Rocha, llevaba ya bastante tiempo sin escribir nada aquí. Por eso antes de irme, quería descargar algunos comentarios que venía acumulando en el tintero.

Boca campeón

Un saludo público para mi amigo Mastropietro, y para todos los hinchas de Boca, por la reciente obtención de la Copa Libertadores. No todos los días un equipo logra superar las cinco Libertadores de Peñarol :p

Videos online

Están disponibles los videos de las charlas de Marcos, Daniel, y mía, que diéramos en la tercera reunión del Grupo de Usuarios GeneXus de Montevideo. Las charlas se puede ver en Google video, o si prefieren, pueden descargar en forma completa una versión con mucha mejor calidad de video. El audio lamentablemente no es muy bueno (probablemente un problema de conexión del micrófono que no notamos en el momento), pero aún así se entiende sin problemas. Las tres charlas son:

Generador de Lenguaje Dinámico RUBY/¿PHP? por Daniel Méndez
ver en Google video - Descargar archivo

Demos de GXextensions, por Marcos Crispino
ver en Google Video - Descargar archivo

Jugo de GXextensions, por José Lamas
ver en Google Video - Descargar archivo

Documentación de GXextensions

De a poco vamos incorporando más documentación, tratando de guiarnos por las preguntas que van surgiendo en el foro. En particular, agregamos una página Getting Started with GXextensions, como punto de partida básico para quienes recién comienzan. Para quienes están desarrollando GXextensions o piensan hacerlo, les recomiendo estar atentos a esa página porque desde ahí iremos apuntando a nuevos documentos e instructivos.

Marcos otra vez

Marcos publicó una nueva GXextension. Esta vez se trata de GXObjects from Tables, que es la misma acerca de la cual hizo la demo en la reunión del grupo de usuarios de Montevideo. Pero atención que en este artículo de su blog en el que lo anuncia, también explica cómo hacer para disparar comandos desde la Start Page, y cómo hacer para abrir objetos en la interfaz de GX desde el código de una GXextension.

GXextensions en las noticias

En las noticias GeneXus de esta semana se publicó la primera parte de una nota sobre las GXextensions, basada en entrevistas a gente involucrada con su desarrollo. Vean quiénes están (con foto y todo) en esta primera parte. Hay varios entrevistados más, que apareceran en la continuación de la nota.

Desafío 2007

Otra noticia publicada esta semana es la confirmación del lanzamiento del GeneXus Challenge 2007. Hay dos categorías, una para aplicaciones desarrolladas con GeneXus 9.0 y otra para GXextensions. Ambas cuentan con importantes premios, y el plazo de inscripciones, que ya comenzó, termina el 15 de julio. Los interesados, que me consta que son varios, ¡no se dejen estar!

Hasta la vuelta, ♦

lunes, 4 de junio de 2007

Tiempo cálido, algo nuboso

Imagen de 'Tiempo cálido, algo nuboso'La forma que tiene Blogger de presentar las etiquetas nunca me convenció mucho. Lo que no me gusta es que por un lado ocupan demasiado, y por otro, que como uno debe elegir entre ordenarlas alfabéticamente o por su frecuencia, si se quiere buscar por el otro criterio, necesariamente va a ser más complicado.

Las tag clouds (nubes de etiquetas) sin embargo, resuelven muy bien estos problemas ya que al no usar una línea por cada etiqueta ocupan mucho menos, y además es posible superponer el orden alfabético y el de frecuencia en diferentes dimensiones. Por ejemplo, lo más común es presentar las etiquetas ordenadas alfabéticamente, mientras que se utilizan tamaños y colores para representar la frecuencia relativa (las etiquetas aplicadas a más artículos se dibujan más grandes). De esta forma, es muy fácil ubicar una cierta etiqueta por su nombre (o determinar que no está), y al mismo tiempo, una simple mirada permite distinguir diferentes grados de importancia entre las etiquetas.

Aunque la plataforma no ofrece una forma directa de hacerlo, parece haber muchísimas maneras de lograr presentar las etiquetas como tag clouds en Blogger. No es que haya estado investigando muchas, pero encontré una que me pareció bastante simple, y no requiere de servicios o javascripts de terceros. Las instrucciones están en este artículo de phydeaux3, que dicho sea de paso, vaya uno a saber qué significa.

El artículo presenta tres sencillos pasos que son suficientes para que comience a funcionar, y luego da algunas instrucciones y consejos sobre posibles ajustes. En este blog por ejemplo, cambié los colores usados para los tags, y la forma de alinear el párrafo (justify en lugar de center).

En Internet Explorer había un problema de indentación que causaba que se viera truncado el comienzo de la primera línea, pero fue fácil solucionarlo con una sugerencia que está también en esa página (aunque perdida entre los comentarios), y que consiste en agregar la siguiente línea a los estilos:

#labelCloud li{text-indent:0px;}
Después de ese pequeño arreglo, todo parece funcionar de maravillas. ♦

viernes, 1 de junio de 2007

Te Veo Tus Tablas

Imagen de 'Te Veo Tus Tablas'Glauber C. Weddigen de Migrate Company me ha enviado su primera GXextension para publicar, y agregar a la lista de las que se pueden descargar e instalar automáticamente desde la Start Page de GeneXus Rocha.

Se llama TableViewer y consiste en una herramienta que permite, dada una tabla, comparar su composición e índices con respecto a la tabla correspondiente en la base de datos operacional.

La ventana reacciona a la selección de una tabla en el árbol de objetos, o incluso a la selección de una transacción, tomando su tabla asociada. Además de obtener los datos de la tabla en la KB, obtiene los datos de la configuración del DBMS para conectarse a él y obtener la composición actual en la base de datos. Luego presenta ambos árboles de composición para que sea fácil compararlos, como se puede ver en la imagen.

Según me ha dicho Glauber, esto es apenas una primera versión como para ir experimentando pero también está trabajando en otra GXextension de la que tendremos noticias más adelante.

A propósito, la lista en la Start Page ya está quedando un poco grande, así que vamos a tener que inventar algo porque no puede crecer indefinidamente. Quizá deberíamos mostrar las más recientes, o las más descargadas, o ambas, y dejar las restantes para consultar en una página adicional... ♦

lunes, 28 de mayo de 2007

Nos vemos allá

Imagen de 'Nos vemos allá'En el sitio del XVII Encuentro, se agregó una página con imágenes que se pueden utilizar para destacar que se va a participar de él. Cómo ejemplo, pueden ver la que acabo de poner en este blog, en la columna de la izquierda.

Para los que quieran hacer algo similar en su página web o blog, les pueden ser de utilidad las tablas que incluyo a continuación. Contienen las diferentes imágenes disponibles para español, portugués, e inglés.

En cada tabla, junto a cada imagen, encontrarán un recuadro de texto con el código que necesitarían incluir en su página para agregarla. Para aquellos que usan blogger, sin embargo, tienen la gran ventaja de que pueden simplemente usar el botón que está debajo de cada imagen para agregar el componente al blog en forma automática (les va a pedir la identificación y password si es necesario) sin que tengan que preocuparse por escribir nada.

Español



Português



English

jueves, 24 de mayo de 2007

A tirarse al agua

Imagen de 'A tirarse al agua'En las noticias de esta semana se anunció la largada del primer GeneXus Challenge:

"El GeneXus Challenge es el primer concurso internacional de desarrollo de software con GeneXus, que brinda la posibilidad a todos los miembros de la Comunidad GeneXus de integrarse en equipos y medir su habilidad y creatividad compitiendo contra equipos de todo el mundo. Individuos y equipos de hasta 5 personas miembros de la Comunidad GeneXus o programadores de C# (para el caso de las GXextensions) competirán por crear las mejores bases de conocimiento GeneXus y GXextensions."
Se concursará en dos categorías, una para aplicaciones construidas con GeneXus 9.0, y otra de GXextensions para la versión Rocha. Habrá premios por jurado y premios decididos por la comunidad.

Todavía quedan algunas cosas por definir y publicar, pero los detalles (los que están ahora y los que se agregarán después) podrán leerlos en la página GeneXusChallenge del wiki de la comunidad. Así que lo del título: a tirarse al agua, que los plazos corren.

Acerca de la imagen: por las dudas, aclaro que la imagen que acompaña este artículo no es un logo oficial del concurso, ni mucho menos. Es simplemente una conjunción de este pictograma del estilo de los que se usan para los deportes olímpicos, y una imagen que obtuve con esta herramienta para crear parodias de logos para sitios web 2.0. La imagen de ese logo se obtiene con la siguiente URL: http://www.h-master.net/web2.0/image/(reflect)GXchallenge[c=FF0000]1.0[/c]BETA.png. En otras palabras: es en broma. ♦

jueves, 10 de mayo de 2007

Un Mundo de Bloggers

Imagen de 'Un Mundo de Bloggers'Cada vez hay más gente de la Comunidad GeneXus publicando blogs. Sin ir más lejos, ayer se sumó Gustavo Proto, que aunque dice que no sabe de qué va a escribir, se despachó con 3 artículos el primer día, y ya hoy estaba agregando otro.

Por eso creo que es excelente la idea de Federico Wagner de agrupar a todos en Planeta GeneXus. Tal como bien lo explica Fede, este planeta agrupa en un mismo sitio (y en un mismo RSS feed), todos los artículos publicados por blogs relacionados con GeneXus.

Creo que en poco tiempo Planeta GeneXus se va a convertir en un recurso valiosísimo para la comunidad, y no sólo como fuente de información, sino también como un fuerte elemento integrador y dinamizador.

¡No te quedes afuera! Si tenés un blog, comunicate con Fede para que te agregue. Y si no lo tenés..., ¿no deberías pensar en tener uno? ♦

martes, 8 de mayo de 2007

Tercera Reunión del Grupo de Usuarios GeneXus de Montevideo

Imagen de 'Tercera Reunión del Grupo de Usuarios GeneXus de Montevideo'El Grupo de Usuarios GeneXus de Montevideo ya ha tenido dos exitosas reuniones. La primera fue el 2 de setiembre de 2006, y la segunda el 25 de noviembre, por cuyas fotos puede deducirse lo bien que se pasa allí.

Ahora se viene la tercera reunión, y junto con Marcos Crispino, tendremos el honor de hablar de GXextensions, gracias a la amable invitación de mi amigo Gabriel "Masternet" Icasuriaga, a quien conozco desde la época en que mi viejo tenía un bar casi al lado de donde Gabriel vivía. Eran tiempos remotos en los que yo aún ni me había enterado de que existían las computadoras, y en los que lo único "master" que había era rojo o azul.

La agenda todavía no está completa, pero ya está confirmado que también hablará Daniel Méndez acerca del generador para Ruby que está desarrollando, y están para confirmar una charla sobre la exportación de software, y otra de capacitación, probablemente acerca de Business Components.

Por mayor información, pueden ponerse en contacto con la GxOpen Task Force escribiendo a info[at]gxopen.com.uy. ♦

De Rocha a Buenos Aires: Fundación de BAiresGuG

Imagen de 'De Rocha a Buenos Aires: Fundación de BAiresGuG'Para mañana (9 de mayo) está prevista la Reunión Fundacional del Grupo de Usuarios GeneXus de Buenos Aires (BAiresGuG).

Este tipo de reuniones, y fundamentalmente la existencia misma de estos grupos, son siempre una buena noticia. Pero hay algo que hace todavía más interesante la noticia, y es que el sitio de BAiresGuG fue desarrollado con GeneXus Rocha CTP4, lo que lo convierte quizá en el primer sitio en producción de la Rocha.

Para BAiresGuG entonces, felicitaciones y los mejores augurios. Al gran pueblo argentino, ¡salud! ♦

martes, 1 de mayo de 2007

Tres en línea: nuevas GXextensions de Marcos Crispino

Imagen de 'Tres en línea: nuevas GXextensions de Marcos Crispino'Acerca del tres, el primer número primo impar, se puede decir muchas cosas. Tres eran los Reyes Magos, Los Tres Mosqueteros, Los Tres Chiflados, e incluso Los Tres Cerditos. Están también las Tres Marías, las tres carabelas de Colón, y Las Tres Gracias de Rubens.

Además en Uruguay, hacer tres se está poniendo de moda, y quizá por eso Marcos, no queriendo ser menos, acaba de poner en línea tres nuevas GXextensions compatibles con la CTP4.

Se llaman Open Windows Explorer, View Related Files, y Remove Files on Delete. En el propio blog de Marcos pueden leer los detalles de estas GXextensions, que se agregan a la lista que aparece en la Start Page, y pueden ser instaladas desde el propio GeneXus. ♦

miércoles, 25 de abril de 2007

Uno por noche: GeneXus Rocha Night Builds

Imagen de 'Uno por noche: GeneXus Rocha Night Builds'Todas las noches un proceso automático toma los últimos cambios registrados y ejecuta todos los procesos que intervienen para convertir los archivos de código fuente en un nuevo setup de la versión Rocha. En algún momento, uno de estos setups se convertirá en un nuevo CTP, una Beta, o en la versión final liberada. La novedad es que a partir de ahora, ¡todas estas versiones intermedias también estarán disponibles en forma pública para descargar y probar!

Como anunciara hoy Gustavo Proto en el foro de GeneXus Rocha, a partir de hoy es posible acceder a los GeneXus Rocha Night Builds. Tienen su propio foro, y se descargan siempre desde la misma página. Además, es posible ir viendo cuáles son los cambios que se van haciendo día a día.

El proceso de armado arranca a las 11:00 PM 01:00 AM de Montevideo (GMT -0300), y en general demora unos 30 a 45 minutos. Si todo sale bien, cerca de cada medianoche las 02:00 AM (hora uruguaya) debería estar pronto un nuevo build. [Actualizados los horarios 27 Abril 2007]

Creo que esto va a ser particularmente útil en dos situaciones. La primera es el caso de los beta testers que avisan de un problema a través del foro y se les contesta que acaba de ser corregido. Antes tenían que esperar a que se liberara el siguiente CTP para poder verlo y probarlo. Ahora, si lo desean, no tendrán que esperar más de un día desde que se les informa que se corrigió.

Pero fundamentalmente, a quienes creo que va a ayudar más, es a los que están desarrollando GXextensions. En la medida en que comiencen a profundizar, y hacer cosas más sofisticadas, podremos responder mucho más rápidamente a los problemas que puedan encontrar, de manera que el desarrollo no se detenga. Por otra parte, todos los cambios que sea necesario hacer en una GXextension por razones de compatibilidad, pueden hacerse y probarse mucho antes, de la misma manera que hacemos con las que desarrollamos internamente.

Veremos cómo nos va, y ya nos dirán qué tal les resulta. ♦

martes, 24 de abril de 2007

Canelones entre Lechuga y Tomate

Imagen de 'Canelones entre Lechuga y Tomate'Hoy pedí comida a El Refugio, Grill and pasta specialties, que es uno de los restaurantes dentro de Zonamerica. Figura incluso en el manual de supervivencia en ZA de Rodrigo, lo que no es poca cosa. Lo que no figura en ese manual, es la peculiar política de El Refugio con respecto a los pedidos de comida para llevar.

La cosa es más o menos así: "usted pida lo que quiera, que ya veremos qué le llevamos". Yo no sé los demás, pero cuando tengo ganas de comer pasta pido pasta, y si quiero comer ensalada pido ensalada. Lo que es seguro, es que si pido canelones, no estoy esperando que me vayan a traer medio plato de canelones junto con (como si en verdad les diera vergüenza por mandar sólo medio plato) ¡medio plato de ensalada de lechuga y tomate!

Porque no es que sirvan un plato razonable de canelones y luego le pongan unas hojitas de lechuga para decorar. No, señor. Viene algo que, aunque quizá sea un poco más que media, seguro no llega a una porción, y a eso le agregan una guarnición de algo que nadie pidió, como para rellenar y que no se note. ¿Saben qué? Se nota; la imagen lo dice todo.

Por otra parte, si yo tuviera que complementar un plato de canelones con alguna otra cosa, no sé con qué lo haría, pero seguro que no se me ocurriría mezclar pasta con lechuga y tomate. Es como si para complementar una porción escasa de pescado, le agregaran patitas de pollo, o algo así.

Hmm..., ¿quizá sea una opción dietética?... Es decir, así como a alguien se le ocurrió inventar los cigarrillos 'light' con el simple truco de hacer pequeños agujeros en el filtro (de manera que no es que uno fume un cigarrillo con un tabaco más liviano, sino que en realidad uno fuma mitad cigarrillo y mitad aire), ¿será que El Refugio inventó los canelones dietéticos?
"¿Que los canelones engordan? Pues no hay problema, nosotros le damos canelones light: mitad canelones, mitad ensalada. Y no se pierda nuesta torta de chocolate light: mitad torta, mitad ensalada de fruta. Consulte por otros platos light."
Aunque después de todo, a mí se me hace que han de tener alguna especie de obsesión con la lechuga y el tomate. Porque cuando uno pide pastel de carne, es decir, cuando espera que le llegue una porción de pastel de carne, pues resulta que lo que llega es también mitad pastel de carne, mitad lechuga y tomate.

Hablando de obsesiones, no debería cerrar este artículo sin mencionar otra de la que hacen gala. Es así: usted pide una tarta de jamón, queso, y aceitunas. Imagínesela. ¿Ya se la imaginó? Bueno, resulta que lo que le llega es una cosa como de siete centímetros de altura, compuesta casi exclusivamente de ricota, con algunos pedacitos de jamon y de aceitunas entreverados... Sí, claro, ya sé que la ricota es parecida al queso. Pero no es queso y, al menos en este pais, cuando se pide una tarta de jamón y queso, nadie espera que le venga una tarta de ricota, ¿o sí? Es mucho peor todavía si le pasa como a mí, que me gusta el queso (colonia, gruyere, parmesano, dambo, muzzarella, y otros de ese estilo), pero no soporto la ricota.

Ahora, ¿qué puede pasar entonces si junto con la tarta de jamón, queso, y aceitunas, usted encarga una Ensalada Caprese, como hice yo? Es que yo me las ligo todas... Pues que le mandan una ensalada hecha con tomate, albahaca, y pedacitos de..., adivine, adivine..., ¡Sí! ¡Acertó! ¡Ricota! Con lo de la tarta, hasta podría (remotamente, estando de buen humor) llegar a comprenderlo. Porque siempre podrían decirme "bueno, mire señor protestón, la tarta de queso de El Refugio es así, con ricota". Pero ya una Ensalada Caprese... Ahí como que no hay mucha opción: o es una Ensalada Capresse o no lo es, y una Ensalada Caprese definitivamente no es con ricota. De otra forma, es como si me dijeran "aquí para el pesto usamos espinaca en lugar de albahaca".

A propósito, ¿alguien quiere una guarnición de lechuga y tomate que me sobró? ♦

martes, 17 de abril de 2007

¡La Rocha CTP4 ya está disponible!

Imagen de "¡La Rocha CTP4 ya está disponible!" Finalmente, después de mucho esfuerzo, pero con mucho entusiasmo, hemos liberado la versión CTP4 de GeneXus Rocha.

Como siempre, en el wiki de la comunidad encontrarán la información detallada de la Rocha CTP4, pero por supuesto, nada como descargarla y probarla uno mismo.

Por supuesto que junto con esta versión, hemos liberado también el correspondiente GXextensions SDK, que pueden obtener desde aquí.

Esperamos sus comentarios en los foros. ♦

lunes, 16 de abril de 2007

La historieta vuelve a repetirse

Imagen de "La historieta vuelve a repetirse"Creo que era inevitable; tenía que pasar y pasó. Es que si a mí me gusta Dilbert, a Cristian le gusta Garfield. Así que ahora tenemos una nueva GXextension llamada Daily Garfield publicada en GXOpen, y que también podrán instalar automáticamente desde GeneXus Rocha CTP4.

¿Es que acaso aquí sólo pensamos en historietas? De ninguna manera: sé de alguien que quiere hacer una GXextension que contenga un juego.

Como pueden ver en esta imagen la interfaz de Daily Garfield es mucho más potente que la de Dilbert. Permite por ejemplo acceder a las tiras de diferentes fechas ya sea yendo al día anterior o siguiente, como eligiendo una fecha específica. También es posible elegir si se quiere ver en inglés o en español. ♦

sábado, 14 de abril de 2007

KBDesigner: una GXextension de Nicolás Castagnet

Imagen de "KBDesigner: una GXextension de Nicolás Castagnet"Desde que comenzó el programa de Early Adopters de GXextensions, Nicolás Castagnet, de De Larrobla & Asociados, ha sido uno de los más entusiastas y participativos. Nicolás está trabajando duramente en un proyecto como parte de sus estudios, y ese proyecto incluye el desarrollo de una GXextension.

En algunas conversaciones "de pasillo" me contó lo que estaba haciendo y como me pareció algo muy interesante, el mes pasado lo invité a que viniera a ARTech para mostrarnos lo que estaba haciendo al equipo de desarrollo. La idea era que nos mostrara de qué se trataba exactamente, y ver si en base a su experiencia, había algo que podíamos hacer para dar mejor soporte a quienes desarrollan extensiones.

La verdad es que nos impresionó muy gratamente, y de hecho Nicolás Jodal aprovechó la oportunidad para comprometerlo a que dé una conferencia en el próximo encuentro de usuarios. Para una primera descripción del KBDesigner, voy a recurrir a sus propias palabras:

"Brinda un modelo para definir Consultas e Ingresos de Datos en un Sistema de Información a través de Diagramas de Navegación sobre las relaciones de la Base de Datos. Incluye un diseñador de diagramas, otro de formularios, y un generador que a partir de esta información crea los objetos GeneXus necesarios para implementar el sistema. La extensión no aspira a permitir diseñar sistemas complejos. Más que nada apunta a dar una solución para crear sistemas sencillos rápidamente (que tengan consultas e ingresos de datos)."
Lo que se ve en la imagen, es precisamente un objeto Navigation (es un tipo de objeto adicional, definido por el KBDesigner) y su correspondiente diagrama, cuyo editor también fue desarrollado por Nicolás. Estos diagramas se usan para diseñar la navegación que se desea que el usuario pueda hacer dentro de una aplicación. En el ejemplo, que corresponde a un sistema de manejo de proyectos, se ve cómo a partir de un proyecto, se podrá acceder a distintos formularios que muestren listas de requerimientos, documentos, o asignaciones de personas. Cada uno de esas listas a su vez habilitará el acceso a la edición de cada elemento particular, y por ejemplo a partir de un requerimiento, se podrá navegar a una lista de documentos o a una de personas asignadas, a partir de las cuales existen otras navegaciones posibles, y así sucesivamente.

Además de las navegaciones, es posible diseñar los formularios de cada una de las etapas, utilizando un editor también proporcionado por el KBDesigner, con el que de una forma guiada y muy declarativa, se realiza ese trabajo de manera rápida y potente.

Finalmente, a partir de las navegaciones y formularios, el KBDesigner utiliza su propio generador (basado en la misma tecnología de plantillas que emplean los GXPatterns), para construir (y mantener) los objetos GeneXus que implementan el sistema. Impresionante, ¿no?

De manera que para el próximo encuentro de usuarios, estén atentos a la conferencia sobre el KBDesigner; estoy seguro de que valdrá la pena ♦

viernes, 13 de abril de 2007

Instalación automática de GXextensions en Rocha CTP4

Imagen de "Instalación automática de GXextensions en Rocha CTP4"Para la versión CTP 4 de GeneXus Rocha que estamos próximos a liberar, hemos incorporado un nuevo diseño de la Start Page, y entre otros cambios, aparece una sección con una lista de GXextensions listas para descargar e instalar.

Como pueden ver en esta captura, al usar la opción de "Install", es posible descargar la extensión e instalarla automáticamente. Una vez hecho esto, GeneXus ofrecerá la posibilidad de salir y volver a entrar para que se cargue la nueva extensión.

Otra cosa que se puede notar en la imagen, es que Open Command Prompt de Marcos Crispino, que fuera la primera extensión hecha fuera de ARTech, es también la primera extensión compatible con la CTP4 y disponible a través de este mecanismo. Como los fuentes estaban disponibles a través de GXOpen, pudimos convertir la extensión a la versión CTP4, y aprovecharla para experimentar.

La segunda extension disponible para instalar, es Daily Dilbert, de la que hablaba en el artículo anterior. Pero la lista es totalmente abierta: aquellos interesados en saber cómo hacer para publicar sus extensiones pueden ponerse en contacto conmigo. Una vez publicadas, automáticamente aparecerán en la Start Page de todos los que estén usando la CTP4. ♦

Dilbert dentro de GeneXus Rocha

Imagen de "Dilbert dentro de GeneXus Rocha"Estamos a punto de liberar la CTP4 de GeneXus Rocha, y también su correspondiente GXextensions SDK.

Una de las novedades en este SDK es un nuevo proyecto ejemplo, llamado Daily Dilbert, que muestra cómo incorporar una ventana en el IDE de GeneXus que muestra diariamente una tira de Dilbert.

Más allá de Dilbert, creo que es un buen ejemplo de cómo utilizar XSL y RSS para mostrar contenido dinámico dentro de una ventana de GeneXus. Aquí lo que se muestra es una historieta, pero perfectamente podría ser cualquier otro tipo de información. Podrían ser cotizaciones, resultados deportivos, noticias, información interna de la empresa, o lo que se les ocurra.

El proyecto es muy parecido al ejemplo ToolWindow que ya existía. La única diferencia es el contenido del form, y la forma de cargarlo.

En el form, se colocó un control System.Windows.Forms.WebBrowser, indicando Fill para la propiedad Dock, de manera que ocupe todo el form.

Para cargar el contenido, se utiliza una transformación XSL precompilada, que es la encargada de construir el contenido HTML que cargaremos en el control, a partir del XML que obtenemos de un RSS. Pero vayamos por partes, para que no parezca complicado algo que en realidad es bastante sencillo.

En primer lugar tenemos un archivo XSLT que contiene las instrucciones acerca de cómo crear HTML a partir de un XML dado. Estas instrucciones las analizaremos luego, pero por el momento lo importante es que el contenido de ese archivo está disponible en la propiedad Transform de la clase Resources.

Dentro de la clase DilbertWindow, que es nuestra derivada de AbstractToolWindow, agregamos una propiedad para construir y almacenar nuestra transformación, de la siguiente manera:


private XslCompiledTransform transform;

public XslCompiledTransform Transform
{
get
{
if (transform == null)
{
XmlDocument xmlTransform = new XmlDocument();
xmlTransform.LoadXml(Resources.Transform);
transform = new XslCompiledTransform();
transform.Load(xmlTransform);
}

return transform;
}
}

Luego, hacemos override del método OnLoad(), para cargar el RSS, aplicarle la transformación y cargar el resultado en el control, utilizando el siguiente código:


protected override void OnLoad(EventArgs e)
{
StringWriter textWriter = new StringWriter(CultureInfo.InvariantCulture);
Transform.Transform("http://feeds.feedburner.com/tapestrydilbert",
new XsltArgumentList(),
textWriter);
webBrowser.DocumentText = textWriter.ToString();
}


El archivo XSLT que mencionábamos arriba es bastante sencillo. En forma resumida, escribe un documento HTML conteniendo únicamente una imagen con un link. Los datos para la imagen y para el link los toma del nodo del XML cuya ruta es /rss/channel/item/. Normalmente en el XML habrá más de un nodo item, por lo que se tomará el primero, que corresponde al último publicado. El contenido completo del archivo XSLT es el siguiente:


<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
<html>
<body>
<a target="_blank">
<xsl:attribute name="href">
<xsl:value-of
select="/rss/channel/item/link"/>
</xsl:attribute>
<img border="0">
<xsl:attribute name="src">
<xsl:value-of
select="/rss/channel/item/enclosure/@url" />
</xsl:attribute>
</img>
</a>
</body>
</html>
</xsl:template>
</xsl:stylesheet>