Ha pasado mucho tiempo desde la última vez que escribí un artículo en este blog, 3 años para ser exacto. Muchas cosas han estado ocurriendo en mi vida, pero para ser sinceros, antes de 2016 ya había perdido interés en la escritura de artículos. La naturaleza de estos artículos siempre ha sido técnica y con propósito académico; para mi, para retener conceptos que debía recordar y para el público, como literatura de consulta. Desde 2014, mi trabajo de día a día ya no require de un componente de investigación tan primordial como lo era para ser desarrollador de un Sistema Operativo. Mi actividad económica ha mutado hacia proyectos que requieren un enfoque más práctico y ágil. Mis intereses también han cambiado mucho. Ya no es aceptable para mi estar hasta altas horas de la madrugada escribiendo código, investigando o experimentando con tecnología. Ahora invierto mis tiempos de lectura no sólamente en artículos de tecnología sino también de psicología. Así que he decidido cerrar el ciclo de vida de este blog. Gracias a todas las personas que participaron, comentaron, y contribuyeron contenido a lo largo de estos 9 años de vida. Las destrezas adquiridas serán puestas en uso en otro blog, un blog que va a formar parte de una estrategia de negocios y del cual estaré hablando muy pronto. La dirección web va a estar disponible al menos 1 año más, tiempo después del cual el contenido podrá consultarse de forma póstuma en http://huntingbears.github.io Pueden seguirme la pista en mi cuenta de twitter: http://twitter.com/LuisAlejandro ¡Un gran abrazo a todos! P.D.: Gracias a Jose Rafael Guzmán por el meme portada de este artículo xD
Pokemon Go uses your device’s GPS to determine where you are in the world and then figure out which Pokemon are nearby. This article will teach you how to use an android app that allows you to fake your location using GPS coordinates. Remember that using a fake Pokemon Go location can result in a temporary or permanent ban, so use this knowledge wisely. To do this, we will need to download the following software (you can download it in your PC and then pass it tou your SD card or download it directly): You need to have a file explorer (of any kind), you can download it on Google Play. I personally use FX. Lucky Patcher. Fake GPS Location Spoofer. Also, your phone should be rooted previously. If you don’t know how, please read my post on how to root your Android phone. Next, install Fake GPS Location Spoofer as a system app using Lucky Patcher: Locate the Lucky Patcher APK you just downloaded using the file explorer and install it. Grant root permission to Lucky Patcher when asked. Launch Lucky Patcher and find “Rebuild & Install” at the bottom bar. Locate Fake GPS Location Spoofer using the built-in explorer in Lucky Patcher. Click the APK file and select “Install as a system app”. Now, make the following changes in your settings: Uncheck “Allow mock locations” in Settings > Developer Options if it is checked. If your phone doesn’t have Developer Options in the menu, you will have to enable it by going to Settings > About phone > Build number and tapping 7 times on it, then go back to see if Developer Options appears in the menu. Launch Fake GPS and navigate to you preferred location. Double tap the screen to set the marker. In Fake GPS, go to Settings and enable “Expert Mode”. In Fake GPS, click the orange play button on the right bottom of the screen. There should be a pop up on your screen that says “Fake location engaged…” Open Pokemon Go and you should be in the place that you selected. Some suggestions: Don’t “jump” too far between locations as this will surely get you banned. Try to make short jumps that simulate what you would look like if you were walking or going in a car. Disable “High accuracy” in GPS settings, select “Device only” to avoid conflicts. If you have any problems, leave your comment below and i’ll try to help you.
Last time we were talking about how to farm pokestops automatically, now i want to help you find those rare pokemon near you without moving from your house. Yeah, hate me, walkers. I know this is raising up some really angry players who like to play properly and hate cheaters, as they ruin the game experience for them. But hey, i’m a software developer, not a gamer. First we’re going to need a Pokemon Trainer Club (PTC) account. If you don’t have one, go the the PTC website and register one. Then we will need: A git client. A terminal/shell. The python package installer (pip). An internet connection. Again, i’m going to explain the procedure for a Linux distribution as i don’t use Windows, but the process should be fairly similar. We’re going to use a pokemon API script by leegao to know which pokemon are near our location. Open a terminal and clone it with the following command: git clone https://github.com/leegao/pokemongo-api-demo Then go into the newly created folder (cd pokemongo-api-demo) and change to the simulation branch like this: git checkout simulation Now execute the script as follows: python2 main.py -u [USER] -p [PASSWORD] --location [LOCATION] Where: [USER] is your PTC username. [PASSWORD] is yor PTC password. [LOCATION] is a string containing a real address in which to start searching for pokemon. This will generate an output like this: [!] Your given location: Glastonbury, England [!] lat/long/alt: XX.XXXX YY.YYYY ZZ.ZZZZ [!] login for: [USER] [+] RPC Session Token: XXXXYYYYYYZZZZZZZZZ ... Sleeping for 2 seconds to get around rate-limit. [+] Received API endpoint: https://pgorelease.nianticlabs.com/plfe/418/rpc Sleeping for 2 seconds to get around rate-limit. [+] Login successful [+] Username: [USER] [+] You are playing Pokemon Go since: xxxx-yy-zz [+] POKECOIN: 0 [+] STARDUST: 0 Sleeping for 2 seconds to get around rate-limit. Sleeping for 2 seconds to get around rate-limit. Sleeping for 2 seconds to get around rate-limit. Sleeping for 2 seconds to get around rate-limit. Sleeping for 2 seconds to get around rate-limit. Within one step of LatLng: 10.2178262025,-67.5872447788 (316m NE from you): (13) Weedle (84) Doduo Within one step of LatLng: 10.2180407692,-67.5902250144 (239m NW from you): (69) Bellsprout Within one step of LatLng: 10.2154127915,-67.5902250144 (105m SW from you): (10) Caterpie (16) Pidgey is visible at (10.2157907149, -67.5914823031) for 208 seconds (220m SW from you) (10) Caterpie is visible at (10.2149091561, -67.5906441105) for 643 seconds (177m SW from you) The next cell is located at LatLng: 10.2127848977,-67.5902250144. Keep scanning? [Y/n] As you can see, you now have the exact coordinates of a Pidgey and a Caterpie, with also the amount of time that they will be available there. If you keep pressing Y, the script will be ciclying through the map, telling you which other pokemon are near the location you specified. Now, copy those coordinates and put them into Google Maps and you will know exactly where it is. To catch that pokemon you have two options: drive or take a bus to that location and pray you make it in time, or use fake gps to teletransport there. You can read about how to teletransport using Fake GPS in a post i wrote recently.
If you are an Android enthusiast, you would know the importance of gaining root privileges as it will help you to modify important parts of your Android OS. If you are a newbie to Android rooting and don’t know how to root your Android device, well you are in the right place. By following the tutorial given here, you will be able to root almost all Android smartphones and tablets just by installing the Kingroot application. WARNING: Rooting your Android smartphone or tablet using KingRoot app will void its warranty and you won’t be able to claim it back until you unroot your device. Before getting started with the rooting tutorial, make sure that your device has atleast 50-60% battery backup in it. Next, ensure that you have uninstalled or disabled antivirus applications in your Android device as they sometimes distract the rooting procedure. Next, enable “Installation of apps from Unknown sources” in your device by following this path: Settings > Security > Device Administration > Unknown Sources. Now, go to the KingRoot website and download the APK to your Android device. Once downloaded, go to your preferred file explorer and tap on the KingRoot APK to install the application. Once KingRoot is installed in your device, open up the application. Now, you will see the message “Root access is unavailable”. Just click on “Try to Root” blue button in the same screen to begin the rooting procedure. During the rooting process, you will see a circle progress bar in your smartphone or tablet as shown in the screenshot given below. Once the rooting process is over, your Android device will be successfully rooted. You will also get the message “Root Successfully” in the KingRoot app. To finish the rooting procedure, just restart your device. That’s it. Now you have successfully finished rooting your Android device using KingRoot android application. If you encounter any problems, leave a comment and i’ll try to help you.
Repeat after me: you cheat, i cheat, they cheat, we all cheat. After all, what’s the purpose of technology? Make our lives easier by simplifying and automatizing our daily work. I know, Pokemon Go isn’t work, but what the heck. What you will need: A git client. A terminal/shell. The python package installer (pip). An internet connection. So basically if you have any Linux distribution installed, you already have these tools. I will make the explanation for Linux, as it is my primary operative system, but you should be able to understand how to do it in Windows or Mac, as the process is very similar. First, open a terminal or shell and install git and pip. In Debian/Ubuntu you can do it like this: sudo apt-get install git python-pip Then we will be using a Bot written by Mila432 (you can drop a comment in his twitter), which we will be downloading with git. So, in the terminal, go to your folder of preference and put the following command: git clone https://github.com/Mila432/Pokemon_Go_API Next, we have to install the python dependencies. Go to the newly downloaded folder (cd Pokemon_Go_API) and put with the following command: sudo pip2 install -r requirements.txt Now, its time to run the bot with the following command: python2 main.py -u [USER] -p [PASSWORD] --location [LOCATION] -t [METHOD] Where: [USER] is your username in Pokemon Trainer Club or your Google email, depending on which method you use to login. [PASSWORD] is yor PTC password or Google password. [LOCATION] is a string containing a real address in which to start searching for pokestops. [METHOD] is the method you use to login (Google or PTC). What you will see next is the bot teletransporting to the closest pokestops to start farming items and 50XP points. [!] Using google as login.. [!] Your given location: Sydney, Australia [+] Token: XXXXYYYYYYZZZZZZZZZ... [+] found: 123 Pokestops near [+] starting show [!] +50 (50) [!] +50 (100) [!] charging [!] +50 (150) [!] teleport.. If you have any problems, leave them below and i’ll try to help you. Enjoy!
6ta Cayapa Canaima. Imagen de David Hernández (by-nc-sa). Una actividad creativa tiene muchos matices y particularidades. Podemos estar de acuerdo en que nada está realmente hecho desde cero, puesto que siempre existe un antecedente del cual hemos tomado prestado inspiración. Específicamente en el desarrollo de Software Libre, esta es una actividad recurrente e incluso alentada como buena práctica. Y es que, todo el movimiento del conocimiento libre tiene como premisa la mejora progresiva de la forma en que la sociedad satisface sus necesidades, tomando como referencia los avances que otros han hecho y publicado. El Proyecto Canaima, por su parte, cumple 9 años desde la publicación de la versión 1.0. Desde ese entonces, año tras año, incontables personas han ayudado con su trabajo de diversa índole a la mejora progresiva de los procesos técnicos y no técnicos de la distribución. Realmente son incontables. A pesar de no poseer la mano de obra de otras distribuciones, Canaima es utilizada en un número significativo de instituciones de la administración pública, sirve como sistema operativo para las más de 4 millones de canaimitas distribuídas a nivel nacional y ha entrado varias veces dentro de las 100 distribuciones más populares, según distrowatch. Como trabajador del CNTI, fuí testigo directo de la evolución de la distribución, y de como con cada Cayapa (reuniones técnicas o bug squash parties), la calidad del código, conceptos y estructura de la distribución maduraban. Borrón y cuenta nueva En la última minicayapa celebrada en la Escuela Venezolana de Planificación en la ciudad de Caracas, los actores presentes tomaron la decisión de rehacer la distribución desde cero, bajo la justificación de que lo existente era tan desastroso que no servía. Con un quórum cuestionable y una premura impresa por la institucionalidad, nacieron nuevos paquetes y nuevos procesos. Pero con ellos también volvieron los errores superados, las malas estructuras de diseño corregidas, los errores conceptuales que ya habían quedado atrás, sin mencionar los acuerdos alcanzados que fueron fácilmente rotos sin mayor explicación. No es justificable de ninguna forma este accionar. Incluso, no estaría de acuerdo si se hubiese hecho borrón y cuenta nueva para sustituirlo por algo mejor. La memoria técnica de un proyecto no debe perderse. Rescatando lo perdido Es así como he decidido continuar con la línea de investigación que el Proyecto Canaima (directa o indirectamente) echó a un lado. La nueva distribución tomará el nombre de Tribus GNU/Linux, el mismo nombre de su plataforma (Tribus). Preliminarmente estaré haciendo una imagen ISO con los mismos paquetes originales de Canaima (con los nombres cambiados), basada en Debian Sid y comenzando su versionamiento en 0.1, pero luego me dedicaré enteramente a terminar la plataforma de Tribus para poder establecer los criterios de participación comunitaria, modelos de gobernanza y automatización de procesos. Por ahora, mientras la plataforma de Tribus se completa, las plataformas asistentes serán las siguientes: Versionamiento en Github. Integración contínua en Travis. Compilación de paquetes e isos en OpenShift (Pronto). Listas de Correo en Google. Documentación en Read the Docs. Si alguno desea sumarse a esta iniciativa, es bienvenido en las listas de correo. Esta nueva distribución está dirigida al usuario común y tiene como propósito fundamental mejorar la experiencia en el área de escritorio.
Últimamente estoy muy paranóico. La última de las paranoias que adquirí es tratar de utilizar una sóla aplicación de mensajería instantánea para todos los servicios que utilizo regularmente. Facebook, Google Hangouts, WhatsApp, IRC, Y ahora Telegram, son algunas de las redes sociales con las que me comunico. Me resulta realmente molesto tener que iniciar y revisar una aplicación por cada una, y además tener que ocupar memoria RAM adicional. Es por ello que decidí centralizar las aplicaciones a través de Pidgin. Si bien Pidgin ofrece soporte nativo a una gran cantidad de redes, aún le falta compatibilidad con Whatsapp. Sin embargo, a través de plugins, otras personas han podido adaptar los protocolos de comunicación para hacerlos funcionar con Pidgin. WhatsApp, Yowsup y Pidgin WhatsApp es una aplicación de mensajería desarrollada exclusivamente para teléfonos inteligentes. Permite el envío de mensajes de texto, imágenes, video a través de sus usuarios. La identificación de cada usuario es su número de teléfono móvil. Basta con saber el número de alguien para tenerlo en la lista de contactos. El procedimiento que voy a describir acá requiere que poseas una cuenta en WhatsApp. Oficialmente la única forma de abrir una cuenta en WhatsApp es a través de la aplicación en tu teléfono inteligente; sin embargo, existen alternativas que permiten hacerlo desde tu computadora, utilizando una conexión a internet. Lo primero que debes hacer es seguir la guía para obtener tus credenciales de whatsapp, que son tu número de teléfono con código de país y la cadena de autenticación (password). Dicha guía utiliza Yowsup, una aplicación hecha en python diseñada para comunicarse directamente con los servidores de WhatsApp. Una vez obtenidas las credenciales, debemos compilar e instalar el plugin para pidgin llamado whatsapp-purple. Para ello vamos a instalar las dependencias de compilación. En una distribución derivada de debian podemos hacer así (con permisos de root): sudo apt-get install git make g++ sudo pidgin python-dateutil python-argparse libglib2.0-0 libglib2.0-dev libpurple-dev libfreeimage-dev libprotobuf-dev Luego debemos clonar el repositorio del plugin con el siguiente comando (sin permisos de root): git clone https://github.com/davidgfnet/whatsapp-purple Seguidamente, entramos en la carpeta recién clonada y compilamos el plugin (sin permisos de root): make Y luego (con permisos de root), instalamos el plugin: sudo make install El plugin está instalado, ahora debemos configurarlo. Abrimos pidgin y vamos al menú Cuentas > Gestionar cuentas; pulsamos sobre el botón “Añadir”. Allí rellenaremos los siguientes datos: Protocolo: WhatsApp. Nombre de Usuario: Número de teléfono con código de país. Contraseña: Contraseña obtenida con Yowsup. Listo, ya tenemos nuestro plugin configurado. Ahora podemos agregar contactos introduciendo sus números de teléfono en el cuadro de diálogo Buddies > Añadir un amigo .... Tus grupos existentes se sincronizarán con tu lista de contactos, más no lo harán tus contactos individuales, debes agregarlos manualmente. Puedes enviar fotos y archivos a través del menú Conversación > Enviar archivo ... de la ventana de conversación. Si deseas visualizar los emojis nativos de WhatsApp, debes instalar un tema de íconos con emojis unicode como Twitter for pidgin. Algunas personas reportan problemas para recibir mensajes, por lo que recomiendo realizar el siguiente paso adicional: Se debe cambiar la configuración para que el campo “Resource” diga como aparezca en la imagen. Debes ir a Cuentas > Gestionar Cuentas > (Seleccionar la cuenta de WhatsApp) > Modificar, y en la pestaña “Avanzadas”, poner S 40-2.12.11 en el campo “Resource”. Cierra y vuelve a abrir Pidgin.
Para algunas actividades particulares, a veces es necesario husmear un poco en la base de datos de WhatsApp para obtener los datos de acceso de nuestro usuario en la plataforma. Normalmente esto es un proceso transparente para el usuario común porque la aplicación oficial de tu teléfono inteligente se encarga de manejar la autenticación sin necesidad de que tu introduzcas un usuario o contraseña. Sin embargo, existen otras formas de conectarse a los servidores de WhatsApp sin necesidad de utilizar la aplicación oficial, y para esto necesitamos los datos de acceso de nuestro usuario. Para obtener estos datos, utilizaremos una pequeña aplicación en Python llamada Yowsup. Yowsup El protocolo de WhatsApp es una versión modificada del protocolo XMPP que es de código abierto. Aunque los autores de WhatsApp han hecho su versión de codigo cerrado, el autor de Yowsup ha sido lo suficiente hábil como para hacer ingeniería inversa al protocolo y escribir esta fantástica librería. Yowsup funciona como un cliente de la API pública de whatsapp, permitiendo que registremos nuestro número de teléfono en la base de datos de WhatsApp, y así recibir la cadena de autenticación. La librería es totalmente de código abierto y la tenemos disponible en Github. Yowsup se puede instalar en cualquier distribución GNU/Linux (Ubuntu, Linux Mint, Elementary, Canaima, etc) a través del sistema de versionamiento git. Primero, abriremos una terminal de usuario y clonaremos el repositorio con git de la siguiente forma: git clone https://github.com/tgalal/yowsup Para el siguiente comando, necesitaremos tener nuestro teléfono a mano, ya que recibiremos un mensaje de texto con el código de validación. Nos meteremos dentro de la carpeta y ejecutaremos: ./yowsup-cli registration --phone [PHONE] --cc [CC] --requestcode sms [PHONE] debe sustituirse por el número de teléfono incluyendo el código de país y [CC] es el código de país. Seguidamente recibiremos un mensaje de texto en nuestro teléfono conteniendo el código de verificación para el registro, guardamos ese número. Luego ejecutaremos el siguiente comando: ./yowsup-cli registration --phone [PHONE] --cc [CC] --register [CODE] [CODE] es el código que recibimos por mensaje de texto. Al ejecutar el comando, recibiremos un bloque de información como el que sigue: status: ok kind: free pw: [PASSWORD] price: US$0.99 price_expiration: 1443389834 currency: USD cost: 0.99 expiration: 1472221910 login: [PHONE] type: existing El campo pw contiene la cadena de nuetra contraseña encriptada. Si quieres averiguar que aplicaciones pueden autenticarse usando estas credenciales, lee el artículo que habla sobre usar WhatsApp en Pidgin.
Durante los últimos días he estado dándole vueltas al asunto de la organización para el desarrollo de aplicaciones en Software Libre. He estado reflexionando y hablando con varias personas de la comunidad y sus experiencias en el desarrollo colaborativo de aplicaciones que han tenido éxito, es decir, que han logrado los objetivos que se trazaron. Destaca una conversación con Wil Álvarez (creador de Turpial) y la forma en como él y sus colaboradores han llevado un esquema de desarrollo sano y dinámico durante los últimos años. Manejar un proyecto colaborativo no es una tarea fácil. Si arrugaste la cara cuando leíste esa última frase, piénsalo bien porque es probable que lo estés haciendo mal. Puedo resumir la información que recopilé de la siguiente manera: Los canales de comunicación deben ser prácticos, directos y claramente identificados. Lo ideal es tener una lista de correo para desarrollo y soporte dedicada a la aplicación. Si sientes que una determinada aplicación “no merece” tener una lista aparte, entonces esa aplicación puede que esté gastando una valiosísima porción de tu tiempo y merezca desaparecer. Debe existir una documentación básica antes de hacer un llamado público a colaboración. La documentación debe describir perfectamente: ¿En qué consiste la aplicación? ¿Para qué la vamos a hacer? ¿Qué lenguajes y herramientas utilizaremos inicialmente (versiones, paquetes, etc)? (pueden cambiar con el tiempo) ¿Cuál es el proceso para arrancar la aplicación? ¿Cuál es el procedimiento para armar el ambiente en donde puedo empezar a desarrollar para la aplicación? ¿Cómo se hace para comunicarse con los desarrolladores/colaboradores? ¿Cómo se hace para modificar una parte del código? ¿A dónde lo mando? ¿Quién lo recibe? ¿Cómo sé si aceptarán mi aporte? ¿Dónde lo veo? ¿Cómo es el estilo de programación (code style) de los diferentes lenguajes que se utilizarán? Si se incluye un diagrama de objetos y un diagrama conceptual es mucho mejor. Según la experiencia de muchos, la gente no le gusta participar en las fases de diseño de la aplicación, sino más adelante donde ya existen tareas concretas y granulares que se puedan seleccionar. El código y todos los procedimientos (toma de decisiones, aceptación de contribuciones, lanzamiento de versiones, etc) deben ser públicos. Utilizar sistemas de versionamiento es ideal. Debe existir (al menos) un arquitecto de software por cada aplicación. Generalmente este rol lo asumen las personas que diseñaron la aplicación y consiste en hacer la gestión de la construcción de la aplicación. Estas personas: Abren los tickets para las nuevas funcionalidades de acuerdo al diagrama conceptual. Asignan los tickets a las personas que se han ofrecido a colaborar en determinadas funcionalidades. Cierran los tickets de acuerdo a las funcionalidades completadas. Aceptan peticiones para la fusión de código (pull/merge requests) de los diferentes colaboradores, luego de haber hecho una revisión del estilo de programación y las funcionalidades agregadas o errores corregidos. Atienden los casos de desarrollo o soporte que se presenten en la lista de la aplicación. No pueden descuidar la aplicación mientras se forma la comunidad. Deben formar parte activa en los medios de comunicación. Por ahora, hasta aquí el reporte. Más adelante estaré haciendo otros aportes.
Late last year, the people of Twitter decided to share the sources of their popular smileys (or emojis) in SVG format. By using a base project of unicode pidgin icons and the original sources of twitter emojis, I was able to put together a set of icons to use in pidgin with the visual appearance of the ones used in the official twitter page. It is very easy to install. Download the pack of icons, unzip the file and place the twemoji folder under ~.purple/smileys. Restart your pidgin and select the new icon theme on the menu Tools > Preferences > Themes > Smiley theme, as shown in the figure below. Of course, the pack is free software and can be used and shared under the Creative Commons license CC-BY-SA 4.0. Its source code is available on Github and Gnome Look.