<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>bisko.be</title><description>Blog personal y escritos de bisko: reflexiones sobre desarrollo, aventuras y vida.</description><link>https://bisko.be/es/</link><language>es</language><item><title>Cómo ejecutar Ollama con GPUs antiguas en CachyOS</title><link>https://bisko.be/es/posts/dev/running-ollama-with-older-gpus-on-cachyos/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/running-ollama-with-older-gpus-on-cachyos/</guid><description>Hoy estaba migrando mi VM de Windows 11 a Linux, para tener más flexibilidad con los servicios que corren en ella, y me encontré con un problema: Ollama no podía ejecutarse en mis GPUs antiguas, una GTX1070 y una GTX970</description><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3 id=&quot;tldr&quot;&gt;TL;DR;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ollama-cuda&lt;/code&gt; en CachyOS viene (a día de hoy) con soporte únicamente para &lt;code&gt;compute &gt;= 7.5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si tienen GPUs antiguas con un &lt;code&gt;compute&lt;/code&gt; menor, TIENEN QUE hacer una de estas 2 cosas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compilar &lt;code&gt;ollama-cuda&lt;/code&gt; desde el código fuente, con soporte para los targets de compute más antiguos&lt;/li&gt;
&lt;li&gt;Instalar &lt;code&gt;ollama-vulkan&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yo elegí &lt;code&gt;ollama-vulkan&lt;/code&gt; y funciona perfectamente.&lt;/p&gt;
&lt;h3 id=&quot;hora-de-la-historia&quot;&gt;Hora de la historia&lt;/h3&gt;
&lt;p&gt;Hoy me llegó la inspiración para apagar por fin mi VM de Windows 11 y migrarla a Linux.&lt;/p&gt;
&lt;p&gt;Los requisitos eran poder ejecutar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama - para la magia de los modelos locales&lt;/li&gt;
&lt;li&gt;Docker - para desarrollo remoto&lt;/li&gt;
&lt;li&gt;Steam - para jugar&lt;/li&gt;
&lt;li&gt;Jellyfin - para el archivo de videos caseros&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ahora me voy a centrar solo en Ollama, porque fue una experiencia interesante y me dejó preguntándome por qué las cosas no son más obvias.&lt;/p&gt;
&lt;p&gt;La máquina tiene 2 GPUs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GTX 1070 - 8GB&lt;/li&gt;
&lt;li&gt;GTX 970 - 4GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quería ejecutar Ollama en ellas para jugar con modelos locales y ver cómo podría integrarlos en algunos proyectos. Por ejemplo: anonimizar datos de forma local, hacer una implementación no destructiva de OpenClaw que se ajuste a mis casos de uso, OCR local para los documentos que escaneo con el teléfono, o automatizar algunas cosas de la gestión cotidiana de una casa.&lt;/p&gt;
&lt;p&gt;Así que, naturalmente, instalé &lt;code&gt;ollama&lt;/code&gt; y &lt;code&gt;ollama-cuda&lt;/code&gt;, ya que tengo 2 GPUs Nvidia, esperando que funcionara sin problemas, pues en Windows funcionaba perfectamente apenas unos minutos antes.&lt;/p&gt;
&lt;p&gt;Arranqué Ollama, cargué &lt;code&gt;qwen3:8b&lt;/code&gt; para un experimento rápido y… se estaba ejecutando en la CPU 🤔&lt;/p&gt;
&lt;p&gt;Las GPUs eran perfectamente capaces de mantenerlo en la VRAM, pero por alguna razón Ollama prefería ejecutarlo en la CPU.&lt;/p&gt;
&lt;p&gt;Después de intentar descifrarlo a partir de los logs, le pedí ayuda a Claude y llegó a una conclusión bastante desalentadora:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; logs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; tell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; story&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; clearly.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Both&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPUs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; are&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; detected&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; but&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; then&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; filtered&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; out&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; because&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; they&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; fail&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; initialization:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  &quot;filtering device which didn&apos;t fully initialize&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; id=GPU-eb132a13-b9f4-40e3-d85d-60f211dfd21e&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library=CUDA&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  &quot;filtering device which didn&apos;t fully initialize&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; id=GPU-550263c8-37e2-2a25-c0b6-10cc7511ed20&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library=CUDA&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; reason&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; bundled&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; with&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 0.17.4&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; was&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; compiled&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; these&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architectures&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; only:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  CUDA.0.ARCHS&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;=750,800,860,870,880,890,900,1000,1030,1100,1200,1210&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; minimum&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; supported&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; compute&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; capability&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 7.5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (Turing &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; RTX&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; 20xx&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; series&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;). Your GPUs are older than that:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ┌──────────┬────────────────────┬──────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;   GPU&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Compute&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Capability&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Architecture&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ├──────────┼────────────────────┼──────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1070&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 6.1&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Pascal&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ├──────────┼────────────────────┼──────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 970&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 5.2&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Maxwell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  └──────────┴────────────────────┴──────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  Neither&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; supported&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; so&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; initialization&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; fails&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; both,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; and&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; falls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; back&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CPU-only&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; inference.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  Your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; options:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  1.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Downgrade&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; an&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; older&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; version&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; that&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; still&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; included&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Pascal/Maxwell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; support&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (pre-0.6.x &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;era&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; had&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; broader&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; arch&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; coverage,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; but&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; release&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; notes&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; specifics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  2.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Build&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; source&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; with&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA_ARCHITECTURES=&quot;52;61;75;80;86&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; include&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPU&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architectures.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  3.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Upgrade&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPUs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; at&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; least&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; an&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; RTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 2060&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; or&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; newer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (compute &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;7.5+&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto fue un poco decepcionante para mí, porque quiero aprovechar las GPUs al máximo antes de pasar a una nueva.&lt;/p&gt;
&lt;p&gt;No quería compilar Ollama desde el código fuente, ya que debería funcionar directamente y me confundía mucho que no lo hiciera, cuando en la instalación de Windows sí soportaba esas arquitecturas.&lt;/p&gt;
&lt;p&gt;¡Además, esas tarjetas aparecían como compatibles en el sitio web de Ollama!&lt;/p&gt;
&lt;p&gt;Para resumir una larga historia de búsquedas en Google:&lt;/p&gt;
&lt;p&gt;Resulta que &lt;code&gt;ollama-cuda&lt;/code&gt; viene solo con los requisitos mencionados arriba… y la sugerencia era instalar &lt;code&gt;ollama-vulkan&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;¡Después de hacerlo, todo empezó a funcionar sin ningún problema!&lt;/p&gt;</content:encoded><category>dev</category><category>linux</category><category>llm</category><category>ollama</category><category>cachyos</category><category>vulcan</category><category>cuda</category></item><item><title>[Linux] Recuperar una sesión desconectada de `apt dist-upgrade`</title><link>https://bisko.be/es/posts/dev/linux-recovering-a-disconnected-apt-dist-upgrade-session/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/linux-recovering-a-disconnected-apt-dist-upgrade-session/</guid><description>Hoy estaba actualizando mi instalación de Proxmox de forma remota a través de la consola integrada, pero olvidé lo que estaba haciendo y cerré la pestaña a medias. Como resultado, no pude volver a conectarme, ya que los paquetes se seguían actualizando en segundo plano y la actualización había hecho una pregunta sobre reemplazar un archivo y estaba esperando una respuesta</description><pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoy estaba actualizando mi instalación de Proxmox de forma remota a través de la consola integrada, pero olvidé lo que estaba haciendo y cerré la pestaña a medias.&lt;/p&gt;
&lt;p&gt;Como resultado, no pude volver a conectarme, ya que los paquetes se seguían actualizando en segundo plano y la actualización había hecho una pregunta sobre si reemplazar un archivo y estaba esperando mi respuesta.&lt;/p&gt;
&lt;p&gt;Así que podía entrar por SSH, pero no podía hacer nada, porque seguía esperando una respuesta en una consola a la que no me podía conectar, ya que la interfaz no se abría.&lt;/p&gt;
&lt;p&gt;Después de buscar un poco, me topé con un &lt;a href=&quot;https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session&quot;&gt;hilo de Serverfault&lt;/a&gt; que mencionaba el uso de &lt;code&gt;reptyr&lt;/code&gt; para tomar el control de la sesión de terminal por SSH.&lt;/p&gt;
&lt;p&gt;Dejo aquí exactamente lo que hice para recuperar la sesión y terminar la actualización:&lt;/p&gt;
&lt;p&gt;De &lt;a href=&quot;https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session#comment1506308_979180&quot;&gt;este comentario&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; clone&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; https://github.com/nelhage/reptyr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; reptyr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;make&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto instaló &lt;code&gt;reptyr&lt;/code&gt; en la máquina.&lt;/p&gt;
&lt;p&gt;Luego busqué todas las sesiones abiertas con &lt;code&gt;ps ax | grep pts&lt;/code&gt; para encontrar el proceso que andaba buscando.&lt;/p&gt;
&lt;p&gt;Después encontré el proceso más alto en el árbol de llamadas que tuviera un &lt;code&gt;pts&lt;/code&gt; asignado y me adjunté a él mediante su PID:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;reptyr&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -T&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1390511&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¡Y así pude terminar la actualización! 🎉&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Planta de hibisco bajo los rayos de la mañana</title><link>https://bisko.be/es/posts/blog/hibiscus-plant-under-the-morning-rays/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/hibiscus-plant-under-the-morning-rays/</guid><pubDate>Sun, 21 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Gran flor roja de hibisco en primer plano, con capullos encima, sobre un cielo azul con nubes delgadas y casas de un pueblo al fondo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_2327-b97d8968.C7nMUQ33_Z1YnOwk.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>flowers</category><category>nature</category></item><item><title>Timelapse: Oporto junto al río</title><link>https://bisko.be/es/posts/blog/timelapse-porto-by-the-river/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/timelapse-porto-by-the-river/</guid><description>Hace unos días tuvimos un encuentro de equipo en Oporto. Por fin conocí en persona a varios de mis colegas, a quienes solo había visto por Zoom durante los últimos dos años. Pasamos un par de días en el increíble espacio de coworking Porto I/O Riverside. El espacio tiene un balcón fantástico que disfrutamos generosamente y tuvimos</description><pubDate>Tue, 07 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace unos días tuvimos un encuentro de equipo en &lt;a href=&quot;https://en.wikipedia.org/wiki/Porto&quot;&gt;Oporto&lt;/a&gt;. Por fin conocí en persona a varios de mis colegas, a quienes solo había visto por Zoom durante los últimos dos años.&lt;/p&gt;
&lt;p&gt;Pasamos un par de días en el increíble espacio de coworking &lt;a href=&quot;https://porto.io/en/location/riverside/&quot;&gt;Porto I/O Riverside&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El espacio tiene un balcón fantástico que disfrutamos generosamente, y tuvimos bastantes conversaciones productivas cuando no nos perdíamos demasiado mirando fijamente el tráfico de barcos en el río.&lt;/p&gt;
&lt;p&gt;Durante uno de esos momentos en los que simplemente estábamos sentados en silencio, admirando el paisaje, logré capturar un timelapse bastante bonito.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>Timelapse</category><category>travel</category><category>boats</category><category>Porto</category><category>Portugal</category><category>river</category><category>roofs</category></item><item><title>[Linux] Syncthing – sistema de archivos de solo lectura al ejecutarlo como servicio</title><link>https://bisko.be/es/posts/dev/linux-syncthing-read-only-file-system-when-running-as-service/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/linux-syncthing-read-only-file-system-when-running-as-service/</guid><description>Llevo un tiempo usando Syncthing para sincronizar mi copia de trabajo con un servidor de desarrollo local, unos cuantos meses ya. Al principio lo usaba iniciando sesión y ejecutándolo manualmente desde la línea de comandos. Funcionaba bien, así que no lo pensé dos veces cuando pasé a ejecutarlo como servicio.</description><pubDate>Wed, 06 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Llevo un tiempo usando &lt;a href=&quot;https://syncthing.net/&quot;&gt;Syncthing&lt;/a&gt; para sincronizar mi copia de trabajo con un servidor de desarrollo local, unos cuantos meses ya.&lt;/p&gt;
&lt;p&gt;Al principio lo usaba iniciando sesión y ejecutándolo manualmente desde la línea de comandos. Funcionaba bien, así que no lo pensé dos veces cuando pasé a ejecutarlo como servicio. Arrancó, sincronizó algunos datos, todo iba bien.&lt;/p&gt;
&lt;p&gt;Hasta que dejó de ir bien, ¡por supuesto! 🙂&lt;/p&gt;
&lt;p&gt;Resulta que no me di cuenta de que en los logs estaban apareciendo un montón de errores que decían que el sistema de archivos del servidor de desarrollo era de solo lectura, y eso hacía que Syncthing no sincronizara nada.&lt;/p&gt;
&lt;p&gt;Pensé que era un bug y que simplemente mostraba &lt;code&gt;Out of Sync&lt;/code&gt; en las carpetas, pero que en realidad sí estaba sincronizando. Pues me equivocaba.&lt;/p&gt;
&lt;p&gt;Después de depurar durante varias horas y de no encontrar ninguna pista en los foros con unas cuantas búsquedas en Google, llegué a un &lt;a href=&quot;https://wiki.archlinux.org/title/syncthing#read-only_file_system_error_on_/etc_although_run_as_root&quot;&gt;artículo sobre Syncthing en la ArchWiki&lt;/a&gt;, que mencionaba justo mi caso:&lt;/p&gt;
&lt;p&gt;read-only file system error on /etc although run as root&lt;/p&gt;
&lt;p&gt;Era exactamente mi caso de uso, salvo que la carpeta problemática no era &lt;code&gt;/etc&lt;/code&gt;, sino &lt;code&gt;/usr/local/src&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Bueno, después de leer lo que decía, resulta que si ejecutas Syncthing (o cualquier cosa) mediante &lt;code&gt;systemd&lt;/code&gt; y tienes &lt;code&gt;ProtectSystem&lt;/code&gt; configurado en &lt;code&gt;full&lt;/code&gt; para el servicio, algunos directorios se vuelven de solo lectura por defecto. &lt;code&gt;/usr&lt;/code&gt; es una de esas rutas.&lt;/p&gt;
&lt;p&gt;Para solucionarlo, hay que añadir una nueva línea en la configuración del servicio y reiniciarlo (y hacer &lt;code&gt;daemon-reload&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ReadWritePaths=/usr/local/src&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Después de esto, Syncthing debería funcionar bien.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>linux</category><category>permissions</category><category>read-only</category><category>syncthing</category><category>systemd</category></item><item><title>Acceso denegado</title><link>https://bisko.be/es/posts/blog/access-denied/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/access-denied/</guid><pubDate>Sat, 31 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Tres avispas caminan alrededor de un agujero oxidado en el poste de una reja metálica, una de ellas posada sobre una llave atascada en la cerradura, junto a unas flores blancas&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_4506-8e7e236d.BcqhatkL_zWajt.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>door</category><category>insect</category><category>insects</category><category>key</category><category>lock</category><category>nature</category><category>wasp</category><category>wasps</category></item><item><title>Atardecer de lavanda</title><link>https://bisko.be/es/posts/blog/lavender-sunset/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/lavender-sunset/</guid><pubDate>Sat, 03 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Espigas de lavanda a contraluz en silueta, con el sol bajo brillando detrás del tallo más alto, contra un cielo azul y árboles oscuros&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/image_534908fa-cab6-4233-832b-e401bab27a30.img_3963-ccdc9838.CHRt9-9J_ZxRqVE.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>Uncategorized</category><category>flower</category><category>sun</category></item><item><title>Timelapse: una tormenta que se acerca</title><link>https://bisko.be/es/posts/blog/timelapse-a-storm-rolling-over/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/timelapse-a-storm-rolling-over/</guid><pubDate>Sat, 26 Jun 2021 00:00:00 GMT</pubDate><content:encoded/><category>blog</category><category>Photography</category><category>clouds</category><category>storm</category><category>Timelapse</category><category>weather</category></item><item><title>Rayos de sol sobre amarillo</title><link>https://bisko.be/es/posts/blog/sunrays-on-yellow/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/sunrays-on-yellow/</guid><pubDate>Sat, 05 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Flores amarillas de onagra iluminadas por el sol, con delicados estambres, sobre un fondo borroso de hojas verdes y cielo luminoso&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/image_42f35f6f-2341-47f4-a7a0-eb0a75d3678f.img_3167-8b4daa1a.WUo3hBS8_BI9FB.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>sunrays</category><category>yellow</category></item><item><title>Rosas</title><link>https://bisko.be/es/posts/blog/roses/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/roses/</guid><pubDate>Sun, 23 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Rosas de un rojo intenso en plena floración y capullos en un rosal trepador contra un cielo azul, con el borde de un tejado a la derecha&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_2866-bd30e710.fEDlZ8s7_Z3rCvg.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>Nublado con probabilidad de tulipanes</title><link>https://bisko.be/es/posts/blog/cloudy-with-a-chance-of-tulips/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/cloudy-with-a-chance-of-tulips/</guid><description>Un recuerdo de 2013, cuando fui a visitar a mi abuelo al pueblo. Encontré este bonito tulipán cortado y tirado a la orilla del camino.</description><pubDate>Mon, 03 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Tulipán rojo a contraluz, visto desde abajo contra un cielo azul intenso con nubes blancas, con una hoja verde que se eleva a su lado&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1936&quot; height=&quot;2592&quot; src=&quot;/_astro/img_1645-bb728269.BHDQHNQt_1vNnmk.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Un recuerdo de 2013, cuando fui a visitar a mi abuelo al pueblo. Encontré este bonito tulipán cortado y tirado a la orilla del camino.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>clouds</category><category>flower</category><category>flowers</category><category>nature</category><category>red</category><category>sky</category><category>travel</category></item><item><title>[Linux] Ejecutar varios comandos en varios servidores en paralelo</title><link>https://bisko.be/es/posts/dev/linux-running-multiple-commands-on-multiple-servers-in-parallel/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/linux-running-multiple-commands-on-multiple-servers-in-parallel/</guid><description>Tengo en casa un clúster de Raspberry Pi con Docker Swarm. Para no perder el control, todas usan la misma configuración: usuarios, versiones de Docker, etc. A veces algunas actualizaciones requieren ejecutar lo mismo en todos los nodos del clúster, por ejemplo, crear una nueva red macvlan de Docker. Para</description><pubDate>Mon, 19 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tengo en casa un clúster de Raspberry Pi con Docker Swarm. Para no perder el control, todas usan la misma configuración: usuarios, versiones de Docker, etc.&lt;/p&gt;
&lt;p&gt;A veces algunas actualizaciones requieren ejecutar lo mismo en todos los nodos del clúster, por ejemplo, crear una nueva red macvlan de Docker.&lt;/p&gt;
&lt;p&gt;Para hacerlo, hay que ejecutar los mismos comandos en todos los nodos manualmente, entrando por &lt;strong&gt;ssh&lt;/strong&gt; a cada uno, ejecutando los comandos y pasando al siguiente.&lt;/p&gt;
&lt;p&gt;Como intento reducir mi trabajo a la larga y tener todo lo más organizado posible, empecé a buscar formas de ejecutar comandos en todos los nodos al mismo tiempo.&lt;/p&gt;
&lt;h3 id=&quot;iteración-1-un-script-de-python-a-medida&quot;&gt;Iteración 1: un script de Python a medida&lt;/h3&gt;
&lt;p&gt;La primera iteración consistió en crear un script de Python propio. Por un lado, quería aprender un poco mejor Python; por otro, no encontraba una forma buena de ejecutar los comandos de manera más nativa.&lt;/p&gt;
&lt;p&gt;Como cabe esperar (oigan, todavía tengo poca experiencia con el lenguaje 🙂), se convirtió en un desastre enorme muy rápido y se rompía con facilidad.&lt;/p&gt;
&lt;p&gt;Tenía que encontrar otra manera de hacerlo, sin tener que volver a aprender lo que hice hace 3 semanas y lo que se rompió la última vez.&lt;/p&gt;
&lt;h3 id=&quot;iteración-2-pssh&quot;&gt;Iteración 2: &lt;code&gt;pssh&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Buscando por internet me topé con &lt;code&gt;[pssh](https://linux.die.net/man/1/pssh)&lt;/code&gt;, que puede ejecutar cosas en paralelo mediante SSH.&lt;/p&gt;
&lt;p&gt;Pensándolo bien, fue bastante fácil ponerlo en marcha.&lt;/p&gt;
&lt;p&gt;El problema era que, para ejecutar algunas cosas, necesitaba hacerlo con &lt;code&gt;sudo&lt;/code&gt;. Pasar contraseñas de un lado a otro no era lo ideal, así que tuve que buscar de nuevo cómo enviar la contraseña de &lt;code&gt;sudo&lt;/code&gt; cuando el servidor remoto la pidiera.&lt;/p&gt;
&lt;p&gt;Resulta que es bastante fácil si das con el &lt;a href=&quot;https://unix.stackexchange.com/a/487558/134974&quot;&gt;comentario de StackOverflow&lt;/a&gt; adecuado.&lt;/p&gt;
&lt;h3 id=&quot;la-versión-resumida-es&quot;&gt;La versión resumida es:&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;stty&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -echo&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Password: &quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; PASS&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;stty&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;${&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;PASS&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;pssh&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -h&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;HOSTFIL&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;E&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; /tmp/output&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -I&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;`&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ./commands.sh`&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hay que escribir &lt;code&gt;-I &quot;`cat ./commands.sh`&quot;&lt;/code&gt; exactamente así (entre comillas y comillas invertidas); de lo contrario, no ejecuta bien los comandos. La contraseña se enviará como un comando aparte y no se tomará como entrada de &lt;strong&gt;sudo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La otra trampa es que, por la manera en que está montado todo esto, hay que ejecutar &lt;code&gt;sudo&lt;/code&gt; con el parámetro &lt;code&gt;-S&lt;/code&gt; para que lea bien la contraseña.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Noche estrellada</title><link>https://bisko.be/es/posts/blog/starry-night/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/starry-night/</guid><description>Hace poco nos fuimos de vacaciones a las montañas de Bulgaria. Una de las noches, el cielo estaba lo bastante despejado como para probar el nuevo modo nocturno del iPhone 12. Los primeros intentos salieron un poco ruidosos y sin mucho detalle. Por suerte compartí esta foto con mi primo y él me comentó que</description><pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace poco nos fuimos de vacaciones a las montañas de Bulgaria.&lt;/p&gt;
&lt;p&gt;Una de las noches, el cielo estaba lo bastante despejado como para probar el nuevo modo nocturno del iPhone 12.&lt;/p&gt;
&lt;p&gt;Los primeros intentos salieron un poco ruidosos y no mostraban demasiado detalle.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Un tenue resplandor verde de aurora sobre pinos y estrellas, visto desde un balcón bajo el alero de un tejado&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1381-10c608c2.DVecqBvr_Z1VJ5i5.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Por suerte compartí esta foto con mi primo y él me comentó que quizá debería probar a disparar en RAW, ya que conserva más información que se puede ajustar después de tomar la foto.&lt;/p&gt;
&lt;p&gt;Así lo hice, activando el guardado de fotos en ProRAW. La foto resultante se parecía a la anterior, pero entonces me puse a editarla en la app Fotos de iOS, sin usar ninguna herramienta externa.&lt;/p&gt;
&lt;p&gt;Después de unos cuantos ajustes, los detalles empezaron a destacar muy bien sobre el fondo oscuro del cielo.&lt;/p&gt;
&lt;p&gt;¡El resultado final me parece bastante agradable!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Cielo estrellado y oscuro con una neblina pálida y luminosa sobre pinos iluminados de verde, enmarcado por la barandilla de un balcón&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1380-3c06f94f.9xJS155n_VMvSG.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Y un dato curioso sobre la foto: el brillante resplandor en el cielo es en realidad humo de la chimenea del hotel, que solo vi mientras tomaba las fotos, no a simple vista. Estaba tan oscuro.&lt;/p&gt;
&lt;p&gt;¡Sin duda seguiré experimentando con la fotografía en modo nocturno en el futuro, con cielos más despejados y oscuros!&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>night-photos</category><category>travel</category></item><item><title>Weirdy, el muñeco de nieve</title><link>https://bisko.be/es/posts/blog/weirdy-the-snowman/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/weirdy-the-snowman/</guid><description>A veces la nieve está demasiado congelada para hacer una bola decente para un muñeco de nieve. En esos casos, ¿por qué no construirlo ladrillo por ladrillo o capa por capa, como si fuera una estructura de Lego?</description><pubDate>Sun, 31 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Muñeco de nieve con un colador metálico como sombrero, nariz de zanahoria, ojos con anillos rojos y una boca roja, con brazos de palitos turquesa, sobre una mesa de madera nevada&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/image_af25d50e-4c23-444f-9224-f7c5c1bceca3.img_0953-83f032c2.C2lW_tiM_1jpdxL.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;A veces la nieve está demasiado congelada para hacer una bola decente para un muñeco de nieve. En esos casos, ¿por qué no construirlo ladrillo por ladrillo o capa por capa, como si fuera una estructura de Lego?&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>Winter</category><category>ice</category><category>snowman</category></item><item><title>El saltamontes</title><link>https://bisko.be/es/posts/blog/the-grasshopper/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-grasshopper/</guid><description>Encontré a este pequeñito descansando junto a mi coche una mañana bastante fría.</description><pubDate>Tue, 08 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Saltamontes verde parecido a un grillo arbustivo, de pie sobre asfalto gris y rugoso, con sus largas antenas extendidas hacia atrás y el pasto desenfocado al fondo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_0416-de3b3257.C7SwA0Oo_ZcuH8m.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Encontré a este pequeñito descansando junto a mi coche una mañana bastante fría.&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>Animals</category><category>cold</category><category>grasshopper</category><category>green</category><category>morning</category><category>Photography</category></item><item><title>El «lápiz»</title><link>https://bisko.be/es/posts/blog/the-pencil/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-pencil/</guid><description>En un viaje reciente fuimos a las montañas. Era un lugar bonito y apartado. Solo unas pocas casas y un restaurante, junto a un lago artificial o presa abandonada. Los mosquitos y el calor fueron nuestros enemigos mortales, pero logramos arreglárnoslas. Como no había mucho que hacer por ahí, tuvimos que improvisar actividades.</description><pubDate>Sun, 08 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Palo de madera de deriva desgastado, con la punta afilada y varios agujeros pequeños, sobre un piso de tablones de madera oscura&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_3189-041bec7e.ylsLA4bE_Zu4r9W.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;En un viaje reciente fuimos a las montañas. Era un lugar bonito y apartado. Solo unas pocas casas y un restaurante. Junto a un lago artificial o presa abandonada.&lt;/p&gt;
&lt;p&gt;Los mosquitos y el calor fueron nuestros enemigos mortales, pero logramos arreglárnoslas.&lt;/p&gt;
&lt;p&gt;Como no había mucho que hacer por ahí, tuvimos que improvisar actividades. Por suerte, mi hijo se topó con una piedra rectangular grande y le fascinó llevarla de un lado a otro. A mí también me fascinó.&lt;/p&gt;
&lt;p&gt;Cada lado tenía una textura distinta, como si fueran lijas de diferentes tipos.&lt;/p&gt;
&lt;p&gt;También teníamos un montón de ramas viejas que se habían caído de los árboles de los alrededores.&lt;/p&gt;
&lt;p&gt;Después de pensarlo detenidamente durante unos segundos, empezamos a explorar el maravilloso mundo de sacarle punta a los palos.&lt;/p&gt;
&lt;p&gt;¡Uno de los palos quedó igualito a un lápiz! Tenía un agujero del tamaño perfecto para meter un trocito de grafito de un lápiz de verdad, ¡y funcionó!&lt;/p&gt;
&lt;p&gt;Dibujamos con él en el suelo y fue increíble.&lt;/p&gt;</content:encoded><category>blog</category><category>Quick &amp;amp; Easy</category><category>travel</category><category>Adventures</category><category>forest</category><category>stone</category><category>woodwork</category></item><item><title>Campanillas de invierno</title><link>https://bisko.be/es/posts/blog/snowdrops/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/snowdrops/</guid><description>Un recuerdo de 2007.</description><pubDate>Thu, 08 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Tres flores blancas de campanilla de invierno con marcas verdes, inclinadas sobre tallos delgados junto al tronco de un árbol y una cerca de madera&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/c7a42ddf-26db-487f-8ca3-20b5ef6704dc_1_105_c-bd84ccbc.nK60jHnF_Z1KzMGp.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Un recuerdo de 2007.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flowers</category><category>snowdrops</category></item><item><title>Adivinando la contraseña numérica de un archivo zip usando solo utilidades de línea de comandos</title><link>https://bisko.be/es/posts/dev/guessing-a-numeric-zip-file-password-only-with-command-line-utilities/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/guessing-a-numeric-zip-file-password-only-with-command-line-utilities/</guid><description>Hoy recibí mi factura mensual de mi proveedor de internet y algo me pareció extraño. La factura, incluida en el correo, venía en un archivo ZIP con contraseña. Sin mencionar lo extraño que resulta en estos días recibir un adjunto en forma de archivo ZIP (spam, malware, phishing, etc.), la</description><pubDate>Mon, 14 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoy recibí mi factura mensual de mi proveedor de internet y algo me pareció extraño.&lt;/p&gt;
&lt;p&gt;La factura, incluida en el correo, venía en un archivo ZIP con contraseña.&lt;/p&gt;
&lt;p&gt;Sin mencionar lo extraño que resulta en estos días recibir un adjunto en forma de archivo ZIP (spam, malware, phishing, etc.), la contraseña que eligieron me pareció muy débil.&lt;/p&gt;
&lt;p&gt;Es la fecha de nacimiento del titular de la cuenta en el formato &lt;code&gt;YYMMDD&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Hice un cálculo muy burdo mentalmente mientras estaba en el gimnasio y resultó en muy pocas combinaciones posibles. Después de usar una herramienta en línea para calcular cuántos días han pasado (ya que no todas las combinaciones resultarían en una fecha válida) desde el 1900-01-01, resulta que las combinaciones son solo 44,075 (hasta el 2020-09-14).&lt;/p&gt;
&lt;p&gt;Sabiendo que las herramientas optimizadas que usan el poder de las GPU para descifrar hashes pueden hacer millones de intentos por segundo, quise ver qué tan rápido se podía adivinar la contraseña sin usarlas y utilizando solo la CLI de Linux/macOS (ya que solo tenía acceso a un VPS en el gimnasio).&lt;/p&gt;
&lt;p&gt;Se me ocurrió el siguiente código que funciona en macOS:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo {1..44000} | xargs -P 16 -n 1 -I{} date -v &quot;-{}d&quot; +&quot;%y%m%d&quot; | xargs -P 16 -I{} sh -c &apos;unzip -qqoP &quot;{}&quot; 0417160508.zip &amp;#x26;&amp;#x26; echo &quot;{}&quot; &amp;#x26;&amp;#x26; exit 255&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;El comando es bastante simple en su funcionamiento, aunque parece complicado.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo {1..44000}&lt;/code&gt; genera los números del 1 al 44,000 y los pasa al siguiente paso.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;xargs -P 16 -n 1 -I{} date -v &quot;-{}d&quot; +&quot;%y%m%d&quot;&lt;/code&gt; – toma la entrada del primer paso y genera fechas en el formato &lt;code&gt;YYMMDD&lt;/code&gt; aprovechando la funcionalidad de &lt;code&gt;date&lt;/code&gt; para “aumentar” una fecha con una cantidad específica. En este caso tomaría X días a partir de la fecha actual, donde X es el número generado en el primer paso. De esta forma podemos generar fechas desde hoy hasta los años 1900.&lt;/p&gt;
&lt;p&gt;El tercer paso es el más interesante, así que lo voy a dividir en dos partes:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;xargs -P 16 -I{} sh -c &apos;...&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Esto toma las fechas generadas en el paso 2 y ejecuta un comando sobre cada una de esas fechas. &lt;code&gt;-P 16&lt;/code&gt; aquí significa que va a ejecutar esto en 16 procesos paralelos, para hacer que el procesamiento de los datos sea más rápido. El mismo truco se aplica en el paso 2 para acelerar la generación de fechas.&lt;/p&gt;
&lt;p&gt;La segunda parte es donde ocurren los intentos:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;unzip -qqoP &quot;{}&quot; 0417160508.zip &amp;#x26;&amp;#x26; echo &quot;{}&quot; &amp;#x26;&amp;#x26; exit 255&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lo que hace esto es primero intentar descomprimir el archivo zip usando la contraseña generada en el paso 2. Si tiene éxito, imprime (&lt;code&gt;echo&lt;/code&gt;) la contraseña adivinada y luego &lt;code&gt;exit 255&lt;/code&gt; obliga a &lt;code&gt;xargs&lt;/code&gt; a detener la ejecución. No queremos seguir adivinando si ya se encontró la contraseña.&lt;/p&gt;
&lt;p&gt;En resumen, fue una muy mala decisión elegir esto como contraseña para el archivo, porque ejecutar el comando anterior toma solo unos 10 segundos para adivinar la contraseña correcta de mi factura. No mucho más para cualquier otra persona.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Graffiti alrededor del mundo: Burgas, Bulgaria</title><link>https://bisko.be/es/posts/blog/graffiti-around-the-world-burgas-bulgaria/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/graffiti-around-the-world-burgas-bulgaria/</guid><description>Hace poco me topé con esta foto de un amigo mío. ¡Sin duda encaja en la serie!</description><pubDate>Tue, 08 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Mural callejero colorido de un caracol naranja con una concha amarilla en espiral coronada de hongos, criaturas con ojos, un ovni y un alienígena verde&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1440&quot; height=&quot;1087&quot; src=&quot;/_astro/img_1545-6a461b59.DrLukEK8_ozvWH.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;El Psico-Caracol&lt;/p&gt;
&lt;p&gt;Hace poco me topé con esta foto de un amigo mío. ¡Sin duda encaja en la serie!&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>La rueda nueva</title><link>https://bisko.be/es/posts/blog/the-new-wheel/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-new-wheel/</guid><description>En un viaje reciente a un pueblo de montaña, encontramos este camión al que le faltaba una de las ruedas traseras. A nuestro hijo no le gustó que el camión estuviera herido, así que decidimos improvisarle una rueda. Después de encontrar un tapón de botella de agua, usamos un poco de magia con el cuchillo para quitarle parte del tapón y</description><pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Camión mezclador de concreto de juguete amarillo con una rueda trasera azul hecha a mano que no coincide con la rueda delantera, que es negra con el centro amarillo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1070-1bce5de4.PNKa8g3z_Z1B6f9F.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;En un viaje reciente a un pueblo de montaña, encontramos este camión al que le faltaba una de las ruedas traseras.&lt;/p&gt;
&lt;p&gt;A nuestro hijo no le gustó que el camión estuviera herido, así que decidimos improvisarle una rueda.&lt;/p&gt;
&lt;p&gt;Después de encontrar un tapón de botella de agua, usamos un poco de magia con el cuchillo para quitarle parte del tapón y hacer que se ajustara al tamaño.&lt;/p&gt;
&lt;p&gt;Tras una rápida intervención con el encendedor para derretir el plástico, logramos soldarlo al eje de la rueda que faltaba.&lt;/p&gt;
&lt;p&gt;¡Y funciona de verdad!&lt;/p&gt;
&lt;p&gt;¡Miren cómo avanza!&lt;/p&gt;</content:encoded><category>blog</category><category>Quick &amp;amp; Easy</category><category>Second Chances</category><category>diy</category><category>fixing</category><category>toys</category></item><item><title>Cómo lidiar con el código espagueti en PHP: usar funciones anónimas para extraer fragmentos de código de plantillas</title><link>https://bisko.be/es/posts/dev/dealing-with-spaghetti-code-in-php-using-anonymous-functions-to-extract-pieces-of-template-code/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/dealing-with-spaghetti-code-in-php-using-anonymous-functions-to-extract-pieces-of-template-code/</guid><description>Hace poco he estado ayudando a un amigo a entender un código y a modificarlo para que funcione bien con llamadas asíncronas al backend. Un extra sería poder escribirlo de una forma más modular y reutilizable. El código es un plugin de WordPress que fue escrito</description><pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace poco he estado ayudando a un amigo a entender un código y a modificarlo para que funcione bien con llamadas asíncronas al backend. Un extra sería poder escribirlo de una forma más modular y reutilizable.&lt;/p&gt;
&lt;p&gt;El código es un plugin de WordPress escrito con un enfoque muy legacy: una mezcla de lógica de negocio y de frontend en un solo lugar. Manipulaciones de datos hechas en medio del código de la plantilla y cosas por el estilo.&lt;/p&gt;
&lt;p&gt;Básicamente, lo que se veía en los sitios PHP a principios de los 2000, antes de todas esas estupendas incorporaciones de programación orientada a objetos al lenguaje y de un montón de frameworks maduros.&lt;/p&gt;
&lt;p&gt;El caso en el que estuve trabajando hoy era el siguiente: tienes una tabla que muestra un montón de entradas. Necesitábamos añadir varios filtros a la tabla y hacer que funcionara vía AJAX para refrescar rápidamente la interfaz, sin recargar toda la página de administración de WordPress.&lt;/p&gt;
&lt;p&gt;Filtrar los datos fue fácil: un &lt;code&gt;array_filter&lt;/code&gt; rápido en línea para filtrar los datos antes de pasarlos al código de la plantilla (para mantener el mismo estilo de código, esto también estaba en el archivo de la plantilla 😇).&lt;/p&gt;
&lt;p&gt;El problema llegó cuando empezamos a trabajar en hacer que la tabla pudiera renderizarse mediante AJAX.&lt;/p&gt;
&lt;p&gt;Está en medio de un montón de otro código de plantilla y de negocio. Si queríamos limitar la salida vía AJAX solo a la tabla, teníamos pocas formas de lograrlo.&lt;/p&gt;
&lt;p&gt;La primera sería envolver el HTML anterior y posterior a la tabla en ENORMES sentencias &lt;code&gt;if&lt;/code&gt; para asegurarnos de que no se renderice.&lt;/p&gt;
&lt;p&gt;Otra sería extraer la plantilla a un archivo aparte e incluirlo en la acción AJAX que definiríamos en el código del plugin.&lt;/p&gt;
&lt;p&gt;¡Las funciones anónimas al rescate!&lt;/p&gt;
&lt;p&gt;Pensando en cómo resolver esto de la manera más sencilla posible, intenté definir una función normal de PHP que contuviera el código de la tabla, pero había un problema.&lt;/p&gt;
&lt;p&gt;El código se ejecuta dentro de un método de una clase. Hay referencias a &lt;code&gt;$this&lt;/code&gt; en la plantilla de la tabla. Si no queremos cambiar demasiado el código, tendríamos que pasar &lt;code&gt;$this&lt;/code&gt; como argumento de la función. Pues bien, eso no funciona, porque no se puede pasar &lt;code&gt;$this&lt;/code&gt; como parámetro 🤷‍♂️.&lt;/p&gt;
&lt;p&gt;Me decepcionó un poco pensar que tendríamos que reescribir un montón de cosas en la plantilla, y había bastantes referencias que queríamos tener en cuenta para que todo siguiera funcionando.&lt;/p&gt;
&lt;p&gt;Entonces recordé que el sitio no corre en PHP 5.2, sino en PHP 7, así que las funciones anónimas estarían soportadas.&lt;/p&gt;
&lt;p&gt;Y tienen una característica muy útil: puedes definir qué variables del ámbito que hace la llamada se pasarán a la función cuando esta se invoque. Por ejemplo:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$table_function &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ( $pages, $current_page, $items ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // ... Table render code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto te permite hacer referencia directamente a &lt;code&gt;$pages&lt;/code&gt; o &lt;code&gt;$items&lt;/code&gt; en el cuerpo de la función.&lt;/p&gt;
&lt;p&gt;¡Lo genial es que también puedes pasar &lt;code&gt;$this&lt;/code&gt; como una variable en el ámbito de la función!&lt;/p&gt;
&lt;p&gt;¡Así pudimos extraer por completo el código de renderizado de la tabla a una función separada que podemos llamar de forma aislada durante la llamada AJAX!&lt;/p&gt;
&lt;p&gt;Por supuesto, hay que tener mucho cuidado con las variables usadas dentro del cuerpo de la función, ya que tienen que estar definidas, así que hay que fijarse bien desde dónde se puede llamar a la función AJAX.&lt;/p&gt;
&lt;p&gt;En nuestro caso, esto significará que añadiremos una pequeña acción en la clase principal que seguirá haciendo el &lt;code&gt;require&lt;/code&gt; del archivo, pero tendremos más control para desactivar todas las demás salidas que se producirían.&lt;/p&gt;</content:encoded><category>dev</category><category>Snippets</category><category>lambda-functions</category><category>php</category><category>WordPress</category></item><item><title>Graffiti alrededor del mundo: caballos</title><link>https://bisko.be/es/posts/blog/graffiti-around-the-world-horses/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/graffiti-around-the-world-horses/</guid><description>Parque infantil en Sofía, Bulgaria</description><pubDate>Wed, 08 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Mural de diez cabezas de caballo cubistas y estilizadas en amarillo, negro, morado, gris, naranja, azul, blanco y café sobre un fondo azul y rosa&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;6435&quot; height=&quot;2755&quot; src=&quot;/_astro/img_1222-8152ca52.D5sLohsY_Z2jrb7b.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parque infantil en Sofía, Bulgaria&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Graffiti</category><category>horses</category><category>Photography</category><category>travel</category></item><item><title>Timelapse: Aterrizaje al atardecer en el aeropuerto Pearson de Toronto</title><link>https://bisko.be/es/posts/blog/timelapse-evening-landing-at-toronto-pearaon-airport/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/timelapse-evening-landing-at-toronto-pearaon-airport/</guid><description>Aterrizaje al atardecer en el aeropuerto Pearson de Toronto – 28 de septiembre de 2018</description><pubDate>Mon, 08 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Aterrizaje al atardecer en el aeropuerto Pearson de Toronto – 28 de septiembre de 2018&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>travel</category><category>Airplane</category><category>Canada</category><category>Landing</category><category>Timelapse</category><category>Toronto</category></item><item><title>La jirafa</title><link>https://bisko.be/es/posts/blog/the-giraffe/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-giraffe/</guid><description>Un patrón muy bonito surgió mientras jugaba con Lego Duplo</description><pubDate>Fri, 08 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Pared de coloridos ladrillos de juguete rectangulares en morado, amarillo, rojo, azul y verde, con una pequeña pieza de jirafa para medir la altura cerca de la parte superior&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2734&quot; height=&quot;3645&quot; src=&quot;/_astro/img_0214-37c92416.DWchMgfS_ZILsQg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Un patrón muy bonito surgió mientras jugaba con Lego Duplo&lt;/p&gt;</content:encoded><category>blog</category><category>Animals</category><category>Photography</category><category>blocks</category><category>building</category><category>duplo</category><category>lego</category></item><item><title>Arduino/ESP32: Cómo desactivar el watchdog de tareas</title><link>https://bisko.be/es/posts/dev/arduino-esp32-disabling-the-task-watchdog/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/arduino-esp32-disabling-the-task-watchdog/</guid><description>Últimamente he estado jugando con la funcionalidad multinúcleo del ESP32 y con la asignación de tareas a núcleos específicos. Estaba usando AutoConnect para permitir la conexión WiFi sin guardar las credenciales en el código y para ofrecer actualizaciones OTA desde la interfaz web. Era para un proyecto que iba a controlar unos ventiladores PWM de CPU de 4 pines que están en</description><pubDate>Wed, 29 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Últimamente he estado jugando con la funcionalidad multinúcleo del ESP32 y con la asignación de tareas a núcleos específicos.&lt;/p&gt;
&lt;p&gt;Estaba usando &lt;a href=&quot;https://github.com/Hieromon/AutoConnect&quot;&gt;AutoConnect&lt;/a&gt; para permitir la conexión WiFi sin guardar las credenciales en el código y para ofrecer actualizaciones OTA desde la interfaz web.&lt;/p&gt;
&lt;p&gt;Era para un proyecto que iba a controlar unos ventiladores PWM de CPU de 4 pines que tengo en el armario de mi servidor, para enfriar el aire de su interior. Para eso quería dividir la lógica en dos tareas.&lt;/p&gt;
&lt;p&gt;Una tarea para manejar las APIs, la lectura de sensores, las actualizaciones, el WiFi, etc., y otra para manejar la interrupción y el control PWM de los ventiladores.&lt;/p&gt;
&lt;p&gt;Todo iba bien, las tareas se crearon, pero al ejecutar el código, si ponía el ESP32 en el modo en el que hay que conectarse a él para indicarle que se conecte a tu red WiFi, empezaba a mostrar un comportamiento extraño: reiniciaba el controlador cada pocos segundos y no lograba que la conexión funcionara.&lt;/p&gt;
&lt;p&gt;Fue un rato molesto, porque tuve que desmontar el controlador de su lugar y conectarlo por USB para cargarle un firmware nuevo.&lt;/p&gt;
&lt;p&gt;Después de hacer eso noté que el error venía del watchdog:&lt;/p&gt;
&lt;p&gt;Task watchdog got triggered. The following tasks did not feed the watchdog in time:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;IDLE (CPU 1)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Tasks currently running:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CPU 0: ManageTask&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CPU 1: ControllerTask&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Investigando un poco, parece que esto lo dispara el Task Watchdog del ESP32, que se encarga de asegurar que las tareas tengan su turno de ejecución en la CPU.&lt;/p&gt;
&lt;p&gt;Además, parecía que AutoConnect no era muy flexible al trabajar dentro del contexto de una tarea, en comparación con ejecutarlo fuera de una, directamente con el resto del código y la funcionalidad.&lt;/p&gt;
&lt;p&gt;Después de buscar un poco y probar distintas cosas, parece que la forma más fácil de salir de esta situación es simplemente desactivar el watchdog y esperar que las cosas se ejecuten a tiempo 🙂 La tarea no es crítica, así que no pasa nada si tarda más en completar lo que está haciendo.&lt;/p&gt;
&lt;p&gt;Para desactivar el watchdog, hay que hacer dos cosas:&lt;/p&gt;
&lt;p&gt;Primero, incluir el encabezado &lt;code&gt;esp_task_wdt.h&lt;/code&gt;. Para eso, agrega &lt;code&gt;#include &amp;#x3C;esp_task_wdt.h&gt;&lt;/code&gt; a tu sección de includes.&lt;/p&gt;
&lt;p&gt;Segundo, hacer que el watchdog no reinicie el controlador y que espere más tiempo. Para ello, hay que añadir &lt;code&gt;esp_task_wdt_init(30, false);&lt;/code&gt; al inicio del código de tu tarea.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;cpp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; manage_core_task&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;pv_parameters&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;    esp_task_wdt_init&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // .... rest of the code ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto establecerá el tiempo de espera del watchdog en 30 &lt;strong&gt;SEGUNDOS&lt;/strong&gt; y desactivará el reinicio del controlador si se dispara.&lt;/p&gt;
&lt;p&gt;Si quieres que el controlador se reinicie de todos modos cuando se dispare el watchdog, cambia el segundo parámetro de la llamada a la función de &lt;code&gt;false&lt;/code&gt; a &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category><category>arduino</category><category>code</category><category>esp32</category><category>espressif</category><category>multi-core</category><category>multi-threading</category></item><item><title>🌼 y 🐝</title><link>https://bisko.be/es/posts/blog/%F0%9F%8C%BC-%F0%9F%90%9D/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/%F0%9F%8C%BC-%F0%9F%90%9D/</guid><pubDate>Tue, 14 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Abeja sobre un crisantemo blanco parecido a una margarita, rodeada de flores blancas, amarillas, rosas y naranja rojizo en un macizo de jardín&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/image-1-c44a4a22.DM-UJBpr_ZsDCIE.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>bee</category><category>bees</category><category>flower</category><category>flowers</category></item><item><title>Cuando viajar necesita un descanso de viajar</title><link>https://bisko.be/es/posts/blog/when-travel-needs-a-break-from-travel/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/when-travel-needs-a-break-from-travel/</guid><description>Cuando un niño siente que las maletas de viaje necesitan descansar.</description><pubDate>Sat, 14 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Tienda de campaña emergente naranja en interiores, con un colchón y tres maletas dentro, instalada en una sala soleada con un sofá y un tobogán infantil&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/image-ef37b29d.BszBkRqS_1jMq5e.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Cuando un niño siente que las maletas de viaje necesitan descansar.&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>fun</category><category>travel</category></item><item><title>Grafiti alrededor del mundo: Dublín</title><link>https://bisko.be/es/posts/blog/graffiti-around-the-world-dublin/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/graffiti-around-the-world-dublin/</guid><description>Hace unos meses fuimos de viaje a Dublín y me sorprendió la cantidad de buenos grafiteros que hay por allá. Aquí les dejo algunos.</description><pubDate>Fri, 14 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace unos meses fuimos de viaje a Dublín y me sorprendió la cantidad de buenos grafiteros que hay por allá.&lt;/p&gt;
&lt;p&gt;Aquí les dejo algunos.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Arte urbano al estilo stencil de una joven con un pajarito en el hombro, pintado en una caja de servicios junto a una ventana de Powers Irish Whiskey&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7482-63b60082.Bxx3TjUc_1oK5zc.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Caja de servicios pintada con dos figuras con peluca empolvada en un palco de teatro, una de ellas de nariz larga y con una rosa amarilla, y un hombre detrás&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7716-cf4a09eb.BXnFmORL_Zwb0W.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Mural nocturno en una caja de servicios de dos mujeres tomándose selfis con sus teléfonos, una sentada en el regazo de la otra, rodeadas de estrellas doradas&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7465-a1ef02f7.dem_I3k3_1u9UWt.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Caja de servicios pintada como un casete retro con rayas de arcoíris, con las etiquetas Mixtape for Dublin y Stereo 120&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7670-a65a7a2d.6pMYI6Bw_Z15AP4O.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Mural en una pared roja de un viejo marinero barbudo fumando en pipa junto a un perrito, con las palabras Auld Dubliner en un letrero al estilo de vitral&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_7672-dbb3a83b.DFWmxWvS_ZOjwzR.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Caja de servicios pintada con un director de coro de pelo rizado frente a un coro de cantantes pelirrojos con la boca abierta y sobrepellices blancas&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7362-681994c0.Cob4Td7H_2gJf3X.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>blog</category><category>Graffiti</category><category>Dublin</category><category>Ireland</category><category>Photography</category><category>travel</category></item><item><title>Configurar una YubiKey para firmar commits de Git</title><link>https://bisko.be/es/posts/dev/setting-up-a-yubikey-for-git-commit-signing/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/setting-up-a-yubikey-for-git-commit-signing/</guid><description>He estado usando una YubiKey como llave de autenticación de dos factores y para firmar mis commits de Git. Hasta hace unos días usaba una YubiKey 4. Como mi computadora actual no tiene ningún puerto USB-A, llevaba un adaptador de USB-A a USB-C de un lado a otro en la mochila, y usar la llave ha sido una molestia durante el</description><pubDate>Wed, 08 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;He estado usando una YubiKey como llave de &lt;a href=&quot;https://es.wikipedia.org/wiki/Autenticaci%C3%B3n_de_m%C3%BAltiples_factores&quot;&gt;autenticación de dos factores&lt;/a&gt; y para firmar mis commits de Git. Hasta hace unos días usaba una YubiKey 4. Como mi computadora actual no tiene ningún puerto USB-A, durante el último año he tenido que andar con adaptadores de USB-A a USB-C en la mochila, y usar la llave ha sido una molestia. Por eso decidí que ya era hora de pasarme a mi YubiKey 5C “nueva” y así no tener que lidiar más con esos adaptadores.&lt;/p&gt;
&lt;p&gt;En realidad ya tenía la llave desde hace tiempo, porque la pedí junto con una YubiKey 4 de reemplazo que conseguí por el problema del &lt;a href=&quot;https://www.yubico.com/2017/10/infineon-rsa-key-generation-issue/&quot;&gt;TPM de Infineon&lt;/a&gt; que ellos identificaron, pero apenas ahora decidí que era el momento de cambiar a la llave nueva.&lt;/p&gt;
&lt;p&gt;La otra razón para hacerlo ahora es que mis viejas llaves GPG caducaron y tuve que volver a emitirlas, así que puedo aprovechar para usar la llave y firmar mis commits de Git.&lt;/p&gt;
&lt;h3 id=&quot;la-locura-de-gpg&quot;&gt;La locura de GPG&lt;/h3&gt;
&lt;p&gt;Si has lidiado con llaves GPG en el pasado (o lo haces actualmente), sabes que puede ser bastante difícil ponerlas en marcha de forma correcta y segura si nunca lo has hecho. Mantener las llaves maestras sin conexión, ir moviendo llaves públicas, reemitir las llaves cuando caducan, quizás firmarlas con llaves anteriores para verificarlas, revocar llaves… No es fácil seguir las mejores prácticas ni siquiera en teoría. Cuando toca llevarlas a la práctica, todo se complica muchísimo.&lt;/p&gt;
&lt;p&gt;La mayoría de los tutoriales en línea te mandan a generar las llaves desde la línea de comandos, navegando menús con un patrón de diseño poco común, y son un auténtico dolor de cabeza para ponerlas a funcionar. Casi todos dicen que uses una máquina sin conexión, como una Raspberry PI, y/o que generes las llaves maestras y las subllaves sin conexión y mantengas la llave maestra fuera de tu computadora.&lt;/p&gt;
&lt;p&gt;🤯&lt;/p&gt;
&lt;p&gt;Llevo casi 4 años lidiando con esto cada inicio de enero. Temo el momento en que aparece el siguiente error, avisándome de que mis llaves de firma han caducado.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;error: gpg failed to sign the data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;fatal: failed to write commit object&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este año decidí que era hora de intentar que el proceso fuera mucho más sencillo, usar la generación de certificados integrada y evitarme todo el lío de generar llaves GPG y demás.&lt;/p&gt;
&lt;h3 id=&quot;generación-de-llaves-en-la-yubikey&quot;&gt;Generación de llaves en la YubiKey&lt;/h3&gt;
&lt;p&gt;Con esto todavía tenemos que usar la interfaz de línea de comandos, pero es un poco más evidente porque tiene menos pasos.&lt;/p&gt;
&lt;p&gt;Primero tenemos que configurar nuestra tarjeta/dispositivo.&lt;/p&gt;
&lt;h3 id=&quot;configuración-de-la-tarjetadispositivo&quot;&gt;Configuración de la tarjeta/dispositivo&lt;/h3&gt;
&lt;p&gt;Ejecuta &lt;code&gt;gpg --card-status&lt;/code&gt; en la terminal y deberías ver algo como esto:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reader ………..: Yubico Yubikey 4 OTP U2F CCID&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Application ID …: &amp;#x3C;Serial number&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Version ……….: 2.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Manufacturer …..: Yubico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Serial number ….: &amp;#x3C;Device serial number&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Name of cardholder: unspecified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Language prefs …: en&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sex …………..: unspecified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;URL of public key : \[not set\]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Login data …….: &amp;#x3C;e-mail or nothing&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Signature PIN ….: not forced&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Key attributes …: rsa4096 rsa4096 rsa4096&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Max. PIN lengths .: 127 127 127&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PIN retry counter : 3 0 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Signature counter : 9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si ves algo parecido y no aparece ningún error, puedes continuar.&lt;/p&gt;
&lt;p&gt;Ejecuta &lt;code&gt;gpg --card-edit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Llegarás a una interfaz de línea de comandos que muestra la misma información del inicio y, al final, un prompt &lt;code&gt;gpg/card&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Escribe &lt;code&gt;admin&lt;/code&gt; y presiona Enter.&lt;/p&gt;
&lt;p&gt;Ahora puedes escribir &lt;code&gt;help&lt;/code&gt; para saber cómo cambiar la información del titular y los PIN de la tarjeta.&lt;/p&gt;
&lt;p&gt;Algo que &lt;strong&gt;&lt;em&gt;DEBES&lt;/em&gt;&lt;/strong&gt; hacer es cambiar los PIN predeterminados de la tarjeta. Hay dos. El primero es el PIN que usas para acceder a las llaves de la tarjeta. El segundo es el PIN de “Admin” o PUK (Personal Unblocking Code, código personal de desbloqueo).&lt;/p&gt;
&lt;p&gt;Para hacerlo, escribe &lt;code&gt;passwd&lt;/code&gt; y verás un menú:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg/card&gt; passwd  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: OpenPGP card no. &amp;#x3C;Serial number&gt; detected&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1 - change PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2 - unblock PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;3 - change Admin PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;4 - set the Reset Code  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Q - quit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Escribe &lt;code&gt;1&lt;/code&gt; y sigue las indicaciones para actualizar tu PIN. El PIN predeterminado es &lt;code&gt;123456&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Cuando termines, elige &lt;code&gt;3&lt;/code&gt; para cambiar el PIN de Admin. El predeterminado es &lt;code&gt;12345678&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Una vez cambiados ambos PIN, vuelve al menú principal para terminar de actualizar la información de la llave.&lt;/p&gt;
&lt;p&gt;Los comandos que puedes usar son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; – para cambiar el nombre del titular&lt;/li&gt;
&lt;li&gt;&lt;code&gt;login&lt;/code&gt; – para cambiar el correo electrónico o el login del titular&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Después de eso podemos pasar a la generación de las llaves propiamente dicha.&lt;/p&gt;
&lt;h3 id=&quot;generación-de-llaves&quot;&gt;Generación de llaves&lt;/h3&gt;
&lt;p&gt;Ahora sí toca generar las llaves.&lt;/p&gt;
&lt;p&gt;Para ello, escribe &lt;code&gt;generate&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Se te preguntará &lt;code&gt;Make off-card backup of encryption key? (Y/n)&lt;/code&gt;, pero, como se menciona en la documentación de YubiKey, esto es solo un respaldo parcial y no creará una copia completa de las llaves secretas, así que da igual si respondes &lt;code&gt;Yes&lt;/code&gt; o &lt;code&gt;No&lt;/code&gt;. Yo respondo &lt;code&gt;No(n)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si ya hay llaves guardadas en la tarjeta, se te preguntará si quieres reemplazarlas:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: Note: keys are already stored on the card!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Replace existing keys? (y/N)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Asegúrate de no reemplazar algo importante de lo que no tengas respaldo y continúa con &lt;code&gt;Y&lt;/code&gt;. Si hay algo importante, es mejor abandonar todo el proceso con &lt;code&gt;Ctrl+C&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Se te pedirá el PIN de la tarjeta que configuraste antes.&lt;/p&gt;
&lt;p&gt;Luego tendrás que elegir durante cuánto tiempo serán válidas las llaves:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Please specify how long the key should be valid.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        0 = key does not expire&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &amp;#x3C;n&gt; = key expires in n days&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;w = key expires in n weeks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;m = key expires in n months&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;y = key expires in n years&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; Key is valid for? (0)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si quieres que las llaves sean válidas solo por 1 año, escribe &lt;code&gt;1y&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Se te pedirá que confirmes la fecha de caducidad. Revisa que todo esté bien y confirma.&lt;/p&gt;
&lt;p&gt;Después se te pedirá que ingreses la información del propietario de la llave:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Is this correct? (y/N) y&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GnuPG needs to construct a user ID to identify your key.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Real name: &amp;#x3C;Your name&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Email address: &amp;#x3C;Your e-mail&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Comment: &amp;#x3C;Comment is optional&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; You selected this USER-ID:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &quot;&amp;#x3C;Your name&gt; &amp;#x3C;comment&gt; &amp;#x3C;your e-mail&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Type `O` to confirm if everything seems correct.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego se te pedirá el PIN de Admin o PUK. Es necesario porque se realizará una operación de escritura en la tarjeta.&lt;/p&gt;
&lt;p&gt;Si todo está bien, la YubiKey empezará a parpadear y seguirá así un buen rato (en mi caso, unos cinco minutos).&lt;/p&gt;
&lt;p&gt;Cuando termine verás el siguiente mensaje:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: key &amp;#x3C;Short ID&gt; marked as ultimately trusted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: revocation certificate stored as &apos;/Users/bisko/.gnupg/openpgp-revocs.d/&amp;#x3C;LONG ID&gt;.rev&apos; public and secret key created and signed.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Anota el &lt;code&gt;&amp;#x3C;Short ID&gt;&lt;/code&gt;, porque lo usaremos más adelante.&lt;/p&gt;
&lt;p&gt;En este punto puedes salir del prompt de GPG con &lt;code&gt;quit&lt;/code&gt; o &lt;code&gt;Ctrl+C&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ahora toca guardar la llave pública, para poder reutilizar la llave en otra computadora.&lt;/p&gt;
&lt;p&gt;Para ello, ejecuta el siguiente comando:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --armor&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --export&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.asc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto exportará la llave pública a un archivo llamado &lt;code&gt;&amp;#x3C;Short ID&gt;.asc&lt;/code&gt;. Lo usarás en el futuro si quieres poder usar la YubiKey en otra computadora o si pierdes tu configuración de GPG.&lt;/p&gt;
&lt;p&gt;Para restaurar la llave pública en tu llavero, tienes que hacer lo siguiente:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --import&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.asc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; public&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Your Name &amp;#x3C;your@email&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; imported&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Total&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; processed:&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; imported:&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Una nota muy importante.&lt;/em&gt;&lt;/strong&gt; Si se trata de una instalación nueva de GPG o de otra computadora, GPG no reconocerá por sí solo las llaves que están en la tarjeta. Necesitas ejecutar &lt;code&gt;gpg --card-status&lt;/code&gt; para que lea la tarjeta y detecte las llaves que contiene.&lt;/p&gt;
&lt;h3 id=&quot;configurar-git-para-firmar&quot;&gt;Configurar Git para firmar&lt;/h3&gt;
&lt;p&gt;Para configurar Git de modo que firme tus commits, debes agregar lo siguiente a tu &lt;code&gt;~/.gitconfig&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En la sección &lt;code&gt;[user]&lt;/code&gt;, tienes que agregar (o actualizar) la siguiente línea:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;signingkey = 0x&amp;#x3C;Short ID&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Luego, si quieres firmar todos tus commits, agrega lo siguiente al final del archivo:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;[gpg]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  program&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; = /usr/local/bin/gpg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;[commit]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  gpgsign&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; = true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con esto Git firmará todos tus commits.&lt;/p&gt;
&lt;p&gt;Para configurar GitHub, tienes que agregar tu llave pública a tu perfil. Para ello, ve a &lt;code&gt;GitHub -&gt; Settings -&gt; SSH and GPG keys -&gt; New GPG key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Verás un cuadro de texto donde debes pegar todo el contenido del archivo &lt;code&gt;&amp;#x3C;Short ID&gt;.asc&lt;/code&gt; que generamos antes.&lt;/p&gt;
&lt;p&gt;Si quieres copiar el contenido del archivo (en macOS) puedes hacer lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cat &amp;#x3C;Short ID&gt;.asc | pbcopy&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Esto copiará el contenido completo del archivo al portapapeles.&lt;/p&gt;
&lt;p&gt;Pega eso en el cuadro de texto de GitHub y haz clic en el botón &lt;code&gt;Add GPG key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Después de eso puedes intentar hacer un commit y un push a GitHub, y deberías ver la bonita etiqueta &lt;code&gt;Verified&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;depuración&quot;&gt;Depuración&lt;/h3&gt;
&lt;p&gt;A veces las cosas no funcionan a la primera. Para reunir más información puedes probar lo siguiente:&lt;/p&gt;
&lt;h3 id=&quot;firmar-con-gpg&quot;&gt;Firmar con GPG&lt;/h3&gt;
&lt;p&gt;Primero intenta firmar algo con la llave:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gpg -s &amp;#x3C;file&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si esto falla, intenta averiguar por qué; yo no soy ningún experto como para ayudarte con eso.&lt;/p&gt;
&lt;p&gt;Revisa la salida de Git con GIT_TRACE=1 git commit -am “test”&lt;/p&gt;
&lt;p&gt;Esto te mostrará exactamente lo que hace Git mientras intenta hacer el commit y firmarlo. Te dará una pista de por qué podría estar fallando la firma.&lt;/p&gt;
&lt;p&gt;De ahí también puedes ver que Git ejecuta el siguiente comando:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;/usr/local/bin/gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --status-fd=2&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -bsau&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Key&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puedes intentar ejecutarlo manualmente para ver si te da un error más útil.&lt;/p&gt;</content:encoded><category>dev</category><category>Snippets</category><category>Technology</category><category>git</category><category>github</category><category>gpg</category><category>key</category><category>public-key</category><category>secrets</category><category>sign</category><category>yubikey</category></item><item><title>e1000e  eth0: Detected Hardware Unit Hang</title><link>https://bisko.be/es/posts/dev/e1000e-device-id-eth0-detected-hardware-unit-hang/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/e1000e-device-id-eth0-detected-hardware-unit-hang/</guid><description>Hace poco mi servidor doméstico y host de máquinas virtuales empezó a perder la conectividad de red de forma aleatoria. Desde fuera parecía que seguía funcionando, pero no podía acceder a él de ninguna forma remota. Según el switch, el adaptador ethernet parecía estar encendido, así que el problema debía estar en algún lugar del software. No</description><pubDate>Wed, 18 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace poco mi servidor doméstico y host de máquinas virtuales empezó a perder la conectividad de red de forma aleatoria. Desde fuera parecía que seguía funcionando, pero no podía acceder a él de ninguna forma remota. Según el switch, el adaptador ethernet parecía estar encendido, así que el problema debía estar en algún lugar del software.&lt;/p&gt;
&lt;p&gt;No sería la primera vez que un driver es el culpable de que se cuelgue una conexión de red. En el pasado me han fastidiado unos drivers de WiFi con errores, tanto en equipos con Linux como con Windows.&lt;/p&gt;
&lt;p&gt;Después de escarbar un poco en los registros del sistema, me topé con lo siguiente:&lt;/p&gt;
&lt;p&gt;vmhost kernel: e1000e 0000:00:1f.6 eth0: Detected Hardware Unit Hang:&lt;br&gt;
vmhost kernel:   TDH                  &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel:   TDT                  &amp;#x3C;1&gt;&lt;br&gt;
vmhost kernel:   next_to_use          &amp;#x3C;1&gt;&lt;br&gt;
vmhost kernel:   next_to_clean        &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel: buffer_info[next_to_clean]:&lt;br&gt;
vmhost kernel:   time_stamp           &amp;#x3C;10fbc2f81&gt;&lt;br&gt;
vmhost kernel:   next_to_watch        &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel:   jiffies              &amp;#x3C;10fbc3871&gt;&lt;br&gt;
vmhost kernel:   next_to_watch.status &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel: MAC Status             &amp;#x3C;40080083&gt;&lt;br&gt;
vmhost kernel: PHY Status             &amp;#x3C;796d&gt;&lt;br&gt;
vmhost kernel: PHY 1000BASE-T Status  &amp;#x3C;7800&gt;&lt;br&gt;
vmhost kernel: PHY Extended Status    &amp;#x3C;3000&gt;&lt;br&gt;
vmhost kernel: PCI Status             &amp;#x3C;10&gt;&lt;br&gt;
vmhost kernel: e1000e 0000:00:1f.6 eth0: Reset adapter unexpectedly&lt;br&gt;
vmhost kernel: vmbr0: port 1(eth0) entered disabled state&lt;/p&gt;
&lt;p&gt;Luego reiniciaba el adaptador de red y, al rato, volvía a hacerlo, hasta que la máquina se quedaba completamente sin conexión.&lt;/p&gt;
&lt;p&gt;Buscando respuestas en línea, encontré &lt;a href=&quot;https://serverfault.com/questions/616485/e1000e-reset-adapter-unexpectedly-detected-hardware-unit-hang&quot;&gt;este hilo de ServerFault&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Causa&lt;/p&gt;
&lt;p&gt;Leyendo distintas fuentes y listas de reportes de errores, parece que la mejor manera de reproducir el problema es someter al dispositivo a un alto consumo de ancho de banda, por ejemplo transmitiendo grandes cantidades de datos que saturen la interfaz.&lt;/p&gt;
&lt;p&gt;En mi caso solía ocurrir cuando transmito contenido multimedia desde el servidor Plex local a algún dispositivo. Por la forma en que está configurada la red, la máquina virtual con Windows que ejecuta Plex tiene que obtener el archivo multimedia de un recurso compartido NFS en otro dispositivo, transcodificarlo en la VM y luego enviarlo al dispositivo de reproducción.&lt;/p&gt;
&lt;p&gt;Todo esto suma mucho tráfico de red, normalmente entre 40 y 100 Mbit/s, dependiendo del dispositivo que reproduce el archivo y de la calidad del archivo original.&lt;/p&gt;
&lt;p&gt;El mismo problema se manifestó al transmitir juegos con Steam Link a nuestro Apple TV. La conexión es por cable, pero no es raro que la red se caiga. Creo que está relacionado con el mismo problema, pero estaré pendiente para ver si vuelve a ocurrir después de la solución.&lt;/p&gt;
&lt;p&gt;Posible solución&lt;/p&gt;
&lt;p&gt;Parece que una posible solución es desactivar &lt;strong&gt;GSO&lt;/strong&gt; &lt;em&gt;(Generic Segmentation Offload)&lt;/em&gt;, &lt;strong&gt;TSO&lt;/strong&gt; &lt;em&gt;(TCP Segmentation Offload)&lt;/em&gt; y &lt;strong&gt;GRO&lt;/strong&gt; &lt;em&gt;(Generic Receive Offload)&lt;/em&gt; en la interfaz de red*:&lt;/p&gt;
&lt;p&gt;ethtool -K eth0 gso off gro off tso off&lt;/p&gt;
&lt;p&gt;Ya lo apliqué en mi configuración y estoy esperando para ver si de verdad resuelve el problema a largo plazo.&lt;/p&gt;
&lt;p&gt;Notas al pie&lt;/p&gt;
&lt;p&gt;* Estas opciones sirven para delegar la segmentación de paquetes al controlador de la interfaz de red y así reducir el uso de CPU de la máquina. Pueden encontrar más detalles en &lt;a href=&quot;https://en.wikipedia.org/wiki/Large_send_offload&quot;&gt;este artículo de Wikipedia&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>bandwidth</category><category>bug</category><category>network</category><category>nic</category><category>plex</category><category>proxmox</category><category>steam</category><category>streaming</category></item><item><title>La calabaza</title><link>https://bisko.be/es/posts/blog/the-pumpkin/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-pumpkin/</guid><description>Foto tomada en Simple Food Punkt</description><pubDate>Sun, 03 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;¿Una calabaza tallada en una sartén? No estoy seguro.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_8045-99331106.C4JicSzy_20be15.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Foto tomada en &lt;a href=&quot;https://www.facebook.com/Simple.Food.Punkt/&quot;&gt;Simple Food Punkt&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>fun</category><category>Halloween</category><category>Orange</category><category>pumpkin</category></item><item><title>Snippets: cómo ejecutar un registro de imágenes Docker local/privado en un swarm</title><link>https://bisko.be/es/posts/dev/snippets-running-a-local-private-swarm-docker-image-registry/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/snippets-running-a-local-private-swarm-docker-image-registry/</guid><description>Hoy intentaba generar una imagen de Docker a partir de un proyecto de Node.js y quería desplegarla en mi swarm local de pruebas. Por desgracia, si se construye una imagen de Docker local, esta se almacena y es accesible solo en el nodo donde fue creada, y los demás nodos del swarm no pueden acceder a ella. La</description><pubDate>Fri, 11 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoy intentaba generar una imagen de Docker a partir de un proyecto de Node.js y quería desplegarla en mi swarm local de pruebas.&lt;/p&gt;
&lt;p&gt;Por desgracia, si se construye una imagen de Docker local, esta se almacena y es accesible solo en el nodo donde fue creada, y los demás nodos del swarm no pueden acceder a ella.&lt;/p&gt;
&lt;p&gt;La forma de solucionarlo es subir la imagen a un registro de Docker (Docker registry) desde el cual todos los nodos del swarm puedan descargarla.&lt;/p&gt;
&lt;p&gt;Creando el registro&lt;/p&gt;
&lt;p&gt;Para instanciar un servicio de registro en el swarm, ejecuten:&lt;/p&gt;
&lt;p&gt;docker service create —name registry —publish 5000:5000 registry:latest&lt;/p&gt;
&lt;p&gt;Esto creará el servicio de registro y lo ejecutará en el swarm, haciéndolo accesible para todos los nodos del swarm.&lt;/p&gt;
&lt;p&gt;Subiendo una imagen al registro&lt;/p&gt;
&lt;p&gt;Para subir una imagen al registro hay que hacer dos cosas: etiquetar la imagen y luego subirla.&lt;/p&gt;
&lt;p&gt;Aquí tienen un ejemplo de cómo construir y etiquetar la imagen de una sola vez:&lt;/p&gt;
&lt;p&gt;docker build . -t localhost.localdomain:5000/&lt;image-name&gt;:latest&lt;/image-name&gt;&lt;/p&gt;
&lt;p&gt;Y así se sube al registro:&lt;/p&gt;
&lt;p&gt;docker push localhost.localdomain:5000/&lt;image-name&gt;:latestUsando la imagen en un servicio/contenedor/etc.&lt;/image-name&gt;&lt;/p&gt;
&lt;p&gt;Para usar la imagen en un servicio o un contenedor, se especifica la ruta completa de arriba, es decir, &lt;code&gt;localhost.localdomain:5000/&amp;#x3C;image-name&gt;:latest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Los nodos del swarm tendrán acceso a la imagen y podrán descargarla y ejecutarla.&lt;/p&gt;
&lt;p&gt;Nota importante sobre la dirección del registro&lt;/p&gt;
&lt;p&gt;En la mayoría de los tutoriales en línea, la URL del registro aparece como &lt;code&gt;localhost:5000&lt;/code&gt;. Por desgracia, esto no funciona y normalmente se agota el tiempo de espera al intentar usarla. ¡Si la cambiamos por &lt;code&gt;localhost.localdomain&lt;/code&gt;, funcionará!&lt;/p&gt;
&lt;p&gt;No sé por qué ocurre esto, si tanto &lt;code&gt;localhost&lt;/code&gt; como &lt;code&gt;localhost.localdomain&lt;/code&gt; se resuelven a &lt;code&gt;127.0.0.1&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>Snippets</category><category>Technology</category><category>docker</category><category>docker-swarm</category><category>registry</category><category>swarm</category></item><item><title>Timelapse: rodaje y despegue desde el Aeropuerto Internacional de Orlando</title><link>https://bisko.be/es/posts/blog/timelapse-taxiing-and-takeoff-from-orlando-international-airport/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/timelapse-taxiing-and-takeoff-from-orlando-international-airport/</guid><description>Este fue el comienzo del viaje de regreso a casa, después de que terminara nuestro increíble Automattic Grand Meetup de 2019. ¡Buenos momentos con gente genial! 🤩</description><pubDate>Tue, 01 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Grabado con un iPhone X desde la ventanilla del avión&lt;/p&gt;
&lt;p&gt;Este fue el comienzo del viaje de regreso a casa, después de que terminara nuestro increíble Automattic Grand Meetup de 2019. ¡Buenos momentos con gente genial! 🤩&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>travel</category><category>Airplane</category><category>Flying</category><category>Orlando_FL</category><category>Timelapse</category></item><item><title>Timelapse: aterrizando en una Fráncfort cubierta de niebla</title><link>https://bisko.be/es/posts/blog/timelapse-landing-in-foggy-frankfurt/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/timelapse-landing-in-foggy-frankfurt/</guid><description>Fráncfort fue una de las escalas en el camino hacia nuestro Automattic Grand Meetup anual. Ese día había mucha niebla y el aterrizaje fue toda una experiencia: volamos sobre un manto de nubes como de lana y, de repente, ¡estábamos en la pista! Aquí va una foto extra de lo que se veía desde la ciudad durante el</description><pubDate>Tue, 10 Sep 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Grabado con un iPhone X desde la ventanilla del avión&lt;/p&gt;
&lt;p&gt;Fráncfort fue una de las escalas en el camino hacia nuestro Automattic Grand Meetup anual. Ese día había mucha niebla y el aterrizaje fue toda una experiencia: volamos sobre un manto de nubes como de lana y, ¡de pronto, ya estábamos en la pista!&lt;/p&gt;
&lt;p&gt;Aquí va una foto extra de lo que se veía desde la ciudad durante el descenso.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Vista aérea desde un avión de un espeso manto de niebla y nubes, con dos chimeneas que sobresalen y colinas oscuras al fondo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_6547-fa702d62.ByzaITRP_2k3iLQ.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>travel</category><category>Airplane</category><category>Frankfurt</category><category>Landing</category><category>Timelapse</category></item><item><title>El aguacate: ¡Brotó!</title><link>https://bisko.be/es/posts/blog/the-avocado-sprouting/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-avocado-sprouting/</guid><description>¡Este es nuestro primer intento exitoso de hacer brotar un aguacate!</description><pubDate>Sat, 03 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Semilla de aguacate abierta por la mitad en una maceta con tierra, con un brote delgado de color marrón y una punta verde enroscada que sale de la grieta&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5899-f2ad7864.YgnFMYgT_1cfcKJ.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;¡Este es nuestro primer intento exitoso de hacer brotar un aguacate!&lt;/p&gt;</content:encoded><category>blog</category><category>The Avocado</category><category>Avocado</category><category>Gardening</category><category>Plant</category><category>Sprout</category></item><item><title>Snippets: Reasignar la tecla del signo de sección del teclado de Apple a la comilla invertida ( § a ` )</title><link>https://bisko.be/es/posts/dev/snippets-map-apple-keyboard-section-sign-key-to-back-quote-%C2%A7-to/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/snippets-map-apple-keyboard-section-sign-key-to-back-quote-%C2%A7-to/</guid><description>Llevo un tiempo usando teclados de Apple, pero cuando vives en Europa no es fácil conseguir los de distribución estadounidense a los que estoy acostumbrado. En macOS hay una forma &quot;fácil&quot; de reasignar el teclado con un simple comando de terminal: watch -n1 -x hidutil property -m &apos;{&quot;ProductID&quot;:592, &quot;VendorID&quot;:1452}&apos; --set &apos;{&quot;UserKeyMapping&quot;:[{&quot;HIDKeyboardModifierMappingSrc&quot;:0x700000035,&quot;HIDKeyboardModifierMappingDst&quot;:0x700000064}]}&apos; Lo que hace este</description><pubDate>Wed, 31 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Llevo un tiempo usando teclados de Apple, pero cuando vives en Europa no es fácil conseguir los de distribución estadounidense a los que estoy acostumbrado.&lt;/p&gt;
&lt;p&gt;En macOS hay una forma “fácil” de reasignar el teclado con un simple comando de terminal:&lt;/p&gt;
&lt;p&gt;watch -n1 -x hidutil property -m ’{“ProductID”:592, “VendorID”:1452}’ —set ’{“UserKeyMapping”:[{“HIDKeyboardModifierMappingSrc”:0x700000035,“HIDKeyboardModifierMappingDst”:0x700000064}]}’&lt;/p&gt;
&lt;p&gt;Lo que hace este fragmento de código es cambiar la asignación de la tecla de sección ( § ) para que escriba la tecla de comilla invertida/tilde ( &lt;code&gt;`/ ~&lt;/code&gt; ).&lt;/p&gt;
&lt;p&gt;La parte &lt;code&gt;watch -n1 -x&lt;/code&gt; lo repite cada segundo, porque a veces macOS pierde la configuración, normalmente cuando el equipo entra en suspensión o cuando el teclado se desconecta y se vuelve a conectar.&lt;/p&gt;
&lt;p&gt;Ten en cuenta que en algunas versiones de macOS la utilidad &lt;code&gt;watch&lt;/code&gt; no viene instalada y hay que obtenerla con algo como &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; o &lt;a href=&quot;https://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El código anterior funciona con el teclado externo de Apple con USB y distribución europea con letras búlgaras. Puede que haga falta un pequeño ajuste en los valores hexadecimales de las teclas para otros tipos de teclados.&lt;/p&gt;
&lt;p&gt;Una variación del comando funciona bien para el mismo tipo de teclado en la propia MacBook Pro. Solo tienes que intercambiar la posición de los valores &lt;code&gt;0x700000035&lt;/code&gt; y &lt;code&gt;0x700000064&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;He pensado en escribir una herramienta que haga esto automáticamente por mí, pero a estas alturas creo que vale más la pena invertir en un teclado nuevo con la distribución correcta 🙂&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Flores moradas</title><link>https://bisko.be/es/posts/blog/purple-flowers/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/purple-flowers/</guid><description>Vistas en un viaje a Borovets, situado en la montaña de Rila.</description><pubDate>Fri, 28 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Flores moradas parecidas a astros y capullos redondos sobre tallos verdes y vellosos, a contraluz de un sol brillante en un cielo azul, con árboles de hoja perenne oscuros al fondo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5256-c4ebab4e.B9-0LH79_ZcCswB.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Vistas en un viaje a &lt;a href=&quot;https://en.wikipedia.org/wiki/Borovets&quot;&gt;Borovets&lt;/a&gt;, situado en la &lt;a href=&quot;https://en.wikipedia.org/wiki/Rila&quot;&gt;montaña de Rila&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>flowers</category><category>purple</category><category>sun</category></item><item><title>Museo Retro</title><link>https://bisko.be/es/posts/blog/retro-museum/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/retro-museum/</guid><description>Durante nuestras vacaciones de verano en el Mar Negro, hicimos una escapada rápida a Varna, ya que estábamos en un resort cercano. Allí nos topamos con un museo Retro muy interesante. Me sorprendió muy gratamente encontrar casi todas las cosas que usaba cuando era joven. Cuántos buenos recuerdos</description><pubDate>Tue, 25 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Vitrina con juguetes y rompecabezas búlgaros antiguos: cubos de Rubik, serpientes de Rubik y juegos de mesa como Ne se sardi e Idvat tankove&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5095-fff7354b.B87XGoKK_spbqC.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Estantes con despertadores de la era soviética, incluidos los relojes Slava amarillos con forma de pollito, otros metálicos redondos y modelos rectangulares de escritorio&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5094-03b89044.PJIIKBDz_ZrumKn.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Vitrina llena de billetes antiguos de leva búlgaro en fajos y abanicos, con monedas sueltas y cintas de banco&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5092-fe5af8eb.D8cpVmlj_Z2gS5rt.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Vitrina de artículos retro para el cuidado del cabello: secadores amarillos y naranjas, tenazas para rizar, rulos y masajeadores vibradores en caja&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5091-0793f161.ByQJsy2P_Z1u1ItY.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Dos aspiradoras antiguas de color verde azulado con extremos crema y mangueras, dentro de una vitrina de cristal&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5090-2e051edf.CX0aDctc_Zqdst9.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Juego de compás de dibujo técnico sobre terciopelo azul, junto a lápices de colores, bolígrafos y parches bordados de deporte escolar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5089-f1b68d98.DkuBHl-h_Zx4MsX.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Lavadoras antiguas con centrifugadora y cajas de detergente en el suelo de un museo, con autos clásicos estacionados al fondo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5088-53896321.yYoU5Fok_Z15PUQh.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Colección de instrumentos musicales de juguete: melódicas, flautas dulces y armónicas, junto a un juego de mesa en caja y naipes&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5086-09a7e3df.D4AuUo7d_Z16eSYx.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Juego de futbolito de mesa verde con figuras rojas y blancas, rodeado de muñecas matrioskas, un cubo de Rubik y juegos electrónicos portátiles&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5085-b5ba1d92.CTJokrFJ_Z8Erqh.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las fotos fueron tomadas en el &lt;a href=&quot;https://www.tripadvisor.com/Attraction_Review-g295392-d8441907-Reviews-The_Retro_Museum_In_Varna-Varna_Varna_Province.html&quot;&gt;Museo Retro, ubicado en Varna, Bulgaria&lt;/a&gt; (enlace de TripAdvisor, ya que el sitio web del museo parece estar caído).&lt;/p&gt;
&lt;p&gt;Durante nuestras vacaciones de verano en el &lt;a href=&quot;https://en.wikipedia.org/wiki/Black_Sea&quot;&gt;Mar Negro&lt;/a&gt;, hicimos una escapada rápida a &lt;a href=&quot;https://en.wikipedia.org/wiki/Varna&quot;&gt;Varna&lt;/a&gt;, ya que estábamos en un resort cercano. Allí nos topamos con un museo Retro muy interesante.&lt;/p&gt;
&lt;p&gt;Me sorprendió muy gratamente encontrar casi todas las cosas distintas que usaba cuando era joven. Mientras lo recorría, me vinieron a la mente muchísimos buenos recuerdos de mi infancia.&lt;/p&gt;
&lt;p&gt;¡Sin duda, un buen lugar para visitar cuando estén en Varna!&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>memories</category><category>museum</category><category>retro</category><category>Varna</category></item><item><title>Mar de margaritas</title><link>https://bisko.be/es/posts/blog/sea-of-daisies/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/sea-of-daisies/</guid><description>Foto tomada cerca de Chorul.</description><pubDate>Fri, 31 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Denso prado de margaritas blancas de centro amarillo sobre altos tallos verdes, con unas pocas flores rosadas de trébol entre la hierba&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_4633-ced55558.CA2pVc_h_cVSP7.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Foto tomada cerca de &lt;a href=&quot;https://en.wikipedia.org/wiki/Chorul&quot;&gt;Chorul&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>daisy</category><category>flower</category><category>flowers</category></item><item><title>Timelapse(s): Viaje a Montserrat</title><link>https://bisko.be/es/posts/blog/timelapses-trip-to-montserrat/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/timelapses-trip-to-montserrat/</guid><description>Durante nuestro reciente encuentro de equipo en Barcelona, hicimos una excursión a la montaña de Montserrat. Elegimos un día muy nublado, pero aun así las nubes estaban lo bastante altas como para que pudiéramos ver el valle antes de que empezara a llover. Aquí hay dos timelapses de ese viaje:</description><pubDate>Wed, 08 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Durante nuestro reciente encuentro de equipo en Barcelona, hicimos una excursión a la &lt;a href=&quot;https://en.wikipedia.org/wiki/Montserrat_(mountain)&quot;&gt;montaña de Montserrat&lt;/a&gt;. Elegimos un día muy nublado, pero aun así las nubes estaban lo bastante altas como para que pudiéramos ver el valle antes de que empezara a llover.&lt;/p&gt;
&lt;p&gt;Aquí hay dos timelapses de ese viaje:&lt;/p&gt;
&lt;p&gt;¡Magia de nubes!&lt;/p&gt;
&lt;p&gt;Bajada con el &lt;a href=&quot;https://en.wikipedia.org/wiki/Aeri_de_Montserrat&quot;&gt;Aeri de Montserrat&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>travel</category><category>Barcelona</category><category>Montseratt</category><category>Spain</category><category>Timelapse</category></item><item><title>Timelapse: aterrizaje en el aeropuerto de Barcelona</title><link>https://bisko.be/es/posts/blog/timelapse-landing-at-barcelona-airport/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/timelapse-landing-at-barcelona-airport/</guid><pubDate>Sat, 04 May 2019 00:00:00 GMT</pubDate><content:encoded/><category>blog</category><category>Adventures</category><category>travel</category><category>Airplane</category><category>Barcelona</category><category>Landing</category><category>Spain</category><category>Timelapse</category></item><item><title>El gato gris</title><link>https://bisko.be/es/posts/blog/the-grey-cat/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-grey-cat/</guid><description>¡Encontramos a este amigo por los alrededores de la casa! ¡Es muy bonito y le encantan los premios!</description><pubDate>Thu, 21 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Gato gris de ojos amarillos junto al tronco de un árbol, sobre una ladera cubierta de hierba y hojas, cerca de una roca grande y un muro de concreto&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1995-f9f8058b.DJx6IsPU_1JdhCg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;¡Encontramos a este amigo por los alrededores de la casa! ¡Es muy bonito y le encantan los premios!&lt;/p&gt;</content:encoded><category>blog</category><category>Animals</category><category>Photography</category><category>cat</category><category>grey</category></item><item><title>Cómo reiniciar el control remoto del Apple TV</title><link>https://bisko.be/es/posts/dev/resetting-restarting-apple-tv-remote/</link><guid isPermaLink="true">https://bisko.be/es/posts/dev/resetting-restarting-apple-tv-remote/</guid><description>Anoche, durante la visita de unos invitados, logré sumergir nuestro control remoto del Apple TV bajo el agua. La falta de sueño y los vasos inestables dan como resultado accidentes. El control funcionaba bien anoche, pero hoy dejó de funcionar. No responde a ninguna acción. Intenté golpearlo contra mi mano y sacudirle el agua. No sirvió de nada.</description><pubDate>Sun, 17 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anoche, durante la visita de unos invitados, logré sumergir nuestro control remoto del Apple TV bajo el agua. La falta de sueño y los vasos inestables dan como resultado accidentes.&lt;/p&gt;
&lt;p&gt;El control funcionaba bien anoche, pero hoy dejó de funcionar. No responde a ninguna acción. Intenté golpearlo contra mi mano y sacudirle el agua. No sirvió de nada.&lt;/p&gt;
&lt;p&gt;Pensamos que ya estaba perdido y empezamos a buscar en las alacenas la bolsa de arroz.&lt;/p&gt;
&lt;p&gt;Entré a internet, más que nada en broma, para ver si podía intentar “reiniciarlo”.&lt;/p&gt;
&lt;p&gt;Una guía muy útil me indicó mantener presionados los botones de Subir volumen y Menú durante 2-3 segundos para restablecer el control y ponerlo en modo de emparejamiento.&lt;/p&gt;
&lt;p&gt;¡Me sorprendí muchísimo cuando &lt;strong&gt;de verdad&lt;/strong&gt; &lt;strong&gt;funcionó&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Así que, si algo parece sospechoso, intenten primero restablecer el control. Si no funciona, entonces pueden probar con el arroz y la intervención de hardware.&lt;/p&gt;
&lt;p&gt;TL;DR;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mantengan presionados Menú + Subir volumen durante 2-3 segundos&lt;/li&gt;
&lt;li&gt;Esperen unos segundos&lt;/li&gt;
&lt;li&gt;Intenten interactuar con el Apple TV&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>dev</category><category>Apple</category><category>Technology</category><category>AppleTV</category><category>Have you tried turning it off and on again?</category><category>remote</category><category>reset</category><category>restart</category></item><item><title>El viejo tranvía</title><link>https://bisko.be/es/posts/blog/the-old-tram/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/the-old-tram/</guid><description>Ver esta publicación en Instagram Una publicación compartida por Biser Perchinkov (@biskobe) En los últimos días de 2018 fuimos a una fiesta secreta con unos amigos. ¡La gran sorpresa fue el lugar donde se celebró! ¡Fue en uno de los dos tranvías en funcionamiento más antiguos de Bulgaria! Se construyó hace casi un siglo y</description><pubDate>Fri, 04 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;[&lt;/p&gt;
&lt;p&gt;Ver esta publicación en Instagram&lt;/p&gt;
&lt;p&gt;](&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;Una publicación compartida por Biser Perchinkov (@biskobe)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En los últimos días de 2018 fuimos a una fiesta secreta con unos amigos.&lt;/p&gt;
&lt;p&gt;¡La gran sorpresa fue el lugar donde se celebró! ¡Fue en uno de los dos tranvías en funcionamiento más antiguos de Bulgaria!&lt;/p&gt;
&lt;p&gt;Se construyó hace casi un siglo y sin duda te transporta a esa época, aunque lo modernizaron un poco con luces, calefacción y algo de música y contenido multimedia para que los guías turísticos puedan hablar de los lugares de interés durante el recorrido.&lt;/p&gt;
&lt;p&gt;Lo disfruté muchísimo, porque uno de los organizadores trabaja en la cochera de tranvías y teníamos entradas de primera fila para ver cómo lo maneja el conductor. Nos dieron un curso intensivo sobre lo que hace cada palanca, ¡y pudimos tocar la campana! Toma también tuvo la oportunidad de intentar poner en marcha el tranvía, pero resulta que se necesita bastante fuerza para manejarlo. ¡Quizá dentro de unos años! 😝&lt;/p&gt;
&lt;p&gt;Los transeúntes también disfrutaban del espectáculo, ya que los tranvías retro no son algo de todos los días por aquí.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Winter</category><category>joy</category><category>machinery</category><category>party</category><category>tram</category><category>travel</category></item><item><title>Bandas sonoras de videojuegos increíbles – Stellaris</title><link>https://bisko.be/es/posts/blog/amazing-game-soundtracks-stellaris/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/amazing-game-soundtracks-stellaris/</guid><description>Hace un tiempo me compré Stellaris y rápidamente perdí unas cuantas horas en él. Aquí no voy a hablar del juego en sí. Ya se ha tratado bastante en reseñas, let’s plays y demás. Como no puedo explicar con palabras lo increíble que es, solo voy a decir: escúchenla</description><pubDate>Mon, 02 Apr 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace un tiempo me compré &lt;a href=&quot;https://en.wikipedia.org/wiki/Stellaris_(video_game)&quot;&gt;Stellaris&lt;/a&gt; y rápidamente perdí unas cuantas horas en él. Aquí no voy a hablar del juego en sí. Ya se ha tratado bastante en reseñas, let’s plays y demás.&lt;/p&gt;
&lt;p&gt;Como no puedo explicar con palabras lo increíble que es, solo voy a decir: escúchenla. Cierren los ojos, imagínense en una aventura en el espacio profundo o en cualquier lugar al que los lleve su mente, y disfrútenla.&lt;/p&gt;
&lt;p&gt;( o, si no tienen Spotify, prueben los &lt;a href=&quot;https://www.youtube.com/results?search_query=stellaris+soundtrack&quot;&gt;resultados de búsqueda de YouTube&lt;/a&gt; )&lt;/p&gt;</content:encoded><category>blog</category><category>Music</category><category>games</category><category>ost</category><category>soundtrack</category><category>stellaris</category></item><item><title>Un viaje a los recuerdos: de rosas y abejas</title><link>https://bisko.be/es/posts/blog/diving-back-in-memories-of-roses-and-bees/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/diving-back-in-memories-of-roses-and-bees/</guid><description>Hace unos días estaba revisando mi colección de fotos y me topé con una de mis tomas favoritas. Tiene su historia interesante cómo llegó a existir esta foto. Mi papá había comprado una cámara digital nueva, una Canon PowerShot A610, unos días antes. Yo tenía muchas ganas de probarla, pero él no me dio la oportunidad de hacer ni un par de fotos, porque la estaba explorando y aprendiendo a fondo</description><pubDate>Sun, 10 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace unos días estaba revisando mi colección de fotos y me topé con una de mis tomas favoritas.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Una abeja explorando la rosa&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2592&quot; height=&quot;1944&quot; src=&quot;/_astro/img_0350-258314a7.DVI6yd6N_6PkwW.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Tiene su historia interesante cómo llegó a existir esta foto.&lt;/p&gt;
&lt;p&gt;Mi papá había comprado una cámara digital nueva, una Canon PowerShot A610, unos días antes. Yo tenía muchas ganas de probarla, pero él no me daba oportunidad de sacar ni unas cuantas fotos, porque la estaba explorando y aprendiendo de pe a pa. Después de todo, era nuestra primera cámara digital “avanzada”.&lt;/p&gt;
&lt;p&gt;El día de la foto, mi papá y yo salimos a la tienda y él llevó la cámara. Le pedí que me la diera para cargarla y ver si podía fotografiar algo. Mientras discutíamos si yo era lo bastante capaz de llevar la cámara sin romperla, caminamos unos 5 o 6 minutos y justo pasamos junto a un rosal, donde vi algunas abejas volando alrededor.&lt;/p&gt;
&lt;p&gt;Para ese momento ya sabía que quería tomar una foto de la hermosa rosa en flor que ven arriba. Saqué la cámara, la encendí, esperé a que una abeja se posara sobre la flor y tomé la foto.&lt;/p&gt;
&lt;p&gt;Y ahí estaba. Mi primerísima foto con esa cámara.&lt;/p&gt;
&lt;p&gt;Hasta el día de hoy, esa foto sigue siendo una de mis favoritas.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>bee</category><category>bees</category><category>flower</category><category>nature</category><category>outside</category><category>rose</category></item><item><title>Cosas de papá: ¡Cariño, no se puede pausar un juego en línea!</title><link>https://bisko.be/es/posts/blog/dad-things-baby-you-cant-pause-an-online-game/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/dad-things-baby-you-cant-pause-an-online-game/</guid><description>Así que… el círculo se ha cerrado. Hoy, mientras disfrutaba de los últimos días de la licencia de paternidad que el genial Automattic me permitió tomar, decidí sumergirme en la tierra de la nostalgia y jugar un poco al buen y viejo StarCraft. Suena bastante normal, ¿verdad? ¡Pues sí, lo es! Aparte de tener al bebé en la oficina</description><pubDate>Tue, 05 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Así que… el círculo se ha cerrado.&lt;/p&gt;
&lt;p&gt;Hoy, mientras disfrutaba de los últimos días de la licencia de paternidad que el genial &lt;a href=&quot;https://automattic.com&quot;&gt;Automattic&lt;/a&gt; me permitió tomar, decidí sumergirme en la tierra de la nostalgia y jugar un poco al buen y viejo StarCraft.&lt;/p&gt;
&lt;p&gt;Suena bastante normal, ¿verdad? ¡Pues sí, lo es! Aparte de tener al bebé en la oficina conmigo, para poder cuidarlo mientras mamá hace otras cosas.&lt;/p&gt;
&lt;p&gt;Todo iba de maravilla, el bebé dormía, encontré una partida divertida, la empecé y a la mitad el bebé se despertó. Todo bien. Lo consolé un rato, pero estaba inquieto, así que salí de la partida y me concentré en él. No había forma de concentrarme en el juego y en el bebé al mismo tiempo.&lt;/p&gt;
&lt;p&gt;Así que, mientras mecía al bebé en mis brazos, le hablaba con dulzura e intentaba calmarlo, eché un vistazo al monitor y vi varios mensajes del creador de la partida que decían:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“¿Para qué te unes a una partida si te vas a ir?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enviados una y otra vez.&lt;/p&gt;
&lt;p&gt;Al principio empecé a responder que tenía un bebé en brazos y que tenía que cuidarlo, pero entonces me asaltaron los recuerdos de mis años de juventud, cuando le decía a mi mamá alzando la voz con angustia que no se puede pausar un juego en línea.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¡¡¡Dios mío, mamá, no se puede pausar un juego en línea!!!!1!1!1!!1!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En ese momento me di cuenta de que tengo que renunciar a los juegos en línea por un tiempo.&lt;/p&gt;
&lt;p&gt;En fin… ¯\_(ツ)_/¯&lt;/p&gt;
&lt;p&gt;Al menos ahora puedo concentrarme en ir avanzando con la lista cada vez más larga de juegos para un solo jugador. ¡The Witcher 3 no se va a terminar solo!&lt;/p&gt;</content:encoded><category>blog</category><category>Gaming</category><category>Parenting</category><category>baby</category></item><item><title>Grafitis alrededor del mundo – Montréal</title><link>https://bisko.be/es/posts/blog/graffiti-around-the-world-montreal/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/graffiti-around-the-world-montreal/</guid><description>Hace unas semanas estuve en un encuentro de equipo en Montréal y, mientras caminaba por las calles, disfruté muchísimo de la cultura del grafiti de allí. Me encantó lo coloridos y/o juguetones que son comparados con los de otros lugares que he visitado antes. Algunos de mis favoritos:</description><pubDate>Tue, 06 Jun 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hace unas semanas estuve en un encuentro de equipo en Montréal y, mientras caminaba por las calles, disfruté muchísimo de la cultura del grafiti de allí. Me encantó lo coloridos y/o juguetones que son comparados con los de otros lugares que he visitado antes.&lt;/p&gt;
&lt;p&gt;Algunos de mis favoritos:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;¡Hydralisk!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2694&quot; height=&quot;3495&quot; src=&quot;/_astro/img_7084-8397910a.ZIxhC7qM_1z6wBb.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;No estoy seguro de si tengo razón, pero haber jugado mucho StarCraft en el pasado hace que siempre piense que esas criaturas son hydralisks.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Mural gigante de una anciana con lentes y un chongo gris, flanqueada por palomas y edificios morados de la ciudad, en una esquina&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2101&quot; height=&quot;2115&quot; src=&quot;/_astro/img_7096-cd130da6.CQOvGu0o_ZRu3Go.webp&quot; &gt;&lt;img alt=&quot;Vista nocturna de un mural de Mary Poppins con paraguas, el Big Ben y pintura azul goteando sobre un edificio blanco, con pintadas encima&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2387&quot; height=&quot;2357&quot; src=&quot;/_astro/img_7083-a1cb125f.CBVRLzF4_Z1ImeId.webp&quot; &gt;&lt;img alt=&quot;Mural colorido de monstruos de bolas de helado con un solo ojo en un edificio rosa y morado sobre un restaurante Dirty Dogs, con una bicicleta al frente&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_7098-99273db4.Bqxpgo6f_y2ISn.webp&quot; &gt;&lt;img alt=&quot;Mural hecho con plantilla de hombres con paraguas amarillos sobre una pared azul, que se desvanece en un marrón oxidado hacia abajo, junto a una escalera metálica&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3384&quot; height=&quot;2901&quot; src=&quot;/_astro/img_7344-7ed4ce8e.CovT3-V7_hGgJI.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Graffiti</category><category>montreal</category><category>Photography</category><category>travel</category></item><item><title>Miedo a los perros</title><link>https://bisko.be/es/posts/blog/fear-of-dogs/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/fear-of-dogs/</guid><description>Cuando era niño, probablemente a los 5 o 6 años, el perro de un vecino me mordió mientras jugaba con él. No fue nada grave, solo un rasguño, pero para mi mente de niño fue una experiencia horrible. Después del incidente desarrollé un miedo enorme a los perros. Huía de ellos y me escondía en casa o en</description><pubDate>Fri, 31 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cuando era niño, probablemente a los 5 o 6 años, el perro de un vecino me mordió mientras jugaba con él. No fue nada grave, solo un rasguño, pero para mi mente de niño fue una experiencia horrible.&lt;/p&gt;
&lt;p&gt;Después del incidente desarrollé un miedo enorme a los perros. Huía de ellos y me escondía en casa o en el patio de algún vecino. Si era el perro de un amigo, me mantenía alerta y corría a otra habitación o a algún lugar donde el perro no pudiera alcanzarme si se movía aunque fuera lo más mínimo.&lt;/p&gt;
&lt;p&gt;Mientras crecía me mantuve alejado de los perros, pero con el tiempo empecé a tomarles cariño. El primer perro del que no huí gritando fue el de mis primos: una &lt;a href=&quot;https://en.wikipedia.org/wiki/Rough_Collie&quot;&gt;Rough Collie&lt;/a&gt; llamada Clara.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;clara&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1505&quot; height=&quot;1027&quot; src=&quot;/_astro/clara-de4f7f1b.CfG1RsCF_Z112bUQ.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Clara en todo su esplendor 🙂&lt;/p&gt;
&lt;p&gt;Era simplemente la mejor perra. Sus dueños la entrenaron muy bien y era muy tranquila, es decir, si no contamos las tormentas eléctricas. Les tenía un miedo mortal a los truenos y había que sujetarla con fuerza y mantener las puertas cerradas, o saldría corriendo e intentaría esconderse en algún lugar lejos de la tormenta.&lt;/p&gt;
&lt;p&gt;Pasar los veranos en mi pueblo y tenerla de visita de vez en cuando me ayudó mucho a reducir el miedo a los perros y la ansiedad general que me producían.&lt;/p&gt;
&lt;p&gt;Aquí en Bulgaria todavía hay muchos perros callejeros sueltos que de vez en cuando pueden representar una amenaza, ya que las manadas fácilmente llegan a ser de 5-10 perros o más. Eso siempre me asustó y me ponía nervioso al salir en la oscuridad cuando oía algún ladrido ocasional a mis espaldas.&lt;/p&gt;
&lt;p&gt;Con el tiempo aprendí que los perros no son tan aterradores y logré distinguir a los perros agresivos de los amistosos que solo quieren jugar.&lt;/p&gt;
&lt;p&gt;El fin de semana pasado hice que me sintiera orgulloso de mí mismo.&lt;/p&gt;
&lt;p&gt;Durante los últimos meses notamos a un perro callejero que merodeaba por la casa de campo. Al principio me daba bastante miedo tener a un perro desconocido dando vueltas a nuestro alrededor. Después de unas cuantas visitas noté que el perro no era tan aterrador 🙂 Se acercaba, nos miraba y luego se iba.&lt;/p&gt;
&lt;p&gt;Me costó un poco de valor, pero al final logré reunirlo todo: compré comida enlatada y salí con la comida en un recipiente de plástico, llamando al perro para que viniera a darse un buen festín.&lt;/p&gt;
&lt;p&gt;Es curioso que el perro parecía tener más miedo de mí que yo de él. Después de unos cuantos llamados, y de que yo diera un paso atrás, se acercó al plato improvisado y empezó a comer.&lt;/p&gt;
&lt;p&gt;¡Victoria! 🙂&lt;/p&gt;
&lt;p&gt;También fue divertido verlo por los espejos del auto mientras corría junto a nosotros cuando nos íbamos de la casa de campo.&lt;/p&gt;
&lt;p&gt;La mamá de Radi incluso lo llamó Bear.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Bear robando el recipiente.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2076&quot; height=&quot;1594&quot; src=&quot;/_astro/img_5556-54e1db0f.Dxlc4oQQ_1RmVVu.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;– ¡Ahora el recipiente es mío!&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>Patinaje sobre hielo</title><link>https://bisko.be/es/posts/blog/ice-skating/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/ice-skating/</guid><description>Ya casi ha pasado un mes desde el evento, pero nunca lo olvidaré 🙂 El último día del año pasado, mi primo sugirió que visitáramos una pista de hielo. Yo nunca había estado en una y tenía un miedo mortal de romperme todas las extremidades. Por suerte tenía algo de experiencia patinando en línea cuando</description><pubDate>Mon, 30 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ya casi ha pasado un mes desde el evento, pero nunca lo olvidaré 🙂&lt;/p&gt;
&lt;p&gt;El último día del año pasado, mi primo sugirió que visitáramos una pista de hielo. Yo nunca había estado en una y tenía un miedo mortal de romperme todas las extremidades.&lt;/p&gt;
&lt;p&gt;Por suerte, de niño tuve algo de experiencia patinando en línea, y eso ayudó bastante a mi autoestima. Sabía que sería algo parecido. Claro que no estaba del todo preparado para lo que pasó cuando me puse los patines y pisé el hielo: ¡era muy resbaladizo!&lt;/p&gt;
&lt;p&gt;Mi miedo desapareció pronto y logré patinar sin tener que agarrarme a la barandilla. Toda mi vieja experiencia patinando en línea volvió y pude mantenerme de pie con libertad sobre el hielo.&lt;/p&gt;
&lt;p&gt;Fue una experiencia inmensamente divertida y, sin duda, ¡volvería a la pista de hielo! 🙂&lt;/p&gt;
&lt;p&gt;Como extra, logré capturar una vista en “primera persona” de mi primo cayéndose en el hielo:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/BOrgVw6j8O3/?taken-by=biskobe&quot;&gt;https://www.instagram.com/p/BOrgVw6j8O3/?taken-by=biskobe&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Winter</category><category>fun</category><category>ice</category><category>skating</category></item><item><title>Cómo sacar un número EORI permanente por vía electrónica, o por qué el papel nunca va a morir.</title><link>https://bisko.be/es/posts/blog/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/</guid><description>Aclaración importante: el artículo está actualizado a 2017 🙂 En los comentarios hay varias actualizaciones del proceso, échenles un vistazo también. Actualización del comentario 1 También recibí un correo de otra persona que pasó recientemente por este proceso (septiembre de 2020), pero sigo esperando que me cuente cómo es el proceso en la actualidad. Si de todos modos les</description><pubDate>Fri, 06 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Aclaración importante: el artículo está actualizado a 2017 🙂 En los comentarios hay varias actualizaciones del proceso, échenles un vistazo también.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bisko.be/2017/01/%d0%ba%d0%b0%d0%ba-%d0%b4%d0%b0-%d1%81%d0%b8-%d0%b8%d0%b7%d0%b2%d0%b0%d0%b4%d0%b8%d0%bc-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%b5%d0%bd-eori-%d0%bd%d0%be%d0%bc%d0%b5%d1%80-%d0%bf%d0%be-%d0%b5/#comment-16503&quot;&gt;Actualización del comentario 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;También recibí un correo de otra persona que pasó recientemente por este proceso (septiembre de 2020), pero sigo esperando que me cuente cómo es el proceso en la actualidad.&lt;/p&gt;
&lt;p&gt;Si de todos modos tienen ganas de leer cómo era el proceso en 2017, pueden leer el artículo completo.&lt;/p&gt;
&lt;p&gt;Si no, &lt;a href=&quot;https://bisko.be/2017/01/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/#comments&quot;&gt;salten directamente a los comentarios&lt;/a&gt; para ver qué cambió y qué nuevos dolores de cabeza están encontrando las personas.&lt;/p&gt;
&lt;h4 id=&quot;artículo-original-de-2017&quot;&gt;&lt;em&gt;&lt;strong&gt;Artículo original de 2017&lt;/strong&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;El TL;DR; y los pasos concretos están al final del post 🙂&lt;/p&gt;
&lt;p&gt;Cerca de Navidad me topé con una promoción bastante buena: un SSD Transcend de 480 GB por 86 $. ¡Score! El problema: era de Amazon.com, lo que significaba que se quedaría retenido en la aduana.&lt;/p&gt;
&lt;p&gt;Pudieron más el precio y la codicia, así que lo pedí el 28 de diciembre y el 3 de enero ya estaba en Sofía. Envío con DHL, todo genial. Los empleados de DHL me explicaron que necesitaban un poder notarial, una descripción de la mercancía en búlgaro y el preciado número EORI.&lt;/p&gt;
&lt;p&gt;Las dos primeras cosas son triviales: una visita al notario y una línea de texto libre.&lt;/p&gt;
&lt;p&gt;El número EORI, en cambio, fue otra historia.&lt;/p&gt;
&lt;p&gt;Como sabe todo el que se ha topado con la aduana, el número EORI es de dos tipos: permanente y temporal. El temporal se saca al instante y vale para un envío concreto. Si lo necesitas para envíos futuros, hay que sacar uno nuevo cada vez.&lt;/p&gt;
&lt;p&gt;Por conocidos sabía que el EORI permanente se saca gratis a través del sistema en línea de la aduana. DHL, en cambio, cobraba cierta suma por tramitarlo. Tengo fe en los sistemas electrónicos (qué ingenuo) y decidí ahorrarme un poco de dinero.&lt;/p&gt;
&lt;p&gt;La tarde del día 3 me senté y empecé a preguntarme cómo funcionaba esto y cómo exactamente se “registra” uno un número EORI.&lt;/p&gt;
&lt;p&gt;El portal electrónico de la aduana (ecustoms.bg) es inútil si entras directamente. ¿Por qué? Porque exige que ya estés registrado en él. Lo repito: para acceder, tienes que estar ya registrado. Cómo se registra uno si no está registrado sigue siendo un misterio para mí. El otro drama, más pequeño, es que para acceder pide firma electrónica.&lt;/p&gt;
&lt;p&gt;Hasta aquí, bien (no). Abrí Google y empecé a lanzar conjuros para averiguar cómo presentar la dichosa solicitud. Varias búsquedas después llego a la siguiente página: &lt;em&gt;&lt;a href=&quot;http://ecustoms.bg/eportal/public/Controler?control=UpdateForm&amp;#x26;doc%5C_def%5C_id=24&amp;#x26;row%5C_id=1&amp;#x26;param%5C_selector=4&quot;&gt;http://ecustoms.bg/eportal/public/Controler?control=UpdateForm&amp;#x26;doc\_def\_id=24&amp;#x26;row\_id=1&amp;#x26;param\_selector=4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screen Shot 2017-01-06 at 11.13.28.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1287&quot; height=&quot;860&quot; src=&quot;/_astro/Screen-Shot-2017-01-06-at-11.13.28-f052b73c.B7w6nr_s_1fJCpg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Hasta aquí, bien. Me pongo a leer el texto, apenas distingo el enlace escondido en “aquí”, hago clic y… nada. El enlace me manda a un sistema que no funciona: &lt;em&gt;&lt;a href=&quot;https://ecustoms.bg:18443/eportal/servlet/Controler?control=ReaderForm&amp;#x26;doc%5C_def%5C_id=3&amp;#x26;row%5C_id=5&quot;&gt;https://ecustoms.bg:18443/eportal/servlet/Controler?control=ReaderForm&amp;#x26;doc\_def\_id=3&amp;#x26;row\_id=5&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Pronuncio conjuros durante un rato y espero que este no sea uno de esos sistemas en línea que solo funcionan de 9 a 5 en días laborables, pero no me rindo y sigo adelante.&lt;/p&gt;
&lt;p&gt;Otra vez conjuros en Google y, tras varios intentos fallidos, por una enorme casualidad doy con &lt;a href=&quot;https://eori.customs.bg:8443/&quot;&gt;https://eori.customs.bg:8443/&lt;/a&gt;. Siguen la sorpresa, el asombro, la fiesta, etc.&lt;/p&gt;
&lt;p&gt;Rápidamente pongo la firma electrónica y me pongo febrilmente a estudiar la interfaz, que consta de 4 botones en total, dos de los cuales son &lt;strong&gt;Salir&lt;/strong&gt; y uno &lt;strong&gt;Actualizar&lt;/strong&gt;. El último botón era algo así como “Registro”, pero como deja de verse una vez que haces el registro, no puedo decirles exactamente qué decía.&lt;/p&gt;
&lt;p&gt;Clic, y sale un formulario con varios tipos de campos y unos códigos en ellos. Rellené los que entendía, pero los demás eran terra incognita. Algunos estaban en negrita y otros no, pero no quedaba claro cuáles eran obligatorios y cuáles no.&lt;/p&gt;
&lt;p&gt;De vuelta a Google. Conjuros, nada. Al final decidí buscar frases concretas de los campos y por casualidad logré llegar a &lt;a href=&quot;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&quot;&gt;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&lt;/a&gt;, que resultó ser el reglamento para crear el registro EORI-BG. Qué bonito. En lugar de unos pequeños globos con una breve descripción del campo, uno tiene que escarbar en reglamentos y leyes para rellenar un formulario. C’est la vie, o, a la búlgara: aquí es así.&lt;/p&gt;
&lt;p&gt;Un reglamento no me va a detener. Lo leo en diagonal y llego al final, donde veo varios formularios de ejemplo que se usan para la versión en papel de la solicitud. Termino de rellenar mi formulario, lo guardo, lo firmo con la firma electrónica y empiezo a esperar.&lt;/p&gt;
&lt;p&gt;Inicio del proceso a eso de las 18 h, fin a las 21:43. Para una sola solicitud en línea.&lt;/p&gt;
&lt;p&gt;Habría sido más rápido ir a alguna de las aduanas de Sofía y hacerlo allí mismo, solo que este número EORI se emite según la dirección permanente, y yo todavía figuro en Montana. Sí, pero en Montana no hay aduana. La más cercana está en Lom, a unos 40 km de Montana. Yo estoy en Sofía. Si la solicitud se presenta en papel, hay que ir dos veces hasta allá, lo cual no me gusta nada. Afuera hay nieve, solo se puede hacer en día laborable y todas las demás bellezas de la administración pública.&lt;/p&gt;
&lt;p&gt;Hasta aquí, todavía creo en los sistemas electrónicos y me alegro de no tener que ir al otro extremo de Bulgaria por algo tan pequeño (y de ahorrar un dinerito, claro, que de ahí partió todo).&lt;/p&gt;
&lt;p&gt;Pasan dos días, ya es jueves, y la solicitud no avanza. Empiezo a dudar un poco. Llamé al Service Desk correspondiente de la aduana, donde la empleada me dijo muy amablemente que el plazo es de hasta 5 días hábiles y que si pasado ese tiempo no estaba listo, volviera a llamar. Bien, esperaré.&lt;/p&gt;
&lt;p&gt;Durante el día me pongo a leer sobre estas dichosas solicitudes EORI en línea y sobre la experiencia que han compartido otras personas, y en todos es lo mismo: si tienes suerte, lo consigues; si no, esperas. Alguien mencionó que preguntaron en la aduana regional y les dijeron que allí no habían recibido ninguna solicitud de ese tipo. Aquí la fe en el sistema electrónico empieza a tambalearse de forma amenazante.&lt;/p&gt;
&lt;p&gt;Hoy, viernes, decidí que sería buena idea comprobar si no seré yo también una de las víctimas del sistema electrónico. Llamo a la aduana de Lom. Una amable empleada me dijo que llamara al departamento responsable de esto. Me dio un número local de Lom sin el prefijo y, tras un par de preguntas tontas sobre qué era ese número que me dictaba, logré entender que en realidad era otro teléfono al que debía llamar. Nos sonreímos por teléfono ante la situación y llamé al número que me dio.&lt;/p&gt;
&lt;p&gt;Allí me contestó otro señor, de nuevo amable, y tras plantearle mi pregunta me dijo que ellos las procesan cuando llegan, que a ellos no había llegado nada y que iba a revisar qué pasaba y por qué no se había recibido. Que volviera a llamar en unos 10 minutitos. Me alegra que al menos el trato de todos en la cadena fuera humano, sin ese tono seco y arrogante de la época socialista. Me puse a esperar y en menos de 5 minutos me llega la notificación de un correo nuevo con el asunto: “&lt;strong&gt;¡Información sobre su registro EORI!&lt;/strong&gt;” ¡VIVA! ¡Lo conseguí!&lt;/p&gt;
&lt;p&gt;Se lo mandé a DHL y ahora solo falta que liberen el envío y lo reciba. ¡Hurra! (otra vez)&lt;/p&gt;
&lt;p&gt;Para cerrar (o TL;DR;), una guía más resumida de cómo sacar un número EORI permanente en línea:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Saquen una firma electrónica, si no tienen una.&lt;/li&gt;
&lt;li&gt;Vayan a: &lt;a href=&quot;https://eori.customs.bg:8443/&quot;&gt;https://eori.customs.bg:8443/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Descarguen &lt;a href=&quot;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&quot;&gt;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&lt;/a&gt; para ver cómo rellenar los campos. La información que necesitan está en las últimas páginas.&lt;/li&gt;
&lt;li&gt;Presenten la solicitud y fírmenla sin falta. Deben ver una fila con el siguiente valor en la columna Acción: &lt;strong&gt;EORI-REG-SIGN&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Esperen un día o, si se sienten con suerte, llamen a la oficina regional de la aduana a la que presentaron la solicitud y pregunten con tacto si la recibieron, porque el sistema electrónico les estaba dando errores. No mencionen que tienen prisa.&lt;/li&gt;
&lt;li&gt;Al poco tiempo recibirán el preciado número EORI.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Algunas notas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La firma electrónica debe estar a su nombre, ya que muchos datos (nombres, número de identificación personal, correo) se extraen de la firma al rellenar el formulario. O sea, no se puede hacer con la firma de un amigo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El sistema es bastante raro de usar y a veces es bastante caprichoso.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Envíen y firmen el formulario después de revisar con cuidado todos los campos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Funcionó con éxito en Chrome en Mac con una firma de Infonotary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nota añadida del comentario de &lt;a href=&quot;http://bisko.be/2017/01/%d0%ba%d0%b0%d0%ba-%d0%b4%d0%b0-%d1%81%d0%b8-%d0%b8%d0%b7%d0%b2%d0%b0%d0%b4%d0%b8%d0%bc-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%b5%d0%bd-eori-%d0%bd%d0%be%d0%bc%d0%b5%d1%80-%d0%bf%d0%be-%d0%b5/#comment-16471&quot;&gt;Petya&lt;/a&gt; más abajo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cuando intento firmar con la firma electrónica, empieza la descarga de un archivo (stampitls). Después de dos días de lucha con el HelpDesk de la Aduana, &lt;a href=&quot;http://bisko.be/wp-content/uploads/2018/05/stampit-sign-esig.pdf&quot;&gt;me enviaron unas instrucciones&lt;/a&gt; con las que logré firmar.&lt;br&gt;
Y algo más: si tienen dirección en Sofía y deciden obtener el número EORI con firma electrónica, al elegir la oficina aduanera elijan &lt;strong&gt;ТМУ Столична&lt;/strong&gt;: tarda cerca de una hora, mientras que si eligen Летище София (Aeropuerto de Sofía) puede tardar hasta 5 días hábiles&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Митница</category><category>eori</category><category>еори</category><category>митница</category></item><item><title>La LCE y los mensajes comerciales (… los no solicitados…)</title><link>https://bisko.be/es/posts/blog/%D0%B7%D0%B5%D1%82-%D0%B8-%D1%82%D1%8A%D1%80%D0%B3%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%82%D0%B5-%D1%81%D1%8A%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B5%D0%BF%D0%BE%D0%B8%D1%81%D0%BA/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/%D0%B7%D0%B5%D1%82-%D0%B8-%D1%82%D1%8A%D1%80%D0%B3%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%82%D0%B5-%D1%81%D1%8A%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B5%D0%BF%D0%BE%D0%B8%D1%81%D0%BA/</guid><description>Hoy, una vez más, me topé con el &quot;Según la LCE, art. 6 (1) este mensaje comercial puede ser no solicitado&quot; y luego 5 páginas de vómito con un montón de tonterías, sin ningún formato, sin secciones claramente separadas, etc. Como ya me harté de leer esas tonterías, me puse a revisar la LCE para ver qué dice ese famoso</description><pubDate>Tue, 24 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoy, una vez más, me topé con el “Según la LCE, art. 6 (1) este mensaje comercial puede ser no solicitado” y luego 5 páginas de vómito con un montón de tonterías, sin ningún formato, sin secciones claramente separadas, etc.&lt;/p&gt;
&lt;p&gt;Como ya me harté de leer esas tonterías, me puse a revisar la LCE para ver qué dice ese famoso artículo 6, y leo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Art. 6.&lt;/strong&gt; (1) El proveedor de servicios que envíe mensajes comerciales no solicitados por correo electrónico sin el consentimiento previo del destinatario está obligado a garantizar que el mensaje comercial se reconozca de forma clara e inequívoca como no solicitado desde el momento mismo en que llegue al destinatario.&lt;/p&gt;
&lt;p&gt;(2) (Modif. – Gaceta Oficial, n.º 105 de 2006, en vigor desde el 24.12.2006) La Comisión de Protección del Consumidor llevará un registro electrónico de las direcciones electrónicas de las personas jurídicas que no deseen recibir mensajes comerciales no solicitados, conforme al procedimiento establecido por un reglamento del Consejo de Ministros.&lt;/p&gt;
&lt;p&gt;(3) Se prohíbe el envío de mensajes comerciales no solicitados a las direcciones electrónicas inscritas en el registro del apartado 2.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hasta aquí todo bien, todo claro, estoy de acuerdo. No tiene sentido ponerme a discutir las disposiciones legales: las aguanto o las bloqueo, bla, bla, y sigo leyendo el apartado 4, y ¿qué veo?:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(4) &lt;strong&gt;Se prohíbe&lt;/strong&gt; el envío de mensajes comerciales no solicitados a los consumidores &lt;strong&gt;sin su consentimiento previo.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Eeeh… cómo? Según esto, primero deberían escribirme un correíto para preguntarme si estoy de acuerdo en recibir todo ese vómito o no, pero no lo hacen. Simplemente me anuncian que, según el art. 6 (1), este mensaje comercial puede no haber sido solicitado por mí y luego vuelcan todo el vómito en el mismo correo. En ningún lado me preguntan si estoy de acuerdo o no: directo y sin anestesia.&lt;/p&gt;
&lt;p&gt;Me pregunto qué tan legal es esta práctica: ¿mandar spam sin mi consentimiento expreso?&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Random rants</category><category>закони</category><category>спам</category></item><item><title>Fonética y xorg</title><link>https://bisko.be/es/posts/blog/phonetics-and-xorg/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/phonetics-and-xorg/</guid><description>En alguna de las últimas versiones de xorg, que aparecieron alrededor de enero-febrero de este año, se colaron en la distribución fonética cambios hechos por alguien que no pensó en absoluto en el usuario común y quiso convertir la fonética en el estándar búlgaro (БДС). Los cambios consisten en que se introdujeron los signos de comillas altas y bajas, en lugar de</description><pubDate>Sat, 15 May 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En alguna de las últimas versiones de xorg, que aparecieron alrededor de enero-febrero de este año, se colaron en la distribución fonética cambios hechos por alguien que no pensó en absoluto en el usuario común y quiso convertir la fonética en el estándar búlgaro (БДС). Los cambios consisten en que se introdujeron los signos de comillas altas y bajas en lugar de &amp;#x3C;&gt;, el signo de párrafo en lugar de &amp;#x26;, y el signo del euro en lugar de ^.&lt;/p&gt;
&lt;p&gt;Para corregir estas fechorías, se agregan las siguientes líneas en &lt;strong&gt;~/.bashrc&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;xmodmap -e “keycode 16 = 7 ampersand 7 ampersand”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 12 = 3 numbersign 3 numbersign”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 15 = 6 asciicircum 6 asciicircum”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 20 = minus underscore minus underscore”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 59 = comma less comma less”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 60 = period greater period greater”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Después cierran la sesión (logout) y vuelven a entrar (log-in) en el sistema, y ya deberían tener la antigua distribución de los símbolos.&lt;/p&gt;
&lt;p&gt;P. D. Hay otro cambio más: en lugar de la «ь» mayúscula (la «ер малък», la x latina) ahora está puesta «ѝ» (la «и» con acento), lo cual me parece útil y no lo he reflejado en los cambios anteriores.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Funny</category><category>Random rants</category><category>Tech</category></item><item><title>Cómo quitar el código de bloqueo del iPhone</title><link>https://bisko.be/es/posts/blog/removing-iphone-passcode-lock/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/removing-iphone-passcode-lock/</guid><description>Ayer me tomé unas copas y decidí poner un código de bloqueo en mi iPhone, por si acaso a alguien se le ocurriera husmear en él (paranoia tonta)… Así que fui y puse el código, lo escribí dos veces en los ajustes, lo configuré con lo que yo creía que era el número que estaba escribiendo y luego</description><pubDate>Sat, 14 Nov 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ayer me tomé unas copas y decidí poner un código de bloqueo en mi iPhone, por si acaso a alguien se le ocurriera husmear en él (paranoia tonta)… Así que fui y puse el código, lo escribí dos veces en los ajustes, lo configuré con lo que yo creía que era el número que estaba escribiendo y luego bloqueé el teléfono (botón de encendido/reposo). Después intenté desbloquearlo y resultó que logré escribir un número dos veces sin que fuera el número que quería. Así que me pasé el resto de la noche intentando averiguar cuál era el número, pero sin suerte.&lt;/p&gt;
&lt;p&gt;Ahora, con la cabeza más despejada, encontré una forma de quitar el código de bloqueo (aunque esto también elimina todas las demás contraseñas del teléfono).&lt;/p&gt;
&lt;p&gt;Los pasos son los siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entra al sistema de archivos del teléfono (en linux es fácil – revisa &lt;a href=&quot;http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/&quot; title=&quot;Marcansoft&quot;&gt;http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/&lt;/a&gt; sobre cómo acceder al sistema de archivos del ipod – lo mismo aplica para el iPhone y el iPod touch).&lt;/li&gt;
&lt;li&gt;Luego ve a &lt;strong&gt;/private/var/Keychains&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Mueve el archivo llamado &lt;strong&gt;keychain-2.db&lt;/strong&gt; a otra ubicación, por ejemplo /&lt;/li&gt;
&lt;li&gt;Luego ve a &lt;strong&gt;/var/mobile/Library/Preferences/&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Mueve el archivo llamado &lt;strong&gt;com.apple.springboard.plist&lt;/strong&gt; a otra ubicación, por ejemplo /&lt;/li&gt;
&lt;li&gt;Luego tienes que matar springboard ( &lt;strong&gt;killall SpringBoard&lt;/strong&gt; si has entrado por SSH) &lt;strong&gt;o simplemente reiniciar&lt;/strong&gt; el teléfono.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voilà, eso es todo.&lt;/p&gt;
&lt;p&gt;El efecto secundario de este ejercicio es que perderás todas tus contraseñas de cuentas de correo, cuentas de exchange y el orden de los íconos en el springboard, pero al menos no tendrás que reflashear el teléfono 🙂&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Random rants</category><category>Tech</category><category>drinkingisbad</category><category>Funny</category><category>iphone</category><category>ipod</category><category>ipod touch</category><category>lock</category><category>lockdown</category><category>passcode</category></item><item><title>Las últimas gotas de batería…</title><link>https://bisko.be/es/posts/blog/last-drops-of-battery/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/last-drops-of-battery/</guid><description>Hoy por la noche sufrí un pequeño apagón en mi vecindario y decidí que era el momento de poner a prueba la batería de mi Acer 5935g. Desconecté el cable de corriente y continué mi noche de películas con Dexter S02. Este es el resultado final de mi pequeña prueba de batería: 1:30 horas de películas, 35 minutos de navegación</description><pubDate>Tue, 08 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoy por la noche sufrí un pequeño apagón en mi vecindario y decidí que era el momento de poner a prueba la batería de mi Acer 5935g. Desconecté el cable de corriente y continué mi noche de películas con Dexter S02.&lt;/p&gt;
&lt;p&gt;Este es el resultado final de mi pequeña prueba de batería:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:30 horas – películas&lt;/li&gt;
&lt;li&gt;35 minutos navegando&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En total son 2:05 horas de batería garantizadas (como mínimo) y todavía me queda casi media hora de reserva para terminar unos textos en los que estoy trabajando.&lt;/p&gt;
&lt;p&gt;La verdad es que es la primera vez que me acerco tanto al tiempo de batería indicado en las especificaciones del fabricante. Me alegra haber elegido Acer 🙂&lt;/p&gt;
&lt;p&gt;El sistema en el que probé la batería es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acer 5935g (batería original)&lt;/li&gt;
&lt;li&gt;Windows Vista SP2 de 64 bits&lt;/li&gt;
&lt;li&gt;GeForce 130M activa (no la Intel 4500 integrada)&lt;/li&gt;
&lt;li&gt;Ratón Razer Copperhead&lt;/li&gt;
&lt;li&gt;Brillo al 60 % todo el tiempo&lt;/li&gt;
&lt;li&gt;Skype ejecutándose en segundo plano&lt;/li&gt;
&lt;li&gt;WiFi activado y conectado a la red&lt;/li&gt;
&lt;li&gt;KMplayer reproduciendo DivX (con muchos saltos de avance y retroceso; no puedo ver una película de principio a fin sin saltar 🙂 )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo siguiente será una prueba en Linux con las mismas actividades. Eso sí, primero tengo que instalarlo y configurarlo, pero será cuando tenga algo de tiempo libre.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Tech</category><category>acer</category><category>battery</category><category>cool</category><category>regards</category><category>video</category></item><item><title>Error E16 en una cámara Canon</title><link>https://bisko.be/es/posts/blog/error-e16-canon-camera/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/error-e16-canon-camera/</guid><description>La historia comenzó ayer, cuando mi papá me escribió que se le había estropeado la cámara (Canon A610) y que lo único que hacía al encenderla (en modo de captura) era sacar el objetivo, volver a guardarlo y mostrar sobre un fondo negro Error E16. Busqué en internet y la mayoría de la información decía que el problema era desconocido y que no</description><pubDate>Wed, 02 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La historia comenzó ayer, cuando mi papá me escribió que se le había estropeado la cámara (&lt;strong&gt;Canon A610&lt;/strong&gt;) y que lo único que hacía al encenderla (en modo de captura) era sacar el objetivo, volver a guardarlo y mostrar sobre un fondo negro&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Error E16&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Busqué en internet y la mayoría de la información decía que &lt;strong&gt;el problema es desconocido&lt;/strong&gt; y que no es raro que ocurra; que había que enviar la cámara a Canon y que ellos la cambiarían.&lt;/p&gt;
&lt;p&gt;Hasta aquí todo bien, solo que la garantía de la cámara venció hace más de un año (&lt;strong&gt;no tiene garantía&lt;/strong&gt;, en pocas palabras, porque la compró en mayo de 2006).&lt;/p&gt;
&lt;p&gt;Yo estaba sin solución, hasta que mi papá se animó y probó el remedio &lt;strong&gt;estándar&lt;/strong&gt; para la técnica “amarilla”: ¡&lt;strong&gt;GOLPES&lt;/strong&gt;! 🙂&lt;/p&gt;
&lt;p&gt;Resulta que, al &lt;strong&gt;sacudir con fuerza o darle unas palmadas&lt;/strong&gt; a la cámara, hay muchas probabilidades de que &lt;strong&gt;el error desaparezca y la cámara funcione&lt;/strong&gt; con normalidad.&lt;/p&gt;
&lt;p&gt;Pero esto tiene sus &lt;strong&gt;riesgos&lt;/strong&gt;: si el error apareció una vez, es probable que &lt;strong&gt;vuelva a aparecer&lt;/strong&gt;; todo es &lt;strong&gt;cuestión de tiempo&lt;/strong&gt;. Así que conviene ir pensando en una &lt;strong&gt;cámara nueva&lt;/strong&gt; mientras logran arreglárselas con la vieja.&lt;/p&gt;
&lt;p&gt;Además, todo esto trae un efecto secundario “genial”: el video funciona “a medias”, como pueden ver en el siguiente enlace: E16 error on Canon A610&lt;/p&gt;
&lt;p&gt;--- ## Descargas externas guardadas localmente - [&lt;a href=&quot;http://www.youtube.com/watch?v=fQGdaOgQt9M%5C&quot;&gt;http://www.youtube.com/watch?v=fQGdaOgQt9M\&lt;/a&gt;](media/грешка-e16-при-фотоапарат-canon-Canon A610 E16 error video.mkv)&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>camera</category><category>canon</category><category>chinatech</category><category>e16</category><category>error</category><category>fix</category></item><item><title>iPhone 3.0</title><link>https://bisko.be/es/posts/blog/iphone-30/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/iphone-30/</guid><description>¡Yuuuupi…! Estoy feliz como un niño pequeño 😉 Ya me equipé con la última versión de iPhone OS, es decir, la tan esperada versión 3.0. A primera vista es un gran juguete, hasta que uno se pone a explorar las novedades (las útiles, por supuesto) del nuevo firmware. Estas son algunas que personalmente me parecen útiles: Spotlight (primera pantalla (la cero, si contamos Home como la primera) – me encanta</description><pubDate>Fri, 19 Jun 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;¡Yuuuupi…! Estoy feliz como un niño pequeño 😉&lt;/p&gt;
&lt;p&gt;Ya me equipé con la última versión de iPhone OS, es decir, la tan esperada versión 3.0.&lt;br&gt;
A primera vista es un gran juguete, hasta que uno se pone a explorar las novedades (las útiles, por supuesto) del nuevo firmware. Estas son algunas que personalmente me parecen útiles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spotlight&lt;/strong&gt; (primera pantalla (la cero, si contamos Home como la primera) – me encanta. Escribes 3 letras y ya llamaste a quien necesitabas o pusiste la canción que querías. Se puede configurar en las opciones para que sea accesible con doble clic en el botón Home.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Landscape&lt;/strong&gt; (la pantalla acostada) – simplemente da un gusto enorme 🙂 . SMS, e-mail, notas – todo en landscape… AAAAAAAAAA (gritos de alegría)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy&amp;#x26;Paste&amp;#x26;Undo&amp;#x26;…&lt;/strong&gt; (eso que no existía hasta ahora) – la funcionalidad de copiar y pegar está pensada de forma muy ingeniosa (se puede ver en las reseñas). Hasta ahora he encontrado 2 bugs. Al copiar por primera vez una imagen junto con texto, copia solo la imagen. El otro bug ocurre si marcaron algo para copiar en Safari: si lo cierran y lo vuelven a abrir enseguida, primero ven el área marcada y solo después carga lo que sea que vaya a cargar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Call Log&lt;/strong&gt; (registro de llamadas) más detallado – ahora en Phone.app se muestra información más detallada sobre las llamadas con un número determinado, por ejemplo la duración de la llamada, cuándo se realizó y cuál fue su estado.&lt;/li&gt;
&lt;li&gt;Posibilidad de desactivar el SMS Reminder desde las opciones -&gt; Settings -&gt; General -&gt; Messages -&gt; Repeat Alert – una salvación frente a los sobresaltos de vibraciones y sonidos del teléfono cuando olvidan abrir un SMS que ya leyeron desde la pantalla de inicio.&lt;/li&gt;
&lt;li&gt;Mejoras en &lt;strong&gt;iPod&lt;/strong&gt; – &lt;strong&gt;Shake to Shuffle&lt;/strong&gt; (sacudes el teléfono de lado y cambia a una canción aleatoria) – práctico, pero hay que agitarlo con bastante fuerza. (nota para mí: probarlo en el autobús y en el transporte urbano); en los podcasts hay un botón TAAAN grande para &lt;strong&gt;retroceder 30 segundos&lt;/strong&gt; en el podcast que se está reproduciendo. Junto a él está también el &lt;strong&gt;botón 1x(2x,1/2x)&lt;/strong&gt;, por si quieren acelerar o ralentizar la velocidad del podcast. (suena muy divertido, sobre todo si escuchan algo lo bastante rápido); posibilidad de ver los podcasts en línea y luego descargarlos al teléfono.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VELOCIDAD&lt;/strong&gt; – me quedé asombrado… el teléfono funciona al menos un 60% más rápido que con 2.2.1. Las aplicaciones se abren a la velocidad de la luz. Y se cierran igual. Ya ni siquiera se corta el sonido mientras abro o cierro otra aplicación o el propio iPod.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No se me ocurren más por ahora, pero prometo ampliar la lista cuando descubra nuevas cosas útiles en el nuevo firmware.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>cool</category><category>iphone</category><category>update</category></item><item><title>IE daily</title><link>https://bisko.be/es/posts/blog/ie-daily/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/ie-daily/</guid><description>Si alguna vez, no se sabe de dónde, se les «cortan» los bordes de algún elemento en IE6 e IE7, prueben a ponerle un background al elemento y hay muchas probabilidades de que el truco funcione.</description><pubDate>Sat, 30 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Si alguna vez, no se sabe de dónde, se les «cortan» los bordes de algún elemento en IE6 e IE7, prueben a ponerle un background al elemento y hay muchas probabilidades de que el truco funcione.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>bug</category><category>ie</category></item><item><title>Will it Lens?</title><link>https://bisko.be/es/posts/blog/will-it-lens/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/will-it-lens/</guid><description>Los chicos de Google están totalmente chiflados 🙂 http://googleblog.blogspot.com/2009/04/will-it-lens.html</description><pubDate>Sat, 11 Apr 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Los chicos de Google están totalmente chiflados 🙂&lt;br&gt;
&lt;a href=&quot;http://googleblog.blogspot.com/2009/04/will-it-lens.html&quot;&gt;http://googleblog.blogspot.com/2009/04/will-it-lens.html&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>google</category><category>lens</category></item><item><title>Tía Vatsa… o de viaje con viejitos</title><link>https://bisko.be/es/posts/blog/lelq-vaca/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/lelq-vaca/</guid><description>Viernes 13:30… últimos minutos en el trabajo. Firo la orden de salida, últimas palabras y me dirijo a la Estación Central. Subo al tranvía y empiezo a calcular con cuidado el tiempo y a pelear con mi yo glotón sobre si pasar o no por McDonalds para comprar algo… Logro vencerlo,</description><pubDate>Sun, 09 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Viernes 13:30… últimos minutos en el trabajo. Firmo la orden de salida, últimas palabras y me voy hacia la Estación Central. Me subo al tranvía y empiezo a calcular con cuidado el tiempo y a pelear con mi yo glotón sobre si pasar por McDonalds para comprar algo o no… Logro vencerlo, porque según mis cálculos a ojo quizá ni siquiera llegaría a la estación a las 3:15, que era la hora a la que había quedado con el compa Irzhi.&lt;/p&gt;
&lt;p&gt;Por supuesto, mis cálculos a ojo no fueron nada exactos… llegué casi 40 minutos antes… En ese momento mi yo glotón (al que de aquí en adelante, para abreviar, llamaré Cerdito) empezó a machacarme: “¡Podías haber pasado a comprar algo de comer, ¿no?!”. Tras unas cuantas maldiciones dirigidas a Cerdito, entré a la estación y me quedé de piedra… “¡Carajo! ¡Nunca había visto tanta gente en esta estación!”. Estaba más lleno que… no sé qué… era un apretujadero 🙂. Vi que no había lugar en las bancas, salí y me senté en las escaleras bajo el reloj. Le mandé un mensaje a Ivan diciéndole que aquello era un manicomio, y recibí la instrucción de comprar los boletos de inmediato :).&lt;/p&gt;
&lt;p&gt;Volví a entrar y fui directo a las taquillas pequeñas… pasé rapidísimo. Normal, claro, porque solo había 2 o 3 personas antes que yo, mientras que en las otras taquillas era una locura. Compré los boletos, por supuesto con asiento, y de nuevo me puse a esperar afuera. Ivan llegó hacia las 15:40, porque el transporte público, por su parte, es gente mala, igual que los taxis 🙂, y nos quedamos esperando en el tablero a que anunciaran dónde se formaría nuestro tren. Ahí estamos, esperando, esperando… ya son las :50… y todavía ninguna información… En ese momento estábamos en modo “pues ya qué”, junto con el resto de la estación.&lt;/p&gt;
&lt;p&gt;En un momento dado empiezan a anunciar por el sistema de sonido (o como se llame eso) qué tren está dónde, y vemos cómo toda la estación se lanza en estampida hacia los andenes…&lt;/p&gt;
&lt;p&gt;Tras empujones, codazos y pisotones que habrían hecho chasquear la lengua a los jugadores de los equipos de fútbol americano, llegamos al andén y empezamos a buscar nuestros asientos. Aquí el vagón 12, allá el vagón 12… zas, recorrimos el tren entero y llegamos al vagón. Nos metimos rápido, porque eran las 15:58 y esperábamos que el tren arrancara en cualquier momento, y adentro… ah, adentro… Adentro había que ser un microbio para colarse o un superhombre para empujar a la gente que se agitaba frenéticamente por los pasillos. Menos mal que nuestros asientos estaban en el 2.º compartimento y no por la mitad, porque había una posibilidad real de acabar en una escena de “Contacto sangriento X”.&lt;/p&gt;
&lt;p&gt;Al final nos acomodamos y esperamos a que el tren partiera. A los dos minutos, más o menos, llegan unos viejitos con asientos reservados en nuestro compartimento y echan rápidamente a los “intrusos” (aunque los conocíamos, pero… el destino). Por desgracia, las 2 pesadas abuelitas de Berkovitsa se quedaron… todos se acomodaron y empezamos a esperar a que saliera el tren.&lt;/p&gt;
&lt;p&gt;Por supuesto, en ese rato reconozco a uno de los ancianos, que hasta hace unos años vivía junto a nosotros. Él, en cambio, no me reconoce… se ve que la demencia hace de las suyas 😀&lt;/p&gt;
&lt;p&gt;Me saltaré la mayoría de los detalles porque son tantos que cuesta recordarlos, pero mencionaré uno que de verdad me hizo morir de risa:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;…&lt;br&gt;
– ¡Oye, él se toma el café todas las mañanas donde la tía Vatsa!&lt;br&gt;
– ¿La tía Vatsa?&lt;br&gt;
– ¡Sí, hombre! En las tazas dizque dice tía Vatsa, y a lo mejor resulta que es lavAzza&lt;br&gt;
…&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Y así durante 4 horas enteras de humor de viejitos, que por momentos “te desgarra el diafragma y te bajas en Septemvri (la estación) para que te trasplanten uno nuevo”.&lt;/p&gt;
&lt;p&gt;Al final llegamos a Montana con una hora de retraso, pero una hora que pasó volando 🙂 Por eso, si viajan en un compartimento lleno de ancianos y hay al menos 2 abuelitos, no se lamenten: la fiesta está garantizada 😀&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Funny</category><category>Travel</category></item><item><title>¿Aquí?</title><link>https://bisko.be/es/posts/blog/post-2008-11-01/</link><guid isPermaLink="true">https://bisko.be/es/posts/blog/post-2008-11-01/</guid><description>La historia de un día extraño y de la compra de un hosting de DreamHost.</description><pubDate>Sat, 01 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ayer fue un día extraño…&lt;/p&gt;
&lt;p&gt;Por la mañana, aunque salí tarde y sin prisa, llegué al trabajo a tiempo. Al parecer el tráfico trabajaba a mi favor. El día, por su parte, siguió con normalidad hasta la una de la tarde más o menos, cuando Tsvetan me mandó un enlace a una promoción de DreamHost por su 11.º aniversario.&lt;br&gt;
La abrí y me puse a leer… con cada fila de la tabla de características del hosting, mis ojos se hacían más grandes y más codiciosos (hasta se me hizo agua la boca :D ).&lt;br&gt;
Enseguida quedó claro que era justo lo que buscaba y que lo iba a comprar, PERO surgió un problema: cómo pagar. Yo tengo una tarjeta con pagos electrónicos activados, pero sin dinero, y Tsvetan tiene dinero, pero no tiene pagos electrónicos. Chocamos contra una piedra… o más bien contra un granito.&lt;/p&gt;
&lt;p&gt;Siguiente paso: él me enviaría dinero por ePay.bg y yo pagaría. Todo perfecto, hasta que resulta que allí tengo un estatus de pringado y mi límite diario para recibir es de… 50 leva. Rápidamente me pongo a buscar cómo convertirme en usuario «conocido» y me quedo atónito con la información:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cómo pasar a un nivel superior&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para pasar al nivel “2”, “cliente conocido”, es necesario tener una tarjeta bancaria registrada en su perfil de usuario, con la que pague al menos 5 facturas de servicios como electricidad, agua, teléfono, calefacción, etc., a través del sistema (el pago de un servicio prepagado no se considera pago de una factura de servicios).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¡Vamos, hombre! Al menos 5 facturas de servicios… ¿qué tonterías son esas? ¿Acaso tengo una casa propia para pagar esas facturas? Puras estupideces. Si hubieran pedido una foto del documento de identidad o algo así, vale… pero esto es demasiado, sobre todo si necesitas transferir una cantidad de dinero ahora mismo, en el acto.&lt;/p&gt;
&lt;p&gt;Ya sentía cómo la promoción se nos escurría de las manos como un vaso enjabonado. Así que recurrimos a la opción más extrema: él ingresaría el dinero en Varna directamente en mi cuenta de Banco Postal y esperábamos que funcionara. Le doy mi IBAN y se va a hacer el ingreso. Me llama a los 25, 30, 40 minutos: «Ya transferí, dijeron que en 2 horas se reflejarán los cambios en la banca en línea». Naturalmente, al oír lo de las 2 horas me quedé atónito: todo iba a salir por los pelos. Esperé 15 larguíííísimos minutos, entré en e-postbank y, con unos OJAZOS así y la mandíbula por el suelo, vi que el dinero había llegado.&lt;/p&gt;
&lt;p&gt;Abro con fiebre el enlace que Tsvetan me había mandado un rato antes, con el carrito en Google Checkout, relleno mis datos, hago clic en Check out y listo… En ese momento en mi cabeza se agolpaban millones de interrogantes: cómo es posible que aquí no haya ninguna confirmación de la cuenta, como en Moneybookers o PayPal, que no pidan ningún retiro de sumas ni esas tonterías, sino que simplemente rellenas la información, haces clic en pagar y ya…&lt;/p&gt;
&lt;p&gt;Después le mandé un SMS diciendo que había pagado, agarré mi equipaje y me fui a la Estación Central para viajar a Montana. Allí me encontré con unos cuantos «compañeros de viaje», compramos los boletos y nos subimos al tren. Arrancamos, pero no podía esperar 3 horas más para saber si el pago realmente se había hecho, y llamé a Tsvetan, que confirmó que todo estaba normal. Eso me quitó un peso enorme de encima y respiré tranquilo.&lt;/p&gt;
&lt;p&gt;De este día salen 4 conclusiones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ePay son unos tacaños, igual que PayPal y Moneybookers.&lt;/li&gt;
&lt;li&gt;Banco Postal sigue reafirmando mi opinión de que es la elección correcta.&lt;/li&gt;
&lt;li&gt;Google, como de costumbre, la rompe con sus procedimientos sencillos.&lt;/li&gt;
&lt;li&gt;¡DreamHost me encanta! (solo que la subida de archivos ahí va fatal, pero de eso hablaré más adelante)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;P. D.: Maldita sea, ya le debo a Tsvetan 90 pavos :-D&lt;/p&gt;</content:encoded><category>blog</category><category>travel</category><category>random</category></item></channel></rss>