Alpha's Manifesto

A black and white figure's thought-hive

jQuery Novice to Ninja

Manos a la obra desde lo más básico

jQuery Novice to Ninja

Acabo de terminar de leer el libro jQuery Novice to Ninja, de la editorial SitePoint y de los autores Earle Castledine y Craig Sharkie. Debo decir que el libro ha sido una buena elección de lectura.

Para empezar, el libro asume que el lector tiene pocos conocimientos de jQuery y de JavaScript en general, lo que hace que cualquiera, con niveles de conocimientos básicos de programación web, pueda hacer utilización de él. A pesar de eso, el libro no es lento en la forma en la que va presentando conceptos, y para aquella gente que no está divertida con la teoría y quiere poner manos a la obra: el libro está completamente planteado desde un punto de vista práctico y manos a la obra. De hecho, el libro viene con código fuente gratuito que podemos descargar para que se convierta en los ejercicios que el mismo libro propone, dándonos en los capítulos las soluciones y las explicaciones, y permitiéndonos replicar para asegurar nuestro conocimiento.

Pensé al principio que comenzar desde conceptos básicos sería un mal signo, porque seguramente estarían permitiendo malas prácticas filtrarse para explicar determinadas características, pero este libro probó que yo estaba equivocado: siempre se refuerzan las buenas prácticas (y se explica por qué) y el libro hace un esfuerzo considerable por mostrarnos la buena importancia del progressive enhancement, del cual seguramente escribiré más adelante.

Efectivamente, el libro termina en las facetas más avanzadas de jQuery, incluyendo Theming y Plugins. A estos dos les dedica muy poca longitud y detalle, en comparación al resto de las temáticas. Plugins fue cubierto, de forma implícita, en el resto del libro cuando hablaba de namespacing y scoping (también buenas prácticas) y theming fue algo que básicamente no se tocó. También se cubrió ligeramente jQuery Mobile. Estas últimas parte fueron un poquito decepcionante por lo corto de las explicaciones, pero aún así estuvieron presentes.

Notesé que el libro es sobre jQuery y no sobre JavaScript, por lo que si esperaban ver patrones avanzados de JavaScript y modularización, programación funcional, currying y cosas así… este no es su libro. Aún así, para alguien que se dedica a desarrollo frontend y especialmente alguien que quiere entrenarse en esta librería, utilizando buenas prácticas y manos a la obra, es un libro esencial.

Le doy 5 zorrinitos.

$(‘#zorrinito’).soy();

Jasmine

Javascript BDD

Jasmine no es el primer ni el último testing framework que existe, pero aquellos que vengan desde RSpec lo encontrarán muy parecido y fácil de usar.  La misma página de Jasmine muestra una buena cantidad de ejemplos de cómo puede ser usado y de sus capacidades. Cabe destacar que no depende de ningún otro framework, pero juega bien con ellos (lo cual es interesante para realizar pruebas de UI aprovechando capacidades que jQuery, Dojo o Mootools nos puedan dar), y ni siquiera necesita del DOM estando cargado, lo que significa que de tener una aplicación compleja en JavaScript, podemos realizar pruebas unitarias respecto de nuestras propias librerías, independientemente de que se encuentren cargadas en un entorno o no.

Soy un zorrinito testeado.

Pro ASP.NET MVC3 Framework

Pro ASP.NET MVC 3 Framework by ApressAcabo de terminar de leer Pro ASP.NET MVC3 Framework, un libro de Apress, escrito por Adam Freeman y Steven Sanderson. En pocas palabras, el libro es muy bueno, no exageradamente detallado pero buena aproximación para quiénes quieran ganar un nivel principiante/intermedio en la plataforma. Determinadas características han quedado afuera, y por supuesto, detalles de la implementación del framework también. Eso habría sido material para una buena cantidad de otros libros. Este en particular está muy orientado al ejemplo práctico, y es ideal para afianzar teoría con pequeños snippets de código que la hacen práctica. Cubre algunos aspectos relacionados a esto para darle un buen contexto y es una buena opción por su precio, pero no es suficiente para el que quiera entrar demasiado profundo en los interiores de la plataforma.

El libro se divide en tres grandes partes. La primera parte, llamada Introduciendo ASP.NET MVC 3, es una explicación muy a vuelo de pájaro de qué es MVC, cómo es la aproximación de Microsoft a él y unos ejemplos básicos para demostrar la organización de una aplicación MVC. Se habla un poco de inyección de dependencia, haciendo uso de Ninject, pero su aplicación es de lo más básica y no justamente asociada a las buenas prácticas, aunque como primer paso, es bueno. Habla de DDD y de TDD, ayudado de Moq, desde un punto de vista tan superficial que no hacen impacto en el resto del contenido, pero siguen estando ahí.

La segunda parte del libro, ASP.NET MVC3 en Detalle, comienza a hablar del sistema de ruteo, de cómo se enlazan a él los controladores y las acciones, el uso de filtros (casi tocando AOP para controladores, pero no mencionándolo), uso de controladores propios, autorización, generación de un engine propio de vistas, uso de helpers, vistas parciales, acciones hijas, templates de modelos, binding de modelos, validación, AJAX, y el uso de jQuery. En estos últimos dos puntos debo hacer una aclaración: la forma en la que se implementa AJAX es todavía muy Microsoft-oriented, del estilo de hacer una receta y que todo funcione de forma mágica. Se queda muy corto para customizaciones y aplicaciones reales con lógica de cliente compleja, pero recordemos que este libro es sobre ASP.NET MVC, no sobre JavaScript. Aún así, es un buen comienzo para profundizar en otro libro.

La tercera y última parte, Entregando Projectos ASP.NET MVC 3 Exitosos, cubre varios puntos extras no exactamente de a la plataforma pero relacionados. Uno de ellos es la seguridad. Se le dedica un capítulo entero a determinados tipos de ataque y forma de evitarlos. Como los otros temas tangenciales, no es una guía definitiva, pero un buen punto para comenzar. Otro capítulo está dedicado a la autenticación y la autorización, sin mucho detalle y sin mucho ejemplo esta vez, pero pasos básicos que nos permiten conocer varias opciones distintas para las distintas situaciones que debamos afrontar. El último capítulo de esta parte se enfoca en el deployment y la generación de paquetes de instalación. Nuevamente, no contiene mucho detalle.

El libro en general es bueno como introducción y bueno como ejercicio de aprendizaje. Es detallado en el comienzo y light al final, con lo cual sus 836 páginas en realidad son un resumen de mucho más que podría cubrirse. Es un balance apropiado, con lo cual recomiendo su lectura. Le otorgo unos 4 zorrinitos.

Naked password

yeaaah, venga esa complejidad!

De los rincones recónditos de User Experience en StackExchange y una pregunta de cómo incitar a los usuarios a poner passwords fuertes, me entero de la existencia de Naked Password, un plugin de jQuery que en sitios informales (muy informales) incentiva a los usuarios a usar passwords complejos, de forma… digamos… “natural”. Pueden probar el demo en su misma página.

Dicho sea de paso, otras buenas respuestas fueron:

Soy un zorrinito de poca complejidad.

Link del día: UI Layout Plugin

Del mundo de jQuery nos vuelve a caer un plugin de buena utilidad, bajo el nombre de UI Layout Plugin. Este plugin nos permite manejar dinámicamente el layout de nuestra página, permitiendo interacciones complejas o pantallas con mucha información para ser mostradas de forma dinámica.

Está claro que no siempre esto es deseable, pero para esos momentos en donde la interfaz debería complicarse para permitir variadas acciones sin interrumpir el curso normal de lo que estaba pasando, quizás hasta permitiendo una interacción rica y compleja antes de continuar con el intento original, incluso sin perderlo de vista, imagino que ese es el uso más interesante que este plugin nos puede ofrecer.

Soy un zorrinito modificable.

Link del día: Documentación jQuery extra-oficial

Me encontré con dos fuentes de documentación extra-oficial de jQuery, con lo cual, por supuesto, pueden estar desactualizados y hasta incorrectos. Pero lo interesante de ellos es que nos ofrecen una navegación un poco distinta que la que la documentación original nos ofrece.

Es el caso, por ejemplo, de Visual jQuery (actualmente en 1.2.6), que nos permite navegar la documentación de forma jerárquica, sin perder el nivel de dónde estábamos. Además, encontré que es muy orientado a ejemplos, con lo que es fácil llegar al punto de lo que hace cada cosa y cómo se utiliza.

jQAPI es un caso parecido, y parecería que la navegación es aún más fácil en este caso, incluyendo búsqueda HTML5 y todo. Me pareció que este tiene explicaciones más detalladas y ejemplos más completos.

Soy un zorrinito javascript.

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: jQuery File Upload

Me crucé con este plugin hace tiempo y lo quería probar pero no he tenido la oportunidad de hacerlo todavía. Este plugin envuelve básicamente toda la funcionalidad de subir archivos a un servidor, mostrar barras de progreso, permitir drag & drop, aparte de la clásica búsqueda de archivos desde cuadros de diálogo, selección múltiple y sin usar Flash.

También: posibilidad de cancelar el upload, preview de imágenes, formulario estándar si no hay JavaScript habilitado, extensible, y por supuesto, open source.

jQuery File Upload parece ser una de esas joyitas que nos dan un problema muy común ya solucionado.

Via Creativos Online, y alguien que lo compartió en Google Reader (perdón, pero ya no sé quién fue!).

Soy un zorrinito con soluciones.

Link del día: Script Src

Sacando esto del cajón de las aplicaciones que no hacen nada pero son útiles, me encontré a ScriptSrc, una aplicación que mantiene las últimas versiones a varios frameworks y librerías comunes, como jQuery, mooTools, extJS, YUI, etc. Por supuesto, los scripts no están alojados en este propio servidor, sino que ellos nos dan el link al CDN correspondiente que lo aloja, permitiéndonos linkearlo directamente.

Y aunque hay un poco de discusión sobre si realmente conviene usar CDNs o mejor archivos pequeños en nuestro propio host, hay ciertas ventajas y desventajas. Las ventajas son ineludibles, las desventajas no lo son tanto.

Soy un zorrinito distribuido.

Link del día: JSONSelect

Para aquellos que hayan trabajado con jQuery (o con otras librerías JavaScript) sabrá que la sintaxis para usar los selectores es prácticamente algo mágico, que hace muchísimo más simple nuestro trabajo.

Alguien pensó que sería muy buena idea poder seleccionar datos en esa forma desde una estructura en JSON y, justamente, creó JSONSelect. Esta pequeña librería todavía se encuentra en una etapa muy experimental, muy poco madura, pero ya podemos ver determinadas demostraciones en vivo funcionando.

Cuando tenemos un sistema que diseñamos nosotros y elegimos transmitir la mínima cantidad de datos posibles, no tiene mucho sentido la aplicación de esta técnica. Pero si necesitamos dejar muchos datos del lado del cliente (y por qué no, decidamos hacerlo en JSON), o estemos usando servicios de terceros que nos den una estructura algo compleja, puede que JSONSelect nos haga muy fácil, intuitivo y legible la forma en que estamos accediendo a determinados de esos datos.

Soy un zorrinito selectivo.