Cloud9 IDE

scroll

Tenía ganas de probar node.js desde que hablé con Christian Kvalheim (de los Kvalheim de toda la vida) en TheEvnt. Node.js es un entorno de desarrollo en JavaScript que utiliza un modelo asíncrono y orientado a eventos que ¡se ejecuta en servidor! Por traducir este frasón a un lenguaje que hasta los CTOs puedan entender, esto supone dos ventajas:

  • Es una excelente solución para aplicaciones que tengan que soportar muchas -pero MUCHAS- conexiones concurrentes
  • Puedes programar la lógica de negocio en servidor de tu aplicación ¡en JavaScript! Con node.js, el típico desarrollador de front-end (HTML+CSS+JavaScript) puede programar una aplicación completa con acceso a datos. Parece algo natural en un mundo cada vez más webcéntrico.

Pero no quiero hablar de node.js en este artículo. Primero, porque hay gente que ya lo ha hecho antes, muy bien y en castellano, como Rafa Muñoz. Segundo, porque no tengo ni idea de node.js. Sólo he programado un ¡Hola Mundo! y, de lo que quiero hablaros, con todo el descaro del mundo, es de como he programado esas cuatro líneas de código.

Cloud9 IDEReconozco que me dio un poco de pereza instalar node.js en mi máquina, así que no lo he probado hasta que descubrí Cloud9, un IDE -un entorno de desarrollo- completamente basado en el navegador, que me ha llamado bastante la atención. En primer lugar, por la inyección de pasta gansa (5,5M $) que le han metido Accel Partners y Atlassian. Y, en segundo y más importante, porque hay al menos dos españoles involucrados en el proyecto: Sergi Mansilla y Luis Merino.

Cloud9 se define como una plataforma de DaaS (Development as a Service) que te permite trabajar en la nube ¿No lo visualizas? Imagina que estás en un aeropuerto, esperando tu vuelo de conexión para viajar a San Esteban de Litera, o en casa de tus suegros, sobreviviendo a unas Navidades gallegas como mejor puedas, mientras encuentres un ordenador libre con conexión a Internet, tendrás acceso a tu entorno de desarrollo. Una vez más, parece algo natural en un mundo webcéntrico.

Hasta ahora, los IDEs basados en navegadores habían sido despreciados sistemáticamente por los viejos programadores cabecicubos de servidor como yo. No podían, ni remotamente, compararse a los IDEs de escritorio; ni en experiencia de uso con el editor de código ni en funcionalidades. “Cuando un editor web me haga un compilado autoincremental como Eclipse, hablaremos“, “no puedo depurar“, “no ejecuta informes de métricas de calidad sobre mi código” eran algunas de las frases más usadas.

[quote]Lenguajes dinámicos. Esos lenguajes para hippies, bohemios y gente de mal vivir…[/quote]

Pero entonces llegó la eclosión de los lenguajes dinámicos: PHP, Ruby, Python… y esos hippies del desarrollo que los utilizaban, ¡programaban en simples editores de texto! Inaudito, sobre todo para una generación educada en el dogma de que los pros tenían que utilizar bicharracos como VisualAge for Java o VisualStudio. Y en este contexto, en el de la gente que utiliza editores de texto con esteroides como TextMate o Vim, es donde Cloud9 parece tener sentido.

Y programé mi primer ¡Hola Mundo! en node.js con Cloud9 y reconozco que la experiencia de usuario, el tacto del editor, me gustó. Creo que la herramienta tiene muy buena pinta y es un IDE a tener en cuenta para proyectos en node.js, Ruby o PHP, los lenguajes que soporta. Aunque,  [highlight]donde realmente destaca es en node.js, para el que posee un entorno de ejecución y depuración integrado[/highlight].

Conclusión

No todo es perfecto y a Cloud9 aún le falta bastante. Sobre todo, en lo relativo a la documentación. Ahora mismo, si copias y pegas el ejemplo de ¡Hola Mundo! de node.js directamente, no funciona y tienes que fijarte en la consola para comprobar el error y darte cuenta de que el entorno te exige que utilices la variable process.env.C9_PORT como número de puerto y 0.0.0.0 como dirección IP.

Si buscas documentación al respecto, un how-to o un getting started… deja de soñar. Puedes bucear en el Google Group de la aplicación y encontrar ayuda con hilos como este. Otro ejemplo: si buscas el mapeo de teclas para depurar tu proyecto, la documentación oficial es el archivo .js donde se hace el mapeo.

Evidentemente, no he tenido tiempo de evaluarlo en profundidad. Tampoco como IDE para PHP o Ruby, así que os dejo una pequeña lista de los pros y contras que he encontrado. Yo, desde luego, le voy a dar una oportunidad para desarrollar en node.js.

[twocol_one]

PROS

  • Cómodo y rápido de usar
  • Integrado con bitbucket y github
  • Open source
  • Te lo puedes descargar e instalar en tu propio servidor ¡AMAZING!

[/twocol_one]

[twocol_one_last]

CONTRAS

  • Escasa documentación
  • En la versión gratuita y alojada, tus proyectos son públicos (cualquiera puede verlos y copiarlos)
  • No tiene soporte para lenguajes de la JVM como Groovy

[/twocol_one_last]

Enlaces

 

  • No conocía Cloud9 y tiene muy buena pinta! también me he echado unas risas leyendo el artículo xD

    • Bueno, ya sabes que ese es el estilo “de la casa”: demostrar que lo técnico no tiene porque estar reñido con lo divertido y, la diversión con la seriedad, aunque espero a algún troll que no lo entienda del todo y salga con un “Bonilla dice que los lenguajes dinámicos son de hippies”.

      Tengo en la cabezota un proyecto en node.js y creo que voy a utilizar Cloud9 pero no me gusta que mi proyecto sea público y forkeable SI o SI. A lo mejor me bajo la versión instalable…

  • Anónimo

    Ummm, node.js es una asignatura pendiente que tengo por ahí y que no he probado, pero creo que con la excusa de probar Cloud9 se puede intentar algo 🙂

    Por cierto ¿San Esteban de Litera? ¿El señor Latorre (hijo)  te ha dado permiso para mencionarlo?

    Un abrazo y a seguir currando en BonillaWare que te mereces lo mejor!!! 😀

    • Realmente… es:
      1. copiar un cacho de código

      var http = require(‘http’); 
      http.createServer(function (req, res) {  
      res.writeHead(200, {‘Content-Type’: ‘text/plain’});  
      res.end(‘Hello Worldn’); }).
      listen(process.env.C9_PORT, “0.0.0.0”);

      2. configurar la configuración de Run/Debug (que es el .js que vas a ejecutar) 
      3. empezar a ejecutar tu aplicación en node.js !!!

      Aún no he explotado la faceta colaborativa de la herramienta pero veo una conexión clara Galicia-Canarias ahi. A ver si hacemos algo juntos !!!

  • Daniel López

    Me alegro que tengas tiempo/te animes a probar cosas nuevas, aunque debo añadir, como no, una puntualización:
    Lo de que por usar el mismo lenguaje en el servidor, los programadores de frontend JavaScript te van a poder hacer la parte servidor es como decir que si dejas que un veterinario use el mismo instrumental, curará a las personas igual de bien. Una falacia clavadita a esa tan extendida que dice que si usas un modelo de componentes como en Swing, tus programadores de escritorio mágicamente sabrán hacer aplicaciones web.

    Personalmente JavaScript no me atrae nada, así que no creo que lo use mucho, pero bueno es conocer opciones por si aquello de “nunca digas de esta agua no beberé”.

    • Parece que fue ayer… ya empiezas a dar zapatilla en el nuevo blog ¡Esto empieza a funcionar! 🙂

      Personalmente, si que creo que los programadores de front pueden hacer aplicaciones completas y muy chulas sólo con sus superpoderes en JavaScript ¿por qué no?. A mi también me parece un lenguaje del averno, sobre todo porque, como la mayoría de los programadores de servidor no me he molestado ni en comprenderlo, solo en utilizarlo para lo mínimo imprescindible.

      Es un lenguaje dinámico, con todo lo bueno y todo lo malo que eso supone. Yo decidí darle una oportunidad desde que me lo pase como un enano programando mi propia lista de tareas con HTML5 (almacenamiento local con conexiones y SQL desde JavaScript) preparando la ponencia de la XGN11.

      Yo creo que he encontrado un escenario en el que hasta compartirias conmigo la decisión de arquitectura de utilizar node.js, y no lo digo por rendimiento (de momento, Bonillaware, con el límite de 10.000 conexiones concurrentes del Apache, aguanta bien :P)

      • Daniel López

        No me has entendido o no me he explicado bien, mas que ceros parece que sí, no me refiero a que no puedan por que usen un lenguaje del averno, lo digo por que los problemas/retos que te encuentras en el cliente (ajax, distintos navegadores, modificaciones dinamicas de DOM, problemas de caché… no son los mismos retos/problemas que te encuentras en el lado del servidor (mapeos a BDD, problemas asociados a procesos de larga vida, conexiones a BDD…) así que el problema no es el lenguaje, el problema es el dominio donde uno está acostumbrado a trabajar.

        Como bien dicen, el hábito no hace al monje, por lo que si ahora permitieran jugar al futbol a la gente con hábito, no significaría que los monjes jugaran todos como Ronaldinho :).

        Personalmente, si el problema con el desarrollador es que no puede usar el mismo lenguaje para hacer su trabajo en el cliente y en el servidor: no cambies de lenguaje, cambia de desarrollador :P.

  • Hello Bonnie!  :))

    Sólo escribo para poneros en contacto a Carlos Villuendas y a ti, no se si lo conoces ya o qué… estuvo trabajando hasta hace poco en http://www.runroom.com conmigo y le da bastante zapatilla al node.js:

    https://twitter.com/cvillu

    De hecho, ha creado las comunidades https://twitter.com/nodejs_esp y https://twitter.com/nodejs_bcn en Twitter.

    Yo qué se, se me ha ocurrido presentaros por si podéis sacar alguna historia en común.

    Un saludo!
    c

    • Pues no. No tengo el placer pero estoy muy interesado en conocer gente interesante. Sobre todo, gente con las ganas y el interés de crear comunidades como Carlos.

      No tengo ni idea hasta que punto avanzaré por los terrenos del node.js. Ya sabéis que yo soy una empanada mitad negocio/mitad técnica pero, tiene muy buena pinta ^_^

      PS: ¿qué pasa en BCN con JavaScript y node.js? ¿Por qué hay tanto talento allí en estás tecnologías? ¡qué curioso! 🙂

  • Buenas David.

    Yo odio y amo casi por igual los lenguajes dinámicos, sobre todo JavaScript. Casi toda herramienta tiene su utilidad, así que queda apuntada.
    Repecto a lo que dice Dani López, lo suscribo. A mi dame los pinceles de Dalí, que lo único que pintaré será un emoticon :-)).

    Siempre te puedes llevar un linux, con todo lo que te hace falta, en un usb y conectarlo donde quieras, sin internet ni nada, no cubre todo, pero seguro que es más cómodo.

    Por cierto, ya no te gusta intesedabate?

    • Pues, hoy en día, con el uso de HTML5 y su acceso local a datos (SQLite, BBDD ACID) los desarrolladores front-end pueden quitarnos las pegatinas en algunas de nuestras parcelas.

      IntenseDebate me la lio parda. Aún tengo a mi mujer borrando manualmente comentarios de spam para dejarlo como la patena, como un archivo historico bonito y cuidado. Fue nuestra casa, hasta que nos mudamos a esta nueva (aquí estamos todos ya, Dani López aka Greeneyed, Crazy Ivan, tu…)

  • Hola David,

        Me alegro que te haya gustado NodeJS, me parece también muy interesante lo que comentas sobre Cloud9, aunque yo soy de VIM, estuve probandolo el otro día y realmente me sorprendió lo bien que va y las posibilidad abre.

       Si te interesa la comunidad de NodeJS, nos puedes seguir en las direcciones que te ha pasado Carlos. Estamos en contacto.

    Un Saludo,
    CARLOS.

  • Raul Cotrina

    Muy interesante, es un concepto que rompe un poco. Como mínimo se merece ser probado :).

    • Con node.js se pueden hacer cosas muy chulas pero, sobre todo, me gusta por el cambio de paradigma, por hacer gimnasia mental y programar de forma asincrona… es un cambio profundo ¿te animarás?

      • Raul Cotrina

        El fin de semana si saco un ratín lo pienso probar 😉

  • En Lugo aún no conozco a nadie interesado en NodeJS, así que atrapo al vuelo las menciones interneteras con avidez y fruicción. Ahí van un par de recursos más para el hambriento:

    http://www.nodecloud.org/ Recursos 
    http://calip.so/ CMS basado en NodeJS
    http://logio.org/ Monitorización de logs a tiempo real y multi-máquina
    https://github.com/alexyoung/ircd.js Servidor IRC (WTF!) para NodeJS
    http://www.gnegg.ch/2010/04/announcing-tempalias-com/ Creación paso a paso de tempalias.com , un servicio de emails temporales, con NodeJS

    Y paro… que el antispam me va  marcar como non-grato 😛

    • Este comentario es de los que complementa y da caché a un artículo 🙂 
      No sabía que le estabas dando duro al tema de node.js. Aún no se si está muy maduro o no pero parece una apuesta coherente para los que se lanzan a por HTML5 y complementa a este en servidor.

  • ¿Un IDE online para desarrollar? ¿que es lo próximo, que se puedan hacer aventuras conversacionales con él? están locos estos romanos! x’D

    Voy a probarlo ahora mismo 🙂

  • Que bueno!, tengo que probarlo, hace un tiempo que ando buscando esa flexibilidad que no la encontraba hasta ahora, y andaba dale que te dale pasandome archivos al correo y manteniendolos ahi.  Lo de la documentación es normal, cuando empecé con CakePHP hace varios años tampoco habia nada, pero suerte que siempre se arman grupejos apañaos en google groups o similar donde se suele encontrar buena info, tiempo al tiempo.

    • Fijate que yo creo que, cuando un proyecto como este consigue esa financiación extra, los primeros dólares deben ir para poder contratar a un buen escritor técnico que le de a todo el conjunto un empaque más profesional.

      Me alegro de que te guste. Mañana nuevo artículo !!!