Link del día: Seguridad, de verdad
Seguramente nosotros nos sentimos protegidos porque tenemos… qué? Un antivirus y un firewall? Muchos de nosotros ni eso debemos tener.
Sin embargo hay gente que se toma la seguridad en serio, y está muy interesante analizar esos casos para aprender qué hacen y por qué. Y creanmé, que las posibilidades que se pueden abordar son enormes y extrañamente complejas. ¿Has pensado que podrías encriptar todo lo que se almacena en tu RAM? ¿Has pensado en llevar contigo tu partición de booteo para que nadie pueda encender tu máquina? ¿Has pensado en usar Windows como honeypot para que alguien lo use y puedas detectar en donde está tu máquina? ¿Restringir los permisos del navegador?
Y la lista continúa. Por supuesto, según dice el autor de este artículo, se puede hacer mucho más, y no estoy realmente seguro, pero por lo menos lo hice un poco más difícil.
El artículo en cuestión es Protecting a laptop from Simple and Sophisticated Attacks, de Mike Cardwell.
Soy un zorrinito inseguro.
Link del día: Presentaciones JavaScript
Muchos me felicitaron por cómo se veía mi presentación sobre una pequeña encuesta sobre redes sociales, aunque la verdad los créditos no me los debo llevar yo sino Prezi… pero lo bueno es que todos podemos tener algo así en nuestros sitios sin usar ningún servicio de terceros. Deck.js (lo encontré en CSS Tricks) es una librería JavaScript que utilizando HTML5 nos permite crear presentaciones con una visualización muy atractiva (lo cual también ayuda a llamar la atención y transmitir nuestro mensaje).
Deck.js nos permite crear una variedad de animaciones y formatos de presentación, y lo bueno es que nos ofrecen distintos downloads dependiendo de nuestro nivel de habilidad con HTML/CSS/JavaScript, para que estemos cómodos utilizándolo.
A ver quién me muestra la primera implementación que hayan hecho con deck.js así lo coloco aquí!
Soy un zorrinito animado.
Link del día: Neurowear
Esto no es particularmente nuevo, y de hecho, he escuchado de algunas personas que ya se han adquirido uno de estos productos. Se trata de una versión “simpática”/”neko” de Emotiv, aunque realmente no sé si las marcas estén relacionadas. Aunque está claro que la tecnología detrás de esto si lo está.
El producto en sí se llama Necomimi Neurowear (gracias MicroSiervos), y se trata de una cinta que ajustada a nuestra cabeza, detecta nuestros cambios emocionales y mueve unas orejitas de gato acorde a ellas. Realmente lo creamos o no útil, no podemos negar que la tecnología está alcanzando límites de ciencia ficción.
Ni hablar de una noticia que me ha llegado ayer por Twitter llamada “La frontera entre neurociencia y neurotecnología ha sido superada” (gracias Fernando!), que claramente muestra que los avances son cada vez mayores.
Soy un neurozorrinito.
Link del día: HTML Code Quality
Sabemos que medir numéricamente la calidad de cierto código no es nada fácil, tratesé del lenguaje que se trate. Siempre hay muchos factores que no afectan en nada a lo funcional, pero que sí afectan a qué tan legible es el código, qué tan mantenible es, y qué tanto puede evolucionar de forma “grácil” sin ser un peso para el futuro de los programadores.
HTML y CSS son un caso particular, porque a diferencia de otros lenguajes, no son lenguajes de programación, pero sí se hacen aplicaciones con ellos. Alguna vez alguien me dijo que sí deberían considerarse lenguajes de programación porque aunque no fueran instrucciones, de alguna forma estábamos trabajando con datos, su procesamiento, y su salida… pero esa es otra historia.
Al momento de medir la calidad de estos lenguajes, existe un problema extra: ya no hay funcionalidad que medir, sólo el código en sí (porque no tienen interacción directa como un lenguaje que se ejecuta). Entonces el desafío se pone más interesante. Google ha atacado este problema y ha escrito sobre como validar y trackear la calidad del código de sus páginas. El artículo en sí no es ni extenso ni detallado, pero despierta algunas ideas que pueden ser útiles para profundizar en este tema. Un punto muy importante es, cualquiera sea el criterio que se tome, trackearlo. De esa forma podemos ver si hay mejora o no… o si el criterio realmente nos dice algo o no.
Soy un zorrinito de calidad.
Link del día: La ley de Benford y el mundo de los negocios
Esto no es ninguna novedad, pero para mí sí lo es: La ley de Benford es una ley estadística que dice que en muestras númericas del mundo real, hay una distribución determinada de la aparición de los primeros dígitos en esos números. Es decir, que si midiéramos a todos los seres humanos, el número que más aparecería en esas mediciones, los números que empiezan con 1 tendrían cierta distribución, los que empiezan con 2 tendrían otra, etc.
Esto ha sido comprobado con una buena cantidad de ejemplos (incluso con mismas muestras y distintos sistemas métricos). Por supuesto, hay mucha controversia al respecto pero no quiero hablar de ella ahora.
Lo interesante es el tipo de aplicaciones que esto tiene. A veces se usa como regla heurística para determinar fraudes en aplicaciones online. ¿Quién lo usa? Apple por ejemplo…. podría. Este post de Rob Conery no me deja del todo claro si Apple hace actualmente uso de esta técnica o no, pero está claro que es totalmente aplicable. Su post está titulado apropiadamente: Could Benford’s Law have saved an Apple ID?… maybe.
Checkeen el testeo estadístico y la forma en la que se aplica, es altamente ingeniosa, pero lo más curioso es cómo puede aplicarse una (o más de una) simple regla estadística para, a modo de un quick datamining, determinar cuáles situaciones están realmente fuera de lo esperado y detectarlas como fraude. Esto es aplicable a muchos otros campos, y por supuesto, no sólo a ventas online.
Soy un zorrinito fraudulento.
Link del día: LoadTest
Como ya sabemos, la web está llena de herramientas gratis que podemos utilizar, y el load testing no queda excluído. Hace poco me crucé con una herramienta llamada LoadImpact, que, como su nombre nos da a pensar, es una herramienta web que permite hacer test de stress sobre websites. En este caso, para acceder a la totalidad de sus funcionalidades deberíamos subscribirnos y abonar un pago, pero también podemos acceder sin registrarnos a una batería de tests gratuitos.
Desafortunadamente los tests al correr no nos dan información demasiado detallada sobre lo que ocurre tras el telón, pero logra el objetivo de mantener los resultados y la información simple como para poder detectar cualquier problema de performance que la concurrencia de usuarios nos pudiera llegar a dar.
Soy un zorrinito concurrente.
Link del día: Trackeo de usuarios, desde caché
Gracias a una característica propia de los browsers en cuanto a la forma que cachean elementos (algo que está funcionando desde hace un buen tiempo ya), resulta que es posible que explotando esa funcionalidad se pueda hacer trackeo de usuarios de la misma forma que podríamos hacerlo con cookies u otros elementos persistentes (recuerdan EverCookie?).
Y resulta que las técnicas no son simples de salvar para que esto no ocurra. Como el autor lo menciona en su artículo, Preventing Web Tracking via de Browser Cache, “esto no es algo con un arreglo simple”.
él nos explica también cómo se puede lograr este tracking con varios métodos, sin nada que alerte al usuario de estar siendo trackeado.
¿Ustedes qué piensan? ¿Puede esto ser un problema para la seguridad?
Soy un zorrinito cacheado.
Link del día: Clases en Stanford
Ya hemos hablado mucho de educación online con las distintas posibilidades que la internet ofrece a través de videos, podcasts y demás multimedia. Sin embargo, por lo general es raro que las instituciones que crean este contenido se vinculen demasiado con los consumidores de dicho contenido.
No es el caso de la gente de Stanford, que hoy está ofreciendo anotarse a tres cursos en particular: Introduction to Databases, Introduction to Artificial Intelligence, Machine Learning. Cualquiera puede anotarse y cursará el mismo curso que la gente de Stanford cursará, incluyendo los exámenes y todo. No obtendremos un título oficial de Stanford pero sí un certificado de haber pasado el curso firmado por los profesores (que son respectivamente Jennifer Widom, Peter Norvig con Sebastian Thrun, y Andrew Ng). No es poca cosa.
No sé ustedes, pero yo me anoté y pienso formar parte de esa experiencia. Gracias i.MicroSiervos por haber pasado el dato!
Soy un zorrinito stanford.
Link del día: Diseñar con TDD
Para los que no conocen la sigla, TDD representa el concepto de Test Driven Development, la metodología de hacer las pruebas de lo que queremos lograr antes del código.
Este es el caso de alguien que estaba demostrando esa metodología ante uno de los escépticos que no creen que sea realmente aplicable. “Funciona muy bien en la teoría pero al momento de la verdad no se puede respetar totalmente”, pensaba. Ese es el caso de Rob Conery, explicando las técnicas de TDD de Brad Wilson.
Lo que él hizo fue, intencionalmente, planear una situación en un sistema medianamente complejo, para luego introducir un nuevo requerimiento que cambiaba todo el diseño. Parece que entonces lo que Wilson hizo fue, en lugar de tirar todo y comenzar de cero, ir adaptando las pruebas gradualmente, ir refactorizándolas hasta que comenzaron a formar “clases”, que luego se movieron del entorno de pruebas al sistema real.
“Un concepto en el que no había pensado nunca” – menciona Conery – “usar el archivo de pruebas como una especie de útero {de dónde nacen las clases}”.
Soy un zorrinito TDD.
Link del día: CSS Semántico
Desde CSS Tricks (muy buen sitio de referencia, por cierto) me llegó un artículo llamado What Makes for a Semantic Class Name? Este tema parece algo tonto desde su concepción básica: “cómo nombrar clases de CSS”. En un principio, realmente no importa cómo se llamen, si el estilo está bien, se verá bien y será como nosotros queremos.
La situación se pone realmente interesante cuando estamos planeando nuestro sitio para el cambio, y entonces una clase como “hd24ba” no tiene mucho sentido (menos aún si la generó algún software nefasto de web development). Ahí es donde – la buena práctica dice – lo conveniente es trabajar con nombres de clases semánticos, que representen el real hecho de por qué son clases. Una clase de qué están representando, un tipo de qué objeto están estilizando.
Por supuesto que esta definición es algo vaga y entonces es difícil determinar cuál es el punto específico de abstracción es realmente semántico y cuando excedemos un punto límite que hace que no estemos hablando de nada.
Yo creo, aún así, que estas prácticas son bastante discutibles, y que las reglas se pueden torcer un poco. ¿Qué opinan?
Soy un zorrinito semántico.