Friday, August 15, 2014

Naddoddr



Naddoddr
Open Sourcing
AngularJS
Estado Actual







Naddoddr

Naddoddr era un vikingo al que las tierras noruegas le parecían demasiado calientes para vivir, supongo que gracias a esta premisa y su espíritu aventurero decidió meterse a navegar a zonas más frescas descubriendo así Islandia.

Mi novia es bastante aventurera y todas esas cosas de viajar le motivan mucho, por esta razón llevaba tiempo detrás para hacerle un regalo, ha sido recientemente cuando he podido ofrecérselo y es un vinilo de Europa para ponerlo en casa y poder registrar nuestros viajes.



Pensando en cómo gestionar toda la información que queremos mostrar/consultar preveía que una pared no iba a ser suficiente así que ya desde hace tiempo me venía rondando la cabeza de hacer una aplicación para poder gestionar estas Aventuras. Podemos tener algo de información en el mapa del salón pero si alguien quisiera saber más de un viaje concreto o ver fotos pues pudiera meterse en esta aplicación.


Open Sourcing

Una de mis metas de este año es, como ya he comentado en otras ocasiones, liberar código. Quiero compartir mi código aunque en algunas ocasiones me de algo de vergüencica.

Por esta razón se puede consultar en el repositorio de github así como consultar las fases de la evolución desde el principio en la página del proyecto, a lo largo del desarrollo espero que cada Etapa vaya a mejor.

En esta ocasión de hecho estoy haciendo un esfuerzo extra y estoy registrando todos los enlaces que visito a raíz del proyecto, algunas son ideas que se me pasan por la cabeza, otras la respuesta a uno de los problemas que me surgen y otras tutoriales y ejemplos que consulto.

Debido a la naturaleza Open Source quería que todas las herramientas utilizadas cumplieran esta premisa, si encontrara algún impedimento durante el desarrollo evaluaría de manera reflexiva ver si algo no libre pudiera hacer mejor el proyecto pero en principio voy a evitar cosas cerradas.



De esta intención nace un nuevo campo de profundización que es el proyecto OpenStreetMap y toda su comunidad en detrimento de Google Maps, la verdad es que los primeros días andaba algo perdido pero me he quedado fascinado con todo el trabajo que hay detrás del propio proyecto como la de herramientas que hacen que sea una herramienta increíble.


AngularJS

Mi primera idea fue hacer un proyecto con CakePHP, pero la deseché porque quería hacer algo que una persona pudiera tener en su ordenador sin la necesidad de tener una dependencia de un servidor externo (obviando dependencias a temas de mapas, búsquedas, etc.), al mismo tiempo que quería que la gente que viniera a casa pudiera consultar desde su móvil. La verdad es que no tenía nada claro como hacerlo ni que usar.



Justo estaba en esos días cuando un compañero me recordó AngularJS diciéndome que había realizado un tutorial que había en la página oficial y que estaba bastante chulo. Conozco la existencia de Angular desde que lo anunció Google, ya en su momento no sabía cual era su objetivo, y hace uno meses debido a la popularidad que está adquiriendo volví a visitarlo pero no salí con nada que me llamara la atención. Aprovechando este comentario del tutorial y la ganas de saber que aportaban de verdad estos frameworks en javascript decidí darle una oportunidad.

Tras hacer el tutorial "Shaping up with Angular JS" me quedé realmente fascinado, con los básicos ejemplos de la documentación oficial no podía imaginarme todo el proyecto que hay detrás. Realicé algún que otro tutorial, leí algún libro recomendado por gente de la comunidad y el proyecto echó a andar.

La idea es que el proyecto tenga una versión para tener en local intentando que sea lo más independiente posible, veremos como va esa parte. Pero gracias al diseño de las aplicaciones con frameworks javascripts veo a medio/largo plazo la posibilidad de ponerlo como servicio web. Es más, voy a intentar hacerlo sin un backend propio usando tan sólo un par de servicios de Amazon, como digo esto es medio plazo y todavía no he indagado más allá.

A través de los tutoriales y demás que iba viendo angularjs me ha hecho introducirme en otras tres herramientas. Yeoman, Grunt y Bower. Cada una de ellas proyectos completos y Open Source. Está claro que cada vez más los desarrolladores estamos sobre hombros de gigantes para hacer nuestros pequeños proyectos.




Estado Actual

Los primeros commits del proyecto se llevaron a cabo el día que se celebraban los 100 años de la causa que derivó en la Primera Guerra Mundial un 28 de Julio. Antes de irme de vacaciones un 15 de Junio me propuse el hito de tener un versión Alfa el 31 de Agosto. Esta versión sería una proyección básica de todo lo que tengo en la cabeza para valorar si mis capacidades técnicas me permiten plasmar lo que mi cabeza me dice a través de ideas inconexas.

El día 14 de Agosto ya tenía una versión pre-Alfa que me gusta bastante. Prácticamente tengo que pulir todos los aspectos de la aplicación pero creo que sientan las bases de lo que puede ser un gran sitio para registrar los viajes.



¿Voy a poder llegar al hito del 31 de Agosto? Pues no sé si me habré quedado corto, pero actualmente tengo solventado el problema de cálculo sobre geopuntos y la visibilidad de rutas sobre mapas que era uno de los puntos que tenía en mi cabeza que iban a ser duros. Empezar la aplicación con Angular fue duro, además de que quise meterme en tema de tests desde el principio, pero actualmente tengo lo que considero una buena base de desarrollo y cuando tengo que hacer alguna cosa nueva todo parece dejar meterse mano.

Las funcionalidades básicas se resumen en el listado de aventuras, todo mockeado/hardcodeado en código, y una vista de edición no funcional(no registra los cambios en ningún sitio) pero deja interactuar y da pie a ver como va a ser el comportamiento.



Me faltaría hacer persistir los datos de manera local y creo que no va a ser complicado así como la vista concreta de cada aventura, para esto último conozco un proyecto muy interesante Odyssey de CartoDB(una empresa española dedicada a la visualización de datos sobre mapas cuyas herramientas son usadas por grandes empresas como Twitter o el WSJ) así que si no tengo muchos problemas para integrarlo espero poder usarlo y beneficiarme de tan estupendo trabajo.

Tras la desarrollar la parte técnica me tocará un trabajo complicado para mi como es el del diseño. Pero bueno, espero poder enganchar a alguien que me ayude con este apartado.

No comments:

Post a Comment