Enviando mensajes SMS desde la línea de comandos

Enviar mensajes SMS desde una de nuestras aplicaciones o scripts siempre es una necesidad, la forma más fácil y obvia es sencillamente hacerlo a través de gateways de correo que algunos proveedores celulares ofrecen. Lo cual es común en USA y Europa, por ejemplo si alguien desea enviar un SMS a un celular de TMobile en USA sólo debe de poner como destinatario una dirección e-mail de esta forma 1234567890@tmomail.net donde 1234567890 es el número del celular al que deseamos enviar el mensaje.

Sin embargo esa opción no está disponible en todo el mundo, algunos carriers no la ofrecen y en su reemplazo solamente nos permiten enviar mensajes SMS a través de interfases web que requieren usualmente que resolvamos un captcha. Lo cual hace demasiado complicado automatizar ese proceso a través de un script con curl. Un ejemplo de ello es Claro del Perú.

Buscando una forma de resolver este problema es que encontré la librería pygooglevoice, dicha librería permite a cualquiera que tenga una cuenta de Google Voice el enviar/recibir mensajes SMS  de manera gratuita a cualquier parte del mundo. ¿Aplicaciones?, muchas, desde sistemas de monitoreo y alarma a sistemas interactivos de información usando mensajes SMS (podríamos por ejemplo crear nuestro propio clon de twitter).

Si desean darle una ojeada más extensa a la documentación antes de instalar la librería pueden hacerlo aquí.

La instalación es sencilla, aquí los pasos de cómo hacerla en un Ubuntu 8.04 (Hardy):

$ wget http://pygooglevoice.googlecode.com/files/pygooglevoice-0.5.tar.gz
$ sudo apt-get install python-simplejson
$ tar -zxvf pygooglevoice-0.5.tar.gz
$ cd pygooglevoice-0.5
$ sudo python setup.py install
$ cd

Listo con esos pasos tenemos instalada la librería y un utilitario llamado "gvoice" que nos permite administrar nuestra cuenta Google Voice desde la línea de comandos. Pero como nuestro objetivo es poder enviar mensajes SMS a números telefónicos de cualquier parte del mundo (bueno sólo carriers GMS están soportados), de manera automatizada, podemos usar un sencillo script en Python como este que viene de ejemplo:

from googlevoice import Voice
from googlevoice.util import input

voice = Voice()
voice.login()

phoneNumber = input(‘Number to send message to: ‘)
text = input(‘Message text: ‘)

voice.send_sms(phoneNumber, text)

Luego podremos ejecutarlo y el script nos preguntará nuestro e-mail en gmail que es usado como credencial en Google Voice, el password, el número telefónico al cual queremos enviarle un mensaje de texto y finalmente el mensaje de texto. Aunque este es un ejemplo bastante trivial las aplicaciones del mismo son enormes. Hay que tener presente que este escript no limita el tamaño del mensaje, así que si este excede los 140 caracteres será truncado.

¿Se aproxima el fin de la era Microsoft?

Cuando entramos es este tercer milenio (año 2001), Microsoft era el amo indiscutible de la industria TIC. Nadie tenia el suficiente dinero, ni un modelo de negocios equivalente. El anterior rey IBM, había caído derrotado y se refugiaba en su último bastion para sobrevivir, las mainframes.

El gigante de Redmond despertó iras y sospechas en todo el mundo, muchos comparaban la estrategia de abarcar todos los rincones de la industria TIC que utilizaba Microsoft, a la estrategia de asimilación de los borgs. El mundo TIC parecía haber caído en las manos de Microsoft por siempre, sin embargo con la aparición de los smartphones, en donde RIM con su popular Blackberry redifinió que se podía hacer con un teléfono móvil y una conexión a Internet, algo cambio en el mundo. Una tendencia que el iPhone a vuelto bastante notoria.

Cuando se trataba de desarrollar aplicaciones, todos tenían que desarrollar para Windows, si no tenías una versión de tu aplicación para Windows, pues difícilmente podrías hacer dinero. Todo un circulo virtuoso para Microsoft lo mantenía como líder. Dejenme explicar a lo que me refiero. Los desarrolladores de aplicaciones debian hacer su producto compatible con el sistema dominante del mercado (Windows), pues era la única forma de acceder a un gran público, debido a que tenía muchas aplicaciones disponibles Windows atraía a más usuarios, siendo el resultado neto una expansión contínua del número total de usuarios del sistema operativo Windows, lo que a su vez también hacía crecer el número de aplicaciones disponibles.

Sin embargo diversos factores, muchos de ellos externos al sector TIC, han cambiado la dinámica del mercado. iPhones, netbooks, redes sociales (Twitter, Facebook), tecnologías de gran ancho de banda para celulares como GPRS/EDGE/3G, han cambiado la forma como las personas desean usar la mayor de todas las aplicaciones que hemos desarrollado la web.

Justamente, el hecho que Microsoft desatendiera la web y considerara que la dominaba sólo porque controlaba el navegador, recordemos que en un momento entre el 2002 y el 2003 Internet Explorer llego a tener el 95% del mercado de navegadores. Es lo que permitió que empresas como Apple (iPhone), Google (Android), MySpace, Facebook o Twitter hicieran un disrupción del mercado. Ahora ya no es necesario un PC para poder usar la web, para comunicarnos con los amigos o para poder jugar, ese es el principal problema de Microsoft.

Ahora incluso la Union Europea ha hecho un acuerdo con Microsoft y le ha permitido poner al Internet Explorer como una de las opciones que los usuarios pueden elegir entre otros browsers como por ejemplo Google Chrome, Safari, Opera, Firefox, al momento de instalar su sistema operativo Windows 7. Tal vez una de las razones que los reguladores europeos han considerado para cerrar este trato de Microsoft es de que incluso ahora que no es posible ese tipo de configuraciones cuando se instala un Windows, la participación de Internet Explorer en el mercado esta cayendo sostenidamente desde principios del 2008. Aquí les dejo un interesante cuadro que he encontrado en Silicon Alley Insider:

Colapso del IE

 
La perdida constante de mercado por parte del Internet Explorer, es básicamente el resultado de la desidia de Microsoft, que durante casi 6 años no desarrollo un nuevo browser. Período en el cual sus principales competidores introdujeron varias mejoras, y duarante el cual el némesis de Microsoft, introdujo su propio browser Chrome e incluso ahora está a punto de lanzar su propio sistema operativo para netbooks, Chrome OS.

Otro factor que también ha contribuido al debilitamiento de Microsoft ha sido sin duda la falla épica llamada Windows Vista, que está queriendo ser reemplazado por un poco menos exigente en recursos, Windows 7. Sin embargo los números aún no muestra una clara adopción de Windows 7 en las empresas. Lo cuál tiene sentido ya que han aparecido una infinidad de nuevas tecnologías una de ellas la virtualización de escritorios, que no obligan a actualizar el hardware de los equipos en los escritorios de las empresas. Otro factor que está retrasando la adopción de Windows 7 en las empresas, es sin duda, que no es posible hacer un upgrade sencillo desde Windows XP, que sigue siendo el rey en los escritorios corporativos.

No creo que Google Apps, o cualquiera de las aplicaciones ofimáticas basadas en web puedan destronar al omnipresente Microsoft Office. Ese seguirá siendo el bastión de Microsoft, probablemente el lugar donde se refugiará y tratará de exprimir tanto a sus usuarios, como IBM lo hace con los usuarios de sus mainframes. Pero el nuevo rey de la web es sin duda Google.

Resumiendo, creo en lo personal que el fin de la era de dominación de Microsoft se aproxima, junto con el final de la era PC. Las netbooks de $80 o menos, los smartphones y las redes sociales serán sin duda la plataforma en la cual correrán las aplicaciones del futuro. De alli la carrera por el sistema operativo que las controle a todas. Lamentablemente Microsoft se ha marginado a si mismo de la batalla por esa plataforma, casi de la misma forma como IBM lo hicera a finales de los ochenta con su OS/2.

¿Más problemas con vboxdrv y Ubuntu 8.04?

UPDATE: Ubuntu 8.04 hoy (14 de diciembre de 2009) ya ha actualizado apropiadamente el paquete de módulos y aplicar este truco no es necesario.

Hace ya casi un mes publiqué un post titulado "¿Problemas con vboxdrven Ubuntu 8.04?" y en el describía como solucionar el problema generado luego de actualizar al último kernel en ese entonces el 2.6.24-25; sin embargo el martes pasado otra vez el sistema actualizó a un nuevo kernel, esta vez a la versión 2.6.24-26. Tras lo cual nuevamente se presentó el mismo problema con VirtualBox.

Busque si alguien había subido el parche en Launchpad, pero al parecer nadie lo ha hecho aún. Razón por la cual tuve que aplicar un parche rápido que detallo líneas más abajo. Todo el truco se basa en que los kernels son casi los mismos, y no se ha desinstalado el kernel anterior. Por lo tanto todas las librerías dinámicas deberían de aún continuar alli. La idea es simplemente agregar el módulo de la version antigua a mano e iniciarlo manualmente.

Estos son los pasos que necesita seguir:

$ cd /lib/modules/2.6.24-26-generic/
$ sudo mkdir misc
$ cd misc
$ sudo cp /lib/modules/2.6.24-25-generic/misc/vbox* ./
$ sudo insmod vboxdrv.ko

Esto es para asegurarnos que el módulo ha sido cargado a memoria:

$ lsmod | grep vbox

Esto es para reiniciar el vboxdrv en VritualBox:

$ sudo /etc/init.d/vboxdrv start

Ahora ya deberíamos de poder iniciar nuestras máquinas virtuales. Espero que este pequeño tip les sea de utilidad.

¿Problemas con vboxdrv en Ubuntu 8.04?

Si uno es un usuario de Linux por lo general tiene que sufrir el hecho de pertenecer a una minoría. La llegada de los emuladores y los procesadores de alto desempeño nos ofreció una alternativa, el poder terner todo un entorno Windows dentro de nuestros Linux para poder ejecutar aquellas aplicaciones que son sólo Windows. En mi caso utilizo VirtualBox, que está soportada por mi distribución favorita para desktop Ubuntu.

El problema es que hace un par de semanas que actualicé a la última version del kernel disponible 2.6.24-25, pero hoy que necesitaba utilizar el emulador descubrí que esto trajo como efecto colateral que VirtualBox dejara de trabajar. El error que tenía era este:
 

VritualBox vboxdrv error

 
Luego de goolear un poco encontré que es debido a que los módulos del kernel que necesita VirtualBox para poder ejecutarse no son instalados en el momento del upgrade. El error ya ha sido reportado a los desarrolladores de Ubuntu como el bug # 461793. Afortunadamente ya existe una solución para el problema y es bastante sencilla aunque un procedimiento manual. Para aquellos que les interese es la siguiente.

Descargar los siguientes paquetes:

$ cd /tmp
$ wget  https://edge.launchpad.net/ubuntu/+source/virtualbox-ose-modules/24.0.11/+build/1312475/+files/virtualbox-ose-guest-modules-generic_24.0.11_i386.deb
$ wget https://edge.launchpad.net/ubuntu/+source/virtualbox-ose-modules/24.0.11/+build/1312475/+files/virtualbox-ose-guest-modules-2.6.24-25-generic_24.0.11_i386.deb
$ wget https://edge.launchpad.net/ubuntu/+source/virtualbox-ose-modules/24.0.11/+build/1312475/+files/virtualbox-ose-modules-2.6.24-25-generic_24.0.11_i386.deb

Luego procedemos a instalar de la siguiente manera:

$ sudo dpkg -i virtualbox-ose-modules-2.6.24-25-generic_24.0.11_i386.deb
$ sudo dpkg -i virtualbox-ose-guest-modules-2.6.24-25-generic_24.0.11_i386.deb
$ sudo dpkg -i virtualbox-ose-guest-modules-generic_24.0.11_i386.deb

Finalmente inciamos el módulo vboxdrv de esta manera:

$ cd
$ sudo /etc/init.d/vboxdrv start

Es todo ahora si ya podemos correr los entornos virtuales. Espero que esto sea de utilidad a cualquier otro ubuntero que tenga este problema.

Afinando el Acer Aspire One

Acer Aspire OneEn los próximos días dependeré casi exclusivamente de mi netbook, una Acer Aspire One 110L. Lo cual me puso en la necesidad de resolver algunos detalles que no me gustaban de esta netbook que por lo demás resuelve todas mis necesidades.

A diferencia de algunos que tratan de utilizar una netbook como una laptop barata, desde el momento mismo que compré la mia en agosto del 2008, mi idea era utilizarla como lo que realmente es, un equipo ultraportable para despligue en lugares donde el espacio cuenta. Si alguno de Uds. lectores ha tenido que trabajar en los limitados pasadizos entre los racks de un data center, sabran a que me refiero. Además llevar una netbook a todo lado en el maletín es mucho menos fatigoso que estar cargando un latop de 15 pulgadas.

En diciembre del año pasado le intalé Ubuntu 8.10 (Intrepid Ibex), para ello seguí el tutorial AspireOne 110L, luego en mayo de este año hice un upgrade a Ubuntu 9.04 (Jaunty Jackalope) sin mayores contratiempos. Pero a pesar de que había optimizado todo lo que había podido. El problema era que el Gnome con los 512MB de RAM que tiene la netbook hacían que el booteo y cargar el Firefox para googlear algo sea lento. Lo cual era soportable cuando no tenía apuro, pero en ciertos momentos resultaba ciertamente mortificante.

Decidido a optimizar el tiempo de respuesta, opté por probar LXDE en mi Ubutnu, había leído muy buenos comentarios de este escritorio que es además compatible con las librerias gtk+. Debido a que LXDE era soportado en Jaunty, todo fue tan simple como usar aptitude, el comando fue este:

sudo aptitude install lxde

Luego de eso reinicié el sistema y seleccioné LXDE como mi gestor de ventanas por defecto (más detalles en este tutorial). La respuesta del sistema fue buena, la carga de las aplicaciones era rápida, pero aparecieron dos problemas. El primero era que el sonido no funcionaba, podía vivir sin sonido, después de todo no uso mi netbook como mi equipo primario. El segundo problema si era grave, la red dejó de funcionar. Es decir no funcionaba ni el ethernet ni el wireless, lo cual no era aceptable para mi ya que esa es el principal uso que le doy de mi netbook; es decir un equipo que me permite correr mis herramientas de red.

Como sabía que había tenido que hacer unos cuantos tweaks para conseguir hacer funcionar Ubuntu en mi Acer Aspire One, me puse a googlear buscando tips de como hacer lo mismo con LXDE. Fue entonces que di de casualidad con el site Aspire One Kernel, dicho sitio mantenido por un australiano de nombre Stuart y que además ayuda a mentener el kernel de la distribución Kuki Linux, tiene un par de paquetes deb con el kernel 2.6.29, optimizados para correr en el Aspire One.

Despues que instalé los paquetes y reinicié el equipo, lo primero que noté es que el incio fue mucho más rápido. Luego, revisando con mayor detalle pude notar que el uso de la memoria era menor. Además que con el nuevo kernel ya funcionaba el ethernet. Sin embargo el wifi aún no funcionaba, googleando un poco más descubrí que lo único que había que hacer era iniciarlo manualmente con el comando "nm-applet". Para ello debemos de abrir una consola y ejecutar este comando:

nm-applet>/dev/null 2>/dev/null&

Luego de eso veremos que el applet del wifi se depliga en la parte izquierda de la barra de tareas.

Respecto al sonido, por defecto LXDE lo deshabilita. Para poder activarlo debemos hacer click con el botón izquierdo del mouse en la barra de tareas y seleccionar la opción "Agregar/Suprimir elementos del panel", luego hacemos click en el botón "Añadir", buscamos el applet llamado "Control de volumen" y lo agregamos.
Los mismos pasos anteriores pueden ser usador para agregar un "Monitor de batería" y el "Monitor de estado de red".

Listo, con los pocos pasos anteriores ahora el Aspire One puede bootear en un pestañeo y el desempeño del entorno gráfico es sorprendente, el Firefox carga casi inmediatamente y OpenOffice trabaja sin problemas, aunque sigue siendo un poco lento al cargar. Además he podido notar que el wifi tiene un poco más de alcance, porque ahora cuando exploro la red veo señales que antes no veía y las que antes podía ver ahora las veo con más barras.

Espero que estos tips sean de utilidad para todos aquellos propietarios de estas pequeñas pero poderosas herramientas.