Una aplicación para almacenar coordenadas GPS con MIT App Inventor

person wearing beige sweater holding map inside vehicle

Desde hace tiempo tenía la inquietud de hacer una aplicación como esta. Claro que existen otras aplicaciones que permiten almacenar coordenadas GPS como puntos de Interés para consultarlos posteriormente, pero las que conozco son de paga y realmente no requiero mucha sofisticación.

La lógica del programa es muy simple y es más o menos así: Mostrar mis coordenadas actuales, con la opción de ponerle un nombre y mostrarla en la pantalla.

Tres botones, uno para agregar esos valores en una lista llamado Guardar. Otro llamado Limpiar que borrará todos los elementos de la lista. Uno más de nombre Compartir que dará la posibilidad de transmitir esa lista a otras aplicaciones instaladas en el teléfono.

MIT App Inventor tiene dos partes. Una llamada Diseñador en donde se agregan y configuran los elementos de la interfaz de usuario. Y otra llamada Bloques en donde se programa colocando bloques especiales que utilizan o modifican los elementos puestos en el Diseñador.

Al principio tarda uno en acostumbrarse, pero con algo de paciencia todo fluye.

Un vistazo al diseño de la interfaz.

Lo primero, al abrir la aplicación, inmediatamente intentará averiguar nuestra posición y la mostrará en forma de coordenadas GPS, latitud y longitud.

La precisión es importante, porque te dará una idea de lo precisa que es la lectura. Por ejemplo una precisión de 1000 metros podría ser útil, pero vas a estar buscando en el mapa el lugar que intentaste marcar. Una precisión de 8 a 4 metros es buenisima. La aplicación actualiza todo cada 2 segundos.

Para mi la altitud es un plus, pero puede ser un dato relevante para alguien más.

Actualización de las coordenadas cada 2 segundos.

El botón de Guardar es todo un caso. Es el bloque más grande del proyecto porque hace la unión de mucha información para agregarla a una lista de texto.

Tardé un tiempo en averiguar cómo agregar más “huequitos” al bloque unir, con pena tengo que confesar que al principio hice una hidra de estos bloques concatenando y volviendo a concatenar no no no una cosa horrible.

Como que si queda claro ¿no?

Un bonito detalle es la construcción de un URL para visualizar el punto marcado en Google Maps ehhhh que tal.

El objeto TinyDB es una cosa interesante. Sirve para almacenar la información de los puntos aún después de que se cierre la aplicación. De esa forma aparecen todos los puntos almacenados hasta que se presione el botón Limpiar.

Tengo un bug en el botón Compartir , no se si les pasará lo mismo a ustedes. La primera vez que toqué el botón me aparecieron todas las aplicaciones disponibles en mi teléfono para compartir el mensaje y en ese momento elegí a Telegram. Pero después ya no me deja elegir e inmediatamente abre Telegram y ya … no hay otra opción y te aguantas.

El bloque de Compartir es muy sencillo y es el único que me da problemas.

No es la primera vez que hago algo con el MIT App Inventor (véase Sonidos Divertidos) pero este proyecto si es un poquito más complejo.

Es austero, pero funciona y es perfectible. Además es una buena aproximación para aprender a desarrollar aplicaciones que se pueden ejecutar en un teléfono o tableta.

Ya esta disponible en la galería de aplicaciones como Puntos GPS para que puedan usarlo, estudiarlo y modificarlo a su gusto.

¡Páseleeeee Páseleeeeee! Lleve su bonita aplicación vaciladora, para el viaje, la excursión, pa turistear, la güerita, bara bara baraaaaaa.

Algunas notas sobre OpenVPN en pfSense para conexiones Roadwarrior

Con la pandemia preparé mi servidor pfSense para aceptar conexiones OpenVPN mediante conexiones Roadwarrior para trabajo en casa.

Afortunadamente no se ofreció tanto, pero más vale estar preparado.

Ahora en este artículo no vas a encontrar las instrucciones para la configuración de OpenVPN, mi lector dirá – ¿O sea como? , si me explico.

En su lugar les voy a mostrar este video del maestro Pedro Moreno que explica a detalle y paso a paso la configuración de OpenVPN.

Ese fue el tutorial que yo seguí para la configuración. Y funcionó perfectamente durante mucho tiempo … hasta que dejó de hacerlo 🙁

OpenVPN dejó de funcionar

Creo que fue a partir de la actualización de pfSense a la versión 2.5 en la que la VPN dejó de funcionar.

Simplemente el servidor rechazaba las conexiones, no había manera de lograr una conexión con una configuración que sin moverle funcionó perfectamente por más de un año.

Investigué en algunos foros sin mucho resultado. Intenté validar algunas hipótesis sin mucho éxito.

Me estaba quedando sin ideas, así que decidí probar algo un poco arriesgado.

Control Z

Deshacer el tutorial, para volverlo a hacer paso a paso.

Primero y antes que nada hay que hacer un respaldo de la configuración DiagnosticsBackup & Restore (Yo lo tengo en inglés porque la traducción en español para mí es algo confusa).

Entonces con mucho cuidado, hay que empezar a eliminar las Reglas del firewall , los alias, el redireccionamiento de puertos (los pasos del 5 al 10 del video).

La creación de usuarios y los certificados no fue necesario rehacerlo (pasos 3 y 4) los dejé tal y como estaban.

Cuanto logres este punto, te recomiendo que hagas otro respaldo, una especie de checkpoint por si necesitas regresar a este punto.

Ahora si, a repetir los pasos a partir del Wizard poniendo atención a todos los detalles.

Supongo que si usted sigue este tutorial por primera vez funcionará bien, pero tenga en consideración lo que sigue.

Cambiar la aplicación de Android

Bueno, ahora todo debería de funciona ¿cierto? después de todo para eso se deshizo y rehízo el tutorial ¡PUEEES NO ES CIERTO! ahhhhhhh

Por alguna razón la aplicación para android recomendada en el tutorial tampoco funcionó y no lograba conectarse.

Un detalle por demás interesante ya que se trata de aplicación OpenVPN “oficial” y que antes de la actualización que mencioné en un principio funcionaba perfectamente.

En la misma página de OpenVPN de pfSense, en la opción Client Export hacen la recomendación de una aplicación diferente para Android que se llama OpenVPN for Android de Arne Schwabe con una interfaz de usuario más espartana, con una multitud de opciones de configuración pero que funciona muy bien.

Esta es la buena.

Conectarse a OpenVPN desde Linux

Es curioso, el tutorial en video muestra como conectarse desde Android, Windows pero no desde Linux.

Al principio intenté con el Network Manager (networkmanager-openvpn) que viene integrado en mi instalación de Manjaro ¿pero que creen? no funciona. Probé ajustando un montón de parámetros pero no … no se conecta ¿Qué raro no?

No, esto tampoco funciona.

Al final lo más simple es lo mejor. Instalé el paquete openvpn disponible en mi instalación de Manjaro.

Descargué la configuración en Client Export que dice Bundled Configuration Archive.

Descomprimí los archivos en una carpeta local. Son 3 archivos, uno con extensión .ovpn, otro con .key y el último .p12.

Abrí una terminal en esa carpeta y teclee lo siguiente:

sudo openvpn --config archivo.ovpn 

Me pregunta por mi nombre de usuario en la VPN y su contraseña y si todo sale bien, estaré conectado a mi servidor y tendré acceso a los recursos de esa red como si estuviera localmente.

Se ve feo, pero funciona muy bien 🙂

Sólo tengo que minimizar la terminal, Si quiero termina la conexión con presionar Ctrl + C se cierra.

Si es un asunto frecuente, puedo hacer un alias para simplificar las cosas.

Options error: Unrecognized option or missing or extra parameter(s) ncp-disable

Esta es una actualización a este artículo (agosto 2021) porque nuevamente tuve problemas para establecer una conexión al servidor OpenVPN.

Intenté conectarme con mi teléfono celular al servidor OpenVPN pero me arrojó un mensaje de error. La parte interesante es esta:

Options error: Unrecognized option or missing or extra parameter(s) in /data/user/0/de.blinkt.openvpn/cache/android.conf:142: ncp-disable (2.5_master)
Use --help for more information.
Process exited with exit value 1

Afortunadamente este error es mucho más sencillo de solucionar. El mismo mensaje de error da la pista sobre la opción ncp-disable que fue eliminada en las versiones más recientes de OpenVPN.

Descargué la configuración en Client Export el archivo Inline Configurations – Android.

Lo abrí con un editor de textos y ahí estaba la opción problemática.

¡Adiós ncp-disable!

La solución es muy simple. Eliminé esa línea, guardé el archivo y lo envíe a mi celular para dar de alta el nuevo perfil en la aplicación.

Hecho esto pude conectarme sin problemas al servidor OpenVPN.

¿Qué les pareció este artículo? ¿Usan una VPN frecuentemente?

Cuidense mucho, que el COVID esta juerte oiga.

Android casi alcanza a windows como el SO más utilizado en Internet

Hoy veo una nota titulada Android challenges Windows as world’s most popular operating system in terms of internet usage que llamó poderosamente mi atención y quisiera comentarla con ustedes.

En la gráfica se puede ver un descenso enorme en la popularidad de Windows seguido de un aumento considerable para Android (Apple tiene sus seguidores, pero no aumentan).

Gŕafica de StatCounter

Les recuerdo que la gráfica mide la popularidad de estos sistemas operativos cuando se utilizan para internet. O dicho en otras palabras, si se conecta a Internet ¿Qué sistema operativo utiliza?.

No veo ninguna razón por la cual se detenga el crecimiento de Android y si veo muchos problemas con los productos que ofrece Microsoft ¿Se acuerdan de Nokia Lumia?¿Alguién dijo Surface?.

La batalla ahora es móvil.

Windows sigue ganando en el escritorio, pero tal parece que el campo de batalla se ha trasladado hacia los dispositivos móviles (tabletas, celulares, etc.). Un lugar en el que Android gana terreno cada día por la enorme multitud de propuestas que aparecen cada día y sus principales competidores no tienen contendientes que estén a la altura.

La tendencia parece irreversible, dentro de poco habrá más dispositivos Android conectados a Internet que equipos con Windows.

El mal acecha.

Se acuerdan que hace unos años decíamos que en Linux no había malware simplemente porque éramos muy pocos. Bueno Android se esta volviendo blanco de software malintencionado al por mayor.

Todos los días veo programas en Google Play que me hacen dudar si es apropiado instalarlos o no. Peor aún, el software de reputación tiene políticas de seguridad cuestionable, abundantes permisos o según las últimas noticias de Wikileaks tienen más puertas traseras y vulnerabilidades que la Matrix.

Un nuevo panorama se contempla. La seguridad informática tomará nuevos tintes. Las vulnerabilidades y actualizaciones serán el pan nuestro de cada día, pero ahora basadas en sistemas Linux ya no en Windows.

Sume usted el Internet de las cosas un segmento también dominado por sistemas abiertos gracias a su plasticidad y que no requiere el pago de licencias.

Vamos que hay tema para rato.

Cambio de habilidades.

La tecnología dominante es la que impone sus reglas y eso implica un cambio de habilidades. Todo cambia, los lenguajes, las herramientas de desarrollo, software de colaboración, las ideologías, el hardware. Lo que era necesario en Windows ya no lo es en Linux.

Incluso el mismo Microsoft ha coqueteado con Linux, supongo que se está dando cuenta de que la tendencia es por este lado.

Durmiendo con el enemigo.

¿Porque Android/Linux/Apple y no Windows?

Creo que la respuesta es muy simple, porque funcionan y funcionan bien. Recuerdo que un amigo celebraba el hecho de que las nuevas tabletas de la SEP utilizaran Windows 8. Está de más mencionar que fueron una pesadilla para alumnos, maestros y soporte técnico comparadas con sus contrapartes Linux/Android.

Windows se ha quedado estancado en temas de compatibilidad, malware, rendimiento decreciente y problemas al por mayor. Súmele a lo anterior problemas de privacidad. El usuario que más me visita tiene Windows 10 ¿Coincidencia? no lo creo.

¿Usted qué opina? Empieza a notar un movimiento hacia la utilización de Linux/Android.