Conferencia Rails 2009

logo conferencia rails
conferencia rails

Este año la conferencia rails promete, además de haber un día mas para talleres prácticos, vendrá gente como: Nathaniel Talbott, David A. Black, Yehuda Katz, Obie Fernandez y Scott Chacon.

Desde hace algún tiempo tengo curiosidad hacia otras alternativas a las bases de datos relacionales,  asi que voy a ir con muchas ganas a la charla sobre key value stores y a la de casandra DB.

Tampoco pienso perderme dos charlas que hablarán sobre el concepto de desarrollador,  el desarrollador total y la herramienta de desarrollo defintiva ,  ni tampoco la de alternativas ligeras a rails.

Nos vemos allí 🙂

Enviar emails desde rails a través de gmail

Pensaba que rails soportaba el envio de emails con tls de serie, pero no es asi. Para poder enviar emails a través de gmail, es necesario usar tls, pero es muy sencillo de añadir mediante un plugin:

Y ya solo queda añadir el parametro en la configuración de ActionMailer para que use tls:

Después de haber hecho durante años las validaciones de email mediante mas o menos complicadas regex, he descubierto que la libreria Tmail tiene una clase Address, que te parsea la dirección de email y te lanza una excepcion si no es correcta. Asi, por ejemplo para validar un email podemos hacer:

dreaming in code

Dreaming in code

Dreaming in code es la historia de un proyecto de software, con gente muy brillante, ideas muy buenas e innovadoras, pero que fracasa estrepitosamente. Como dice el subtitulo del libro:

Two Dozen programmers, three years, 4,732 bugs, and one quest for trascendant software.

Lo mejor del libro es como explica la dificultad de desarrollar software. El autor, Scott Rosenberg es un periodista con experiencia como programador, cuenta de una manera muy divulgativa y muy clara por que que cuesta tanto hacer software que funcione bien, entregarlo a tiempo, y que sea fácil de usar. En este caso cuenta la historia del desarrollo de Chandler, una agenda para gestionar calendarios, tareas y notas de una forma muy eficaz. Te hace pensar que para gestionar tareas no tenemos ninguna herramienta que sea efectiva y productiva.

La fuente de ideas y de dinero para el proyecto,  Mitchell Kapor,  es uno de los creadores de lotus 1.2.3 tenia mucho dinero (que habia ganado con Lotus) y decidió crear chandler retomando muchas de las ideas originales de Agenda, un programa para msdos que no llego a triunfar por su curva de aprendizaje.

El desarrollo de chandler empieza en el 2001,  pero pronto empiezan a tener problemas, el proyecto se vuelve demasiado ambicioso, y los miembros del equipo pasan mucho tiempo desarrollando partes de forma aislada y no pueden enseñar o ver nada. Por ejemplo, como en aquella epoca estaba muy de moda el p2p, decidieron crear un nuevo sistema de ficheros que fuese descentralizado. Y el proyecto se empieza a convertir en un sumidero de horas de trabajo y dinero.

Finalmente, aunque tardaron varios años mas de lo previsto en tener algo que se pudiera enseñar y Kapor abandonó el proyecto, lograron sacar Chandler, aunque con bastantes modificaciones respecto a la idea original. Ya no seria una aplicación p2p, si no que tendria un servidor (en java) y un cliente (python). Chandler ahora mismo tiene muy buena pinta, y es bastante usable aunque algo pesado, pero tiene muchas ideas que podrian influir mucho en cualquier gestor de tareas / agenda nuevo.

Muy recomendable, y no solo para gente técnica.

git y subversión

Para empezar a coger práctica con git, aunque uso subversion para los proyectos con los que trabajo, he empezado a usar git-svn, asi en local trabajas con un repositorio git, y luego lo sincronizas con el repositorio subversión. La forma de trabajo seria mas o menos así:

git svn clone --username your-name
https://theworlddominationproject.com/svn

# Creamos una nueva branch
# en la que trabajamos y hacemos commits.

git checkout -b work

# Luego cuando queremos subirlo todo al subversion:
git checkout master
git svn fetch
git rebase master work
git checkout master
git merge work
git svn dcommit

Una de las ventajas que tiene trabajar asi, (aunque uses subversion) es que si estas haciendo bastantes cambios, puedes hacerlos en una branch en local, y si tienes que arrglar un pequeño bug, es muy rapido en local cambiarte a otro branch, arreglar el bug, subirlo y volverte a cambiar al branch en el que estabas trabajando.

excel desde ruby

Hace poco tuve que hacer algunas pruebas para ver como leer documentos excel desde ruby, y descubrí que gracias a la gema spreadsheet es realmente fácil.
require 'spreadsheet'
book = Spreadsheet.open '/path/to/an/fichero.xls'

# Para acceder a las páginas:
book.worksheets

# Para acceder a una página en concreto
sheet1 = book.worksheet 0
sheet2 = book.worksheet 'Sheet1'

sheet1.each do |row|
# hacemos algo con cada fila.
end

# También podemos acceder directamente a una fila
row = sheet1.row(3)

# Y para acceder a un elemento de una fila:
row[0]

Aunque no he probado a escribir en un excel, parece también muy sencillo.