Link of the day: Rich text editing

There are a couple of subjects in web design and web development that will never grow old. One of them is this one: rich text editing. At least until browsers and web standards include a way for rich text editing to be done on the client side, there will be custom implementations through JavaScript and HTML markup that will provide users of WYSIWYG editors.

So, Plug-ins for rich text editors on your website is an article with a nice collection of different plugins and options you may use to provide that functionality, but still there are many many options.

Which one are you closer to? Any specific advantage or disadvantage that plugin provides?

I’m a WYSIWYG little skunk.

(Read more →)

Link del día: Consejos de base de datos

Gracias a @smashingmag y a @breakingdev me entero de una serie de consejos para programadores sobre bases de datos. Es muy buena esta aproximación, ya que por lo general los programadores se enfocan más del lado de la lógica de una aplicación, quizá en cuanto a la arquitectura o al diseño de un sistema, y no tanto a la forma en la que se almacenan los datos para el mismo. Y cabe destacar, que muchas veces esta puede ser una diferencia enorme en cómo se comporta el sistema.

Para comenzar con un link cortito, comencemos con el Top 10 MySQL Mistakes Made by PHP Developers, que como su nombre lo indica, es un listado de errores comúnmente realizados por programadores web, y ciertamente son comunes. No todos están 100% directamente relacionados con la base de datos en sí, pero de alguna forma siempre impactan sobre ella.

Para continuar con un listado más detallado y explicado, Database development mistakes made by application developers, una discusión que en Stack Overflow surgió con la pregunta: qué cosas nuestros DBAs no nos perdonarían? Cabe destacar que esta pregunta está muy relacionada con What are the most common SQL anti-patterns?, que también se relaciona con errores comúnmente cometidos.

Ambas discusiones tienen una buena extensión y una buena cantidad de respuestas, muchas de ellas detalladas y explicadas con la razón de la equivocación y la forma de evitarlo.

¿Se encuentran culpables de alguno de estos errores?

Soy un zorrinito equivocado.

(Read more →)

Link del día: Tareas para publicar un website

Muchos de los que estamos en el ámbito sabemos qué cosas hay que hacer para publicar un website. Más allá de las tareas de desarrollarlo, hay un montón de detalles extras a tener en cuenta en el momento de la publicación. Hablo de cosas como verificar la consistencia de los textos, verificar que no queden textos de prueba, verificar la ortografía, verificar que tenemos el uso correcto de las imágenes, testeos de seguridad, correcto linkeo de páginas… ese tipo de cosas.

Cuando uno lo considera seriamente, se dará cuenta que son muchas cosas a tener en cuenta. Por eso, la gente de AddedBytes (de la que ya hablamos antes – [1], [2]) ha publicado The Ultimate Website Launch Checklist, que pueden ver online o descargar, o directamente leer en BoxUk (el sitio original).

Dénle una mirada, muy seguramente descubran algún paso que no estaban teniendo en cuenta, y quizá sería buena idea tenerlo en cuenta para el futuro. O por qué no, usar la checklist completa. ¿Hay algún punto que quisieran agregar?

Soy un zorrinito publicado.

(Read more →)

Link del día: Flash runtime en JavaScript

Ha habido mucho debate sobre Flash últimamente, más específicamente desde que los teléfonos móviles más famosos del mercado no lo admiten como parte de la interactividad que van a brindar. Por si fuera poco, no sólo no piensan admitirlos como parte del mundo móvil sino que Apple publicó una carta abierta sobre el tema, Thoughts on Flash, en donde exponen varias razones (muchas de ellas debatibles en mi opinión) por las cuales Flash no sería una buena idea para ningún dispositivo móvil en general.

Por supuesto, los usuarios no disfrutan de esto tampoco. Sabemos que gran parte de la interactividad en muchos sitios está basada en Flash (para bien o para mal), y que hay sitios que de no ser por Flash, no funcionarían. Parecería que, afortunadamente o desafortunadamente, Flash está para quedarse.

Tobias Schneider decidió aprovechar muchas de las ventajas que se puede lograr con JavaScript, SVG y otras tecnologías relacionadas, para a través de JavaScript renderizar archivos swf (Flash) y permitir su disposición e interacción en el navegador. Esta librería se llama Gordon (muy apropiado nombre).

Desafortunadamente esta librería no soporta todo tipo de interacción Flash aún, sino que de a poco está extendiendo la cantidad de características que soporta, por ahora parecerían estar cubiertas las versiones 1 y 2 de Flash. Pueden pasar a ver los demos, o leer las notas de compatibilidad.

Soy un zorrinito flash gordon.

(Read more →)

Link del día: Bytecode for Dummies

Para aquellos que desarrollamos sobre lo que se llaman plataformas (como por ejemplo .NET o Java), sabemos que el código que nosotros escribimos no se compila a lenguaje de máquina realmente, sino que se compila en algún lenguaje intermedio que luego es interpretado para una mejor ejecución en la máquina apropiada sobre la que esté corriendo la plataforma.

El punto que muchos dejamos de lado es saber interpretar ese lenguaje intermedio. Este lenguaje muchas veces puede proveernos información muy válida sobre problemas de performance que puede sufrir nuestra aplicación, usos de memoria no liberados, o incluso de la forma en la que se realizan llamadas al sistema operativo.

Charles Nutter realizó una presentación llamada JVM Bytecode for Dummies (and for the rest of you all) que explica detalladamente cómo podemos iniciarnos en este mundo. él se enfocó en el bytecode de la máquina virtual de Java, pero esto es aplicable a otras máquinas virtuales y a otras plataformas también. Puede que al principio nos maree un poco con ejemplos algo complejos, pero luego la teoría va tomando color hasta ser bastante tangible y podemos entender cómo el bytecode realmente refleja nuestro código. Mejor aún, podemos directamente programar con bytecode y aprovecharnos de eso mismo.

Soy un zorrinito interpretado.

(Read more →)

Link del día: Hacker Books

Imagino que ustedes se habrán emocionado tanto como yo al leer el título. Hacker Books contiene, entre otros, libros para hacker, y eso es verdad. Se supone que diseñado muy estilo a web 2.0, esta librería virtual nos permite acceso a cierta cantidad de libros que suelen ser de los mejores recomendados en el ámbito. Esperemos que con el tiempo ese criterio no cambie, ya que de verdad he visto muy buenos libros por ahí.

Como decía, no son los únicos libros. También hay muchos libros muy buenos sobre desarrollo, sobre entrepeneurship, sobre lenguajes específicos, sobre negocios. Están categorizados en distintos niveles, y están en distintos formatos, algunos digitales, otros en audio, otros en libros físicos para leer.

Disfruten su lectura!

Soy un zorrinito lector.

(Read more →)

Link del día: JavaScript IDE para iPhone

De parte de un pequeño artículo de web.desktop.life me enteré de un pequeño proyecto llamado jscoder, el cual es un pequeño IDE (no tan pequeño si lo vemos desde el iPhone) en donde podemos codificar JavaScript y ejecutarlo allí mismo. Por si fuera poco, también disponemos de la función de autocompletar código, por ahora solo palabras clave, pero en el futuro también habrán snippets de código para utilizar.

De ocurrir errores en la ejecución del código, el teléfono nos devolverá un mensajito de error explicando qué ocurrió, y por supuesto, el código está adaptado para que este “ambiente” funcione en este dispositivo, teniendo en cuenta la orientación, el click con los dedos (“tap”) y tantas otras cosas que, claro, podemos utilizar para aprender.

Personalmente no considero demasiado productivo el hecho de programar en un dispositivo móvil (ya sabemos que escribir es difícil, encima quieren programar?), pero no deja de ser algo novedoso y que en cierta moda está demostrando las capacidades de estos dispositivos.

Soy un zorrinito móvil.

(Read more →)

Link del día: Optimización web vs. desarrollo prolijo

Hace tiempo ya estaba comentando con un colega sobre la enorme cantidad de medidas que pueden tomarse para mejorar la performance de una aplicación web. Existen miles de factores involucrados, entre los cuales hay muchas configuraciones y tweaks que pueden hacerse al servidor, pero muchos otros tienen que ver con el código en sí mismo. Sí señores, estamos hablando de HTML, CSS y JS.

El problema en este punto es que un HTML mínimo puede no ser el HTML que nuestro generador de contenidos genera. Puede que el CSS sea automatizado también, o que nuestro diseñador o desarrollador HTML no esté pensando en hacer las cosas de la forma “más mínima posible”, sino realmente trabajando en hacer que algo se vea bien y esté bien codificado. No está entre sus prioridades escribir

background: url("image.jpg") repeat top left scroll;

en lugar de

background: url(image.jpg);

Ambos son equivalentes, pero la segunda es más corta y por tanto más eficiente. Pero nuestro desarrollador debe realmente preocuparse porque el desarrollo sea correcto, que la visualización sea consistente y que sea acorde entre navegadores.

Ni hablar de JavaScript, en donde la cantidad de optimizaciones, minimizaciones y mejoras puede ser realmente importante. Alguno quiere trabajar sobre JavaScrpt minimizado? Sin duda: no.

La alternativa a la que llegamos era la de tener dos versiones de la aplicación. La de desarrollo con código normal y la de producción. Una vez que desde la de desarrollo se hicieran pruebas y quisiera hacerse un release, solo teníamos que correr una serie de herramientas que nos permitieran tener una versión minimizada y optimizada del código, bajo el riesgo de que algo se rompiera en el proceso.

Pero ahora Google acaba de publicar un módulo que han desarrollado para Apache 2.2, llamado mod_pagespeed, el cual hace optimizaciones y cache en el momento de los pedidos, para optimizar los sitios web sin tener que modificar los archivos reales. Por supuesto, es altamente configurable, y podemos ver la gran cantidad de mejoras que puede realizar en el poco tiempo que tiene.

Google nos cuenta que ya está trabajando con GoDaddy para que todos sus clientes puedan utilizarlo, y con Cotendo para que esté disponible en su CDN también. Si ustedes no tienen la suerte de estar entre ellos, pueden bajarlo por cuenta propia desde la página del proyecto de PageSpeed, e instalarlo en sus propios servidores.

Soy un zorrinito acelerado.

(Read more →)

Link of the day: Mouse trace your visitors

We’ve already presented some tools ([1], [2], [3]) that allows you to easily have some feedback of what the users do at your site or web application, or how do you need to improve it to make it better for their user experience.

So, here is another tool that will help us measure that bit of the user that’s not so easy to see: MouseTrace is a tool that being installed on our website will track exactly what the user does with it’s mouse. Even if they don’t click, it is a good idea to keep track of it so that we can find out if our layout is somehow confusing the users.

I haven’t tried this myself. Have you? Are you going to? Please share your experiences.

I’m a tracked little skunk.

(Read more →)

Link del día: Feedback 2.0, volumen 2

Alguna vez hablamos de dos sistemas (Uservoice y Votebox) que nos permitían obtener información de parte del usuario como ideas o propuestas para continuar con el desarrollo de nuestro sistema y entender sus necesidades. Sin embargo, quizá no sea del todo buena idea utilizar estos mismos para el reporte de problemas o para un feedback algo negativo sobre lo que los usuarios están encontrando. Ese tipo de cosas que “son como no deberían ser”.

GetSatisfaction es un sistema del mismo tipo, integrable desde su propio website, en donde los usuarios pueden loggearse de distintas formas (perfil de Google, Facebook, Twitter, etc.) para reportar problemas que estén encontrando en la aplicación. Más allá, podemos darles un feedback al respecto y que ellos continúen esa discusión basándose en nuestras respuestas. No hace falta que se dupliquen las respuestas innecesariamente, ya que un usuario distinto puede elegir la opción “Estoy teniendo el mismo problema” y automáticamente podremos ver cuántos son los usuarios afectados que están involucrados en este problema en particular.

No relacionado a la funcionalidad, quiero destacar lo novedoso de la presentación en la página principal de GetSatisfaction. Podrán ver que en la parte superior de la página hay una especie de rueda de la fortuna (Wheel of satisfaction, como ellos la llaman) con logos de distintas empresas que tienen historias de éxito. Podemos hacerla girar y cambiar la historia que estamos viendo.

Soy un zorrinito orientado a los usuarios.

(Read more →)