<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Index on Sagredo</title>
    <link>https://sagredo.dev/</link>
    <description>Recent content in Index on Sagredo</description>
    <generator>Hugo</generator>
    <language>es-es</language>
    <managingEditor>jasataco@gmail.com (Javier Sagredo)</managingEditor>
    <webMaster>jasataco@gmail.com (Javier Sagredo)</webMaster>
    <copyright>© 2026 Javier Sagredo</copyright>
    <lastBuildDate>Tue, 19 May 2026 13:01:49 +0200</lastBuildDate>
    <atom:link href="https://sagredo.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Mostrando la salida de `cabal-plan` visualmente</title>
      <link>https://sagredo.dev/posts/cabal-plan-mejor-output/</link>
      <pubDate>Tue, 19 May 2026 13:01:49 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/posts/cabal-plan-mejor-output/</guid>
      <description>Cuando corremos cabal plan diff hay mucho ruido en la salida. Este script de python muestra la salida mucho más accesible:&#xA;#!/usr/bin/env python3 &amp;#34;&amp;#34;&amp;#34;Summarize the `Package versions` section of `cabal-plan diff` output. Pipe `cabal-plan diff` (or similar) output to this script. It extracts the section between the `Package versions` and `Dependency graph` headers, then prints: pkg-name oldver -&amp;gt; newver # for packages that changed new pkg-name ver # for packages only on the + side deleted pkg-name ver # for packages only on the - side &amp;#34;&amp;#34;&amp;#34; import re import sys LINE_RE = re.</description>
    </item>
    <item>
      <title>Guía para desplegar un servidor web</title>
      <link>https://sagredo.dev/posts/servidor-web/</link>
      <pubDate>Mon, 18 May 2026 23:58:15 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/posts/servidor-web/</guid>
      <description>En este post describo como despliego mi página web, de una forma más ordenada que en el anterior post. Lo describiré de abajo hacia arriba, comenzando por los contenedores y servicios y terminando por Cloudflare.&#xA;Esquema del despliegue Docker Utilizaremos Docker para aislar lo más posible cada servicio expuesto de manera que el resto del sistema esté protegido en caso de que se vea comprometido.&#xA;Para instalar docker, seguimos los pasos en su página web:</description>
    </item>
    <item>
      <title>Megapost: La arquitectura de mi red</title>
      <link>https://sagredo.dev/posts/arquitectura-red/</link>
      <pubDate>Wed, 13 May 2026 00:25:12 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/posts/arquitectura-red/</guid>
      <description>A la hora de desplegar este servidor tanto en HTTP como en Gemini, he tenido que pegarme un poco con las configuraciones y con Cloudflare y Tailscale. A continuación describo la aventura medio como archivo para mí y medio como tutorial que se puede seguir para replicar mi red y servicios.&#xA;Tailscale y SSH Para poder conectarme a mis máquinas utilizo Tailscale. Tengo registrados allí tanto mis ordenadores de sobremesa como mis Raspberries.</description>
    </item>
    <item>
      <title>Manifiesto por una Web Navegable</title>
      <link>https://sagredo.dev/pages/manifiesto/</link>
      <pubDate>Tue, 12 May 2026 00:48:01 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/pages/manifiesto/</guid>
      <description>Contra la dictadura del algoritmo y por la recuperación del horizonte &amp;ldquo;Nos prometieron una biblioteca universal y nos dieron una máquina de tragaperras que llevamos en el bolsillo.&amp;rdquo;&#xA;Internet no nació para ser un centro comercial vigilado ni una máquina de dopamina infinita. Nació para conectar mentes, no para atrapar ojos. Hoy, la red ha sido secuestrada por algoritmos que confunden nuestra atención con nuestro consentimiento. Es hora de volver a navegar.</description>
    </item>
    <item>
      <title>Descargas</title>
      <link>https://sagredo.dev/pages/descargas/</link>
      <pubDate>Tue, 12 May 2026 00:35:59 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/pages/descargas/</guid>
      <description> GHC 9.14.1 IPE Linux x64 </description>
    </item>
    <item>
      <title>Herramientas</title>
      <link>https://sagredo.dev/pages/herramientas/</link>
      <pubDate>Tue, 12 May 2026 00:21:08 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/pages/herramientas/</guid>
      <description>Formateo Herramienta Version GHC stylish-haskell 0.15.1.0 9.12.2 fourmolu 0.18.0.0 9.12.2 cabal-gild 1.8.4.1 9.14.1 cabal-fmt 0.1.12 9.6.7 Inspección de código Herramienta Version GHC Allow newer graphmod 1.4.5.1 9.6.7 cabal-plan 0.7.6.1 9.14.1 base classgraph-view 0.2.0.0 9.14.1 Limpieza de pelusas Herramienta Version GHC hlint 3.10 9.12.2 Perfiles Herramienta Version GHC Allow newer profiterole 0.1 9.6.7 profiteur 0.4.7.1 9.6.7 eventlog2html 0.12.0 9.14.1 ghc-events, containers ghc-debug-brick 0.8.0.0 9.14.1 --allow-newer ghc-prof-flamegraph 0.2.0.1 9.14.1 </description>
    </item>
    <item>
      <title>Clave PGP</title>
      <link>https://sagredo.dev/pages/clave-pgp/</link>
      <pubDate>Tue, 12 May 2026 00:17:41 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/pages/clave-pgp/</guid>
      <description>Actualmente la única clave privada que tengo en mi poder es 610eda4e6034d6d68a48066ee933a3bdb04a77f4. Las otras claves que puedan aparecer online han sido perdidas y no tengo acceso a ellas.</description>
    </item>
    <item>
      <title>Un mejor cbor2pretty</title>
      <link>https://sagredo.dev/posts/mejor-cbor2pretty/</link>
      <pubDate>Tue, 12 May 2026 00:07:29 +0200</pubDate><author>jasataco@gmail.com (Javier Sagredo)</author>
      <guid>https://sagredo.dev/posts/mejor-cbor2pretty/</guid>
      <description>Este pequeño script sirve para que cbor2pretty tambien muestre el contenido de una cadena de bytes envuelta en un tag 24:&#xA;#!/bin/bash cbor2pretty.rb $1 | \ awk -v q=&amp;#34;&amp;#39;&amp;#34; -v dq=&amp;#34;\&amp;#34;&amp;#34; &amp;#39; BEGIN { a = 0 } /tag\(24\)/ {a = 1} /&amp;#34;/ { if (a == 1) { print $0; spaces = match($0,/[^ ]|$/)-1; cmd = &amp;#34;perl -E &amp;#34; q &amp;#34;say &amp;#34; dq &amp;#34; &amp;#34; dq &amp;#34; x &amp;#34; spaces q; cmd | getline spacess; close(cmd); system(&amp;#34;perl -e &amp;#34; q &amp;#34;print pack &amp;#34; dq &amp;#34;H*&amp;#34; dq &amp;#34;, &amp;#34; dq $1 dq q &amp;#34; \ | cbor2pretty.</description>
    </item>
  </channel>
</rss>
