Blog: tech

PyRadio: Mi radio minimalista

PyRadio es una aplicación de Python en ncurses para escuchar emisoras de radio en linea. Las carga de un listado de local de emisoras y las reproduce utilizando mplayer, vlc o mpv. Personalmente la he usado en Mac OS X 10.5-10.11, Xubuntu, Elementary OS y Arch Linux, pero debería correr bien en cualquier sistema UNIX.

PyRadio

Requisitos e instalación

La instalación es bastante sencilla, asumiendo que se tiene python 2.6+/3.2+ y python-pip instalado basta con poner en el terminal

pip install pyradio

En caso de que se den errores de permisos (Permission Denied) se puede probar con

pip install pyradio --user

Como la reproducción la hace mplayer, vlc o mpv, hace falta tener alguno de estos instalados. MPlayer es la mejor opción porque es el más ligero de todos, pero VLC también funciona perfectament. El caso de mpv es mas complejo porque requiere instalar y configurar un socket y ya eso le quita la sencillez.

En el caso de Mac OS X lo mejor es instalar Homebrew seguido de mplayer, python3 y luego pyradio

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install mplayer

brew install python3

pip3 install pyradio

Configuración

No hace falta configurar nada mas, PyRadio viene con un listado de emisoras precargadas y listo para funcionar, basta con ejecutar pyradio en el terminal para que se muestre la interfaz y el listado de emisoras predefinido.

Crear un listado de emisoras personalizado es muy fácil, solo hay que escribir una lista que incluya el nombre de la emisora seguido del url del stream y guardarlo como stations.csv dentro del directorio ~/.pyradio siguiendo el ejemplo de stations.csv disponible en el GitHub del proyecto.

El listado de mis emisoras favoritas lo mantengo en http://server.litelate.com/stations.csv y lo modifico cada varias semanas para agregar nuevas emisoras que consigo. Para agregar ese listado a una nueva instalación de PyRadio basta con ejecutar los siguientes comandos en el terminal:

mkdir ~/.pyradio

curl http://server.litelate.com/stations.csv -o ~/.pyradio/stations.csv

pyradio

¿Por qué?

Porque puedo.

No mentira. El año pasado compré un PowerBook G4 1.5 12", la hermosa pero hoy obsoleta laptop que entre 2005-2006 era lo que más quería pero los $1699 que costaba la ponía más que fuera de mi alcance. En el pasado tuve ya otro PowerBook de un modelo anterior que me sirvió bastante y tenía una pantalla más grande. Fue mi computadora secundaria entre 2011 y 2013 (la principal era un MacBook) y era bastante útil para escribir, enviar correos, escuchar música, trabajar en Keynote y demás cosas de oficina que era lo que necesitaba en ese momento. Además seguía siendo un equio competente para trabajar en Photoshop, Illustrator, Final Cut y otros.

Volviendo a 2017, la experiencia de usar una "Mac vieja" ha cambiado drásticamente. Lo que funcionaba bien antes sigue funcionando bien, el problema es que las aplicaciones recientes requieren un procesador Intel y nuevas versiones de OS X. Navegar en internet es prácticamente imposible porque el internet de hoy esta infectado de Javascript, algo que consume muchísimo CPU y es ineficiente, resultando en una terrible experiencia en los equipos antiguos.

Habiendo instalado todo lo que podía instalar y usar en este PowerBook quise ir un poco más allá probando software open source, pensando un poco fuera de la caja para tratar de sacarle el mayor provecho a ese equipo. Una de mis pasiones desde que tengo internet en mi casa (Dial-Up en 1999) ha sido la radio por internet, pero eso da para otro post. El asunto es que luego de experimentar con MacPorts y Tigerbrew descargando y probando programas que usaba en Linux me conseguí con una serie de aplicaciones que utilizan ncurses, una librería de programación que da interfaces básicas para programas dentro del terminal (command line).

Al tener disponibles en Mac tantas herramientas UNIX y ports de Linux me obsesioné con poder hacer el máximo con lo mínimo. Buscar alternativas actualizadas pero minimalistas, low end, de poco consumo de recursos y optimizadas. Resulta que se pueden hacer muchísimas cosas con muy poco peor hay que cambiar la forma en la que se hacen las cosas.

Después de un tiempo frustrado por lo que no podía hacer (o no hacer tán rápido o eficientemente) comencé a ver las cosas distinto y ver al PowerBook (y a otros equipos) con otros ojos. El PowerBook resulta ser una máquina genial para trabajar libre de distracciones porque Facebook, Twitter y YouTube andan TAN MAL que simplemente es mejor no utilizarlos. Tiene un teclado maravilloso, el mejor que ha hecho Apple en mi opinión, y es buenísima para escribir, trabajo de oficina, manejar correos y hacer cosas sencillas en internet.

Y ya toda esta justificación va mas larga que el post original así que seguro la uso de base para otro post.

Instalando Syncthing en Mac

Hace un tiempo escribí sobre Syncthing de una manera poco halagadora a pesar de las bondades. Luego estuve usando BitTorrent Sync por 8 meses hasta que complicaron la cosa al desconectarlo de BitTorrent y ponerlo en una compañía aparte (Resilio) con mucho énfasis en vender un producto. Eso, sumado a que la plataforma era cerrada, fue suficiente para buscar una alternativa así que decidí por la conocida.

Hay que aclarar que Resilio Sync es muy bueno, fácil de usar y el escalón natural para quien quiere algo más que Dropbox, pero yo quería aún más que eso. Con una instancia de Syncthing ya corriendo en mi servidor, solo debía actualizar los paquetes allí e instalar clientes en mis otros equipos.

Dos de mis otras computadoras son Apple y la manera más sencilla de instalar Syncthing (al igual que muchos otros paquetes open source) es utilizando Homebrew. Asumiendo que Homebrew esta instalado y funcionando correctamente, solo hace falta:

  1. Actualizar los paquetes de Homebrew brew update
  2. Instalar Syncthing brew install syncthing
  3. Correr el daemon como un servicio brew services start syncthing
Read more…

Un blog sencillo

Soy un tipo inconforme. Para mucha gente eso no es algo bueno, pero en lo personal creo que la inconformidad es lo que empuja a hacer las cosas mejor. Nunca he estado del todo conforme con ningún manejador de contenidos para web. Mis primeras experiencias fueron con blogs personales en Movable Type y Blogger, luego migré a Wordpress.com y por trabajo he usado Joomla y Wordpress. En la mayoría de los casos siempre falta algo y sobra mucho. El mejor momento lo tuve cuando usé Posterous porque el manejador era casi inexistente y la idea era hacer todo vía email. Pero quería más.

Luego de interesarme en el Markdown comencé a explorar opciones sencillas y compatibles para mantener un blog. Por un lado Jekyll cumple co todo en papel, pero en la práctica había algo que me hacía ruido; en cuanto a Ghost lo estuve esperando desde que salió en kickstarter pero no quería depender de node y los requerimientos que implica. Pico se acercaba más a lo que quería, Grav aún mucho mas al igual que Kirby, pero a todos les encontraba un "pero" en algún lugar. Dado los candidatos en la lista no vale caer en detalles de por qué nunca consideré Medium o Tumblr como opciones.

Tras probar TODAS las opciones de la lista del párrafo anterior me decidí por Yellow porque cumplía con todo lo que buscaba para un sistema de blogging / manejador de contenidos:

  • Libre de base de datos: No hay necesidad de utilizar ni mantener tablas en SQL, MariaDB o similares. Todo funciona con archivos de texto plano
  • Markdown nativo: Escribir y escribir, sin estar dando formato ni cargando editores extras. Da igual escribir con Sublime Text o el notepad de Windows. O simplemente nano.
  • Corre en cualquier servidor: Con la documentación para correr en Nginx y Apache, pero la capacidad de usar lighttpd o Caddy
  • Generador de HTML: Si no hay necesidad de un manejador de contenidos ni se actualiza tan seguido entonces no hay necesidad de tener un programa corriendo todo el tiempo para mantenerlo. Yellow permite exportar todo a HTML plano y así servir el site con los recursos mínimos necesarios, sumado al refuerzo en seguridad que esto implica. Read more…

Syncthing como alternativa a Dropbox

Buscando una manera práctica y rápida de sincronizar archivos entre varios dispositivos conseguí Syncthing, un proyecto que ofrece hacer exactamente eso con una amplia gama de dispositivos. No solo es multiplataforma, sino que a diferencia de Dropbox, tiene ejecutables para la arquitectura ARM que en este momento es lo que me interesa. A diferencia de Dropbox, esta alternativa no depende de la nube ni de tercerizar los datos a ninguna compañía, por el contrario, la sincronización se hace exclusivamente entre los dispositivos conectados y autorizados a través de identificadores únicos.

El proyecto es Open Source y esta en GitHub para auditar o modificar si se quisiera, y es compatible con Linux, Mac, Windows y Android. La sincronización se realiza a través del Block Exchange Protocol,un protocolo creado específicamente para Syncthing pero adaptable a cualquier proyecto. La instalación en Windows y Android es sencilla (como es de esperarse), mientras que en Linux requiere el paso adicional de instalarla a través de apt-get o pacman y en Mac utilizando Homebrew.

Sincronización fácil, gratis y libre

En mi caso decidí instalar el en Linux ARM un servidor base y que el resto de los dispositivos funcionaran como clientes, por decirlo de algún modo porque en realidad todos los dispositivos terminan cooperando y sincronizándose entre si. Luego de instalar y configurar la carpeta a compartir, basta con agregar los otros dispositivos a través del Device ID propio de cada aparato corriendo Syncthing y listo, aparatos sincronizados. Read more…

Samsung Galaxy Tab

Desde que leí el rumor de la salida de un tablet Android de Samsung me gustó la idea. Actualmente tengo un Samsung Galaxy Spica y me parece que es un teléfono excelente, muy buena cámara, muy capaz, así que tener algo similar pero más grande sería muy bueno.

En su sitio web estan las especificaciones del productos, son sorprendentes. Pantalla de 7 pulgadas a 1024×600, Android 2.2, Procesador de 1Ghz, Camara de 3 MP con autofocus, Adobe Flash, Multi-Touch, WiFi/3G y el tamaño perfecto.

Me gusta mucho el iPad, pero me siento más comodo con Android. Espero que no demoré mucho en salir al mercado y con un precio razonable. Creo que en comparación a los otros tablets, el Galaxy Tab sale muy bien parado.