martes, 14 de diciembre de 2010

13 cosas que todo Programador debería saber

Portada del libro

A principio de este año O'Reilly publicó este libro que compila 97 cosas que todos en esta profesión deberíamos saber, expresadas por una serie de profesionales de diferentes orígenes, algunos muy famosos, otros no tanto.

Lo que no me había enterado es que el libro completo surgió de un proyecto colaborativo y abierto, y que todo el contenido está disponible en línea en forma gratuita, además de muchos otros consejos que quedaron fuera del libro, pero pueden ser leído y evaluados.

En la Wiki pública del proyecto puede accederse todo este contenido, proponer colaboraciones y muchos más.

Aunque el contenido principal está en inglés, creo que es un material interesante para revisar.

Una de las preguntas más frecuentes alrededor del proyecto es ¿por qué 97? La respuesta es que apuntaban a alrededor de 100 consejos, pero no querían caer en los obvios 99 o 101, por lo que decidieron tomar el número primo más cercano: 97. Toda una muestra del espíritu nerd detrás del proyecto.

Siguiendo ese tono, traduzco los primeros 13 puntos, con sus respectivos links a la wiki (cuyos textos siguen en inglés, lamentablemente; si alguien conoce alguna iniciativa para traducir el contenido, por favor, avísenme).

  1. Actúa con Prudencia por Seb Rose

  2. Aplica Principios de Programación Funcional por Edward Garson

  3. Pregúntate: "¿que haría el usuario?" (tu no eres el usuario) por Giles Colborne

  4. Automatiza tus estándares de código por Filip van Laenen

  5. La belleza está en la simplicidad por Jørn Ølmheim

  6. Antes de refactorizar por Rajith Attapattu

  7. Cuidado al compartir por Udi Dahan

  8. La regla de los Niños Exploradores por Uncle Bob

  9. Verifica tu código antes de buscar otro a quien culpar por Allan Kelly

  10. Elige tus herramientas con cautela por Giovanni Asproni

  11. Programa en el lenguaje del dominio por Dan North

  12. Codificar es Diseñar por Ryan Brush

  13. El formato del código importa por Steve Freeman

lunes, 13 de diciembre de 2010

Biblioteca open source de algoritmos y estructuras de datos para .NET

Frans Bouma

Frans Bouma, reconocido en la comunidad por su O/RM LLBLGen Pro, ha publicado recientemente en CodePlex una biblioteca open source para .NET cubriendo una cantidad importante de algoritmos y estructuras de datos clásicas que la Base Class Library no tiene, o cuya implementación podía mejorarse.

Algunas de las estructuras y algoritmos asociados son:

  • Comandos (y su administración): con soporte de undo/redo y grupos de comandos.
  • Grafos: directos y no-directos, sub-grafos, clausuras transitivas y ordenamiento topológico, etc.
  • Heaps
  • Colas prioritizadas
  • Ordenamiento
  • Bolsa de Propiedades
  • Implementaciones mejoradas de IEditableObject/IDataErrorInfo
  • Filtro de eventos
  • y otras utilidades menores

Esta biblioteca, llamada Algorithmia, se suma a las BCLExtensions, un conjunto de extension methods sobre varios tipos de la Base Class Library, para propósitos generales.

Ambos proyectos están disponibles en CodePlex, utilizando el soporte de código fuente de Mercurial y licenciados bajo BSD2.

Como Frans ya ha aclarado varias veces, no importa si a alguien le gusta más GIT que Mercurial o GitHub que CodePlex. Esas elecciones corresponden al autor, y sólo tienen importancia si uno está decidido a colaborar con el proyecto (para usarlo basta con un download plano de los fuentes), cosa que pocos hacen en la práctica, y quienes realmente quieren contribuir nunca tienen problemas en utilizar un cliente u otro de control de código.

 

viernes, 10 de diciembre de 2010

Finalmente está aquí: Chrome Web Store

Chrome Web Store

Como se venía anunciando desde hace tiempo, esta semana abrió al público la Chrome Web Store.

La idea de esta tienda en línea es brindar el mismo tipo de experiencia de búsqueda de aplicaciones con calificaciones y comentarios de usuarios, categorías, descripciones, y opciones pagas o gratuitas que los usuarios de teléfonos inteligentes disfrutan desde el éxito del AppStore del iPhone, y que fue replicado en Android, Windows Phone 7, la iPad y demás.

Hay bastante discusión en línea acerca de que esta tienda no es más que maquillaje sobre el concepto de links y favoritos, pero veamos un poco sus características:

Lo primero que notará quien la acceda desde un navegador que no sea Chrome será que las aplicaciones sólo funcionan en ese browser. La imagen a continuación está capturada desde mi Firefox.

Web Store Home

¿Porqué sólo funciona en Chrome? En principio porque las aplicaciones pueden ser de varios tipos.

El nivel más básico puede ser un sitio web tradicional al que se le agrega sólo algo de metadata que usa la tienda para identificarla. Pero también puede ser una extensión para Chrome o un tipo de aplicación web más específico que puede descargarse y correr incluso offline dentro del sandbox de Chrome. Estos dos tipos de aplicaciones pueden utilizar además el API de Chrome para brindar funcionalidad específica más integrada al browser mismo.

Desde el punto de vista de nosotros como desarrolladores, lo más importante es el Developer Dashboard, que permite publicar cualquiera de estos tipos de aplicaciones, sin restricciones específicas, ya que Google ha decidido dejar la tarea de evaluar las aplicaciones a los usuarios mismos. Para poder publicar cualquier cosa, debe realizarse un pago por única vez de 5 dólares, más orientado a verificar la identidad asociada a la cuenta utilizada que a otra cosa.

Más que ninguna otra cosa, este es un nuevo mecanismo para dar a conocer aplicaciones y sigue empujando el mercado de empresas pequeñas de desarrollo que pueden alcanzar una alcance global con facilidad.

El principal problema que veo a todo esto es que crea un nuevo silo en lugar de ser algo abierto, pero es un experimento interesante.

jueves, 9 de diciembre de 2010

Video: Virtual Alt.Net sobre Ruby on Rails

El pasado 20 de noviembre se realizó otra de las reuniones que organiza semanalmente la comunidad Alt.Net Hispano, esta vez dedicada a por completo a Ruby on Rails, y a cargo de Mario Chávez (Twitter: @mario_chavez).

Unable to display content. Adobe Flash is required.

Durante la sesión Mario recorre una serie de recursos interesantes que dejo detallados aquí para quienes quieran accederlos directamente:

  • Rails Hispano es un podcast sobre RoR en español, que se publica mensualmente, de media hora de duración.
  • Ruby on Rails Tutorials, de Michael Hartl: son varios tutoriales en video y texto, en inglés, y aunque hay parte del contenido pago, mucho es accesible en línea en forma gratuita.

Finalmente, agrego una noticia de color sobre Ruby. Para los fanáticos del Ratón Mickey puede ser interesante el anuncio de la primer conferencia Magic Ruby, a realizarse del 4 al 5 de febrero de 2011 en Disney's Contemporary Resort de Orlando, Florida, que conecta via monorail con los parques temáticos. Lo interesante de la conferencia es que es gratuita (aunque hay que pagar el pasaje y la estadía, claro).

 

martes, 7 de diciembre de 2010

Android 2.3 (Gingerbread) recién salido del horno

Siguiendo la tradición de ponerle nombres de cosas dulces a las versiones de sus sistema operativo para dispositivos, Google lanzó Android 2.3, conocido como Gingerbread, y su correspondiente Kit de Desarrollo.

Como curiosidad, estos son los nombres de las versiones anteriores:

1.51.62.0/2.12.22.3
CupcakeDonutEclairFroyoGingerbread

Cupcake

Donut

Eclair

Froyo

Gingerbread

Las mejoras principales de esta versión se enfocan en:
  • Mejoras para desarrollo de juegos Principalmente a través de mejoras en el tiempo de respuesta gracias a retoques en el garbage collector y manejo de eventos, y exponiendo más APIs nativas que permiten acceder a bajo nivel las entradas y sensores (incluyendo giróscopos), EGL/OpenGL ES, OpenSL ES, etc.
  • Más riqueza multimedia La plataforma soporta ahora estándares de video abiertos como VP8 / WebM, audio y voz AAC y  ARM-wideband, y agrega efectos como reverb, ecualización, virtualización de audífonos y mejora de bajos.
  • Más formas de comunicación La plataforma soporta múltiples cámaras, típicamente para una frontal utilizada en video chats, soporte de llamadas via internet via SIP/VOIP,  y NFC (Near Field Communications) para permitir que los dispositivos se comuniquen con otros dentro de un rango de proximidad de unos 10 centímetros.

Aquí dejo el video promocional:

Y la liberación de la nueva versión se cristaliza con la aparición en conjunto de un primer dispositivo que trae esta versión de fábrica, el Nexus S, que Google desarrolló en conjunto con Samsung. Dejo también el video promocional para que se entretengan: