Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Instalar LineageOS en un Motorola Moto G desde Linux

Imago voragine.net
• Por

Estas navidades ha dejado de funcionar el teléfono de mi madre, un Wiko Rainbow que ha salido bastante malo. Mi hermana acaba de cambiar de teléfono porque su antiguo Motorola Moto G le daba algún problema con el micrófono y los altavoces. Antes de que mi madre se comprase un nuevo teléfono me apetecía ver si podía reutilizar el de mi hermana, si los problemas que tenía eran de hardware o de software: si con otro sistema operativo el teléfono volvía a funcionar y mi madre podía usarlo.

He probado a instalar LineageOS en el Moto G y por ahora el micrófono y los altavoces funcionan correctamente.

Cómo consultar la distribución de teclado activa y cómo cambiarla con línea de comandos

Conocer el comando para consultar y editar la distribución de teclado (keyboard layout) es útil para poder asociarlo a un atajo de teclado en cualquier escritorio o entorno de ventanas. Un comando bastante genérico que se encuentra en casi todas las distribuciones Linux es setxkbmap.

Para cambiar la distribución de teclado a una que ya tengamos instalada en el sistema:

skotperez@lee:~$ setxkbmap es

Para consultar la distribución de teclado:

skotperez@lee:~$ setxkbmap setxkbmap -query
rules:      evdev
model:      pc105
layout:     es

Usando submodules en git

Imago voragine.net
• Por

Los submodules de git permiten incluir un repositorio en otro en cualquier ubicación. Incluir por ejemplo una librería de javascript en un proyecto web como un módulo permite funcionar con su última versión fácilmente, sin necesidad de preocuparse por sustituir versiones manualmente: basta actualizar el repositorio.

Yo he usado los módulos de git por primera vez para hacer una web con Hugo. En el repositorio del sitio web he incluido el theme Learn de Hugo como módulo.

Cómo hacer un contador en un loop (range) de Hugo

Esa operación básica en casi cualquier lenguaje que es poner en funcionamiento un contador en Go no lo es en absoluto. Estoy aprendiendo la sintaxis que usa Hugo para construir sus templates, Go templates, y pensé que definir una variable numérica, asignarle el valor 0, e incrementar su valor con cada iteración se haría igual que en cualquier otro lenguaje, pero no. De hecho hasta que ha salido la versión 0.48 de Hugo no se podía ni redefinir el valor de una variable. Para versiones anteriores hay que recurrir a Scratch, una serie de métodos que permiten salvar esta limitación en Go Template.

Usando Scratch hacer un counter vuelve a ser posible:

{{ $.Scratch.Set "counter" 0 }}
{{range $array }}
    {{ $.Scratch.Set "counter" (add ($.Scratch.Get "counter") 1) }}
    Valor de $counter en esta vuelta del loop: {{$.Scratch.Get "counter"}}
{{end}}

Entorno de desarrollo para R RStudio y RStudio server en Debian

Imago voragine.net
• Por

RStudio es el entorno de desarrollo más extendido para programar con R. Me cuesta usar un entorno de desarrollo que no sea vim pero parece ser que en el caso de R merece la pena, así que lo he instalado en mi Debian Buster.

He aprovechado para instalar y probar RStudio Server, así que en este pequeño manual lo cuento también, y cómo hacer las configuraciones básicas. RStudio Server permite usar RStudio desde cualquier máquina cliente a través de un navegador.

Redes sociales verticales open source

Imago voragine.net
• Por

Las redes sociales verticales o redes sociales de nicho son aquellas que están limitadas a un contexto temático, geográfico... Suelen ser cerradas, accesibles bajo registro. Academia.edu para académicos, Github para programadores, Doximity para médicos y otros profesionales de la salud en Estados Unidos.

Estamos montando la infraestructura de la Civic Innovation School (CIS), el entorno colaborativo de aprendizaje de Civicwise. Uno de sus espacios será una red social vertical que funcione como lugar de encuentro e intercambio de toda la red en torno a la CIS.

Queremos una solución que sea de código abierto, fácilmente accesible desde dispositivos móviles y que no requiera una inversión de trabajo muy grande para ponerla en marcha o mantenerla. A continuación algunas opciones que barajamos.

pass, el gestor de contraseñas de línea de comandos

Imago voragine.net
• Por

pass es un gestor de contraseñas de línea de comandos. Sigue la filosofía UNIX, toda una cultura y unos valores surgidos alrededor del desarrollo del sistema operativo UNIX: minimalismo, modularidad, facilidad de reutilización del código. En la práctica este tipo de desarrollo produce programas que hacen una sola cosa muy bien, programas que se pueden combinar de la misma manera que se usan las bibliotecas en diferentes entornos de programación, programas que utilizan archivos de texto para guardar la información y configuración. Son valores que Linux ha heredado.

El funcionamiento de pass es simple: guarda cada contraseña en un archivo de texto encriptado bajo una clave GPG. La base de datos de contraseñas es a su vez un repositorio git en el que cada nueva contraseña o modificación de una existente se añade mediante un commit que realiza automáticamente pass.

La estructura de archivos de texto hace que interactuar con pass sea muy sencillo, así que hay multitud de clientes que permiten acceder a la base de datos de contraseñas desde navegadores, editores, entornos de programación...

A continuación explico brevemente cómo instalar y configurar pass en Linux Debian, y cómo instalar la extensión passff para acceder a la base de datos de contraseñas desde Firefox.

Incluir tipos de contenido personalizado (custom post types) en el feed principal de un sitio web WordPress

Por omisión en el feed principal de un sitio que funciona con WordPress se muestran las entradas del tipo de contenido post. Para incluir otros tipos de contenidos se puede usar el siguiente código, añadiéndolo al archivo functions.php:

add_filter( 'pre_get_posts', 'prefix_custom_feed' );
function prefix_modify_feed( $query ) {
        if ( $query->is_feed() )
            $query->set( 'post_type', array( 'post', 'link' ) ); 
        return $query;
}

También se puede obtener un feed combinado modificando los parámetros de la URL del feed, de la siguiente manera:

https://voragine.net/feed?post_type[]=post&post_type[]=link