2007-02-19

Jugando con greasemonkey

Estuve probando un plugin re-groso para Firefox que se llama greasemonkey. El mismo permite ejecutar JavaScript arbitrario después de que se cargue cada página.

Usandolo, hice un pequeño script para sacar la molesta propaganda que ponen en el nuevo Yahoo Mail Beta. El script tiene 10 líneas y lo puse acá. Pero para que no tengan que cliquear, se los posteo acá mismo.


// ==UserScript==
// @name Yahoo Beta Ads Blocker
// @namespace http://mywebsite.com/myscripts
// @description Yahoo Beta Ads Blocker
// @include *.mail.yahoo.com
// ==/UserScript==

function $(id) {
return document.getElementById(id);
}

function remove(id) {
var elem = $(id)
if (elem) {
elem.parentNode.removeChild(elem)
}
}

window.addEventListener(
'load',
function() {
remove('largePane')
remove('emptyFolderFrame')
remove('nwPane')
remove('swPane')
},
true
);


Enjoy!
Aureliano.

Si quieren ver más detalles sobre el greasemonkey vayan a http://greasemonkey.mozdev.org/

2007-02-16

Los lenguajes de la web

Para programar páginas web hay que aprender unas cuantas cosas. En particular es llamativa la cantidad de lenguajes que hay que aprender:

  1. HTML
  2. JavaScript
  3. CSS
  4. XML
  5. XPath
  6. CSS selectors
  7. Javascript
  8. Lenguaje y bibliotecas server side de tu preferencia (Ruby on Rails, PHP, Perl, Java, JSP, EJBs, ASP.NET, etc)
  9. SQL?
Sin embargo, la mayoría de estas cosas son carga cognitiva al dope. Es mi opinión que el desarrollo web se simplificaría bastante ordenando este quilombo.

En primer lugar, en vez de usar HTML, se podría usar una biblioteca en JavaScript para generarlo (algo como markaby pero hecho en JavaScript). Esto haría que sea más fácil generar dinamismo en el cliente.

Los CSSs deberían ser una biblioteca que encaja con la biblioteca anterior. Si quieren separar los datos para que los maneje un diseñador, podría perfectamente usarse JSON.

El XML es 100% reemplazable por JSON (que, es más lindo para escribir datos y todo). JSON (y javascript) es lo que usan varias bibliotecas de AJAX (ATLAS, prototype) para comunicar cambios en la página.

XPath puede llegar a ser algo práctico, pero solamente para navegar por árboles de objectos (no XML). Quizás una biblioteca para buscar cosas en JSON con sintáxis parecida estaría buena.

Los CSS selectors son una creación abominable. No aportan nada al XPATH, pero como están en los archivos de estilo, no queda otra que usarlos.

Con respecto al server, estoy esperando que alguien haga JavaScript on Rails (la capacidad de metaprogramación está ahí) y lo enchufe con algún intérprete de Javascript. "¿Harías Rails en el cliente?", se preguntarán. Nop. La idea es usar el mismo lenguaje en el cliente y en el server. Netscape lo intentó hace un tiempo pero se le acabo la plata. El mundo sería mejor si Sun hubiera apoyado esto en vez de impulsar Java a diestra y siniestra. Tener el mismo lenguaje en cliente y server permitiría hacer algunas cosas que ahora no se puede, como compartir el código de validación formato de los datos entre cliente y server sin repetir nada.

Y, por último, SQL es lo que intentamos sacarnos desde hace años de encima. Cada ORM (Hibernate, ActiveRecord) que hay es un intento fallido para escaparle.

¿Y por qué no lo ven así? Lo que hay que darse cuenta es que programar una página web dinámica es un ejercicio de metaprogramación. Un escribe un programa (que está en el server) que cuando se ejecuta genera un programa que se transmite al cliente (HTML + Javascript + CSS, etc) que cuando se ejecuta se renderea y muestra la página. Cuando se hace AJAX, en realidad hacés un hot fix en un sistema productivo. El resultado de una llamada AJAX son instrucciones de como cambiar el programa que está corriendo.

Pensado de esta manera, es razonable ver que conviene unir lenguajes en uno solo. JavaScript, a pesar de no ser mi lenguaje favorito (que es Ruby), para mi tiene todas las de ganar.

Tiene:
  • Soporte en el cliente.
  • Es conocido por los desarrolladores de páginas web.
  • Es razonablemente metaprogramable.
Para mi, el mayor problema es que para pasar cachos de código hay que escribir demasiado. Un bloque de código, pasado a una función, se ve así:
foo( c, function(a, b) { return a+b })


En cambio, el mismo código en Ruby es:
foo(c) { |a,b| a+b }


De todas maneras, JavaScript ya está por todos lados y es razonablemente bueno. Lo más importante es que tiene soporte en el cliente, que es la parte más dificil de cambiar en una página web. Si no me creen, traten de hacer páginas que anden solamente en FireFox y diganles a sus usuarios que se lo instalen.

Por último, quería agradecerle a frinfrunfranfrun haberse bancado chatear conmigo de este tema, lo que hizo que me caiga la ficha sobre que escribir.

Éxitos,
Aureliano.

2007-02-15

Si no puedes con ellos, úneteles

En una nota anterior, dije que había demasiados egresados de la Escuela da Vinci. Bueno, mañana empiezo un curso de dibujo allí mismo.

Espero poder contrarrestar mi falta de sensibilidad estética, y poder hacer programas (y/o páginas web) que no sean muy fe@s, sin ayuda de un diseñador. Sip, sólo no muy fe@s, hacer cosas lindas es realmente difícil y se los dejo a ellos.

Aureliano.

2007-02-14

Xara Extreme

Hoy estuve probando el editor vectorial de imágenes para Linux Xara (está en http://www.xaraxtreme.org/). Y me gustó. Está por la versión 0.7 y es un port de un programa de Windows. Aunque tiene algunos bugs, ya está usable y ¡estuve haciendo un dibujo!.

Les presento al "Señor Destapador":


¿Sugieren algún otro programa para reemplazar al Illustrator en Linux?

Aureliano.

PD: pueden usar esa imagen como quieran mientras me atribuyan la creación de la misma.

2007-02-13

Se termina kinesio

Si dios, la patria y los santos evangelios están conmigo; me quedan solamente 9 sesiones de kinesiología para la rodilla. Pero todavía no terminé :-(. Ahora me toca ir a un gimnasio a hacer pesas. Pesas y natación.

Tengo por lo menos 45 días de pesas. Aparentemente, todavía no tengo suficiente fuerza en el cuádriceps para que me den el alta. Se supone que puedo volver a las canchas (de paddle) en 2 meses, si no hay inconvenientes.

Éxitos,
Aureliano.

2007-02-05

Filtrado en el MSN

Están filtrando el envío de algunos URLs en MSN.

Acabo de confirmar que el URL http://www.scribemedia.org/2006/07/09/dhh/ ¡genera que la conexión del MSN se cierre! Parece que decidieron que Rails es competencia y lo empezaron a boicotear.

La verdad es que no me arrepiento en lo más mínimo de haber instalado KUbuntu en casa.

Saquen sus propias conclusiones,
Aureliano.

Update: en realidad parece que no dejan pasar mensajes que contengan el string ".scr" para evitar virus! ¡Qué patético!

2007-02-01

Maldito flash

Anteayer a la noche fuimos con Agustina a cenar a la casa de un amigo. Como nos tocó llevar el postre, hacía calor, Agus estuvo ocupada con un proyecto laboral, y yo tenía rehabilitación (de la rodilla, ¡malpensados!), decidimos comprar helado.
Entonces nos pusimos a buscar las heladerías en Google. Googleamos "sucursales Freddo" y nada. Googleamos "sucursales Persicco" y nada. Googleamos "sucursales Munchis" y nada.
¡Que raro! ¿Cómo puede ser?
¿No tendrán página web?
El problema es que hay demasiados egresados de la Escuela Da Vinci por ahí haciendo páginas web. Y hacen todo en Flash. Por lo tanto no podés linkear adentro de la página. Y aparte google no los indexa.

¡Basta de páginas web hechas en flash!

¡Quiero un google que ande!

¡Quiero mi helado!


Skip intro,
Aureliano.