Configurabilidad y Política

guillotina papelLa política es como los culos, cada cual tiene el suyo. Por eso precisamente estoy en contra de los partidismos, no creo que se pueda condensar en un partido político toda la opinión política de una persona, en cuanto generalizas pierdes los matices. Pero volvamos al tema del post, la siguiente reflexión me ha venido a la cabeza a partir de el post de Clamav de Fanta. Cuando realizamos cualquier pieza de software tomamos una serie de decisiones por diseño, arbitrarias, porque nos dan la gana, que posiblemente no sean las mismas que haría otra persona. Cuando hacemos esto, estamos implementando política dentro de nuestro software, estamos haciendo un software político en lugar de uno apolítico.

Para esto precisamente apareció la configurabilidad en el software, dejar al administrador del sistema la posibilidad de establecer la política que él desee en cada momento. Incluso correr múltiples instancias del mismo software con distintas políticas o cualquier experimento que se desee.

  • La libertad de ejecutar el programa como se desee, con cualquier propósito (libertad 0).
  • […]

Las 4 libertades esenciales del software libre.

El usuario como marca la primera libertad del software libre va a ejecutar ese software como desee, o si lo desea no lo ejecutará. Todo software por muy configurable que sea implica algún tipo de política y ética que vas a asumir haciendo correr ese software. Gastar software libre se alinea con una política muy distinta a la de gastar software propietario, puedes ser consciente de ello o no, puede que te importe o no si eres apolítico en esta cuestión, pero de una forma u otra estás participando de una u otra política al igual que cuando votas o dejas de votar a un cierto partido, comes en un Burger King o en el bar de tu barrio, es política de consumo, posiblemente la política que menos efecto tenga, pero no quita para que continúe estando ahí.

Pero una vez decidido a utilizar un software qué mejor que amoldarlo a tus necesidades en todo lo posible, sí, a tu política. Esto es lo que hacen las distribuciones Linux, aplicar una política al software, configurarlo para homogeneizarlo a una serie de políticas preestablecidas. ¡Si una distro es una especie de partido político del software!

Por lo tanto cuanto más configurable sea tu software a más políticas distintas se podrá aplicar, más apolítico será. Recuerda que un software sólo es una herramienta, al igual que, por ejemplo, lo es la guillotina que encabeza el post (y también otras), su carácter político se lo da el uso que le demos a esa herramienta los usuarios.

Mi cocina en 2017

Este año he probado un buen número de nuevas recetas de cocina, comparto el listado para todo el que quiera probarlas, como veréis son sobre todo recetas saladas, más tradicionales, menos orientales o mediterráneas, de todo un poco. ¡Buen provecho!

Platón y la programación orientada a objetos

Según las ideas de Yegor Bugayenko, los buenos objetos en programación son una representación de los objetos en la vida real, por ejemplo no tendríamos un objeto Temperatura, si no más bien un objeto Termómetro que podríamos consultar, esta es la conclusión a la que se llega cuando extraes todo el pensamiento procedimental (procedural) de tu programación y te centras en utilizar únicamente objetos. El objeto se convierte en la abstracción en software de la realidad, cuando escribimos software estamos plasmando nuestras idea, nuestros conceptos, en código. Código que se ejecuta en máquinas y a su forma «vive» sobre esta con sus comportamientos y su interacción entre objetos. Estamos creando en este caso un mundo de las ideas sobre silicio, estamos proyectando nuestra mente en software. ¿Pero con qué finalidad? Trasladar esas ideas a otras personas ¿Cuál si no es el objetivo del software? Para ésto, como títeres en la caverna de la máquina, proyectaremos estas ideas sobre la pantalla y el altavoz, esperando que el usuario entienda nuestras ideas o simplemente las utilice en un propio beneficio. Se dice que el código almacena el conocimiento, no solo esto, además lo puede transmitir en sus dos representaciones, en su ejecución sobre una máquina como acabamos de ver y en una más básica, la lectura directa del código.

Y con esto llegamos directamente al lenguaje, porque cualquier lenguaje de programación no es más que otro tipo de lengua como el alemán o el italiano, pero con un vocabulario muy básico, las librerías, frameworks y en general el software orientado a objetos se encargan de alimentar ese vocabulario, creando una correspondencia directa entre palabras, ideas y software. Algo mágico tiene el lenguaje, sin el que el pensamiento conceptual tendría sentido, el ser humano no deja de crear y crear lenguas para comunicarse de distintas formas. Entonces mi duda es, ¿El lenguaje es una representación del mundo de las ideas del que hablaba Platón? ¿O, realmente los lenguajes SON es ese mundo de las ideas?

No veo poca diferencia entre estas dos preguntas, en el segundo caso la inteligencia artificial se podría conseguir aumentando el vocabulario sobre la máquina hasta que acoja el universo entero, en el primero aún deberíamos buscar el origen de todos los lenguajes, remontar el río hasta la fuente de la inteligencia. Otra opción es negar la mayor, porque el platonismo es hegemónico en nuestra civilización, es muy difícil de negar y siempre nos vamos a encontrar con ciertas verdades universales irrebatibles. Pero, ¿a dónde podemos llegar si desmontamos la teoría de una realidad abstracta sobre todos nosotros?

Dub: Los otros hackers de los 70

Los 70 son conocidos por el auge de los primeros hackers, fueron tiempos muy interesantes en Silicon Valley, las primeras computadoras con precios accesibles y tamaños reducidos empezaron a nacer de manos de jóvenes emprendedores con mucha ambición, a veces pocos escrúpulos… Bueno, ¿qué voy a contar yo que no haya contado ya toda la industria del espectáculo estadounidense?

Menos conocido es el caso de otros hackers, que en esos mismo años también empezaron a tener acceso a máquinas con las que realizar cosas nunca vistas, o mejor dicho oídas. En esos años en Jamaica se juntaron todas las condiciones para revolucionar la música, una cultura musical potente, un artista como Bob Marley regalando al mundo un nuevo estilo de música y por último, pero no menos importante, la ausencia de leyes de propiedad intelectual. Porque la técnica la tenían en todo el mundo, pero sólo estas condiciones podían hacer que un fallo en producción que dejara un tema sin voces hiciera saltar la chispa del dub.

Lo siguiente ya vendría rodado, las bases sin voces permitirían la aparición de maestros de ceremonias, el «toasting» al llegar a EEUU se convertiría en rap, en Europa el dub daría paso al Jungle, el drum and bass y se integraría en la cultura rave. Todo esto convergería en el dubstep y se infiltraría en las últimas décadas en la música dance. Difícil es negar la revolución musical que supuso esta música, la que vino a dar la vuelta al sonido, abajo empezó a ser arriba y viceversa. Sin más presentaciones os dejo con el documental que explica todo lo que os he querido transmitir.

Servidor de música casero

Con una Raspberry Pi y unos altavoces de PC nos podemos montar nuestro Jukebox para el siglo XXI y de paso olvidarnos de Spotify y Youtube rescatando nuestra antigua colección de música. La idea es no solo poder reproducir tu colección de música cuando lo desees, si no que en el caso de invitar a los amigos a casa, puedan seleccionar las canciones que quieran poner en cualquier momento, veremos hasta que punto podemos llegar, vamos a ponernos.

Necesitamos

  • Raspberry Pi con Raspbian: No importa el modelo, yo he probado con la 1 y funciona perfectamente. También podéis intentarlo en otras plataformas con cualquier distro basada en Debian.
  • Disco duro USB: Donde almacenar nuestra colección de música. Presupondré que ya tenemos configurado el disco para montarse automáticamente al encender la Raspberry, hay montones de tutoriales sobre como hacerlo.
  • Altavoces: En este caso voy a usar unos sencillos altavoces de PC con entrada mini jack.

Instalación

Añadimos el repositorio

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/jessie.list
sudo apt-get update

Instalamos mopidy, el servidor de música, con algunas extensiones para que no esté demasiado pelado.
sudo apt install mopidy mopidy-local-sqlite mopidy-tunein mopidy-podcast mopidy-youtube mopidy-internetarchive gstreamer1.0-plugins-bad
Además vamos a instalar una interfaz web muy pulida Spotmop, pero esto ya lo tenemos que instalar mediante el sistema de paquetería de Python, Pip.
sudo apt install python-pip
sudo pip install Mopidy-Spotmop

Configuración

Para correr como servicio mopidy vamos a proceder a reconfigurarlo, para cambiar la opción por defecto:

sudo dpkg-reconfigure mopidy

Y nos preguntará si queremos iniciar en el arranque, le decimos que sí y pasamos a editar la configuración.

sudo nano /etc/mopidy/mopidy.conf

Mi archivo de configuración ha quedado de la siguiente forma:
[core]
cache_dir = /var/cache/mopidy
config_dir = /etc/mopidy
data_dir = /var/lib/mopidy
[logging]
config_file = /etc/mopidy/logging.conf
debug_file = /var/log/mopidy/mopidy-debug.log
[local]
media_dir = /media/hdd/público/litox/files/Música
library = sqlite
scan_flush_threshold = 100
[m3u]
playlists_dir = /var/lib/mopidy/playlists
[mpd]
enabled = true
hostname = ::
port = 6600
password = 9876
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist = listall,listallinfo
default_playlist_scheme = m3u
[http]
enabled = true
hostname = ::
port = 6680
static_dir =
zeroconf = Mopidy HTTP server on $hostname
[spotmod]
enabled = true
[tunein]
timeout = 5000

Como podéis ver he cambiado el media_dir por mi directorio de música en owncloud, de esta forma lo tengo además todo sincronizado entre dispositivos. Obviamente debemos dar permisos de lectura y escritura al usuario al usuario mopidy en esta carpeta, por ejemplo añadiéndolo al mismo grupo al que pertenece el servidor, en mi caso www-data.

A reproducir

Una vez cargada la música en este directorio y reiniciado vamos a escanear la música que tenemos.

sudo mopidyctl local scan

Y cuando termine vamos a Spotmop para empezar a reproducir música. En el navegador abrimos http://raspberrypi.local:6680/spotmop/ y en el menú local podremos buscar álbum o autor para empezar a reproducir.

Desde cualquier dispositivo Android podremos hacer lo mismo instalándonos la aplicación Mopidy Mobile. No he conseguido que se anuncie el servicio en la red mediante Avahi, por lo que me ha tocado poner la dirección IP a mano con el puerto correspondiente para acceder. Una lástima, porque el objetivo era que cualquiera al que yo diera acceso a mi red, pudiera rápidamente descargar la aplicación y empezar a su alma selecter, espero que se solucione en el futuro este aspecto.

Fuentes:

https://www.inpimation.com/installing-mopidy-raspberry-pi-2/

https://docs.mopidy.com/en/latest/service/

Actualización:

Ahora he empezado a utilizar un cliente para GNU/Linux, Cantata, la configuración es sencilla, como host raspberrypi.local, el puerto MPD que si está por defecto es el 6600 como en el mío y la contraseña que en mi caso es 9876. Y así tendremos algo parecido Spotmop pero en versión nativa.

Los errores de Persona

Llevo tiempo queriendo comentar este artículo de autocrítica sobre Persona, el sistema fallido de identificación Web de Mozilla. Desde un principio tenía mis dudas sobre este sistema, unas dudas en el ámbito más personal que otra cosa, que quisieran suplantar OpenID ya me puso en contra, pero había problemas más importantes que Persona arrastraba, problemas de diseño que han sido los que han terminado con este proyecto definitivamente.

Como bien se explica en el artículo, uno de los problemas más graves fue una centralización implícita de un protocolo, que en un principio estaba pensado para ser distribuido. Para entenderlo tenemos que pensar todo sistema tecnológico como una cadena, unos eslabones engarzan con otros, si queremos que el sistema sea distribuido todos los eslabones de la cadena deben serlo, puesto que con uno solo que permanezca centralizado o incluso descentralizado hará perder esta cualidad a todo el sistema. Podemos ir siguiendo esta cadena hasta el más alto nivel y nos daremos cuenta de que si el software no es libre no es posible crear un sistema distribuido, pero aún más, nos podemos encontrar con sistemas centralizados de facto, debemos empezar a pensar en lo distribuido como una forma de pensar, un estilo de vida incluso, algo que no está en la tecnología, más bien en las personas.

Ubuntu hacia la auténtica convergencia

Ubuntu al fin ha abandonado el desarrollo de su escritorio alternativo con Unity+Mir, para volver a Gnome, esta vez con el muchísimo más moderno gestor gráfico Wayland, quizá es má correcto llamarlo protocolo gráfico. Esto reconcilia a Ubuntu con gran parte de la comunidad, se acaba con una división inútil y confirma la falta de carisma de Canonical para formar una comunidad a su alrededor, cosa que por el contrario sí ha conseguido RedHat, no sin falta de polémica.

Ubunto ha abierto un camino hacia una auténtica convergencia, la de las distribuciones GNU/Linux, quizá solo unidos se le pueda hacer frente al imparable Android, el que creo es el auténtico enemigo del Software Libre. Respecto a la convergencia hacia el móvil veremos nuevas soluciones construidas desde la comunidad, no me cabe duda.

Pero resuelta la parte gráfica en todas las distribuciones mientras tanto se ha abierto un nuevo frente, el auge de las aplicaciones en contenedores ha puesto en evidencia los antiguos gestores de paquetes de las distribuciones, para solucionar este problema se han creado soluciones como Flatpack y Snap, que complementan a los anteriores y nos permiten instalar aplicaciones de terceros de forma segura en nuestros sistemas. Esto puede derivar en la creación de tiendas de aplicaciones para todo el ecosistema GNU/Linux, con este objetivo creó Canonical Snap, paralelamente Flatpack se desarrolló desde Gnome, RedHat y toda la comunidad, mi apuesta en este asunto es una vez más por la solución más abierta, Flatpack, una que no te ata a la tienda de aplicaciones que Canonical decida, pero queda mucho camino por recorrer, veremos como evoluciona este tema.

Settle Up, un bote virtual

Antes que nada tengo que decir que no me llevo comisión por anunciar este software pero que si sus creadores quieren recompensarme… ¡Les paso mi número de cuenta! 😀

La idea es dar una descripción somera de este software que me ha parecido muy útil tanto por sus ideas como por su forma de presentarlas. Además intenta continuar una conversación formada sobre software de contabilidad orientado a comunidades que empezaba aquí.

Settle Up permite, gestionar las cuentas de un grupo sin tener un fondo común, o por decirlo de alguna forma este fondo común es virtual y la aplicación está al tanto en todo momento de las deudas entre los integrantes del grupo. Me parece la aplicación definitiva para viajes con los amigos, pero también puede ser útil en cenas y cualquier tipo de evento social pues digamos que te hace olvidarte de aclarar cuentas, siempre están claras.
El funcionamiento de la aplicación es este, tres pantallas; pagos, deudas y resumen:

Pagos: Un feed con los pagos y transacciones del grupo, siempre me acuerdo del «Todo es un feed» de Manuel.


Deudas: Muestra cuanto debe una persona a otra y trae una opción activada por defecto que te minimiza las deudas para hacer el mínimo número de transacciones.

Resumen: Lo que ha pagado, gastado y recibido cada persona y su cuenta total. Además muestra el total gastado, por lo que se puede al final del viaje por ejemplo saber cuanto nos hemos gastado en él. Además indica quien es el siguiente en pagar, la persona que más deudas tiene para equilibrar un poco la balanza.

Integración de Jack y Pulseaudio

Me he llevado una grata sorpresa desde la última vez que intenté configurar mi PC para utilizar jackd, ya sabéis, en GNU el audio a nivel de usuario común funciona mediante Pulseaudio, pero a nivel profesional, para edición y producción de música se utiliza Jack, un sistema mediante el que las aplicaciones profesionales se conectan para permitir la mínima latencia entre la entrada y la salida, esto permite que por ejemplo si tenemos un teclado MIDI conectado y tocamos una tecla no haya un retraso no esperado en escuchar la nota. Lo normal en Linux es que tuvieras tu sistema configurado con jackd o con Pulseadio, eran en gran parte excluyentes y cambiar entre uno y otro daba bastantes dolores de cabeza. Pero recientemente a aparecido un puente que permite a Pulseaudio trabajar como un dispositivo más gestionado por Jack, es decir que podremos encaminar el audio de nuestras aplicaciones no profesionales, como Firefox mismo, hacia todo el sistema de Jack. Vamos a ver cómo:

En primer lugar vamos a usar KXStudio para tener las últimas versiones de las aplicaciones y utilidades para audio a nivel profesional. Descargamos e instalamos el .deb desde la web de KXStudio.

Actualizamos con los nuevos repositorios e instalamos tanto el gestor de Jack, Cadence como el puente entre Pulseaudio y Jack.

sudo apt update
sudo apt upgrade
sudo apt install pulseaudio-module-jack cadence

Vamos a trabajar con audio, así que nos añadimos al grupo pertinente:
sudo adduser usuario audio

Y abrimos cadence y lo configuramos tal como se muestra, marcando que se ejecute jackd y el bridge al inicio, además habrá que configurar jackd para que no se produzcan xruns, lo que queda fuera del alcance de este tutorial.

Con esto ya podemos hacer conectar Pulseaudio mediante Jack, lo vemos a continuación en Catia, lo encontraréis en la pestaña tools de Cadence.

 

Resolución de problemas

Después de seguir estos pasos me he encontrado con un problema, cuando conecto los auriculares a la toma no se escucha absolutamente nada, lo he solucionado mediante la utilidad HDAJackRetask.

sudo apt install alsa-tools-gui

Abrimos la utilidad y trasteamos un poco con ella hasta encontrar nuestra configuración adecuada.

El sorprendente ser humano

Se cuenta que el Dios emperador Leto II necesitó más de 3.000 años para, mediante su programa de selección artificial, crear un ser humano invisible a la presciencia, Siona Atreides. Esto quiere decir que ella y sus descendientes tenían la habilidad de esconder sus intenciones y evitar que aquellos que tenían la capacidad de anticipar los movimientos del resto, lo hicieran con ellos. Esta cualidad permite a la humanidad no volver a sufrir el yugo de los tiranos prescientes y es uno de los legados más importantes de Leto II.

Todo esto es obviamente ficción, relatada en las novelas de Dune de Frank Herbert, la realidad es mucho más sorprendente. En la realidad un simple humano, pero con la ventaja de millones de años de selección natural y una inteligencia brillante, consiguió el año pasado demostrarnos que no es necesario la llegada de ningún superhombre, la simple pero poderosa inteligencia humana ya puede ganar al tirano que mediante su brutal capacidad de cálculo conoce todas las probabilidades de que cualquier suceso ocurra y puede ver el futuro de la misma forma que nosotros podemos otear el horizonte.

Así como Siona «sorprendía» a su emperador, Lee Sedol sorprendió a la maquinaria de Google, arrancándole una victoria, solamente una vez, es una habilidad que hemos entrenado poco, pero Siona sólo tuvo que sorprender realmente una vez al Dios emperador.

Quien sabe lo que nos deparará el futuro, lo que es seguro es que nadie nos tendrá que subyugar durante cuatro milenios para conseguir esta habilidad, ya la llevamos dentro, la habilidad de sorprender.