La realización de interfaces «ricas» y accesibles es todo un arte que muy pocos practican. James Edwards nos da algunos buenos consejos en Accessible JavaScript: Beyond the Mouse. Recuerda joven: debes permitir la navegación con teclado.
Los muchachos de [Sentido Web](http://sentidoweb.com/) han elaborado una buena lista de calendarios javascript, merece la pena echarle un ojo.
No todos los navegadores pueden _tragar_ con todos los métodos del DOM, algunos implementaciones de ECMAScript presentan curiosos bugs… Como más vale prevenir que curar, antes de lanzarse a la aventura es _necesario_ comprobar las capacidades del navegador. Pero ojo, no se trata de averiguar _qué navegador_, sino _qué capacidades_. Aprende buenos modales en Using capability detection.
Eventos DOM –estándares y propietarios– correctamente descritos en DOM events (Wikipedia).
Un código claro y legible facilita las cosas, a uno mismo y a sus colaboradores. Los desarrolladores de Dojo proponen una serie de sabias convenciones en Javascript Programming Conventions.
En javascript hay objetos, como `arguments` que parecen un array (podemos acceder a `arguments[0]` y `arguments.length`) pero no lo son y, por tanto, no podemos usar los métodos propios de un array (`slice`, `pop`,…) en estos objetos. ¿O sí podemos? Dan Webb explica un sucio truco en A Low-down, Dirty Goblin Of A Hack. Sin desperdicio.
Validar un email no es moco de pavo. No existe la expresión regular perfecta para ello, así que tendremos que conformarnos con usar _la más apropiada_. No queremos que ningún usuario tenga que protestar porque rechazamos su dirección, así que mejor sérá dejar pasar alguna mala que rechazar alguna buena (por rarita que sea). Un tal Ian ha testeado un buen puñado de expresiones regulares contra unos cuantos emails raritos y publicado sus conclusiones.
En Avoid using eval or the Function constructor –publicado en Opera Developer Community–, Mark ‘Tarquin’ da un par de buenas razones para huir del infame eval. Efficient Javascript.
Gleb Lebedev ha elaborado un test para comparar la velocidad de creación de nodos al estilo _superchachi_ (`document.createElement` y familia) y al estilo _cutrelux_ (`innerHTML`). Los resultados dan como vencedor (esto ya lo sospechábamos todos) al maldito, al infame, al feo `innerHTML`. Si no lo crees, puedes ejecutar tú mismo la prueba.
JRX es un _evaluador_ de expresiones regulares en tiempo real. Lo reseño aquí porque me ha gustado su chuletita: Real-time JavaScript RegExp evaluator v1.1b3.