Link del día: Javascript PDFs

Hace no mucho se hizo popular un script llamado pdf.js, un agregado sobre node.js que permite la generación de archivos PDFs directamente desde el navegador. Más allá de la novedad, parece que este es solo un proyecto de los muchos que tiene Marak Squires, un ingeniero de software que publica cosas muy interesantes, sin mentir (como lo dice él).

En su blog encontraremos cosas de verdad interesantes para los que se desarrollen en este área, como por ejemplo Front-End Developer Manifesto, una guía práctica de puntos a seguir para aquellos que desarrollan HTML/JavaScript.

Por si no fuera poco, me encontré con su sitio en GitHub, y ahí podemos ver la enorme cantidad de proyectos que tiene, muchos de ellos relacionados íntimamente al JavaScript. Unos ejemplos de su autoría son machine.js (un convertidor de hojas de estilo CSS a máquinas de estado), JSLINQ (una migración de LinQ a node.js), node_mailer (una utilidad para el envío de emails desde el browser), say.js (un text-to-speech en JavaScript), play.js (para reproducir sonidos), o asciimo (sitio web - para crear arte ASCII).

Tenemos mucho para ver, pero seguro que algo de todo eso nos será útil, y por qué no, quizá podamos extenderlo.

Soy un zorrinito JavaScript.

(Read more →)

Link del día: Xyle

Xyle es un debugger HTML/CSS para Safari (ya que seguramente todos los que utilicen Firefox estarán muy contentos con Firebug). Cabe destacar que si bien Xyle es solo para entornos Mac, la forma de presentación de la información es bastante distinta, algo novedosa. Personalmente, me parece algo intuitiva a la vez de elegante, con lo cual con mucho gusto lo probaría.

Para leer un review al respecto (y una pequeña comparación con Firebug), pueden leer un artículo de DesignShack sobre HTML & CSS Debugging Tools, o un review de Xyle Scope en el blog de Carsonified.

Soy un zorrinito debugger.

(Read more →)

Link del día: Colaboración online

Hemos venido escuchando hace tiempo la idea de colaboración online, con distintas aplicaciones de distinta índole y orientadas a distinto tipo de usuarios.

Por un lado tenemos a HyveWorks, un sitio de colaboración para empresas, a modo de comunicación interna para toda la gente que forme parte de la misma. La integración con Kenai de NetBeans es otra idea orientada a desarrolladores y su colaboración online, real-time. Y sé que ejemplos como estos hay miles, pero vamos a pasar a uno en particular, que encontré hace poco.

Esta aplicación en particular se llama Kohive, y es una aplicación que se integra a los navegadores y proveerá aplicaciones de escritorio para colaborar online con otras personas. Lo interesante es la flexibilidad que ofrece: la capacidad de crear distintos perfiles, la capacidad de tener varios entornos de trabajo separados, y por supuesto, búsqueda, comparación y trabajo con documentos dentro de dichos entornos de trabajo. Pronto vendrá la integración con Growl y con iPhone, y por lo que sabemos, gran parte de la aplicación se encuentra en desarrollo todavía, pero parece ser usable.

Alguno ha tenido una experiencia con ella? Qué piensa al respecto?

Soy un zorrinito colaborativo.

(Read more →)

Link del día: Más tutoriales y manuales

Anteayer hablábamos de un sitio con distintos tutoriales, y muchos de estos estaban orientados al diseño gráfico, fotografía o diseño web. Hoy tenemos un sitio muy similar, llamado 1st Web Designer, que se orienta más al desarrollo web o incluso a otras cosas no relacionadas. (De hecho, el logo se parece mucho al de Debian Linux, verdad?)

Yo encontré ese sitio tras haberme cruzado con un tutorial llamado How to create your first Wordpress theme - part 1, pero estoy viendo que hay cosas muy variadas. How to make a sleek Wii controller, 35 Tutorials to get your awesome design print-ready, A crash course in creating e-Commerce websites in Wordpress, son algunos ejemplos.

Ya que estamos hablando de tutoriales y manuales, podemos ver también este sitio llamado Top PDF Manuals, otro sitio de búsqueda de PDFs o eBooks, como hemos visto antes en otros sitios ([1], [2]).

Soy un zorrinito tutorial.

(Read more →)

Link of the day: Writing Testable Code

I’ve been looking into some documentation on how testable code should be written. They all say pretty much the same, but I found this article by Isa Goksu which is quite extensive on some particular points, and also provides a good linking to other related articles. He mentions concepts that are closely related to testing and test-driven development, like The Simplest Thing that Could Possibly Work, or Law of Demeter (which is a good design pattern too), some not-as-spread-as-they-should-be Principles of Object Oriented Design, and so on.

Remember we also have Google Testing blog where sometimes guidelines about testing and good testable code is engineered.

Hope it’s a testable Friday for you!

I’m a testable little skunk.

(Read more →)

Link del día: Quieren ir al Black Hat?

Esta noticia llegó a mí gracias a un tweet de @offsectraining, el usuario de Twitter de Offensive Security, que decía: “Quieren ganar un ticket gratuito de BlackHat a las Vegas? Vengan y hackeen por caridad!”.

El link que daban era el de su blog, que nos cuenta en una nota sobre el concurso HSIYF #2 (How Strong Is Your Fu?) que la primera edición de este concurso fue un éxito, que están esperando que mucha gente participe, y que los fondos recaudados por las donaciones serán enteramente derivadas a obras de caridad.

Fuera de eso, he estado leyendo el blog de Offensive Security Training, y revisando un poco los resultados del concurso HSIYF #1. Como vemos, hay que dedicarle un buen par de horas para tener una versión andando, pero los desafíos no parecen realmente tan imposibles (o será eso una ilusión ahora que veo la solución?). Si ustedes piensan igual que yo, se animarían a participar?

Sólo necesitan un buen tiempo pegado en la silla, la mente agudizada, las herramientas preparadas y una buena conexión a internet (eso ya me dejó afuera).

Alguno va a participar? Alguno se anima?

Soy un zorrinito ofensivo.

(Read more →)

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.

(Read more →)

Link del día: Consejitos jQuery, MySQL, AJAX y PHP

Sabemos que los cuatro componentes mencionados (jQuery, MySQL, AJAX y PHP) deben de ser unos de los más comunes para generar aplicaciones web. Cada uno tiene una gran variedad de tutoriales o aproximaciones, podemos buscar y encontrar manuales, libros, ejemplos en abundancia.

Sin embargo, hay algo que resulta muy atractivo, que es lograr buenas aproximaciones, y con “buenas” me refiero a atractivas, usables y novedosas. Ya varios lo han logrado, como es el caso de Facebook, Twitter, Digg y tantos otros servicios con conceptos como el scroll infinito, la manipulación inline del contenido, interfaces avanzadas, etc. Muchos ejemplos pueden servirnos para hacer nuestra propia versión, y como ya alguien me dijo “fijate cómo lo hizo alguien que ya lo haya hecho”.

Para eso el artículo de hoy nos viene muy bien, es jQuery, Ajax, PHP and MySQL projects, de 9Lessons, un compilado de muchos artículos de sus blogs que muestran ejemplos de cosas comunes que querremos lograr, y que, por supuesto, podemos adecuar a nuestras necesidades particulares. Una suerte de cheatsheet pero algo extenso y complejo.

Soy un zorrinito web.

(Read more →)

Link del día: Performance Web

A pedido de JF que está luchando con la performance de algunas aplicaciones web, hago un compilado de ciertos links que fui encontrando hace tiempo, y que de seguro serán útiles a más de una persona para mejorar la velocidad con la que funciona una web application. Especialmente ahora que es tenido en cuenta para su Page Ranking.

Comenzamos!

  • [SpeedTracer](http://code.google.com/p/speedtracer/), una herramienta de Google para detectar problemas de performance a bajo nivel
  • [JavaScript performance best practices](http://wiki.forum.nokia.com/index.php/JavaScript_Performance_Best_Practices), una guía harto detallada de mejoras para la programación JavaScript
  • [GTmetrix](http://gtmetrix.com/), una aplicación web que mide la performance de una aplicación/sitio web y muestra resultados al respecto. Mucho de lo que hace se basa en resultados de [YSlow](http://developer.yahoo.com/yslow/) y [PageSpeed](http://code.google.com/speed/page-speed/), ambas herramientas para Firefox que considero imprescindibles.
  • [Yahoo! Smush.it](http://www.smushit.com/ysmush.it/), un servicio online de compresión de imágenes. Lossless.
  • [W3 Total Cache](http://wordpress.org/extend/plugins/w3-total-cache/), un plugin de WordPress que permite mejorar mucho la caché del servidor de los elementos enviados.
  • [Clever JPEG Optimization Techniques](http://www.smashingmagazine.com/2009/07/01/clever-jpeg-optimization-techniques/), técnicas de optimización de imágenes para lograr una buena calidad con bajos tamaños.
  • [Things Cache Do](http://tomayko.com/writings/things-caches-do), una explicación muy simplista de cómo funcionan los sistemas de caché, gracias a la gente de [MicroSiervos](http://www.microsiervos.com/archivo/ordenadores/asi-funciona-las-caches-web.html).
  • [Best Practices for creating websites in IIS 6](http://omaralzabir.com/best_practices_for_creating_websites_in_iis_6_0/), título autoexplicativo.
  • [Force caching with .htaccess method to increase loading speed of your site](http://tutzone.net/2010/04/force-caching-to-increase-loading-speed-of-your-site.html)

Eso es todo por hoy, pero seguramente tengo más por ahí guardado que hoy no logré encontrar. A apurar los websites!

UPDATE 21/05/2010:

Agrego los siguientes links que me mandó El Hombre Gris, para optimización de PNGs, parte I y parte II, de la misma idea que el de la optimización de JPEG que vimos antes.

Soy un zorrinito rápido.

(Read more →)

Link of the Day: Cassandra by example

In a past link of the day, I have already talked about some distributed NoSQL systems, and the benefits it could bring. I think now it’s time to dive a little deeper in one of them, probably one of the most popular of these days, which is Cassandra.

But instead of going through a long, technical book, lets take this article from Eric Evans called Cassandra By Example, where he gets off all of the theorization and technicisms about these systems, and instead, provides us with a nice example to start from scratch: Twitter. He first explains how would the relational approach should be, and then how the NoSQL approach would be, using Cassandra.

Not only that, we will see some code implementing Twitter features, which is not functional but totally understandable as an example. Then we’ll be able to grasp concepts like keyspaces, column families, reversed columns and so on.

Also, remember that there are already a variety of implementations for Thrift (the client interface) and lots of articles to check out.

I’m a little skunk by example.

(Read more →)