¿Qué lenguaje aprender primero?

Esta es la eterna pregunta de todo novato y cuando es dicha en foros públicos por lo general es seguida por un largo debate entre "fundamentalistas" que parecen estar hablando más de religión que de una herramienta tecnológica. Desde que las computadoras comenzaron a llegar a las aulas universitarias se han probado diferente paradigmas de programación y con ellos diferentes implementaciones de dichos paradigmas en la forma de lenguajes de programación concretos. Aún recuerdo BASIC, el leguaje que cualquiera que pasó por la revolución de las microcomputadoras a finales de los setenta y principios de los ochenta encontró como su única herramienta de desarrollo disponible, claro que BASIC era un "avance" comparado con programación en lenguaje de máquina o lenguaje ensamblador.

Sigue leyendo

node-twitter un clone de twitter en node.js

Revisando los repositorios de Github por proyectos interesantes escritos en node.js, he encontrado uno llamado node-twitter de Vinit Kumar. El código se ve limpio y sólo requiere la intalación de MongoDB como motor de base de datos, que afortunadamente ya hemos descrito en este blog como instalarlo localmente. Una version operativa del proyecto se puede visitar en este URL: http://ntwitter.nodejitsu.com/login. En este post voy a describir brevemente como hacer para tener una versión similar corriendo en tu VPS o servidor físico si es que deseas iniciar un proyecto similar.

Sigue leyendo

Cómo instalar Ghost (plataforma de blog en node.js)

Aunque WordPress es la plataforma de blog dominante en nuestros días, John O'Nolan inició un proyecto kickstarted para crear un sistema de blogging en node.js. Ghost se puso como meta recaudar £ 25,000 (U.S.$ 40,000) para financiar el desarrollo del proyecto y en 29 días recibió £ 196,362 (U.S.$ 314,000), debido a esta gran acogida es que decidió extender el proyecto y no sólo desarrollar un software para blogear escrito en node.js, sino que está construyendo el servicio para ofrecerlo de la misma manera a como lo hace WordPress.com. El servicio aún no está disponible, pero si se desea usar el software que es Open Source en un servidor propio, sólo debemos registrarnos en Ghost.org para poder descargarlo.

Este tutorial detalla los pasos de cómo tener Ghost corriendo en nuestro VPS, este tutorial asume que Ud. usa Ubuntu 12.04 (o más nuevo), node.js 0.10.21, MySQL y Nginx. De no estar familiarizado con alguno de estos componentes, no se preocupe aquí explicaremos detalladamente como instalarlos y configurarlos.

Sigue leyendo

node.js con Twitter Bootstrap

No hay duda que uno de los frameworks/templates para diseño de websites HTML5/CSS3 más usados en la actualidad es Bootstrap (un proyecto Open Source inciado por Twitter), una de las razones de su popularidad es que este template por defecto nos ofrece un diseño responsive y mobile first, lo cual convierte a esta herramienta en ideal para el desarrollo de websites que se vean bien no importa si se accede a ellos desde un smartphone, una tablet o un PC. El framework por defecto de node.js es Express y aunque es flexible gracias a su sistema de plantillas Jade, muchas frontend prefieren el familiar Bootstrap, razón por la cual aquellos que deseen desarrollar un backend en node.js y un frontend en Bootstrap podrían encontrar útil este breve tutorial.

Sigue leyendo

Implementando un chat con node.js

Una de las ventajas que ofrece node.js es su naturaleza asíncrona y por lo tanto permite escalar fácilmente sin preocuparnos por sincrónizar procesos entre sí ya que no existen procesos una aplicación node.js consiste de un único hilo de ejecución. Una de las aplicaciones que más se beneficia de esta característica es justamente un chat y ha sido uno de los selling points favoritos de los evangelistas de node.js. Pero qué tan sincillo es programar un chat en node.js, pues bien como dice Eric Raymond en La Catedral y el Bazar: "Los buenos programadores saben qué código escribir. Los grandes programadores saben qué código reescribir". Así que para que empezar desde cero, he encontrado un muy buen esqueleto con que comenzar una aplicación de chat en Github, escrita por desarrollador llamado William Mora.

Sigue leyendo

Usando MySQL con node.js

Imaginémonos que deseamos usar MySQL en un proyecto con node.js, después de todo MySQL es de lejos la DB relacional más usada ¿cómo hacerlo?. Pues bien aquí les dejo un pequeño tutorial que describe como usar la base de datos MySQL en un proyecto node.js usando el framework express. Este tutorial asume que ya tiene instalado node.js y MySQL ya sea localmente o en su servidor de desarrollo, no interesa el sistema operativo en teoría. Pero deseo advertir que este tutorial es el resultado de las pruebas realizadas en un Ubuntu 12.04 Server Edition y perfectamente podría correr en cualquier otra distribución de Linux.

Sigue leyendo

Cómo usar node.js en producción

node.js es una de las muchas herramienta que trata de dar una solución al clásico problema C10K que aqueja al popular servidor web Apache. Para ello node.js ofrece un modelo de eventos asíncronos, de un sólo hijo de ejecución. Sin embargo la parte del non-blocking  que tanto promocionan en el website oficial de node.js asume que lo único que ejecutará node.js seran queries contra un servicio RESTful. Sin embargo en el mundo real una aplicación web es más que queries contra un servicio RESTful y es por ello que si dejamos que node.js se haga cargo del envio de los archivos css, html, las imágnes y todos los otros objetos que constituyen una página web la parte del non-blocking no se cumple y difícilmente el servicio pueda escalar a más de unos cuantos cientos de clientes simultáneos, de alli la razón de muchas de las críticas que ha recibido node.js. Cuál es la solución usar un servidor web que se haga cargo de servir el contenido estático de nuestra aplicación web y para no ello no hay nada mejor que el pequeño y ágil Nginx.

En este post les explicaré como configurar node.js y Nginx en un servidor Ubuntu 12.04 para correr una aplicación desarrollada en node.js. Por favor tengan en cuenta que estos pasos también pueden ser seguidos en Debian (omitiendo el comando sudo, siempre y cuando estemos logueados como root), si desea hacer lo mismo con distribuciones basadas en RPM como Centos o Fedora entonces siga las ideas generales pero no podrá copiar y pegar directamente los comando listados en este tutorial.

Sigue leyendo

Single Page Application (SPA) una tendencia creciente

Singla Page Application (SPA) o Single Page Interface (SPI) es una aplicación web (web app) o sitio web que sólo carga la página web una sóla vez y desde alli renderiza los objetos que contituyen la página basado en las acciones del usuario, es decir el único flujo entre el servidor y la página web son datos. La llegada de tecnologías que permiten enviar datos directamente al navegador como AJAX hicieron posible el nacimiento de las SPA, pero ha sido la llegada de node.js el que ha llevado las SPA a otro nivel.

Pero la creación de SPA con JavaScript en el servidor usando node.js requiere de algún framework que nos permite mantener nuestro código ordenado y facilite su mantenimiento, de preferencia que siga el paradigma MVC (Model View Controller) que es tan popular en otros framworks como Rails o Django. En este post daremos un rápido vistazo a todas nuestras opciones de MVC para desarrollo de SPA en node.js.

Sigue leyendo

¿Es la web en tiempo real el futuro?

La web en tiempo real es algo que millones de personas ven todos los días en sus aplicaciones favoritas, pero que la mayoría no se da cuenta de dicha funcionalidad. Empresas como Facebook y Twitter usan los datos en tiempo real para actualizar los flujos de actividad sus usuario, lo que resulta en una experiencia que se siente menos estática y más como la mensajería instantánea.

Este nuevo paradigma implica enviar datos a los usuarios en lugar de que sea sean las aplicaciones las que busquen actualizaciones periódicamente. Los datos en tiempo real se ven en web apps como chats, flujos de actividad, juegos multijugador, paneles de control, y las experiencias de segunda pantalla. Dos principales beneficios de la web en tiempo real son que se incrementa la participación de los usuarios y se reduce la carga del servidor.

Sigue leyendo