APK: Alola Pokedex (QR-Codes)

English

Update: After a name change, the app is once again on the Play Store!

So, today after trying to publish an update to "Alolan Pokedex", i suddenly got a notice from Google Play, stating that my app is suspended for copyright infringement. Really sad for that, sice there are lots of other apps making far worse usage of the Pokemon brand!. Anyway, i decided to make the APK file available here, in case any of you guys want to keep using it, and so my hard work does not get to waste. There are also some nice updates thrown in there that i think you will appreciate.

Français

Mise à jour: après un changement de nom, l’application est de nouveau sur Play Store!

Ainsi, aujourd'hui après avoir essayé de publier une mise à jour de "Alolan Pokedex", j'ai soudain reçu un avis de Google Play, affirmant que mon application était suspendue pour violation de copyright. Vraiment triste pour elle !. Quoi qu'il en soit, j'ai décidé de faire le fichier APK disponible ici, au cas où l'un d'entre vous les gars veulent continuer à l'utiliser, et donc mon travail acharné ne devient pas à perdre. Il ya quelques mises à jour intéressantes là-bas, je pense que vous apprécierez. En outre, vous trouverez tous les noms Pokemon en français!!

Deutsche

Update: Nach einer Namensänderung ist die App wieder im Play Store!

So heute, nach dem Versuch, ein Update von "Alolan Pokedex" zu veröffentlichen, bekam ich plötzlich eine Benachrichtigung von Google Play, behauptet, dass meine App für Urheberrechtsverletzungen gesperrt wurde. Wirklich traurig für sie! Jedenfalls habe ich beschlossen, die APK-Datei hier zugänglich zu machen, falls einer von euch es weiterhin benutzen will und so meine harte Arbeit nicht verlieren wird. Es gibt einige interessante Updates da draußen, ich denke, Sie werden es genießen. Zusätzlich finden Sie alle Pokemon-Namen auf Deutsch!!

Español

Actualización: después de un cambio de nombre, la aplicación vuelve a estar en el Play Store!

Así que hoy, después de intentar publicar una actualización de "Alolan Pokedex", de repente recibí un aviso de Google Play, alegando que mi aplicación se suspendió por infracción de derechos de autor. Estoy realmente triste por eso, pues hay muchas otras apps que hacen peor uso del contenido de Pokemon en la tienda! De todos modos, decidí hacer que el archivo APK este disponible aquí, en caso de que uno de ustedes quiera continuar usandolo, y para que mi trabajo no se pierda. Hay algunas actualizaciones interesantes por ahí, que creo que disfrutarán.
Download APK

Mi App Android en el Play Store: Alolan Pokédex

Recientemente he desarrollado y publicado una app muy sencilla, pero práctica para los jugadores de la más reciente entrega de Pokémon:  Sun y Moon. Se trata de una aplicación de referencia, que lista los diferentes Pokemon capturables en ambos juegos, junto con su respectivo Código QR.

Funcionalidad QR en Sun/Moon

El escanear un Código QR con la Cámara del Nintendo 3DS, permite obtener el registro del Pokemon respectivo, sin necesidad de capturarlo. Esto, entre otras cosas permite que se vea la ubicación exacta donde podemos encontrar a esa determinada especie en su forma salvaje, para poder capturar uno propio.

La idea de la aplicación surgió mientras hacia uso de esta misma característica, pero consultando desde el álbum del sitio web ImGur, donde se publicaron originalmente estos códigos. El proceso de buscar el QR deseado usando este sitio, se me apetecía tediosa y complicada: No existe manera de cargar todas las imágenes a la vez en la ventana del navegador, por lo que una búsqueda con CTRL+F no siempre arrojaba el resultado esperado.

El álbum en Imgur

Fué entonces cuando se me ocurrió descargarlas todas. Pero había un problema: Son mas de 400 imágenes y el nombre del archivo es un texto aleatorio que no sirve para identificar al Pokemon. Y el proceso de guardar manualmente 400 imágenes de internet una a una simplemente no era una opción.

Guardar uno por uno? No gracias!

Como todo buen programador, sabía que debía haber una mejor manera de hacer esta tarea, sólo hacía falta encontrar la herramienta. Fue entonces cuando pude darme cuenta de algo muy importante: El atributo ALT (descripción alternativa) de cada una de las imágenes contiene el número, seguido del nombre de cada Pokemon.  Fue entonces que lo tuve claro. Solo necesitaba una herramienta que permitiese descargar todas las imágenes de un sitio web, usando su atributo ALT como nombre de imagen.

Como se puede ver, el SRC de la imagen es un texto al azar. Pero el ALT es justo lo que necesito!

Luego de buscar en la web, me di cuenta que muchas otras personas han tenido esta necesidad en el pasado, pero sin embargo no existe en el mercado una herramienta que lo haga. Debía hacer mi propia herramienta…

Fué en este momento que encontré una extensión del navegador Google Chrome que permite descargar todas las imágenes de una página web. Y lo mejor: Es de código abierto!. Mi misión era sencilla: Modificar la extensión para que al descargar, en vez del nombre original del archivo, use el nombre del atributo ALT de la imagen en cuestión.

«Image Downloader» en la Chrome Web Store

Asi que aquí estaba, con el código fuente del proyecto original , ahora bifurcado a mi repositorio local. Tuve que aprender cómo se desarrolla una extensión para navegador: El acceso al DOM, el uso de la configuración, el manejo de las acciones, la interacción entre módulos y la instalación local en modo desarrollador, entre otros aspectos muy técnicos.

Al final, solo necesité crear un arreglo con el texto ALT de cada imagen al cual el API tiene acceso, para luego pasarlo a la función que genera las descargas automáticas, como parámetro ‘filename'.

La función que captura el atributo ALT en todas las imágenes.

Para quienes están interesados en ver todos los cambios requeridos, o descargar mi versión de esta extensión. (Que he llamado ALT Image Downloader), el código esta en mi GitHub, desde donde también se pueden ver las diferencias con la rama original.

Una vez que tuve las imágenes descargadas justo como las necesitaba, solo bastó editarlas, generar un listado, crear una base de datos, construir un API, subir todos los recursos al hosting y por supuesto: Desarrollar y publicar el App Android!. Sin embargo, esos detalles los comentaré en la entrega número dos de ésta entrada.

Captura del App: Alolan Pokedex

«Gotta catchem alljust not by hand».

Mi juego de Spaceships en CodeSkulptor

Hace bastante tiempo, termine mi primer MOOC en Coursera: Interactive Programming in Python. Lo recuerdo como uno de los mejores básicamente por la manera como los proyectos semanales crecían sobre la base del anterior.

Recientemente encontré el código usado en mi entrega final. Es nada más y nada menos que mi versión de Asteroids en CodeSkulptor. Para correrlo, solo hace falta ir aquí y hacer click en ►

Spaceship Game
Spaceship corriendo en Chrome!

Programacion Funcional en Python

Como parte de mi colaboración con el grupo de Meetup de PyData Panama, he creado una pequeña presentación a manera de introducción a los conceptos de la programación funcional que pueden ser usados en Python.

Además, como compañía, adjunto el excelente libro de Stephen Lott, «Functional Python Programming» publicado por PACKT Publishing.

Functional Python Programming – Steve Lott

Acceder data en HDFS desde Python

Cuando se trabaja con Big Data, independientemente de si usamos Spark o trabajos Map-Reduce, generalmente nos encontraremos con el sistema de archivos distribuidos de Hadoop, HDFS.

El problema con HDFS siempre ha sido que acceder/modificar la data es un proceso tedioso, que casi siempre involucra realizar comandos dfs en una consola. Esto dificulta muchísimo automatizar scripts (a excepción de shell scripts) para realizar nuestras consultas.  Por esta razón, el equipo de Hadoop creó HttpFs, el cual es un portal hacia HDFS haciendo uso de servicios Rest que corren en el Namenode.

hdfsstatus

Para Python, les recomiendo el excelente proyecto Open-Source HdfsCLIEl mismo no es más que una atadura al propio servicio de HttpFS (y WebHDFS) que provee la mayoría de los métodos relevantes a través de un API y una interfaz de CLI.

La documentación está disponible en: https://hdfscli.readthedocs.io/en/latest/

Panama PyData 2: Spark vs Pandas Dataframes

Comparto con los asistentes al Meetup del 24 de Septiembre de PyData Panama, la presentación que acompaña mi taller: Pandas vs Spark Dataframes – Una introducción a las arquitecturas distribuidas.

Los notebooks de iPython que acompañaron el taller están disponibles en mi repo en GitHub: https://github.com/sansagara/Panama-PyData

PySpark Talk
PySpark Talk

Los invito entonces a unise al grupo  http://meetu.ps/e/C15vZ/xHDxP/f

Los pasos de la metodología de desarrollo ‘Agile’ y sus responsables

El método de desarrollo de software ágil intenta reducir la complejidad de los proyectos de software actuales e incrementar su flexibilidad. El desarrollo de software ágil tiene muy en cuenta los cambios solicitados y responde de manera flexible a los nuevos requisitos surgidos durante el transcurso del proyecto.

Los pasos del proceso Agile son los siguientes:

  • Diagnóstico (Product Owner, StakeHolders, Agile Manager):  Incluye el análisis de los requerimientos y la tormenta de ideas.
  • Diseño (Product Owner, StakeHolders, Scrum Master):  Incluye la documentación del diseño y el prototipado.
  • Desarrollo (Scrum Master, Team Members):  Incluye la construcción, las pruebas, la revisión y la clarificación. Es un proceso iterativo.
  • Aseguramiento de Calidad (Scrum Master, Team Members):  Incluye la identificación y la resolución de defectos.
  • Despliegue (Team Members, Product Owner):  Incluye la puesta en producción y el soporte post-venta.
Pasos de Agile
Pasos de la metodología Agile.

 

Notas de Preparación para el examen de certificación de Linux Foundation

En un Google Hangout con varios candidatos y próximos certificados por la Linux Foundation como «System Administrator», me fue compartida por su autor el siguiente trabajo de recopilación (Podría llamarse manual) de los conocimientos básicos que debe tener quien tome el examen.

Linux Foundation Certified System Administrator (LFCS) [PDF, 900Kb]