2014-03-30

sandro reboot

Hace ya casi 4 años empecé un proyecto para hacer más fácil hacer páginas web seguras al que llamé sandro. Ahora estoy empezando el mismo proyecto de nuevo, siguiendo con mismas ideas rectoras:

  • Un solo lenguaje en todos lados, JavaScript.
  • Templating client-side y server side compartiendo código.
  • Validación de datos en el cliente y server compartiendo código.
  • Seguro por defecto. El diseño del framework debería hacer que sea más fácil hacer aplicaciones seguras que inseguras.
La primera versión va a estar basada en rhino, igual que la vez anterior, pero va a haber algunos cambios que creo que son importantes:
  • No va a estar enfocado a correr en app-engine.
  • Para mantener la idea de que haya JavaScript en todos lados, el motor de base de datos elegido va a ser mongodb.
  • Para reconciliarme con la naturaleza asíncrona y mono-thread del browser, voy a cambiar el manejo de módulos de commonjs por requirejs en el cliente y una API compatible con requirejs en el server.
Si quieren ir viendo el avance del proyecto, está en un proyecto público de bitbucket.

Espero feedback y, sobre todo, pull requests.

Happy hacking,
Aureliano.

2014-03-16

Cabeceo, técnica y táctica

En muchas milongas es de mala educación acercarse directamente a una persona y preguntarle si quiere bailar. Yo entiendo que es porque si no quiere, la forzás a elegir entre 2 opciones que son una cagada. La primera es bailar con vos de todas maneras y la segunda es exponerlos a ambos a que quede claro que no quiso bailar con vos.
Para evitar esto, existe un procedimiento que se llama cabeceo y es así (en su forma heteronormativa):

  1. Hombre y mujer establecen contacto visual.
  2. El hombre, sin romper el contacto visual, inclina su cabeza levemente hacia la pista.
  3. La mujer, sin romper el contacto visual, asiente con la cabeza.
  4. El hombre, sin romper el contacto visual, se acerca a donde la mujer esté sentada.
  5. Ambos van juntos hacia la pista.
Aunque parezca bastante machista, en realidad no lo es. El secreto está en el contacto visual. Si alguno de los 2 no quiere bailar con el otro, todo lo que tiene que hacer es romper el contacto visual. Así la otra parte sabrá que no quiere bailar y evita el escarnio público del rechazo (el rechazo en sí me parece que es inevitable).
Ahora la táctica. Si sos mujer y querés bailar, lo que tenés que hacer es:
  1. Estar bien sentada, tu postura corporal es lo que nos dice si querés bailar o no.
  2. Prestá atención a los bailarines con los que querés bailar, y tratá de establecer contacto visual con ellos. Si estás hablando con la chica que está sentada al lado tuyo, sin prestar atención a tu alrededor, es mucho más difícil invitarte a bailar. Esto es especialmente importante durante el primer tango de la tanda. 
Si sos hombre, 
  1. Tenés que hacer que te vean. Para eso en muchas milongas es normal circular por el pasillo (o borde de la pista)
  2. Salvo que tenga mucha confianza con la bailarina, o estés en una milonga que el cabeceo no se use, no invites a bailar a alguien sin seguir el procedimiento de arriba.
El procedimiento de arriba sirve para evitar malos entendidos. Si 2 bailarines invitan a la misma bailarina. La bailarina va a mantener contacto visual con el que haya elegido, y el otro podrá retirarse sin que nadie se de cuenta lo que pasó. Lo mismo si 2 bailarinas piensan que las invitó el mismo bailarín.

Nos vemos en las milongas,
Aureliano.

2014-03-14

Selección de los hijos

En este post no estoy proponiendo al hijo del Kun para la selección de fútbol sino que quiero mostrar una solución a un problema puntual en d3. Hace un tiempito postié cómo hacer para hacer un selector de CSS que busque solo en los hijos de un nodo. El objetivo era hacer más robustas las selecciones de nodos en los gráficos que hago con d3. Lamentablemente ese truco no anda con un montón de browsers, pero encontré otro mucho más simple. Si queremos una selección con todos los nodos hijos de la selección actual, lo más fácil es hacer:

my_selection.selectAll(function() { return this.childNodes })

Al final era bastante fácil. No entiendo porqué esto no está en ningún lado. Casi siempre cuando uso selectAll quiero obtener los hijos de los nodos de la selección actual.

Happy hacking,
Aureliano.

2014-03-10

Como esto pero distinto, no en CSS

Quiero poder decir, esta clase es como tal otra, pero el font es de tamaño x; y no puedo.

Acá está el detalle: http://stackoverflow.com/questions/1065435/can-a-css-class-inherit-one-or-more-other-classes.

Otro motivo más que muestra porqué habría que tener un lenguaje de programación y una lib estándar en vez del hack horrible de CSS.

Happy hacking,
Aureliano.