enero 29, 2008

Sandcastle liberado

La primer versión oficial del proyecto Sandcastle (un documentador de código .NET) se acaba de liberar hace unos días. Está alojado en CodePlex donde se puede acceder a los foros, documentación, issue tracker, etc.

Esta herramienta trabaja reflejando (o como dicen por ahí reflectando) assemblies de .NET y puede tomar opcionalmente los comentarios XML del código fuente, y otras cosas. Es lo que se usa en parte para documentar el Framework .NET, así que el formato final es bastante conocido.

Valientes, a probar:
http://www.codeplex.com/Sandcastle

Show me the code!


Si una imagen vale más que mil palabras, los desarrolladores sabemos que un ejemplo de código puede valer más que un par de horas de teoría.

Siguiendo el modelo de CodePlex (que no será una de las maravillas del mundo pero es un lujo comparado con sus antecesor GotDotNet), Microsoft acaba de lanzar un nuevo sitio llamado Code Gallery.

Este sitio apunta más que nada a publicar series de ejemplos o aplicaciones sencillas, en lugar de proyectos completos como CodePlex. Este sitio es más parecido a un repositorio y no tiene funcionalidad de seguimiento de proyecto como CodePlex, por lo que debería resultar más sencillo.

Si cuenta con infraestructura mínima de foros y wiki como para documentar y comentar el código disponible.

Algo importante es que también es abierto a que cualquiera suba sus ejemplos, y en el sitio se declara específicamente que Microsoft no monitorea ni controla lo que se sube, por lo que hay que tener los cuidados de rigor. Por ejemplo, al bajar cualquier proyecto, no lo abra con Visual Studio y le de F5 sin mirar el código mínimamente (al menos asegúrese que no haya un PInvoke a SHFormatDrive...)

enero 25, 2008

Algún día voy a ir a esta conferencia

Siempre quise asistir al LangNet Symposium, pero hasta ahora no tuve la oportunidad. Para un fanático de los lenguajes de programación como el Maestro o Rodo e incluso para un diletante como yo, este evento es fantástico.

Es notable que a pesar de estar organizado por y dentro de Microsoft, hay varios presentadores de distintos sectores, como: John Rose, Dan Ingalls y Charles Nutter, de Sun; Seo Sanghyeon de Mozilla; y personalidades como Gilad Bracha (ex-Sun), Miguel de Icaza (Novell) y otros.

También muchos de los oradores de Microsoft son gente "extraña" dentro la compañía, como Jim Hugunin y John Lam, y algunos de los grandes motores de innovación como Anders Heljsberg, Erik Meijer y Jason Zander.

La buena noticia es que todas las presentaciones van a quedar disponibles públicamente, como ya se hizo costumbre. Para los interesados, aquí están disponibles los videos con el material de la edición 2006.

enero 21, 2008

OpenXML gana adopción

Para quienes no lo saben o no lo recuerdan, OpenXML es el nuevo formato de los documentos de Microsoft Office, y tiene unas cuantas ventajas sobre los anteriores:
  • Es un formato abierto
  • Se trata de archivos ZIP con otra extensión (docx, xlsx, pptx)
  • Dentro el ZIP hay archivos XML y los recursos adicionales necesarios (imagenes, etc)
El estándard ya fue aprobado por la ECMA, y está presentado (en un proceso bastante accidentado) ante la ISO. A pesar de tener bastante oposición de parte de la competencia, sin embargo, algunos de quienes se oponen ya están dándole soporte en algunos de sus productos y servicios, como Google e IBM.

Un dato muy importante que siempre trato de difundir es que a pesar de que los nuevos formatos aparecieron con Office 2007, pueden ser leídos y escritos también en Office 2000, XP y 2003 instalando el Office Compatibility Pack (27 MB).

Realmente, además facilitar mucho tareas como la de automatizar la generación de documentos Office en forma programática (no hace falta ni tener Office instalado; sólo poder generr XML y comprimir a formato ZIP), los nuevos formatos suelen ser mucho más compactos que los anteriores.

enero 18, 2008

Acerca del estado de IronRuby

IronRuby, la implementación open source (bajo la Microsoft Permissive License) del lenguaje Ruby, sigue avanzando, liderada por John Lam.

Quise compartir estos dos reportajes recientes acerca del proyecto:

The State of IronRuby with John Lam (infoQ)

Chatting with John Lam (AkitaOnRails)

enero 17, 2008

Generador de datos de prueba para SQL

Los amigos de Red Gate lanzaron recientemente una beta pública de su nuevo SQL Data Generator. El producto insipira confianza sabiendo que gente como Ben Hall estuvo trabajando en él.

Básicamente,
permite llenar bases SQL 2000 y 2005 en base a datos de muestreo existentes en varios formatos, más la generación de datos de prueba incluyendo cosas como la cantidad de nulos, valores únicos, rangos de valores con diversos algoritmos, etc.

Dentro de cualquier esfuerzo serio de calidad en un proyecto de software, el contar con volúmenes de datos importantes y con rangos de dispersión es fundamental. Hay montones de cosas que influyen en la escalabilidad y rendimiento de una aplicación en este aspecto, desde cómo se comporta el código hasta temas de optimización de consultas e inserciones, la manera en que los índices quedan paginados, etc.

Siempre es mejor probar desde temprano las aplicaciones contra una base de datos grande y llena, y esta herramienta es una buena alternativa.

Para escribir y ejecutar las pruebas en si, una buena alternativa reciente es xUnit.net, producto de los infatigables Jim Newkirk y Brad Wilson (ambos trabajando en Microsoft pero aportando código a la comunidad abierta). Jim es también el autor de NUnit, y este nuevo framework de testing es un poco el resultado de esa experiencia, con la decisión de comenzar desde cero con un paradigma mejorado.

Yendo al grano, xUnit tiene también unas extensiones, entre las cuales tenemos atributos para utilizar sets de datos como parámetros de entrada a los tests. Básicamente
[Theory] permite crear series de datos incluídos como [InlinData] para datos hard-coded en el test, [PropertyData] permite alimentar series mediante una propiedad devolviendo un IEnumerable, otra para Excel, y [SqlServerData] para tomarlos de una base de datos.

A estos se suma el infaltable atributo [AutoRollback] que envuelve todo el test en una transacción y la cancela al final, sin importar que el test pase o falle. Esto permite mantener la aislación entre tests, manteniendo la DB en un estado consistente.








enero 05, 2008

Arquitectura social

Tal vez por deformacion profesional, no puedo dejar de pasar la oportunidad para analizar Japon desde el punto de vista de un sistema complejo. La sociedad japonesa, con sus bemoles, es evidentemente eficiente si se la ve como un problema de arquitectura.

Escalabilidad

Que el modelo es escalable no se puede discutir. En 2006 la poblacion rondaba los 128 millones en el espacio fisico de la provincia de Buenos Aires. Y coexisten en forma ordenada y estable en base a -como era de esperar- una serie de principios sencillos que todos cumplen y mantienen vigentes.

El primer principio es como siempre, que todo se hace con enorme cuidado en el consumo de recursos. El espacio privado es bastante escaso, pero contrariamente a lo que cabria esperar, los espacios publicos son gigantescos. Y la limpieza y el orden son una tarea comun. Nadie ensucia ni tira nada fuera de los tachos (que no siempre estan a mano) y al tirar hay que separa latas, papel, plastico, etc. Esto evita que el procesar los residuos y reciclar lo que se puede sea una tarea imposible de realizar.

Interoperabilidad

Algo que llama la atencion y sirve como ejemplo, es ver como funciona el transito. Para comprender el contexto, debe tenerse en cuenta las caracteristicas de muchas vias en Japon. Siendo un pais con miles de a#nos de historia, la mayor parte de las calles internas en los barrios fueron trazadas alrededor de grupos de casas, sin planificacion urbana, y para ser recorridas a pie. El resultado es que hoy son calles estrechisimas por las que pasa un solo auto, o a lo sumo dos, a pesar de que la mayoria son extradelgados. Ademas, estas calles no tienen veredas, lo que agrega que los autos deben evitar a los transeuntes.

Como hacen para que el trafico fluya sin mayores problemas ni accidentes? Basandose en un mecanismo de regulacion auto-emergente. No hay demasiadas indicaciones. Cuando dos autos se cruzan, la regla es clara: la prioridad es que el otro pase. El primero en hacer una se#a para ceder el paso se mantendra quieto (o de ser necesario se apartara o retocedera) hasta que el otro pase. El protocolo es colaborativo: si uno esta apurado sabe que despejar el camino es la forma mas eficiente de avanzar.

Por supuesto, hay elementos que ayudan a que esto funcione, basados siempre en la misma premisa. Uno notorio son los espejos convexos en las esquinas, que se encuentran en todo el pais, hasta en los cruces mas apartados. Y siempre estan limpios y bru#idos, funcionales. Quien mantiene toda esa infraestructura? La gente. Hay organismos, por supuesto, pero se encargan en general de las excepciones, las reparaciones e instalaciones. Todo lo demas funciona en base al mantenimiento preventivo de la comunidad.

Agilidad

Finalmente, se confirma rapidamente que muchos de los conceptos de los metodos agiles estan basados en cuestiones inherentes a la cultura japonesa. Basta ver el layout de cualquier oficina, la manera en que interactuan y el trabajo que siempre es en unidades peque#as e inteligentes. Por otro lado, todo aqui se hace en peque#os pasos con resultados cuantificables. Incluso la arquitectura fisica es agil por estos lares. Uno puede ver construir una casa en una semana o dos, con un equipo de unas pocas personas, y hasta los edificios se ven crecer dia a dia, con un mecanismo de revision continua.

Claroscuros

Por supuesto, no todo es perfecto. En conjunto, no se ve por aqui mucha innovacion. Si se ve tecnologia y una implementacion formidable de muchos adelantos, pero salvo honrosas excepciones (piensese en Akio Morita o Kai Nishi), no son creaciones locales, sino mas bien adaptaciones, muchas veces con grandes mejoras, porque el nivel de ingenieria es excelente.

No quiero negar que existe una gran tradicion de desarrollo de productos aqui, pero no es comparable a la calidad de la implementacion. El motivo puede ser el necesario estilo de alta especializacion que exige el modelo, aunque siempre se trabaja en grupos interdisciplinarios usualmente cohesivos y apoyando la memoria colectiva.

Dejo fuera del comentario cualquier analisis mas profundo desde el punto de vista politico y humano, ya que es un tema demasiado abarcativo y en el que dudo tener capacidades apropiadas.

enero 02, 2008

MVP por otro año

Al parecer el sistema de control del programa MVP sigue teniendo ese bug inaudito que hace que al comienzo de cada enero se reactive mi condicion como Most Valuable Pirulo.

Y al parecer, el bug es tan viejo que sigo siendo premiado por... Visual FoxPro.

https://mvp.support.microsoft.com/profile/Martin.Salias

En fin. Gracias como siempre al excelente equipo del programa!

enero 01, 2008

Pop japones

Tradicionalmente los japoneses son muy afectos a la musica y como en casi todo, tienen una produccion local cuantiosa, y a diferencia de nosotros, casi no se escucha musica extranjera en la calle.

Inevitablemente, hay infinidad de grupos descartables, pero tambien perlitas. Me gusto en particular el duo Kobukuro, porque suena bien y sus videos son muy creativos.


Tsubomi (aproximadamente "pimpollo"):



Lamentablemente parece que la Warner de Japon le pidio a YouTube que no permita embeber algunos de sus videos, asi que en este va el link, para los interesados:

Winding road:
http://www.youtube.com/watch?v=7SmvCA_04o4

Fotos desde Tochigi-Ken

Aqui estan algunas de las fotos prometidas:

Maquinas expendedoras por doquier:

GPS en el auto (notese que manejan con volante a la derecha):


Detalle de la pantalla:


La mayor parte de las calles no tienen veredas, y son muy angostas. Increiblemente, casi todas son de doble mano y los autos se cruzan en base a pura costumbre de los conductores.




Las librerias son impresionantes. El mercado editorial y el consumo de material impreso siguen siendo gigantescos: