>

Entrevista a Javier Jiménez @soyjavi - lungojs y quojs

Miquel Camps Orteza     Entrevistas    30/12/2011


¿Te puedes presentar? nombre, edad, ciudad, blog, twitter...

Nombre: Javi Jiménez Villar Edad: 31 Años Ciudad: Bilbao Blog: ...uhmmm... hace un tiempo tuve uno... Twitter: @soyjavi

¿Cómo te entró la curiosidad por programar? ¿Cuál fue tu primer lenguaje? ¿Cómo aprendiste por tu cuenta o con algún curso?

A la tierna edad de 11 años cuando gracias a mi padre trajo a casa un precioso 286 a 20mhz donde empecé a jugar con Basic, el cual aprendí por mi cuenta buscando documentación en las bibliotecas (por aquel entonces no existía internet en los hogares).

¿Recuerdas cual fue tu primera pagina web?

Si! Como buen fan de Star Wars me hice un site con frontpage 1.0 en el que recorria toda la historia de Star Wars (Cap. IV, V y VI) con una musica de fondo MIDI. Una "frikada" :)

¿Nos puedes hablar sobre lungojs? ¿Qué es? cuando viste la necesidad y empezaste con el desarrollo? que ventajas tiene respecto jquery mobile?

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 SDKJava, 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”. ¿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 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).

¿Cuanto tiempo estuviste para lanzar la primera versión?

Empecé con el proyecto en Febrero del 2011 y pasó por varias fases antes de que en Noviembre lo hiciese público. Estuve buscando la forma de que desarrollar con LungoJS fuese sexy a la vez que semántico (si, los lenguajes pueden ser sexys).

¿Qué tal se integra lungojs con phonegap? ¿Hay alguna aplicación disponible en la appstore o market de google?

A las mil maravillas (risas). Claro hay varias aplicaciones, tal vez os pueda interesar echar un vistazo a wall-app una app que hicimos en tapquo en mayo del 2011 para demostrar las capacidades de HTML5 (con una versión muy BETA de lo que en un futuro sería LungoJS).

Tu último proyecto es quojs ¿Qué es? ¿Cuando viste la necesidad y empezaste con el desarrollo? ¿Qué ventajas tiene respecto jquery u otros frameworks javascript?

QuoJS es un reto personal (otro mas) para compaginar con el proyecto LungoJS... su necesidad la via desde que este estaba en fase embrionaria. Pero como estaba solo en el desarrollo no podía abordar ambos proyectos, ahora que LungoJS es estable puedo dedicar más tiempo al planteamiento de QuoJS. El gran problema de usar librerias como Jquery en desarrollos mobile es que son librerias sumamente grandes y destinadas a entornos Desktop. Estudiando un poco estadísticas de uso de Jquery me di cuenta que la mayoría de los desarrolladores que usan esta libreria, usan lo típico: selectores, manejador de clases, peticiones ajax... y que habia muchisima funcionalidad "core" que no se utilizaba. Bajo esta premisa estoy desarrollando QuoJS; pequeña (8kb), manejable, semantica y sencilla.

¿Que opinas de las apps nativas vs web apps? ¿Crees que un dia vamos a dejar de usar apps nativas y todo va ser web, html5 o lo que venga por delante?

Ya lo dijo Steve Jobs, en la presentación del primer iPhone (ese que no llego a España): "Las Apps serán en el navegador". El caso es que lo unico que no supo decir es cuando sería, yo creo que poco a poco y gracias a HTML5 nos vamos acercando a hacer lo mismo que las Apps Nativas Típicas. Si revisamos un poco el contenido de las aplicaciones que existen en las Stores, actualmente se podrían realizar con HTML5 siendo de esta manera una forma de unificar desarrollos y no tener que estar desarrollando con cada SDK. Esta claro que actualmente no sirve para todo, pero por ejemplo en el mundo de los videojuegos ya hay empresas como Ludei.com que están preparando un framework como es CocoonJS para desarrollar bajo HTML5 y generar aplicaciones nativas para las diferentes plataformas.

¿Qué herramientas usas diariamente? ¿Algún IDE en especial?

Antes era un enamorado de TextMate (MacOs) pero al final me pasé a Sublime Text 2, ya que me da mucha más flexibilidad en el desarrollo y ademas de que tiene un par de features que me encantan (como pueden ser el fullscreen + no distraction). Otras herramientas que suelo usar bastante es CSSEdit2 (CSS), Closure Compiler (JavaScript), NirvanaHQ (GTD) y GitHub.

¿Qué blogs o usuarios de twitter sigues para estar al día del mundo de la programación?

Un poco de todo, intento ser bastante selectivo con mis follows en Twitter, tal vez podría destacar a estos 8 twitteros: Internacionales:

Nacionales: