lunes, 9 de julio de 2012

Taller Node + Express + Sequelize para crear un API en SpainJS

Este fin de semana he asistido al SpainJS. Debo decir que en general me ha parecido un buen evento. Sólo me quejo de lo que nos cuesta, en general, a los españoles lanzarnos a hacer preguntas en inglés, y eso no es culpa de nadie en particular.

Por otro lado, he conocido a varias personas bastante interesantes: TheJare, amischol y ggalmazor.

Bueno, a lo que voy. Resulta que me dieron la oportunidad de compartir mis recientemente adquiridos conocimientos sobre desarrollo en NodeJs. En concreto, cómo desarrollar un API que siga el estándar REST. Para ello hemos utilizado Express, Express-resource y Sequelize.

El contenido del taller y los ejemplos utilizados están en http://danimata.com/spainjs.

Como siempre, salud y rocanrol.


Nena, te voy a dejar, aunque me muera de pena.
Nena, te voy a dejar, aunque la sangre se pare en mis venas.
Te voy a dejar y cumpliré mi condena
donde no pueda soñar, dentro de mi oscura carcel de arena.

Y en el fondo del arcón
junto a mi suerte negra
¿Sabes qué voy a guardar?
Con tus recuerdos, mi pena.

Nena, te voy a dejar. Mientras la música suena
no dejes de pensar que a tu lado se queda mi estrella.
Te voy a dejar. Me marcharé de esta tierra.
Así en paz quedarás dentro de tu triste jaula de seda.

Y ya ves que la razón
de acabar de esta manera,
es: "Sólo te puedo dejar
el día en que yo me muera".

lunes, 4 de junio de 2012

Mi charla sobre jQuery Mobile en Codemotion 2012

A finales de Marzo de 2012 participé en el evento Codemotion. Intenté hablar acerca de jQuery Mobile y de cómo aprovecharlo para hacer de manera sencilla un interfaz móvil para tus páginas.

Teniendo en cuenta que mi última charla técnica fue antes de que Noé comenzase a construir su arca y que de lo último que había hablado en público había sido de esferificar chocolate, pues no se me dio mal. Claro que la calidad del proyector tampoco ayudó mucho.

Aquí se pueden ver mis slides y los ejemplos que preparé como apoyo.

¡Salud y rocanrol!


Te pilla la tarde en tu cuarto otra vez,
no suena el teléfono y tú sabes porqué.
Cervezas vacías en tu habitación,
el cenicero lleno humea en un rincón.
Seguro que sola está ella también
tirada en la cama sin saber qué hacer.
No sé cómo comenzó la discusión
ni a quién le toca ahora pedir perdón.
Y creo que muero
si no siento el roce de tu cuerpo junto a mí.
Recuerdo tus labios
y esos ojos que al mirar casi hacen daño.

miércoles, 2 de noviembre de 2011

Rmagick en windows

Qué gusto da trabajar en Ruby sobre Windows desde que existen Pik y DevKit. Aún así, todavía se me resisten algunas gemas y utilidades, como el puñetero SystemTimer, que sinceramente, me da lo mismo.

Ayer instalé la última versión de Rmagick y tuvo tela. Primero instalé la versión 2.12.0 de Rmagick que viene con Imagemagick 6.5.6. Antes esto era lo más seguro pero con bundler no funciona. Después de dar mil vueltas encontré la solución en uno de mis sites favoritos: stackoverflow. En la primera respuesta a esta pregunta está la solución, que además te ayuda a dejar la última versión de Rmagick e Imagemagick instalada.

Por el camino, encontré que para indicarle a bundler que la version que necesitas de una gema es windowsera, se especifica con el parámetro...

:platform => :mswin

Mucha más información aquí.

Y nada más. ¡Salud y rock'n'roll!

Now I've been hanging out with my rebel son Mr Rock,
and I don't really like the stuff they call hip-hop.
But he's sure been good to me, and I'm bound to make him see,
that in Country Music you just can't say the 'F' word.

My son Shelton says he's been having a hard time.
Yeah he does great shows but he's just gotta speak his own mind.
Now, Hank, I wonder where that came from, you know that he's a real son of a gun.
Take the old man's advice, be nice and lose the 'F' word.

Oh no, in country music you just can't say the 'F' word.
We've come a long way but it's best if that one's not heard,
Oh we've had some hell's and damm's, we don't say 'bitch' we say 'why, yes ma'am'.
In country music you just can't say the 'F' word!


sábado, 8 de octubre de 2011

SaSS sí. CoffeeScript no.

Después de asistir al FOWA y ver al propio Hampton Catlin hablar de su SaSS, creo que me voy a convertir a SaSSero en breve.

SaSS es simplemente una forma de escribir CSS de manera más elegante y sencilla, eliminando muuuuuuucho contenido que no tiene sentido repetir. Sin saber CSS no se puede codificar SaSS.

Sin embargo, no puedo decir lo mismo de CoffeeScript. Escribir algo parecido a Ruby para generar javascript me parece de vagos. Y más después de escuchar la conferencia de Sam Stephenson. Me parece que con JQuery tengo más que suficiente y no tengo ninguna necesidad de reaprender algo que ya sé (un poco). No me parece que cueste tanto escribir javascript como para que merezca la pena hacer el esfuerzo de aprender este CoffeeScript.

Del mismo modo que no creo que merezca la pena aprender a escribir Haml cuando lo suyo es ecribir HTML limpio y estructurado.

Pero esta es sólo mi opinión. ¡Salud y Rocanrol!

Son ya las ocho, el ruido en mi calle es infernal.
Perforan la acera por cuarta vez o por quinta ya.
Son como hormigas que buscan comida sin parar.
La rompen, la cierran, mañana otra vez vuelta a empezar.

Comienza un nuevo día en mi ciudad.
Tendré que levantarme sin descansar.
El autobús no llega, estoy fatal.
El metro viene lleno, tendré que andar.

¿Cuándo los gobernantes funcionarán de un modo racional?
Ellos que se pasaron media vida en la universidad.

Cuándo el gobierno te manda una carta, has de temblar.
Señor ciudadano tiene que pagar un poco más.
Mañana pagará por su aparcamiento.
Pasado pagará por cualquier invento.
No te perdonan ni una, viene la grúa.
La fórmula para ellos siempre es multar.

¿Cuándo recibiremos alguna buena nueva del poder?
¿Cuándo? Creo que nunca, pues desde siempre nos tocó perder.

Y si protestas te acusarán de antisocial.
Joven melenudo acate usted la autoridad.
Pues de lo contrario, ya sabe muy bien a donde irá.

viernes, 8 de julio de 2011

¿Oculto suena? (Aprendiendo de los errores III)


¡Atención, pregunta! Si en una div oculto embebo (y cigala) un vídeo de Youtube... ¿sonará y no se verá? ¿se quedará sin voz hasta mostrarlo? ¿hará otra cosa totalmente distinta?

La respuesta es la de siempre: depende del navegador. Según mis pruebas, en Firefox, Safari e Internet Explorer 7 no suena y no se ve, mientras que en Chrome e Intenet Exlorer 8 suena y no se ve. Seguro que hay una respuesta en el modo en que se renderizan los elementos ocultos de una página, pero no me he molestado en buscarla la verdad.

Claro que os preguntaréis (o no) qué narices haré yo ocultando un vídeo de Youtube. Pues eso, que está bien hacerse preguntas :o)

Y este fin de semana, los Maiden en Madrid. Así que, más que nunca... ¡Salud y rocanrol!

Tell me why I had to be a Powerslave
I don't wanna die, I'm a God.
Why can't I live on?
When the Life Giver dies,
All around is laid waste.
And in my last hour, I'm a Slave to the Power of Death.

domingo, 3 de julio de 2011

¡Qué gracia tiene!

¡Qué arte! ¡Qué duende! ¡Qué tronío tiene Internet Explorer! Pero no sólo el 6, ¡todos! Y yo sin enterarme... de nuevo me caigo del guindo.

Resulta que si capturas el evento resize del objeto window del navegador, todo va bien mientras no se te ocurra recolocar y/o cambiar de tamaño cualquier elemento de la página. Es entonces cuando Internet Explorer decide que lo vuelve a lanzar y lanzar y relanzar... y termina su gran actuación con el mítico chiste Out of memory.

El bug está documentado por todas partes para IE6 e IE7 pero yo también lo he visto en plena acción en IE8. De las soluciones que he encontrado, las dos más utilizadas son: utilizar un timeout que rompa la cadena de recoloco-capturo_evento-recoloco-capturo_evento y eliminar el manejador del evento en el momento que se empiezan a recolocar elementos y reponerlo al terminar.

Yo he optado por una mezcla. Con JQuery...

function manageResize(){
 $(window).unbind('resize');

 ...haz lo que tengas que hacer...

 setTimeout('$(window).resize(function(e){manageResize();})', 25);
}

Es decir, elimino el manejador y, al terminar, lo recupero con un timeout de unos pocos milisegundos para darle tiempo a que los eventos que genera la recolocación de elementos se pierdan en el infierno de los bytes.

Y nada más. ¡Salud y rocanrol!

All aboard!

Crazy, but that's how it goes
Millions of people living as foes
Maybe it's not too late
To learn how to love
And forget how to hate

Mental wounds not healing
Life's a bitter shame
I'm going off the rails on a crazy train!

I've listened to preachers
I've listened to fools
I've watched all the dropouts
Who make their own rules
One person conditioned to rule and control
The media sells it and you live the role

Mental wounds still screaming
Driving me insane
I'm going off the rails on a crazy train!

I know that things are going wrong for me
You gotta listen to my words
Yeah!

Heirs of a cold war
That's what we've become
Inheriting troubles I'm mentally numb
Crazy, I just can not bare
I'm living with something
that just isn't fair

Mental wounds not healing
Who and what's to blame
I'm going off the rails on a crazy train!

jueves, 23 de junio de 2011

Un par de librerías javascript interesantes

Jopelines, qué poco tiempo tengo para escribir! Bueno, sólo voy a apuntar un par de librerías javascript que me han resultado útiles recientemente.

JQuery Rotate sirve para rotar imágenes. Me ha resultado muy útil para hacer una especie de potenciómetro, como una rueda de búsqueda de emisoras en las radios antiguas. En breve estará en vivo para que podáis ver cómo funciona.

JQuery Masonry sirve para dinamizar el layout de una página eliminando los espacios en blanco que se quedan con los habituales floats.

Y nada más. Salud y rocanrol!

Darling you gotta let me know
Should I stay or should I go?
If you say that you are mine
I'll be here til' the end of time
So you got to let know
Should I stay or should I go?

Always tease tease tease (siempre coqueteando y engañando)
You're happy when I'm on my knees (me arrodilla y estas feliz)
One day is fine, next is black (un día bien el otro negro)
So if you want me off your back (alrededor en tu espalda)
Well come on and let me know (me tienes que decir)
Should I stay or should I go? (me debo ir o quedarme)

Should I stay or should I go now?
Should I stay or should I go now?
If I go there will be trouble
And if I stay it will be double
So come on and let me know

This indecision's bugging me (esta indecisión me molesta)
If you don't want me, set me free (si no me quieres, librame)
Exactly whom I'm supposed to be (digame que tengo ser)
Don't you know which clothes even fit me? (saves que robas me querida?)
Come on and let me know (me tienes que decir)
Should I cool it or should I blow?

Should I stay or should I go now?
Should I stay or should I go now?
If I go there will be trouble
And if I stay it will be double
So come on and let me know
Should I stay or should I go?

miércoles, 30 de marzo de 2011

El arte de medir

Este es un post especial. No va de rails, ni de html, ni de javascript... ni si quiera es técnico. ¡Mi chica ha escrito un libro! Pero no un libro cualquiera... Ha escrito el mejor libro de analítica web en castellano (al menos a mí me lo parece).

Comparte autoría con Tristán Elósegui, experto en marketing online.

El nombre del libro es El Arte de Medir y tiene página web. Si os apetece, echad un ojo.

¡Salud y rocanrol!

Cierro mis ojos y creo ver
tus labios rojos junto a mi piel.
Sueño contigo y tengo sed.
Cuando despierto pierdo la fe.
Pero un día alcanzaré
besarte siempre que desee.
Aunque no puedas comprender,
quiero besarte otra vez ¡Mua!.

sábado, 19 de marzo de 2011

Una mañana en Mountain View, CA


En Mountain View hay un montón de de cosas: hayyyyyyyyyy... mmmmmmmmm... estoooooooo... tienennnnnnnnn... y también están las oficinas de Google. Que no digo yo que no haya otras cosas interesantes, ni otras empresas que molen, pero el martes pasado mi chica y yo estuvimos en Google y nos convertimos al instante al Googlismo.

Para empezar, no tienes que pasar superfiltros de seguridad, ni cacheos, ni escáners, ni nada parecido. Además, las personas en recepción son muy amables y te ayudan en todo momento. Tú mismo te registras en un ordenador a la entrada, te da una pegatina, te la pones y listo.

Esperamos muy poco a nuestro anfitrión, Avinash Kaushik, un auténtico crack lo mires por donde lo mires. Nos enseñó las oficinas por dentro y por fuera, cada rincón interesante, cada detalle digno de mención... Nos habló de su trabajo, tanto de lo que hace como de lo que piensa. Nos hizo sentir como en casa y por ello le estamos muy agradecidos.

Éstas son las cosas que más me molaron de Google. El orden es un poco aleatorio, incluso puede que me repita:
  • Tienen bicis de colores para moverse entre unos edificios y otros y puedes cogerlas libremente.
  • Hay muchas cafeterías. Desde auténticos comedores hasta puntos de relax con sofás y café, y ¡TODO ES GRATIS! Si una cafetería tiene éxito la replican, si no, la cierran y abren una de otro tipo o reutilizan su espacio.
  • Los WC's tienen la tapa calentita. Además, en los urinarios hay una balda para que puedas dejar lo que lleves en la mano (esto en los bares de copas sería un triunfo).
  • Todos los edificios tienen paneles solares, lo que les permite generar cerca del 40% de la energía que utilizan. Además están llenos de detalles que mejoran la eficiencia de uso: superficies luminosas, zonas semicerradas que no pierden temperatura...
  • Hay despachos pero nadie trabaja sólo. En cada uno hay 3 o 4 personas mínimo.
  • Repartidas entre los edificios hay multitud de esculturas de todo tipo. Las que más molan son las dedicadas a cada versión de android.
  • Hay wifi gratis por todo el complejo. ¡Y va a toda leche!
  • Salas y auditorios de todos los tamaños y en todos los edificios. Una sala de reuniones es una piscina de bolas, como las de los parques infantiles. Cuando la vi casi lloro.
  • Tienen eventos a diario, tanto de personas de fuera que van a contar cosas, como de temas de Google para empresas externas, sin dejar nunca de lado la formación interna...
  • Hay espacios para todo: un gimnasio (perdón, un pedazo de gimnasio), piscinas de corriente, zona de barbacoa, fiestas, cine, salas de masaje, zonas de siesta... Voy a repetirlo despacito: ¡ZO NAS DE SIES TAAAAA! Vimos una especie de sofá cibernético donde sólo se veían unas piernas y, claro, preguntamos qué era eso. Resulta que es una especie de diván en el que, una vez sentado, te cubre una burbuja que te aisla de todo tipo de ruido. Acojonante.
  • Entre edificios, terrazas, aparcamientos de bicicletas y demás, aún queda sitio para un pequeño huerto. Las zonas verdes, llenas de flores y arbustos aromáticos, están también por todas partes
  • Nadie lleva corbata ni traje. Bueno, algunos de los que vienen de fuera sí. De hecho, hay personas que van a trabajar corriendo o en bicicleta y hacen muchos kilómetros. Todo son facilidades para ellos.
  • Hay un pequeño taller de reparaciones, tanto hw como sw, donde pueden acudir con su portáil sin tener que pasar por las esperas y burocracia del típico helpdesk.
  • Hay una extraña mezcla de personas de todos los tipos, colores, aspectos y procedencias; muchísima gente joven.
  • No se fomentan para nada las horas extra. Cada uno se organiza su trabajo de la mejor forma y, con tanta cosa para hacer no parece fácil.
En fin, me pareció un lugar muy chulo. No dejéis de ir si tenéis oportunidad. Salud y rocanrol.

El enemigo se ha ido pero pronto ha de volver,
cuando suenen sus tambores de seguro moriré.
Han muerto todos los míos, sólo yo... sigo en pie.
Todos eran mis amigos pero pronto los veré.
Pues yo también estoy herido, herido de gravedad.
Lo sé al ver correr mi sangre ávida de mí escapar.
De este cuerpo malherido que nunca dudo en arriesgar
su vida en pos de un sueño que ya no conseguirá.
Me ataré a mi estandarte, fiel símbolo de mi fe,
si llega antes la muerte que ellos me encuentren en pie.
En pie y desafiante como yo siempre viví,
que tengan claro en sus mentes que yo jamás me rendí.
Y estoy perdiendo el sentido, ya casi no puedo ver,
muerte espera un momento que pronto han de volver.
Veo venir una dama sonriendo hacia mí.
Si esa dama es la muerte, ¿quién tiene miedo a morir?
Viene cantando una nana de mi tierra natal,
me la cantaba mi madre, nunca la podré olvidar.
oh. oh. oh...

lunes, 21 de febrero de 2011

Twitter updates

He perdido ya la cuenta de en cuantos sites/aplicaciones/páginas/blogs he tenido que poner una caja con los últimos twitts de un usuario X. A veces he tenido que ir guardando los mensajes en BD para luego mostrarlos; otras veces he tenido que hacerlo con javascript, leyendo directamente el feed que twitter proporciona.

Lo más cómodo, si sólo necesitas mostrar los mensajes y no almacenarlos, es utilizar Twitter Badge. En sólo dos pasos (1- seleccionar el tipo de de badge: flash o html 2- customizar el número de twitts y el título) generamos el código que tenemos que pegar en la página en cuestión. Después si es necesario, le damos un toque en nuestra CSS y listo. Además es un código muy fácil de tocar, que ya somos mayorcitos. Podéis ver el resultado en el blog de FACTURAgem.

Y si lo que tienes es un blog basado en Wordpress, existe un plugin que hace todo esto por ti: Twitter Widget.

Como otras veces, la solución fácil ha estado ahí todo el tiempo... En fin, salud y rocanrol.

When there's lightning, it always bring me down.
Cause it's free and I see that it's me who's lost and never found.
I cry for magic. I feel it dancing in the light.
But it was cold. I lost my hold to the shadows of the night

There's no sign of the morning coming.
You've been left on your own...
Like a Rainbow in the Dark

In memoriam Ronnie James Dio.