Archive - tech RSS Feed

John Underkoffler: El futuro de la interfaz de usuario

John Underkoffler fue el consejero cientifico de Minority Report, y es el creador de g-speak, la implementación real de la impresionante interfaz de la película. En el primer video se puede ver g-speak en plan demo, en el segundo John cuenta en TED como funciona esta tecnologia y como espera que esté disponible en todos los ordenadores en unos cinco años.

We build castles in the air, from air…

Una de las citas que mas me gustan para explicar como funciona el desarrollo de software de Frederick Brooks:

“The programmer, like the poet, works only slightly removed from pure thought-stuff.

“He builds castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.

“Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms.

“The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be. …

“The computer resembles the magic of legend in this respect, too. If one character, one pause, of the incantation is not strictly in proper form, the magic doesn’t work. Human beings are not accustomed to being perfect, an few areas of human activity demand it.

“Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.”

From The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition

the way you think

A language that doesn’t affect the way you think about programming is not worth knowing — Alan Perlis

Balsamiq Mockups

Una de las partes mas complejas de desarrollar una aplicación es la comunicación entre las distintas personas involucradas. Es fácil que se creen malentendidos, que en ocasiones pueden generar mucha frustración, y una gran perdida de tiempo malgastando esfuerzos en la dirección equivocada. Creo que siempre ayuda mucho más hacer bocetos o cualquier otro tipo de gráfico para representar lo que se quiere, que una lista de cosas que se pueden entender de muchas formas.

Illusion of agreement

Illusion of agreement

Y una aplicación que me encanta, para poder hacer muy rápidamente bocetos de las pantallas de tu aplicación, es Balsamiq Mockups. A pesar de estar hecha en AIR (el aspecto de estas aplicaciones no me suele gustar) es muy bonita, y realmente sencilla. Una prueba definitiva de lo sencilla que es es que se puede empezar a usar sin tener que usar la documentación. Solo tuve que consultarla para ver como enlazar dos mocks entre si, que aun así es muy fácil. Es mucho más rápido (al menos para mi) hacer bocetos de las pantallas con Balsamiq Mockups que dibujarlos a mano. Además tiene un modo presentación a pantalla completa.

Pero lo que realmente triunfaría sería poder editar y compartir mockups de forma remota, no se si mediante una interfaz web o algo parecido. Eso es lo que mas echo de menos para poder trabajar de forma colaborativa a distancia.  No me gusta que sea software privativo, pero no conozco otra alternativa libre. Y aunque la licencia vale unos 79$, si escribes una revisión en tu blog te dan una licencia gratis :-D

Aqui podeis ver un pantallazo sobre un mockup de la aplicación en la que estoy trabajando ahora:

facturagem_mockups

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.

Programming

Visto en la lista de correo de rspec, via Alex:

“Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.”

Page 1 of 212»