Entrevista a Javier Jiménez Villar, autor de LungoJS

En un evento en Octubre, sobre html5 en la universidad, me encontré con Guillermo Pascual. El cual me comento que había un proyecto interesante en el norte y que me tendría informado cuando se publicará.

Y efectivamente el 6 de noviembre de este 2011, en GenbetaDev publicamos en rigurosa primicia el nacimiento de una nueva librería de JavaScript para construcción de WebApps al estilo de jquerymobile.

Ahora quiero traeros las palabras del alma de este proyecto, Javier Jiménez Villar, que ha sacado tiempo un Domingo para contestar las preguntas que componen esta entrevista.


¿Cuándo te diste cuenta que el desarrollo de software te había enganchado?

A la tierna edad de 11 años cuando gracias a mi padre trajo a casa (por motivos de trabajo) un precioso 286 a 20mhz donde empecé a jugar con Basic, MsDOS (gracias a que con el ordenador venían dos maravillosos libros que me los estudiaba día y noche). Lo que me di cuenta es que gracias a ese para entonces extraño aparato tenia posibilidad de CREAR; podía crear desde rutinas ms-dos para buscar y renombrar ficheros dentro de mi enorme disco de 40mb, como de crear pequeñas aplicaciones y juegos conversacionales. Sea como fuere veía que el estar frente al ordenador me daba la posibilidad de divertirme creando y aprendiendo cosas nuevas. Durante los siguientes años busqué documentación, revistas y personas que me diesen más información y software que probar, con lo que pude acercarme a lenguajes como PASCAL y C. El tiempo pasó rápido y pude empezar a trabajar con Delphi y Visual Basic, lo que hizo que me enamorase de las interfaces gráficas. Para mí la verdadera revolución fue el poder hacer aplicaciones ricas en gráficos y elementos gráficos que interactuasen con el ratón… de ahí que siempre me dedicase a poner especial interés en el diseño y composición gráfica de mis aplicaciones. Desde entonces (sería con 15 años) sabía que si algún día me tendrían que pagar por algo que hiciese tendría que ser por lo que hiciese desde el ordenador.

Nota: Más adelante me di cuenta que lo que realmente me interesaba era hacer aplicaciones en internet (que no páginas web) y a pesar de que he tenido que trabajar (por cuenta ajena) con tecnologías propietarias/desktop como Java, Visual C++, C#, WPF, Silverlight… en mi tiempo libre seguía desarrollando mis propios proyectos en tecnologías web como Coldfusion, ASP, PHP, Rails, ExtJS…

¿Cómo consigues compaginar tu vida personal y tu vida laboral?

La verdad es que el mundo del software siempre ha formado parte de mi vida, nunca lo he considerado como un trabajo ya que ha sido una forma de entretenimiento y aprendizaje continuo. El software me ha dado la oportunidad de divertirme aprendiendo nuevas tecnologías y áreas (sobre todo relacionadas con el diseño), recuerdo cuando empecé a investigar el mundo de las 3D con el conocidísimo 3D Studio R3 (MS-Dos) y que me pasaba horas frente al ordenador buscando ese sombreado perfecto, o ese keyframe que hiciese la animación creíble. De todas formas entiendo que hay que saber decir “basta” para poder liberar la mente de bytes y pixeles… y por lo tanto y gracias a que mis padres me inculcaron desde muy pequeñito a evadirme con el deporte, esta pueda ser una de mis mejores areas de escape… hasta que me casé :)

¿Cuantas horas al día estás delante del ordenador?

Demasiadas (risas)... si contamos que parte de mi trabajo/ocio lo realizo desde un dispositivo conectado a internet. Tal vez este año haya sido el que más horas he invertido frente a una pantalla, puesto que he tenido que compaginar mi ex-trabajo (lo he dejado en noviembre de este año) en una consultora internacional, así como la creación de mi empresa propia Tapquo y el desarrollo del framework LungoJS. Si ponemos un número y preguntamos a mi mujer Leire, que es quien me ha tenido que soportar en mi lucha por sacar esto a flote, creo que no me quedaría corto diciendo que unas 13 horas no sería una mala cifra.

¿Utilizas alguna técnica de gestión de tiempo personal?

GTD, creo que es la mejor forma que he encontrado para gestionar mi tiempo (y el de los demás). Lo que me impulsó a utilizar esta técnica definitivamente fue el libro “Gestiona Mejor tu vida” de Alberto Pena en el cual en muchas de sus situaciones me sentía totalmente identificado. A nivel de ejecución en desarrollo soy un fiel creyente de la técnica “Pomodoro” la cual me permite estar “focussed” al 100%, y dado que soy una persona que le gusta investigar (y esto es relativamente sencillo con Internet cerca) necesito un relojito con forma de tomate para estar centrado.

¿De dónde viene el nombre de Lungo?

El proyecto LungoJS en un principio se llamaba “Coffee Framework”, puesto que su planteamiento y posterior desarrollo se hacía por las noches frente a tazas de café y líneas de código. El caso es que en el mundo JavaScript ya existe una iniciativa con el nombre Coffee entre sus lineas, como es CoffeeScript, y opté por cambiar el nombre previo consejo de mi colega Guillermo Pascual. Lo cual acepté muy a regañadientes, y Coffee paso a ser Lungo que no deja de ser otra referencia más a un café (Café Largo).

¿Cuándo y porque viste la necesidad de Lungo?

La verdad es que siempre me han apasionado el mundo de los móviles, creo que hasta que salió el primer iPhone (que no llego a España pero que si compré en USA) cambiaba de móvil cada 3 meses, puesto que siempre encontraba algún tipo de limitación. El iPhone fue el primer móvil que me dejó juguetear haciendo WebApps, pero por aquel entonces el navegador SafariMobile y su implementación HTML5 no eran muy buenos, asi que opté por el desarrollo nativo. Como buen “freak” me apasioné por el mundo Objective-C, pero poco a poco y a la vez de darme cuenta me estaba alejando del desarrollo web vi una enorme realidad: “No puedo hacer un aplicación y llevarla al mayor número de smartphones”. Me di cuenta que si quería hacer algo para Android tendría que desarrollar con la SDK Java, que si quería hacer algo para Windows Mobile tendría que trabajar con tecnologías Microsoft y me vino a la mente el refranero español “Quien mucho abarca poco aprieta”, y una personas (o un grupo pequeño) no pueden ser expertos en desarrollar en todas las tecnologías móviles.

Opte por volver a mis inicios y a mi primer planteamiento, una WebApp que se ejecute en el navegador independiente de cada plataforma, y empecé a estudiar que había en el mercado (esto hace 2 años) y no encontraba nada que me gustase, el gran problema que existía eran las propias implementaciones de los navegadores que salvo SafariMobile (webkit) en el resto eran muy pésimas (actualmente en algunos casos lo siguen siendo). Y de repente empezó a sonar HTML5, y aunque ya había leído sobre ello no había tenido la oportunidad de profundizar, y cuando lo hice lo vi más claro: por fin todos íbamos a tener un estandar real y consensuado! Desde entonces mi dedicación ha sido absoluta al estudio y desarrollo sobre estas tecnologías, muchísimo ensayo error, muchísimas pruebas en dispositivos de diferentes plataformas y al final opte por realizar una aserción talibanidora: “LungoJS solo dará soporte a dispositivos que den soporte real a HTML5/CSS3/JavaScript”.

¿Con qué apoyos has contado para desarrollar el proyecto?

Apoyo económico ninguno, apoyo emocional todo el del mundo. La verdad es que este proyecto es un proyecto de casta, de lucha por la insatisfacción de no ver resuelto un hueco en el desarrollo mobile. No he buscado fondos para el proyecto, porque primeramente me gustaría demostrar que es posible, que un chaval puede hacer algo útil para el resto de la comunidad desarrolladora… lo que si he buscado es a otros locos que me ayuden con el desarrollo de LungoJS, y desde mediados de septiembre Guillermo Pascual me echa un cable en el core JavaScript pero si que sigo buscando a alguien que me ayude con la UI CSS3.

Hay que tener en cuenta que desde febrero este proyecto ha sido mantenido por mi mismo, desde su concepción hasta el desarrollo de la web, la tipografía, el logotipo, branding y marketing… una aventura y un proyecto, repito, de casta.

¿Cuáles son las principales diferencias que hacen más completo a Lungo, en comparación con opciones como jquerymobile u otras?

¿Sinceramente? Creo que son muchas las diferencias porque si no, no me hubiese embarcado en esta aventura (risas). Cuando empecé a estudiar JqueryMobile/Sencha hace más de 15 meses me di cuenta que no conseguían satisfacer lo que yo entendía que era aprovechar las tecnologías web actuales en un mobile.

JqueryMobile había lanzado una versión beta muy precaria y me di cuenta que algo fallaba en su planteamiento:
¿Estaban utilizando una librería destinada a Desktop para hacer proyectos Mobile? >> Mucho JavaScript que no es necesario en mobile.
¿Porque no utilizaban features de HTML5 ya implementadas en los mobile? >> Porque no utilizar las posibilidades offline, websql, el sistema de geoposicionamiento, el osciloscopio…
¿Retrocompatibilidad para dispositivos que normalmente no se van a conectar a internet? Vuelvo a la premisa principal de LungoJS (da soporte a quien de soporte a HTML5), porque crear una librería enorme para soportar dispositivos que difícilmente estén en el mercado en unos cuantos meses?

Tal vez como jQuery lo utiliza una enorme comunidad de desarrolladores web (aunque solo un pequeño porcentaje lo usa con toda su funcionalidad) les sea más fácil enganchar a los desarrolladores mobile. A lo que yo me pregunto ¿Y el rendimiento donde se queda? ¿y las capacidades móviles? El evento “click” no existe en mobile, porque no hay un ratón donde pulsar… en mobile tenemos otros eventos como son touchstart, touchend, tap, double-tap, swipe, pinch, deviceorientation… y no los tenían implementados ¿por qué?. Lo que se tienen que dar cuenta los desarrolladores, es que hacer aplicaciones para el Mobile no es hacer aplicaciones para una pantalla pequeña, la forma que el usuario interacciona con el dispositivo es totalmente diferente y por lo tanto tenemos que aprovecharnos al máximo de las verdaderas funcionalidades de este tipo de dispositivos.

Otra cosa que no me gustaba es que tampoco utilizaban los elementos semánticos de HTML5, y que el marcado html era demasiado complejo y en algunas ocasiones rebuscado. Si por ejemplo ejecutamos una webapp JqueryMobile vemos como el ha crecido considerablemente y todo ello motivado por la retrocompatibilidad que buscan y mantienen. Si lo enfrentamos a un proyecto LungoJS vemos que en este es más sencillo y semántico, por el simple hecho de que un proyecto puede y debe ser leído por otra persona con total facilidad. Además señalar que se ha intentado utilizar el patrón ooCSS de Nicole Sullivan para obtener un mayor rendimiento en el renderizado CSS3, tanto es así que LungoJS dispone de una librería de 120 iconos vectorizados vía font-face (css3) en apenas 30kb, lo que nos provee de crear una UI agradable con independencia de resolución (señalar que este tipo de solución lo he mandado a la W3C como propuesta para el desarrollo de UI).

¿Porque la página web y la documentación están solo en inglés?

Quiero “luchar” contras las grandes JqueryMobile y Sencha, si quiero que los usuarios que utilizan actualmente estas tecnologías le den una oportunidad a LungoJS tengo que tener sus mismas armas. Entendía que al ser un producto gestado al otro lado del charco, tenía que dar un plus a la comunidad hispana y de ahí que me preocupase en grabar unos screencasts en perfecto idioma de Cervantes. Con esto espero haber conseguido que ambas partes estén contentas, aunque si que estoy recibiendo de la comunidad anglosajona peticiones de screencast en inglés y de la comunidad hispana documentación en castellano. Con tiempo me gustaría satisfacer a todo el mundo, pero ahora mismo veo más interesante seguir madurando el proyecto en cuanto a tecnología y características. Lo que si vamos a lanzar a lo largo del próximo mes es un foro de consulta y un sistema para publicitar las aplicaciones desarrolladas con LungoJS.

Lungo soporta WebSQL, pero esta especificación está descontinuada desde Noviembre del 2010, siguiendo los trabajos en las especificaciones Web Storage e IndexedDB. ¿Soporta o va a soportar Lungo estas especificaciones de almacenamiento de datos?

Se que está descontinuado, pero también sé que actualmente hay más soporte de WebSQL que de IndexedDB en el mundo mobile, por ejemplo los navegadores de iOS y Android no dan soporte a IndexedDB (de momento). Por lo que hasta que no esté soportado por estas plataformas no lo incluiré dentro del Core de LungoJS, eso sí la forma de interactuar con esta especificación para el desarrollador será totalmente transparente ya que seguirá trabajando con el namespace “lng.Data.Sql” y es LungoJS quien hará el trabajo “sucio”.

Ahora ya podemos desarrollar en Lungo para tabletas, ¿y el futuro?

(Risas)... el futuro es que LungoJS corra en más que tabletas y móviles y siempre bajo la premisa “un desarrollo para dominarlos a todos“. Por ejemplo desde la Release 1.0.3 el desarrollador únicamente tiene que hacer un desarrollo para que tenga comportamientos diferentes dependiendo del dispositivo (móvil o tableta). Siguiendo con esta premisa estamos investigado desde Tapquo, el desarrollo de software para micro-arquitecturas como pueden ser PandaBoard o BeagleBoard ... y por supuesto desarrolladas con LungoJS. Hay otra rama de desarrollo que estoy investigando para LungoJS pero que por ahora no puedo hablar mucho de ella ya que me falta mucho trabajo por hacer (tiempo al tiempo).

¿Es Lungo un modelo de negocio viable? Vamos, que si podrías vivir de la actividad generada a su alrededor.

En un tiempo te lo diré (risas), lo que si me estoy dando cuenta es que además de la enorme comunidad que está surgiendo a su alrededor y que está realizando sus propias webapps, hay empresas de gran calibre (con miles de empleados) que están interesados en utilizar LungoJS y que desean un sistema de licenciamiento + soporte. Dentro de Tapquo el modelo está en nuestro knowhow sobre tecnologías móviles y en los productos que complementan a LungoJS como puede ser Social Analytics… pero esa es ya otra historia/aventura/reto/proyecto :)

Aunque es una pregunta de la cual conocemos la respuesta, ¿ha habido alguna ayuda pública o privada, alguna forma de apoyo a la industria nacional?¿Lo has pedido?

Para la creación de la empresa Tapquo si que hemos tenido ayudas por parte del Gobierno Vasco, donde nos han nombrado como una de las mejores empresas innovadoras del 2011 y nos han apoyado económicamente para seguir creciendo como startup. En cambio para LungoJS no he obtenido ningún tipo de ayuda, porque realmente no la he pedido… creo que el producto aún es imperfecto como para pedir una ayuda.

Viendo que desde que lo has publicado el número de colaboradores ha aumentado, has recibido ofertas de apoyo de la industria o la administración?

NO, es así de triste, pero el emprendizaje en este país no funciona todo lo bien que debería… tal vez no hemos llegado a las puertas que deberíamos… hace un mes estuve con Paul Kinlan (Developer Advocate Google) y mostro mucho interés por LungoJS me dijo que lo iba a enseñar por Google ya que es un planteamiento muy correcto…. por ahora no me ha llamado Google :)

A la industria le pediría, más hardware para poder seguir probando LungoJS (hay que señalar que por ejemplo en JqueryMobile además de 50 empleados tienen casi 100 dispositivos donde prueba activamente cada release). A la administración le pido que tenga en cuenta y que escuche a los jóvenes emprendedores porque muchos tienen ideas y proyectos geniales.

¿Cómo ves el presente de las WebApp? ¿Y el futuro?

Ya lo dijo Tim Berners-Lee: “el futuro está en Internet“, y no le falta la razón: desde la W3C están creando las SPEC que llevarán Internet a cualquier rincón del mundo. Actualmente podemos aprovecharnos de las tecnologías HTML5/CSS3 muy activamente y sobre todo en dispositivos móviles que son quienes implementan más rápidamente implementan las nuevas especificaciones; algunas de ellas están pensadas exclusivamente para este tipo de dispositivos. Señalar también que el paradigma de 3 capas se está reconvirtiendo a las antiguas 2 capas (alguno me lapidará por esto, pero es mi opinión)... cada vez vemos más web-app-client con muchísimo core y relegando bastante a una parte service totalmente RESTful. Lo que tenemos que tener en cuenta es que la batalla actual de los navegadores es quien tiene JavaScriptCore más rápido o quien implementa más features de HTML5 o CSS3, lo que nos tiene que hacer pensar que en el frontal podemos (y debemos) ejecutar gran parte de nuestro business.

El futuro lo veo ilusionante, todos los días hecho un vistazo a los drafts que se están creando desde la W3C y hay cosas muy interesantes. Por mi parte tengo especial interés por la WebTV donde se creará un nuevo nicho en el desarrollo de software para este tipo de dispositivos y donde se crearán nuevas experiencias de usuario frente al televisor.

5 consejos que le darías a alguien que se inicia en el mundo del desarrollo.

  • La universidad se acabó, ahora llega el mundo real.

  • Todos los días dedica 1 hora de tu tiempo a investigar/aprender algo que esté fuera de tu área de confort.

  • Estudia/Aprende código de otras personas, para aprender nuevas metodologías/patrones… y así no tender nunca a la subjetividad.

  • Se apasionado en tus proyectos, rodéate de gente apasionada: “Feel Or Die“ Brian Wong

  • Apuesta por las tecnologías web abiertas. HTML5 tiene mucho camino que recorrer y nosotros como desarrolladores tenemos que aportar nuestro granito de arena.

¿Qué avisos le darías a los futuros programadores sobre la industria en donde se van a meter?

Que luchen por sus ilusiones, que si acaban en una gran corporación luchen por mejorar y no estancarse, ya que la vida es muy larga y nadie quiere quedarse repitiendo el mismo trabajo una y otra vez. En el caso de que quieran emprender en un producto/proyecto propio que luchen 4 veces más porque les hará falta.

Las cosas que te motivan en tu profesión, aquello que te hace seguir adelante.

Que a pesar de que llevo cerca de 14 años en el mundo del software profesional, me siento un “newbie”... todos los días hay cosas nuevas que aprender, todos los días tengo que hacer un piloto para investigar una nueva característica o tecnología, todos los días son un nuevo reto.

Si no fueras desarrollador de software serias…

Antes de tener un ordenador en mis manos quería ser Pediatra… pero creo que ahora si tendría que empezar de cero me dedicaría a algo relacionado con la creatividad y el diseño… lo dejo abierto…

Peticiones a los Reyes Magos para 2012.

  • Que el próximo año sea un año de oportunidades y no de recesiones

  • Que la gente vea que HTML5 es mucho más que bordes redondeados,

  • Poder tener más tiempo para disfrutar de la vida

Más información | LungoJS Web
En GenbetaDev | Lungo.js, framework para hacer WebApps

Portada de Genbeta