Desde que tengo memoria, pintar cosas con colores me costó muchísimo.
En la escuela primaria, por ejemplo, mis cuadernos tenian dibujos en lápiz negro, y grisados. Mi abuelo dibujaba así y lograba efectos buenísimos.
Para mi los lápices de colores se transformaban en bestias indomables que desparramaban color sin llegar a gustarme.
Cuando empecé a programar, siempre me escudé en "Yo hago la lógica, que otro le ponga colores". En fin, años de traumas por no poder combinar dos colores o mas.
Hace un par de años, en una de las visitas a mi genial sobrina Catalina, mis tios le mandaron conmigo una caja de acuarelas, y yo le llevaba libros de Oliver Jeffers.
Fue asombroso.
Probablemente tendría que escribir un post entero sobre como el hacer actividades en las que nos sentimos inseguros, junto con niños, puede cambiar nuestras perspectivas.
El resultado, montones de dibujos "en colaboración" con mi sobrina, analizamos juntos los dibujos de Jeffers y tratamos de darnos cuenta como lograba los efectos.
En ese momento, me di cuenta que necesitaba volver a dibujar y mejorar mi tema con los colores.
Miré videos, lei tutoriales sobre teoria del color y nada parecia mejorar.
Entonces mi primo Nahuel, me recomendó una charla, que me hizo cambiar mucho mi forma de ver las cosas:
En resumen, si no van a ver el video completo:
Dibujar todos los días, analizar que nos gusta de las cosas que nos gustan, copiar y transformar.
Una de esas cosas que hice fue mi portada para twitter usando pixeles grandotes. Para eso usé inkscape, y fue bastante engorroso.
Terminada la portada, me animé a hacer un patron para usar de fondo, el resultado... triste...
Es difícil hacer patrones repetitivos, sin que "el atomo" que se repite sea demasiado obvio.
Por eso, luego de escribir toneladas de javascript para el proyecto en el que estoy laburando, decidí tomarme un rato de programación lúdica, y armé pixium, una herramienta muy sencilla, para crear patrones.
El resultado, adictivo.
Como conclusión: dibujar y programar son cosas parecidas, ambas implican creatividad, y la mejor manera de estimularla es haciendo y analizando. Eso, creo, es fundamental para aprender.
viernes, 3 de octubre de 2014
lunes, 16 de septiembre de 2013
Chau Carlitos
La semana pasada falleció mi querido abuelo Carlos, un inmenso filosofo y guia en el trajín de la existencia.
Sentí la necesidad de escribir unas palabras para leerle a la familia, antes de que su cuerpo sea cenizas. Lo comparto aquí:

Pensé que sabía como era la tristeza.
Pero no sabia.
En este ultimo tiempo, empece sin darme cuenta a vivir como vivías: mas despacio, mas en el presente; saboreando el tiempo sin apuro, disfrutando toda la belleza sutil que los hombres pudieron ver en un tiempo. Y es tan bello.
Que suerte tuvimos de tenerte cerca, paisano del medioevo. Nos dejaste las herramientas y la sabiduría para transformarte en leyenda. Nos dejaste el amor por la simpleza, por lo bello, por los culos de rebosantes gorditas porteñas.
Nos querias. Lo demostrabas con formas acordes a tu personalidad. Nunca regalaste un libro. Regalaste invitaciones a leerlos, y cumpliste tu objetivo de despertar miradas y enseñar a ver.
Ahora la digestora del tiempo nos hará recordarte. Nos la dejaste fácil. Basta con repetir tus frases, escuchar tus canciones favoritas. Mirar con ojos atentos, o sentarse en el banquito (del museo de Bellas Artes) a planear un robo romantico e imposible. Como vos.
Vas a ser el héroe de tataranietos curiosos por saber de ese pequeño cúmulo de sabiduría, amor y sensibilidad. Gracias. Por escuchar y por ser. Por dejarnos un cacho tuyo aun por descubrir.
Ha muerto un gran hombre. Lloro por los irreversible.
Sentí la necesidad de escribir unas palabras para leerle a la familia, antes de que su cuerpo sea cenizas. Lo comparto aquí:

Pensé que sabía como era la tristeza.
Pero no sabia.
En este ultimo tiempo, empece sin darme cuenta a vivir como vivías: mas despacio, mas en el presente; saboreando el tiempo sin apuro, disfrutando toda la belleza sutil que los hombres pudieron ver en un tiempo. Y es tan bello.
Que suerte tuvimos de tenerte cerca, paisano del medioevo. Nos dejaste las herramientas y la sabiduría para transformarte en leyenda. Nos dejaste el amor por la simpleza, por lo bello, por los culos de rebosantes gorditas porteñas.
Nos querias. Lo demostrabas con formas acordes a tu personalidad. Nunca regalaste un libro. Regalaste invitaciones a leerlos, y cumpliste tu objetivo de despertar miradas y enseñar a ver.
Ahora la digestora del tiempo nos hará recordarte. Nos la dejaste fácil. Basta con repetir tus frases, escuchar tus canciones favoritas. Mirar con ojos atentos, o sentarse en el banquito (del museo de Bellas Artes) a planear un robo romantico e imposible. Como vos.
Vas a ser el héroe de tataranietos curiosos por saber de ese pequeño cúmulo de sabiduría, amor y sensibilidad. Gracias. Por escuchar y por ser. Por dejarnos un cacho tuyo aun por descubrir.
Ha muerto un gran hombre. Lloro por los irreversible.
jueves, 6 de junio de 2013
El pequeño imcomprendido
Este post podría hablar de mi mismo, de los problemas que creo que tengo para lograr que otras personas me entiendan, pero no, eso lo dejo para otro día, o mejor para el diván.
Hoy revisar un poco sobre otro pequeño incomprendido, que comparte mis iniciales: JavaScript
Según cuenta la leyenda, a javascript lo crearon entre gallos y madrugada, y como estaba aparentemente listo y completo, lo metieron en Netscape, así como estaba. No es que JavaScript no sea un lenguaje de programación "turing completo", es que hay algunos comportamientos que son distintos de lo que un programador con cierta experiencia podría esperar.
Hoy revisar un poco sobre otro pequeño incomprendido, que comparte mis iniciales: JavaScript
Un poquito de historia
JavaScript fué creado en Netscape por Brendan Eich. Querían un lenguaje interpretado fácil de aprender, en cierta forma, como Visual Basic. El nombre en clave era "Moca", pero como en ese momento estába de moda Java, le pusieron JavaScript. Esa fué, en mi opinión uno de los principales vectores de la confusión e incomprensión que sufre el lenguaje. Si querés aprender y no sabes la diferencia, podes llegar a seguir un tutorial complejo de Java por error, y los lenguajes, en si, solo comparten cierta sintaxis heredada de C.Según cuenta la leyenda, a javascript lo crearon entre gallos y madrugada, y como estaba aparentemente listo y completo, lo metieron en Netscape, así como estaba. No es que JavaScript no sea un lenguaje de programación "turing completo", es que hay algunos comportamientos que son distintos de lo que un programador con cierta experiencia podría esperar.
Como lo viví yo.
Si bien mi primer lenguaje fue Logo, allá por 1994, y tuve pasos fugaces por Visual Basic y C++, mi romance mas fuerte fue con python. Python es un lenguaje lindo, es como una chica linda, inteligente y comprensiva, que te ayuda a que programar, te avisa cuando estas haciendo burradas, y por lo general es sincera con vos. Esas "bondades" hacen que uno analice muchos aspectos de otros lenguajes de programación. Desde ese punto de vista, JavaScript es horrible, criptico, e impredecible.
Pero siempre en la vida de un programador, por necesidad, o eventualidad tenes que escribir código PHP
(que tire la primera piedra quien esté libre de PHP...) y ahí la visión cambia. PHP es como el estereotipo de minita, es lo que quiere el mercado, cuando las cosas no andan bien no te dice nada, cuanto mas lo conoces mas de mentira te das cuenta que es, y termina siendo una relación dolorosa (Por ahí para PHP no porque es bien minita). Desde esa comparación, JavaScript queda bien parado. Vendría a ser el lenguaje mas humano posible, con sus idas y vueltas, pero real, sin mentiras. Los lenguajes de programación, son en cierta forma como las personas, si te dejas llevar por la primera impresión, te podes equivocar, y tienen imperfecciones, como todos, si, hasta Python tiene sus grises.
Por donde arrancar
Al menos para mi, es importante estar motivado para hacer algo, las cosas que mas me motivan de JavaScript, es que esta cada vez en mas lugares, o mejor dicho, hay cada vez en mas dispositivos que tienen browsers. Por otra parte, existe node.js, que nos permite escribir servidores asincronos usando el lenguaje, e incluso hay robots que usan JavaScript.
Lo que considero clave para aprender y querer al lenguaje, es aceptar que es distinto. No tiene clases "per se", y los ciudadanos de primer nivel son las funciones. Es un lenguaje funcional.
Muchas veces me paso de encontrarme con código en el lenguaje "X" como si fuese el lenguaje "Y". (Python como si fuese java, ultimamente). Es algo muy normal cuando trabajamos con una mezcla de tecnologías (en el caso de que desarrollemos web), pero lentamente, es importante profundizar en las diferencias, para escribir mejor JavaScript.
Los materiales que mas me sirvieron
Mi heroe personal en materia de Javascript es Douglas Crockford, autor de el ya mítico "The World's Most Misunderstood Programming Language", lamentablemente, no puedo recomendar traducciones, porque... no me gustan las traducciones.
Para seguir avanzando, y entendiendo el lenguaje, el elegido es "JavaScript the good parts".
Paul Irish, también es un crack, el screencast de "10 cosas que aprendí mirando el código fuente de JQuery", es un material tremendo.
miércoles, 5 de junio de 2013
Zafá del xml con Tryton Builder!
Hay cosas que no me gustan, y hay cosas que detesto. En esa escala de valores, en el primer lugar está PHP y en el segundo los XMLs. Como conté en el post anterior, estoy desarrollando algunos módulos para Tryton, que define sus vistas, y elementos de interacción usando ese lenguaje de markup.
Hay varios artículos que hablan que uno tiene que ser un programador vago, yo estoy totalmente de acuerdo con que hay que ser un programador que automatiza al máximo el trabajo que no le gusta hacer, para poder dedicar el tiempo a problemas mas complicados o atractivos, o a mirar por la ventana.
En mi intento por zafar de escribir varios cientos de '<',' /', y '>' a mano nació Tryton Builder (Que tiene logo y todo!)
En el ejemplo, estoy realizando todos los pasos para generar el modulo de ejemplo del wiki de tryton
Hay varios artículos que hablan que uno tiene que ser un programador vago, yo estoy totalmente de acuerdo con que hay que ser un programador que automatiza al máximo el trabajo que no le gusta hacer, para poder dedicar el tiempo a problemas mas complicados o atractivos, o a mirar por la ventana.
En mi intento por zafar de escribir varios cientos de '<',' /', y '>' a mano nació Tryton Builder (Que tiene logo y todo!)
Por el momento, para generar un módulo, hay que escribir un pequeño archivo de código (Si, es código python, porque me gusta programar, no parametrizar, yamls, csv, y ese tipo de cosas) de este estilo:
Solo para comparar la diferencia de caracteres escritos versus generados:
El proximo paso, es armar una interfaz de consola como la de los scaffolders de Ruby On Rails
martes, 4 de junio de 2013
Monkey Patcheando Element tree para soportar cdata
Hace un tiempo que estoy trabajando con Tryton, el ERP libre, escrito en python, y como me gustan los scaffolders de Rails, decidí escribir uno para armar los esqueletos de los módulos.
Tryton, no se bien por que motivo, utiliza mucho xml, para definir vistas, y fixtures de datos. Como me gusta programar en python, me empezé a escribir una especie de DSL para definirlos de una manera mas amigable:
https://github.com/joac/tryton_builder
Python permite trabajar con xml con un montón de bibliotecas distintas, pero las mas amigable de usar, para mi es ElementTree
Cuando empece a escribir el codigo, y hacer pruebas, me encontré con varios problemas, el primero, ElementTree no tiene "Pritty Print"
para que el xml generado sea mas cómodo de leer, por suerte encontré esta receta:
en http://effbot.org/zone/element-lib.htm#prettyprint que resolvió correctamente el problema
Avanzando en el diseño de los scaffolders me encontré con otra limitación ElementTree no soporta el tag CDATA. Usted podria preguntarse "¿Que es el tag CDATA?", Básicamente un tag que le dice al parser "Lo que esta aca adentro es un conjunto de caracteres, no lo parsees"
Si bien se puede evitar el uso del tag, ingresando el texto escapado (por ejemplo, en lugar de '>' escribir '>' ) el objetivo es que el XML no deje de ser legible, encontré otras recetas en StackOverflow:
http://stackoverflow.com/questions/174890/how-to-output-cdata-using-elementtree
Pero finalmente, decidí escribir mi propia versión basada en algunos de los comentarios (la receta con mas votos no funciona en python 2.7+)
https://github.com/joac/tryton_builder
Python permite trabajar con xml con un montón de bibliotecas distintas, pero las mas amigable de usar, para mi es ElementTree
Cuando empece a escribir el codigo, y hacer pruebas, me encontré con varios problemas, el primero, ElementTree no tiene "Pritty Print"
para que el xml generado sea mas cómodo de leer, por suerte encontré esta receta:
en http://effbot.org/zone/element-lib.htm#prettyprint que resolvió correctamente el problema
Avanzando en el diseño de los scaffolders me encontré con otra limitación ElementTree no soporta el tag CDATA. Usted podria preguntarse "¿Que es el tag CDATA?", Básicamente un tag que le dice al parser "Lo que esta aca adentro es un conjunto de caracteres, no lo parsees"
Si bien se puede evitar el uso del tag, ingresando el texto escapado (por ejemplo, en lugar de '>' escribir '>' ) el objetivo es que el XML no deje de ser legible, encontré otras recetas en StackOverflow:
http://stackoverflow.com/questions/174890/how-to-output-cdata-using-elementtree
Pero finalmente, decidí escribir mi propia versión basada en algunos de los comentarios (la receta con mas votos no funciona en python 2.7+)
Suscribirse a:
Entradas (Atom)
