Alpha's Manifesto

A black and white figure's thought-hive

Lo que no se sabe que no se sabe

Manejo del conocimiento, parte 2

Temo por cualquiera atrapado entre lo que sabe y lo que todavía no sabe que no sabe.

— Cecil, Pilot (Welcome to Night Vale)

Tiempo atrás hice un post sobre consejos que yo tenía para iniciarse en la práctica de la programación, pero sobre aspectos que no tenían que ver con la tecnología. (“Consejos para un no-programador“). Hoy, uno de esos conceptos volvió a mi recargado, y quisiera elaborar sobre él: no saber que no se sabe.

(Read more →)

Los favoritos

El fenómeno 2.0 del soporte y el gusto personal

Favorites

Una amiga mía preguntó en DeviantArt: ¿por qué favean? ¿Qué hacen con sus favoritos?

La pregunta me parece un poco más profunda de lo que aparenta ser en una primera leída. Los favoritos y la forma en la que se usan pueden ser un fenómeno de internet en sí mismo y la cultura 2.0. Quisiera hablar un poco de eso.

(Read more →)

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.

Link del día: Videos Adaptables

De la misma forma que hace poco hablamos de Adaptive Images, hoy tenemos una propuesta parecida para videos, llamada FitVids (también de parte de la gente de CSS Tricks). Más que una configuración del lado del servidor, FitVids se trata de un plugin de jQuery que nos permite hacer el tamaño de los videos fluidos, ajustados al máximo de su contenedor, permitiendo que las cajas de los videos sean también fluidos con el diseño de la página.

Hay un video de demostración, y mejor aún, la misma página es la demostración de su funcionamiento, en donde podemos cambiar el tamaño de la ventana y ver cómo el video se escala de forma proporcional. Haciéndolo un par de veces logré hacer crashear el plugin de Flash en Chrome, pero estoy seguro que eso es un problema relacionado con el navegador y con el plugin, no con el funcionamiento del plugin en sí.

Según cuentan, ya soporta una buena cantidad de proveedores de video populares (por supuesto, Youtube y Vimeo son los dos primeros de la lista), con lo cual ya debería ser útil para el 99% de todos nosotros.

Soy un zorrinito adaptativo.

Link del día: Performance HTML5, CSS3 y DOM, Parte 1: Intro

Acabo de ver dos videos de Paul Irish, del grupo de Google Chrome. Uno de ellos era Google Chrome Developer Tools: 12 Tricks to Develop Quicker. Aquí básicamente nos da una explicación de los Chrome Developer Tools con algunos trucos que no son tan sabidos. Interesante y útil.

Sin embargo, el video que más interesante me resultó es uno de media hora llamado HTML5, CSS3 and DOM Performance.

Este video es terriblemente informativo sobre varias temáticas. Quiero en el futuro poder dedicarle un poco más de tiempo a cada una, pero mientras tanto, dejenmé hacer un resumen de las cosas que se tratan en el video:

  • Reflows: primero se habla de este concepto, relacionado a las operaciones de repintado que un navegador debe realizar. Nos cuenta el caso de Chrome y de Safari (WebKit) y de ciertas operaciones y trucos para evitar. Nos muestra cómo efectivamente podemos monitorear y mejorar esa performance.
    Herramientas relacionadas: Comandos ocultos de Chrome.
  • Animaciones CSS con aceleración por hardware: Mucho del trabajo de repintado puede hacerse de forma tal que el navegador termine delegándolo al GPU de mando en la máquina cliente. Esto trae experiencias muy distintas, y puede forzarse con pocos truquitos, que en este momento son básicamente hacks. Incluso podemos ver el efecto en ciertos dispositivos móviles.
    Herramientas relacionadas: Improving the performance of your HTML5 App (artículo), Elements Complete (demostración)
  • Animación y web workers: Mucho del trabajo que nuestro javascript hace no tiene por qué estar en el thread principal de pintado de la página, esto lleva a las páginas frizadas y funcionando lento. Para eso podemos delegar nuestra ejecución a web workers, que tienen una buena performance y es amigable con la batería.
    Herramientas relacionadas:  WebGL Field (demo)
  • Benchmarking: relacionado a todo lo anterior, necesitamos de una forma objetiva y poderosa de poder probar qué elementos son mejores. El ejemplo que Paul menciona es: realmente es más performante usar el === en lugar del == en JavaScript? Ahora tenemos la forma de probarlo fácilmente.
    Herramientas relacionadas: jsPerf (herramienta de test cases para benchmarking), BrowserScope (versión colectiva de pruebas en browsers), Benchmark.js (librería JavaScript para benchmarking y testing).
  • Build scripts: la posibilidad de automatizar el generado de los sitios puede ahorrar muchos problemas en la performance. Así como alguna vez hablamos de mod_pagespeed, Paul menciona otras alternativas.
    Herramientas relacionadas: HTML5 BoilerPlate (librería de startup para generar aplicaciones bajo buenas prácticas).

Espero poder ahondar en cada uno de estos en el futuro. Estén atentos!

Soy un zorrinito performante.

Link del día: AngularJS

Hace poquito apareció en mi feed de Youtube una charla de Google Tech Talks llamada How to Write Clean and Testable Code. Para ser sinceros, el video dura más de una hora así que no lo ví, pero en lugar de eso busqué las diapositivas que se habían usado en él y las encontré aquí: How to write Clean and Testable Code Slides. Las diapositivas no me resultaron demasiado reveladoras tampoco pero sí resaltan algunos conceptos claves que es bueno siempre tener en mente.

Más allá de eso, en las diapositivas (y muy seguramente en la charla) se menciona a AngularJS, así que lo fui a buscar. Parece que AngularJS es un sistema de templating a través de JavaScript, pero mucho mayor que simplemente templating. Digamos que más que estar orientado en generar HTML a partir de datos, también se preocupa de la forma en que esos datos deben interactuar, de forma que, podríamos decir, también genera algo de código dinámicamente para que estos datos funcionen correctamente.

No lo he probado, pero ellos dicen que es la forma en la que debería haber sido HTML si es que hubiera sido pensado desde un principio para aplicaciones web.

¿Alguien lo probó? ¿Cuáles son sus experiencias?

Soy un zorrinito javascript.

Link del día: HTML5 video now!

Hay sitios web que ya están comenzando a utilizar video HTML5 para distribuir su multimedia. Algunos de ellos son Youtube y Vimeo, pero tratándose de un estándar, el resto de nosotros no tenemos por qué quedarnos afuera.

Aparece entonces en escena un plugin de jQuery llamado jMediaelement (jme), que nos permite manejar los nuevos tags <audio> y <video> con puro JavaScript. Eso no es todo, también podemos generar un mensaje de fallback, o incluso mostrar un reproductor Flash si es que el navegador del usuario no tiene soporte para video/audio HTML. Por supuesto, todo esto está encapsulado en una librería de JavaScript y con pocas instrucciones ya podemos tener nuestros reproductores funcionales.

Soy un zorrinito HTML5.

Link del día: ¿Cómo rankear contenidos?

Hace un tiempo me puse a investigar sobre cómo utilizar alguna técnica que me permitiera rankear contenidos. Es decir, tener algún feedback de parte de los usuarios para saber qué contenido gustaba más y cuál no tanto. “Copiémosnos de los grandes“, pensé yo, y busqué algún ranking de estrellas, al mejor estilo Youtube.

Encontré un plugin de jQuery llamado Star Rating, un sistema que basado en AJAX, y dos o tres imágenes, podemos tener un sistemita de ranking por estrellas muy simpático. Es muy personalizable y fácil de implementar, también muy fácil de acomodar según los distintos layouts que dispongamos para nuestro contenido, y finalmente, algo personalizable en funcionalidad también (por ejemplo, podemos hacer que muestre un promedio o un valor determinado, podemos hacer que sólo se pueda votar una vez o que se pueda cambiar el voto, o que se puedan votar varias veces, etc.)

Fue no mucho después que leí un artículo llamado Youtube Like Rating with jQuery & Ajax, y ahí fue en donde me dí cuenta que los grandes ya no utilizan el sistema de estrellas. Por si se dieron cuenta, Facebook tiene sólo un “Like” (o “Me gusta”, en español), y Youtube ahora tiene un “Like” y un “Don’t like”. ¿Por qué tan simplista?

La respuesta estaba en un artículo del blog oficial de Youtube, llamado Five Stars Dominate Ratings, en donde básicamente explican que de las 5 estrellas, rara vez alguien utilizaba la número 2, 3 y 4. Generalmente, si a alguien le gustaba un video, lo rankeaba como 5 estrellas, y si no le gustaba para nada, simplemente lo abandonaba o lo rankeaba con una estrella. ¿Y en el medio? Una minoría.

Y sobre ese mismo tema encontré un artículo muy interesante, también analítico de la gente de Steepster, Brewing a Better Rating System, en donde explican cuáles fueron las distintas aproximaciones que tuvieron para que la gente rankeara la información de su blog. Es interesante leer esta versión porque a la vez ellos creen que el sistema de sí/no no es del todo apropiado para expresar lo que uno piensa de un artículo, y entonces ellos permitieron una variabilidad en el puntaje.

¿Qué piensan ustedes? ¿Cuál sería la mejor forma de pedirle a alguien que opine, fácilmente, de un artículo/contenido que ustedes hayan generado?

Soy un zorrinito de feedback.

Link del día: Datos, todos en uno

Quizá muchos sepamos que existen varios agregadores de datos para la vida web. Lo que hacen es coleccionar datos de distintos lugares y mostrarlos en uno solo. Muy bueno para poder mantener toda nuestra actividad web concentrada, y poder mostrarnos de alguna forma en ese lugar en particular.

Ha habido varios intentos de esto, pero uno de los más interesantes para probar es Pubwich, una aplicación web open source creada en PHP que nos permite incorporar varios servicios. Según parece, tiene actividad muy reciente, por lo que de a poco iremos encontrando mejores funcionalidades, más integraciones y menos bugs. Los servicios que actualmente son soportados son Delicious, Dribble, Facebook, Flickr, Github, Goodreads, LastFM, Readernaut, Reddit, Slideshare, StatusNet, Twitter, Vimeo, Youtube, y pronto estarán sumados Digg, Ffffound, y Foursquare. Como extra, podemos integrar cualquier feed RSS o Atom, con lo que incluso si nuestro servicio no se encuentra definido, de alguna forma podemos darle más funcionalidad.

Y este servicio solo requiere Apache y PHP5. Podemos bajar el código para usarlo desde su repositorio en Github, o ver un demo online. Personalmente, creo que estaría mucho mejor si es que guardara datos viejos y nos permitiera visualizarlos.

Alguno lo utiliza? Qué opinan ustedes?

Soy un zorrinito integrador.

Link del día: La clave de una presentación: la sorpresa

Este link es un video, al cual llegué gracias al blog de Thalskarth Maëlstrom (a quién en algún momento comenzaré a llamar “T”), el cual muestra de forma divertida cómo es que un profesor dando una clase sorprende a sus alumnos interactuando con su propia sombra y les da el saludo de vacaciones de pascua.

Fuera de lo divertido y novedoso que resulta (lo cual podemos profundizar en un video donde él nos cuenta cómo lo hizo), hay que destacar algo muy interesante: la sorpresa fue la clave de esta presentación. El concepto novedoso, semi gracioso les permitió a todos mantener la atención centrada en lo que él hacía, sin sentir cansancio ni aburrimiento.

Por supuesto, la presentación no fue muy informativa, pero supongamos que haciendo los mismos pasos, el profesor se hubiera dedicado a enseñarle a sus alumnos cómo es el manejo básico de Windows.

(A partir de aquí voy a contar cosas del video, no lo lean si prefieren ver la sorpresa ustedes mismos.)

El profesor podría haber dicho cosas como “Está borrando mis documentos dejándolo en la papelera!” o “Ahora desde aquí apagaré el sistema para que no moleste más”, o “Quizá si minimizo una ventana ya no la verá y no podrá usarla” (este último es hipotético). Si ese hubiera sido el caso, el profesor estaría enseñando su manejo básico de Windows, orientado a lo práctico, y en una situación tal que los alumnos agudizaran la atención dirigida para asimilar más rápidamente lo dicho.

¿No es eso, acaso, lo importante de una buena presentación?

Soy un zorrinito sorprendido.