Link del día: Aprendan estadística o los mato a todos
Este link que me llegó del nuevo Delicious trata de un rant de Zed Shaw titulado Programmers need to learn statistics or I will kill them all. Trata de las frustraciones que él encuentra al momento de discutir resultados de tests y generalizaciones con determinados programadores con los que ha trabajado.
Si bien no deja de ser un rant y por eso no es realmente informativo, es un buen punto de partida para entender por qué el conocimiento básico que tenemos de estadística (si no todos, probablemente una gran mayoría). Creo que muchos hemos pecado de cometer las mismas acciones que él cuenta en su artículo, como dar un número grande de pruebas, sacar un promedio y entender que ese es el promedio de los casos, cuando hay muchos otros factores que afectan y muchos otros datos que aportan información y nunca se tienen en cuenta. Para sacar una frasecita de su artículo: “El punto es que si ustedes dan un promedio sin mostrar la desviación estándar, perdieron completamente el punto de siquiera intentar medir algo”.
Soy un zorrinito promedio.
Link del día: Sinfonías algorítmicas
Me crucé de casualidad (y ya ni recuerdo cómo) con un artículo de un blog llamado Algoritmic symphonies from one line of code – how and why?, en donde el autor mostraba un viejo experimento que había hecho: hacer iterar una variable sobre valores incrementales, y que una función de esa variable fuera enviada a la salida de audio.
Resulta que experimentando con distintas fórmulas pudo crear sonidos y hasta “canciones” bastante avanzados. Por supuesto, no podremos compararlos con obras musicales actuales (excepto que hablemos de dubstep o industrial experimental – encajarían bien ahí), pero aún así es increíble la complejidad que estos pueden adquirir con esas simples pruebas. Allí es en donde el autor encuentra esa belleza escondida de las fórmulas.
Por si fuera poco, alguien hizo una versión en JavaScript, que pueden probar y divertirse creando música (o ruido) desde fórmulas, y hasta estéreo (acompañamiento!).
Soy un zorrinito musical.
Link del día: Lineamientos de seguridad
Desde los geniales posts que nuestro amigo Alan Pasho ha escrito para el blog de CommonSense, en la serie de Is Your Website or App Secure? (recomiendo la lectura de todos ellos), me encontré ayer con los lieamientos que Mozilla impone a sus desarrolladores como medidas de seguridad al momento de desarrollar aplicaciones.
Cabe destacar que estos lineamientos, WebAppSec/Secure Coding Guidelines, no son nada cortos, pero sí detallados, y se cubren tópicos desde manejo de sesiones a (lo más básico) validación y autenticación. Si alguien está pensando en armar un checklist, este es muy buen comienzo, y si alguien quiere una guía completa de qué cubrir, puede leer esto o, por supueto, todo el contenido de OWASP y los libros relacionados.
Sabemos que la seguridad es todo un mundo, pero cuando se trata de hacer verificaciones o checkeos, siempre necesitamos una lista rápida,y tanto los posts de Alan como la guía de Mozilla son un buen lugar para hacer esa checklist de items.
Soy un zorrinito asegurado.
Link del día: HackArmoury
Como de costumbre, la gente de DragonJar postea cosas muy útiles e informativas en el ámbito de la seguridad. En este caso se trata de dar a conocer HackArmoury, un sitio dedicado a ser un repositorio de herramientas lo más accesible posible, de forma que estemos en donde estemos, con las restricciones que tengamos, siempre podamos acceder a las herramientas útiles en el ámbito de la seguridad.
Cabe destacar que este sitio ha innovado en cuanto a las formas que se tiene de acceder a él. No sólo están el típico HTTP y FTP, sino que también podemos entrar a través de Samba (SMB), rsync, IPv6, TFTP, SVN.. por supuesto, lo estarán expandiendo en el futuro. (Por qué no, por ejemplo… email?)
Soy un zorrinito armado.
Link del día: El bug tracker más simple
Cuando exponemos a los usuarios la posibilidad de agregar bugs para revisar, es muy importante que este proceso no sea ni complicado ni difícil de lograr. Debe ser algo que cualquiera pueda entender, y que no sea una interrupción al flujo de la aplicación para que los usuarios puedan reportar también detalles que necesiten ser arreglados.
Si han visto la forma en la que Google Plus permite dar feedback, habrán notado que, aunque es una forma simple, involucra varios pasos que hacen del proceso algo “pesado”.
BugHerd se encarga de ambas cosas. En cuanto a la interfaz, sólo se trata de señalar algo en la pantalla y un texto para decir qué está mal al respecto. En cuanto al proceso, solo se trata de una interfaz con un botón y un campo de texto. Bastante simple, bastante claro.
Está de más aclarar que con un proceso tan simple el feedback de los usuarios será mucho. No hagan esto si no están dispuestos a prestar atención a lo que los usuarios quieren.
Por otro lado, BugHerd es pago, pero los precios no son altos para nada.
Soy un zorrinito buggeado.
Link del día: Arquitectura CSS
La idea me parece fantástica, pero la forma en la que se desarrolló, no tanto. La idea era, Scalable and Modular Architecture for CSS, una organización del código CSS de una aplicación para que fuera dividido en forma modular. De esta forma, habría determinados estilos base, y otros estilos pertenecientes a módulos que especificarían cosas extra, o modificarían detalles (aunque no deberían) de los estilos base.
Ahora, los estilos base se subdividen, a su vez, en estilos que tienen que ver con el layout, y los que no se llaman “base”. Por último, hay una cuarta clasificación que tiene que ver con estilos de estados, es decir, cuando algo está activado, cuando se encuentra deshabilitado, etc.
Si bien la idea está muy interesante, veo algunos puntos grises en cuanto se debe determinar qué estilo pertenece a qué. Hay reglas CSS particulares que van a ser seguramente pertenecientes a una de las anteriores categorías mientras otras no, pero podemos estar hablando de los mismos elementos en pantalla. Para poder lograrlo de forma precisa, debería tenerse demasiado cuidado y una gran cantidad de reglas que aplicarían a un determinado elemento. En ese sentido no se me hace demasiado natural, aparte de la necesidad de marcar de múltiples formas un mismo elemento (un id, varias clases).
Sin embargo, me parece un muy buen comienzo, y quisiera escuchar ideas, porque creo que esta arquitectura es una base muy poderosa para hacer de CSS complejo algo muy ordenado.
Soy un zorrinito estilizado.
Link del día: Trucos de consola de Chrome
De parte de la gente de HTML5 Rocks! tenemos un pequeño post con dos videos cortos (7 minutos cada uno), llamado 7 minute videos: Javascript Console Protips & newish DOM APIs, en donde Paul Irish nos cuenta sobre determinados truquillos que podemos utilizar para debuggear JavaScript, mayormente en Chrome (aunque dos de los trucos se aplican a Firefox y a Opera).
Personalmente no me encuentro desarrollando mucho JavaScript pero creo que adoptaré alguno de estos trucos, especialmente el $0 que hace las cosas terriblemente más fácil, junto con keys(), console.time() y copy(). A ver si puedo ponerlos en mi navaja suiza diara.
Soy un zorrinito loggeado.
"Run your own race" (Seth Godin)
Del blog de Seth Godin:
Corre tu propia carrera
El espejo retrovisor es una de las herramientas motivacionales más efectivas jamás creadas.
No hay duda que mucha gente acelera en el rostro de la competencia. Preguntamos “cómo le fue al resto de la clase?” Escuchamos a quién respira en nuestras nucas. Y descubrimos que la competencia a veces saca lo mejor de nosotros.
Pero hay una desventaja. Años atrás, durante mi nado de larga distancia (por Long Island Sound… agua fría, medusas, en todo el trayecto), la competencia estaba bastante dura. Desde el bote hasta la línea de comienzo había cientos de nadadores, estirándose, presumiendo, pavoneándose y calentandosé. Para el momento en donde tocamos el agua, todos estaban corriendo la carrera de los demás. El comienzo fue una explosión de ego y adrenalina. Veinte minutos después, la mitad de los participantes estaban exhaustos, con tres horas faltando.
Si vas a contar con la competencia para sacar tu mejor trabajo, entregaste el control sobre tu objeto más preciado. El verdadero logro viene de correr hacia adelante cuando nadie más ve un camino– y detenerse cuando la aceleración no te llevará a donde quieras ir.
Si eres dependiente de la competencia entonces estás contado con la calidad de esos que se muestran a sí mismo para determinar qué tan bien lo harás tú. Peor aún, te has inscripto para una carrera de empates terribles y falsos como la mejor forma de hacer tu trabajo.
La auto-motivación es y siempre será la forma de motivación más importante. Conducir con tus ojos en el espejo retrovisor es agotador. Es más fácil que nada medir tu performance contra la de los demás, pero si no te está ayudando con tu misión, detente.
Link del día: Cryptico.js
Ya alguna vez había mencionado una librería JavaScript para encriptar datos (jCryption), pero nunca está de más considerar otras alternativas. En este caso se trata de cryptico.js. El proyecto también es de Open Source y nos permite usar AES y RSA (o eso leí, pero la documentación sólo menciona RSA), y con una serie de métodos muy simples, nos permite operar con cadenas que queramos utilizar para transmitir de forma segura.
Lo curioso es que podemos generar claves especificando el tamaño de la misma, pudiendo ir desde una clave de 512 bits hasta 8192… pedazo de clave.
Este tipo de encriptación, por el hecho requerir una clave “insegura” para generar la clave RSA, no es inseguro de por sí. Recordemos que estamos hablando de encriptación asimétrica, de forma que por más que se tenga la clave generada, no hay inseguridad, puesto que es la otra clave (la que se queda con nosotros, la privada) la que se usará para desencriptar los datos.
Soy un zorrinito encriptado.
Link del día: If This Then That
IfTTT.com es un servicio que me atrevo a calificar de “maravilloso” en donde nos permiten integrar distintas redes sociales o servicios 2.0 en workflows que nosotros definiremos. Dependiendo del uso que le demos, puede sernos más o menos útiles.
Aunque su página de WTF lo explica, les daré un ejemplo de lo que se puede hacer para que lo vean de una forma simple, con unas reglas que uso yo:
- Cuando alguien me taggea en una foto en Facebook, que me envíe una copia de esa foto a mi email
- Cuando favoriteo un tweet, que me agregue ese tweet a Instapaper (yo uso los favoritos de Twitter para cosas que quiero leer después)
- Cuando le pongo una estrella a una entrada de Google Reader, que me la copie a Instapaper (yo uso las estrellas de GReader para cosas que quiero leer después)
- Cuando agrego un post a este blog, que lo twitee automáticamente
Y este servicio todavía está en Beta, me encantaría que agregaran en el futuro nuevos servicios y nuevas integraciones. La idea está fantástica y su utilidad es impresionante. Por supuesto, también podemos hacer interactuar muchos otros servicios (Craiglist, Evernote, Youtube, feeds, Facebook, Twitter, teléfono y sms!, linked.in, vimeo…).
Como extra, podemos utilizar “recetas” (tareas que ya otra gente ha programado) o crear las nuestras propias.
¿Para qué lo utilizarían ustedes?
Soy un zorrinito automatizado.