Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo elegir un ordenador portátil ThinkPad de segunda mano

Imago voragine.net
[actualizado el ] • Por

Más o menos frecuentemente hay alguna persona que me pide consejo para comprar un ordenador portátil de segunda mano. Hay veces también que la pregunta es más genérica: ¿qué ordenador portátil me compro? También en este caso, casi siempre mi primera recomendación es comprar un ordenador de segunda mano.

Publico aquí los aspectos a tener en cuenta para elegir un ordenador de segunda mano, así si alguien tiene alguno más y le apetece dejarlo en los comentarios, quizás consigamos una guía más completa.

Pequeña guía de desarrollo rápido y optimizado de un theme de WordPress usando un starter theme, npm, gulp y sass

Imago voragine.net
[actualizado el ] • Por

La mayor parte de los sitios web que funcionan con WordPress pueden hacerlo eligiendo un theme del repositorio oficial o de cualquier otro y personalizándolo con las opciones disponibles en el panel de control. Incluso si se necesita desarrollar un theme hoy día es buena idea no empezar de cero, sino usando una estructura básica, genérica ya desarrollada. Por otro lado es recomendable usar ciertas herramientas que produzcan un theme optimizado, que cargue lo más rápido posible, que se adapte a todo tipo de dispositivos. Esto pasa, además de por estructurar bien la información para minimizar las consultas a base de datos, por producir archivos CSS, JS minimizados e imágenes comprimidas y optimizadas que agilicen la carga. Un buen starter theme para WordPress facilita ambas cosas: una estructura genérica sobre la que empezar a construir rápidamente, y un entorno de desarrollo que permita automatizar las tareas de optimización e ir probando los avances ágilmente.

En este post comparto mi manera de trabajar: qué starter theme utilizo últimamente y cuál es el flujo de trabajo con él.

Cómo evitar el error «Cannot modify header information – headers already sent» cuando se usa wp_redirect en WordPress

Imago voragine.net
[actualizado el ] • Por

Si se quiere redirigir a otra página en WordPress usando wp_redirect() suele ocurrir que no hay efecto alguno, que no se produce la redirección al incluir esta función en una función del archivo functions.php o en una plantilla de un tema.

WordPress devuelve un error del tipo "Cannot modify header information - headers already sent".

Servidor de webcam con Motion en una Raspberry Pi

Imago voragine.net
• Por

Para montar un servidor de webcam en una Raspberry Pi se puede usar Motion. Si ya se tiene un sistema raspbian corriendo en la rasp solo hace falta instalar y configurar Motion.

Motion está pensado para capturar y almacenar imágenes de una o varias cámaras, con la posibilidad de detectar eventos, y mostrar las imágenes capturadas en tiempo real vía HTTP, para poder acceder a ellas remotamente a través de una URL.

Espacios de encuentro diverso

Imago voragine.net
• Por

Publicación Civic Design Course

Domenico Di Siena lanzó la primera edición del Curso de Diseño Cívico en septiembre de 2015. Entonces nos pidió a Juan López-Aranguren y a mí que le ayudásemos a coordinar el curso. Desde entonces se han completado tres ediciones y ahora se está cursando la cuarta. Sin duda es uno de los proyectos más estimulantes en los que vengo participando en los últimos años. En 2018 se ha publicado el libro Civic Design que recoge teoría, metodología y proyectos desarrollados durante las tres primeras ediciones del curso. El libro está estupendamente coordinado por Cecilia Ciancio y Maje Reig Alberola. Cecilia y Maje me pidieron un texto corto de temática libre para la sección "Thoughts" del libro, que compila voces de personas que han formado parte de la comunidad del curso con la idea de dar una visión múltiple de lo que es el curso, más que una versión única. El enfoque me parece un acierto porque encaja mucho con el espíritu diverso del curso.

El texto lo acabé escribiendo en el último momento, el 15 de noviembre de 2018. Estaba tomando notas mientras veía el vídeo de la charla que había dado David Weinberger en Medialab-Prado unos días antes, y me di cuenta de que Weinberger estaba describiendo aspectos del curso a los que yo no había sido capaz de poner palabras. Las ventajas de la procrastinación.

La versión electrónica del libro Civic Design se puede descargar libremente (PDF, 140MB) desde la página de la Civic Innovation School.

Publico aquí el texto que escribí para el libro.

screen: ejecutar un comando en Linux y dejarlo corriendo tras cerrar la sesión

Imago voragine.net
• Por

GNU screen es un programa que permite gestionar varias sesiones en la línea de comandos en paralelo: permite crear terminales virtuales en la línea de comandos, visualizarlas al mismo tiempo en un mosaico, saltar de una a otra y crear varios mosaicos. Funciona como un gestor de ventanas en la línea de comandos. También sirve para lanzar un comando y dejarlo corriendo cuando se cierra la sesión.

Usar screen es muy fácil. Tiene muchas posibilidades. Aquí recojo únicamente las necesarias para abrir una sesión, desconectarse y reconectarse a ella, y finalizar la sesión.

Yo lo uso para lanzar procesos en máquinas remotas que tardan varias horas en ejecutarse. Hacer esto permite conectarse a una máquina remota, lanzar el proceso, desconectarse y dejarlo corriendo, y reconectarse más tarde para ver cómo va.

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}}