Skip to main content

Mi primera aplicación para Android


English version

Después de varios meses de largas sesiones escribiendo código en casa después del trabajo (reconozco que también tomando más bebidas energéticas de lo recomendable), por fin terminé y he publicado la versión 1.0 de mi primera aplicación para teléfonos Android.


Mi motivación

El primer motivo que se le suele venir a la gente a la cabeza para hacer cualquier cosa es el dinero, pero en este caso esa no es la razón.
Dudo mucho que esta aplicación me convierta en millonario, de hecho, de momento me está costando dinero, aunque para ser sincero, he tenido que invertir muy poco efectivo de momento.

Gracias a las aplicaciones de código abierto y a la standarización de la computación en la nube, el dinero no es un obstáculo para crear y publicar una aplicación (de hecho, puede que algún día dedique una entrada en este mismo blog a este tema).
Lo que se necesita es ciertas habilidades técnicas pero lo más importante es perseverancia y ganas de aprender y experimentar.

Así que mi motivación era simple: necesitaba un reto.

Permitidme aclarar que mi trabajo diario en la oficina como programador de aplicaciones back-end me proporciona cantidad de retos, pero necesitaba un reto fuera de la oficina.

Hay a quien le da por empezar a entrenarse para correr una maratón, pero en vez de eso, yo decidí desarrollar una aplicación para Android.

Pensé que me ayudaría a mejorar como programador, y ciertamente así está sucediendo.

Cada decisión que tomo (ya sea de diseño o de implementación), cada nueva API que tengo que usar, cada modelo de datos que creo y también cada error que cometo, forma parte de un enriquecedor proceso de aprendizaje.


Entonces, ¿en qué consiste la aplicación? 
La aplicación permite compartir décimos de la Lotería Nacional, en este vídeo lo explico detalladamente: vídeo
La idea se me ocurrió escuchando como mi padre llamaba por teléfono cada Navidad a sus hermanos que viven en distintas ciudades para decirles que quería compartir con ellos la mitad de un décimo (10 euros actualmente) para el sorteo de El Gordo. Entonces mi tío, al otro lado del hilo teléfonico, tenía que apuntar el número y el importe de la "participación" que mi padre le estaba dando en una hoja de papel. A cambio mi tío compartía la mitad de un décimo para el mismo sorteo, comprado por él, con mi padre, y en este caso, mi padre es el que apuntaba el número en un papel.

Pensé que este sistema "analógico" tenía bastantes inconvenientes:
- Los papeles con el número apuntado son fáciles de perder
- El día del sorteo se ha de comprobar manualmente y uno a uno si los números han sido agraciados.

Me di cuenta que una aplicación podría hacer todo este proceso mucho más sencillo y fiable.
La aplicación ya está disponible en la Play Store, así que si quieres, instálatela en tu teléfono Android (lo siento pero no hay versión para iPhone de momento), es totalmente gratuita y no contiene publicidad.

Características técnicas
Cuando comenté la idea de crear una aplicación para Android con algunos compañeros, me recomendaron utilizar Firebase.
Me dijeron que permite crear aplicaciones de manera rápida y sencilla, que no se basa en el tradicional paradigma cliente/servidor y que reduce la complejidad al proporcionar una abstracción de los detalles relacionados con la sincronización de los datos.
La verdad que suena muy bien, y seguramente le daré una oportunidad en el futuro, pero quería realizar mi primera aplicación a la manera "tradicional", y Firebase ni siquiera permite el uso de SQL.

Quería demostarme a mí mismo que la misma tecnología que uso diariamente para desarrollar aplicaciones financieras que corren en enormes servidores, podía ser utilizada también para aplicaciones que corren en pequeños dispositivos móviles.

Además de esto, si me hubiese decidido por utilizar Firebase, mi aplicación sería altamente dependiente de esta tecnología.
Pienso que es mejor utilizar tecnologías de código abierto que no te atan a un proveedor específico.

Y aún más, el caso es que Android utiliza una base de datos embebida de tipo SQLite, por lo tanto, si tengo que usar necesariamente SQL en el cliente, ¿por qué no usar SQL en el servidor también?

Así que éstas son los principales componentes y librerías utilizadas en la aplicación:


Pues esto es todo lo que quería contar en mi primera entrada del blog en español, aún me quedan muchas cosas que contar, así que espero seguir escribiendo regularmente.

Comments

Popular posts from this blog

Complete (working) code to verify an Android app user phone number through SMS

Update from Thursday September 14th 2017: 
The very same day I posted this (the day before yesterday), I realized that it looked like Google had just made it effectively obsolete


I thought that at least I could claim that I chose a very demanded functionality to blog about, since Google decided to add a new API to provide this very same service.
Even the names are quite similar, I called it "SMS Verifier" and they call it "SMS Retriever".
But after looking into this new Google Services API, I found out that it requires to use a paid third-party service such as Twilio... very disappointing!
So my original post (which follows below) is still relevant after all, since it allows you to verify the user's phone number for free.

Original post: Tuesday September 12th 2017
It was about time for me to give back to the open source community, so I have just pushed the complete (working) code to verify the user's phone number from within an Android app to Github.

When I goo…

Shared Ledger Simulator

I have been interested in the shared/distributed ledger technology (a.k.a. block chain, a.k.a. the magic behind cryptocurrencies) for more than a year already but recently I had finally put real time and effort into it.

And since I believe that the best way to understand something is to get your hands dirty, that is what I have done, after I got a grasp of the core principles (or that is what I thought back then), I decided to code my own shared ledger simulator.

Initially, I also considered to look into the main existing code bases (e.g., the source code of the main/official Bitcoin client/miner or Ethereum's) since they are open source, but seeing code like thisput me off... That file is 3229 lines big!!! Plus it is written in C++.
Do not get me wrong, I truly believe Satoshi Nakamoto (i.e., whoever hides behind that name) is a genius and also a great software developer, but he/she/they for sure did not have readability as their main priority.

I also noticed that some other people h…

You can finally DISLIKE a tweet (and make it count)

(If you don't feel like reading you can watch this video instead)

How many times have you wished there was a "dislike" button in Twitter? (and probably also in any other social network, but I will focus on Twitter in this post).

And I am not referring to this dislike button which is not what you want, since it is just a way to tell Twitter (and no one else) that you would not like to see similar tweets on your feed in the future.

So until Twitter decides to add this highly demanded feature (i.e., a real dislike button), I have come up with a way to dislike a tweet and make it count, so you can share your dislikenesswith everybody and your dislikes can be aggregated with other Twitter users' dislikes.

All you need to do in order to dislike a tweet is to use the hashtag #dislike or just #dlfor short, when replying to the tweet which you dislike. That's it, so simple!

For example, this is the image of a tweet which has two dislikes:

But it would be very annoying if you ha…