Mi experiencia en Codemotion 2016

Soy Mica. Os voy a contar mi experiencia en la conferencia/evento Codemotion 2016 que se ha celebrado esta semana en Madrid. Creo que han asistido unas 2000 personas, con unos 130 ponentes, 8 tracks de charlas en paralelo y otros 4 más de talleres. Vamos, que  no había tiempo de aburrirse. No he podido ir a todas las sesiones que me hubiese gustado, no he podido llegar a primera hora ninguno de los dos días y además el sábado me tuve que ir justo después de comer. Ya, lo sé, estas oportunidades habría que aprovecharlas al máximo, pero la conciliación laboral / familiar es lo que tiene😉

Este año he dado una charla, lo que tiene algunas ventajas: no tenemos que pagar entrada y el jueves nos invitaron a un cóctel a todos los ponentes. Ideal para intercambiar impresiones con los colegas que también se han animado a contar sus experiencias a toda la comunidad.

Bueno, vayamos al grano, aquí os dejo mis reflexiones sobre el evento:

Logística

El evento me ha parecido bastante bien, sobre todo considerando que ha habido 2000 asistentes. En alguna ocasión me he perdido buscando el aula del taller o de un track concreto al que quería asistir, pero eso se debe más a mi despiste que a la falta de información. Respecto a la comida y los cafés… no puedo decir no fuera “mejorable”, pero en cierta medida es comprensible. Dar de comer a 2000 personas en hora y media en un formato “networking friendly” es muy complicado. Por ejemplo, el formato de las cajas de “picnic” me ha parecido más cómodo que el cóctel de la CAS del año pasado. La gente podía salir a la calle, subir a las gradas del polideportivo o quedarse de pie por las mesas. Lo que si eché en falta eran los cafés después de las comidas. Creo que a Bonilla le pasó lo mismo en la Tarugo Conf, la gente se quedó sin café.

La comunidad

Esto es lo que más me gusta de estos eventos, el contacto con los colegas de la profesión, o camaradas del metal, como popularizó David Bonilla. Nos pasamos el día hablando por las redes sociales con gente con la que no hemos podido tener una conversación en persona. Estos eventos son la oportunidad ideal de desvirtualizar a los followers y a los followees. Y por supuesto también nos permite retomar contacto con colegas que nos vemos en estos “saraos”. Este post es una buena oportunidad para recordar todas las conversaciones (aunque hayan sido fugaces) que he tenido en el Codemotion.

En la cena de ponentes estuve hablando con Javier Vélez (@javiervelezreye), recordando y continuando algunas de las trifulcas que tenemos por Twitter en relación con Angular 2 y los componentes Web. También pude saludar a Jerónimo López (@jerolba), un eterno javero como yo. Que luego me presentó a Felix López (@flopezluis) de ShuttleCloud, al que pude desvirtualizar por fin y conocer en persona. Su charla sobre protocolos de “chismorreo” tenía muy buena pinta, pero era a la misma hora que la mía, así que no pude ir. Lo mismo me pasó con Jesús Espejo (@jespejo89), un camarada del metal que conocí en el TechFest al que pusieron su charla a la misma vez que la mía y que tengo pendiente ver en vídeo. Pude también conversar con David Bonilla (@david_bonilla), pero estaba un poco fastidiado por un problema dental. También estuve charlando con Adolfo Sanz (@asanzdiego) y Jorge Arévalo (@jorgeas80), coordinadores de Hackathon Lovers, sobre nuestros gustos comunes en temas docentes, Spring Boot, Angular 2 y TypeScript. También estuve charlando con Javier Abadía (@javierabadia), al que conocí defendiendo a JavaScript en el combate de Node.js vs Java. Javier me estuvo contando qué tal les va en su aventura con StyleSage, su startup relacionada con el data science, el crawling y la moda. Y cuando llegó Juanma Serrano (@juanshac), ex-compañero de la Universidad y CEO de Habla Computing, acabamos hablando de programación funcional. Pude saludar a Alba Roza (@Alba_Roza), que siempre está en todos los eventos para inmortalizar nuestras locuras frikis con el resto del equipo de AutentiaMedia. Ya he perdido la cuenta de las veces que me ha grabado. La primera fue la de JavaScript para Javeros en el MadridJUG hace 2 años y medio y la última fue el sábado, para hacer un resumen de mi charla sobre TypeScript. Hacen una labor impagable por la comunidad. También pude saludar a Joaquín Engelmo (@kinisoftware), nunca había hablado antes con él, aunque le sigo desde hace varios años por las redes sociales, desde que fui a una charla suya en el Codemotion 2013. Siempre da un poco de corte empezar a hablar con alguien al que sigues desde hace tiempo y que posiblemente él ni sepa que existes😉 También pude saludar fugazmente a Alex González (@agonzalezro), me hubiese gustado hablar más con él porque su trabajo con contenedores en JobAndTalent me parece muy interesante, pero le perdí la pista en la cena y no le volví a ver en toda la conferencia. Un poco más tarde llegaron los maestros Carlos Blé (@carlosble) y Modesto San Juan (@msanjuan) y estuvimos intercambiando impresiones sobre la formación técnica, en la etapa universitaria y durante el resto de la vida profesional. Como siempre unas charlas muy interesantes.

Pero cuando tuve la oportunidad de conversar con más gente fue en la conferencia el viernes y el sábado. Pasé un buen rato con Jose Turégano (@jturegano) y sus compañeros de Panel Sistemas, comentando la jugada mientras estábamos en una sesión sobre docker. Tuve interesantes charlas sobre arquitectura software, microservicios y Angular 2 con Jose Moreno (@jomoespe) y Javier Beneito (@jbbarquero). A las que luego se unió David Parra (@dparracatalan). Estuve hablando de todo un poco, incluyendo Java, Spring y los IDEs en la nube con Álvaro Amor (@aamormo) y Alberto Paz (@jalbertopaz), como hicimos en la CAS del año pasado. Me volví a encontrar con Raúl Ávila (@_Raul_Avila), uno de nuestros compatriotas que trabaja en Pivotal, la empresa que mantiene Spring Framework. Me estuvo contando lo que mola trabajar en una empresa tan potente como esa. También charlé un par de minutos con Alfredo Casado (@AlfredoCasado), al que me encontré con Modesto San Juan en el hall. Todavía me acuerdo de la época en la que coincidí en la universidad con Alfredo y de su Proyecto de Fin de Carrera sobre componentes gráficos. Aunque fue de forma más fugaz y me hubiese gustado haber estado más tiempo charlando, pude desvirtualizar a Juan Lladó (@jllado) y a Daniel López (@greeneyed_dlj), javeros convencidos como yo. También saludé a Francisco Javier Sanz (@fco_javier_sanz), habitual del MadridJUG. Me gustó ver a Israel Gutiérrez (@gootyfer), aunque le vi justo cuando me marchaba y no pude hablar mucho con él. Desvirtualicé a Joan Leon (@nucliweb) training Manager de , me gustó mucho cómo están consiguiendo visibilizar esta empresa que desarrolla tantos servicios en Internet y que era tan desconocida hasta hace bien poco. Kudos por Joan por el trabajo que está haciendo. Me quedé con mal sabor de boca porque no pude ir a ninguna de las charlas de Iván López (@ilopmar), el maestro de Groovy, pero al menos le pude saludar y he podido ver las slides de su charla de docker, muy buena pinta.

Como ves pude hablar con muchos compañeros de la comunidad, pero me hubiese gustado haber hablado todavía con más. Vi que estuvo por allí Israel Alcánzar (@ialcazar), pero no pude saludarle. También vi a lo lejos Sergio Saugar (@ssaugar), ex-compañero de batallas de la URJC. Con Jose Dongil (@jdonsan) había quedado hasta por twitter para poder desvirtualizarnos, pero no hubo forma. Al menos le convencí de que probara TypeScript😉 En la próxima nos vemos. También lo intenté con Antonio de la Torre (@adelatorrefoss), pero no hubo forma. Recuerdo cuando charlamos un rato en el SaveInformaticOS que organizó Jose Manuel Beas.

También me hubiese gustado poder hablar con gente de la comunidad a la que sigo habitualmente, pero con la que tampoco interactúo mucho por las redes (tampoco es cuestión de ser pesado). Pero no he tenido la oportunidad de hacerlo. A ver si en los próximos saraos puedo sigo desvirtualizando a colegas.

Las charlas y talleres

Pues la verdad es que había muchas charlas muy interesantes, pero entre que llegué un poco tarde, me tuve que ir pronto el sábado y me quedé charlando con compañeros más de la cuenta, me he ido con la sensación de haberme perdido bastante. Una suerte que se hayan grabado tantas charlas y que ya estén disponibles en YouTube. Ya tengo deberes😉

El viernes estuve en la charla de Joaquín Engelmo sobre programación defensiva y sistemas resilientes en el mundo real. Me gustó mucho ver la experiencia personal que emanaba de sus anécdotas. Desde luego es lo que más nos gusta de las charlas, conocer las historias reales más allá de los tutoriales. Luego estuve en la charla de Docker de Jose Armesto. Muy buenos consejos de la mano de la experiencia, como el proyecto de etiquetas estándar y la correcta gestión de la construcción de imágenes. Y bueno, lo de usar un contenedor por VM me sorprendió bastante, pero claro, en producción hay que tener mucho cuidado así que mejor hacer las cosas de forma paulatina.

Por la tarde estuve en el taller de Javier Abadía sobre la librería d3.js. Si vas a usar esta librería, te recomiendo que busques un buen tutorial, porque la librería no es sencilla. Gracias a Javier por guiar tan bien el taller y hacer que sea fácil lo difícil😉 Aunque no pude ir, luego estuve viendo la charla de Juan Manuel Serrano sobre programación funcional. Me gustó su enfoque, justo como el mío, pierde el miedo a una tecnología / técnica, elimina los prejuicios que tengas y dale una oportunidad. Él nos quiso convencer de que las mónadas son sólo una API para implementar programas imperativos en programación funcional, aunque claro, la sintaxis de los lenguajes y la “jerga” superchunga de los amantes de las lambdas no ayudan a que la curva de aprendizaje sea suave. A ver si sacamos tiempo y le damos una oportunidad.

Luego fui a la charla de Pan para hoy y pan para mañana con Kubernetes de Pablo Moncada. Experiencias con docker en producción. Muy interesante. Otro detalle para la mochila: las bases de datos gestionadas por el proveedor cloud, nada de operarlas en docker (y hacen bien).

El Sábado llegué un poco tarde a la charla de Git nivel Samurai de Sergio Gómez. Algunas cosas interesantes, como el “–assume-unchanged” para evitar que un commit accidentalmente incluya algunos ficheros que modificas en local, pero que tampoco quieres ignorar. Luego estuve en la de Javier VélezPatrones de Diseño para Aplicaciones Basadas en Componentes Web. La charla estuvo muy trabajada, se nota que Javi le dedica mucho tiempo a prepararse las charlas. Y nos contó una propuesta para el desarrollo declarativo basado en HTML y componentes. Algunos asistentes hubiesen preferido una charla menos densa, sin entrar en tanto detalle y que se quede más en el mensaje principal. Aunque luego otros pedían más ejemplos y más debate. Está claro que nunca llueve a gusto de todos. En cualquier caso, Javi no defrauda y su rigurosidad expositiva es digna de agradecer. Después me fui a la charla de One click release: ft. Travis, Spinnaker & co de Toni López. Nos contó cómo han implantado Continuous Delivery en  partiendo de un enfoque totalmente manual. La charla estuvo bien, pero creo que se quedó bastante corta. Creo que la parte de “lo mal que lo han hecho hasta ahora” se podía haber reducido y haber ampliado la descripción de Spinnaker, por ejemplo.

Y lamentablemente me tuve que ir al medio día, así que me pedí una parte de la Codemotion.

Mi charla

Yo también di una charla en el Codemotion. La charla era sobre TypeScript, un superconjunto de JavaScript que está pensado para que las herramientas de desarrollo te puedan ayudar durante el desarrollo, evitando que cometas errores. En realidad, TypeScript es un lenguaje un poco peculiar porque es un JavaScript pero con tipado estático, y eso crea muchas ampollas en los desarrolladores JavaScript, porque creen que de esa forma su código será igual que Java. Lo bueno de este tema es que se presta a trolear a los javeros y a los javascripters, así que pensé en la charla en tono de humor. De ahí su título: TypeScript: Un lenguaje aburrido para programadores torpes y tristes.

Cuando llegué a la charla había cuatro gatos, no los conté, pero seguramente hubiera menos de 40 personas. Aunque había 8 tracks en paralelo y 4 talleres… fue, con diferencia, la charla con menos gente a la que yo asistí en todo el Codemotion. Pero es normal, a quién c**o le importa eso de TypeScript. Seguro que a los frikis de siempre. Además, había charlas mucho más interesantes a la misma vez que la mía.

Lo bueno es que nos echamos unas risas. Hubo muy buen feedback y parece que gustó el tono de humor. Además, más allá de eso, parece que hice cambiar el concepto que muchos de los asistentes tenían de TypeScript, que era mi objetivo principal. Yo me siento muy cómodo programando en este nuevo lenguaje. Creo que tiene mucho futuro porque va a acercar al mundo de desarrollo frontend a muchos desarrolladores con skills de backend en lenguajes estáticos como Java o C#, y eso es bueno para todos.

Aunque bueno… lo mejor es que decidas por ti mismo si quieres probar TypeScript o no. Aquí te dejo la charla. Espero que te guste.

 

 

 

 

 

 

 

 

 

Twilio compra Kurento!

Kurento WebRTC media server team joins Twilio

Quizás el título no te diga nada, quizás no sepas ni qué es Twilio ni qué es Kurento, pero en CodeUrjc estamos muy contentos con la noticia. Twilio es una empresa de Silicon Valley que ofrece servicios de comunicación en la nube. Desde comunicaciones de voz por VozIP y envío de SMSs, hasta el procesamiento distribuido de eventos. Algunos de los clientes más importantes de Twilio son Uber y Whatsapp. Kurento es un servidor de media WebRTC software libre desarrollado en la Universidad Rey Juan Carlos y en la empresa española Naevatec. Permite incluir videollamadas en grupo en una página web, incluyendo visión artificial, grabación, etc.

¿Y por qué esta adquisición es tan importante para CodeUrjc? Pues porque los co-directores de CodeUrjc, Mica y Patxi (nosotros), llevamos varios años participando en el desarrollo de Kurento. Como te puedes imaginar, Kurento es un proyecto complejo, que usa múltiples tecnologías: C, C++, GStreamer, CMake, Java, Maven, JavaScript, Bower, NPM, Node, Ubuntu, deb, Chrome, Firefox, Jenkins, JUnit, Selenium, Docker y muchas más. Y Patxi y yo hemos estado en todo el meollo, desde el diseño de las APIs, desarrollo de aplicaciones de ejemplo, documentación, testing, sistema de integración continua, gestión de proyectos Maven, publicación de releases, y un largo etcétera.

Pues eso, Kurento, nuestra criatura, nuestro pequeño juguete, se hace mayor y se va de casa y se integrará en los servicios que ofrece Twilio, una de las mayores empresas de comunicación as a service del mundo. Pero los que uséis la versión software libre no tendréis de qué preocuparos. Seguirá estando disponible. Twilio, la URJC y Naevatec seguirán manteniendo este proyecto en abierto para que cualquiera lo pueda usar.

Desde este post queremos dar las gracias a todo el equipo que ha hecho posible Kurento. A Luis y Javier, los jefes. A Jose, Miguel, Santi y David, los “mediaserveros”, a Iván, el Java Architect, a Boni, nuestro “testing guy”, a Raúl, con sus fantásticas herramientas y a Radu, nuestro último fichaje. También nos han ayudado otros compañeros más en algún punto del proyecto, gracias a todos! Además de las gracias, también queremos desearles muy buena suerte a todos porque se incorporan a la plantilla de Twilio, que abrirá una nueva oficina en Madrid.

Nosotros, Patxi y Mica, nos quedaremos en la universidad, manteniendo el proyecto open source Kurento y con nuevos retos en el horizonte. Ya os contaremos qué estamos preparando, pero ahora es el momento de Kurento y del equipo que lo ha hecho posible.

Buen trabajo compañeros, y buena suerte en la nueva aventura!

Aquí tienes más información de la compra, en todos sitios:

 

 

 

Aprende TypeScript, Angular 2 e Ionic 2

Si te gusta el desarrollo web sabrás que las tecnologías que se usan cambian cada día. Y si no tienes ni idea, ya te lo digo yo😉 cada semana aparece una nueva librería, framework, editor, lenguaje, tecnología de construcción de proyectos… Vamos, una locura.

 

Selección_135

Resulta que está la cosa calentita porque uno de los frameworks de desarrollo de aplicaciones web del tipo SPA más utilizados, desarrollado por Google, está a punto de publicar su nueva versión. Pero no es una versión más, es una re-escritura completa, usando incluso un nuevo lenguaje. Estoy hablando de Angular 2. Se espera que se publique a mediados de Mayo. Aunque se puede desarrollar con el viejo y querido JavaScript ES5, está preparado para aprovechar las nuevas características del nuevo y flamante JavaScript ES6. Pero va más allá, los desarrolladores de Angular 2 recomiendan usar TypeScript, un JavaScript supervitaminado con tipado estático.

Selección_136

Para colmo, el framework de desarrollo de apps móviles híbridas ionic también está a punto de publicar su versión 2, precisamente basada en Angular 2, y por tanto también se recomienda usar TypeScript para desarrollar con él.

2.png

Como ves, se avecinan cambios importantes en el desarrollo web. Así si quieres estar al día de todo lo que se avecina, más vale que te pongas las pilas. Hay un montón de recursos por la web para aprender TypeScript, Angular 2 e Ionic 2, pero si te pierdes con tantas cosas y prefieres una guía en castellano, aquí te dejo mi tutorial de TypeScript, Angular 2 e Ionic 2  con 257 slides cargaditas de detalles para que tengas una visión general de estas tecnologías que cambiarán el desarrollo web como lo conocemos.

A disfrutar😉

Sidelab es ahora CodeUrjc

Acabamos de empezar 2016 y es momento de cambios. Año nueva, vida nueva😉. En este post os queremos contar qué hemos hecho en estos dos últimos años (desde que escribimos el último post) y lo que tenemos pensado hacer de aquí en adelante.

logo_cetrado_negro.png

Lo primero es lo primero, hemos cambiado de nombre: Sidelab se convierte en CodeUrjc. El nuevo nombre corresponde “más o menos” a un nuevo acrónimo: Grupo de Consultoría y Formación en Desarrollo Software de la Universidad Rey Juan Carlos. Aunque en realidad ese nombre destila mucho más que el acrónimo… Por un lado, queremos centrarnos en lo que nos gusta hacer, enseñar a desarrollar software, de ahí lo de “code”, el nombre que mejor resume lo que nos gusta a los programadores. Por otro lado, nos sentimos orgullosos de formar parte de la Universidad Rey Juan Carlos, la casa que nos ha visto nacer y crecer profesionalmente.

CodeUrjc (antiguo Sidelab) está formado por profesores de informática de la URJC a los que nos gusta programar, aprender nuevas tecnologías, profundizar en las que más nos interesan y compartir con los demás lo que hacemos. Algunas veces también hemos estado involucrados en pequeños desarrollos, otras veces en grandes proyectos con más gente, pero sobre todo hemos dedicado nuestro tiempo a la formación (asignaturas de grado, másteres, cursos, charlas, etc.). El cambio de nombre a CodeUrjc tiene como objetivo que sea más fácil identificarnos con la formación y la consultoría en el desarrollo software.

Como cambiamos de nombre, también cambiamos de logo. El nuevo es mucho más identificable con nuestra casa, la Universidad Rey Juan Carlos. Esperamos que el nuevo logo os guste más que el antiguo de sidelab.

Con el cambio de nombre han llegado cambios en todas nuestras páginas web y diferentes redes sociales. Aquí están los nuevos:

Lo dicho, esperemos que el cambio os guste. Para celebrar la nueva imagen, estamos preparando un curso muy interesante sobre desarrollo web… estad atentos.

Feliz 2016!

 

Arreglando el histórico en git

Si usamos git en el día a día, probablemente nos habremos encontrado alguna vez con que olvidamos configurar nuestro user.name y/o user.email, el sistema coge valores por defecto y acabamos teniendo commits con autor o dirección de correo inválidos para el repositorio remoto (sea Github, Gerrit, BitBucket o cualquier otro). En tal caso hay que arreglar todos los commits incorrectos sí o sí.

Arreglar el último commit

Esta fiesta es la más sencilla. Para arreglar el último commit basta con hacer:

git commit --amend --author "New Author Name <email@address.com>"

Arreglar varios commits o un commit antiguo

Vale. La hemos cagado. Y ahora nos encontramos con miles de líneas de código que hemos ido comiteando sin hacer push, y de pronto tenemos a git rechazando el push porque el commiter es incorrecto para el repositorio remoto, es decir, su dirección de correo  y/o autor no los reconoce.

Podríamos decirnos que estamos jodidos y tratar de endosarle el marrón a otro, pero la verdad es que el problemón tiene solución. Es un poco pesada y usa algunas cosas de git que son peligrosas (puedes cambiar el orden de los commits de todo el repo jodiendo al resto de desarrolladores de tu equipo), pero siguiendo estas instrucciones con cuidado igual salvamos el culo…

En primer lugar hay que encontrar el commit más reciente en el repositorio local anterior a todos los que tienen mal el commiter. Por ejemplo, supón el siguiente histórico:

afffg2 patxi@gmail.com
cdfg34 jorge@gmail.com
3f55a4 patxi@gmail.com
345dg8 pepito@gmail.com
658dff patxi.gortazar@gmail.com
... a partir de aquí todo ok

Supongamos que hay que apañar el mail de patxi@gmail.com y cambiarlo por patxi.gortazar@gmail.com. El commit más reciente anterior a los que tienen el email patxi@gmail.com que hay que cambiar es el 345dg8 de pepito@gmail.com.

Ahora hacemos un git rebase con este commit como referencia:

git rebase -i -p 345dg8

Se abre un editor de texto que nos muestra todos los commits desde el 345dg8 en adelante. Cada commit está en una línea y comienza por “pick”. Tenemos que ver cuáles queremos cambiar y sustituir “pick” por “edit” y guardar. La cosa debería quedar tal que así:

edit afffg2 patxi@gmail.com
pick cdfg34 jorge@gmail.com
edit 3f55a4 patxi@gmail.com
pick 345dg8 pepito@gmail.com

Guardamos y salimos. Git nos informa de cómo proceder, básicamente vamos a ir avanzando haciendo commits parando en cada uno de los commits que le hemos dicho que queremos editar. Estos commits los apañaremos y seguiremos adelante con el proceso hasta el final.

Vamos paso por paso. En primer lugar, git habrá avanzado por defecto hasta el primer commit: 3f55a4. Vamos a arreglar este commit. Para ello usamos “git commit –amend” indicando el nuevo autor y correo electrónico:

git commit --amend --author "Patxi Gortázar <patxi.gortazar@gmail.com>"

Se abre un editor por si queremos cambiar el mensaje del commit. No tocamos nada, simplemente guardamos y salimos.

Ahora avanzamos hasta el siguiente commit que queremos arreglar:

git rebase --continue

Git se para en el commit afffg2. Arreglar este commit de la misma forma:

git commit --amend --author "Patxi Gortázar <patxi.gortazar@gmail.com>"

Aunque hemos arreglado todos los commits, aún le tenemos que decir a git que avance hasta el final, dejando el repo con los mismos commits que tenía antes de comenzar:


git rebase --continue

Listo. Prueba a hacer un pull (por si acaso) y un push.

EclipseGavab 2.0

EclipseGavab es una distribución de Eclipse que desarrollamos en Sidelab y venimos usando desde hace más de 5 años en la Universidad Rey Juan Carlos como el IDE de referencia en asignaturas de paradigmas y programación. El principal valor de EclipseGavab es que integra soporte para diferentes de lenguajes de programación permitiendo que los alumnos se familiaricen con un único entorno y se puedan centrar en el lenguaje concreto. En aquellos casos en que ha sido posible, incluye también los correspondientes compiladores/intérpretes/máquinas virtuales de dichos lenguajes.

Lenguajes soportados:

  • Java
  • C/C++ (en Windows incluye compilador basado en cygwin)
  • Pascal y ObjectPascal (en Windows incluye el compilador FreePascal)
  • PascalFC (incluye compilador e intérprete en Windows y Linux)
  • Ruby (en Windows incluye intérprete Ruby)
  • Haskell (en Windows incluye ghc)

Puedes descargar EclipseGavab de los siguientes enlaces:

  • EclipseGavab 2.0 Windows Installer (300Mb). Windows XP and Windows Vista installer. Requires 660 Mb.
  • EclipseGavab 2.0 tar.gz for Linux. A tar.gz Linux distribution. It requires the installation of the following tools: Java SE 6 for executing EclipseGavab and Java programming; gcc for C/C++ programming; FreePascal for Pascal programming; ghc for Haskell programming; and Ruby for Ruby programming.

En Ubuntu, los paquetes necesarios son: build-essential, fp-compiler, fp-units-base, fp-units-rtl, ghc6, ruby, sun-java6-jre, y se pueden instalar con el siguiente comando:

sudo apt-get install build-essential fp-compiler fp-units-base fp-units-rtl ghc6 ruby sun-java6-jre

[Editado el 7/2/2014]

En Ubuntu 64 bits es necesario usar una versión Java de 32 bits. En Windows esto no es necesario porque EclipseGavab lleva una versión de java de 32 bits embebida. Se puede descargar el jdk 7 de 32 bits de esta url, pulsando en “Java Download” y seleccionando después la versión “linux x86” de extensión tar.gz.

Una vez descargado Java, se descomprime (tar -xvzf jdk-7-xx.tar.gz) en el home del usuario y se edita el fichero eclipse.ini para que utilice esta versión de Java. Supongamos que la ruta es “/home/user/jdk-7-u51”, el fichero eclipse.ini debe incluir las siguientes líneas inmediatamente antes de la opción “-vmargs”:

-vm
/home/user/jdk-7-u51/bin/java

Enjoy programming!