Hace unos meses, Rebble presentó su primer hackathon. Rebble es la empresa que surgió tras la desaparición de Pebble y que mantiene vivos sus sistemas a día de hoy. Ya no se fabrican los relojes, pero sus sistemas se mantienen funcionando después de más de 6 años. La idea del hackathon, era juntar a desarrolladores para crear watchfaces y aplicaciones después de tanto tiempo y de esta manera, revivir un poco la comunidad.
Hace años, hice varias aplicaciones para Pebble, y por los viejos tiempos, decidí inscribirme.
Normalmente, los hackathones son temas cerrados. En el momento del comienzo, se explica la temática y los participantes tienen un tiempo definido para crear 'cosas' que cuando se acaba el tiempo se valoran por un jurado y se deciden los ganadores.
En el caso, del hackathon de Rebble, ya que no sabían cuánta gente iban a tener, decidieron ser más laxos en la temática y únicamente se pidió 'desarrollar algo cool' para que lo usaran los usuarios de Pebble. La duración era de un fin de semana completo y la aplicación o watchface se daba por válida si se subía a la tienda de aplicaciones de Rebble . Por cada publicación en la tienda, el creador recibiría stickers de Rebble como regalo y para las mejores aportaciones, habría premios especiales que no se especificaban. No sonaba mal.
En mi caso opté por reescribir la primera aplicación que hice para Pebble: Bilbikes. Una parte de la última versión de la aplicación, estaba alojada en Azure, en una suscripción que ya no estaba disponible, asi que la app no funcionaba desde mediados de 2019.
Para este proyecto, hice una API que servía de 'pasarela' para estandarizar los datos desde las fuentes. En su día, servía datos de los sistemas de bicicletas de San Sebastián, Málaga y Bilbao, todos en el mismo formato. La API la desarrollé para facilitarme la vida, todas las apps, bots o web las conectaba a esta API. Llegó un momento que llegué a tener 3 aplicaciones de Fitbit, una de Pebble, un bot de Twitter y un chatbot de Facebook usándola.
Mis pasos a seguir para el Hackathon eran:
Actualizar la API a .NET Core 3.1 y publicarla en una nueva suscripción de Azure.
Reescribir la app de Pebble para que obtuviera los datos desde la 'nueva' API
Crear el menú de estaciones de manera dinámica para evitar tener que hacer cambios en la aplicación si se añaden y/o modifican estaciones desde la fuente de datos.
Publicar una nueva versión de Bilbikes en la store de Rebble, posiblemente la última de la historia.
Oficialmente, el hackathon comenzó el viernes a las 15:00 (GMT+1). Todo el Hackathon se basó en el horario (GMT+1) ya que el organizador residía allí. La gente de Rebble creó varios canales en su server de Discord para preguntas y seguimiento / presentación de proyectos y eso dió menos aspecto de competición y más de comunidad, unos ayudando a otros.
En mi caso, el hackathon empezó oficialmente el sábado, aunque es verdad que unos días antes actualicé la API a .NET Core 3.1 y la publiqué en mi suscripción de Azure. No fueron muchos cambios pero es cierto que los hice antes. Ahí me di cuenta que Málaga ya no tiene un sistema público de alquiler de bicicletas y que San Sebastián había cambiado la forma de compartir datos. Borré más código del que añadí.
Una vez con la API en .NET Core 3.1 y publicada en Azure, me puse a reescribir la app de Bilbikes. Nunca había desarrollado nada para Pebble/Rebble instalando el SDK, siempre había usado el CloudPebble pero con la desaparición de Pebble, CloudPebble desapareció con él. La gente de Rebble, compartió una máquina virtual con todo el entorno preparado para desarrollar y la verdad es que me funcionó fenomenal.
El proceso de reescribir la app no me llevo mucho tiempo, en los últimos 9 años he reescrito parcial o totalmente la aplicación unas cuantas veces, y la lógica es muy sencilla: se llama a la API, se reciben los datos y se muestran por pantalla. Esta vez, decidí hacer el menú de estaciones dinámico, es decir, el menú se crea en base a las estaciones disponibles en la fuente de datos. Si se añaden nuevas o se renombra, el menú refleja esos cambios y evita tener que hacer nuevas actualizaciones en caso de tener el listado hardcodeado. Una única llamada que recibe todos los datos y los muestra. En caso de que cambiase la estructura de la fuente de datos, tendría que hacer cambios en la API pero no en la app, mejor.
Una vez hecho el desarrollo, solo quedaba crear los screenshots para store y subir la nueva release. Llevaba años sin subir nada a Pebble/Rebble y cuando entré al portal mis aplicaciones no aparecían, lógicamente, no estaba matcheado mi usuario actual con el usuario que usaba en Pebble. Escribí por Discord a la gente de Rebble y en unos minutos enlazaron las dos cuentas para tener ya acceso a todas mis aplicaciones.
Tras conseguir el acceso, generé el nuevo paquete con la release, la subí a la tienda y al momento ya estaba disponible para la descarga/actualización. El resto del hackathon, estuve ayudando a otros desarrolladores con algunas dudas, y como el resto esperé el momento del final.
Pasaron los meses, y hace unas semanas recibí una mail de la organización informando que había sido seleccionado como uno de los ganadores/finalistas en la categoría de mejor herramienta. Sinceramente, fue una sorpresa. Como premio, aparte de los stickers, me enviaron un Pebble 2 HR+ desde Palo Alto firmado por Eric Migicovsky (CEO de Pebble). Poco después publicaron un post en su blog dando todos los datos y detalles del evento e informando de los ganadores en cada categoría.
Como resumen, puedo decir que ha sido una experiencia increíble. Es cierto que no ha sido un hackathon al uso, pero volver a conectar con la comunidad de Pebble después de tanto tiempo ha sido genial. Desde la organización ya me han dicho que tienen perfilado la segunda edición, ¿participamos? Quién sabe.
Y hasta aquí llega mi post sobre mi experiencia participando en el hackathon de Rebble. Espero que os haya resultado interesante, si es así, compartidlo, si tenéis alguna duda dejadme un comentario y os responderé lo antes posible. Recordad también que podéis suscribiros y recibir en vuestro correo electrónico cada post para no perderos nada.
Un saludo,