miércoles, enero 31, 2007

Un buen comienzo

Ayer se llevó a cabo la primera reunión de este año de la Comunidad .NET de la Cd. de México en el ya acostumbrado espacio en Intersoftware. Llegué casi desde el inicio. Me dió harto gusto ver que el aula que nos asignaron estaba casi llena. Rául Guerrero ya había iniciado su presentación sobre WPF, sin embargo no me perdí mucho de sus explicaciones.

Como todo un desarrollador, Raúl estuvo demostrando XAML e iba aplicando los cambios que nos iba explicando a manita. Real Man. Hasta la fecha ha sido la mejor demo de WPF que he visto, alcance a entender varios conceptos y la analogía que hizo sobre CSS ayudo bastante para aligerar el concepto.

Después, Octavio Télis en su acostumbrada exposición de temas avanzados (entry level diría él), continuo con el tema de delegados, eventos, métodos anónimos y su mezcla con tipos genéricos.

Y finalmente, un nuevo miembro en el equipo de expositores, Juan José Karam, se aventó una práctica introducción al manejo de versiones de código con VSTS.

Al lo largo de las exposiciones fueron llegando más personas a la reunión, al grado que tuvimos que salir a pedir sillas adicionales para acomodarlos. Raúl tomo algunas fotos de los expositores y la concurrencia, así que pronto nos verán en línea. Se repartieron varios souvenirs y al final hubo la esperada rifa de dos libros de Microsoft Press.

También tuve el gusto de encontrarme con Alfonso Lara, un excelente desarrollador y amigo y platicar un rato junto con los demás expositores en "after-hours". Espero que para la próxima reunión nos puedan asignar un aula más grande. Seguramente se va a necesitar con tanta demanda.

Finito.

viernes, enero 26, 2007

Pluralizando

Una de las cosas más excitantes de Rails son los generadores. Son scripts Ruby que generan (¡oh sorpresa!) código Ruby con diferentes fines. Existen varios tipos de generador: controller, migration, model, view, etc. Cada uno crea varios scripts y directorios con las funciones mínimas del tipo escogido y con las referencias a los módulos necesarios.

Así, tenemos que al usar el generador de modelos, le pasamos un parámetro que es el nombre y genera una clase, un conjunto de pruebas y la correspondiente migración para crear la tabla en la base de datos.

Para generar todos estos archivos, se usan plantillas y además algunas funciones del framework para nombrar clases y archivos. Recordemos que Rails tiene un principio

Convention over Configuration


Esto significa que se prefiere usar estándares para los nombres de clases, tablas, objetos, referencias y demás items en lugar de estar generando mega-archivos de configuración (web.config o web.xml por ejemplo). Por ejemplo, al usar

./script/generate model account

se crea un modelo Account que se compone de los siguientes archivos y directorios:

Modelo: app/models/account.rb
class Account <>

Prueba: test/unit/account_test.rb
require File.dirname(__FILE__) + '/../test_helper'

class AccountTest <>

Fixture: test/fixture/accounts.yml

Migración: db/migrate/XXX_add_accounts.rb
class CreateAccounts <>

Si observamos un poco el código generado se verá que a partir del nombre del modelo "account" se han derivado varias etiquetas para cada uno de los items:





Mi modeloaccount
Nombre de claseAccount
Clase de pruebaAccountTest
Tabla en la BDaccounts

Se puede ver que el nombre de modelo se le aplica el estilo Pascal (CamelCase) para obtener el nombre de la clase y que se hace en plural para el nombre de la tabla en la base de datos. Y esto aplica incluso en sustantivos irregulares, por ejemplo:





Mi modeloperson
Nombre de clasePerson
Clase de pruebaPersonTest
Tabla en la BDpeople

"Person" => singular, "People" => plural. Brillante ¿no?

Pero..... todo se maneja en inglés :( Yo no spiko spaniol.

Como siempre el gran dios google tiene varias respuestas. La primera la encontré en HackerDude que nos habla de algo llamado "Inflector" (¿alguien cursó latín o alemán?) y encontré todavía más detalle en BlogOnRails. De inicio es algo harto sencillo: expresiones regulares. Se tienen que agregar o sustituir varias expresiones regulares para que Rails sepa como hacer plurales o singulares, algo como esto:

Inflector.inflections do |inflect|
inflect.plural /$/, ‘es’
inflect.plural /s$/, ’s’
inflect.plural /z$/i, ‘ces’
inflect.plural /([aeiou])$/i, ‘\1s’
inflect.plural /_(.*)$/, ’s_\1′
inflect.singular /s$/i, ‘’
inflect.singular /ces$/i, ‘z’
inflect.singular /(.*)s_(.*)/i, ‘\1_\2′
inflect.irregular ‘user’, ‘users’
inflect.irregular ‘estado_civil’, ‘estados_civiles’
inflect.uncountable %w( pantalones )
end


Y ¡listo!. A probar con:





Mi modeloorganizador
Nombre de claseOrganizador
Clase de pruebaOrganizadorTest
Tabla en la BDorganizadores

Este esquema no es perfecto, pero es pragmático ;)

En otro orden de ideas, ya está agendada la siguiente reunión de la Comunidad .NET de la Cd. de México, la orden del día es la siguiente:

Utilizando Delegados (Segunda Parte) - Octavio Telis
Estilos y Control Templates en WPF - Raúl Guerrero
Source Control en Team Foundation Server - Juan Karam
Por Confirmar Tema - Héctor Obregón

El lugar y la hora:
Fecha: Martes 30 de Enero
Horario: 7:00 a 9:50 p.m.
Lugar: Intersoftware Training
World Trade Center - Piso 35
Mexico D.F.

Y todavía pa'que se animen, habrá rifa de libros entre los asistentes. ¡Qué esperan! Nos vemos el próximo martes.

Finito.

martes, enero 09, 2007

Yo quiero uno asi

Después de varios rumores y chismes y demás, apareció finalmente el mentado iPhone.

Como es común, el anunció se hizo durante el CES de este año. El CES es el evento que aprovechan la mayoría de los fabricantes de productos electrónicos para anunciar las novedades que estarán comercializando a partir de este año y las maravillas que ya están probando para seguir extrayendo dinero de los pobres consumidores.

He aquí que Steve Jobs aprovechó el espacio para anunciar el iPhone.

Recuerdo que alguna vez se hizo una encuesta/discusión acerca de que item te sería más útil se te quedarás en un país extranjero sin maletas, ni nada a cuestas. Las opciones eran:
  • Tu PDA
  • Tu laptop
  • Tu teléfono celular
Finalmente, el ganador en la encuesta y la discusión fue el teléfono celular. Es increíble el grado de dependencia que puede llegar a tener uno en semejante dispositivo y es que es algo muy, muy, muy personal. Casi como el cepillo de dientes. Al menos, el mío así lo veo.

Y además, creo que bien usado (y equipado) en el perfecto companion de casi cualquier persona. La industria de los teléfonos celulares ha venido haciendo ofertas cada vez más interesantes pero definitivamente nada como lo que se presenta con el iPhone.

Es que eso de mezclar comunicación, entretenimiento, movilidad, integración, facilidad de uso y además ser internet-enabled no es nada fácil. Y una vez más Apple da el primer golpe: el que pega primero, pega dos veces (iPod (!) vs. Zune (?)).

Inmediatamente se me vino a la memoria el monito (Allard?) que dirige la nueva serie de productos de consumo en Microsoft, el papá conceptual de Zune que usa como motivación el video ese de Steve Jobs donde más o menos dice algo así:
El problema con Microsoft es que simplemente no tienen buen gusto. Simplemente no lo tienen.

Y vaya que si tiene razón.

Finito.

jueves, enero 04, 2007

And the winner is...

Curt Hibbs ha publicado en su blog, la referencia al índice TIOBE en la cual declaran como lenguaje de programación de 2006 a Ruby.

We are glad to announce that Ruby has become "Programming Language of the Year 2006". Ruby has the highest popularity increase in a year of all programming languages (+2.15%). Runner up this year is JavaScript with +1.31%. Both languages are boosted by their corresponding frameworks, Ruby On Rails and Ajax.
Voy terminando de leer Ruby on Rails: Up and Running y si bien el libro puede mejorar significativamente, lo que me sorprende completamente es Rails. Rails es un marco de desarrollo basado en Ruby, se conoce por casi increible capacidad de generar una aplicación "completa" en minutos. En lo particular me parece una perfecta implementación de una fábrica de software. Tendré que preparar un post más completo para sustentar el último dicho.

Todavía falta que lo vea en un sistema en producción, no conozco ninguno todavía y también explorar Rails al grado de ver que más puede generar aparte de aplicaciones web (¿servicios web? ¿integración?) y también, seguramente debe existir algo similar implementado con .NET o Mono (¿Monorail?).

Ruby es un lenguaje interesante. Todavía no lo entiendo del todo, como que no aplica el clásico ejemplo del "Hello World!" sin embargo tiene una simplicidad aparente que con Rails raya en lo ridículo. Pa'muestra un botón:

class Photo < ActiveRecord::Base
  has_many :slides
end

class Slide < ActiveRecord::Base
  belongs_to :photo
end

Con este par de declaraciones se ha realizado una relación uno-a-muchos. Así nomás. Y funciona ¡eh!. Tienes una consola que carga tu modelo de dominio, o sea tus clases, y puedes ir probando al vuelo tus objetos.

Hasta miedo tengo de voltear a .NET y Mono. Ahora los veo de manera distinta.

Finito.

martes, enero 02, 2007

Numeralia

Mes con más visitas: Noviembre (450+)

Los tres links más visitados:
  1. http://chilli-coder.blogspot.com/2006/07/fbricas-de-software-la-otra-visin.html
  2. http://chilli-coder.blogspot.com/2006/05/da-vergenza.html
  3. http://chilli-coder.blogspot.com/2006_09_01_archive.html
Estadística en imágenes



Visitantes a la fecha: 2,421 desde el 1 de agosto de 2005.

Visitantes por venir: 1'000,000,000 :D

Finito.

domingo, diciembre 31, 2006

Cinco minutos antes de la cuenta atrás

Este es el segundo año que cierro con el blog. Me sigue sorprendiendo lo útil que es esta memoria electrónica. En primera, por la certeza de voltear atrás en el tiempo y ver como voy cambiando con el paso del tiempo, cosas que dije, pensé y también en las que cambié de parecer. Si bien este blog está muy orientado a tecnología, en algunos momentos se han entremezclado cosas de mi.

¿Cuál es este resumen de este año? Me cuesta trabajo decirlo ahorita mismo. Generalmente no pongo mucha atención a lo que ya se hizo. Vivo constantemente pensando en las cosas que quiero hacer. Por eso me es útil esto del blog. Puedo volver unos meses atrás y verme desde fuera.

En las cosas que quiero hacer el próximo año, solamente tengo grandes esbozos. No soy del tipo de Mitch Deny que hace una planeación muy precisa, pero interesante de sus planes del siguiente año.

Lo que quiero hacer el año que viene es lo siguiente:
  • Evangelizar sobre Mono a quien quiera y a quien se deje :D.
  • Aportar algo al proyecto Mono, sobre todo en la parte de colas de mensajes y la implementación de Olive.
  • Ganar experiencia con Ruby
  • Sacar adelante y promocionar el concepto de SOA a la Mexicana
  • Producir un podcast.
  • Crear un grupo de usuarios de Mono.
Me faltan incluir aspectos personales, de trabajo, familiares y demás. Todavía no están del todo definidos.

Solo me resta agradecer a aquellos que se han tomado el tiempo de leer mis oblicuos pensamientos y doblemente agradecer sus comentarios. Les deseo un año 2007 con mucho trabajo, con retos, algunos fracasos y muchos triunfos y que al final se sientan satisfechos con lo que consiguieron.

¡Féliz Año 2007!

Finito.

miércoles, diciembre 20, 2006

Fin de Temporada

Ayer se llevó a cabo la última reunión de la Comunidad .NET de la Cd. de México. Atendiendo a la convocatoria y por lo significativo de la reunión asistí con mucho gusto. Me parece muy importante resaltar y agradecer el trabajo que han venido haciendo Héctor Obregón, Octavio Télis, Raúl Guerrero y varios más que tomaron como suyo el compromiso de mantener viva la comunidad. No puedo decir más que ¡gracias!

Vi varias caras nuevas, espero que les interese participar en las siguientes reuniones y que se sumen a este espacio de colaboración. Lo importante es que la comunidad crezca y se vaya alimentando con otros puntos de vista, otras necesidades y nuevas ideas que compartir.

Raúl anda clavadísimo en el tema de Serialización y ayer dió una excelente presentación del tema. Yo anduve medio oyendo ya que me preguntó que si podía aventarme la presentación de Mono que compartí la vez anterior en petit comite. Con todo gusto le dije que sí y me pasé repasando la presentación durante su exposición.

A continuación estuvo Octavio Télis platicándonos acerca de los delegados. Algo que me llama la atención de Octavio es su casi enciclopédico conocimiento de .NET.

Finalmente, fue mi oportunidad de pararme al frente y hablar de Mono. Me fuí más o menos rápido ya que los conceptos son idénticos a pesar que los conocemos con distintos nombres (CLI vs. CLR, MSIL vs. CIL, etc) y la presentación simultánea de ejemplos .NET y Mono creo que siempre es de interés para la audiencia (hasta la fecha no se han quejado). A los lectores del post anterior no les caera de extraño cuando mencione que pasó al hacer el cambio a Ubuntu para hacer las demos sobre Linux. Simplemente no funcionaron :@ Resulta que no instalé todos los paquetes necesarios y puras fallas. Simplemente no arrancaron.

Raúl, como el tipazo que es siempre, me dijo que no me estresara, que es normal que pase en medio de cualquier presentación. Alguien que también me brindo su apoyo fue Akin0, que llegó casi desde el inicio de la reunión. Con el gusto de dar a conocer Mono y estas muestras de solidaridad ¿qué más puedo pedir? :D

Un punto interesante fue la pregunta de uno de los asistentes de primera vez (creo que de ¿tacsa? o algo así...) fue de como hacer que dos aplicaciones se comunicaran entre sí. Esto fue como una chispa que se anidó en mi cabeza y en algún momento de la madrugada y después de la charla que nos reventamos de regreso a casa Akin0 y yo dió como resultado la idea de SOA a la Mexicana.

Si, si, si. Ya se que no van a faltar las incontables comparaciones con el famosísimo podcast de Carlos Madrigal Proyectos a la Mexicana, pero buscaremos que tenga su propio sabor. El punto es dar a conocer como hemos ido entendiendo los conceptos de integración, SOA, ESB y demás con las experiencias en el trabajo durante los últimos dos años. Hablo en plural (hemos) por que para realizar esta idea voy a tener la ayuda de dos excelentes amigos y compañeros de trabajo: Gustavo de la Cruz Tovar y Javier "El Tuzo" Cortes López.

Ya vendrán más detalles de SOA a la Mexicana. No se desconecten.

Finito.

lunes, diciembre 18, 2006

Mudanzas y encuentros

A veces me desespera ser tan desesperado. Siempre busco la ruta del mínimo esfuerzo aún y cuando sea más esfuerzo hacer el cambio. El último cambio fue de distro.

Por enésima vez cambié la distro que tenía instalada en mi laptop. Ahora fue de Ubuntu a Fedora. ¿La razón? Tener acceso más fácil a las últimas versiones de Mono. Sin embargo después de unos meses de trabajar con Ubuntu el cambio no fue tan fácil como pensé de inicio.

Ya tenía a la mano el DVD para instalar Fedora en su versión 5, sin embargo, por ganas de desperdiciar ancho de banda descargué la imagen para FC6 solo para ver en la página de descargas de Mono que solamente soportan hasta la versión 5. Pus bueno, agarré mi DVD y ¡órales! a instalar. La siguiente actividad fue la consabida actualización de los paquetes instalados, cosa que en mi caso significaban cerca de 600 MB de descarga.... ¡qué onda w!

Pus aún y así colgué mi noble yegua a la pichurrienta red de la ofi para ver con asombrosa impaciencia el goteo de bits de la red. Y pasó un día, dos, tres, cuatro y me cargó la tiznada. Mi transparente paciencia se pegó un tiro y al querer buscar el modo de acelerar descargas, me encontré un plugin para yum que segúnesto es para seleccionar los mirrors más rápidos. Si pero no. Como fuí descargando por grupos ya que me fue imposible dejarla más de 4-6 hrs conectada, iba seleccionando que si por letra, por tamaño, por paquete, por hora, por lo que fuera tratando de desmenuzar el mazacote de descargas que tenía en las manos.

Entre todo ese malabar de paquetes, sitios, versiones y conexiones se batieron los datos de los repositorios. Varios curiosos mensajes aparecieron al momento de hacer el famosísimo "yum update" para que al final resultara que ningún mirror podía validarse contra las firmas que tenía registradas. Aplique la mentada formula de "yum clean all; yum makecache" y conseguí hacerlo funcionar un par de veces más pero fue todo. De ahí se me ocurrió quitar el maravilloso-plugin-acelera-mirrors y mejoro un tantito la cosa pero con un par de descargas llegó al mismo final.

'Tons que agarró y que instalo de nuevo FC5 (que ganas de perder el tiempo ¿no?) y ahora no me hice del maravillosos-plugin-acelera-mirrors para las actualizaciones. Y pasaron uno, dos, tres, cuatro días y yo sin terminar. Siempre los mismos mirrors, siempre la misma lentitud, siempre un buen de tiempo perdido. 'uta madre. :@

Y además, no me encontraba del todo cómodo. FF 1.5, Evolution 2.6, usuario root para instalar (aprendí a configurar sudo pero por ahí algo me late que también influyo en la revoltura de repositorios). No, no, no.

De vuelta a Ubuntu. Lo primero que noté (bueno, ya lo había notado antes pero no le di importancia) es el hecho de que existe un repositorio Ubuntu para México (http.//mx.archive.ubuntu.com) que si bien no sé si se encuentra físicamente aquí en México, al menos atiende las peticiones de volada. Y además como Ubuntu viene con las versiones más recientes de sw, me siento más a gusto. Y menos tiempo perdido. La única desventaja es la lentitud respecto a las actualizaciones de Mono ¿qué tan difícil es hacer paquetes para Ubuntu? :S

La otra cosa interesante de la semana pasada son libros. Un bonche de libros. Gustavo decidió que era tiempo de comprar libros y pus le encargue mi lista (que no son muchos) y ya llegaron.

En mi breve selección se encuentran Software Factories por Greenfield et alias, Microsoft Windows Comunication Foundation: Hands on! por McMurty et alias, Practical Software Factories with .NET por Lenz y Enterprise Integration with Ruby por Schmidt, éstos último en versión electrónica, amén de otro bonche de libros que encargó Gus.

Entre los otros libros, encontré Ruby on Rails: Up and running por Tate, el cual de una manera sencilla te va introduciendo al mentadísimo mundo de Rails: metaprogramming, scaffolding, ActiveRecord, etc. Mucho de lo que he visto de inicio me hace un deja vù con las software factories. No tengo muy definida la idea, voy a tener que amarrar más conceptos.

En la parte de Ruby, me encontré con algundos feeds y lo más sorprendente con un incipiente grupo de usuarios Ruby en la Cd. de México. El breve perfil del organizador lo presenta como un ingeniero de soporte Rational de IBM ¿? El grupo lo viene anunciando en dos lugares Google Groups y Yahoo! Groups así que si les interesa apúntense.

Por último, mañana se realiza la última reunión de la Comunidad .NET de la Cd. de México en el lugar acostumbrado (WTC, piso 35, Intersoftware).

Finito.

martes, diciembre 12, 2006

Más voces sobre Open Source y .NET

Algunos bloggers, MVP's y desarrolladores han empezado a comentar acerca del pobre avance del movimiento Open Source en relación a la tecnología .NET.

Entre los que han comentado se encuentran Ayende (NHibernate), David Hayden (MVP C#), Jeremy D. Miller (Agile advocate) y como abogado del diablo Frans Boume (MVP ASP.NET).

El punto es la siempre infaltable comparación con la comunidad Java que ha producido hartos proyectos OS, ya sea bajo la tutela de IBM, Sun, Red Hat o whoever. Se comenta la actitud que ha la fecha ha tenido Microsoft (ni te veo ni te oigo) respecto a los pocos proyectos que existen en .NET y como al final lo único que han demostrado es que le gustan las ideas, pero no compartir.
  • NDoc -> Sandcastle
  • Spring.NET -> ObjectBuilder (bueno, más o menos)
  • NUnit -> MS Test
  • Log4net -> Logging Application Blog
Mi punto es que es seguro, un axioma de hecho, que Microsoft no va a fomentar proyectos Open Source. Por eso mi apuesta por Mono. De no ser así, jamás hubieran visto la luz implementaciones No Windows. Entonces, se debe arrancar como se ha hecho hasta ahora, aunque sea "copiando" proyectos Java exitosos (Ant, JUnit, Spring, Hibernate, IBatis) para poco a poco ir madurando ideas "propias" , esto último suena medio limitado y egoísta. Al fin y al cabo estamos resolviendo los mismos problemas con los mismos conceptos (los patrones son independientes de la plataforma ¿cierto?

Una vez más regresamos a la gente, a la confianza, al compromiso, a los intereses comunes. Más que una empresa, estos valores e ideales deben ser el motor de cualquier comunidad. Incluso esta potencial comunidad tecnológica.

Finito.

Google entra al juego de las patentes

Por medio del blog de NeCuDeCo me entero que Google ha conseguido una patente sobre la interfaz gráfica de usuario :S ¡que onda!

Las patentes no son buenas, hacen daño, dan pena y se acaba por llorar....

Finito.

lunes, diciembre 04, 2006

Una API para comunicar a todos

Windows Communication Foundation (WCF) es una interesante plataforma de integración. Consolida varias de las tecnologías disponibles en Windows de MOM (Message Oriented Middleware) en una sola API.

En el proyecto Mono existe el subproyecto Olive cuyo objetivo es conseguir una implementación de las API's de WinFX/.NET3 entre las que se incluyen WCF. Sin embargo considerando la no dependencia de plataforma inherente a Mono, se ha dejado fuera el soporte a MSMQ. La razón es obvia: no existe fuera de Windows.

Sin embargo, el soporte de colas (queueing) es uno de los factores que consiguen soportar grandes volumenes de transacciones en ambientes empresariales. En lo particular creo que MSMQ ha sido desgraciadamente desaprovechado y prácticamente ignorado por varios arquitectos. Con WCF, se presenta de nuevo como una herramienta más a nuestro alcance y creo que también debe formar parte de Olive pero ¿cómo resolver la ausencia de MSMQ en otras plataformas?

De inicio pienso en ActiveMQ. Un proyecto Apache que también ha sido utilizado en algunos proyectos ESB Open Source. Una ventaja que recientemente ví es que funciona (al menos en la doc) en Windows y en Unixes. Igual y se puede pensar en IBM WSMQ que tiene el mismo soporte multiplataforma. La idea es entonces, construir una implementación abstracta de queueing para WCF y construir implementaciones especificas para diferentes productos. Y después integrar esto en Mono de manera que se complete el alcance de Olive.

Existe un pequeño inconveniente. Estoy en el proceso de aprender WCF :D. Esto implica que paso mucho tiempo en Windows para estar consultando la documentación en línea. Si bien también está disponible en MSDN, estoy limitado por la disponibilidad de una conexión a internet. El punto final es que voy a trabajar más tiempo en Windows y de ahí se deriva otro pequeño reto, la facilidad de compilar Mono en Windows.

La documentación que existe hace referencia a cygwin como "plataforma" para construir Mono en Windows. En el sitio de Paul Johnson existe una detallada guía para preparar el ambiente ya que requiere una combinación muy específica de versiones de las herramientas de construcción que realmente no he conseguido armar.

Pero bueno, los puntos a conseguir son los siguientes:

- Aprender WCF, particularmente los puntos de soporte a queueing.
- Aprender ActiveMQ y su binding con .NET
- Descubrir o crear el API para una integración genérica de WCF con productos de queueing.
- Llevar este código a Mono.
- Aprender a configurar un ambiente para compilar Mono en Windows.

Voy a abrir otro backpackit para darle seguimiento a este asunto.

Finito.

miércoles, noviembre 29, 2006

No soy el único

A todo el que me pregunta sobre Windows Vista invariablemente le contesto lo mismo: es (por que hoy se "liberó") el mayor fiasco de Microsoft.

No importa todo el festival que preparen, no importa lo bonito del empaque, no importa que lo acompañen de Office 2007 (este si mejoró bastante). Es un fiasco y lo van a maquillar con grandes anuncios de ventas (como si fueran a recibir discos de oro y de platino) y reportajes en todos los medios de lo mucho que ha mejorado el mundo con Vista.

Pero no es ni será cierto. Es más, hay gente del medio que no tiene urgencia de cambiar a Vista.

La única manera en que Microsoft lograría innovar en realidad sería desarrollar un totalmente nuevo sistema operativo. Sin mantener compatibilidad, sin reutilizar código, sin prometer las perlas de la virgen, sin pretender ser itasca.

Ya anteriormente hablé de como el desarrollo de Vista ha caído víctima del corporativismo. Y pa'muestra aquí hay otro botón.

Finito.

Jarro Negro en InnovaTec

¿Y qué creen? Los chavos de Jarro Negro se dan un rol por Tijuana en el evento InnovaTec y por otra parte, en el 4° episodio de ICEnetx participa Armando Rodríguez hablando del proyecto.

Lo que es ser joven.... :D

Finito.

Y nos dieron las 9, las 10 y las 11

Pues bien, ayer no se llevó a cabo la Reunión Mensual de la Comunidad .NET sin embargo varios compañeros de la Comunidad y algunas caras nuevas nos citamos para platicar sobre Mono, ASP.NET y lo que fuera saliendo alrededor de estos temas.

Iver fue quién proporcionó la mayor parte de la audiencia acompañándose de Luis Enrique Olascoaga y Erick Sánchez además de la curiosamente agradable visita de Akin0. Digo curiosa ya que lo conocí hace algún tiempo y me dejó una impresión tan buena que incluso hice un post acerca de su él y su trabajo. La parte agradable fue volverlo a encontrar y descubrir más puntos en común: el interés por Mono y por formar comunidades.

Para efecto de tener un espacio para platicar, nos adentramos en conocida cadena de cafeterías donde nos acomodamos como pudimos (el lugar estaba retacado) e inicié con lo traía preparado para la exposición de introducción al proyecto Mono. Una novedad que incluí en este demo fue el Mono Migration Analyzer o MoMA pa'los cuates.

MoMA es un programa que examina una lista de ensamblados (assemblies) y busca llamadas a métodos de la BCL que no se encuentren implementadas, estén marcadas con el atributo [MonoTodo] o que no tengan una implementación completa además de reportar las llamadas P/Invoke. Todo esto lo consigue haciendo uso de Cecil y al final se puede enviar el resultado a la gente del proyecto Mono, de hecho Miguel de Icaza se vé bastante animado con los informes que han llegado y ha publicado varios posts para dar a conocer los resultados acumulados.

En lo particular me parece una herramienta super importante ya que nos permite dos cosas:
  1. Identificar los puntos específicos a modificar en nuestras aplicaciones para conseguir una distribución multiplataforma y
  2. Identificar que métodos de la BCL se están usando y crear la implementación, es decir, desaparecer los [MonoTodo] y las excepciones NotImplementedException.
A lo largo de esta charla llegó Raúl "Superneurona" Guerrero, quién después de mi exposición se dió a la tarea de compartirnos un método harto interesante de pasar datos entre formularios web. La propuesta de Raúl es implementar una interface y que los formularios que van a compartir datos hagan la implementación de dicho contrato.

Raúl nos hizo el demo y ¡voilà! funciona! pero no lo dejo allí. Mostró una alternativa en la que el objeto que se va a compartir lo serializa y lo inyecta en el ViewState ¡cool!. Akin0 hizo la observación que al ir aumentando la complejidad de la clase proporcionalmente iba a crecer el tamaño de la serialización y por ende el ViewState. Como comentaron él y Raúl, y yo también creo, habrá que revisar cada escenario.

Cuando se acercaron a nosotros para avisarnos que ya estaban por cerrar el estacionamiento nos dimos cuenta que era hora de partir.

Por mi parte me quedó una satisfacción enorme de encontrarme con todos y de ver el nivel de conocimientos y habilidades que no se están quedando en una persona, por que el fondo de estas reuniones es compartir y ayer se repartió a manos llenas.

Finito.

jueves, noviembre 23, 2006

Saliendo al quite

Los miércoles (ayer) se imparte un taller de tecnologías Java a alumnos de la UNAM, generalmente lo imparte mi jefe, pero hubo una serie de confusiones y no pudo estar y según esto lo había cancelado pero al final llegaron los muchachos.

Aunque había estado participando, realmente no tengo todo el material (ni el expertise) para impartir el taller pero como los muchachos ya estaban aqui no se podía dejar que fuera en balde la visita. Así que a sugerencia de mi jefe, les platiqué de Mono :D

Retomé la presentación que impartí en CITEKNA.06 y partí de ahí. Realmente fue rápido, uno de los chavos tenía conocimientos de .NET y Mono. Ejecutamos algunos ejemplos del SDK de .NET con Mono, ejecutamos los ejemplos del SDK en Linux con Mono (1.2 y 1.1.17) y el cierre fue ejecutar Mono en Solaris :O

Hasta ayer solo era una idea vaga lo de ejecutar Mono sobre SPARC y fue más simple de lo que esperaba. Si bien no hice (ni se ha hecho) una prueba exhaustiva, es un buen inicio para tratar de incorporar Mono y por ende .NET en el ambiente "empresarial".

Hoy la lista de Mono Hispano preguntaba alguien como argumentar a detractores de Mono. Creo que no hay una forma contundente. .NET no se ha integrado como una plataforma "empresarial" (a comparación de J2EE), mucho menos Mono. ¿Está listo para este tipos de retos? Desgraciadamente tampoco lo puedo afirmar. Lo que sí se puede decir es que no es cosa de tecnología. Somos nosotros.

Nos gusta presumir Mono por aquí y por allá, pero no hemos conseguido espacios para foguearlo y ver realmente hasta donde llega. Es un lindo juguete pero para muchos es solo eso.

En el sitio de Mono, existe una sección con proyectos reales. Pero nada se compara con la experiencia propia. Asi que: propongamos. Veamos que retos existen y hagamos el compromiso con Mono para usarlo.

Como cierre, el próximo martes 28 de noviembre se realizará la reunión Mensual de la Comunidad .NET de la Cd. de México. La reunión anterior pedí la oportunidad de exponer acerca de Mono y hasta la fecha si bien no me han confirmado tampoco me han dado una negativa así que estamos listos para hacer la presentación.

Entonces, los espero en el WTC, piso 35 en las oficinas de Intersoftware a partir de las 19.00. La idea es que asista toda la gente interesada en Mono para empezar a formar una comunidad y empujar el proyecto.

Los espero.

Finito.

viernes, noviembre 17, 2006

Ahora si.... ya se los cargó el payaso,....

:@

Estoy que me lleva la ()/&%&#&/W"!!!!

Acabo de hacer la migración a Blogger Beta y me encuentro con varios... varios... decenas de comentarios que nunca había visto antes...... en serio.... Otra más y me cambio de blog engine.

Finito.

martes, noviembre 14, 2006

¿Terminaré algún día?

¿Alguien recuerda PartnerApi? (sonido de grillo)...

Pues bien, mi cerebro si lo recordó y heme aquí actualizando código de nuevo.

Más bien surgió de que instalé .NET 3.0/WinFx y pues me salió la duda: ¿cómo accederé el API de salesforce.com? No lo intenté (todavía) pero lo bueno es que retomé PartnerApi.

De hecho, se me ocurre intentar de nuevo la migración a Mono :P

Pa'más referencia y un meme, visiten mi BackPackIt

Finito.

jueves, noviembre 09, 2006

Es oficial: Mono 1.2

Acabo de ver en monologue el anunció de la liberación de Mono 1.2.

Esto ya se había anunciado desde el Mono Meeting, sin embargo me da una impresión de acelere/rush.

Desde la mañana se había anunciado la liberación, incluso en la lista de correos se vió con sorpresa la nota.

Bueno, es oficial. Mono 1.2

Finito.

martes, noviembre 07, 2006

Más noticias del acuerdo y un detalle curioso

Hoy publicó Novell un nuevo FAQ dirigido específicamente a la Comunidad Open Source en el cual responde varias preguntas que se han formulado en relación al recientemente anunciado acuerdo con Microsoft.

Habrá preguntas que nos hemos hecho, habrá otras que no. Creo que vale la pena visitarlo y si es necesario plantear nuevas dudas.

En otro orden de ideas, ya descargué e instale Mono 1.2 RC para Windows. Un detalle que me pareció curioso y práctico a la vez es que agregaron una opción a los menús contextuales para arrancar XSP/XSP2 en un directorio en particular. Una imagen dice más que mil palabras.


Y ya nomás pa'terminar, en Port 25 hay una entrevista harto interesante sobre la representación gráfica de actividad mediatica colectiva :S (mi libre traducción). Pa'que de'veras vean de que se trata, visiten este post en Port 25.

Finito.

.NET 3.0 liberado

Ayer se liberó formalmente el "esperado" .NET Framework 3.0 que permite a los desarrolladores construir aplicaciones con los nuevos API's que se crearon para Windows Vista (acuérdense: el próximo gran fiasco de Microsoft).

Entonces, ahora ya estamos en posibilidad de descargarlo e instalarlos para probar esta entrega. Lo que de inicio es deconcertante (para los que no veníamos siguiendo al detalle estas entregas) es que no existe la habitual combinación redistrubtable/SDK. Recordemos que .NET Fx 3.0 únicamente agrega API's a .NET Fx 2.0, realmente al fondo (muy en el fondo) seguiremos usando la versión 2.0.

Entonces, para más referencia, detalles y links para descargar, aqui están:

Y de paso chequen la nueva aparienca del home de Visual Studio 2005.

¡Ah! Y para aquellos morts que no escuchan el Podcast de Pozo Técnico, ahi les va Atlas

Finito.