<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">

<channel>
<title>Chancli.dev</title>
<link>https://chancli.dev</link>
<description>Recuperando el verdadero internet.</description>

<item>
<title>Activa o desactiva el salvapantalla en Linux desde el terminal</title>
<link>https://chancli.dev/blog/gestiona-salvapantalla-linux-terminal.html</link>
<pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/gestiona-salvapantalla-linux-terminal.html</guid>
<description><![CDATA[<p>Como os comenté hace tiempo, <a href="https://chancli.dev/blog/me-decido-a-opositar.html">estoy volviendo a estudiar</a> y aunque intento hacerlo todo con papel y lápiz, es muy útil consultar infografías y esquemas en la pantalla grande del ordenador.</p>
<p>En los momentos que estudio no quiero tener el salvapantalla activo porque es muy incómodo tener que ir desbloqueando cada x tiempo de consulta.</p>
<p>Estuve mirando si existía alguna forma de desactivarlo/activarlo rápidamente desde terminal y evidentemente, sí, <strong>se puede</strong> :D </p>
<p>Os dejo estos alias que me funcionan en Linux Mint con Gnome, desconozco si para el resto de distribuciones o entornos servirá:</p>
<pre><code class="language-bash">alias ss-off=&#39;gsettings set org.cinnamon.desktop.session idle-delay 0 &amp;&amp; gsettings set org.cinnamon.desktop.screensaver lock-enabled false &amp;&amp; echo &quot;Salvapantalla DESACTIVADO (modo estudio)&quot;&#39;

alias ss-on=&#39;gsettings set org.cinnamon.desktop.session idle-delay 300 &amp;&amp; gsettings set org.cinnamon.desktop.screensaver lock-enabled true &amp;&amp; echo &quot;Salvapantalla ACTIVADO (5 min)&quot;&#39;
</code></pre>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Como montar directorio remoto en Linux con Rclone</title>
<link>https://chancli.dev/blog/montar-directorio-remoto-vps-en-linux.html</link>
<pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/montar-directorio-remoto-vps-en-linux.html</guid>
<description><![CDATA[<p>Necesitaba una forma sencilla para montar un directorio de mi VPS en mi equipo con Linux.</p>
<p>Investigué un poco las opciones y al final decidí quedarme con <a href="https://rclone.org/">Rclone</a>.</p>
<p>¿Por qué Rclone? Porque es open-source, está activamente mantenido y además, aunque no lo necesito de momento, soporta &gt;70 proveedores.</p>
<h2>Pasos</h2>
<p>Asumo que ya tienes una llave SSH en tu equipo y que puedes loggearte a tu VPS, así que me salto esa parte.</p>
<p>Lo primero es instalar las dependencias:</p>
<pre><code class="language-bash">sudo apt install fuse3 curl
</code></pre>
<p>Luego rclone:</p>
<pre><code class="language-bash">curl https://rclone.org/install.sh | sudo bash
</code></pre>
<p>Comprobamos que se haya instalado bien:</p>
<pre><code class="language-bash">rclone version
</code></pre>
<p>Creamos la conexión:</p>
<pre><code class="language-bash">rclone config create NOMBRE_DEL_REMOTO sftp host LA_IP_DE_TU_VPS user TU_USUARIO_EN_EL_VPS key_file ~/.ssh/id_ed25519 known_hosts_file ~/.ssh/known_hosts key_use_agent true
</code></pre>
<p>Esto crea la config en <code>~/.config/rclone/rclone.conf</code>.</p>
<p>Creamos el directorio local donde vamos a montar el directorio remoto:</p>
<pre><code class="language-bash">mkdir -p ~/vps
</code></pre>
<p>Cargamos nuestra llave SSH:</p>
<pre><code class="language-bash">ssh-add ~/.ssh/id_ed25519
</code></pre>
<p>Montamos el directorio:</p>
<pre><code class="language-bash">rclone mount NOMBRE_DEL_REMOTO:/ruta/directorio ~/vps --vfs-cache-mode writes --daemon
</code></pre>
<p>Si por ejemplo el directorio remoto que quieres montar es <code>/home/yo</code>, el comando sería:</p>
<pre><code class="language-bash">rclone mount NOMBRE_DEL_REMOTO:/home/yo ~/vps --vfs-cache-mode writes --daemon
</code></pre>
<p>Con eso ya lo tendríamos montado.</p>
<p>Para desmontarlo, sería:</p>
<pre><code class="language-bash">fusermount -u ~/vps &amp;&amp; echo &quot;unmounted&quot;
</code></pre>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Forzar actualización de Docker Desktop en Linux Mint</title>
<link>https://chancli.dev/blog/forzar-actualizacion-docker-desktop-linux-mint.html</link>
<pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/forzar-actualizacion-docker-desktop-linux-mint.html</guid>
<description><![CDATA[<p>En mi equipo de sobre mesa, un PC con <strong>Linux Mint</strong>, utilizo Docker Desktop para gestionar algunos servicios que tengo auto alojados, como la instancia de Immich.</p>
<p>En el Mac del trabajo también lo uso y tengo que decir que este problema solo me pasa en mi Linux.</p>
<p>Cada vez que sale una actualización de seguridad, <strong>Docker Desktop</strong> me informa de ello. No me aparece la opción de auto actualizar, así que voy a la web oficial y me bajo el archivo <code>.deb</code> . Lo instalo y supuestamente todo bien, pero cuando vuelvo a abrirlo, me sigue diciendo que estoy usando la versión antigua.</p>
<p>Al parecer, cuando se instaló, todavía tenía algún proceso de Docker Desktop corriendo. Aunque en la interfaz gráfica eligiera <code>Quit Docker Desktop</code> seguía pasando lo mismo.</p>
<p>La solución fue simple, reiniciar el servicio a las bravas :D </p>
<pre><code class="language-bash">systemctl --user stop docker-desktop
systemctl --user start docker-desktop
</code></pre>
<p>Y ya tenemos la versión actualizada!</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/docker-desktop-force-update.png" alt="docker desktop linux actualizado"></p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Canal de IRC para la blogosfera hispana</title>
<link>https://chancli.dev/blog/canal-irc-blogosfera.html</link>
<pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/canal-irc-blogosfera.html</guid>
<description><![CDATA[<p>Llevo días dándole vueltas a que quizás estaría bien tener una posibilidad de punto de encuentro más directo entre los blogeros y blogeras de habla hispana.</p>
<p>Como buena persona de más de 40, aún conservo fantásticos recuerdos de la época del <strong>IRC</strong>. Así que me decidí por probar este medio para ponernos en contacto.</p>
<p>En mis tiempos era la red de <strong>IRC-Hispano</strong> la que hubiera elegido sin duda, pero hoy parece que ese lugar es algo turbio... al final he elegido la red <a href="https://libera.chat/">Libera Chat</a>, pero estoy abierto a sugerencias claro.</p>
<p>He creado el canal <strong>##blogosfera</strong> ¿por qué añadir dos <code>#</code> al nombre? porque Libera tiene una política para el nombre de canales y para los canales informales se usan dos (##) al principio.</p>
<p>Si queréis probarlo podéis hacerlo directamente en el webchat <a href="https://web.libera.chat/">https://web.libera.chat/</a></p>
<p>Por si preferís una mejor experiencia, tenéis los siguientes clientes de IRC:</p>
<ul>
<li><p>Linux y Mac: <a href="https://weechat.org/">https://weechat.org/</a> y <a href="https://thelounge.chat/">https://thelounge.chat/</a></p>
</li>
<li><p>Windows: como no <a href="https://www.mirc.com/">https://www.mirc.com/</a></p>
</li>
</ul>
<p>Por cierto, suelo dejar el equipo encendido, pero eso no quiere decir que esté delante :D así que si entráis y me véis conectado pero no contesto, es posible que no esté delante en ese momento.</p>
<p>¿Te animas? ¡Nos leemos en IRC!</p>
<pre><code class="language-bash">- Red de IRC: Libera Chat
- Canal: ##blogosfera
</code></pre>
]]></description>
</item>

<item>
<title>Cambiar metadata de PDF en Linux</title>
<link>https://chancli.dev/blog/cambiar-metadata-pdf-linux.html</link>
<pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/cambiar-metadata-pdf-linux.html</guid>
<description><![CDATA[<p>Ahora que estoy empezando a estudiar otra vez estoy trabajando con muchos archivos PDF.</p>
<p>Normalmente los autores no se preocupan por crear el archivo con sus metadata reales y utilizando conversores, puede ser muy diferente el título del archivo al título del documento (metadata). Me pasa con el Pocketbook, le he mandado algunos PDF y están totalmente desconfigurados.</p>
<p>En linux es muy sencillo editarlo.</p>
<p>Primero nos instalamos la herramienta <a href="https://linux.die.net/man/1/exiftool">exiftool</a> y luego, para cambiar el título, sería tan sencillo como ejecutar:</p>
<pre><code class="language-bash">exiftool -Title=&quot;Constitucion - Esquema&quot; -overwrite_original &quot;constitucion_completo.pdf&quot;
</code></pre>
<p>El resultado es algo así como:</p>
<pre><code class="language-bash">exiftool constitucion_completo.pdf

---

ExifTool Version Number         : 12.76
File Name                       : constitucion_completo.pdf
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.7
Create Date                     : 2026:09:06 20:41:50+02:00
Modify Date                     : 2026:09:06 20:41:50+02:00
Producer                        : Microsoft: Print To PDF
Page Count                      : 21
XMP Toolkit                     : Image::ExifTool 12.76
Title                           : Constitucion - Esquema
.....
</code></pre>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Me decido a opositar, agotadísimo del mercado tecnológico</title>
<link>https://chancli.dev/blog/me-decido-a-opositar.html</link>
<pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/me-decido-a-opositar.html</guid>
<description><![CDATA[<p>Quién me iba a decir cuando empecé a programar con un libro de Perl, allá por el 2000, que me vería en la situación de intentar sacar unas oposiciones con nada referente a la informática.</p>
<p>Ya <a href="https://chancli.dev/blog/me-esta-dejando-de-gustar-mi-trabajo-por-ia.html">hablé hace tiempo</a> de que me estaba dejando de gustar mi trabajo gracias a la IA. Ya no se programa, ya no se resuelven los problemas como antes se resolvían, y no porque no quiera, directamente no te dejan. </p>
<p>En cualquier empresa te empujan a utilizar la IA para cualquier tarea. Parece que todo tiene que pasar por ella, que nos va a dar más tiempo libre. <strong>La realidad es otra</strong>. En el tiempo que antes hacías 2 tareas ahora haces 5. Pero la duración de tu jornada es la misma.</p>
<p>Otro problema de la IA es el mal uso que se hace de ella. Mucha gente se ha acostumbrado a lanzar prompts, crear PRs y listo. Ni se plantean de si lo que están intentando añadir tiene sentido y está hecho de la mejor forma posible. Muchas veces <strong>no entienden</strong> ni lo que hace. Ah! claro... ¡que ahora tenemos la IA para programar y la IA para revisar!</p>
<p>Me he cansado. Me ha ganado esta nueva corriente. Por eso me he decidido, de momento, a intentar optar por un cambio de vida en lo laboral que nada, o el mínimo, dependa de la IA en mi día a día.</p>
<p>No sé si aprobaré, no sé si sacaré plaza, pero lo que sí tengo claro es que algo tengo que hacer. Este mundo de la tecnología no va a cambiar y si me apuras, creo que irá a mucho peor.</p>
<p>Happy coding... ¡siempre!</p>
]]></description>
</item>

<item>
<title>Estadísticas de fin verano 2026. Vete ya...</title>
<link>https://chancli.dev/blog/temperaturas-fin-verano-2026.html</link>
<pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/temperaturas-fin-verano-2026.html</guid>
<description><![CDATA[<p>Este verano estoy gestionando especialmente mal los días de calor.</p>
<p>No sé si es porque me hago mayor o porque <a href="https://chancli.dev/blog/tags/chancla.html">Chancla</a> se hace mayor, pero los dos lo estamos pasando fatal. Ella, como no puede sudar, lo único que puede hacer para disipar el calor es jadear... y no para, solo deja de jadear cuando duerme. </p>
<p>Afortunadamente, ya estamos en Septiembre y aunque todavía no han bajado del todo, sí que se aprecia un refresco en el tiempo, sobre todo por las noches.</p>
<p>Y es que hemos tenido muchas pero <strong>muchas</strong> noches cálidas este año en las que he tenido que dormir con el aire acondicionado. Bendito aire acondicionado.</p>
<p>Gracias a la <a href="https://estacionpolitecnica.blogspot.com/">estación meteorológica de la Politécnica</a> he podido sacar una gráfica donde podemos ver que esa tendencia a la baja es real:</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/temperatura_jun_ago_2026.png" alt="Temperatura junio a agosto 2026"></p>
<p>Supongo que seguiremos teniendo algunos días todavía bastante calurosos, pero ya se ve que son los menos :)</p>
]]></description>
</item>

<item>
<title>Me he comprado el Pocketbook Inkpad One!</title>
<link>https://chancli.dev/blog/me-he-comprado-pocketbook-inkpad-one.html</link>
<pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/me-he-comprado-pocketbook-inkpad-one.html</guid>
<description><![CDATA[<p>Llevo leyendo en el Kindle desde hace bastantes años y aunque sigue funcionando perfectamente, buscaba un dispositivo algo más abierto en el que pudiera hacer más cosas, además de una pantalla más grande.</p>
<p>Después de mucho mirar, centré el objetivo en el <a href="https://pocketbook.es/pocketbook-inkpad-one-matte-black">Inkpad One</a> de Pocketbook.</p>
<p>Su pantalla de 10,3 pulgadas, ecosistema abierto que soporta eBiblio y Linux como sistema operativo fueron los puntos fuertes a su favor.</p>
<p>Empecé a indagar por Youtube... Reddit... y era raro encontrar algo negativo del dispositivo. Como toda compra, te puede salir malo y te puede no gustar, por eso siempre hay que mirar la mayoría de opiniones.</p>
<p>Como nunca había comprado en <strong>Pocketbook</strong> hice lo que siempre hago antes de comprar en una tienda que no conozco, lo que yo llamo la pregunta de control :)</p>
<p>Es muy sencillo, hago una pregunta más o menos sencilla al soporte para ver, antes de ser cliente, como se comporta.</p>
<p>Cuando, sin ser cliente, escribo al soporte alguna pregunta sencilla al soporte y tardan mucho en responder o no responden, suelo descartarlo. Si todavía no soy cliente y el servicio ya es deficiente, imagina cuando ya sea cliente.</p>
<p>La respuesta fue <strong>muy rápida</strong> (en pocas horas) y además resolvieron perfectamente la duda que les planteé con un tono que parecía realmente que había una persona y no un bot de IA detrás.</p>
<p>Cogí una oferta que rebajaba la funda a la mitad y después de un proceso de compra fluído, recibí la confirmación al correo.</p>
<p>El envío lo hicieron a las 24h aproximadamente del pedido y ya tengo el número de seguimiento.</p>
<p>Indica que lo enviaron de Países Bajos y según el seguimiento de Fedex llega mañana 1 de Septiembre.</p>
<p>Estoy deseando tenerlo y trastear con él.</p>
<p>Se viene unboxing y primeras impresiones.</p>
<p>Un saludo!</p>
]]></description>
</item>

<item>
<title>La psicologa sin empatía</title>
<link>https://chancli.dev/blog/psicologa-sin-empatia.html</link>
<pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/psicologa-sin-empatia.html</guid>
<description><![CDATA[<p>No es la primera vez que visito un psicólogo/a por problemas de ansiedad. He tenido rachas mejores y peores en mi vida y desde que Chancla está empeorando su salud, decidí volver a pedir cita para obtener algo de ayuda.</p>
<p>Creo que lo primero que una persona busca cuando acude a un psicólogo es la empatía. Vas con un problema que para una persona puede parecer una tontería, pero para ti es un mundo. Buscas a alguien que te ayude claro, pero antes de ayudarte necesitas sentirte escuchado y entendido. </p>
<p>Luego ya vendrá la terapia y el trabajo individual, pero la primera toma de contacto es crucial.</p>
<p>Elegí a esta psicóloga porque tenía muchas pero muchas reseñas positivas en Doctoralia. No dudo que sea una gran profesional, pero desde que entré por la puerta, noté que no iba a cuajar.</p>
<p>Pasa consulta en un adosado, llamo al timbre y al abrir la puerta no me dirige ni un &quot;hola&quot;, simplemente: &quot;pasa&quot;. Cruzo el patio y me indica que espere en la sala de espera.</p>
<p>Tras unos 5 minutos me hace entrar en el despacho. Me pregunta que me pasa y cuando casi no había terminado de presentarme me calla con un brusco &quot;<strong>miedo, eso es miedo</strong>&quot;.</p>
<p>Empezó a hacerme preguntas de mis padres y mi vida personal. La sesión fue prácticamente examen tipo test. <strong>Pregunta-respuesta</strong>. Después de su batería empezó a decirme que la ansiedad viene de experiencias pasadas mal gestionadas. Que una personalidad ansiosa puede venir por genética y que lo que tenía que hacer era construirme otro camino cuando llegara el pico de ansiedad.</p>
<p>A mi me sonó al típico &quot;<em>¿estás triste? pues no lo estés</em>&quot;. Justo en el min 50 de sesión me indicó la única muestra de empatía con una sonrisa forzada y la frase &quot;bueno, pues hemos llegado al final de la sesión&quot;.</p>
<p>Le pagué, me fui con el la lectura emprendida de no volver a visitarlas jamás y dispuesto a buscar otra profesional.</p>
]]></description>
</item>

<item>
<title>TuLotero ha sido hackeada</title>
<link>https://chancli.dev/blog/hackeo-tulotero.html</link>
<pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/hackeo-tulotero.html</guid>
<description><![CDATA[<p>Este fin de semana ha sido bastante complicado en temas de ansiedad.</p>
<p>Desde 2022 soy usuario de la app para loterías TuLotero. Quizás la app más importante y más usada en la gestión de loterías en España.</p>
<p>El 14 de Julio, TuLotero identificó un acceso no autorizado a su sistema de verificación de usuarios (DNI por ambas caras y foto selfie).</p>
<p>El viernes 7 de Agosto empezó a notificar a los usuarios para que estuvieran atentos ante posibles comunicaciones sospechosas por SMS, teléfono o email.</p>
<p>Filtraciones ha habido infinidad de ellas. Nuestros datos personales están ya en absolutamente todos los sitios.</p>
<p>El problema en este caso es que con las copias de DNI y foto de verificación es bastante &quot;sencillo&quot; ser víctima de suplantación de identidad.</p>
<p>La compañía ya ha dicho que, como indica la ley, puso esta infracción en manos de la policía y la AEPD.</p>
<p>Internamente no sé como habrá gestionado el incidente, pero de cara a sus usuarios lo ha hecho REALMENTE MAL.</p>
<p>Los usuarios nos enteramos por terceros, yo me enteré porque ley el post en Bandaancha.</p>
<p>En <a href="https://bandaancha.eu/foros/tulotero-sufre-filtracion-dnis-usuarios-1760668">esa publicación</a> ponen una actualización de la empresa el día 08 indicando que habían identificado los usuarios afectados y que se iban a poner en contacto personalmente con ellos.</p>
<p>Lo que empezaron a hacer mal: no dan detalles de como han identificado a esos usuarios. ¿Tienen más de un proveedor de verificación? ¿es por fechas de registro? </p>
<p>Luego comentan:</p>
<blockquote>
<p>Cómo saber si estás afectado: estamos enviando los avisos por email de forma escalonada; el envío terminará este fin de semana. Si al terminar no has recibido nada, no estás afectado</p>
</blockquote>
<p>En mi caso estuve <strong>TODO</strong> el fin de semana consultando el correo, refrescando y mirando el buzón de SPAM por si llegaba algo.</p>
<p>Más:</p>
<blockquote>
<p>También puedes escribirnos a <a href="mailto:info@tulotero.es">info@tulotero.es</a> y te lo confirmamos</p>
</blockquote>
<p>Envié varios correos, <strong>sin respuesta alguna</strong> por su parte. Algunos usuarios recibían respuestas que parecían bots, nada personalizadas.</p>
<p>Otro asunto importante ya en su app. Ahí puedes ver si subiste verificación alguna vez, en mi caso estoy seguro de que sí, porque hice una retirada en Enero de 2026, pero mi DNI caducó en Marzo de 2026. Ahora bien, no recuerdo si en algún momento volví a subir verificación con el DNI nuevo, aunque no hice retirada alguna.</p>
<p>Tal vez al entrar alguna vez lo pedía y lo hice, no lo recuerdo.</p>
<p>Hubiera estado bien que indicaran cuando fue la fecha de verificación de documentación y así quedarnos tranquilos.</p>
<p>Como esto no fue posible, envié un correo preguntando por favor cuando fue mi fecha de verificación para saber si el DNI que tenía subido era el caducado o no. </p>
<p>Nunca respondieron.</p>
<p>Públicamente la empresa ha actuado como si nada, ha seguido haciendo promociones en redes sociales... etc.</p>
<p>Yo particularmente no recibí el correo el fin de semana, pero ante tal caos de funcionamiento, ¿quién me asegura que no me llegará un correo esta semana?</p>
<p>Solo me queda estar pendiente en el CIRBE y ASNEF pidiendo informes periódicos por si han hecho algo en mi nombre.</p>
<p>Es una pena, el servicio era muy bueno, pero esto es imperdonable.</p>
<p>Un fallo de seguridad tecnológico puede pasar, pasa constantemente, pero la falta de transparencia en las comunicaciones y el miedo e ansiedad generados <strong>no tienen excusa</strong>.</p>
<p>P.D. En <a href="https://forocoches.com/foro//showthread.php?t=10769311">Forocoches</a> hay un hilo donde se han reunido los afectados y los posibles afectados para ver qué opciones legales tienen.</p>
]]></description>
</item>

<item>
<title>Web component para mostrar spoilers en tu blog</title>
<link>https://chancli.dev/blog/web-component-para-mostrar-spoilers.html</link>
<pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/web-component-para-mostrar-spoilers.html</guid>
<description><![CDATA[<p>Si en tu blog comentas series o películas quizás pueda interesarte la opción de mostrar spoilers ocultos para no fastidiarle el capítulo a nadie y aún así ofrecer la posibilidad a gente que lo haya visto de comentarte la reseña.</p>
<p>Sin complicarte mucho una buena forma es la de usar <strong>web components</strong>.</p>
<p>Creamos el archivo <code>spoiler-block.js</code></p>
<pre><code class="language-javascript">/**
 * &lt;spoiler-block&gt; web component para mostrar spoilers.
 *
 * Uso:
 *   &lt;spoiler-block&gt;
 *     &lt;p&gt;Aquí va el contenido del spoiler&lt;/p&gt;
 *   &lt;/spoiler-block&gt;
 *
 * Atributos opcionales:
 *   label=&quot;Texto del botón&quot; - (por defecto: &quot;Ver spoiler&quot;)
 *   hide-label=&quot;Custom&quot; - (por defecto: &quot;Ocultar spoiler&quot;)
 *   open - por defecto muestra este botél spoiler abierto
 */
class SpoilerBlock extends HTMLElement {
  static get observedAttributes() {
    return [&quot;label&quot;, &quot;hide-label&quot;];
  }

  constructor() {
    super();
    this.attachShadow({ mode: &quot;open&quot; });
  }

  connectedCallback() {
    const isOpen = this.hasAttribute(&quot;open&quot;);

    this.shadowRoot.innerHTML = `
      &lt;style&gt;
        :host {
          display: block;
          margin: 1em 0;
        }
        button {
          display: inline-flex;
          align-items: center;
          justify-content: center;
          gap: 0.5em;
          padding: 0.5rem 1rem;
          font-size: 1rem;
          line-height: 1.5;
          white-space: nowrap;
          vertical-align: middle;
          text-decoration: none;
          background-color: transparent;
          color: white;
          border-radius: 0.375rem;
          cursor: pointer;
          transition:
            background-color 0.15s ease-in-out,
            border-color 0.15s ease-in-out,
            color 0.15s ease-in-out;
          border: 1px solid #4a5568;
        }
        button:hover {
          opacity: 0.8;
        }
        .content {
          margin-top: 0.6em;
          padding: 0.8em 1em;
          border-left: 3px solid currentColor;
        }
        .content[hidden] {
          display: none;
        }
      &lt;/style&gt;
      &lt;button type=&quot;button&quot; aria-expanded=&quot;${isOpen}&quot;&gt;&lt;/button&gt;
      &lt;div class=&quot;content&quot; ${isOpen ? &quot;&quot; : &quot;hidden&quot;}&gt;
        &lt;slot&gt;&lt;/slot&gt;
      &lt;/div&gt;
    `;

    this._button = this.shadowRoot.querySelector(&quot;button&quot;);
    this._content = this.shadowRoot.querySelector(&quot;.content&quot;);

    this._updateButtonText();
    this._button.addEventListener(&quot;click&quot;, () =&gt; this.toggle());
  }

  attributeChangedCallback() {
    if (this._button) this._updateButtonText();
  }

  _updateButtonText() {
    const isOpen = this._button.getAttribute(&quot;aria-expanded&quot;) === &quot;true&quot;;
    const showLabel = this.getAttribute(&quot;label&quot;) || &quot;Ver spoiler&quot;;
    const hideLabel = this.getAttribute(&quot;hide-label&quot;) || &quot;Ocultar spoiler&quot;;
    this._button.textContent = isOpen ? hideLabel : showLabel;
  }

  toggle(force) {
    const isOpen =
      typeof force === &quot;boolean&quot;
        ? force
        : this._button.getAttribute(&quot;aria-expanded&quot;) !== &quot;true&quot;;

    this._button.setAttribute(&quot;aria-expanded&quot;, String(isOpen));
    this._content.hidden = !isOpen;
    this._updateButtonText();
  }
}

customElements.define(&quot;spoiler-block&quot;, SpoilerBlock);
</code></pre>
<p>Una vez que lo tengamos cargado en la web, podremos usar el componente:</p>
<pre><code class="language-html">&lt;spoiler-block&gt;
  &lt;p&gt;Aquí va el contenido del spoiler&lt;/p&gt;
&lt;/spoiler-block&gt;
</code></pre>
<p>Como se ve en el código, soporta algunos atributos para personalizarlo:</p>
<pre><code class="language-html">&lt;spoiler-block label=&quot;Spoiler alert!&quot;&gt;
  &lt;p&gt;Aquí va el contenido del spoiler&lt;/p&gt;
&lt;/spoiler-block&gt;
</code></pre>
<p>Oculto quedaría:</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/web-component-spoiler-1.png" alt="web component spoilers oculto"></p>
<p>Si lo abrimos quedaría:</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/web-component-spoiler-2.png" alt="web component spoilers abierto"></p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Ayer fue uno de los días más duros en el veterinario</title>
<link>https://chancli.dev/blog/dia-duro-veterinario.html</link>
<pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/dia-duro-veterinario.html</guid>
<description><![CDATA[<p>Todo empezó el domingo por la noche. Como tantas otras veces, dejamos a Chancla cenando y salimos nosotros a cenar.</p>
<p>Cuando llegamos, estuvimos fuera unas dos horas solamente, tuvimos cuidado cuando abrimos la puerta, pues ya no oye bien y como su sitio favorito es dormir en el suelo junto a la puerta, no queríamos que se asustara. Tras abrir con cuidado, no estaba allí y tampoco en su rincón. Levanté la mirada y estaba en medio del salón tumbada boca abajo con las cuatro patas abiertas, como una estrella de mar.</p>
<p>Rápidamente la recogí, intenté levantarla y las patas no le respondían. La comida estaba prácticamente intacta.</p>
<p>Fuimos en ese mismo momento a un hospital de urgencia en el que, tras una primera valoración, le pincharon corticoides y nos indicaron hacerle al día siguiente una radiografía.</p>
<p>Nos fuimos a casa y pudo descansar algo más, pero no era capaz de levantarse sola y a duras penas podía andar.</p>
<p>A primera hora del día siguiente fuimos a su veterinario y le hicieron radiografías.</p>
<p>Las caderas están bien, pero tiene dos protrusiones en las vértebras que puede estar ocasionándole un pinzamiento en la médula. El resultado es debilitamiento de las extremidades. Los reflejos propioceptivos los tiene deteriorados.</p>
<p>Le pusieron otra inyección y nos dieron unos antiinflamatorios orales, que hemos empezado esta mañana.</p>
<p>Ayer por la tarde parece que mejoró un poco, a su hora del paseo la llevamos en brazos donde ella hace sus necesidades y pudo andar un poco, lento, lo que ella quiso.</p>
<p>Esta noche ha sido bastante complicada, cada 30min - 1h estaba con jadeos por incomodidad supongo. Ella, con su pelo largo, calienta muy rápido el suelo, aún poniéndole el aire acondicionado toda la noche como estamos haciendo. Como no se puede levantar sola, se agobia y estresa.</p>
<p>Así que estuve toda la noche ayudándola a incorporarse y encontrar su posición más cómoda.</p>
<p>El diagnóstico no es alentador. Esto es degenerativo y, debido a su edad, se descarta la cirugía.</p>
<p>Sólo nos queda esperar a que el tratamiento le mejore y le permita llevar una mejor calidad de vida.</p>
<p>Estamos devastados.</p>
]]></description>
</item>

<item>
<title>Quitando un avispero en casa</title>
<link>https://chancli.dev/blog/quitar-avispero.html</link>
<pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/quitar-avispero.html</guid>
<description><![CDATA[<p>Vivo en un ático con una terraza algo particular. Tiene una pérgola de hormigón y entre la pérgola y la azotea del edificio hay una pared vertical de 1,50m aprox.</p>
<p>El otro día observé un par de avispas en la terraza y se dirigieron al mismo sitio, cogí la escalera y conseguí ver qué pasaba. Me habían hecho un avispero en una zona bastante complicada de llegar.</p>
<p>No tenía ni idea, pero existen unos insecticidas especiales contra avisperos que tienen un alcance de unos 4m. ¡Y vaya que si llegan!</p>
<p>Me lo recomendaron en la ferretería y tras esperar a que se hiciera de noche (para que las avispas estuvieran menos activas) y que fuera un día sin viento, decidí arriesgarme :D </p>
<p>Le solté cuatro ráfagas y al medio día siguiente tenía la terraza llena de avispas caídas y el avispero vacío.</p>
<p>¡No era pequeño no!</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/avispero.jpeg" alt="avispero"></p>
]]></description>
</item>

<item>
<title>Hectáreas quemadas vistas con perspectiva real</title>
<link>https://chancli.dev/blog/hectareas-quemadas-con-perspectiva.html</link>
<pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/hectareas-quemadas-con-perspectiva.html</guid>
<description><![CDATA[<p>Para no perder la mala costumbre de cada verano, los <strong>incendios</strong> están siendo protagonistas en España.</p>
<p>Es raro no despertarte un día poner la radio y no escuchar ninguna noticia sobre nuevos incendios. Es una <strong>auténtica catástrofe</strong> natural, económica y muchas veces personal también.</p>
<p>Uno de los problemas que nos pasa a la sociedad es que dan cifras de hectáreas quemadas y las <strong>normalizamos</strong>. No tenemos ni idea de cuanto es 1 o 50 hectáreas. </p>
<p>Newtral ha generado un mapa que es muy útil para poner en perspectiva cuanto suponen las más de 35.000 hectáreas quemadas, por ahora, en el incendio de La Mierla (Guadalajara).</p>
<p>Echadle un vistazo porque he alucinado. He colocado la superficie en la zona del Campo de Gibraltar y prácticamente arrasa 3 poblaciones enteras:</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/3000-ha-quemadas-con-perspectivas.png" alt="mapa hectareas quemadas"></p>
<p><a href="https://www.newtral.es/dimension-incendios-forestales-ciudades/20260723/">Enlace al mapa de Newtral</a></p>
]]></description>
</item>

<item>
<title>Enlaces para ver el tiempo en Algeciras</title>
<link>https://chancli.dev/blog/enlaces-meteo-algeciras.html</link>
<pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/enlaces-meteo-algeciras.html</guid>
<description><![CDATA[<p>Soy un gran aficionado a los datos en general y desde hace un tiempo con todo el asunto del cambio climático, borrascas enlazadas y olas de calor empecé a buscar fuentes de información lo más fiables posibles.</p>
<p>Lo primero que encontré fueron varias estaciones meteorológicas como:</p>
<ul>
<li><a href="https://www.meteoclimatic.net/perfil/ESAND1100000011203A?screen_width=1512">meteoclimatic</a></li>
<li><a href="https://www.awekas.at/es/instrument.php?id=23025">awekas</a> (que pinta los datos desde <a href="https://www.ecowitt.net/home/share?authorize=MQ9WQ8&device_id=TGVaTWt1NVpWenZib2Y2MVNlZDRGZz09#">ecowitt</a>)</li>
</ul>
<p>Las estaciones meteorológicas no hacen predicciones, pero si sirven para ver el estado real y un histórico.</p>
<p>Para predicciones la web que más me convence pero que no es específica de Algeciras es <a href="https://www.meteociel.fr/modeles/gfs/espagne/temperatures-2m/18h.htm">meteociel</a>, donde hay infinidad de información y mapas de España y Europa.</p>
<p>Si también estás interesado en la información meteorológica te invito a que busques información de estaciones en tu localidad porque seguro que hay alguna.</p>
<p>Os dejo <a href="mailto:contacto@chancli.dev">mi correo</a> por si sabéis de otros sitios con información meteorológica fiable.</p>
<p>Un saludo!</p>
]]></description>
</item>

<item>
<title>Llevo un mes durmiendo en el sofá</title>
<link>https://chancli.dev/blog/llevo-1mes-durmiendo-salon.html</link>
<pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/llevo-1mes-durmiendo-salon.html</guid>
<description><![CDATA[<p>Pues sí, desde que más o menos empezó esta dichosa ola de calor llevo durmiendo en el salón. ¿Por qué? pues porque Chancla es donde mejor pasa la noche con el aire acondicionado.</p>
<p>A sus <strong>13 años</strong> ya, se nota que cada año gestiona peor el calor y aunque tengo aire acondicionado en el dormitorio también, donde mejor descansa es en el salón de casa.</p>
<p>Supongo que al ser más grande, encuentra más sitios con suelo frío... no lo sé, lo cierto es que dada su edad y que parece que tiene el ciclo de sueño algo desvirtuado (descansa más de día que de noche) sólo he conseguido que descanse algo más allí.</p>
<p>Siempre ha dormido en el mismo sitio que yo, ella en su cama o suelo, y ahora, cuando más me necesita, <strong>no le voy a fallar</strong>, aunque ello requiera que me mude al sofá hasta que esto pase.</p>
]]></description>
</item>

<item>
<title>Mis estadísticas de running en la web</title>
<link>https://chancli.dev/blog/mis-estadisticas-running-disponibles.html</link>
<pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/mis-estadisticas-running-disponibles.html</guid>
<description><![CDATA[<p>Llevo ya bastante tiempo tomándome en serio el volver a meter la carrera en mi rutina de ejercicio. Como ya comenté hace algún tiempo, este año conseguí realizar el reto de los <a href="https://chancli.dev/blog/experiencia-101km-ronda-2026.html">101 km de Ronda</a>.</p>
<p>Para conseguirlo nos tuvimos que plantear muy en serio la <strong>rutina de entrenamientos</strong> de caminatas/carreras en nuestros entrenos.</p>
<p>Para ir haciendo pruebas con python, pandas y unos gráficos, decidí ir metiendo de forma manual los entrenos en un CSV e ir trabajando con él.</p>
<p>Me ha parecido una buena forma incluirlo aquí en la web con información algo más básica de la que normalmente utilizo.</p>
<p>Lo tenéis en la sección de <a href="https://chancli.dev/running.html">Running</a>.</p>
<p>La importación de datos lo hago de manera manual, pero sí que tengo como rutina ir actualizando el CSV cada vez que llego de correr.</p>
<p>Un saludo!</p>
]]></description>
</item>

<item>
<title>Los Perseguidos, ficción sonora fantástica</title>
<link>https://chancli.dev/blog/los-perseguidos-audio-ficcion.html</link>
<pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/los-perseguidos-audio-ficcion.html</guid>
<description><![CDATA[<p>Soy un gran aficionado a los podcasts, sobre todo sigo podcasts de tecnología y algunos de misterio.</p>
<p>Pero hoy no vengo a recomendaros un podcast normal, es una ficción sonora de una <strong>calidad</strong> de producción increíble.</p>
<p>Se trata de <a href="https://www.ondacero.es/podcast/originales/perseguidos/">Los Perseguidos</a>, basado en la novela de Fernando Benzo.</p>
<p>Se ve que <strong>Onda Cero</strong> ha apostado fuerte por este formato ya que el elenco de actores que dan voz a los personajes es tremendo. Entre ellos cuentan con Salva Reina, Victor Clavijo, Natalia Huarte, Fernando Tejero, María Hervás... todos ellos reconocibles por innumerables películas y series.</p>
<p>Te recomiendo que los escuches con auriculares, te meterás de lleno en la historia y gracias a que ya están los 8 episodios, podrás escucharlos del tirón, entre 28 y 40min cada uno.</p>
<p>Yo los tuve que ir escuchando a través de la web de Onda Cero porque iban sacando uno cada semana, pero ya están todos disponibles en todas las plataformas, como <a href="https://www.ivoox.com/podcast-perseguidos_sq_f13146178_1.html">iVoox</a>.</p>
]]></description>
</item>

<item>
<title>Unir dos imagenes en mac o linux</title>
<link>https://chancli.dev/blog/unir-dos-imagenes-mac-linux.html</link>
<pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/unir-dos-imagenes-mac-linux.html</guid>
<description><![CDATA[<p>Hoy estaba en el Mac y tenía dos imágenes que quería unir.</p>
<p>Estaba buscando la mejor forma de hacerlo y no encontré nada que no fueran apaños.</p>
<p>Finalmente di con la solución, usando el clásico <a href="https://imagemagick.org/">Imagemagick</a></p>
<p>No lo tenía instalado en Mac, así que usando Homebrew:</p>
<pre><code class="language-bash">brew install imagemagick
</code></pre>
<p>Con Imagemagick podemos unirla tanto vertical, como horizontalmente:</p>
<p>Unir imágenes en vertical:</p>
<pre><code class="language-bash">$ magick superior.jpg inferior.jpg -append en-vertical.jpg
</code></pre>
<p>Unir imágenes en horizontal:</p>
<pre><code class="language-bash">$ magick izquierda.jpg derecha.jpg +append en-horizontal.jpg
</code></pre>
<p>Y el fruto de todo esto era esta imagen:</p>
<p>0 años vs 13 años :D</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/chancla-antes-despues.jpg" alt="chancla antes y después"></p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Limpiando el VScode de IA y demás basura</title>
<link>https://chancli.dev/blog/quitando-ia-de-vscode.html</link>
<pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/quitando-ia-de-vscode.html</guid>
<description><![CDATA[<p><strong>VScode</strong> siempre ha sido mi editor de código favorito pero desde que empezó a tener tantos usuarios y con el auge de la IA se ha vuelto en una especie <strong>cajón de sastre</strong> donde todo vale.</p>
<p>Chats de IA por todos lados, autocompletados, extensiones, extensiones, extensiones... si echamos un vistazo a las settings es una auténtica locura.</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/vscode-settings.gif" alt="settings de vscode"></p>
<p>¡Yo solo quiero un editor de código!</p>
<p>Me ha sido imposible dejarlo como quiero, pero tocando un poco las <strong>settings</strong> se puede dejar algo más limpio.</p>
<p>Para ello abrimos el JSON de las settings, en Mac sería:</p>
<ul>
<li>Tecleamos &quot;Command + Shift + P&quot; para sacar la paleta de comandos.</li>
<li>Elegimos <em>Preferences: Open User Settings (JSON)</em></li>
</ul>
<p>Añadimos al final:</p>
<pre><code class="language-json">{
  .....
  &quot;telemetry.feedback.enabled&quot;: false,
  &quot;telemetry.telemetryLevel&quot;: &quot;off&quot;,
  &quot;workbench.enableExperiments&quot;: false,
  &quot;workbench.settings.enableNaturalLanguageSearch&quot;: false,
  &quot;extensions.autoCheckUpdates&quot;: false,
  &quot;update.mode&quot;: &quot;manual&quot;,
  &quot;chat.disableAIFeatures&quot;: true
}
</code></pre>
<p>Reiniciamos VSCode y sí que habremos conseguido dejarlo algo más limpio.</p>
<p>¡Happy coding!</p>
]]></description>
</item>

<item>
<title>Nintendo me ha creado una necesidad que no tenía</title>
<link>https://chancli.dev/blog/nintendo-me-crea-necesidad-que-no-tenia.html</link>
<pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/nintendo-me-crea-necesidad-que-no-tenia.html</guid>
<description><![CDATA[<p>Lo han vuelto a hacer. Hacía mucho que no tenía esa sensación.</p>
<p>La semana pasada, Nintendo presentó lo que iba a ser una de las grandes bombas en el mundo de los video juegos para este año 2026. En medio de un Nintendo Direct rutinario coló un pequeño avance del remake de <strong>Ocarina Of Time</strong>, considerado por muchos (me incluyo) como el mejor juego de todos los tiempos.</p>
<div class="video-player">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/GLgCZ5FbkKo?si=62Cf8g7FfOJqAfv1&amp;controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>

<p>No me voy a poner a nombrar todas las virtudes que tenía el juego pero fue muy revolucionario para la época por cosas como que era el primer Zelda en 3D, que tenía mundos abiertos y las mecánicas de lucha. A eso sumadle una espectacular banda sonora que aún a día de hoy me la pongo de vez en cuando de fondo mientras trabajo.</p>
<p>Corría Noviembre de 1998 cuando Nintendo lo sacó a la venta, y estaba claro que las navidades de ese año iban a ser diferentes.</p>
<p>El &quot;hype&quot; que tenía con A., mi mejor amigo, era tremendo. Consumíamos todo tipo de información, que en aquella época era poco más que las revistas mensuales en los kioskos y nos alimentábamos el uno al otro haciendo que la espera porque llegara el día de reyes fuera cada vez más larga.</p>
<p>El día 6 de Enero los Reyes Magos no fallaron y me incluyeron ese Ocarina Of Time junto con una flamante <strong>N64</strong>.</p>
<p>No recuerdo haberme viciado más a un juego en mi vida. Cruce de llamadas constantes con A. contándonos los avances: que si yo he superado el tempo del agua, que si yo he conseguido a Epona... una sensación que aún a día de hoy me hace que se erice el pelo.</p>
<p>Dicho esto, os diré que no tengo una <strong>Switch 2</strong>, plataforma elegida por Nintendo para lanzar el remake de OOT, tengo una Switch a la que apenas juego pero... como dice el título del post, Nintendo me ha creado una necesidad que no tenía, así que con las noticias avanzadas de la subida de precios de la Switch 2 en Septiembre, ya me estoy planteando la compra de una a la espera del lanzamiento del juego.</p>
<p>El próximo paso es poner la mía a la venta y empezar a mirar si hay alguna oferta... va a ser una segunda mitad de año muy pendiente de las noticias de Nintendo.</p>
<p>¡Cuánto echaba de menos esta sensación consolera!</p>
]]></description>
</item>

<item>
<title>Su primer día de playa VS hoy</title>
<link>https://chancli.dev/blog/chancla-primer-dia-playa-vs-hoy.html</link>
<pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/chancla-primer-dia-playa-vs-hoy.html</guid>
<description><![CDATA[<p>El día 4 de Junio de 2026, mi gran amor, mi &quot;Chancli&quot;, cumplió 13 años.</p>
<p>Hacía mucho tiempo que no la llevaba y pensé: ¿Qué mejor regalo que llevarla donde más le gusta?</p>
<p>Nos levantamos muy temprano para evitar gente,y multas, y a las 7:15 de la mañana estábamos en la playa.</p>
<p>Fue una experiencia agridulce, porque aunque fue una gozada verla disfrutar, me dolió mucho ver como le cuesta tanto moverse ya. Como quiere correr, pero cojea, como intenta coger la pelota pero se tropieza... en fin, como está de mayor, como ha envejecido.</p>
<p>Me pareció buena idea escribir este post para rescatar un par de fotos de su primer día en la playa, en Septiembre de 2013:</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/chanclaplaya-4.jpg" alt="primer dia de chancla en la playa"></p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/chanclaplaya-1.jpg" alt="primer dia de chancla en la playa"></p>
<p>y las fotos de hoy, 13 años después:</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/chanclaplaya-2.jpg" alt="chancla en la playa con 13 años"></p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/chanclaplaya-3.jpg" alt="chancla en la playa con 13 años"></p>
]]></description>
</item>

<item>
<title>Me está dejando de gustar trabajar de programador, gracias IA</title>
<link>https://chancli.dev/blog/me-esta-dejando-de-gustar-mi-trabajo-por-ia.html</link>
<pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/me-esta-dejando-de-gustar-mi-trabajo-por-ia.html</guid>
<description><![CDATA[<p>Mis primeros recuerdos como programador son de cuando era bastante niño, con el Spectrum y su libro de Basic que me regalaron mis padres.</p>
<p>Después de ahí vino Perl, PHP, Javascript y Python. Siempre de forma <strong>autodidacta</strong>, leyendo tutoriales y documentación oficial.</p>
<p>Empecé profesionalmente con PHP y MySQL, allá por el 2003 aproximadamente.</p>
<p>Y ahí fue cuando empecé a mejorar muchísimo gracias a los <strong>compañeros</strong> y las revisiones de código.</p>
<p>Cada revisión de código que hacía o que me hacían era muchas veces la forma que tenía de conseguir mejores habilidades.</p>
<p>Ahora con la IA esto prácticamente <strong>no existe</strong>. En mi actual empresa todavía se estaba resistiendo a ser &quot;AI first&quot;. Hacíamos desarrollos apoyados por la IA pero no desarrollos hechos por la IA.</p>
<p>Lamentablemente esto está empezando a cambiar. Han surgido ramas que abogan a que todo tiene que ser desarrollado y revisado por la IA. Hemos llegado a tal punto que cualquier documentación, por pequeña que sea, es desarrollada, e inflada sin sentido. Con lo que pierdes el contexto y las ganas de leer.</p>
<p>He visto convertir descripciones de <em>pull request</em> que bien podían ser una simple línea en párrafos rellenos de verbosidad. Te das cuenta que a la persona que lo rellena no le interesa que otra persona lo lea, es imposible.</p>
<p>¿Recuerdas cuando escribías algo y lo volvías a leer por si se iba a entender? ahora ya da igual.</p>
<p><strong>Todo vale</strong> con tal de sumar y seguir.</p>
<p>Sinceramente me están quitando las ganas de seguir dedicándome a la informática. A los que nos gusta de verdad, la gente que solo viene a montarse en la ola nos están echando.</p>
<p>Uno de los pocos reductos que nos quedan son los blogs personales, donde espero poder seguir haciendo pruebas y, por qué no, desahogarme de vez en cuando.</p>
<p>Happy Human Coding!</p>
]]></description>
</item>

<item>
<title>Gestiona tus favoritos con Linkding</title>
<link>https://chancli.dev/blog/gestiona-favoritos-linkding.html</link>
<pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/gestiona-favoritos-linkding.html</guid>
<description><![CDATA[<p>Últimamente no sabía muy bien como gestionar mis favoritos. Prefería una solución algo más potente, pero tampoco que fuera demasiado overkill, a lo que ofrecen los navegadores.</p>
<p>Investigando un poco las soluciones <em>self-hosted</em> di con <a href="https://linkding.link/">Linkding</a>, casi como la red social :D</p>
<p>Linkding hace lo que promete y ya está. No tiene florituras ni features demasiado complejas que al final no usas nunca.</p>
<p>Gestiona favoritos, puedes marcar como visto o pendiente, organizar por tags...</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/linkding.jpg" alt="linkding gestiona favoritos"></p>
<p>Además ofrece la creación de API tokens para habilitar integraciones con otras aplicaciones.</p>
<p>En la parte de integraciones también ofrece enlaces a extensiones para Firefox y Chrome o si quieres prescindir de extensiones, puedes utilizar sus <strong>bookmarklets</strong> (yo es lo que uso) y funcionan francamente bien.</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/linkding-integrations.jpg" alt="linkding integraciones"></p>
<p>Como siempre, vamos a ponerlo fácil, vamos a usar el docker-compose para levantar el servicio:</p>
<pre><code class="language-yaml">services:
  linkding:
    image: sissbruecker/linkding:latest
    container_name: linkding
    restart: unless-stopped
    environment:
      LD_DB_ENGINE: sqlite
    env_file: .env
    volumes:
      - ./data:/etc/linkding/data
    ports:
      - &quot;127.0.0.1:9090:9090&quot;
    networks:
      - linkding-net
    healthcheck:
      test:
        [
          &quot;CMD&quot;,
          &quot;wget&quot;,
          &quot;--quiet&quot;,
          &quot;--tries=1&quot;,
          &quot;--spider&quot;,
          &quot;http://localhost:9090/health&quot;,
        ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

networks:
  linkding-net:
    driver: bridge
</code></pre>
<p>En el directorio donde alojemos este <code>docker-compose.yml</code> creamos el directorio <code>data</code> que usaremos para la persistencia de datos.</p>
<p>También necesitaremos crear el archivo <code>.env</code> con el contenido:</p>
<pre><code class="language-bash">LD_SUPERUSER_NAME=tuusuario
LD_SUPERUSER_PASSWORD=tucontraseñasegura
LD_LOG_LEVEL=info
</code></pre>
<p>El directorio quedaría así:</p>
<pre><code class="language-bash">~/projects/linkding$ ls -a
.  ..  data  docker-compose.yml  .env
</code></pre>
<p>Luego ejecutamos:</p>
<pre><code class="language-bash">docker compose up -d --build
</code></pre>
<p>Y ya lo tendríamos funcionando en <code>http://localhost:9090</code></p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Mi experiencia en los 101km de Ronda 2026</title>
<link>https://chancli.dev/blog/experiencia-101km-ronda-2026.html</link>
<pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/experiencia-101km-ronda-2026.html</guid>
<description><![CDATA[<p>Y se acabó. Con la finalización de los 101 de Ronda se acaba, por fin, mi temporada de carreras que empezó a programarse en Octubre de 2025.</p>
<p>Todo empezó con un grupo de 3 amigos, M.J., mi pareja, P.V. el loco que nos acompaña.</p>
<p>P.V. había realizado esta prueba mágica hace algún año en la modalidad de bicicleta, pero nunca como marchador. Un día entrenando juntos, conociéndonos, nos comentó que hacerlo sería el mayor reto al que se habría enfrentado. No faltó mucho más para convencernos y empezamos a pensarlo.</p>
<p>El plan de pruebas previos estaba claro:</p>
<ul>
<li>Noviembre 2025 : Media Maratón de Córdoba - 21 km</li>
<li>Enero 2026 : Manilva Trail - 21km</li>
<li>Marzo 2026 : Cuna de La Legión en Ceuta - 50km</li>
<li>Abril 2026 : Media Maratón de Granada - 21 km</li>
<li>Mayo 2026 : 101km de Ronda</li>
</ul>
<p>Entre medias se quedan muchas quedadas de series, de madrugones para ajustar horarios entre los 3, acumular el máximo número de kilómetros, pruebas de geles, de suplementos... mucho trabajo.</p>
<p>M.J. y yo pudimos cogernos el viernes previo a la prueba de vacaciones, para evitar problemas que siempre pasan en el trabajo en cualquier día que tengas un plan y poder hacer la compra para el fin de semana tranquilamente.</p>
<p>Poco más tarde de la hora de comer ponemos rumbo a Igualeja, a 25 min de Ronda, donde decidimos establecer nuestro &quot;cuartel&quot; particular. Intentamos buscar alojamiento en Ronda o lo más cerca posible pero fue tarea imposible. Los alojamientos, hoteles y viviendas turísticas estaban por las nubes. Nos llegaron a pedir 900€ por el fin de semana para 3 personas. En las redes sociales veías como iban saliendo anuncios por cancelaciones de última hora, pero todos se iban más allá de los 400-500€.</p>
<p>Tal y como dejamos las cosas en el apartamento, ponemos rumbo a Ronda para dejar la &quot;mochila de vida&quot; en el Cuartel, km 70 de la prueba, con la ropa que íbamos a necesitar para pasar la noche.</p>
<p>A pesar de la gente que había, la cola iba rapidísima, los legionarios están ya muy curtidos y tood fue sobre ruedas, tanto la gestión del tráfico como la entrega de bolsas para dejar tu mochila.</p>
<p>Dimos un breve paseo por el centro de Ronda y la Alameda, lugar de la meta. Allí tiene lugar la cena de la pasta que ofrece la organización, pero como sabíamos que habría MUCHÍSIMA cola, decidimos cenar un buen plato de pasta en nuestra casa y descansar mejor.</p>
<p>Después de la cena dejé el material preparado para la carrera:</p>
<ul>
<li>Camiseta que nos dieron en la X Cuna de la Legión (de la marca 42k)</li>
<li>Zapatillas Nike Pegasus Trail 5</li>
<li>Reloj Garmin Instict 2 cargado</li>
<li>Mochila con geles, comida y softflask llenos</li>
</ul>
<p>Un consejo os doy, no confiéis en la comida de los avituallamientos. Suele haber fruta, en algunos ponen frutos secos y en Setenil es donde más comida sólida hubo (sandwiches). La cena del cuartel es en el 70, por lo que antes tendrás que ir bien alimentado.</p>
<p>Nosotros no teníamos a nadie que nos fuera haciendo de soporte en los distintos pueblos, por lo que improvisamos una serie de minibocadillos hechos de jamón serrano y bollitos de leche de Mercadona. ¡Fue todo un acierto! cuando llevabas ya tanto dulce en el cuerpo, llegaba un momento que te pedía algo salado.</p>
<p>La mañana de la carrera nos levantamos temprano, desayunamos y directos a Ronda. Decidimos dejar el coche más cerca de la llegada que de la salida :D aún así, debido a toda la gente que había, lo dejamos como a casi 2km, que después de 100 y pico, se hace todo demasiado largo... pero no había otro sitio.</p>
<p>El tiempo, no lo he dicho, estaba nublado cuando salimos... incluso nos llovió mientras esperábamos en el campo de fútbol. Cosa que pasaría, y con más intensidad, bien entrada la carrera.</p>
<p>El momento de la salida ya se sabe, el pueblo lleno de gente, adrenalina por las nubes, piernas frescas y a correr. Afortunadamente tuvimos algo de cabeza y decidimos no salirnos mucho de nuestro plan. Trotar y caminar, al menos mientras las piernas duraran. Hasta aproximadamente el km 45 fue lo que hicimos.</p>
<p>Durante toda la carrera el apoyo de la gente fue increíble. Un auténtico 10 para todo el público de Ronda y pueblos de alrededor.</p>
<p>Evidentemente en una carrera tan larga no todo fue bonito. Durante los primeros 50 fui yo el que moralmente no iba muy allá, ya que veía como P.V. y M.J. eran capaces de andar más rápido y veía que les estaba lastrando. Pero la maravilla de una carrera tan larga es que cuando tú te recuperas es el otro el que cae y tienes que estar ahí para ayudarlo.</p>
<p>P.V. empezó a notar dolor en el poplíteo desde el km 50. Mejoró un poco a partir del 60. M.J. iba tocada con el tibial durante prácticamente la mitad de la carrera.</p>
<p>Llegamos al cuartel, km 72. Nos cambiamos con la ropa para la noche y pudimos reponer algo de fuerza. Tanto P.V. como M.J. solicitaron el fisio que hay en el cuartel para que pudiera descargarles. Yo no quise, no quise ni apenas sentarme, tenía miedo que una relajación excesiva me dejara fuera de juego.</p>
<p>Terminando la cena, M.J. nos comentó que no sabía si podía andar, por las molestias del tibial y dos ampollas importantes. Tras una breve charla, decidió intentarlo, ¡¡¡y vaya que si lo hizo!!!</p>
<p>Dicen que a partir del 70 es cuando empieza lo duro. Doy fe. Te pilla la noche y tanto la subida a la ermita como la salida de Benaoján lo pasamos regular.</p>
<p>En la cuesta de la salida de Benaoján, ya por el 90 o así, la cuestaba estaba llena de barro y piedas. P.V. se resbaló chocando su tobillo con una piedra, se descompuso. No solo era el dolor, cuando apoyaba el pie sentía pinchazos en el talón y creía que no podría seguir.</p>
<p>Gracias a su tenacidad y a que tanto M.J. como yo nos volcamos con él, pudo continuar, sin parar de cojear desde entonces.</p>
<p>Lo positivo es que ya nos quedaba poco margen para seguir empeorando :D así que cuando empezamos a ver amanacer y ver Ronda de cerca los ánimos nos hicieron continuar.</p>
<p>Qué maravilla poder apreciar esos paisajes sabiendo que la gloria y el descanso estaban cerca.</p>
<p>Pero... ahhhh... nos esperaba un último regalo. La denominada cuesta del cachondeo. Una cuesta de unos 1.5 km de longitud que cuando vienes de donde vienes, se hace muuucho más larga. Pero si algo teníamos los 3 es que subir siempre se nos dio mejor que bajar, así que... clavando palos y sin pausa hacia arriba.</p>
<p>Desde ahí, solo quedaba apreciar los aplausos, los ánimos, hablarnos, darnos la enhorabuena los 3, decirnos que no habíamos podido elegir mejores compañeros para esta locura, secarnos las lágrimas y disfrutar de la medalla.</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/medalla-101ronda-2026.jpeg" alt="medalla 101km ronda 2026"></p>
]]></description>
</item>

<item>
<title>Chancli.dev está en Personalsit.es</title>
<link>https://chancli.dev/blog/chanclidev-en-personalsites.html</link>
<pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/chanclidev-en-personalsites.html</guid>
<description><![CDATA[<p>Para el que no lo conozca, <a href="https://personalsit.es/">personalsit.es</a> es un directorio de sitios web personales que actualmente tiene más de 980 registros.</p>
<p>El sitio diría que es 99% de idioma inglés, pero como soy muy fan de ellos decidí solicitar el registro de chancli.dev allí y nos han aceptado :)</p>
]]></description>
</item>

<item>
<title>Libro de visitas disponible!</title>
<link>https://chancli.dev/blog/libro-de-visitas-disponible.html</link>
<pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/libro-de-visitas-disponible.html</guid>
<description><![CDATA[<p>Desde hoy ya tengo disponible el libro de visitas en la web!</p>
<p>Se que tengo muy pocas visitas, pero me hacía mucha ilusión poder ofrecer un espacio donde la gente dejara sus mensajes.</p>
<p>Está disponible en <a href="https://chancli.dev/guestbook">libro de vistas</a> :)</p>
<p>Por motivos de seguridad, todos los envíos están pendientes de revisón antes de ser publicados.</p>
<p>Os leo pronto!</p>
]]></description>
</item>

<item>
<title>Tras 32 años, vuelve un Mundial a EEUU</title>
<link>https://chancli.dev/blog/mundial-futbol-2026.html</link>
<pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/mundial-futbol-2026.html</guid>
<description><![CDATA[<p>Habiendo nacido en 1983, mi primer recuerdo de un Mundial de fútbol es el de <strong>Italia 90</strong>, recuerdo el partido inaugural, un Argentina (que era el vigente campeón) contra Camerún, donde saltó la sorpresa ganándole 0 - 1.</p>
<p>Después de ese partido, poco más tengo en la memoria. Algo de esa Alemania de Matthaus... pero mi primer gran recuerdo de un Mundial es el de EEUU 94.</p>
<p>Con 11 años, me tragué todos los partidos que pude, no solo los de <strong>España</strong>. Era verano, y como los partidos se emitían de madrugada, no tenía problemas.</p>
<p>Qué maravilla ver con mis padres en la salita de casa ese golazo de Goikoetxea contra Alemania. ¿Centró o quiso tirar de verdad? :D</p>
<div class="video-player">
<iframe width="560" height="315" src="https://www.youtube.com/embed/iSv3S5SCnic?si=mzOtET1juwaie5vt&amp;controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>

<p>Este año la gran cita del fútbol vuelve a pisar suelo estadounidense (que comparte sedes con Canadá y Méjico) pero ya nada será igual.</p>
<p>El dinero lo puede todo y las cadenas de televisión mandan. A más partidos, más publicidad visible, más dinero.</p>
<p>Si en <strong>EEUU 94</strong> había 24 selecciones, las 24 mejores, este año van ¡¡48!!</p>
<p>¿Qué supone eso? que muchos partidos tendrán muy poco interés.</p>
<p>Aunque eso sí, volveremos a ver a Cristiano Ronaldo (con 41 años) y a Messi (con 39 en el Mundial)</p>
]]></description>
</item>

<item>
<title>Crónica de la Media Maratón de Granada 2026</title>
<link>https://chancli.dev/blog/media-maraton-granada-2026.html</link>
<pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/media-maraton-granada-2026.html</guid>
<description><![CDATA[<p>Este 25 de Abril de 2026 se celebró la que dicen es la carrera más bonita del mundo, la 42ª edición de la <strong>Media Maratón de Granada</strong>.</p>
<p>El primer gran escollo de la carrera fue el poder coger dorsal. La plataforma para la adquisición de dorsales de esta gran carrera es lamentable.</p>
<p>Primero te tenías que registrar en la web de la Diputación de Granada y una vez ahí finalizar la inscripción.</p>
<p>Se habilitaban 7.500 dorsales, y desde el minuto 0 en el que se habilitó el registro, la web <strong>se bloqueó</strong>. No sólo esa web, sino la plataforma entera de la Diputación de Granada, por lo que cualquier persona que quisiera acceder a otro servicio, era imposible. Finalmente pudimos cogerlo.</p>
<p>En los días previos a la carrera, las previsiones meteorológicas empeoraron. Lluvia y bastante para el mismo día... pero tuvimos suerte! solo cayeron chaparrones a media mañana y al mediodía, por la tarde no volvió a caer ni una gota :).</p>
<p>Algo antes de las 19:30, hora de la salida, decidimos empezar a movernos para no salir muy atrás en nuestro cajón popular. No íbamos a hacer tiempos cortos, pero siempre es mejor evitar tapones. Luego nos daríamos cuenta que daba igual.</p>
<video controls >
  <source src="https://ik.imagekit.io/9rmw96z6f/chanclidev/media-granada-2026.mp4" type="video/mp4" />
</video>

<p>Era tal el número de corredores y el recorrido, que nunca corrimos solos, siempre tenías a alguien prácticamente pegado. Bien porque iba a tu ritmo o bien porque te adelantaba o les pasabas.</p>
<p>El perfil de la carrera ya te hacía indicar que la &quot;gracia&quot; empezaba a partir del km 11, donde comenzabas a subir hasta prácticamente el km 15. Disfrutando de la hora de llegada, el atardecer en el inigualable Mirador de San Nicolás.</p>
<p>Una vez allí arriba, tras casi 2 km descendiendo, se venía el peso pesado, la subida a la Alhambra. Marco incomparable, pero algo más de 1km de subida pura con bastante pendiente. Aquí fue el momento donde ya veías a gente en los laterales de las calles andando o directamente con algún tipo de calambre siendo ayudados por compañeros.</p>
<p>A partir de ahí nos llegaron un par de bajadas muy pronunciadas que no supe aprovecharlas, bajo muy mal por problemas en la rodilla.</p>
<p>Los dos últimos kilómetros fueron una delicia acompañados del público que se volcó con la carrera.</p>
<p>Sin duda una media maratón para disfrutar y volver a repetir el año que viene.</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/media-maraton-granada-2026.jpeg" alt="Medalla media maratón granada 2026"></p>
]]></description>
</item>

<item>
<title>Instalar FreshRSS en tu VPS con docker</title>
<link>https://chancli.dev/blog/instala-freshrss-vps-docker.html</link>
<pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/instala-freshrss-vps-docker.html</guid>
<description><![CDATA[<p>Llevaba muchísimo tiempo usando la app Netnewswire con mi cuenta de Inoreader para gestionar mis suscripciones a RSS, pero llevaba tiempo queriendo probar <a href="https://freshrss.org/">FreshRSS</a> y después de estar un mes usándolo, ya no hay vuelta atrás.</p>
<p>FreshRSS es un agregador de fuentes autoalojado. Es de código abierto y sus opciones de configuración son casi infinitas.</p>
<p>Para instalarlo usé <strong>docker compose</strong>.</p>
<p>La configuración es tremendamente <strong>sencilla</strong>:</p>
<pre><code class="language-yaml"># docker-compose.yml
services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    ports:
      - &quot;127.0.0.1:8080:80&quot;
    environment:
      TZ: Europe/Madrid
      CRON_MIN: &quot;*/15&quot;
    volumes:
      - freshrss_data:/var/www/FreshRSS/data
      - ./extensions:/var/www/FreshRSS/extensions

volumes:
  freshrss_data:
</code></pre>
<p>Para poder acceder al servicio desde el exterior utilizo un proxy con nginx, por eso en los puertos usé el <code>&quot;127.0.0.1:8080:80&quot;</code></p>
<p>El directorio de extensions lo tengo mapeado en la máquina local, para que me sea más sencillo instalar extensiones.</p>
<p>Particularmente uso:</p>
<ul>
<li><a href="https://github.com/langfeld/FreshRSS-extensions/tree/master/xExtension-FixedNavMenu">Fixed Nav Menu</a></li>
<li><a href="https://github.com/kalvn/freshrss-mark-previous-as-read">Mark previous as read</a></li>
</ul>
<p>Se puede configurar para poder utilizar lectores de RSS externos, pero la propia interfaz de FreshRSS me resulta muy cómoda y así me ahorro el uso de más dependencias.</p>
]]></description>
</item>

<item>
<title>¿He aprendido a relativizar y no me he dado cuenta?</title>
<link>https://chancli.dev/blog/quizas-aprendi-a-relativizar.html</link>
<pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/quizas-aprendi-a-relativizar.html</guid>
<description><![CDATA[<p>Siempre me he considerado una persona muy ansiosa. Desde que era pequeño el querer tenerlo todo bajo control me ha generado muchísima ansiedad.</p>
<p>Recuerdo ser pequeño, quizás 11 años, y quedarme despierto hasta que mis dos hermanos, mayores que yo, volvían a casa de fiesta. Si mis padres salían por la noche, siempre les esperaba despierto. Prácticamente cualquier circunstancia que se me escapaba de lo que yo consideraba mi bienestar, me generaba <strong>ansiedad</strong>.</p>
<p>He leído varios libros sobre mindfulness, centrarse en el presente, soltar lo que no está bajo nuestro control... pero siempre que llegaba una situación fuera de mi control, me afectaba.</p>
<p>Hoy ha pasado algo curioso en el trabajo. La propiedad de la empresa ha pasado a otras manos. Aunque ya han dicho que no, seguro que se avecinan cambios, quizás despidos.</p>
<p>Lo han anunciado esta mañana temprano, y siendo ahora las 15:00h, me acabo de dar cuenta que es algo que no me ha afectado como lo habría hecho en otro momento de mi vida.</p>
<p>¿Quizás he aprendido a aceptar, relativizar y dejar ir?</p>
]]></description>
</item>

<item>
<title>100 jumps ¿cuántos saltos eres capaz de dar?</title>
<link>https://chancli.dev/blog/100jumps-nueva-adiccion-gratis.html</link>
<pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/100jumps-nueva-adiccion-gratis.html</guid>
<description><![CDATA[<p>Hoy he dado con este nuevo &quot;enganche&quot; en forma de juego como en su momento lo fue Flappy Bird.</p>
<p>En <a href="https://100jumps.org/">100 jumps</a> tomamos el control de un simpático cubo al que tendremos que guiar a saltos entre 100 plataformas que van apareciendo cambiando de altura y distancia.</p>
<p>Para saltar solo tenemos que dejar pulsado el espacio el botón izquierdo del ratón dependiendo del impulso que queramos coger.</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/100jumps.jpg" alt="100 jumps juego gratis"></p>
<p>Así de &quot;simple&quot; y de frustrante cuando te quedan pocos para completar y te vas al vacío :D</p>
]]></description>
</item>

<item>
<title>Filtrando IPs maliciosas en tu servidor</title>
<link>https://chancli.dev/blog/filtrando-ips-maliciosas.html</link>
<pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/filtrando-ips-maliciosas.html</guid>
<description><![CDATA[<p>Una de las primeras cosas que te das cuenta cuando configuras un servidor para alojar tus páginas y habilitas un mínimo de analíticas es la cantidad de <strong>bots</strong> que se dedican a escanear ips de forma random intentando buscar cualquier vulnerabilidad.</p>
<p>En este VPS no tengo absolutamente nada más que este blog, el cuál es un blog <strong>estático</strong>, que sirve páginas en HTML y CSS y poco más se puede hacer.</p>
<p>Investigando una forma de poder bloquear estas ips de forma más o menos masiva, di con el repositorio de Bitwire, <a href="https://github.com/bitwire-it/ipblocklist">https://github.com/bitwire-it/ipblocklist</a>, el cual contiene una lista actualizada cada 2h de ips maliciosas.</p>
<p>Para bloquearlo en el servidor, saqué la lista a un archivo común:</p>
<pre><code class="language-bash">curl -s https://raw.githubusercontent.com/bitwire-it/ipblocklist/main/inbound.txt | sed &#39;s/^/deny /&#39;   | sed &#39;s/$/;/&#39; | sudo tee /etc/nginx/blocklist.conf &gt; /dev/null
</code></pre>
<p>este comando te genera un archivo enorme (65MB acabo de ver) con esta pinta:</p>
<pre><code class="language-txt">deny 0.0.0.2;
deny 0.0.7.4;
deny 0.1.0.0;
deny 0.6.3.0;
deny 1.0.0.104;
deny 1.0.0.229;
deny 1.0.1.11;
deny 1.0.1.21;
deny 1.0.2.0;
deny 1.0.7.16;
.....
</code></pre>
<p>luego en la configuración de nginx añadimos lo siguiente:</p>
<pre><code class="language-txt">http {
        ##
        # Block ips
        ##
        include /etc/nginx/blocklist.conf;
        allow all;
.....
</code></pre>
<p>Quiero ver qué tal se comporta y si de verdad funciona bien antes de añadir una automatización con cron que vaya actualizando el archivo automáticamete.</p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Heroicons - iconos gratuitos para tu web</title>
<link>https://chancli.dev/blog/heroicons-iconos-gratis-para-tu-web.html</link>
<pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/heroicons-iconos-gratis-para-tu-web.html</guid>
<description><![CDATA[<p>Próximamente quiero añadir un panel de control para que la generación de chancli.dev sea más fluida.</p>
<p><strong>Chancli.dev</strong> funciona en su gran parte con archivos <strong>estáticos</strong> y el proceso de generarlos es demasiado manual, cosa que provoca largos períodos sin actualizar el blog.</p>
<p>En otros blogs que he tenido, funcionando con Wordpress, como casi todos en su momento, las publicaciones eran más fluidas porque el panel de control facilitaba mucho las cosas.</p>
<p>Lo tengo más o menos montado aunque falta todavía darle cariño a la parte visual.</p>
<p>Haciendo una búsqueda de iconos, encontré <a href="https://heroicons.com/">Heroicons.com</a>, un proyecto de los creadores de Tailwind.</p>
<p>Heroicons es una colección súper extensa de iconos, disponibles en 3 variantes, SVG y JSX.</p>
<p>Más fácil imposible.</p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>En época de IA, he hecho una regla de 3 y tú también deberías</title>
<link>https://chancli.dev/blog/en-epoca-de-ia-he-hecho-una-regla-de-3-y-tu-tambien-deberias.html</link>
<pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/en-epoca-de-ia-he-hecho-una-regla-de-3-y-tu-tambien-deberias.html</guid>
<description><![CDATA[<p>Puede parecer una tontería pero en esta era de la inmediatez y que te lo den todo hecho me siento orgulloso de haber sido capaz de ser consciente y reaccionar antes de echar mano de la IA.</p>
<p>Actualmente estoy preparando un par de carreras de larga distancia y estoy siguiendo un plan nutricional.</p>
<p>Esa noche tenía para cenar dos tortillas de trigo integrales de Hacendado, como no tenía por casa, quería mirar la cantidad equivalente de una masa de pizza fina congelada, también de Hacendado.</p>
<p>La solución más rápida hubiera sido la de preguntar a cualquier IA que me dijera la equivalencia de calorías, pero me di cuenta de la tontería que iba a hacer y elegí coger papel y lápiz y calcularlo yo mismo con una simple <a href="https://www.superprof.es/diccionario/matematicas/aritmetica/regla-tres.html">regla de 3</a>.</p>
<p>¿Qué por qué deberías dejar de usar la IA para este tipo de cosas? Pues justo hoy leía un artículo en <a href="https://www.xataka.com/medicina-y-salud/dejamos-que-ia-nos-resuma-textos-escriba-correos-grave-error-ultimo-estudio-alzheimer">Xataka</a> donde comentan un estudio en el que se ha demostrado que
el enriquecimiento cognitivo ayuda a luchar contra el deteorioro cerebral:</p>
<blockquote>
<p>De manera global, el grupo con una mayor estimulación presentó un 38% menos de riesgo de Alzheimer y un 36% de riesgo de tener deterioro cognitivo leve.</p>
</blockquote>
<blockquote>
<p>Lo que se vio aquí es que las personas que habían mantenido su mente activa con la escritura o la lectura mostraban un declive cognitivo mucho más lento y una mejor memoria y capacidad de pensamiento, incluso cuando sus cerebros ya presentaban el daño físico asociado a la demencia.</p>
</blockquote>
<p>No estoy en contra de la IA, lo que estoy en contra, y me da cierto miedo, es el usar la IA para ABSOLUTAMENTE todo.</p>
<p>Por eso te pido que cuando te surja el impulso de tirar de un automatismo, intenta superarlo/averiguarlo/lucharlo por tí mismo.</p>
]]></description>
</item>

<item>
<title>Qué haria yo sin ella</title>
<link>https://chancli.dev/blog/que-haria-yo-sin-ella.html</link>
<pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/que-haria-yo-sin-ella.html</guid>
<description><![CDATA[<p>Si eres de España, a no ser que hayas estado en una cueva, pero ya dudo que ni con esas, seguro que de alguna u otra manera estás sufriendo el tren de borrascas que estamos sufriendo.</p>
<p>Va a sonar a tópico, pero en mis 42 años de vida jamás vi algo como lo que está pasando ahora.</p>
<p>La cuestión es que siendo del sur de Andalucía, Kristin, Joseph, Leonardo y Marta nos han dado de lleno.</p>
<p>En lo personal no he sufrido ningún daño y en casa tampoco más allá de alguna gotera a través de una ventana que por los fuertes vientos, dejó de hacer ventosa y filtraba.</p>
<p>En mi edificio, el ascensor se ha mojado. Mucho. A través de una rejilla de ventilación en la azotea. Tanto se mojó que empezó a entrar agua en la misma cabina. El resultado es que tuvieron que parar el equipo. El arreglo sale caro y están negociando el presupuesto.</p>
<p>Vivo en un cuarto piso y tengo una perra (la origen del logo de la web) que con sus casi 30kg y casi 13 años de vida, no es capaz de subir escaleras.</p>
<p>Me han dado la posibilidad de que mientras dure el problema del ascensor, la deje en casa de unos amigos y poder ir a sacarla y demás. Sin dudarlo me negué. Mientras pueda, seguiré estando con ella subiéndola 4 plantas, mínimo 3 veces al día. Ella nunca lo haría.</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/que-haria-yo-sin-ella.jpeg" alt="Chancla mi Golden Retriever pidiendo comida"></p>
<p>Con tantas noticias de inundaciones se han visto cosas horribles, como el caso de un perro en Jerez al que dejaron encadenado muerto de miedo y los dueños de la finca se fueron.</p>
<p>Jamás entenderé como puede haber alguien capaz de algo así.</p>
]]></description>
</item>

<item>
<title>Configurar Mailbox.org en tu cliente de correo</title>
<link>https://chancli.dev/blog/mailbox-smtp-con-2fa-activado.html</link>
<pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/mailbox-smtp-con-2fa-activado.html</guid>
<description><![CDATA[<p>Recientemente he comenzado con un proceso de &quot;deGooglecificación&quot; (término inventado en este mismo momento por mi :D)</p>
<p>Lo primero que estoy haciendo es buscar alternativas para Gmail. Actualmente tengo 2 cuentas de Gmail, una más o menos privada que no suelo usar en casi ningún sitio, y otra, la antigua que tiene muchos años que uso para todo.</p>
<p>Esta cuenta antigua ha sido filtrada en multitud de &quot;data breaches&quot; por lo que, aunque tengo 1Password como gestor de contraseñas, he decidido comenzar a dejar de usarla más.</p>
<p>Mirando proveedores de pago, con el que me he quedado es Mailbox.org. En la que pago su cuenta premium.</p>
<p>Me gustó Mailbox por:</p>
<ol>
<li>Es un proveedor europeo, que se tiene que regir por sus normas.</li>
<li>Su interfaz web es muy usable, sin florituras.</li>
<li>Filtros de spam personalizados.</li>
<li>Es fácil de integrar con cualquier cliente de correo gracias a IMAP, POP y SMTP.</li>
<li>Encriptación. En su cliente de webmail, los correos siempre van encriptados.</li>
</ol>
<p>Configurar el correo en el iPhone, por IMAP y SMTP fue muy sencillo, todo iba como la seda pero el problema llegó cuando activé el factor de doble autenticación.</p>
<p>En el webmail podía entrar sin problemas, pero no funcionaba en el iPhone. Y es que cuando activas la 2FA, para que te funcione el correo en los clientes externos, tienes que crear una Contraseña de Aplicación (Application Password).</p>
<p>Lo comentan claramente en su web:</p>
<blockquote>
<p>Once you have <strong>activated Two-Factor Authentication</strong>, external programs such as Outlook, Thunderbird, DAVx⁵, or mobile calendar and address book apps can no longer access mailbox with your normal password. For this purpose, you must set up a so-called <strong>Application Password</strong>.</p>
</blockquote>
<p>Para ello es tan sencillo como:</p>
<ol>
<li>Acceder al Webmail</li>
<li>Ir a Ajustes</li>
<li>Ir a Seguridad</li>
<li>Buscar la sección Email app-password</li>
</ol>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/mailbox-email-app-password.png" alt="configuración email app passwords en Mailbox"></p>
<p>Sólo tendremos que crear la contraseña que queramos y ya podremos usar esa contraseña en nuestro cliente de correo para los servicios que activemos (por defecto IMAP y SMTP)</p>
]]></description>
</item>

<item>
<title>Comenzamos con el cultivo de brocoli en hidroponia</title>
<link>https://chancli.dev/blog/empezamos-con-brocoli-hidroponia.html</link>
<pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/empezamos-con-brocoli-hidroponia.html</guid>
<description><![CDATA[<p>El mes pasado <a href="/blog/cosecha-lechugas-hidroponia.html">comenté</a> mis inicios en el mundo de la <strong>hidroponía</strong> con el cultivo de lechugas.</p>
<p>Como la experiencia fue tan positiva, decidí continuar con más pruebas. La hortaliza elegida ha sido el brócoli. Siendo un gran consumidor de brócoli, me pareció la mejor opción.</p>
<p>Va a ser todo un reto, primero porque los plantones que encontré en el vivero eran muy pequeños y segundo porque no sé qué tal se comportará este cultivo en el recipiente que tengo, de 16L, ya que el <strong>brócoli</strong> es una planta que necesita de mucho espacio para poder dar fruto.</p>
<p>De momento, a fecha de Enero de 2026, el estado es este:</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/hidroponia-brocoli-2026-ene.jpeg" alt="Brocoli en hidroponia"></p>
<p>Lo que véis en la esquina superior izquierda es espinaca. No lo he comentado mucho porque no le tengo muchas esperanzas... pero si avanza lo comentaré en el blog :)</p>
]]></description>
</item>

<item>
<title>Instalar un servidor MariaDB usando Docker</title>
<link>https://chancli.dev/blog/servidor-mariadb-con-docker.html</link>
<pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/servidor-mariadb-con-docker.html</guid>
<description><![CDATA[<p>Voy a empezar un proyecto nuevo y necesitaba un servidor <strong>MariaDB</strong> como base de datos.</p>
<p>Como tengo instalado <strong>Docker</strong> en el servidor que tengo para pruebas, decidí crear un contenedor y poder reusarla.</p>
<p>Primero creamos el directorio del proyecto:</p>
<pre><code class="language-bash">mkdir -p mariadb/
</code></pre>
<p>Creamos un archivo .env con usuario y contraseña:</p>
<pre><code class="language-bash">MYSQL_ROOT_PASSWORD=password_del_usuario_root
MYSQL_DATABASE=mibasededatos
MYSQL_USER=usuariodb
MYSQL_PASSWORD=password_del_MYSQL_USER
TZ=UTC
</code></pre>
<p>Lo aseguramos:</p>
<pre><code class="language-bash">chmod 600 .env
</code></pre>
<p>Creamos el archivo docker-compose.yml</p>
<pre><code class="language-yaml">services:
  mariadb:
    image: mariadb:latest
    container_name: mariadb
    restart: unless-stopped

    ports:
      - &quot;3306:3306&quot;

    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-mibasededatos}
      MYSQL_USER: ${MYSQL_USER:-usuariodb}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      TZ: ${TZ:-UTC}

    volumes:
      - mariadb_data:/var/lib/mysql

    networks:
      - mariadb_network

    healthcheck:
      test: [&quot;CMD&quot;, &quot;healthcheck.sh&quot;, &quot;--connect&quot;, &quot;--innodb_initialized&quot;]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

volumes:
  mariadb_data:
    driver: local

networks:
  mariadb_network:
    driver: bridge
</code></pre>
<p>y finalmente lanzamos el contenedor:</p>
<pre><code class="language-bash">docker compose up -d
</code></pre>
<p>Y ya tendremos corriendo MariaDB en el servidor en puerto 3306.</p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Cambiar los metadata de un MP3 con id3v2</title>
<link>https://chancli.dev/blog/cambiar-metadata-mp3-id3v2.html</link>
<pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/cambiar-metadata-mp3-id3v2.html</guid>
<description><![CDATA[<p>Actualmente estoy haciendo pruebas para poder autoalojar mi librería de MP3 (en su mayoría podcasts) con Navidrome.</p>
<p>La instalación de Navidrome con Docker ha sido súper sencilla.</p>
<p>Sólo tuve que crear dos directorios:</p>
<ul>
<li>uno para indicarle a Navidrome donde estarán los archivos físicos</li>
<li>otro que sería para almacenar la configuración</li>
</ul>
<p>Este sería el docker-compose.yml:</p>
<pre><code class="language-yml">services:
  navidrome:
    image: deluan/navidrome:latest
    user: 999:995 # este es el uid y el groupid de mi usuario
    ports:
      - &quot;4533:4533&quot;
    restart: unless-stopped
    environment:
      ND_LOGLEVEL: info
    volumes:
      - &quot;/home/navidrome/data:/data&quot;
      - &quot;/home/navidrome/music:/music:ro&quot;
</code></pre>
<p>Con eso ya lo tendríamos corriendo, la primera vez que accedamos tendremos que crear el usuario administrador.</p>
<p>Los capítulos me los descargo de <a href="https://podcastindex.org/">Podcastindex</a>. El problema es que los archivos que he probado a bajarme no contenían los metatags necesarios, por lo que Navidrome no conocía el autor... el nombre del capítulo... pero tenemos la solución: id3v2</p>
<p>id3v2 es una herramienta de línea de comandos para editar etiquetas ID3 de los archivos MP3.</p>
<p>Para instalarlo con apt:</p>
<pre><code class="language-bash">sudo apt install id3v2
</code></pre>
<p>Y luego para configurar las metatags de un archivo, es tan sencillo como:</p>
<pre><code class="language-bash">id3v2 --artist &quot;Podcast Host Name&quot; \
      --album &quot;Podcast Series&quot; \
      --song &quot;Episode Title&quot; \
      --genre &quot;Podcast&quot; \
      /home/navidrome/music/your-podcast.mp3
</code></pre>
]]></description>
</item>

<item>
<title>Como se hace el panettone, según la ciencia</title>
<link>https://chancli.dev/blog/como-se-hace-panettone-segun-la-ciencia.html</link>
<pubDate>Tue, 23 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/como-se-hace-panettone-segun-la-ciencia.html</guid>
<description><![CDATA[<p>Ya de lleno en la Navidad y con ella tiempo de excesos... comidas y cenas de empresa... antes de fin de año estamos ya todos hartos :D</p>
<p>De lo que no me canso nunca es de ese bizcocho italiano que llegó hace algunos años a España y que se ha vuelto incondicional, el <strong>panettone</strong>.</p>
<p>Aunque en los supermercados los tenemos ya de todos los sabores, yo soy más del &quot;team clásico&quot;. El otro día probé uno con crema de tiramisú y bueno... es rizar demasiado el rizo.</p>
<p>Si tenéis interés en saber como se crea el panettone he leído esta mañana <a href="https://www.agenciasinc.es/Opinion/La-receta-de-una-obra-maestra-el-panettone-segun-la-ciencia">este artículo</a> en AgenciaSinc.es, donde desde un punto de vista científico, te detallan los ingredientes y las reacciones químicas necesarias para que esté tan bueno y esponjoso como es.</p>
]]></description>
</item>

<item>
<title>Primera cosecha de lechugas en hidroponia</title>
<link>https://chancli.dev/blog/cosecha-lechugas-hidroponia.html</link>
<pubDate>Fri, 19 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/cosecha-lechugas-hidroponia.html</guid>
<description><![CDATA[<p>Hace tiempo que empecé a investigar el tema del cultivo de hidroponía, para el que no lo tenga muy claro, en resumidas cuentas es el cultivo de plantas sin necesidad de tierra. Solamente agua con nutrientes y oxígeno.</p>
<p>Existen varios modos de cultivar en hidroponía, pero el que me llamó la atención fue el <strong>método Kratky</strong>.</p>
<p>El <a href="https://www.youtube.com/watch?v=xoZ9eEudDic">método Kratky</a> es un cultivo de hidroponía pasiva, no hace falta utilizar bombas que muevan el agua ni electricidad.</p>
<p>Solo necesitamos un depósito opaco de agua con nutritientes y algún hueco para que las raíces obtengan el oxígeno necesario.</p>
<p>Para los nutrientes, yo utilicé <a href="https://amzn.eu/d/9H5xMBg">esta solución</a> de Nutribase. Para mezclarlo necesitaremos 2 botellas de 1l de capacidad.</p>
<p>Mezclamos el <strong>sobre A</strong> (macronutrientes) en una botella y el <strong>sobre B</strong> (micronutrientes) en otra.</p>
<p>Una vez que tenemos la mezcla hecha, llenamos el recipiente donde vayamos a plantar de agua y la mezcla a razón de 30ml de <strong>cada mezcla</strong> por cada 4l de agua.</p>
<p>Después de un par de pruebas infructuosas (debido a que las plantas no tenían un hueco por el que recibir el oxígeno), el resultado en 2 meses ha sido espectacular bajo mi punto de vista.</p>
<p><img src="https://ik.imagekit.io/9rmw96z6f/chanclidev/hidroponia-lechuga-2025-12-19.jpeg" alt="Lechugas en hidroponia"></p>
<p>Os dejo el histórico de fotos por <a href="/hidroponia-lechugas.html">aquí</a>. En la foto de Noviembre veréis que falta una planta. Esa se murió, y fue la clave para el resto, puesto que gracias a ese hueco, el resto recibieron el aire necesario y crecieron súper rápido y sanas.</p>
]]></description>
</item>

<item>
<title>Apple permite el cambio de batería en el Macbook Pro M5</title>
<link>https://chancli.dev/blog/apple-permite-cambio-bateria-mbpro-m5.html</link>
<pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/apple-permite-cambio-bateria-mbpro-m5.html</guid>
<description><![CDATA[<p>Eso sí, viendo el video de iFixit, no es sólo una tarea de quitar y poner 😆</p>
<div class="video-player">
<iframe width="560" height="315" src="https://www.youtube.com/embed/1PXcZzMhSZs?si=xPRkVxoQCrLGgvJb&amp;controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>

<p>Visto en: <a href="https://9to5mac.com/2025/12/16/14-inch-m5-macbook-pro-battery-replacement-guide/">9to5mac.com</a></p>
]]></description>
</item>

<item>
<title>Amazon incluirá IA en el Kindle</title>
<link>https://chancli.dev/blog/amazon-kindle-ia-fatiga.html</link>
<pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/amazon-kindle-ia-fatiga.html</guid>
<description><![CDATA[<p>Consideraba a mi Kindle uno de los pocos sitios donde poder descansar de tanta fatiga de inteligencia artificial y pronto parece que eso se va a acabar.</p>
<p>Según leo en <a href="https://9to5mac.com/2025/12/15/kindle-ask-this-book-ai-powered-feature-launches-in-ios-app/">9to5mac</a>, Amazon empezará a incluir una nueva utilidad llamada Ask this Book, que permitirá hacerle preguntas a su IA sobre el libro que estás leyendo.</p>
<p>En su salida, empezarán en US con libros escritos en inglés.</p>
<p>Desde <a href="https://www.aboutamazon.com/news/books-and-authors/kindle-recaps-feature-ebook-series-refreshers">Amazon</a> prometen que esta utilidad estará libre de spoilers, pero claro, ¿quién se fía tanto de una IA? :D</p>
]]></description>
</item>

<item>
<title>Bloquear rastreadores de IA en Nginx</title>
<link>https://chancli.dev/blog/bloquear-rastreadores-de-ia-nginx.html</link>
<pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/bloquear-rastreadores-de-ia-nginx.html</guid>
<description><![CDATA[<p>Si tenéis un servidor nginx, quizás os interese bloquear el acceso a crawlers de inteligencia artificial.</p>
<p>Introduciendo este pequeño trozo de código dentro del bloque <code>server</code> os puede servir de ayuda:</p>
<pre><code class="language-bash">server {

    server_name chancli.dev www.chancli.dev;
    ......

    # AI bots
    if ($http_user_agent ~* &quot;(AdsBot-Google|Amazonbot|anthropic-ai|Applebot|Applebot-Extended|AwarioRssBot|AwarioSmartBot|Bytespider|CCBot|ChatGPT-User|ClaudeBot|Claude-Web|cohere-ai|DataForSeoBot|Diffbot|FacebookBot|FriendlyCrawler|Google-Extended|GoogleOther|GPTBot|img2dataset|ImagesiftBot|magpie-crawler|Meltwater|omgili|omgilibot|peer39_crawler|peer39_crawler/1.0|PerplexityBot|PiplBot|scoop.it|Seekr|YouBot)&quot;){
        return 403;
    }
    ......
}
</code></pre>
<p>Happy coding! :)</p>
]]></description>
</item>

<item>
<title>Borrar certificado ssl en tu servidor con certbot</title>
<link>https://chancli.dev/blog/borrar-certificado-ssl-en-tu-servidor-con-certbot.html</link>
<pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/borrar-certificado-ssl-en-tu-servidor-con-certbot.html</guid>
<description><![CDATA[<p>El otro día caducó un dominio que tenía para pruebas en el servidor y necesitaba borrar el certificado de Letsencrypt para que no se quedara ahí eternamente.</p>
<p>Para borrarlo no basta con borrar un solo archivo de forma manual, existen varios archivos más relacionados, pero de eso se encarga certbot, que lo utilizamos para instalarlo.</p>
<p>Para borrar un certificado utilizaremos el comando:</p>
<pre><code class="language-bash">sudo certbot delete
</code></pre>
<p>Así que para borrar el certificado asociado al dominio miproyecto.com utilizaremos:</p>
<pre><code class="language-bash">sudo certbot delete --cert-name miproyecto.com
</code></pre>
<p>Simple y eficaz :)</p>
<p>Happy coding!</p>
]]></description>
</item>

<item>
<title>Convertir archivos markdown en HTML desde el terminal en Linux</title>
<link>https://chancli.dev/blog/pandoc-xclip-comando-markdown-html.html</link>
<pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/pandoc-xclip-comando-markdown-html.html</guid>
<description><![CDATA[<p>Como herramienta de notas utilizo <a href="http://obsidian.md/">Obsidian</a> es la mejor herramienta que he encontrado
hasta la fecha para poder tener mis notas organizadas entre el iPhone, Linux y Mac. Pago Obsidian Sync y de momento
estoy más que contento.</p>
<p>En casa el ordenador personal que tengo funciona con Linux Mint (en un próximo post os detallaré las características
técnicas y para qué lo uso) y estaba buscando una forma ágil de poder pasar los posts del blog escritos en archivos
Markdown a HTML, ya que este blog funciona con archivos HTML estáticos.</p>
<p>Investigando di con <a href="https://pandoc.org/">pandoc</a> un conversor universal de documentos. Junto con
<a href="https://github.com/astrand/xclip">xclip</a>, que permite copiar al portapapeles, hacen el tándem perfecto :)</p>
<p>Con este sencillo comando puedo convertir el archivo markdown a HTML y copiarlo en el portapapeles:</p>
<pre>
<code class="language-bash">pandoc -t html hola-mundo.md | xclip -selection clipboard</code>
</pre>]]></description>
</item>

<item>
<title>¡Hola mundo!</title>
<link>https://chancli.dev/blog/hola-mundo.html</link>
<pubDate>Sat, 06 Dec 2025 00:00:00 GMT</pubDate>
<guid>https://chancli.dev/blog/hola-mundo.html</guid>
<description><![CDATA[<p>Llevaba muchísimo tiempo escribir un blog, pero la maldita parálisis por análisis no me dejaba dar el paso.</p>
<p>Soy un programador web nacido en 1983, y mi bloqueo era con el stack tecnológico a usar. Siempre surgía en mi cabeza
crear el blog con ese nuevo framework o ese nuevo generador de sitios estáticos… al final ninguno me convencía, me
terminaba cansando y abandonaba.</p>
<p>Finalmente me he decidido por una solución personalizada, un gestor de sitios estáticos hecho en <strong>Python</strong> que me permita
de forma más o menos ágil, la posibilidad de tener páginas estáticas y un blog. Sí, lo sé, existen infinidad de
sistemas que lo permiten pero la idea de todo era, en esta era de la IA y del todo hecho, poder desarrollar algo para
seguir mejorando mis habilidades como programador.</p>
<p><strong>¿De qué tratará este blog?</strong> Bueno pues quiero hacerlo lo más personal posible, así que hablaré de mis aficiones, que
son bastantes :D tecnología, cocina, series y pelis, libros, salud y entrenamiento… iremos viendo como avanza. Lo que
sí tengo claro es que busco una regularidad en las publicaciones, algo de lo que siempre que lo he intentado, he
terminando abandonando por poner el foco en otra cosa. Seguro que más de una vez te ha pasado… pero a mí me pasa
demasiado :)</p>
<p>Otra de mis motivaciones es la de poder hacer crecer un poco más la <strong>blogosfera</strong> hispana, que se vio bastante
olvidada con el aumento de las redes sociales.</p>
<p>Sin más me despido esperando que, al menos alguno de mis posts, te puedan servir de ayuda.
Un saludo!</p>
]]></description>
</item>

</channel>
</rss>
