node.js 101

August 10th, 2010

node.js es el enésimo intento de llevar JavaScript del lado del servidor, pero al parecer esta vez a base de mucho hype y una arquitectura bien diseñada, la idea esta traccionando y haciendo que el numero de seguidores crezca día a día.

Como dije antes esta idea no es nueva, ya desde 1996 Netscape trataba de meter JavaScript en el server side con su producto LiveWire, el tiempo paso y muchos proyectos intentaron en vano captar la atención, luego llego CommonJS, la cual es una especificación que trata de crear un API estándar para el manejo de las funcionas mas comunes y necesarias para poder correr JavaScript fuera del ámbito del browser, CommonJS puso nuevamente en el radar la idea de usar JavaScript en el server side y empezaron a florecer gran cantidad de implementaciones compatibles con ella, una de estas es node.js.

node.js como reza su lema “Evented I/O for V8 JavaScript” se apoya en un arquitectura orientada a eventos y en el motor V8, para lograr una alta escalabilidad y una gran velocidad de ejecución, node.js abandona el modelo tradicional usado por los servidores web en los cuales por cada request se crea un thread/process y pasa a un modelo de event loop en donde se puede acceder a todo usando eventos y callbacks, esta idea tampoco es nueva, en Ruby tenemos a EventMachine y en Python a Twisted haciendo algo parecido desde hace un tiempo y de los cuales node.js a tomado debida nota para tomar lo mejor de ellos, en node.js todas las operaciones de I/O se ejecutan asincronicamente, lo que permite al servidor seguir aceptando requests mientras las operaciones de I/O se completan, lo cual posibilita crear aplicaciones rápidas y escalables muy fácilmente.

node.js corre sobre cualquier OS *nix, su instalación es muy sencilla y tanto en el sitio oficial como en el repositorio de github donde se aloja el proyecto hay información al respecto.

Antes de terminar pasemos al “hello world” de rigor.

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Worldn');
}).listen(3003);

En la primera linea se carga el modulo http, luego creamos el server http el cual queda a la espera de las requests en el port 3000, cuando una request llega, este responde enviando las http headers, un status code 200 y el mensaje “Hello World”, para luego finalizar la conexión.

node.js - Hello World

Para finalizar les dejo el vídeo de la presentación que dio Ryan Dahl (su creador) hace unos meses en las oficinas de Google, la cual es un buen punto de partida para interiorizarse mas en la arquitectura y filosofía de node.js.

Development , , No response

Organic User Interface

August 6th, 2010

Hace unos días revisando viejos vídeos me tope con esta presentación de Dennis Wixon (ver vídeo abajo), en la cual hace una retrospectiva y habla sobre la futura evolución de las interfaces de usuario, desde la linea de comandos hasta las Organic User Interfaces, esta bueno ver el video en este momento en que todo lo touch acapara la atención y todos se están concentrando en adaptar soluciones o buscarle nuevos usos a este paradigma, pero mas importante aun es el hecho de que lo touch es la puerta de entrada a las OUI y su popularización va a hacer mucho mas suave la transición.


Interfaces according to Dennis Wixon

Una OUI puede ser touch o tangible, pero no toda interfaz touch o tangible es una OUI, estas se centran en la manipulación “física” de los elementos en una pantalla, las OUI van un paso mas allá y tratan de cambiar la forma en que interactuamos con nuestros dispositivos, estos serán gadgets que dejarán atrás las pantallas rígidas, que cambiarán su forma dependiendo de la función, del tipo de input a ingresar o del output esperado, para así adaptarse a las necesidades del usuario, podemos imaginar como serán estos dispositivos como así también sus usos, viendo el siguiente video del proyecto Nokia Morph, un concepto presentado hace unos años en donde se exploran las posibilidades de este nuevo paradigma.

Nokia Morph

Interfaces according to Dennis Wixon – UX Week 2008

User Interface , , , No response

Testing mobile sites con Opera Mini & Opera Mobile

July 28th, 2010

Desde hace tiempo Opera Mini es un complemento obligado de los terminales de gama media los cuales en su gran mayoría están equipados con browsers de características muy pobres, en tanto que su hermano mayor Opera Mobile, poco a poco se esta posicionando como una alternativa a Safari en iOS y a Chrome en Android, lo cual hace que sea tarea obligada testear con ellos nuestros desarrollos, por suerte Opera provee de múltiples maneras de emular o simular Opera Mini u Opera Mobile.

Opera Mobile

El emulador de Opera Mobile se encuentra disponible para Windows, OS X y Linux, su instalación es extremadamente simple, y entre sus características mas notables se encuentran, la opción de seleccionar diferentes tamaños y ratios de pantalla, como así también la muy interesante feature de poder hookear el emulador a Opera Dragonfly (el “Firebug” de Opera).

Opera Mobile for Linux

Download

Opera Mini

Con Opera Mini se nos presentan dos opciones, la primera es el simulador web based, tanto para Opera Mini 5 como para Opera Mini 4.2, la otra opción nos permite tener a Opera Mini corriendo en nuestro desktop, para ello necesitamos instalar MicroEmu, que nos posibilita correr una implementación 100% compatible de Java ME, el siguiente paso es bajar la versión de Opera Mini que deseemos utilizar, tanto el archivo .jar como el .jad y guardarlos en un lugar común, para finalizar solo resta abrir el archivo .jad con MicroEmu, para ello vamos al menu, seleccionamos File > Open MIDlet File y en la pantalla principal seleccionamos Opera Mini y ya podemos comenzar a navegar y testear.

Opera Mini Simulator and Emulator

Download y Recursos

Web Design , No response

Meego Architecture Overview

July 20th, 2010

Meego nace de la unión de los proyectos Moblin (Intel) y Maemo (Nokia) además cuenta con el auspicio de la Linux Foundation, lo que asegura que sea 100% OSS compliant, esto ultimo sumado a la política de upstream first para mantener una constante compatibilidad con el kernel de Linux, le esta trayendo algunos dolores de cabeza a Intel, que tiene problemas para integrar los drivers de sus chipsets GMA500 y del próximo GMA600 por una incompatibilidad de licencias.

Meego es la concreción del viejo dicho que dice, se juntaron el hambre y las ganas de comer, por una lado tenemos a Intel, que ve que el segmento mobile no para de crecer y a ARM y sus derivados llevarse la mayoría de las ganancias y el marketshare, por el otro lado esta Nokia, que ya había empezado a despegarse de Symbian con Maemo, pero que necesita acelerar el paso y tener un OS que le sirva para entrar en otros mercados (tablets, netbooks) como así también tener un plan B, por si el barco Symbian se termina de hundir en el segmento de los smartphones high end.

Arquitectura

Meego es una distro Linux, cuya arquitectura a grandes rasgos se divide en 3 capas, OS Base, Middleware y UX.

MeeGo Software Architecture Overview

OS Base

Esta capa esta constituida por la HAL y un kernel Linux, a diferencia de Android, Meego sigue una política de upstream first que lo mantiene sincronizado con las ultimas versiones de el kernel Linux, esto permite adoptar fácilmente nuevas versiones del kernel dentro del proyecto, sino que también obliga a los fabricantes de hardware a que se encarguen de todo el proceso de inclusión de sus drivers en el kernel.

Middleware

En esta capa corren a grandes rasgos:

Meego API

La Meego API esta basada en QT 4.6.x (al día de hoy, pronto se estara dando soporte a la versión 4.7), además se están desarrollando complementos como MeeGo Touch Framework, MeeGo Web Runtime (permite crear aplicaciones nativas usando HTML, CSS y Javascript) y Qt Mobility (un set de librerías con funciones y componentes especialmente desarrollando para se usados en ambientes mobile)

UX

Meego fue pensado desde un principio para ser usado en una gran variedad de dispositivos (netbooks, smartphones, tablets, televisores y automóviles), en esta capa corre una User Interface especializada para cada uno de ellos.

Hasta el momento han sido liberas las versiones 1.0 de Meego para Netbooks y una Alpha (muy alpha) de Meego para Smartphones.

 MeeGo Handset Day1 Developer Preview and MeeGo v1.0 for Netbooks

Herramientas y Ambiente de Desarrollo

Aunque la idea de Nokia es usar QT para todo, aun quedan algunas aplicaciones GTK en Meego (por ejemplo Banshee) resabios de su pasado como Moblin, no esta en los planes desterrar a GTK del entorno, sino impulsar a QT para que tome una posición mas relevante, para ello Nokia provee de QT Creator y los SDKs necesarios para comenzar ya mismo a desarrollar, también Novell se esta sumando a la fiesta con su propio sabor de Meego y el consiguiente soporte para Mono.

Recursos

Architecture , , , No response

Symbian^4 Homescreen, primeras impresiones

July 17th, 2010

Ayer en la wiki de la Fundación Symbian aparecieron las primeras screenshots y las instrucciones para compilar lo que podría ser la homescreen de Symbian^4, a primera vista no hay nada revolucionario ni wow, si se notan ciertas influencias de Android y se dejan entrever que ciertas consideraciones de diseño que fueron presentadas antes como mokups, se están tornando definitivas, por ejemplo, la barra inferior desaparece completamente, en su lugar solo quedan los indicadores de navegación entre escritorios o pages como le llaman en Symbian, en la parte superior aparece una mínima barra de estado con información sobre la hora, batería y señal, debajo de esta aparece otra barra, que dependiendo de el contexto permite configurar opciones y hace las veces de barra de navegación en cierto escenarios (screenshot #5).

Por ultimo quedan las pages (que parecen no tener un numero máximo) que mantiene sus actuales funciones y la opción de agregar gran cantidad de widgets.

Symbian^4 Homescreen

Symbian^4 Homescreen

Symbian^4 Homescreen

Symbian^4 Homescreen

Symbian^4 Homescreen

Symbian^4 Homescreen

Lamentablemente no hay mucho mas para decir sobre Symbian^4 en lo que a UI se refiere, la gente de la Fundación Symbian esta trabajando mucho, no solo en la parte visual, que es la que mas importancia de le dan los usuarios, sino que se esta llevando a cabo mucho trabajo por debajo, Symbian^3 sera el encargado de comenzar la transición hacia QT, Direct UI y Orbit en lugar de Avkon, por ahora aunque a paso lento los plazos se están cumpliendo, si las ventas del N8 ayudan y pueden hacer que Symbian recupere cierto momentum, esto podría ayudar a Nokia y a la gente de la Fundación Symbian a tener una segunda oportunidad, aunque aun falta mucho tiempo y trabajo para ver si esto sera así.

User Interface , No response