Nuevas clases en Udacity
Hace unos días me llegó un email sobre Udacity (del cual yo ya había hablado) avisando que hay nuevas clases disponibles allí.
Ahora el listado es:
- CS101: Construyendo un motor de búsqueda
- CS212: Diseño de programas de computadora
- CS253: Ingeniería de aplicaciones web
- CS262: Lenguajes de programación
- CS373: Programando un automóvil robótico
- CS387: Criptografía aplicada
En fin, si a alguno le interesa, voy a estar por ahí.
Soy un zorrinito en aprendizaje.
¿Por qué usamos la imagen del floppy para la acción de "guardar"?
Y ¿por qué no la cambiamos?
Un comentario que mucho tiempo hemos visto discutido por ahí es por qué todavía usamos la figura del floppy disk para indicar la acción de guardar, cuando hace tiempo que estos discos se dejaron de usar. Peor aún, hay gente que ni siquiera sabe qué son.
La primera respuesta de ese link menciona que la imagen del floppy disk es un modismo, no una metáfora. El modismo (idiom) es, para resumir, un simbolismo no directamente asociado con el significado. En algún momento fue un símbolo, asociado a cuando persistíamos nuestros datos en estos diskettes, pero ahora es algo totalmente fuera de contexto.
En los foros de Graphic Design también se habló de este tema y se están proponiendo nuevas alternativas. En los foros de UX están de acuerdo con que cambiar los íconos generaría más problemas de los que realmente resolvería, pero está claro que si la persistencia se inventara hoy, el ícono sería distinto.
¿Quizá el nuevo paso es inventar algo más abstracto, que sea válido para cualquier era de almacenamiento?
Soy un zorrinito almacenado.
T IEnumerable.RandomElement()
Seleccionar un elemento cualquiera de un conjunto
Otro de mis pequeños snippets, este es útil para unit testing.
Cuando tienen un repositorio de datos que en realidad es mockup, y algún objeto tiene que estar pre-populado, podrían querer que los tests sean independientes de los datos. Y con esto me refiero a ser independiente de los valores que esos objetos tienen. Para esos casos, utilizar un objeto al azar de un conjunto de objetos sería una buena aproximación. No es tan determinista, pero eso es algo deseable, e incluso más cerca a probar la aplicación real.
Para obtener un objeto al azar, este pequeño snippet ayuda:
PrivateSky
Accesible para uno, secreto para todos
PrivateSky no es ni el primer ni el último intento de un servicio de seguridad en la nube. Lo que los distingue es que, según dicen, ni ellos mismos tienen acceso a los datos que nosotros guardamos, y que ni al momento de que el gobierno les requiera los datos, ellos los darían. (O eso dice su CEO.)
Alguien en IT Security preguntó: ¿Cómo puede PrivateSky no tener acceso a nuestros datos?, y la respuesta más extensa la brinda, con lujo de detalles y tecnicismos, Brian Spector, el CEO de CertiVox. Debo admitir que no estuve al nivel de entenderla completamente, pero me queda claro cuál fue la estrategia general, y sé que en este tipo de cosas no se le puede mentir a la comunidad, al menos no en ese foro en particular.
En general, lo que ellos intentan es hacer un sistema de encriptación basado en identidad, en donde algo del lado del cliente siempre permita decriptar, algo que ellos en ningún momento reciben como clave completa, y en donde la forma de alterar esto generaría la destrucción de las demás partes de la clave. Esto significa, que sólo el usuario en acuerdo con el sistema puede cambiar la clave a otro valor, y que cualquier intento de hacerlo fuera de esa identidad básicamente perdería las claves que se pueden usar para decriptar los datos.
Por ahí preguntaron también cómo harían para evitar pedidos legales de información. Ellos se basado en un vacío legal que les permitiría entregar los datos encriptados, y defenderse diciendo que no tienen forma de decriptarlos, dejando la información segura de forma total. (Esto es, claro, excepto que la entidad gubernamental tenga los métodos apropiados para quebrar la encriptación, cosa por la que se apuesta que no ocurra.)
A pesar de lo transparente que se busca ser en esto, Brian Spector ha sido bastante cerrado en cuanto a la información de seguridad que dejó ver del sitio web.
Aún así, parece una aproximación muy novedosa.
Soy un zorrinito privado.
CSS Dinámico
Post procesamiento vs. preprocesamiento
Para los que conocemos y usamos Less o sus variantes, nos alegraríamos mucho de saber que CSS pueda agregar capacidades similares. A pesar de que gran parte de la comunidad esté en desacuerdo (¡Gracias, AM!), yo creo que serían útiles, por varias razones. (Invito a discutir a quién piense distinto.)
- Por un lado, permitirán la inserción fácil de quienes no dominen CSS completamente. Está claro que significa que se pueden resolver cosas de una forma no tan prolija, pero los lenguajes tratan de facilitarnos las tareas a nosotros, no imponernos reglas que debemos seguir. Cuando existe esa diferenciación es cuando comienzan a surgir buenas prácticas.
- Por otro lado, permitirá la creación de frameworks más dinámicos, sin uso de JavaScript. Frameworks CSS que sean adaptables al uso de los usuarios, multi-navegador y apropiadamente utilizables. De la misma forma que Bootstrap tiene variables globales que se pueden cambiar para ajustar su comportamiento, así serían más dinámicos y reutilizables.
- Por otro lado más: reutilización. Muchas veces los esquemas de colores se basan en un conjunto limitado de los mismos. Si los tamaños de fuentes ya admiten relaciones entre ellos, ¿por qué no los colores, por qué no condicionales que devuelvan un valor según el valor padre? (Nuevamente, en favor de los CSSs consistentes cross-browsers.)
- Minimización de hacks. Por partida doble. En el primer aspecto, por todo lo que nombré. En el segundo aspecto, por la posibilidad de limitarlos a lo necesario y sólo reutilizarlos como referencia (lo que Less denomina mixins).
Todo esto venía a los links que me encontré, relativamente novedosos: Calc() para CSS, un operador que calcula valores en base a los argumentos que se le pasen. Creo que este pedacito de código lo paga todo:
#foo {
width: calc(50% - 100px);
}
<div id="foo">Always 100 pixels less than half the available area</div>
Por otro lado, Scoped Styles, algo que sólo veo como utilidad al momento de permitir usuarios escribir su propio CSS (apropiado para SaaS en donde los usuarios tengan su propio espacio). No soy muy fanático de esta funcionalidad, pero reconozco que resuelve un problema existente.
Soy un zorrinito dinámico.
¿Por qué distintos dominios para recursos estáticos?
La razón detrás de las URLs raras...
Sabemos que el nombre no es más que un nombre y que no importa cuál sea el servidor actual en donde se están alojando los datos, pero parecería que es una práctica común de muchos sitios grandes (léase: Facebook, Twitter, Google, etc.) hacer referencia a muchos de sus recursos en dominios externos. Por ejemplo, las imágenes de Facebook se encuentran alojadas debajo de http://static.ak.fbcdn.net/ y no debajo de http://www.facebook.com/, ni siquiera debajo de http://imgs.facebook.com/. ¿Por qué?
Alguien ya hizo esa pregunta y la respuesta fue nueva para mí: hay una limitación en varios browsers (y hastas donde yo sabía, algunos sistemas operativos) que previene hacer más de dos, tres o cuatro conexiones simultáneas a un mismo hostname. De hecho, es parte de la especificación HTTP 1.1 (parece que cumplir el estándar no siempre está tan bueno, ¿no?). Ahora, si notaron, la limitación es por hostname, ¿por qué entonces utilizar distintos dominios? La razón es evitar cookies que pueden estar yendo y volviendo en cada uno de los pedidos, y para evitar eso, se puede usar un dominio extra que nunca devuelva cookies. De esa forma, sitios grandes como estos se ahorran mucho bandwidth.
UPDATE: Gracias a Exos, que claramente estaba más informado que yo en este tema, las limitaciones exactas son de tres conexiones por cada dominio y cinco para cada IP. Los distintos dominios/subdominios ayudan a utilizar CDNs para distribución de contenido con mayor velocidad. Exos está en desacuerdo (y demuestra por qué, miren los comentarios) con que las cookies sean una gran carga respecto del bandwidth. Entonces el por qué de los dominios vs. subdominios queda en duda, pero suponemos que debe estar relacionado con políticas de administración interna de cada empresa.
Soy un zorrinito performante.
Estilos en IE8-
Y mi sobrada misericordia
Me acabo de dar cuenta, de casualidad, que los estilos del blog no estaban funcionando en IE8-, debido a la presencia de elementos de HTML5, que, para ser breve, rompían todo. Tengo sentimientos encontrados y noticias acordes.
Por un lado, si es que estabas usando IE8- y visitando mi blog, asumo que debés de estar de pasada, no creo que seas el tipo de audiencia que lee este blog. Por lo general la gente acá utiliza Chrome o Firefox, y siempre en las versiones más actuales. Lamento decirlo, pero surfers de IE, son una minoría.
Por otro lado, les perdono que no hayan actualizado y ya solucioné el problema. Disfruten de dos colores más.
PS: Ahora tenemos búsqueda. ¡Wheeee!
Soy un zorrinito misericordioso.
Take 2 minutes
...to clear your app permisions
De parte de i.MicroSiervos me entero de la existencia de MyPermissions.org, una pequeña recopilación de links comunes a distintas aplicaciones que nos lleva directamente al punto para remover/editar permisos de aplicaciones. Podemos encontrar muchas cosas en nuestro cementerio de aplicaciones de Facebook, Twitter, Google, Yahoo, Dropbox, etc. Vale la pena tomarse dos minutos y ver qué cosas estamos permitiendo que realmente no usamos, o peor aún, no deberíamos usar.
Soy un zorrinito seguro.
Pantallas, de cerca
El mundo microscópico de los píxels
Hace un par de días, un artículo en MicroSiervos mostraba una comparación de las pantallas del iPad 2 y el iPad 3 (que no se llama iPad 3). Más interesante aún, dejaron el link al blog de Lukas Mathis, que entre otras cosas escribió un artículo llamado The New iPad’s screen under the Microscope.
Más allá de sólo mostrar la comparación entre las pantallas del iPad viejo y el nuevo, continúa agregando imágenes con el mismo aumento de otros dispositivos, tanto de Apple (iPhone 4S, iPod Touch), como de otras marcas y tipos de tablets o teléfonos. A mi me sorprende mucho la variabilidad que tienen los píxeles en cada una de las pantallas, y cómo la formita especial que cada uno tiene ayuda a una calidad particular de imagen.
Está claro que la gente de Google está peleada con el color verde y reducen su presencia (aunque yo había escuchado que el ojo humano es más sensible al verde que a otros colores, con lo que seguramente esto se haga para compensar), mientras que otros tratan a todos por igual (como el Nintendo 3DS).
Soy un zorrinito de color… (not).
ASP.NET MVC UserVoice
Para que la comunidad se construya a sí misma
¿Recuerdan que alguna vez conté de UserVoice y cómo permite obtener feedback de la comunidad? Bueno, la gente de Microsoft me leyó (?) y el mismo desarrollo de ASP.NET MVC está siendo permitido por la comunidad. Una de las formas es este mismo user voice, que pueden encontrar en el ASP.NET MVC UserVoice Site.
Otra forma, menos obvia pero muy clara aún así, es que el framework es Open Source y está hosteado en ASP.NET en CodePlex, junto con otros proyectos muy cercanos. Está claro que se puede modificar pero Microsoft aclara que no van a tomar código nuestro (aunque siendo sinceros, creo que eso se evalúa en caso por caso). Sea como sea, dicen que están muy interesados en todo tipo de feedback.
Soy un zorrinito libre.