Information Appliances (iPad, iPhone y iPod)

iPhone, iPods, iPads... estos dispositivos están en boca de todo mundo por lo innovadores que son... lo que no saben, es que estos "Information Appliances" (dispositivos de información) tienen años de esperar el momento ideal para llegar la palma de nuestras manos.


Hace algunos dias Apple mostro su nuevo aparato milagroso, un nuevo "iHardware" que viene a llenar el nicho (aun existente) entre las laptops y los smartphones. Si no lo han visto, este es uno de los anuncios (en Ingles):



"iPad"


Muchos diran que el iPad es un iPhone con esteroides o glorificado. Eso pense al principio, pero ahora creo que es un poco erroneo tener esa idea de este nuevo aparatito. Veran, todos estos dispositivos, que son realmente buenos solo haciendo "una cosa a la vez" (y se mantendrán asi), son producto de un visionario diseñador llamado: Jef Raskin.


 Raskin trabajo como el experto en interfaces que lidero el proyecto Macintosh (hasta que Steve Jobs lo saco de ahi). Durante su tiempo en Apple, Raskin trabajo en una IDEA de interfaz de usuario llamada "information appliance". En la mente de Raskin, un dispositivo de información seria un "aparato con capacidades de computo con un solo propósito". Eso no suena muy interesante, pero esperen, porque Raskin propone que este aparato sea tan facil de usar que cualquier persona pueda tomarlo y comenzar a jugar con el, sin ningun tipo de entrenamiento. Hmmmm, eso me suena familiar:



"Niñas de 2 años usando un iPhone."


Este dispositivo deberia tener la cantidad ideal de botones, en los lugares adecuados, con el software adecuado. Y seria tan facil de usar, que se convertiria "invisible" para el usuario, al que es simplemente parte de su vida cotidiana.

Años mas tarde, Raskin llego a la conclusion de que si bien su idea era buena, las personas NO estarian dispuestas a usar otro aparato mas, porque ya tenian un telefono, una camara, un "walkman" o una computadora.
Pero Raskin vio las "interfaces tactiles", y llego a la conclusion de que si, quizas, los botones y la informacion estuviera todo en el software, se podría crear un "morphing information appliance". Un aparato que cambie, para hacer cada tarea (una tarea a la vez) a la perfeccion, cambiando su "modo" de acuerdo a TUS objetivos...

La idea siempre fue, crear la interfaz perfecta en la pantalla, especialmente para una tarea especifica, de una forma tan fácil que la gente lo entienda perfectamente.



Como ven, la idea de los "iProducts", no es nueva, pero cada uno de estos aparatos, es revolucionario en si mismo, porque llevan a los usuarios (consumidores) a la realización de las predicciones de Raskin.

Ahora regresando al punto, porque el iPad NO es un iPhone es simple:
Un iPhone es un "hand-held-device", es algo que usas con una mano, y que es personal, lo podes llevar a cualquier lado, es TU information appliance.
Un iPad es un dispositivo familiar, es un instrumento social, es algo que dejaras en tu oficina o en la mesa de tu sala, con software que compartiras con tus amigos. Yo me puedo imaginar un iPad con Risk, "No te enojes" o ajedrez. Es un aparato de INVOLUCRA. No es para ti unicamente, es un aparato para compartir.

Y como punto adicional, la ganancia de Apple, no esta en hacer un iPhone multi tarea o sacar una nueva version del OS cada 3 meses, ni hacer un nuevo dispositivo milagroso (por el momento)... la ganancia de Apple radica en hacer sus productos tan transparentes y normales, que simplemente sean tan comunes como lo son los reproductores de DVD's en tu sala.

¿Que harias tu con un iPad? Espero sus comentarios, hasta la proxima!

Adaptando tu Sitio Para Móviles - Parte 1

Para nadie es sorpresa que cada vez son más las personas que poseen un smartphone o un dispositivo (no necesariamente un celular) con capacidades de navegación por la World Wide Web como por ejemplo un iPhone o un iPod touch. Estos dispositivos son muy prácticos para cuando deseas revisar tu correo electrónico, los feeds de tus blogs o simplemente entretenerte navegando en el mar de páginas web que se pueden encontrar hoy en día y de casualidad te encuentras fuera de tu casa, en alguna cafetería o centro comercial donde encontraste una red WiFi disponible.

Sabiendo esto, las empresas y organizaciones deben tomar en cuenta que muchos de sus clientes / usuarios ahora tienen la alternativa de acceder desde un dispositivo móvil a los servicios web (o simplemente el contenido web) que estos ofrecen pero existe un inconveniente: Dichos sitios web fueron diseñados para ser vistos desde una computadora con una resolución como mínimo de 1024x768. Esto significa que cuando intentas ver uno de estos sitios en tu dispositivo móvil, puede lucir como en la siguiente imagen:


"Google Code - Uno de los sitios de Google que a diferencia de GMail, GReader y Google Calendar, aun no tiene una version para móviles. Screenshot tomado desde un iPod touch (izquierda) y desde un móvil con Android (derecha). Captura de pantalla desde el Android cortesia de @jainux"

Como puedes notar, el sitio no está adecuado para ser visualizado desde un dispositivo móvil. Esto dificulta la navegación en el mismo, teniendo que hacer zoom in para poder leer el texto y también zoom out para luego ver la página completa y dirigirse a otras secciones de esta.


El primer framework que conocí, el cual realmente es un plugin para Wordpress, fué WPTouch. Al agregar este plugin a tu blog de Wordpress, este identifica automáticamente cuando estás visitando el blog desde un iPhone o iPod touch y modifica la plantilla adaptándolo a las dimensiones y paleta de colores de dicho dispositivo para que la lectura del blog sea lo más adecuada.


"Soda Caustica, blog de Virginia Lemus. Uno de los primeros blogs donde observe el uso del plugin WPTouch para blogs de Wordpress."

Existen servicios que te automatizan la tarea de crear una versión móvil de tu sitio, adaptando las dimensiones de la plantilla y eliminando contenido que posiblemente no funcionará en tu dispositivo o retrasará innecesariamente la carga del mismo. Entre estos sitios se encuentran MoFuse, dotMobi y mobifyMe.

MoFuse (link) Este es el más sencillo de todos los servicios. Te permite crear una versión móvil en tan solo un par de clicks con un mínimo de personalización del mismo pero ofreciéndote a cambio un dominio .mofuse.com para tu sitio creado el cual luego puedes asociar con tu propio dominio. Ofrece diferentes planes de pago y entre ellos, un plan gratuito orientado a blogs. Para empezar, debes escribir la URL de tu blog o de los feeds generados a partir de tu blog.

DotMobi (link) Es en forma general, un conjunto de servicios orientados a promover los sitios móviles y la movilización de sitios actuales, así como todo lo relacionado con sitios web para móviles, ofreciéndote muy valiosas herramientas, documentación y referencias. Entre estas herramientas posee una denominada Instant Mobilizer, la cual genera casi automáticamente una versión móvil de tu sitio web. Las features que más llaman la atencion son Click to call que agrega un vínculo con el número telefónico de tu empresa y Google Map Autogeneration que agrega un vínculo de Google Maps apuntando a la dirección de tu empresa. La desventaja es que no posee un dominio propio para asignarle a tus sitios sino que tienes que conseguir un dominio con uno de sus partners.

MobifyMe (link) También te permite crear una versión móvil de tu sitio pero a diferencia de DotMobi y MoFuse, este no te lo hace de forma instantánea generando una plantilla automáticamente. Sacrificas esta feature obteniendo un mayor control sobre el contenido de tu nuevo sitio permitiéndote seleccionar los elementos que deseas mostrar tomándolos directamente de tu sitio original y adaptándolos a las dimensiones de un dispositivo móvil usando además hojas de estilo personalizadas.

"Editando el layout una página de ejemplo en mobify.me"

Estos tres servicios te generan un sitio con su propio hosting y un domain customizable (también asociable a tu propio dominio) además de ofrecerte plugins y scripts para autodetección de tipos de dispositivos, el cual, al agregarlo a tu sitio original, puedes hacer que te redireccione automáticamente a tu versión móvil cuando este detecta que el usuario está navegando desde uno de estos dispositivos. Aunque parezca que este no es tan sencillo como los otros dos, este es el más profesional de todos y el que más opciones te ofrece para la personalización de tu nuevo sitio móvil. Además, entre los planes de pago te ofrece un plan gratuito con el que puedes hacer más que suficiente para montar la versión móvil de un sitio sencillo o un blog.

Acá puedes ver una versión del sr byte generada com MoFuse y acá una generada con MobifyMe. Esta última es la que mejor me ha parecido así que esperamos pronto se convertirá en la versión oficial del Sr Byte para móviles. Pronto habilitaremos su respectivo subdominio y la redirección automática.

Debido a la gran cantidad de contenido que deseaba postear sobre este tema, he dividido el post en dos partes. En el siguiente post continuaré con la segunda parte: "Adaptando tu Sitio Para Móviles - Parte 2: Do It Yourself"

Escenarios de uso de Cloud Computing

En este breve articulo, se pretende mostrar tres casos puntuales de escenarios de uso de Cloud Computing y sus ventajas sobre el alojamiento web tradicional. Las aplicaciones web siempre se han instalado en servidores conectados a lo que ahora se denomina "la nube". Sin embargo, las demandas y tecnologías utilizadas en esos servidores, ha cambiado substancialmente en años recientes, especialmente con la entrada de proveedores de servicios como Amazon, Google y Microsoft.

Estas compañías ya tienen largo rato de proveer una infraestructura (hardware) flexible para aplicaciones web, de manera que esta se adapte y escale a diversos escenarios.

Escenarios de Uso...
Paga por lo que consumes
La instalación de aplicaciones web, hasta hace algunos años, era similar a la cuenta de tu teléfono fijo. Tenes que pagar una cuota de teléfono, consumas o no tiempo de llamadas.  Asi mismo, cuando compras alojamiento tradicional, compras espacio y pagas una "cuota fija", lleguen visitantes a tu sitio o no.
Cloud Computing cambia la idea del consumo fijo. Los varios recursos consumidos por una aplicación web (CPU, memoria, ancho de banda) se contabilizan por unidad (comenzando desde cero), como los contadores de agua de tu casa, y se paga de acuerdo al consumo de cada uno.


"... paga por lo que consumes(CPU, espacio, ancho de banda)."

Ejemplo: Supongamos que estas haciendo un sitio para hacerle competencia a Cherada.com, y supones que llegaran al menos 100,000 Salvadoreños a registrarse en el primer año, y como quieres estar preparado, compras el
mejor plan de alojamiento viendo la demanda futura que tendrá tu sitio por ese lapso de tiempo. Pero por cosas del destino (digamos mala publicidad, plataforma y mercadeo del sitio) casi nadie llega en ese año, a lo sumo, recibiste 1,000 visitas.
Si este penoso escenario se cumpliera, terminarías pagando el año completo con el mejor plan, independientemente de que lleguen 10,000 o 1,000 visitas. Con un proveedor de servicios, solo pagas lo que consumes, y si bien tenes que pagar una cuota por el servicio, en el escenario anteriormente mencionado, sera significativamente menos que el del alojamiento tradicional.

Suministro para eventos momentáneo (One time event provisioning)
Las aplicaciones web a veces sufren de "picos" de trafico debido a la cobertura de los medios, como comerciales de TV, apariciones en artículos periodísticos, eventos sociales (elecciones) y naturales (sismos), etc. Para poder soportar este tipo de carga en el sistema, sin que este se vuelva inestable o se convierta en un "servidor de excusas", muchas personas creen que necesitan comprar infraestructura o "arrendar equipo" para solventar la demanda de las visitas.
Si tu aplicación esta apoyada sobre una plataforma de servicio de un proveedor de Cloud Computing, este será el que se adaptará dinamicamente para proveer el recurso (CPU, memoria, ancho de banda) para que tu aplicación web supla la demanda de información por los visitantes que llegan repentinamente a tu sitio, sin que gastes ni un centavo en equipo físico.


"... no inviertas en equipo innecesario."

Ejemplo: ¿Cual fue el sitio web salvadoreño que mas sufrió el año pasado por las elecciones? Exacto, http://www.tse.gob.sv . Con Cloud Computing, el TSE podría haber suplido a la perfección la demanda de clientes al sitio, sin la necesidad de comprar o prestar equipo para un evento que sucede cada cinco años.

Crecimiento automatizado y tecnologías escalables
Si se tiene la capacidad de soportar eventos momentáneos, entonces las plataformas de Cloud Computing también facilitan el crecimiento gradual de curvas que presentan las aplicaciones web exitosas. En los escenarios usuales de crecimiento para aplicación web necesitan equipo especial (balanceadores de carga y clusters), que al emplear Cloud Computing, queda en la abstracción de la plataforma de nuestro proveedor de servicio. Y adicionalmente, muchas plataformas de Cloud Computing, proveen soporte para un "tier" de datos que excede el rendimiento de RDBMS (Relational Database Systems), como: Map Reduce, Big Table, etc.


"... crece sobre una infraestructura escalable."

Ejemplo: Supongamos una aplicación web, en donde se almacena los artículos de todos los blogs Salvadoreños, Twitts, fotos en Flicker, videos de YouTube, y noticias de los periódicos mas importantes de El Salvador, y lo hace de manera DIARIA. De manera que esta aplicación nos permite "ver el estado de El Salvador, en un día especifico" (¿buena idea no?). ¿A lo largo de 5 años, cuanta información (en TB) creen que tendríamos almacenada? ¿dos o tres TB? La idea es que la velocidad de búsqueda de la información debe ser la misma a lo largo del tiempo. Cloud computing nos permite: no solo almacenar toda esta información en la nube, sino que también buscarla con eficiencia y velocidad, para que sin importar la cantidad de información almacenada, la experiencia de nuestra aplicación web sea la misma siempre.

Espero que estos tres sencillos ejemplos, ayuden en alguna medida a comprender los escenarios de uso de Cloud Computing. Saludos!

Explotando Firebug



Esta es la continuación del post de herramientas de desarrollo que puedes utilizar usando add-ons de Firefox.

Firebug (link) es uno de los add-ons para Firefox mas complejos y mas populares en los círculos de desarrolladores. Te permite modificar a tu antojo la estructura del DOM de cualquier pagina en la que estés navegando, modificar sus clases CSS y depurar sus scripts, monitorear http requests, ejecutar scripts sobre las paginas web, perfilar los tiempos de carga/ejecución de scripts, etc. aplicando todos los cambios realizados en caliente, visualizándolos al muy estilo WYSIWYG aunque obviamente todos estos cambios que se realizan no se aplican en el servidor. Entre sus usos mas comunes es depurar código javascript o aplicar cambios en el HTML/CSS asegurándose que se verán correctamente ya que estas realizando estos cambios directamente en el navegador.

"Editando en caliente las propiedades CSS de la pagina de google.com desde Firebug"


La característica especial que distingue a este add-on es la posibilidad de ser extendido mediante mas add-ons (sub add-ons) los cuales le permiten hacer muchas mas tareas de las que actualmente permite.

CodeBurner for Firebug (link) Este add-on te muestra una nueva pestaña después de la pestaña DOM, con la palabra "Code Example" en la cual, cuando estas inspeccionando el HTML de un sitio y tienes dudas sobre algún tag, este te muestra una pequeña referencia con la descripción de dicho tag y un sencillo ejemplo.


"Visualizando una referencia sobre el tag desde Code burner, el tag se encuentra en la pagina principal de flickr.com, como se puede ver en la imagen"

FireFinder for Firebug (link) Este add-on te permite hacer búsquedas de cualquier elemento HTML dentro del sitio que estas visitando. Esta búsqueda puede ser del texto contenido dentro de alguna etiqueta o mediante el uso de selectores similares a los usados en prototype o jquery. Una vez encontrado el elemento, te lo remarca dentro de la pagina web con lineas punteadas rojas y te muestra un vinculo llamado "inspect" el cual te permite ubicar este elemento dentro de la pestaña "HTML" de Firebug. Como bonus también te permite generar un vinculo para FriendlyFire usando jsbin, con el cual compartes el código HTML mediante una URL para poder ser visaulizado y editado por otros, muy al estilo de pastebin.


"FireFinder, remarcando el logotipo de twitter en la pagina de twitter.com, el cual fue buscado usando el selector #header2>a.logo"


Firecookie (link) Este add-on de brinda la capacidad de monitorear y modificar las cookies que están siendo ocupadas en los sitios que visitas.


"FireCookie, mostrando las cookies que se almacenan localmente al entrar al sitio delicious.com"


Firiepicker (link) Es un sencillo add-on que te muestra un selector de color (color picker) cuando dentro de una pagina web estas inspeccionando las propiedades css relacionadas con el color de un elemento. De esta forma puedes seleccionar el color de manera visual y este te escribe su respectivo codigo RGB.

"Seleccionando un nuevo color usando FirePicker para la propiedad CSS background-color, en uno de los elementos del sitio deviantart.com"


Fireunit (link) Con Fireunit puedes escribir Unit Tests para Javascript y ejecutar/visualizar sus resultados desde una pestaña en Firebug. Esto lo haces desde la nueva pestaña llamada "Tests" que te aparece en Firebug al instalar este add-on. El modelo de código para estos unit tests aparece en el mismísimo código fuente del sitio de fireunit, cuando lo inspeccionas con Firebug. Dicho código se muestra a continuación:

 // Some examples of using FireUnit
if ( typeof fireunit === "object" ) {
// Simple true-like/false-like testing
fireunit.ok( true, "I'm going to pass!" );
fireunit.ok( false, "I'm going to fail!" );
// Compare two strings - shows a diff of the
// results if they're different
fireunit.compare(
"The lazy fox jumped over the log.",
"The lazy brown fox jumped the log.",
"Are these two strings the same?"
);
// Compare a string using a regular expression
fireunit.reCompare(
"The .* fox jumped the log.",
"The lazy brown fox jumped the log.",
"Compare a string using a RegExp."
);
// Display the total results
fireunit.testDone();
}


"Visualizando con FireUnit el resultado de los unit tests de ejemplo que vienen en el sitio fireunit.org"


Review Nokia N97 (update)

Hace poco los amigos de Nokia nos dieron la oportunidad de probar su nuevo modelo N97 por una semana, como siempre gracias por la oportunidad. Este articulo es en resumen mi experiencia y opinión personal sobre el uso de este modelo durante ese tiempo.


UPDATE: Algunos lectores comentan que la experiencia del usuario mejora en el N97, al actualizar el Firmware del telefono...



ADVERTIMOS que el teléfono lo probamos sin actualizar, y muchas de las "quejas" encontradas en el articulo con respecto al software se corrigen al actualizar el teléfono asi que NO aplica el review al menos en el software.

Asi que, como la experiencia pueda ser que mejore al actualizar el firmware del telefono, este review no se debe tomar en cuenta como una guia de compra del mismo.


Como detalle adicional con respecto a la actualizacion: es que esta se puede realizar desde una maquina con Windows (empleando el software que trae el N97) y tambien OTA (gracias a @sansivar por el tip).


N97 es el intento de Nokia de ingresar agresivamente a un mercado que espera un iPhone para las masas. Como ya habíamos mencionado, Nokia es el fabricante numero uno de teléfonos celulares en el mundo, solo el año pasado vendieron 468 millones de unidades, y aun son dueños del 41.2 % del mercado de "SmartPhones". Un punto muy importante a recalcar siempre, es que el N97 es un SmartPhone, para los tecnófilos: acá están los detalles técnicos.





Hardware

Mencionamos primero lo más decente. El diseño, la pantalla y el teclado QWERTY completo son geniales. Quizás el mejor gusto del aparato es escuchar el "flip" que hace la pantalla cuando de desplaza para mostrar el teclado. El movil esta bien diseñado, se ve elegante y sobrio, es un poco grueso, pero pesa menos que un iPhone 3GS. Y en la mano, el N97 se siente solido, como una unidad diseñada para durar más de un año. La inclinación de la pantalla no se puede cambiar, lo que es lamentable pero comprensible (por el diseño) al mismo tiempo. El teclado que espera abajo de la pantalla es interesante: esta ligeramente iluminado, esta bien distribuido, ademas posee una agradable textura de goma, tecla "SHIFT" y "FUNC". Ademas de un "pad direccional", al lado izquierdo, en el que vas a terminar presionando equivocadamente más de lo que se esperan. Así que uno termina utilizando más la pantalla para desplazarte que las teclas de dirección. La molestia más grande del teclado es que no hay tecla "(" ni ")". En pocas palabras, con el teclado de goma, no podrás poner "caritas" :( Parece tonto, pero es un detalle interesante, no se cuantos de ustedes usan más "#" que el ")" en sus mensajes de texto, pero son detallitos que no se como rayos pasan por alto. El teléfono no pasa la prueba de "mandar mensajes de texto mientras conduces" (lo que personalmente me parece genial) ya que se necesitan ambas manos (dedos gordos) para escribir en el teclado.



La pantalla de 640x360 esta bien, es resistiva, y aclaremos desde ya que la pantalla del N97 funciona muchísimo mejor utilizando un stylus (que NO venia en la caja que me dieron, pero como menciona un lector, ya lo trae la caja), ya que se siente raro usar el dedo porque el teléfono no es muy exacto.
Recuerden siempre que las pantallas resistivas se sienten inferiores a las capacitiva (como la del iPhone, Palm Pre o BlackBerry Storm).



La decepción mas grande del N97 es el bajo rendimiento del procesador de apenas 424 MHz, lo único que no mencionan en TODO el empaque del teléfono, me imagino que les da vergüenza mencionarlo, y deben sentirla, porque ese procesador mata muchísima funcionalidad del telefono. No da abasto para lo que uno quiere hacer, y el sistema operativo no ayuda tampoco. El N97 tiene una profunda anemia de Megahertz, y eso lo vas a recordar constantemente si compras uno.

El N97 posee dos cámaras como el 5800. La principal posee también el mismo tipo de lente, pero el N97 tiene una resolución de 5 Mega-pixeles y ademas tiene autofocus, lo que hace del N97 una excelente buena cámara digital, porque las fotos parecen "lavadas", y se nota que se tomaron con un teléfono con cámara. El flash de diodos LED es fuerte y la captura de video de 640x480 (a 30 fps) también es bastante buena. La cámara secundaria es risible en términos de calidad, dejemoslo en eso.

Quizas la característica más interesante del teléfono es su transmisor FM de doble vía. Ademas de escuchar radio, también puedes transmitir tu librería musical por FM al radio de tu carro por ejemplo.

Un excelente bono es la inmensa capacidad del teléfono... 32 GB, que se pude expandir con tarjetas micro SDHC hasta a 48 GB, suficiente espacio para el más exigente. El telefono es "Plug and Play" igual que el 5800, y fue probado sin ningun software extra en Windows (con un rendimiento un poco bajo), Fedora 12 y Ubuntu 9.10 sin NINGUN problema. Solo pasas la musica a la carpeta de "sonido" y listo, cero complicaciones.

La batería dura mucho tiempo, es realmente buena, y se carga sumamente rápido. Tal y como el 5800, el N97 posee acelerometro, y ademas: un sensor de aproximación y un transmisor GPS.

Así que lo único de lamentar del N97 con respecto a hardware, es su anémico procesador (que repercute en todo el teléfono), y ese problema de color en las fotos.

Software (@deprecated)


El N97 trae la quinta edición del sistema Symbian OS (S60). Francamente, no se si es por el procesador, o porque es realmente malo, pero con lo que respecta al sistema, se siente lento, y aunque es multitareas, el procesador no da mucho abasto para soportar esa característica. Obtuve una amena pantalla de "El teléfono se recupero de un problema grave, reinicie el telefono" al menos tres veces el tiempo que lo use, solo por hacer la compleja tarea de cambiarle la apariencia al sistema, y habilitar la cámara, entre otras cosas "inesperadas" supongo. ¿Sera que el N97 que me dieron, tenia una versión beta del S60? Sinceramente no lo se, pero espero que lo arreglen. La sensación de la GUI es irregular e inconsistente. Lean el manual para saber que items necesita uno o dos Taps.

La pantalla principal del telefono tiene (dos) paginas, y muchos "widgets" configurables, que te dan accesos directos a Mapas, FaceBook, Reproductor de musica, Contactos favoritos, Gmail y hasta Hi5. La mayoria de aplicaciones se sienten solidas y funcionales. El navegador WebKit es bueno, pero NO es fácil de usar, practicamente es el mismo del 5800, pero con un panel de botones al lado derecho que roban espacio en la pantalla por tiempos caprichosamente aleatoreos (defecto corregido en actualizacon de Firmware).




Nokia Maps se ve interesante: navegación guiada por voz, información de trafico, puntos de interés, etc... pero esos datos para El Salvador no esta, así que no nos va a servir de mucho acá.
N97 trae preinstalado aplicaciones de otros proveedores como: Qik, RealPlayer, YouTube, JoikuSpot Premium, Accuweather, Facebook y Guitar World Tour. Una curiosidad fue la aplicación que te lee los mensajitos recibidos. Y el molesto detalle de siempre a la hora de conectarnos a una WiFi es la imposibilidad de configurar DNS alternativos.


 
"Si tan solo el N97 se comportara como lo anuncian..."


Conclusión
Personalmente siento que en términos de diseño y algunas características de hardware, el N97 es mejor que el 5800, pero en términos de software es prácticamente similar.
Lo mejor: es la capacidad de almacenamiento (32 GB!), el auto enfoque al tomar fotos, la potencia de las bocinas, duración de la batería, widgets en la pantalla principal y transmisor FM doble (estoy seguro que eso ni lo van a mencionar mucho).
Lo peor: experiencia de usuario igual de rara que el 5800, procesador ridícula e insoportablemente LENTO. Habría que ver si hay una actualización del sistema y que tal se comporta el teléfono luego de la misma. Lamentablemente, no empleamos el telefono con la ultima version del Firmware, y esta actualizacion arregla muchos incovenientes mencionados.
"Finalmente, solo puedo decir que si el 5800 es Windows XP, entonces el N97 es Vista (recién salido al mercado); y esa es la mejor analogía que se puede hacer."
Es un telefono que esta bien, pero no tiene ese factor que hace que pienses: Yo quiero ese teléfono, y mucho menos es un "iPhone Killer".

JQuery Cumple 4 Años y lo Celebran con Muchos Releases

"Entre las novedades de jQuery presentan 14 días de releases continuos"

El día de ayer, 15 de Enero, jQuery celebró su cuarto cumpleaños de haber sido liberado y desde entonces los desarrolladores de este popular framework lo están celebrando a lo grande con la liberación de la verisón 1.4, un nuevo sitiopara la API, mejoras en el performance, QA en vivo, etc. En total serán 14 días durante los cuales tendremos nuevas sorpresas y releases relacionados con este framework, los cuales pueden consultar día a día en el sitio jquery14.com.

jQuery es un framework javascript open source que te ayuda principalmente a interactuar con el DOM de una página web de una forma muy práctica y con muy pocas líneas de código fuente. Además simplifica la comunicación vía ajax, el manejo de eventos, la creación y manipulación de controles para crear interfaces gráficas ricas, entre otras cosas.

Su gran popularidad y su capacidad de extensión mediante plugins ha permitido que muchos programadores lo hayan enriquecido con controles muy útiles como el datagrids, lightboxes, gráficos, skins, color pickers, por mencionar unos cuantos entre otros cientos de plugins que existen por ahí en la web.

"El plugin Flexigrid es de los más complejos y útiles que he utilizado con jQuery"

Lo que mas me encanta de usar jQuery es su facilidad para manipular el DOM. Como ejemplo, podemos ver el siguiente código fuente que utiliza sintaxis JSON de la nueva versión 1.4 para crear un DIV con id, propiedades CSS y una función para manejar su evento click para luego agregar este div al body de la página, todo de una sola vez:

 jQuery("<div/>", {
id: "foo",
css: {
height: "50px",
width: "50px",
color: "blue",
backgroundColor: "#ccc"
},
click: function() {
$(this).css("backgroundColor", "red");
}
}).appendTo("body");

Como muchos proyectos open source, jQuery sobrevive gracias a las donaciones altruistas hechas por los usuarios. Como parte de las sorpresas que los desarrolladores de jQuery nos han traido, también tienes la oportunidad de recibir un e-book gratuito por tu donación al proyecto.

Monitorea los Ajax HttpRequests con Fiddler

Como programador de sitios web basados en Ajax, tiendo a necesitar una herramienta que me permita verificar exactamente que le envió al server en un XmlHttpRequest vía Ajax. Los parámetros que van en el request, la URL a la que lo envió, la respuesta recibida etc. Así puedo determinar si un error se genero porque se enviaron datos erróneos al server desde el Ajax Request o si fue el server quien interpreto o proceso mal los datos.

Mi herramienta para realizar estos monitoreos fue Firebug, un add-on para Firefox que te permite depurar Javascript, inspeccionar/manipular el DOM y también inspeccionar/manipular los estilos de un sitio. Este además visualiza en su consola los diferentes HttpRequests que se hacen al server.

Como muchos sabrán, no siempre basta con realizar pruebas y depuraciones de tu sitio usando el browser Firefox ya que comúnmente los errores ser producen al navegar en tu sitio desde Internet Explorer o algún otro y como hasta donde he podido investigar, ningún otro navegador cuenta con un add-on como el de Firefox para visualizar estas peticiones de Ajax, no hay otra manera de hacerlo mas que con una herramienta externa al browser.

Buscando en la web encontré la herramienta llamada Fiddler. Este es un proxy web hecho con el framework Microsoft.Net para captura y depuración del trafico http que se genera en tu computadora. Este trafico es comúnmente generado por los browsers al navegar dentro de sitios web, dar click sobre algun hipervinculo de alguna pagina o cuando un evento javascript dispara un request XmlHttp.

"Captura de pantalla de Fiddler, monitoreando el trafico http local. Visualizando en la parte derecha el detalle de un Ajax Request de la pagina de twitter.com"

Como pueden ver en la captura de pantalla, Fiddler estomáticamente captura todos los requests http y los lista en la columna de la izquierda, mostrando los detalles de cada request en la columna de la izquierda, como por ejemplo los headers de la petición, parámetros y la respuesta obtenida.

Hay un pequeño problema con Fiddler cuando intentas monitorear el trafico de un server alojado en tu localhost. Esto es porque, como ellos mismos mencionan en su sitio: "Internet Explorer and the .NET Framework are hardcoded not to send requests for Localhost through any proxies" por lo cual, nos vemos en la necesidad de no utilizar la palabra "localhost" ni su IP equivalente 127.0.0.1 para acceder desde nuestro browser a los sitios alojados en nuestro server. Como alternativa podemos usar en su lugar, el nombre de nuestro equipo. Por ejemplo:

en lugar de:
http://localhost:8080/miSitioWeb/index.jsp

tenemos que escribir:
http://laptux:8080/miSitioWeb/index.jsp

Asumiendo que el nombre de mi equipo es "laptux".

Agregando Windows XP a GRUB... casos especiales.

Nota rápida:

Recientemente me vi en la "obligación" de instalar un Windows XP a una maquina, que por dos años solo tuvo Ubuntu Linux. La maquina ya tiene dos discos duros, así que añadí un tercero que tenia tirado, y en ese instale el Windows, para no cambiar esquemas de particiones ni re-dimensionar absolutamente nada. La tarea sería sencilla:
  1. Desconectar todos los discos.
  2. Conectar el nuevo disco.
  3. Instalar Windows en el disco conectado.
  4. Añadir los discos desconectados. Dejando a Windows en el segundo disco esclavo.
  5. Añadir a Grub la entrada de Windows XP (en el menu.lst).
El problema radica es que a Windows XP no le gusta arrancar en dos situaciones:
  • Que este alojado en una partición extendida (es decir, una partición secundaria).
  • En un disco duro que no sea el primario.

Creo que esas limitantes, se merecen esta imagen:





Detalles, detalles, para no darle muchas vueltas al asunto, la basura no arrancaba. Así que hice el "truco legendario" de mapear los dispositivos en el GRUB, más no sabía que había cambiado ligeramente la sintaxis del comando map (irónicamente en la ayuda este cambio no se menciona).

En fin... para los que tienen un disco duro extra con windows xp, y quieren que arranque utilizando GRUB 2 (1.97 beta), si no saben como se hace, pues acá les dejo la sencilla solución:

title Winbugs
map (hd0,0) (hd1,0)
map (hd1,0) (hd0,0)
rootnoverify (hd1,0)
makeactive
savedefault
chainloader +1

En la "nueva" (para mi al menos, no tengo ni la mas remota idea de hace cuanto lo cambiaron) sintaxis  de map, se especifica el disco físico y su partición. Antes, era solo el disco, y por eso maldije mucho el día de ayer.
Aclarando: esta configuración es para el caso de que se agrega un disco duro como esclavo, con una partición con Windows XP.
¡Espero que les sirva, saludos!

Quien nos dara el soporte...

Hace unos días, procure recordarle a algunos compañeros de trabajo, que absolutamente TODO el proyecto en el que estamos trabajando, correría perfectamente utilizando software libre...
La reacción de algunos fue: "ya va este con sus ideas", otros: "ya va a repetir el sermón de siempre", y uno en especial lanzo el típico grito al cielo: "Pero si usamos eso, ¿quien nos dará soporte?".
Ahora bien, de las primeras reacciones ni me preocupo (ya estoy acostumbrado a que me tilden de fanático del software libre), más la ultima opinión si me dejo pensando. Muchos empleados son parte de las "propagandas corporativas" (externas).

El ejemplo perfecto, es con Rational 7.0 (RAD). Ese IDE es el que uso... no temas, si usaste Eclipse, has usado RAD. La diferencia, es que RAD posee herramientas "enterprise", de las que no empleamos ABSOLUTAMENTE NINGUNA, ah, y también tiene un costo de aproximadamente $2500 por la Licencia de uso para ... ni quiero saber para cuantas personas (espero que no sea por usuario). ¿No me creen? vean acá. Se de muchos programadores preferirían utilizar otros IDEs gratuitos, o una versión de Eclipse que se adapte a lo que ya existe... como MyEclipse, que me atrevo a decir que funcionaria de lujo en vez de RAD, y el costo es de solo $25 por persona, si, solo $25 por persona.
Ese es el escenario económico de las herramientas de desarrollo en el trabajo.
Otro ejemplo: hace un par de meses, en un proyecto, nos vimos en la necesidad de investigar como se implementa un "WebService" con RAD 7 y WebSphere 5.0 Esta noble tarea es ridículamente complicada con RAD, y parece que los astros y tu suerte inciden en que tengas éxito o no en crear el WebService, al menos en la instalación que tengo, valga la aclaración. Dejando la ironía a un lado, personalmente fue dificultoso. Y de paso, puedo mencionar como contraparte que hacer un WebService con NetBeans es un tranquilo paseo... un paseo por la playa del cuco...



El punto, es que llegue al punto (valga la redundancia) de preguntar por el soporte por parte de GBM (IBM en El Salvador), después de todo "ellos" son los que "venden licencias" de productos como: RAD, WebSphere, etc... Naturalmente ellos sabrían como ayudar con el impase.

¿Saben que me dijeron cuando pregunte por famoso soporte en el trabajo?, la respuesta textual fue: "No contemos con eso, busca otra forma de hacerlo". Ooooops!!! ¿Y ahora, quien daría el soporte? ... nadie. Para no alargar: el requerimiento cambio y se termino implementando de otra forma.

¿Saben cual es la gran ironía del asunto? La ironía es que en muchos proyectos de software internos (para las empresas) emplean diversas librerías de software libre. Por ejemplo, en tu trabajo, puede que estés usando jQuery como librería javascript "casi estándar" para el cliente web, y iReports como librería de creación de reportes PDFs, así como Apache POI para leer los archivos de Excel, o Struts y Hibernate, etc...


Ahora, todo eso es software libre... NOSOTROS (los desarrolladores) lo aprendimos a utilizar y lo implementamos. ¿Y de todo lo mencionado, quien  da el soporte? Lo da el programador autodidacta, el que quiere aprender siempre, el que no deja de estudiar, "el que sabe" que aquello ahorra tiempo, y por lo tanto $$$.

¿Cual es el miedo de usar MySQL o PosgreSQL en vez de DB2?, ¿o de usar JPA o Hibernate, en vez de hacer las consultas SQL a mano?, ¿o un buen framework web, servidor de aplicaciones, visor de documentos, sistema operativo, etc? Yo sinceramente, lo desconozco.

Los 5 recursos que me salvaron la vida en 2009

El 2009, fue un año difícil, pero no solo lo fue a nivel de "crisis económica global", o enfermedades, etc, fue un reto a nivel personal, un año de crecimiento... egresar, trabajar, cumplir con requerimientos, hacer y defender la tesis. Si bien, el apoyo de la familia y la fe en Dios te saca adelante, tampoco podemos negar la ayuda de ciertas herramientas digitales, que te facilitan la vida, y este articulo es sobre algunas de ellas...

Google Code:
Desde que aprendimos a usar "Code Versioning" (allá por el final de 2007), simplemente ya no dejar de usarlo, y cuando descubrimos Google Code... fue la panacea de todos nuestros males. Al menos siete proyectos Universitarios están alojados en Google Code, incluyendo la tesis y el documento de la misma. Y para nuestras necesidades, la quota de espacio que Google Code da, es más que suficiente para alojar los proyectos del estudiante promedio.
Puedo decir, sin temor a equivocarme, que un buen porcentaje de estudiantes de sistemas tienen acceso a Internet en casa (y por ende computadora personal), así, que si eres estudiante, y te gusta trabajar desde tu casa y no quieres complicarte la vida pegando código de tus compañeros, comienza a usar una herramienta de control de versiones gratuita, y un sitio que te ofrezca alojamiento para tu código como SourceForge, GitHub y Google Code, a nosotros, el ultimo nos ayudo muchísimo en la tesis. Acá les dejo una "Guia Visual para Control de Versiones" para los que quiera una explicación visual del tema de control de versiones.




IceFaces:
IceFaces es el Framework que hizo que dejara de preocuparme por la compatibilidad entre navegadores y de escribir código JavaScript. Es un framework que "simplemente funciona", lo usamos también en la tesis, y después de un par de días de aprender a usarlo, la combinación de este (de IceFaces) con Oracle TopLink, Tomcat 6 y MySQL es una "gloria digital".
Con IceFaces aprendimos a preocuparnos por la lógica del negocio, y por hacer las cosas lo mejor posible, y no preocuparnos porque la GUI no se muestra bien en Internet Explorer 7+. Es un framework que recomiendo mucho, que mejora constantemente, y que ya esta en su versión 2.0, y posee soporte para las empresas. Si lo usan, se darán cuenta de que si diseñan bien la logica de su software, hacer proyectos con IceFaces es un paseo por el campo. Quizás el único inconveniente reciente, es que no hay plugin de IceFaces para Netbeans 6.8, solo para la versión 6.7.5.

jQuery:

Si bien no me gustaba JavaScript, cuando conocí JQuery la cosa cambio, y cuando comencé a usarlo todos los días en el trabajo, se volvió el mejor amigo para no caer en la locura y demencia de estar en un proyecto que: no usa persistencia (JPA), ni patrones de diseño, ni MVC, ni framework alguno... es bastante traumatico, pero bien, gracias a Dios tengo trabajo ¿no? :)
Al menos, yo prefiero jQuery por cinco excelentes razones: Selectores, Atributos, Ajax, Documentación, y jQuery UI. Si no están usando un framework de JavaScript, háganse un favor y aprendan uno de tantos, yo recomiendo jQuery, pero también les puede interesar MooTools y Dojo (entre otros tantos más).

Delicious Bookmarks:
Muchos de ustedes cuando navegan en el trabajo, les filtran el contenido porque a alguien se le ocurrió poner un proxy... si, y yo también me uno a su sufrimiento hermanos y hermanas. Asi que en el trabajo no tengo libre acceso a Internet. Sumemos a eso la necesidad de moverme constantemente entre Santa Ana y San Salvador... así que al momento de navegar y "sincronizar" algo tan simple como "mis favoritos", necesito una herramienta que utilice protocolo "https", se integre perfectamente con FireFox y ademas no tenga un "limite aparente" o de espacio. Esta milagrosa herramienta la utilizo desde hace al menos dos años, y con casi 3,000 favoritos, es el recurso que más me ha permitido mantener sincronizados los favoritos entre los equipos que utilizo :) Otras alternativas son Xmarks (antes conocido como FoxMarks) y ... bueno, solo ese vale la pena... creo yo. Pero aun asi, yo les recomiendo que descarguen y usen Delicious: complemento de Delicious para FireFox.

Twitter + Google Reader + Gmail + FaceBook:
Trabajar, viajar y llevar la tesis, no es tarea fácil, es una locura que no se la recomiendo a nadie. El principal problema con ese ajetreo... es la vida social, que caduca poco a poco hasta hace un par de meses. Reactivarla, sin salir del trabajo, solo fue posible gracias a Twitter (porque tambien soportar también el protocolo https) para medio "platicar", a Gmail para concretar salidas y mantener la comunicación tradicional y FaceBook para recordarme de cumpleaños, eventos y salidas.
"La productividad de estos servicios digitales, esta a la orden de: como y para que los usas, simplemente no hay que olvidar que son "la herramienta o el medio", no el propósito"



Ah si, y Google Reader... es solo para mantenerme informado de los temas que más me interesan.


Como pueden ver, no es nada fuera de este mundo, son cosas sencillas y accesibles que creo que cualquier diseñador web, programador, administrador de sistemas o usuario común pueden llegar a utilizar.

Espero que esta lista de recursos que para mi fue indispensable, les ayude tanto como a mi. ¡Feliz 2010!

Otros artículos recientes