domingo, 31 de agosto de 2008

Prototipado rápido de sistemas

El paper prototyping es una técnica para crear prototipos de software sin programar nada, sólo usas lápiz, papel, una persona que juega el rol de computadora y el usuario, quien utiliza las interfaces dibujadas en el papel como si fueran de verdad.

Mediante esta técnica se pueden crear prototipos de interfaces de una manera muy rápida, garantizando que el software construido al final tendrá una mayor coherencia interna y surgirán menos contratiempos durante la fase de codificación.

Aquí les dejo unos videos para que vean como funciona.



Miren cómo aquí hicieron un demo de un software para PDA sin haber programado nada.



Tal vez muchos estén ahora pensando que es (como dicen los españoles) una chorrada. ¿Cómo eso me va a permitir construir mejores sistemas?. En realidad tiene sentido.

Piénsenlo, ¿los sistemas para quien los hacemos? la mayor parte de las veces es para usuarios. A los usuarios lo que les importa es que puedan hacer con el sistema aquello para lo que fue creado. Eso es todo. A ellos no les interesa cómo y con qué esta hecho.

Ahora piensen, ¿los usuarios cómo interactúan con el sistema? mediante interfaces. Las interfaces son la parte del sistema que el usuario ve. Más aún, para el usuario la interfaz ES el sistema.

Para los desarrolladores podría ser el código, la base de datos, las clases, los patrones, las funciones, los métodos, los frameworks y la relación entre todos esos componentes para generar cierta información o realizar algunas acciones determinadas. Pero para el usuario no.

Siguiendo con esto, analicemos, cuando se nos solicita mostrar un prototipo dentro de X tiempo ¿qué es lo que normalmente se hace? codificar "algo" para tener "qué mostrar" e "irlo corrigiendo" según las especificaciones del usuario. Muchas veces ese "algo" termina convirtiéndose en el sistema final ¿cómo? con parches. Uno sobre otro, uno sobre otro, hasta que "funciona" como el usuario quiere.

Muy mal. Desde ahí está mal. Así no es como debe ser. Cuando un arquitecto construye una casa no hace una construcción inicial parecida a lo que cree que su cliente pide y luego va derribando muros y construyendo y volando habitaciones o pisos enteros hasta que queda como su cliente realmente la quiere. Sería una locura y al final quedaría un adefesio, como mi amigo el adriel me confirmo.

Pues entre quienes hacemos software eso es una práctica muy común, claro, aplicado a nuestra área. Pienso que si pudieramos hacer las cosas bien desde el principio se evitarían muchos problemas cuando llegue el momento de darle mantenimiento a nuestro software.

¿Los arquitectos que hacen en lugar de eso?. Ellos al principio de sus proyectos no construyen NADA. Muestran bocetos, maquetas, croquis poco detallados, ideas generales. ¿Entonces porqué nosotros tenemos esa manía de codificar desde el principio? ¿no nos han enseñado que la codificación es una de las últimas fases del proceso de desarrollo? ¿no es una de las enseñanzas de Vertti-sensei? pero en la práctica no se siguen las fases como debe ser, se mezclan aspectos de una y de otra.

¿Porqué no aplicar algo así nosotros también? ¿el usuario quiere ver cómo funcionará la interfaz no? pues vamos a darle precisamente eso. Ya que esté contento entonces Y SÓLO ENTONCES codificamos el sistema.

Sí, ya me imagino las objeciones. ¿Para qué perder el tiempo haciendo dibujitos si lo puedo programar de una vez y así ahorro tiempo?. Los usuarios son criaturas caprichosas e impredecibles. Un sólo cambio en la interfaz te puede tirar gran parte de la lógica interna del sistema, provocando tener que reescribir incluso módulos enteros. El estar reescribiendo tu código realmente no es mucho ahorro de tiempo que digamos.

Cuando se trata de programas simples podría no ser necesario, hasta es trabajo de más, pero en sistemas de tamaño medio, un pequeño cambio a una parte del código le pega a varios módulos o clases que dependen o están relacionados con ella.

Estar aplicando cambios en muchos lugares diferentes no es divertido, por esa razón al final queda todo parchado, para no cambiar el comportamiento del código original terminamos agregando algunos hacks sucios por aquí y por allá "sólo en esta parte" para que el código nuevo "jale". Después vienen los problemas.

Propongo que empecemos a cambiar la forma de realizar sistemas en nuestras organizaciones, estas son cosas que ya se vienen haciendo desde hace rato en otros países, pero por alguna razón no ha tenido difusión por acá. Tal vez existe temor de cómo será visto el ingeniero o el programador que no programa sino que "hace dibujitos" o que el usuario se sienta tonto picando botones en una hora de papel, pero por nuestro bien deberíamos superar eso.

Esta no es la única forma de hacer prototipos, debe haber varias y tampoco es aplicable para todos los casos, como cuando tu usuario es remoto y sólo te comunicas con él por teléfono. Para esos casos debe haber otras herramientas que nos sirvan, es cuestión de investigar. Por lo pronto el php forms del buen rafa-kun se ve bastante interesante, pero no se anima a liberarlo. Creo que eso es top secret y no debería estar hablando de ello aquí.

miércoles, 13 de agosto de 2008

Acuario plantado de baja tecnología

Ahora me puse a experimentar con los acuarios plantados lowtech como les dicen en inglés.

Las plantas acuáticas son un tanto complicadas, se necesita equipo como tubos de luz fluorescentes, fertilizantes, sistemas de CO2... a mi nunca se me ha dado bien crecer a esos organismos vivos.

Entonces dije: bueno, vamos a simplificar las cosas. Y me puse a investigar. Así me enteré de la existencia del método desarrollado por Diana Walstad que es simple y sencillo y que aparece en su libro Ecology of the Planted Aquarium, el cual nunca he leído porque no me interesan por ahora los detalles de cómo funciona, sólo como llevarlo a la práctica.

Básicamente la idea es que las plantas absorben los desechos generados por los peces, actuando como un filtro natural, además de producir oxígeno. Se supone que más o menos así es en la naturaleza. Esto significa que no es obligatorio tener filtro, algo radical para la acuariofilia tradicional. También se dice que bien aplicado el método sólo es necesario hacer cambios de agua cada 6 meses, algo impresionante.

Sin embargo hay algunas restricciones:
  • La población del acuario debe ser alrededor de 1/3 de lo normal.
  • No todas las plantas acuáticas sirven para esto, sólo las de dificultad fácil, en especial se deben evitar las de hojas rojas por sus elevados requerimientos.
  • El acuario debe estar muy bien plantado, densamente, ya que las plantas no filtran tan eficientemente como un filtro mecánico y se requieren muchas para que el efecto se note.
  • El acuario debe recibir luz solar indirecta, al menos 1 hora o dos por día.
Eso es todo ¿bastante simple verdad? y barato sólo se necesita:
  • Plantas acuáticas
  • Pecera
  • Tierra para maceta o sustrato nutritivo para acuarios
  • Grava para acuarios
  • Peces
  • Agua desclorada
A mi me salió en $0 porque ya tenía todo eso, pero comprándolo todo debe salir como en $250 MXP o menos, claro para algo pequeño-medio.

Saqué las plantas acuáticas de la pecera grande, la pecera a utilizar es una de 12 litros de cuando crie bettas, la tierra de maceta utilicé de la última que le quedaba a mi mamá para sus plantas, la grava ya la tenía y el pez es el último sobreviviente que me queda de los bettas que crié, una hembra azul, que tiene la ventaja de respirar aire atmosférico y no necesita oxígeno del agua, en caso de que las plantas no produjeran el necesario.

Seguí las instrucciones del wiki: una capa de tierra para maceta de 1 pulgada de grueso y otra encima de grava del mismo grosor. Planté las plantas que saqué de ka pecera grande, 3 vallisnerias y una que no se como se llama pero es de esas que tienen un tallo grueso que va pegado al suelo y que algunos suelen plantar en troncos.

Fue lo único que pude sacar de la pecera grande, tan mal se dan las plantas allá a pesar de toda la tecnología que he utilizado en estos años, sólo eso sobraba y la de tallo la saqué a ver si revivía porque ya nada más le quedaban tres hojas muy pequeñas, una de ellas rota y otra con hoyos.

Ahí ya estoy incumpliendo una regla, eso no es un acuario densamente plantado, no lo es ni de broma, pero pues nada más es algo experimental a ver que pasa.

Tuve y tengo algunos problemas. Lo primero fue que como era de esperarse, las plantas eran muy pocas para consumir el amoníaco generado durante los primeros días debido a la materia orgánica en descomposición, así que hubo que hacer cambios de agua del 50% diario durante la primera semana. Por suerte esto fue rápido, al ser una pecera chica sólo era cuestión de sacar agua y rellenar, no más de 10 minutos.

Una vez resuelto la siguiente semana hice cambios de agua cada 2 días. Al parecer las plantas empezaron a consumir el amoníaco más rápidamente y ya no fue necesario hacerlos tan seguido. Buena señal.

Hubo otro problema, como todo aficionado a los acuarios sabe, en una pecera chica es más difícil mantener estables las condiciones del agua. A mí me afectó la temperatura, el clima de Toluca es muy variable y frío, durante el día la temperatura del agua estaba alrededor de los 22ºC y en la noche baja a menos de 10ºC. Esos cambios debilitaron a mi pez y le cayó un ligero ataque bacteriano, que solucioné durante la tercer semana con otra vez cambios de agua diarios, sal y un calentador automático con sensor de temperatura que tenía guardado.

En climas más cálidos no se necesitaría o bien podría conseguir peces de agua fría como neones chinos o medakas pero aquí nunca llegan de esos peces y hay que conformarse con lo que llega. Para agua realmente fría sólo se consiguen charales que se compran como alimento para otros peces o tortugas. Muchos peces supuestamente de agua "fría" su temperatura mínima es de unos 22ºC y eso aquí es calor. Por eso mejor un betta aunque tenga que mantener la temperatura de algún modo, además ya lo tenía.

Bueno al final parece que ya se está estabilizando todo. El último cambio de agua se lo hicé hace 4 días y todo parece estar bien. Las plantas se han multiplicado, ahora tengo 7 y contando. La que se estaba muriendo ha mejorado, las hojas viejas crecieron un poco y tiene dos nuevas. Todo ello śolo con luz del sol, no hay filtros ni nada, sólo el detalle del calentador.

Sin embargo aún queda un problema, de pronto aparecieron algas y se están reproduciendo muy rápido. Confío en que eventualmente cuando haya suficientes plantas metabolizaran los nutrientes antes que las algas y ésta morirán. Aquí unas imágenes de como va (sí, ya se que no se tomar fotos):






Tal vez no es nada impresionante, pero es algo experimental que monté en media hora con diferentes piezas que tenía por ahí guardadas ¿qué querían? lo interesante es que todo el mini ecosistema artificial se mantiene sólo con luz solar, ¿pueden creerlo? sólo luz solar... bueno y alimento para peces y el calentador, pero incluso viven ahí algunos caracoles y planarias, pero esta vivo ¡vivo!.

sábado, 9 de agosto de 2008

Usos Alternativos

El lenguaje sirve para comunicarnos, pero no sólo para eso.

Si seleccionas la munición correcta, es un arma de control mental fantástica. Y funciona en ambas direcciones, como a Salvor Hardin le gustaba.

Enseñanzas de Vertti-sensei IV

"El secreto de la vida es el trabajo en equipo".

-- Vertti-Sensei