Home »

ΠWEEK: Ghoul Reader

Mi ΠWEEK comenzó con 3 cosas en mi cabeza: un reto, una necesidad y un objetivo.

El reto era hacer una ΠWEEK solo. En las 3 anteriores ediciones he participado en equipos y quería comprobar en primera persona como era le experiencia de hacer una ΠWEEK afrontando el reto solo. Un desafío contra uno mismo y esa temida fecha límite del viernes a las 12:00 cuando se terminan los proyectos.

Por otro lado tenía una necesidad. En Julio del 2013 Google Reader murió y desde entonces no he encontrado un servicio equivalente. He probado otras alternativas como Feedly o The Old Reader pero ninguno tiene el punto que tenía Google Reader de ser sencillo, veloz y sobre todo acceder a él rápidamente.

Por último tenía un objetivo o quizás una sospecha. Las últimas novedades que traen los API’s de HTML5 capacitan a los navegadores a hacer mucho más que lo que hacen ahora. Podemos hacer con navegadores modernos aplicaciones al nivel de aplicaciones de escritorio. Parte de mi ΠWEEK era confirmar esta sospecha y hacer una aplicación de entidad que existiera puramente en el navegador por tanto tenía la restricción de hacer la aplicación puro HTML + Javascript.

Además, a diferencia de los lectores más populares este proyecto sería Open Source de forma que nunca más nadie podrá “matar” este servicio 🙂

Así nació el concepto de GHOUL READER: un lector de noticias RSS utilizando las más recientes tecnologías de HTML5.

Tecnología

Para empezar elegí como lenguaje para este projecto ClojureScript y ReactJS (Om) para la visualización. En mi opinión el modelo de programación que me ofrecen esta tandem de tecnologías son ideales para hacer aplicaciones de forma cómoda al tratarse de un cliente puro navegador.

La primera decisión que tomé es que el proceso de refresco de las noticias tendría que realizarse en “background”. Usando la tecnología de Web Workers existe un hilo concurrente con el navegador que realizará la lectura y procesamiento de las noticias que van llegando. Trabajar con Web Workers la verdad es que es muy cómodo, creo que la potencia que proveen va a ser de gran uso en el futuro cercano de los navegadores.

El siguiente punto es que estas noticias tendrán que ser persistidas dentro de algún sitio del navegador. Esta información se guarda en una base de datos orientada a objetos que existe en los navegadores más recientes: IndexedDB. He de decir que el API que proveen es muy poco intuitivo pero al menos en Chrome las herramientas para consulta están muy bien.

El desarrollo de la ΠWEEK

Como excepción, sabiendo que haría la ΠWEEK solo empecé parte del proyecto antes del comienzo oficial. En concreto no quería dedicar el tiempo “útil” en pegarme con los estilos visuales y el CSS. Por lo que esto lo realicé con anterioridad (aunque tuve que retocarlo varias veces durante la semana).

El desarrollo de la semana fue a muy buen ritmo aunque con más intensidad que cuando estás en un grupo. Tienes que desarrollar todas las tareas (fáciles y difíciles) del proyecto y tener en mente lo que quieres enseñar el viernes.

Tuve un pequeño problema el martes cuando me di cuenta que los WebWorkers no podían usar API’s nativos para parsear XML ya que estos API’s dependen del DOM aunque no lo usen. Esta restricción me supuso un problema pero lo pude solventar con una biblioteca externa.

Por lo demás la única funcionalidad que quería desarrollar que no me dió tiempo a desarrollar fué la importación de ficheros OMPL.

ghoul1

Conclusiones y futuro

En conclusión la experiencia ha sido fenomenal en todos los aspectos. Ha supuesto un gran reto el realizar la ΠWEEK solo y el proyecto creo que sinceramente tiene un gran potencial. Aunque, por supuesto, esto es sólo el primer paso queda bastate antes de tener una versión “feature completed” pero tengo el firme propósito de continuar con el proyecto hasta al menos tener una primera versión con las funcionalidades del difunto Google Reader.

Si quieres comprobar el resultado no te cortes y visita la web del proyecto: http://alotor.github.io/ghoul-reader o bien al repositorio http://github.com/alotor/ghoul-reader