<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>livingIT</title>
		<link>https://livingit.de/es/</link>
		<description>Recent content on livingIT</description>
		<generator>Hugo</generator>
		<language>es</language>
		
		
		
		
			<lastBuildDate>Wed, 07 Oct 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://livingit.de/es/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Concejal voluntario: ¿qué hago realmente?</title>
				<link>https://livingit.de/es/politics/ehrenamtlicher-stadtrat/</link>
				<pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/politics/ehrenamtlicher-stadtrat/</guid>
				<description>Desde las elecciones municipales de 2026 soy concejal voluntario en Rodgau, por Volt. A menudo la gente me pregunta: ¿Qué se hace realmente en ese cargo? ¿Ahora te sientas en el parlamento municipal? La respuesta corta: no. La respuesta larga está aquí.</description>
			</item>
			<item>
				<title>Discurso en el Congreso Regional 2026 en Darmstadt</title>
				<link>https://livingit.de/es/politics/rede-lpt-2026/</link>
				<pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/politics/rede-lpt-2026/</guid>
				<description>Un alegato a favor de confiar en nuestros miembros: saber reconocer los propios límites es un proceso de aprendizaje personal que deberíamos confiar a nuestros miembros, en lugar de negarles de antemano cargos de partido y mandatos. Sobre todo en el ámbito rural, asumir varios roles a la vez es una fortaleza. Un llamamiento a orientar nuestras normas hacia la realidad de un partido joven y en crecimiento, para que Volt siga siendo pragmático, progresista y paneuropeo.</description>
			</item>
			<item>
				<title>Los bookmarks no son ramas, y ese es el punto</title>
				<link>https://livingit.de/es/software/jj-08-bookmarks-vs-branches/</link>
				<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-08-bookmarks-vs-branches/</guid>
				<description>&lt;h1 id=&#34;los-bookmarks-no-son-ramas-y-ese-es-el-punto&#34;&gt;Los bookmarks no son ramas, y ese es el punto&lt;/h1&gt;&#xA;&lt;p&gt;Parte 8 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Llamar &amp;ldquo;bookmarks&amp;rdquo; en lugar de &amp;ldquo;ramas&amp;rdquo; a los punteros con nombre de jj parecía&#xA;vocabulario innecesario al principio. No lo es. Una rama de Git avanza automáticamente&#xA;cada vez que haces commit mientras está en checkout: la referencia y tu línea de&#xA;trabajo actual son la misma cosa hasta que cambias explícitamente. Un bookmark de jj&#xA;está desacoplado de eso: puedes estar trabajando varios commits más allá del último&#xA;sitio al que apunta un bookmark, y simplemente se queda ahí hasta que lo mueves con&#xA;&lt;code&gt;jj bookmark set&lt;/code&gt; o haciendo rebase del commit al que está adjunto.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Los compañeros que nunca tocan jj no necesitan saber que existe</title>
				<link>https://livingit.de/es/software/jj-09-git-only-teammates-dont-need-to-care/</link>
				<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-09-git-only-teammates-dont-need-to-care/</guid>
				<description>&lt;h1 id=&#34;los-compañeros-que-nunca-tocan-jj-no-necesitan-saber-que-existe&#34;&gt;Los compañeros que nunca tocan jj no necesitan saber que existe&lt;/h1&gt;&#xA;&lt;p&gt;Parte 9 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Esta era la pregunta que más importaba antes de adoptar nada de esto para trabajo de&#xA;verdad: qué pasa cuando un comentario de revisión de un PR viene de alguien que usa&#xA;&lt;code&gt;git&lt;/code&gt; a secas, o cuando yo mismo recurro por costumbre a un comando &lt;code&gt;git&lt;/code&gt; a secas. La&#xA;respuesta resultó ser la parte menos dramática de toda la serie: no pasa nada&#xA;especial, porque el modo colocado significa que jj está leyendo y escribiendo la&#xA;misma base de datos de objetos de Git que todos los demás. Un commit empujado con&#xA;&lt;code&gt;git push&lt;/code&gt; y un commit empujado con &lt;code&gt;jj git push&lt;/code&gt; son el mismo tipo de objeto al otro&#xA;lado.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Editar el historial sin contener la respiración</title>
				<link>https://livingit.de/es/software/jj-07-editing-history-without-holding-my-breath/</link>
				<pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-07-editing-history-without-holding-my-breath/</guid>
				<description>&lt;h1 id=&#34;editar-el-historial-sin-contener-la-respiración&#34;&gt;Editar el historial sin contener la respiración&lt;/h1&gt;&#xA;&lt;p&gt;Parte 7 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Los tres movimientos que cubre esta lección (empezar trabajo nuevo, editar trabajo&#xA;existente, empezar trabajo nuevo desde un punto del pasado) se corresponden con cosas&#xA;que ya hacía constantemente en Git. La diferencia es cuánto solía prepararme para&#xA;ellas.&lt;/p&gt;&#xA;&lt;p&gt;Que &lt;code&gt;jj new&lt;/code&gt; cierre la copia de trabajo actual y abra una vacía no tiene nada de&#xA;notable, es básicamente &lt;code&gt;git commit&lt;/code&gt; con el paso de staging eliminado. El que cambió&#xA;cómo trabajo es &lt;code&gt;jj edit &amp;lt;change-id&amp;gt;&lt;/code&gt;. Arreglar algo dos commits atrás solía&#xA;significar &lt;code&gt;git rebase -i&lt;/code&gt;, elegir &lt;code&gt;edit&lt;/code&gt; en la línea correcta, hacer el arreglo,&#xA;&lt;code&gt;git rebase --continue&lt;/code&gt;, y esperar que nada más abajo entrara en conflicto por el&#xA;camino. Con jj, &lt;code&gt;jj edit&lt;/code&gt; simplemente mueve la copia de trabajo a ese commit.&#xA;Cualquier archivo que toque lo enmienda directamente. Los descendientes reciben rebase&#xA;automáticamente la próxima vez que jj necesite mostrarme el grafo. Sin estado de HEAD&#xA;desanclado, sin un rebase de varios pasos que abandonar a mitad de camino si cambio&#xA;de opinión: &lt;code&gt;jj undo&lt;/code&gt; cubre eso.&lt;/p&gt;</description>
			</item>
			<item>
				<title>d-you: pensar la identidad digital a la europea, y por fin hacerla realidad</title>
				<link>https://livingit.de/es/politics/d-you/</link>
				<pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/politics/d-you/</guid>
				<description>La EUDI Wallet y d-you son una oportunidad para dar forma a una identidad digital europea, segura y apta para el uso cotidiano. Lo decisivo es que se respeten la protección de datos y los estándares comunes, y que al mismo tiempo asociaciones, pequeñas organizaciones y ofertas gratuitas tengan un acceso sencillo. La digitalización necesita exigencias altas, pero también el valor de empezar, acumular experiencia y mejorar continuamente las soluciones.</description>
			</item>
			<item>
				<title>Conseguir que jj log hable del remoto</title>
				<link>https://livingit.de/es/software/jj-06-a-log-that-tells-me-about-the-remote/</link>
				<pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-06-a-log-that-tells-me-about-the-remote/</guid>
				<description>&lt;h1 id=&#34;conseguir-que-jj-log-hable-del-remoto&#34;&gt;Conseguir que jj log hable del remoto&lt;/h1&gt;&#xA;&lt;p&gt;Parte 6 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Lo que me hizo confiar en &lt;code&gt;jj log&lt;/code&gt; como herramienta de uso diario en lugar de como una&#xA;curiosidad fue ver aparecer en él el estado del remoto sin ceremonia adicional.&#xA;&lt;code&gt;jj git fetch&lt;/code&gt; actualiza la vista que jj tiene de cada bookmark remoto, y la plantilla&#xA;de log por defecto ya anota los commits con los bookmarks (locales, remotos, o ambos)&#xA;que apuntan a ellos.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hacer que jj se parezca a Tokyo Night</title>
				<link>https://livingit.de/es/software/jj-05-tokyo-night-in-the-terminal/</link>
				<pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-05-tokyo-night-in-the-terminal/</guid>
				<description>&lt;h1 id=&#34;hacer-que-jj-se-parezca-a-tokyo-night&#34;&gt;Hacer que jj se parezca a Tokyo Night&lt;/h1&gt;&#xA;&lt;p&gt;Parte 5 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Esta es la lección menos esencial de la serie y en la que más disfrute inmediato&#xA;invertí. jj no incluye presets de temas: incluye una tabla de configuración&#xA;&lt;code&gt;[colors]&lt;/code&gt; en la que cada clave es una etiqueta de estilo adjunta a una salida&#xA;basada en plantillas (&lt;code&gt;change_id&lt;/code&gt;, &lt;code&gt;bookmarks&lt;/code&gt;, &lt;code&gt;conflict&lt;/code&gt;, y demás), y el valor es&#xA;un nombre de color, una cadena hexadecimal, o una tabla para negrita, cursiva,&#xA;subrayado. Ese es un mecanismo más general que un cambiador de tema fijo, a costa de&#xA;tener que construir el tema uno mismo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Forkeando repositorios con jj</title>
				<link>https://livingit.de/es/software/working-with-forked-repositories/</link>
				<pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/working-with-forked-repositories/</guid>
				<description>&lt;h1 id=&#34;forkeando-repositorios-con-jj&#34;&gt;Forkeando repositorios con jj&lt;/h1&gt;&#xA;&lt;p&gt;&amp;ldquo;Fork&amp;rdquo; es una de las palabras más usadas en el trabajo diario con GitHub, GitLab,&#xA;Gitea, Forgejo o Bitbucket, y no existe ni en git ni en jj. &lt;code&gt;git help&lt;/code&gt; no tiene&#xA;ningún comando &lt;code&gt;fork&lt;/code&gt;, y &lt;code&gt;jj help&lt;/code&gt; tampoco. Todo lo que hace que forkear parezca&#xA;una extensión natural del control de versiones es una funcionalidad de la&#xA;plataforma de hosting, añadida sobre una herramienta que solo entiende de&#xA;repositorios, commits y refs - y esa frontera jj ni siquiera la toca. Los&#xA;ejemplos de abajo usan jj en todo momento, en modo colocated.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Cómo está construido jj realmente por debajo</title>
				<link>https://livingit.de/es/software/jj-04-how-jj-is-built/</link>
				<pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-04-how-jj-is-built/</guid>
				<description>&lt;h1 id=&#34;cómo-está-construido-jj-realmente-por-debajo&#34;&gt;Cómo está construido jj realmente por debajo&lt;/h1&gt;&#xA;&lt;p&gt;Parte 4 de 9.&lt;/p&gt;&#xA;&lt;p&gt;El modelo mental del artículo anterior (la copia de trabajo como un commit, el&#xA;identificador de cambio separado del identificador de commit) es la historia de cara&#xA;al usuario. Tras leer los documentos de diseño y la disposición del código fuente de&#xA;jj durante un rato más de lo estrictamente necesario, la arquitectura subyacente&#xA;explica &lt;em&gt;por qué&lt;/em&gt; ese modelo se sostiene, y por qué el modo colocado no se siente como&#xA;ejecutar dos sistemas de control de versiones pegados con cinta adhesiva.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Necesidad y espectáculo: el descuento en el combustible como ejemplo</title>
				<link>https://livingit.de/es/politics/tankrabatt-notwendigkeit-und-schau/</link>
				<pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/politics/tankrabatt-notwendigkeit-und-schau/</guid>
				<description>Un descuento en el combustible justo antes de una elección: qué cuesta, qué aportan las petroleras, y si hay pruebas de que este tipo de regalo influya realmente en el resultado electoral.</description>
			</item>
			<item>
				<title>El vocabulario que jj toma prestado de Git, cambia y descarta</title>
				<link>https://livingit.de/es/software/jj-vocabulary-vs-git/</link>
				<pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-vocabulary-vs-git/</guid>
				<description>&lt;h1 id=&#34;el-vocabulario-que-jj-toma-prestado-de-git-cambia-y-descarta&#34;&gt;El vocabulario que jj toma prestado de Git, cambia y descarta&lt;/h1&gt;&#xA;&lt;p&gt;La trampa con &lt;code&gt;jj&lt;/code&gt; es que reutiliza varias palabras de Git para cosas distintas, en&#xA;lugar de inventar términos nuevos de principio a fin. Eso es peor que una ruptura limpia,&#xA;al menos al principio: una palabra genuinamente nueva obliga a buscarla, una familiar&#xA;deja asumir que ya la conoces.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Branch se convirtió en bookmark, y la diferencia no es cosmética.&lt;/strong&gt; Un branch de Git&#xA;siempre sigue su punta - haces commit sobre él y avanza contigo, automáticamente. Un&#xA;bookmark de jj no hace nada de eso; se queda donde lo dejaste hasta que lo mueves con&#xA;&lt;code&gt;jj bookmark set&lt;/code&gt;. La primera vez que hice commit tres veces esperando que mi bookmark de&#xA;feature me siguiera y descubrí que seguía apuntando al primer commit, esto dejó de ser&#xA;una rareza de nombres y pasó a ser un hecho que tuve que interiorizar de verdad.&lt;/p&gt;</description>
			</item>
			<item>
				<title>La copia de trabajo es un commit</title>
				<link>https://livingit.de/es/software/jj-03-working-copy-as-a-commit/</link>
				<pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-03-working-copy-as-a-commit/</guid>
				<description>&lt;h1 id=&#34;la-copia-de-trabajo-es-un-commit-y-otras-cosas-que-tardaron-un-momento-en-encajar&#34;&gt;La copia de trabajo es un commit, y otras cosas que tardaron un momento en encajar&lt;/h1&gt;&#xA;&lt;p&gt;Parte 3 de 9.&lt;/p&gt;&#xA;&lt;p&gt;El modelo mental de Git tiene tres capas: directorio de trabajo, índice (área de&#xA;staging) y commits. La mayor parte de la fricción del día a día que asocio con Git,&#xA;&lt;code&gt;git add -p&lt;/code&gt;, olvidarme de preparar un archivo, &lt;code&gt;git status&lt;/code&gt; mostrando secciones&#xA;solapadas de &amp;ldquo;preparado&amp;rdquo; y &amp;ldquo;sin preparar&amp;rdquo; para el mismo archivo, viene de gestionar&#xA;la frontera entre las dos primeras.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Modo colocado</title>
				<link>https://livingit.de/es/software/jj-02-colocated-mode-first-impressions/</link>
				<pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-02-colocated-mode-first-impressions/</guid>
				<description>&lt;h1 id=&#34;modo-colocado-dos-almacenes-un-directorio&#34;&gt;Modo colocado: dos almacenes, un directorio&lt;/h1&gt;&#xA;&lt;p&gt;Parte 2 de 9.&lt;/p&gt;&#xA;&lt;p&gt;La instalación en sí no tiene nada de particular: un gestor de paquetes o un&#xA;&lt;code&gt;cargo install&lt;/code&gt;, luego una configuración de &lt;code&gt;user.name&lt;/code&gt;/&lt;code&gt;user.email&lt;/code&gt;, con la misma&#xA;forma que la configuración de primera ejecución de Git. La parte interesante empieza&#xA;en &lt;code&gt;jj git init --colocate&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ejecuta eso dentro de un checkout de Git existente y deja un directorio &lt;code&gt;.jj&lt;/code&gt; junto a&#xA;&lt;code&gt;.git&lt;/code&gt;, añade &lt;code&gt;.jj/&lt;/code&gt; a &lt;code&gt;.git/info/exclude&lt;/code&gt; para que nunca aparezca como sin seguir, e&#xA;importa las ramas actuales y &lt;code&gt;HEAD&lt;/code&gt; como commits de jj. Nada en &lt;code&gt;.git&lt;/code&gt; se reescribe.&#xA;Si borrara &lt;code&gt;.jj&lt;/code&gt; ahora mismo, el repositorio sería exactamente el repo Git puro que&#xA;era antes, sin perder nada.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Por qué mirar siquiera Jujutsu</title>
				<link>https://livingit.de/es/software/jj-01-why-jj/</link>
				<pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-01-why-jj/</guid>
				<description>&lt;h1 id=&#34;por-qué-mirar-siquiera-jujutsu&#34;&gt;Por qué mirar siquiera Jujutsu&lt;/h1&gt;&#xA;&lt;p&gt;Parte 1 de 9 de una serie sobre aprender &lt;code&gt;jj&lt;/code&gt; en modo colocado.&lt;/p&gt;&#xA;&lt;p&gt;Git funciona. Quince años después, el ecosistema a su alrededor es enorme y cada&#xA;compañero de equipo ya lo conoce. Ese es un listón alto para cualquier cosa que&#xA;pretenda reemplazarlo, y Jujutsu (&lt;code&gt;jj&lt;/code&gt;) no intenta superar ese listón de un salto:&#xA;intenta sentarse encima de los mismos repositorios Git que todo el mundo ya tiene,&#xA;de modo que adoptarlo es una elección personal en lugar de una migración de equipo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Portar una configuración de fish a nushell</title>
				<link>https://livingit.de/es/software/fish-to-nu-port/</link>
				<pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/fish-to-nu-port/</guid>
				<description>&lt;h1 id=&#34;portar-una-configuración-de-fish-a-nushell-dos-errores-que-solo-aparecen-en-una-shell-de-verdad&#34;&gt;Portar una configuración de fish a nushell: dos errores que solo aparecen en una shell de verdad&lt;/h1&gt;&#xA;&lt;p&gt;Llevo años usando fish como shell diaria, con una configuración gestionada por chezmoi que cubre la preparación del PATH, integraciones de herramientas (starship, zoxide, atuin, mise), un par de docenas de abreviaturas y un puñado de funciones propias. Nushell estaba al lado como un esqueleto sin configurar, instalado pero nunca usado de verdad. Esta semana lo puse a la par.&lt;/p&gt;</description>
			</item>
			<item>
				<title>cargo: command not found, aunque rustup está instalado</title>
				<link>https://livingit.de/es/software/rustup-keg-only-path-fix/</link>
				<pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/rustup-keg-only-path-fix/</guid>
				<description>&lt;h1 id=&#34;cargo-command-not-found-aunque-rustup-está-instalado&#34;&gt;cargo: command not found, aunque rustup está instalado&lt;/h1&gt;&#xA;&lt;p&gt;Síntoma: &lt;code&gt;rustup&lt;/code&gt; funciona, &lt;code&gt;rustup show&lt;/code&gt; lista una toolchain instalada y activa, pero &lt;code&gt;cargo&lt;/code&gt;, &lt;code&gt;rustc&lt;/code&gt; y &lt;code&gt;rustfmt&lt;/code&gt; fallan todos con &amp;ldquo;command not found&amp;rdquo;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;causa&#34;&gt;Causa&lt;/h2&gt;&#xA;&lt;p&gt;En macOS con Homebrew, &lt;code&gt;rustup&lt;/code&gt; es una fórmula &lt;strong&gt;keg-only&lt;/strong&gt;. Homebrew solo enlaza el propio binario &lt;code&gt;rustup&lt;/code&gt; dentro de &lt;code&gt;/opt/homebrew/bin&lt;/code&gt;. No enlaza los shims proxy que rustup normalmente incluye junto a él, &lt;code&gt;cargo&lt;/code&gt;, &lt;code&gt;rustc&lt;/code&gt;, &lt;code&gt;rustfmt&lt;/code&gt;, &lt;code&gt;cargo-clippy&lt;/code&gt;, etcétera. Esos viven en el keg:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Una suma de comprobación silenciosa que rompía cada subida compatible con S3</title>
				<link>https://livingit.de/es/software/a-silent-checksum/</link>
				<pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/a-silent-checksum/</guid>
				<description>&lt;h1 id=&#34;una-suma-de-comprobación-silenciosa-que-rompía-cada-subida-compatible-con-s3&#34;&gt;Una suma de comprobación silenciosa que rompía cada subida compatible con S3&lt;/h1&gt;&#xA;&lt;h2 id=&#34;problema&#34;&gt;Problema&lt;/h2&gt;&#xA;&lt;p&gt;Teníamos un pequeño servicio en Go que escribía archivos generados en un almacén de objetos compatible con S3, respaldado por una pasarela autoalojada basada en Ceph. Usaba una popular librería de abstracción de almacenamiento de blobs portable entre nubes, del tipo que te permite intercambiar &lt;code&gt;s3://&lt;/code&gt;, &lt;code&gt;gs://&lt;/code&gt; o &lt;code&gt;file://&lt;/code&gt; detrás de una única interfaz, de modo que el código de la aplicación nunca tiene que saber con qué backend está hablando.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Volt: Elecciones a Local Lead 2026</title>
				<link>https://livingit.de/es/politics/local-lead-wahlen-2026/</link>
				<pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/politics/local-lead-wahlen-2026/</guid>
				<description>¡Me gustaría continuar otros 18 meses!</description>
			</item>
			<item>
				<title>Promesas rotas: el terreno fértil para el populismo</title>
				<link>https://livingit.de/es/politics/broken-promises/</link>
				<pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/politics/broken-promises/</guid>
				<description>Promesas rotas: el terreno fértil para el populismo</description>
			</item>
			<item>
				<title>Reemplazar contenido en archivos con ripgrep</title>
				<link>https://livingit.de/es/software/replace-content/</link>
				<pubDate>Wed, 10 Jan 2024 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/replace-content/</guid>
				<description>&lt;p&gt;Aviso: &lt;a href=&#34;https://github.com/BurntSushi/ripgrep&#34;&gt;ripgrep&lt;/a&gt; no puede hacer esto por sí solo. Pero puedes combinarlo con otras herramientas para conseguirlo.&lt;/p&gt;&#xA;&lt;h2 id=&#34;el-problema&#34;&gt;El problema&lt;/h2&gt;&#xA;&lt;p&gt;Uso &lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt; con frontmatter (YAML) para llevar mi diario junto con algunas estadísticas. A veces se me olvida anotar todos los datos y quiero rellenar los huecos con la última medición. Ten paciencia: sé que no es correcto en sentido matemático, pero para mí es suficiente. Cuando mi nota se genera automáticamente, se usa un valor por defecto.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Conectarse por RDP desde Linux a Windows</title>
				<link>https://livingit.de/es/software/rdp-linux-windows/</link>
				<pubDate>Thu, 07 Dec 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/rdp-linux-windows/</guid>
				<description>&lt;h1 id=&#34;el-problema&#34;&gt;El problema&lt;/h1&gt;&#xA;&lt;p&gt;Tengo un equipo con Windows en mi red local y quiero conectarme a él por RDP desde mi equipo Linux. Para ello uso &lt;code&gt;remmina&lt;/code&gt;, un buen cliente RDP. Sin VPN, puedo conectarme al equipo Windows sin problemas. Pero, en cuanto uso una VPN, ya no puedo conectarme.&lt;/p&gt;&#xA;&lt;h2 id=&#34;la-solución&#34;&gt;La solución&lt;/h2&gt;&#xA;&lt;p&gt;La solución fue permitir RDP WS y WSS en el firewall de Windows. Esas reglas suelen estar desactivadas por defecto. Tras activarlas, puedo conectarme al equipo Windows por RDP incluso con la VPN activa.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ejecutar tclip en una Zimaboard</title>
				<link>https://livingit.de/es/software/tclip-on-zimaboard/</link>
				<pubDate>Thu, 24 Aug 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/tclip-on-zimaboard/</guid>
				<description>&lt;h2 id=&#34;por-qué&#34;&gt;¿Por qué?&lt;/h2&gt;&#xA;&lt;p&gt;Porque los gists privados son fantásticos y, junto con Tailscale y una Zimaboard, es fácil alojarlos.&lt;/p&gt;&#xA;&lt;h2 id=&#34;cómo&#34;&gt;¿Cómo?&lt;/h2&gt;&#xA;&lt;p&gt;Hace poco conseguí una &lt;a href=&#34;https://www.zimaboard.com/&#34;&gt;Zimaboard&lt;/a&gt;. Es potente y viene con &lt;a href=&#34;https://www.casaos.io/&#34;&gt;CasaOS&lt;/a&gt; preinstalado. También soy fan de &lt;a href=&#34;https://tailscale.com&#34;&gt;Tailscale&lt;/a&gt;, que probablemente sea una de las soluciones VPN más sencillas y a la vez ultraseguras que existen. Lo mejor: tienen un plan gratuito muy generoso.&lt;/p&gt;&#xA;&lt;p&gt;Hace poco publicaron una entrada de blog sobre &lt;a href=&#34;https://tailscale.dev/blog/tclip&#34;&gt;tclip&lt;/a&gt;, una forma sencilla, nada sofisticada, de alojar tus gists en privado.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Cambia los switches de tu teclado</title>
				<link>https://livingit.de/es/software/change-keyboard-switches/</link>
				<pubDate>Wed, 26 Jul 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/change-keyboard-switches/</guid>
				<description>&lt;h2 id=&#34;por-qué&#34;&gt;¿Por qué?&lt;/h2&gt;&#xA;&lt;p&gt;Simplemente porque puedes. Y porque es divertido. Y porque puedes aprender algo nuevo. Y porque puedes. O te acabas de comprar otro teclado caro y el experimento con switches lineales ha fracasado. Y cambiar los switches sale más barato que comprar un teclado nuevo.&lt;/p&gt;&#xA;&lt;p&gt;No es un trabajo de 5 minutos. Lleva su tiempo y hay que tener cuidado. Pero es factible.&lt;/p&gt;&#xA;&lt;h2 id=&#34;consejos&#34;&gt;Consejos&lt;/h2&gt;&#xA;&lt;p&gt;Tómate tu tiempo. Retira todas las keycaps con cuidado. Puede ayudar dejarlas colocadas en orden en algún sitio. Retira todos los switches antiguos. Lee antes las explicaciones de los fabricantes de la placa. Pero, básicamente, tira recto hacia arriba. Luego coloca los switches nuevos. Antes de presionar un switch, comprueba que los pines estén rectos. Incluso siendo nuevos, durante el transporte alguno puede haberse doblado. Después de encajar un switch: prueba. Vuelve a colocar todas las keycaps. Por cierto: este habría sido el momento perfecto para poner esas keycaps favoritas que siempre quisiste usar.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Bienvenida, RedHat, al juego de ... bueno, los negocios volviéndose locos</title>
				<link>https://livingit.de/es/software/redhat-closing/</link>
				<pubDate>Fri, 23 Jun 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/redhat-closing/</guid>
				<description>&lt;p&gt;RedHat obliga a los clones a rehacer su modelo operativo (y quizá rompe su promesa).&lt;/p&gt;&#xA;&lt;p&gt;A la comunidad no le gusta la decisión. Fíjate en esto, por ejemplo: &lt;a href=&#34;https://www.jeffgeerling.com/blog/2023/dear-red-hat-are-you-dumb&#34;&gt;Dear Red Hat: Are you dumb?&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Esto cuestiona activamente &lt;em&gt;cualquier&lt;/em&gt; uso de código abierto en el que participe RedHat. Al final, es una empresa y, como tal, tiene que seguir ciertas reglas. Aceptado. Poner bajo presión a otras empresas (que &lt;em&gt;podrían&lt;/em&gt; haber sido clientes de RHEL en algún momento futuro) es &amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Sobre tipografías</title>
				<link>https://livingit.de/es/software/about-fonts/</link>
				<pubDate>Tue, 30 May 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/about-fonts/</guid>
				<description>&lt;h2 id=&#34;sobre-tipografías&#34;&gt;Sobre tipografías&lt;/h2&gt;&#xA;&lt;p&gt;Me gusta tener una buena apariencia en pantalla. Me gusta ver suficiente información a la vez (algunos dirían que &lt;em&gt;demasiada&lt;/em&gt;). Eso significa que prefiero un tamaño de fuente no demasiado grande. Por desgracia, tengo que llevar unas gafas bastante fuertes. Eso significa que me inclino por tipografías de trazo claro, sin demasiadas serifas, etc.&lt;/p&gt;&#xA;&lt;p&gt;Ahora mismo estas son mis favoritas:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://berkeleygraphics.com/typefaces/berkeley-mono/&#34;&gt;Berkeley Mono&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://indestructibletype.com/Drafting/&#34;&gt;Drafting Mono&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://fonts.google.com/specimen/Comfortaa&#34;&gt;Comfortaa&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Comfortaa es la que se usa aquí en la web, pero puede que la cambie por &lt;a href=&#34;https://indestructibletype.com/Jost.html&#34;&gt;Jost*&lt;/a&gt;. Jost* parece agradable también cuando quieres escribir algo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ingeniería de software vs. desarrollo de software</title>
				<link>https://livingit.de/es/software/engineering-vs-development/</link>
				<pubDate>Mon, 13 Feb 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/engineering-vs-development/</guid>
				<description>&lt;p&gt;El desarrollo de software y la ingeniería de software son dos campos relacionados pero distintos dentro de la informática. El desarrollo de software se refiere al proceso de diseñar, programar, probar y mantener aplicaciones de software, mientras que la ingeniería de software es un enfoque más estructurado y sistemático del desarrollo de software que hace hincapié en el diseño y la construcción de sistemas de software de alta calidad, fiables y mantenibles.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hacer funcionar la Titan Security Key USB-C en un sistema Linux</title>
				<link>https://livingit.de/es/software/titan/</link>
				<pubDate>Wed, 26 Feb 2020 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/titan/</guid>
				<description>&lt;p&gt;Me compré una Titan Security Key de Google como segunda llave por si mi llave principal se rompe. Uso Linux, y la serie 5 NFC de Yubico funcionó sin problemas nada más conectarla.&lt;/p&gt;&#xA;&lt;p&gt;No fue así con la Titan Key de Google. Aun así, la documentación de Google sobre este asunto ofrecía una solución:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://support.google.com/titansecuritykey/answer/9148044?hl=en&amp;amp;ref_topic=9115742&#34;&gt;Add a Titan Security Key on a Linux system&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Por desgracia, la solución no funcionó tal cual. Al leer la salida de dmesg (hay que ejecutar &lt;code&gt;sudo dmesg&lt;/code&gt;) me di cuenta de que idVendor e idProduct diferían de los valores del ejemplo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Currículum</title>
				<link>https://livingit.de/es/cv/</link>
				<pubDate>Sat, 11 Jan 2020 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/cv/</guid>
				<description>Senior Software Engineer con 25 años de experiencia en sistemas de escritorio, web, nube y distribuidos.</description>
			</item>
			<item>
				<title>Un motivo no tan obvio de un error de autenticación con SSH</title>
				<link>https://livingit.de/es/software/ssh-auth-error/</link>
				<pubDate>Tue, 19 Nov 2019 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/ssh-auth-error/</guid>
				<description>&lt;h2 id=&#34;problema&#34;&gt;Problema&lt;/h2&gt;&#xA;&lt;p&gt;Intentas mantenerte seguro. ¿Cómo dices? Sí, demasiado seguro. Si trabajas para varios clientes y eres como yo, quizá no quieras usar la misma clave para cada cliente. Ahora, por comodidad, añades todas tus claves a tu agente local:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ssh-add key1&#xA;    ...&#xA;ssh-add keyN&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Genial. Seguro y a la vez cómodo. Hasta que recibes un error de autenticación:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Received disconnect from a.b.c.d port 22:2: Too many authentication failures&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Compruebas dos veces el nombre de usuario. Compruebas dos veces que tu clave está cargada en el agente. Empiezas a dudar de ti mismo. Y aun así nada parece explicarlo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Contribuir a Mattermost</title>
				<link>https://livingit.de/es/software/contribute-to-mattermost/</link>
				<pubDate>Sun, 06 Oct 2019 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/contribute-to-mattermost/</guid>
				<description>&lt;h2 id=&#34;qué-es-mattermost&#34;&gt;¿Qué es Mattermost?&lt;/h2&gt;&#xA;&lt;p&gt;De su web:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Mattermost is a flexible, open source messaging platform&#xA;that enables secure team collaboration&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Piensa en Mattermost como una alternativa de código abierto a Slack. También viene incluido en las instalaciones on-premise de GitLab Omnibus.&lt;/p&gt;&#xA;&lt;h2 id=&#34;qué-quiero-conseguir&#34;&gt;¿Qué quiero conseguir?&lt;/h2&gt;&#xA;&lt;p&gt;Al intentar participar en Hacktoberfest 2019, elegí una incidencia de migración de Mattermost como primer objetivo para un PR:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/mattermost/mattermost-server/issues/12550&#34;&gt;Migrate tests from &amp;ldquo;model/system_test.go&amp;rdquo; to use testify&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Aviso legal</title>
				<link>https://livingit.de/es/imprint/</link>
				<pubDate>Wed, 23 May 2018 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/imprint/</guid>
				<description>&lt;h2 id=&#34;aviso-legal-impressum&#34;&gt;Aviso legal (Impressum)&lt;/h2&gt;&#xA;&lt;p&gt;Datos conforme al § 5 TMG&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Sascha Andres &#xA;Paul-Hindemith-Ring 5&#xA;63110 Rodgau &#xA;&#xA;Contacto: &#xA;Correo electrónico: webmaster [at] livingit.de&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Responsable del contenido conforme al § 55, apdo. 2, RStV:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Sascha Andres &#xA;Paul-Hindemith-Ring 5&#xA;63110 Rodgau &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;exención-de-responsabilidad&#34;&gt;Exención de responsabilidad&lt;/h2&gt;&#xA;&lt;h3 id=&#34;responsabilidad-por-los-contenidos&#34;&gt;Responsabilidad por los contenidos&lt;/h3&gt;&#xA;&lt;p&gt;Los contenidos de nuestras páginas se han elaborado con el máximo cuidado. No obstante, no podemos asumir ninguna garantía sobre la exactitud, la integridad y la actualidad de los contenidos. Como prestador de servicios, somos responsables de los contenidos propios de estas páginas conforme a las leyes generales, según el § 7, apdo. 1, TMG. Sin embargo, según los §§ 8 a 10 TMG, como prestador de servicios no estamos obligados a supervisar la información ajena transmitida o almacenada, ni a investigar circunstancias que indiquen una actividad ilícita. Las obligaciones de retirar o bloquear el uso de información conforme a las leyes generales no se ven afectadas por ello. Una responsabilidad al respecto solo es posible, no obstante, a partir del momento en que se tiene conocimiento de una infracción concreta. En cuanto tengamos conocimiento de tales infracciones, retiraremos esos contenidos de inmediato.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Maximal Rodgau: Göb, Benz, Hoffmann</title>
				<link>https://livingit.de/es/life/maximal-20180518/</link>
				<pubDate>Fri, 18 May 2018 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/life/maximal-20180518/</guid>
				<description>&lt;script src=&#34;https://code.jquery.com/jquery-1.12.4.min.js&#34; integrity=&#34;sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&lt;script src=&#34;https://livingit.de/js/load-photoswipe.js&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css&#34; integrity=&#34;sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css&#34; integrity=&#34;sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js&#34; integrity=&#34;sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js&#34; integrity=&#34;sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pswp&#34; tabindex=&#34;-1&#34; role=&#34;dialog&#34; aria-hidden=&#34;true&#34;&gt;&#xA;&#xA;&lt;div class=&#34;pswp__bg&#34;&gt;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;pswp__scroll-wrap&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;pswp__container&#34;&gt;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &#xA;    &lt;div class=&#34;pswp__ui pswp__ui--hidden&#34;&gt;&#xA;    &lt;div class=&#34;pswp__top-bar&#34;&gt;&#xA;      &#xA;      &lt;div class=&#34;pswp__counter&#34;&gt;&lt;/div&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--close&#34; title=&#34;Close (Esc)&#34;&gt;&lt;/button&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--share&#34; title=&#34;Share&#34;&gt;&lt;/button&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--fs&#34; title=&#34;Toggle fullscreen&#34;&gt;&lt;/button&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--zoom&#34; title=&#34;Zoom in/out&#34;&gt;&lt;/button&gt;&#xA;      &#xA;      &#xA;      &lt;div class=&#34;pswp__preloader&#34;&gt;&#xA;        &lt;div class=&#34;pswp__preloader__icn&#34;&gt;&#xA;          &lt;div class=&#34;pswp__preloader__cut&#34;&gt;&#xA;            &lt;div class=&#34;pswp__preloader__donut&#34;&gt;&lt;/div&gt;&#xA;          &lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;pswp__share-modal pswp__share-modal--hidden pswp__single-tap&#34;&gt;&#xA;      &lt;div class=&#34;pswp__share-tooltip&#34;&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--left&#34; title=&#34;Previous (arrow left)&#34;&gt;&#xA;    &lt;/button&gt;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--right&#34; title=&#34;Next (arrow right)&#34;&gt;&#xA;    &lt;/button&gt;&#xA;    &lt;div class=&#34;pswp__caption&#34;&gt;&#xA;      &lt;div class=&#34;pswp__caption__center&#34;&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Por fin fuimos a visitar el &lt;a href=&#34;http://www.maximal-rodgau.de/&#34;&gt;Maximal&lt;/a&gt; en Rodgau. Lo gestiona una asociación y organizan jazz en directo y otra música en vivo. Es asequible y un local pequeño pero singular.&lt;/p&gt;&#xA;&lt;p&gt;Si te gustan los conciertos con ambiente íntimo y te queda cerca, deberías probarlo.&lt;/p&gt;&#xA;&lt;p&gt;A continuación, algunas impresiones de esa noche.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
