<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[*Leunam (es-MX)]]></title><description><![CDATA[Compartiendo conocimientos sobre programación, IA/ML, (F)OSS y demás. 15+ años de experiencia directa en casos reales de tech; ¡Bienvenidos!]]></description><link>https://es.leunam.me</link><image><url>https://substackcdn.com/image/fetch/$s_!LbXf!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc865cd99-8ca9-42e1-9804-6151a22368a0_1280x1280.png</url><title>*Leunam (es-MX)</title><link>https://es.leunam.me</link></image><generator>Substack</generator><lastBuildDate>Mon, 18 May 2026 04:39:22 GMT</lastBuildDate><atom:link href="https://es.leunam.me/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Manuel Escudero]]></copyright><language><![CDATA[es]]></language><webMaster><![CDATA[es+newsletter@leunam.me]]></webMaster><itunes:owner><itunes:email><![CDATA[es+newsletter@leunam.me]]></itunes:email><itunes:name><![CDATA[Manuel Escudero]]></itunes:name></itunes:owner><itunes:author><![CDATA[Manuel Escudero]]></itunes:author><googleplay:owner><![CDATA[es+newsletter@leunam.me]]></googleplay:owner><googleplay:email><![CDATA[es+newsletter@leunam.me]]></googleplay:email><googleplay:author><![CDATA[Manuel Escudero]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Privacidad sin límites: Crea tu propio chat cifrado con PidginChat y OMEMO (¡En solo 5 minutos!)]]></title><description><![CDATA[Tu propia alternativa a Signal sin necesidad de n&#250;mero de tel&#233;fono ni l&#237;mites en la cantidad de dispositivos enlazados. Control total desde GUI o Terminal.]]></description><link>https://es.leunam.me/p/mensajeria-cifrada-pidginchat-omemo</link><guid isPermaLink="false">https://es.leunam.me/p/mensajeria-cifrada-pidginchat-omemo</guid><dc:creator><![CDATA[Manuel Escudero]]></dc:creator><pubDate>Sat, 25 Oct 2025 02:05:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RY_A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RY_A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RY_A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RY_A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RY_A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RY_A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RY_A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2413112,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://es.leunam.me/i/176971197?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RY_A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RY_A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RY_A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RY_A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe225c22b-ee63-4041-b256-0ddaf0757481_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>En una &#233;poca en la que casi todos los mensajes que enviamos pasan por los servidores de alguna empresa, <strong>Signal</strong> se ha convertido en el est&#225;ndar de oro para comunicarse en privado pero&#8230; <strong>&#191;Qu&#233; es Signal y para qu&#233; se usa en todo el mundo?</strong> Bueno, Signal es una aplicaci&#243;n de mensajer&#237;a segura (gratuita y de c&#243;digo abierto) centrada en el cifrado de extremo a extremo (E2E). Es ampliamente utilizada por periodistas, activistas, equipos t&#233;cnicos y cualquiera que desee proteger sus conversaciones de proveedores, operadores y atacantes en redes p&#250;blicas. Ofrece llamadas y mensajes encriptados, verificaci&#243;n de n&#250;meros de seguridad entre contactos y un dise&#241;o limpio que populariz&#243; la mensajer&#237;a cifrada <em>end-to-end</em> a escala global.</p><p>Signal se ha ganado su reputaci&#243;n a pulso: Democratiz&#243; el cifrado E2E para mensajes con una interfaz limpia, la transparencia propia del c&#243;digo abierto y el algoritmo <strong>Double Ratchet</strong> que cambi&#243; para siempre la mensajer&#237;a segura.</p><p><strong>Pero incluso Signal tiene sus limitantes, algunas de ellas son: </strong></p><ul><li><p><strong>L&#237;mite de 5 dispositivos</strong> vinculados (lo que podr&#237;a resultar particularmente frustrante para usuarios multi-dispositivo)</p></li><li><p><strong>Servidores centralizados:</strong> Dependes completamente de la infraestructura de Signal. </p></li><li><p><strong>Identidad basada en n&#250;mero de tel&#233;fono</strong>, lo que complica el anonimato</p></li></ul><p>Para m&#237;, el primer punto fue el factor decisivo. Necesitaba algo que pudiera: </p><ul><li><p>Usar en tantos dispositivos como quisiera/necesitara</p></li><li><p>Operar desde una interfaz de texto (por ejemplo, en servidores)</p></li><li><p>Y aun as&#237; mantener un cifrado al nivel de Signal</p></li></ul><p>Fue entonces cuando redescubr&#237; el protocolo <strong>XMPP</strong>, espec&#237;ficamente a trav&#233;s de <strong>PidginChat</strong> + <strong>OMEMO</strong>, lo que me anim&#243; a escribir este art&#237;culo sobre mi configuraci&#243;n y c&#243;mo replicarla, adem&#225;s de algunas variantes y otra informaci&#243;n &#250;til. Sin m&#225;s, &#161;Vamos a ello!</p><h3>&#129513; Bajo el Cap&#243;: XMPP (feat. PidginChat) + OMEMO</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2LGq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2LGq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2LGq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2LGq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2LGq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2LGq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2533310,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://es.leunam.me/i/176971197?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2LGq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2LGq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2LGq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2LGq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dfec21c-740c-45fe-b70f-812b5908bfeb_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>XMPP: La columna vertebral de la mensajer&#237;a abierta</strong></p><p><strong>XMPP</strong> (Protocolo Extensible de Mensajer&#237;a y Presencia) es un est&#225;ndar abierto para mensajer&#237;a: el mismo protocolo que impuls&#243; <strong>Google Talk</strong> y <strong>Facebook Chat</strong> en sus inicios... Es federado tal y como el correo electr&#243;nico: cualquiera puede alojar un servidor, y los servidores se comunican entre s&#237;.</p><p><strong>OMEMO: Seguridad de Nivel Signal, Federada</strong></p><p><strong>OMEMO</strong> es una capa de cifrado para XMPP que implementa el mismo algoritmo <strong>Double Ratchet </strong>usado por Signal. Ofrece soporte para mensajes offline, sincronizaci&#243;n multi-dispositivo y <em>secreto hacia adelante</em>.</p><p><strong>&#191;Qu&#233; es el secreto hacia adelante?</strong> Tambi&#233;n conocido como <em>secreto perfecto hacia adelante</em>, b&#225;sicamente se trata de una implementaci&#243;n criptogr&#225;fica que significa que si una llave de cifrado a largo plazo se comprometiera hoy, tus mensajes pasados seguir&#237;an protegidos; <strong>OMEMO/Double Ratchet</strong> rota constantemente las claves y descarta las antiguas; cada mensaje (o lote de mensajes) est&#225; protegido con material criptogr&#225;fico fresco y ef&#237;mero.</p><div class="pullquote"><p>En otras palabras: OMEMO nos habilita la misma criptograf&#237;a estrella de Signal, sin necesidad de depender o estar en el servidor de Signal.</p></div><h2>&#128156; Pidgin &amp; PidginChat</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rnVJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rnVJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rnVJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rnVJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rnVJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rnVJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2057732,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://es.leunam.me/i/176971197?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rnVJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rnVJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rnVJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rnVJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85b91389-ee75-42bc-9abb-4a0ee17bdae3_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Pidgin</strong> es uno de los clientes de chat de c&#243;digo abierto m&#225;s antiguos y respetados. Naci&#243; a principios de los 2000 como <strong>Gaim</strong>, y evolucion&#243; a lo que conocemos hoy como una aplicaci&#243;n multiprotocolo impulsada por <strong>libpurple</strong>, una biblioteca basada en plugins que soporta docenas de protocolos de mensajer&#237;a (IRC, XMPP, ICQ y m&#225;s). Para muchos usuarios de <strong>GNU/Linux</strong>, Pidgin fue (y se mantiene) esencial para hablar con personas que tienen presencia en diferentes redes de mensajer&#237;a (propietarias y libres por igual)</p><p><strong>PidginChat</strong> por su parte es un servicio XMPP moderno alojado y gestionado por la comunidad que mantiene Pidgin. Utiliza un servidor XMPP ligero  al que cualquiera puede unirse, lo que lo hace perfecto si quieres una red lista para usar en un &#225;mbito similar a Signal tras establecer el cifrado adecuado (sin tener que montar tu propio servidor desde un inicio)</p><p><strong>Registro r&#225;pido en PidginChat</strong></p><blockquote><p>Corto y conciso: Ve a <a href="https://pidgin.im/about/pidginchat/">https://pidgin.im/about/pidginchat/</a> y sigue las instrucciones.</p><p>Elaborando:</p><p>B&#225;sicamente, tendr&#225;s que crear una cuenta en su instancia de <strong>JetBrains Hub</strong> (https://hub.imfreedom.org/) iniciando sesi&#243;n con tu m&#233;todo preferido; eso crear&#225; tu cuenta <strong>PidginChat</strong> autom&#225;ticamente (podr&#225;s ajustar tu nombre de usuario asignado despu&#233;s ah&#237; mismo en su interfaz web)</p><p>Anota tu direcci&#243;n <strong>XMPP (JID)</strong>: se ve como <em>usuario@pidginchat.com </em>donde <strong>usuario</strong> se refiere al nombre de usuario asignado en la instancia de Jetbrains Hub.</p><p>&#218;sala para iniciar sesi&#243;n con cualquier cliente XMPP: te recomendar&#233; algunos a continuaci&#243;n.</p></blockquote><div class="pullquote"><p>Toma en cuenta: Puedes registrarte con un correo desechable y/o un seud&#243;nimo. Tambi&#233;n podr&#225;s anonimizar tu JID eliminando metadatos en el panel de JetBrains Hub (tras el registro) o, si prefieres, puedes migrar m&#225;s tarde a tu propio servidor como ya coment&#233; arriba.</p></div><h2>&#128421;&#65039; Clientes de XMPP: Elige Tu Plataforma</h2><p>No hay una talla &#250;nica: Elige el que mejor se adapte a tu flujo de trabajo:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PHPz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PHPz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PHPz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PHPz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PHPz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PHPz!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg" width="1200" height="670.8791208791209" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:814,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:198001,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://es.leunam.me/i/176971197?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PHPz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PHPz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PHPz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PHPz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10a6d19d-c38a-4aad-beb6-40d16b7e925b_1609x900.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Mi Caso Particular: Mensajer&#237;a Segura Entre Servidores</strong></h3><p>Comenc&#233; a investigar sobre este tema porque quer&#237;a encontrar alguna opci&#243;n para establecer un chat con cifrado E2E por l&#237;nea de comandos entre servidores en mi VPN/LAN. Sin interfaz gr&#225;fica: s&#243;lo la terminal.</p><p>Eso me llev&#243; a encontrar <strong>Profanity</strong>, un cliente XMPP por TUI (terminal user interface) que soporta OMEMO una vez que lo compilas correctamente con el debido plugin. Nos desviaremos un poco por esta tangente (si&#233;nte libre de <a href="https://es.leunam.me/i/176971197/opcional-aloja-tu-propio-servidor-xmpp">saltar esta secci&#243;n</a> si as&#237; lo deseas) y aqu&#237; pondr&#233; la gu&#237;a de c&#243;mo exactamente lo hice funcionar con las librer&#237;as de <strong>Homebrew</strong> en <strong>AlmaLinux 10</strong>; una distribuci&#243;n GNU/Linux compatible con <strong>Red Hat Enterprise Linux (RHEL) 10.x</strong> y otros de sus derivados como <strong>RockyLinux</strong>, por ejemplo. </p><p><em>Veamos&#8230;</em></p><p><strong>C&#243;mo Instalar Profanity con Soporte OMEMO en AlmaLinux 10 (y compatibles)</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kIB4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kIB4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!kIB4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!kIB4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!kIB4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kIB4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png" width="768" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89278741-9a62-4a38-8d24-08beca363d61_768x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:768,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54955,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://es.leunam.me/i/176971197?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kIB4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!kIB4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!kIB4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!kIB4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89278741-9a62-4a38-8d24-08beca363d61_768x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Atribuci&#243;n de la imagen: <a href="https://lowendbox.com/blog/what-really-are-the-differences-between-rhel-alma-and-rocky-linux/">LowEndBox</a></figcaption></figure></div><p><strong>Profanity</strong> es un cliente XMPP r&#225;pido y minimalista con soporte para OMEMO, OTR y PGP. Compilarlo con todas las dependencias en una distro moderna tipo RHEL (AlmaLinux 10 como ejemplo) puede ser complicado, es por eso que aqu&#237; documento un proceso reproducible de manera que quede como referencia para la posteridad.</p><blockquote><p><em><strong>NOTA: </strong>Los comandos que ver&#225;s a continuaci&#243;n est&#225;n descritos para ser ejecutados en un shell de <strong>bash</strong></em></p></blockquote><p><strong>Paso 1: Preparar el Sistema Base</strong></p><p>Instala las herramientas de desarrollo y cabeceras del kernel:</p><pre><code><code>sudo dnf -y groupinstall "Development Tools"
sudo dnf -y install glibc-devel glibc-headers libstdc++-devel binutils kernel-headers pkgconf-pkg-config</code></code></pre><p>Esto asegura que podamos crear ejecutables con <strong>/usr/bin/gcc</strong> (de lo contrario el paso de <em>configure</em> podr&#237;a fallar con un mensaje del tipo: <code>&#8220;C compiler cannot create executables&#8221;</code>).</p><p><strong>Paso 2:  Instalar Linuxbrew / Homebrew (si no lo tuvieras ya instalado)</strong></p><pre><code><code>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</code></code></pre><p>El script explica lo que har&#225; y se pausa antes de hacerlo. Despu&#233;s de la instalaci&#243;n, a&#241;ade brew a tu PATH (el mismo STDOUT tras la instalaci&#243;n te dar&#225; las instrucciones para hacerlo) e instala <strong>gcc</strong> desde sus repositorios con:</p><pre><code><code>brew install gcc</code></code></pre><p><strong>Paso 3: Instalar Dependencias v&#237;a Linuxbrew</strong></p><pre><code><code>brew install autoconf automake libtool pkgconf autoconf-archive readline ncurses glib curl libxml2 openssl@3 sqlite libstrophe libsignal-protocol-c libgcrypt libgpg-error</code></code></pre><p>Esto trae las librer&#237;as que Profanity necesita para OMEMO y m&#225;s (ncurses, criptograf&#237;a, XMPP, etc.).</p><p><strong>Paso 4: Asegurarse de que pkg-config Encuentra GLib</strong></p><p>Algunas instalaciones necesitan pistas expl&#237;citas para los archivos <code>.pc</code> de GLib:</p><pre><code><code>export PKG_CONFIG_PATH="$(brew --prefix)/lib/pkgconfig:$(brew --prefix)/share/pkgconfig:$(brew --cellar glib)/*/lib/pkgconfig:$(brew --cellar glib)/*/share/pkgconfig:${PKG_CONFIG_PATH:-}"</code></code></pre><p>Prueba:</p><pre><code><code>pkg-config --modversion glib-2.0</code></code></pre><blockquote><p>Esperado: 2.xx.x</p></blockquote><p>Si ves <code>&#8220;not found&#8221;</code>:</p><pre><code><code>brew reinstall pkgconf</code></code></pre><p><strong>Paso 5: Preparar Flags de build con las rutas de brew</strong></p><pre><code><code>RLB="$(brew --prefix readline)" 
NCB="$(brew --prefix ncurses)" 
GCR="$(brew --prefix libgcrypt)" 
GGE="$(brew --prefix libgpg-error)" 
SIG="$(brew --prefix libsignal-protocol-c)" 
GLB="$(brew --prefix glib)" 
HB="$(brew --prefix)"

export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
unset CFLAGS CXXFLAGS LIBRARY_PATH CPATH

export CPPFLAGS="-I$RLB/include -I$NCB/include -I$GCR/include -I$GGE/include -I$SIG/include -I$GLB/include/glib-2.0 -I$GLB/lib/glib-2.0/include"

export LDFLAGS="-L$RLB/lib -L$NCB/lib -L$GCR/lib -L$GGE/lib -L$SIG/lib -L$GLB/lib -Wl,-rpath,$HB/lib -Wl,-rpath,$NCB/lib -Wl,-rpath,$GCR/lib -Wl,-rpath,$GGE/lib -Wl,-rpath,$RLB/lib -Wl,-rpath,$SIG/lib -Wl,-rpath,$GLB/lib"</code></code></pre><p>Esto ayuda a que el paso de <em>configure</em> encuentre:</p><ul><li><p>libsignal-protocol-c</p></li><li><p>libgcrypt + libgpg-error</p></li><li><p>readline + ncurses</p></li><li><p>GLib</p></li></ul><p><strong>Paso 6: Obtener el C&#243;digo Fuente de Profanity</strong></p><pre><code><code>cd ~

[ -d profanity ] &amp;&amp; (cd profanity &amp;&amp; git fetch -p &amp;&amp; git reset --hard origin/master) || git clone https://github.com/profanity-im/profanity

cd profanity

git clean -xfd
rm -f config.cache</code></code></pre><p><strong>Paso 7: Inicializar el Sistema de build</strong></p><pre><code><code>./bootstrap.sh</code></code></pre><p>Esto genera <em>configure</em> y otros archivos v&#237;a <strong>autotools</strong>.</p><p><strong>Paso 8: Configurar con Soporte OMEMO</strong></p><p>A&#241;ade estos flags extra para tratar de evitar una advertencia com&#250;n de cURL que parece ahorita est&#225; afectando el build de profanity (podr&#237;a ser arreglado despu&#233;s por la comunidad):</p><pre><code><code>LIBS="$(pkg-config --libs libsignal-protocol-c) -lgpg-error -lgcrypt -lncursesw -lreadline" 
CFLAGS="-Wno-error -Wno-error=attribute-warning" 
CXXFLAGS="-Wno-error -Wno-error=attribute-warning"

./configure --enable-omemo --prefix="$HOME/.local"</code></code></pre><p><strong>Paso 9: Compilar</strong></p><pre><code><code>make -j"$(nproc)"</code></code></pre><div class="pullquote"><p>&#191;Tuviste un error de cURL como <strong>curl_easy_setopt espera un argumento long</strong>? Aplica este peque&#241;o parche y recompila:</p></div><pre><code><code>sed -i 's/\(CURLOPT_TIMEOUT,\s*\)2)/\12L)/' src/common.c
make clean
make -j"$(nproc)"</code></code></pre><p><strong>Paso 10: Instalar y Validar</strong></p><p>Si ya no hubo errores, podemos instalar profanity a nivel usuario y validar al mismo tiempo con:</p><pre><code><code>make install
~/.local/bin/profanity -v</code></code></pre><blockquote><p>Esperado:</p><p><em>Profanity 0.15.x</em></p><p><em>Caracter&#237;sticas: OMEMO, libsignal-protocol-c, ncurses, readline</em></p></blockquote><p>&#161;Listo! Profanity est&#225; instalado! In&#237;cialo con:</p><pre><code><code>~/.local/bin/profanity</code></code></pre><p><strong>Soluci&#243;n Com&#250;n de Problemas</strong></p><p><em>Te lo resumo en una tabla:</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lb7u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lb7u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lb7u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lb7u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lb7u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lb7u!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg" width="1200" height="318.95604395604397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:387,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:121697,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://es.leunam.me/i/176971197?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lb7u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lb7u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lb7u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lb7u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4845c997-e0e5-46a7-b806-b53a0c706237_1745x464.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p>Volviendo al tema principal&#8230;</p></div><h2>&#129517; (Opcional) Aloja Tu Propio Servidor XMPP</h2><p>Es posible (y a menudo recomendado) alojar tu propio servidor XMPP (por ejemplo, usando <strong>prosody</strong> o <strong>ejabberd</strong>); Haciendo esto, controlas los metadatos, las pol&#237;ticas de retenci&#243;n y la ubicaci&#243;n f&#237;sica del servicio, as&#237; como su disponibilidad, acceso, reglas y funciones. En un tutorial posterior exploraremos la configuraci&#243;n paso a paso de un servidor XMPP <em>self-hosted</em> para los que tengan curiosidad sobre el tema.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://es.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">(&#161;Suscr&#237;banse gratis para no perd&#233;rselo! &#128521;)</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>&#128272; Entonces&#8230; &#191;Qu&#233; Tan Seguro Es Esto?</h2><p>Seamos claros y transparentes:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2IKD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2IKD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2IKD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2IKD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2IKD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2IKD!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg" width="1200" height="464.83516483516485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:564,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:125976,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://es.leunam.me/i/176971197?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2IKD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2IKD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2IKD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2IKD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ffb45d-c7c7-4f08-9c3e-90beed597a25_1747x677.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>La criptograf&#237;a entre ambas opciones es equivalente, pero la privacidad en el mundo real depende de d&#243;nde (y c&#243;mo) se aloje tu servidor. Si te auto-alojas o usas un proveedor confiable, obtienes una seguridad muy cercana a la de Signal sin centralizaci&#243;n.</p><p><strong>Algunos consejos adicionales (y un tanto b&#225;sicos) de privacidad</strong></p><blockquote><p><strong>Reg&#237;strate con un seud&#243;nimo</strong>; Aprovecha que a diferencia de Signal, por ejemplo en este caso PidginChat no requiere n&#250;mero de tel&#233;fono. </p><p><strong>Elimina los datos del vCard</strong> que se genere en la instancia de JetBrains Hub (si optas por configurar con PidginChat) y/o cambia tu JID m&#225;s tarde. </p><p><strong>Considera usar una VPN</strong> al realizar tu registro en el hub para mayor privacidad. </p><p><strong>Si tu cliente lo permite</strong>, fuerza TLS y config&#250;ralo para usar el puerto <strong>443</strong> en lugar del puerto predeterminado (me parece que es el <strong>5222</strong>) para conectarse. Ojo, esto no interfiere con otros procesos corriendo en tu dispositivo cliente.</p></blockquote><p><strong>Adicional: Verificaci&#243;n de Huellas OMEMO</strong></p><p>Como Signal, OMEMO usa huellas por dispositivo. Para evitar ataques <em>man-in-the-middle</em>, verifica las huellas con tus contactos. En casi cualquier cliente de XMPP encontrar&#225;s detalles OMEMO en la informaci&#243;n del contacto. Compara dichas huellas fuera de banda (es decir, a trav&#233;s de un canal confiable distinto al mensajero como una llamada de tel&#233;fono o intercambiando un c&#243;digo QR); Una vez verificadas, marca el dispositivo manualmente como confiable. </p><p>Ahora bien, por practicidad puedes permitir la <em>confianza ciega</em> entre dispositivos (muchos clientes de XMPP por defecto hacen esto, de manera que no tengas que verificar las llaves manualmente antes de empezar a conversar para no generar fricciones) pero de todos modos, siempre es bueno revisar de una forma u otra sus huellas criptogr&#225;ficas. </p><p>De igual manera, es muy com&#250;n que los clientes de XMPP tengan un &#237;cono o indicaci&#243;n (usualmente un &#237;cono de candado en clientes gr&#225;ficos, o el estatus de OMEMO en clientes de texto) dentro de la ventana de conversaci&#243;n para se&#241;alizar si dicha conversaci&#243;n est&#225; siendo cifrada de punta a punta o no; Siempre revisa la interfaz de usuario: Verifica que el indicador (gr&#225;fico o no) se&#241;ale que el cifrado est&#225; habilitado.</p><div class="pullquote"><p>Mientras el cifrado est&#233; habilitado, los mensajes son protegidos E2E y est&#225;n autenticados.</p></div><h2>&#129488; Reflexiones finales</h2><p>No vengo a afirmar a la ligera que esta configuraci&#243;n sea m&#225;s segura que Signal; Signal sigue siendo insuperable por su simplicidad y efecto de red (mucha gente lo usa); Pero configurar XMPP + OMEMO es un tipo diferente de seguridad: un escenario donde tu puedes poseer la infraestructura (tu propio server) y esto trae libertades como: </p><ul><li><p>Chatear en privado dentro de tu propia red (o incluso contigo mismo para pasar mensajes entre dispositivos)</p></li><li><p>Dependiendo de la plataforma, integrar con scripts de automatizaci&#243;n</p></li><li><p>Conectar cualquier n&#250;mero de dispositivos</p></li><li><p>Ejecutar un sistema de chat que nunca est&#233; enviando telemetr&#237;a a terceros</p></li></ul><p><strong>Signal</strong> nos dio mensajer&#237;a cifrada f&#225;cil de usar. <strong>XMPP + OMEMO</strong> nos da cifrado soberano: La capacidad de controlar, alojar y entender todo lo que comprende tu stack de comunicaciones. Puedes comenzar f&#225;cil con <strong>PidginChat</strong> y evolucionar a un servicio <strong>auto-hospedado</strong> m&#225;s adelante.</p><div class="pullquote"><p>Esta configuraci&#243;n representa privacidad por dise&#241;o y autonom&#237;a por arquitectura.</p></div><h2>&#128736;&#65039; Herramientas Mencionadas </h2><ul><li><p><strong>PidginChat</strong>: <a href="https://pidgin.im/about/pidginchat">https://pidgin.im/about/pidginchat</a> </p></li><li><p> <strong>Gajim</strong>: <a href="https://gajim.org/">https://gajim.org</a></p></li><li><p> <strong>Monal</strong>: <a href="https://monal-im.org">https://monal-im.org</a></p></li><li><p> <strong>Converse.js</strong>: <a href="https://conversejs.org/">https://conversejs.org</a></p></li><li><p><strong> Conversations</strong>: <a href="https://conversations.im/">https://conversations.im</a></p></li><li><p> <strong>Profanity</strong>: <a href="https://profanity-im.github.io/">https://profanity-im.github.io</a></p></li><li><p><strong>Homebrew</strong>: <a href="https://brew.sh/">https://brew.sh</a></p></li></ul><p>&#161;Hasta la pr&#243;xima! No olviden suscribirse y compartir.</p>]]></content:encoded></item><item><title><![CDATA[Los archivos .BAT en Linux]]></title><description><![CDATA[Aprende a ejecutar archivos .BAT en Linux y creaci&#243;n de scripts Bash (.sh) para automatizar tareas.]]></description><link>https://es.leunam.me/p/los-archivos-bat-en-linux</link><guid isPermaLink="false">https://es.leunam.me/p/los-archivos-bat-en-linux</guid><dc:creator><![CDATA[Manuel Escudero]]></dc:creator><pubDate>Sat, 05 Oct 2024 21:06:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O_JG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O_JG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!O_JG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!O_JG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!O_JG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O_JG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg" width="1280" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:186520,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O_JG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!O_JG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!O_JG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!O_JG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e36bb4a-fe68-495b-b02e-fdb6bec733c4_1280x853.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p><strong>Nota del autor:</strong> Este art&#237;culo es una versi&#243;n actualizada de una publicaci&#243;n de mi blog anterior. Aunque su enfoque podr&#237;a diferir (en cierta medida) de la l&#237;nea editorial actual de esta publicaci&#243;n, lo comparto por su valor informativo. Espero que te sea &#250;til y agradezco mucho tu atenci&#243;n. &#161;Saludos!</p></div><h2>Introducci&#243;n</h2><p>Una pregunta com&#250;n entre los usuarios que migran de <strong>Windows</strong> a <strong>Linux</strong> es: &#8220;<em>&#191;C&#243;mo puedo ejecutar archivos .bat en Linux?&#8221;</em>; En Windows, los archivos <strong>.bat</strong> permiten automatizar tareas ejecutando una serie de comandos secuenciales. En Linux, el equivalente funcional son los archivos <strong>.sh</strong>, tambi&#233;n conocidos como scripts de <strong>Bash</strong>.</p><p>En este art&#237;culo, te explicar&#233; c&#243;mo ejecutar archivos .bat en Linux utilizando <strong>Wine</strong> y te ense&#241;ar&#233; a crear y usar scripts .sh para automatizar tareas en tu sistema Linux.</p><h2>Ejecutar archivos .BAT directamente en Linux</h2><p><strong>Usando Wine</strong></p><p>Wine es una capa de compatibilidad que te permite ejecutar programas y scripts de Windows en sistemas Linux. Aunque no siempre es perfecto, Wine puede ejecutar muchos archivos .bat.</p><p><strong>Instalaci&#243;n de Wine</strong></p><p>Para instalar Wine en sistemas basados en <strong>Debian/Ubuntu</strong>, ejecuta:</p><pre><code><code>sudo apt-get install wine</code></code></pre><p>Para <strong>Fedora/CentOS</strong>, utiliza:</p><pre><code><code>sudo dnf install wine</code></code></pre><p><strong>Ejecutar archivos .BAT con Wine</strong></p><p>Una vez instalado Wine, puedes ejecutar un archivo .bat con el siguiente comando:</p><pre><code><code>wine cmd /c archivo.bat</code></code></pre><p>Este comando ejecutar&#225; el archivo .bat dentro de una consola simulada de Windows en Linux.</p><p><strong>Limitaciones de Wine</strong></p><ul><li><p><strong>Compatibilidad:</strong> Wine no garantiza que todos los programas o scripts de Windows funcionen perfectamente.</p></li><li><p><strong>Alternativas:</strong> Si Wine no puede ejecutar tu archivo .bat, considera reescribirlo como un script .sh o prueba otras herramientas, como <strong>PlayOnLinux</strong> o <strong>Proton</strong>, para aplicaciones m&#225;s complejas (ten en cuenta que el resultado esperado no es garantizado solo por usar diferentes herramientas de compatibilidad)</p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://es.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><strong>*Leunam (es-MX)</strong> es una publicaci&#243;n apoyada por lectores. Para recibir nuevos posts y apoyar mi trabajo, considera convertirte en suscriptor de contenido gratis o suscriptor de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>El equivalente en Linux: Archivos .sh</h2><p><strong>&#191;Qu&#233; es un script de Bash?</strong></p><p>Un archivo <strong>.sh</strong> es un script de <strong>Bash</strong>, que es un conjunto de comandos que se ejecutan secuencialmente. Estos scripts te permiten automatizar tareas en Linux de forma similar a los archivos <strong>.bat</strong> de Windows, pero con mayor flexibilidad.</p><p><strong>Crear un script .sh</strong></p><p>Elige un editor de texto: Puedes crear tu script .sh con cualquier editor de texto. Algunas opciones populares son:</p><p><strong>Nano</strong> (simple y disponible en la mayor&#237;a de distribuciones):</p><pre><code><code>nano script.sh</code></code></pre><p><strong>Vim</strong> (m&#225;s avanzado):</p><pre><code><code>vim script.sh</code></code></pre><p><strong>Gedit</strong> (interfaz gr&#225;fica, similar al Bloc de Notas en Windows):</p><pre><code><code>gedit script.sh</code></code></pre><p><strong>Escribir el script</strong></p><p><strong>Shebang (#!/bin/bash)</strong>: esta l&#237;nea debe ir al principio del archivo. Le indica al sistema que ejecute el script usando Bash.</p><pre><code><code>#!/bin/bash</code></code></pre><p><strong>Estructura b&#225;sica</strong></p><p>Aqu&#237; tienes un ejemplo sencillo de un script que actualiza el sistema e instala dos programas:</p><pre><code>#!/bin/bash
sudo apt-get update &amp;&amp; sudo apt-get upgrade
sudo apt-get install programa1 programa2</code></pre><p><strong>Ejemplo interactivo</strong></p><p>Los scripts .sh tambi&#233;n pueden interactuar con el usuario, solicitando entradas (inputs). Aqu&#237; tienes un ejemplo de script interactivo:</p><pre><code>#!/bin/bash
echo "&#191;Cu&#225;l es tu nombre?"
read nombre
echo "Hola, $nombre! Este es un ejemplo de script interactivo."</code></pre><p>Este script le pide al usuario que introduzca su nombre y luego lo imprime en la terminal.</p><p><strong>Comparaci&#243;n de sintaxis entre .bat y .sh</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PzJN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PzJN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PzJN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PzJN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PzJN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PzJN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg" width="1047" height="376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:376,&quot;width&quot;:1047,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99902,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PzJN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PzJN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PzJN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PzJN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff96907d1-13e6-48ff-94e3-db0aea1a884a_1047x376.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Guardar el archivo</strong></p><p>Guarda el archivo con la extensi&#243;n <code>.sh</code>, por ejemplo: <code>instalador.sh</code></p><p><strong>Hacer el script ejecutable</strong></p><p>Para ejecutar el archivo, primero debes darle permisos de ejecuci&#243;n con el siguiente comando:</p><pre><code>chmod +x instalador.sh</code></pre><p>Tambi&#233;n puedes hacerlo gr&#225;ficamente: ve a las propiedades del archivo, selecciona la pesta&#241;a de <strong>&#171;Permisos&#187;</strong> y marca la casilla que dice <strong>&#171;Permitir ejecutar como programa&#187;</strong>.</p><p><strong>Ejecutar el script</strong></p><p>Existen dos formas de ejecutar el script:</p><p>1. Desde la terminal:</p><pre><code>./instalador.sh</code></pre><p>2. Usar Bash directamente:</p><pre><code>bash instalador.sh</code></pre><p>La diferencia es que el comando <code>./instalador.sh</code> requiere que el archivo sea ejecutable, mientras que el script <code>bash instalador.sh</code> puede ejecutar el archivo sin permisos especiales.</p><h2>Conceptos b&#225;sicos de scripting</h2><p><strong>Variables</strong></p><p>Las variables te permiten almacenar valores que puedes usar m&#225;s tarde:</p><pre><code>nombre="Mundo"
echo "Hola, $nombre!"</code></pre><p><strong>Condicionales</strong></p><p>Puedes ejecutar comandos basados en condiciones:</p><pre><code>if [ -f archivo.txt ]; then
  echo "El archivo existe"
else
  echo "El archivo no existe"
fi</code></pre><p><strong>Bucles (Loops)</strong></p><p>Usa bucles (loops) para ejecutar comandos repetidamente:</p><pre><code>for i in {1..5}
do
   echo "N&#250;mero $i"
done</code></pre><p><strong>Ejemplos pr&#225;cticos de scripts</strong></p><p><em>Script para actualizar el sistema:</em></p><pre><code>#!/bin/bash
sudo apt-get update &amp;&amp; sudo apt-get upgrade</code></pre><p><em>Script para hacer copias de seguridad (backups): </em></p><pre><code>#!/bin/bash
tar -czvf backup.tar.gz /ruta/a/copiar</code></pre><p><em>An&#225;lisis de registros (logs):</em></p><pre><code>#!/bin/bash
grep "error" /var/log/syslog &gt; errores.txt</code></pre><h2><strong>T&#243;picos avanzados</strong></h2><p><strong>Depuraci&#243;n (debugging) de scripts</strong></p><p>Puedes ejecutar un script en modo de depuraci&#243;n con el par&#225;metro <code>-x</code>:</p><pre><code>bash -x script.sh</code></pre><p>Esto mostrar&#225; cada comando que se ejecute y te ayudar&#225; a encontrar errores.</p><p>Adem&#225;s, puedes utilizar <code>set -e</code> en tus scripts. Este comando hace que el script se detenga inmediatamente si ocurre alg&#250;n error:</p><pre><code>#!/bin/bash
set -e
sudo apt-get update
sudo apt-get install programa1</code></pre><p><strong>Variables de entorno</strong></p><p>Las variables de entorno permiten definir configuraciones globales:</p><pre><code>export PATH=$PATH:/nueva/ruta</code></pre><p><strong>Programar tareas con Cron</strong></p><p>Puedes hacer que tu script se ejecute autom&#225;ticamente usando <strong>crontab</strong>:</p><p>1. Edita la crontab con:</p><pre><code>crontab -e</code></pre><p>2. Agrega esta l&#237;nea para ejecutar tu script todos los d&#237;as a las 8:00:</p><pre><code>0 8 * * * /ruta/al/script.sh</code></pre><h2>Troubleshooting: Errores comunes</h2><p><strong>Permisos incorrectos</strong></p><p>Si obtienes un error como <strong>&#171;Permiso denegado&#187;</strong>, aseg&#250;rate de haber dado permisos de ejecuci&#243;n a tu script:</p><pre><code>chmod +x script.sh</code></pre><p><strong>Errores de sintaxis</strong></p><p>Si ves errores como <strong>&#171;command not found&#187;</strong>, revisa la sintaxis del script. Aseg&#250;rate de que todos los comandos est&#233;n bien escritos y de que las rutas sean correctas.</p><p><strong>Problemas con sudo</strong></p><p>Si tu script falla al ejecutar comandos con <strong>sudo</strong>, aseg&#250;rate de que el usuario tenga los permisos adecuados o ejecuta el script completo como <em>superusuario </em>(root):</p><pre><code>sudo ./script.sh</code></pre><h2>Buenas pr&#225;cticas y seguridad</h2><p><strong>Uso de &#171;sudo&#187; en scripts</strong></p><p>Usa sudo solo cuando sea necesario. Si todo el script requiere permisos de <em>superusuario</em>, puedes ejecutarlo as&#237;:</p><pre><code>sudo ./instalador.sh</code></pre><p><strong>Validaci&#243;n de entradas (inputs)</strong></p><p>Es importante validar las entradas (inputs) que recibe tu script para evitar errores o problemas de seguridad. Aqu&#237; tienes un ejemplo de c&#243;mo validar la entrada del usuario:</p><pre><code>#!/bin/bash
read -p "Introduce tu edad: " edad
if ! [[ "$edad" =~ ^[0-9]+$ ]]; then
   echo "Error: Debes ingresar un n&#250;mero v&#225;lido." &gt;&amp;2
   exit 1
fi
echo "Tu edad es: $edad"</code></pre><p>Este script comprueba que la entrada sea un n&#250;mero v&#225;lido antes de continuar.</p><p><strong>Permisos de archivos</strong></p><p>Aseg&#250;rate de que tus scripts tengan los permisos adecuados. Usa <strong>chmod</strong> para darles los permisos correctos:</p><pre><code>chmod 755 script.sh</code></pre><p><strong>Herramientas de l&#237;nea de comandos &#250;tiles para la creaci&#243;n de scripts</strong></p><p>Cuando trabajes con scripts, estas herramientas de l&#237;nea de comandos pueden serte de gran utilidad:</p><ul><li><p><strong>grep</strong>: te permite buscar patrones en archivos.</p></li><li><p><strong>sed</strong>: es &#250;til para hacer sustituciones y ediciones en archivos de texto.</p></li><li><p><strong>awk</strong>: te ayuda a procesar y extraer datos de archivos.</p></li></ul><h2>Glosario</h2><ul><li><p><strong>Shebang</strong>: l&#237;nea al principio de un script que indica al sistema qu&#233; int&#233;rprete debe usar (&#161;Existen varios int&#233;rpretes o shells; <strong>bash</strong>, <strong>dash</strong>, <strong>zsh</strong>, <strong>fish</strong>, <strong>nushell</strong>, etc&#233;tera)</p></li><li><p><strong>chmod</strong>: Comando para cambiar los permisos de un archivo.</p></li><li><p><strong>Cron</strong>: Herramienta para programar la ejecuci&#243;n de comandos en intervalos de tiempo regulares</p></li><li><p><strong>Variable</strong>: contenedor que almacena valores para usar dentro de un script</p></li><li><p><strong>Depuraci&#243;n</strong>: proceso de identificaci&#243;n y correcci&#243;n de errores en un script</p></li></ul><h2>Conclusi&#243;n</h2><p>Los scripts .sh son una herramienta poderosa que te permite automatizar una amplia variedad de tareas en Linux. Ahora que conoces lo b&#225;sico y algunos temas avanzados, te invito a seguir explorando y practicando. &#161;Pronto estar&#225;s escribiendo scripts que te ahorrar&#225;n mucho tiempo!</p><p><strong>Recursos adicionales</strong></p><ul><li><p><a href="https://www.gnu.org/software/bash/manual/bash.html">Manual (Documentaci&#243;n) de Bash</a></p></li><li><p><a href="https://tldp.org/LDP/Bash-Beginners-Guide/html/">Bash Guide for beginners</a></p></li><li><p><a href="https://www.learnshell.org/">Learn Shell: Tutorial Interactivo en l&#237;nea</a></p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://es.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><strong>*Leunam (es-MX) </strong>es una publicaci&#243;n respaldada por su comunidad de lectores. Si quieres recibir nuevas publicaciones y apoyar mi trabajo, te invito a unirte como suscriptor gratuito o de pago. Tu apoyo me permite seguir creando contenido valioso y en profundidad.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[De vuelta a la escritura: Mi nuevo capítulo en Substack]]></title><description><![CDATA[Manuel Escudero lanza su bolet&#237;n en Substack: Mas de 15 a&#241;os de trayectoria en tecnolog&#237;a, contenido pr&#225;ctico y reflexivo. &#161;Bienvenidos!]]></description><link>https://es.leunam.me/p/de-vuelta-a-la-escritura-mi-nuevo-capitulo-en-substack</link><guid isPermaLink="false">https://es.leunam.me/p/de-vuelta-a-la-escritura-mi-nuevo-capitulo-en-substack</guid><dc:creator><![CDATA[Manuel Escudero]]></dc:creator><pubDate>Thu, 03 Oct 2024 02:45:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Id8W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Id8W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Id8W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Id8W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Id8W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Id8W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Id8W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:162172,&quot;alt&quot;:&quot;typewriter&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="typewriter" title="typewriter" srcset="https://substackcdn.com/image/fetch/$s_!Id8W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Id8W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Id8W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Id8W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc238-c21c-4b8c-a837-a065c28998f7_1920x1280.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#9;&#8220;La escritura es el puente que conecta pensamientos, emociones y conocimiento con el mundo.&#8221;</figcaption></figure></div><p>Tengo una gran noticia qu&#233; compartir: Hoy, inicia un nuevo proyecto que marca una evoluci&#243;n en mi trayectoria dentro del mundo de la tecnolog&#237;a: <strong>mi nuevo bolet&#237;n en Substack</strong>.</p><h2>Una Pasi&#243;n Convertida en Realidad</h2><p>Hace m&#225;s de 15 a&#241;os, lanc&#233; una empresa de consultor&#237;a digital con una simple idea: crear mi propio empleo. Lo que comenz&#243; como un peque&#241;o proyecto personal pronto se convirti&#243; en mucho m&#225;s: El emprendimiento creci&#243;, ofreci&#233;ndome no solo una fuente de ingresos, sino tambi&#233;n la oportunidad de brindar empleo a otros, forjar amistades duraderas y construir una base de clientes que nos llev&#243; a adentrarnos en diversas &#225;reas y proyectos.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://es.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><strong>*Leunam (es-MX)</strong> es una publicaci&#243;n apoyada por lectores. Para recibir nuevos posts y apoyar mi trabajo, considera convertirte en suscriptor de contenido gratis o suscriptor de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p>A trav&#233;s de dicho emprendimiento, me sumerg&#237; de lleno en el mundo de la tecnolog&#237;a. Particip&#233; en proyectos y eventos de software libre, experiment&#233; con nuevas herramientas y, lo m&#225;s importante, conect&#233; con una comunidad vibrante de entusiastas de la tecnolog&#237;a alrededor del mundo. Esta experiencia eventualmente me llev&#243; al mundo corporativo como desarrollador de software profesional, una trayectoria por la que siempre estar&#233; agradecido. </p><p>Habiendo trabajado ya en grandes corporativos, startups, &#8220;unicornios&#8221; y reconocidas empresas tecnol&#243;gicas, esa impronta me forj&#243; para llegar a donde estoy ahora y ha dado forma a mucho de qui&#233;n soy como profesional y como persona.</p><h2>El legado va m&#225;s all&#225; de la empresa</h2><p>Sin embargo, m&#225;s all&#225; del &#225;mbito local y de negocio, mi firma consultora se convirti&#243; en una comunidad internacional de apasionados por la tecnolog&#237;a a los que mayormente nos un&#237;a el software libre. Los canales digitales (el blog, YouTube, las redes sociales, etc.) a trav&#233;s de los que llegamos a tantas personas en M&#233;xico y fuera de, eran puntos de encuentro donde compart&#237;amos conocimientos, debat&#237;amos ideas y crec&#237;amos juntos; tanto aquellos que hac&#237;amos el contenido como nuestros seguidores que interactuaban a trav&#233;s de comentarios y otros mecanismos. Sin pensarlo mucho, podr&#237;a decir que esto era mi parte favorita de tener un emprendimiento. Para m&#237;, una de las mayores satisfacciones estaba en crear contenido como medio de expresi&#243;n: Escribir un art&#237;culo t&#233;cnico detallado para el blog o hacer una "distro review" (de GNU/Linux) para YouTube eran procesos que disfrutaba mucho (si bien, en diferentes medidas) dado que sab&#237;a que estaba generando un impacto duradero (por peque&#241;o que fuera) en un panorama internacional.</p><h2>Los Desaf&#237;os del Cambio en Internet</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dNsc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dNsc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dNsc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dNsc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dNsc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dNsc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg" width="1590" height="1102" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1102,&quot;width&quot;:1590,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:369336,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dNsc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dNsc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dNsc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dNsc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe342311a-77ad-4052-84c1-f7cf100eaebf_1590x1102.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sin embargo, como todo en la vida, las cosas cambiaron un d&#237;a: El internet evolucion&#243;, y con &#233;l, las preferencias de consumo de contenido. El formato escrito perdi&#243; terreno frente a los videos, que exig&#237;an una producci&#243;n cada vez m&#225;s sofisticada y duraciones espec&#237;ficas: Los blogs se convirtieron en video-blogs y poco a poco, la atenci&#243;n se ciment&#243; a&#250;n m&#225;s como la moneda de cambio de facto dentro de la red, cosa que llev&#243; a que se generara una nueva econom&#237;a de contenido que, al tener altos niveles de competitividad, hizo que el contenido en general se volviera cada vez m&#225;s corto, m&#225;s visual, m&#225;s r&#225;pido de digerir: <strong>Instagram Stories</strong>, <strong>TikToks</strong>, <strong>YouTube Shorts</strong> y similares son los formatos que dominan hoy d&#237;a en el contenido audiovisual para Internet.</p><p>Para m&#237;, esta transici&#243;n desde sus inicios hasta su evoluci&#243;n actual, no fue f&#225;cil. Mi pasi&#243;n siempre ha estado en la escritura, no tanto en la producci&#243;n de video. Adem&#225;s, la idea de crear este tipo de contenido como medio de sustento nunca reson&#243; completamente conmigo... Lo que s&#237;, es que aunque los ingresos de AdSense o YouTube siempre fueron m&#237;nimos, mi amor por compartir conocimiento nunca se desvaneci&#243;.</p><h2>Un Nuevo Horizonte: Substack</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w_gG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w_gG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w_gG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w_gG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w_gG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w_gG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:348006,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w_gG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w_gG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w_gG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w_gG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020576b4-bddc-4217-bb07-8c24a69df8b9_1744x982.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Y aqu&#237; es donde entra <strong>Substack</strong>.</p><p>El mundo de la tecnolog&#237;a no se detiene, y con mis a&#241;os de experiencia, todav&#237;a tengo mucho que compartir. Despu&#233;s de mucho investigar y reflexionar, he decidido utilizar Substack como un nuevo canal para escribir, crear contenido audiovisual y compartir conocimientos con ustedes. Ya no como una entidad corporativa (o necesariamente parte de una), sino simplemente como <strong>Manuel Escudero</strong>, con todo tipo de formatos de contenido condensados en un mismo sitio.</p><p>Veo a Substack como el potencial "YouTube del formato escrito", reviviendo el blogging y la comunidad que lo rodea, pero de una manera evolucionada y adaptada a los tiempos actuales (con adiciones relevantes como funcionalidades para podcasting y creaci&#243;n, uso y manejo de video en una misma plataforma); Como un todo, Substack me ofrece la oportunidad de reconectar con la comunidad previa de mi emprendimiento (y tambi&#233;n con una nueva audiencia) de una forma que se siente aut&#233;ntica y que encaja perfectamente con mi amor por la escritura como principal medio de expresi&#243;n y entrega de contenido.</p><h3>Lo que Pueden Esperar</h3><p>1. <strong>Frecuencia:</strong> Mi plan es publicar alrededor de uno o dos art&#237;culos por semana. La calidad ser&#225; mi prioridad.</p><p>2. <strong>Temas:</strong> Me centrar&#233; en cuestiones pr&#225;cticas que enfrento en mis labores diarias, abarcando temas como:</p><ul><li><p>Programaci&#243;n</p></li><li><p>Software Libre y GNU/Linux</p></li><li><p>Machine Learning Ops</p></li><li><p>Inteligencia Artificial</p></li><li><p>Criptodivisas y otras tendencias tecnol&#243;gicas relevantes</p></li></ul><p>(Entre otros temas fuera de la l&#237;nea editorial central de vez en cuando)</p><p>3. <strong>Enfoque:</strong> Compartir&#233; conocimientos de la misma manera y con la misma l&#237;nea de pensamiento como lo hice antes: "Este es un nuevo reto, un nuevo proyecto, un nuevo problema al que me enfrent&#233; y as&#237; lo resolv&#237;". Mi objetivo es fomentar discusiones sobre ideas, t&#233;cnicas y estrategias en el &#225;mbito de la tecnolog&#237;a aplicada a escenarios del mundo real.</p><p>4. <strong>Contenido Gratuito y Premium:</strong> Ofrecer&#233; tanto art&#237;culos gratuitos como contenido de pago. Pienso que un buen balance puede enfocarse en entregar art&#237;culos gratuitos de calidad que sean del inter&#233;s general de la mayor&#237;a de la audiencia y dedicar el <em>paywall</em> a cuestiones m&#225;s espec&#237;ficas como cursos u otros formatos similares de profundizaci&#243;n y serializaci&#243;n. Sin embargo, esta estrategia es flexible y es algo que ir&#233; midiendo con el tiempo para adaptar seg&#250;n resulte necesario.</p><h2>Un Puente Entre lo Viejo y lo Nuevo</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vE0g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vE0g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vE0g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vE0g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vE0g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vE0g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:301632,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vE0g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vE0g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vE0g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vE0g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2428b178-8726-4f1e-bb0c-ad7c7723945e_1920x1280.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Si bien ya tengo algunos art&#237;culos en el tintero centrados principalmente en <strong>Inteligencia Artificial</strong>, (reflejando un proyecto personal reciente) y curiosamente, <strong>Evernote</strong> (algo que retom&#233; tambi&#233;n recientemente despu&#233;s de dejar los sistemas de administraci&#243;n personal del conocimiento por un buen tiempo) para aquellos que me llegaron a leer antes les digo: &#161;No se preocupen! no abandonar&#233; los temas que nos reunieron en un principio, importante aclarar que:</p><ul><li><p>Sigo siendo un usuario activo de <strong>GNU/Linux</strong> (En servidores, principalmente)</p></li><li><p>Mantengo un <strong>homelab</strong> con un servidor personal en RHEL 8 para experimentos (de donde hay mucho material para escribir)</p></li><li><p>Aunque ahora uso OS X profesionalmente, mi dispositivo personal principal es un <strong>iPad Pro</strong> que uso para todo, desde navegar por la web hasta programar (siempre me ha gustado la idea del <em>fringe computing</em> y eso no ha cambiado)</p></li></ul><p>Y bueno, para aquellos que no conocen el material de mis publicaciones previas, pues les extiendo una calurosa bienvenida y agradezco su atenci&#243;n a este proyecto, buscar&#233; que el contenido sea de utilidad e inter&#233;s para todos los que lleguen a cruzarse con &#233;l.</p><p><strong>Un poco de housekeeping:</strong> por cierto, se mantendr&#225; una publicaci&#243;n en Ingl&#233;s y otra en Espa&#241;ol, pueden visitar la versi&#243;n en ingl&#233;s ac&#225;:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me&quot;,&quot;text&quot;:&quot;*Leunam (en-US)&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://en.leunam.me"><span>*Leunam (en-US)</span></a></p><p>Y si as&#237; lo desean, agradezco su apoyo proactivo adquiriendo una suscripci&#243;n para esta publicaci&#243;n con un descuento de <strong>m&#225;s del</strong> <strong>40%</strong> (22% adicional <strong>de por vida</strong> acumulado al descuento en suscripciones anuales para contenido premium); promoci&#243;n pensada para <em>early adopters</em> en el enlace a continuaci&#243;n:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://es.leunam.me/subscribe?coupon=4ca80840&amp;utm_content=149131898&quot;,&quot;text&quot;:&quot;Obt&#233;n 22% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://es.leunam.me/subscribe?coupon=4ca80840&amp;utm_content=149131898"><span>Obt&#233;n 22% off forever</span></a></p><h2>Conclusi&#243;n</h2><p>Estoy emocionado por este nuevo comienzo y agradecido por todos aquellos que decidan acompa&#241;arme en este nuevo experimento. La tecnolog&#237;a sigue evolucionando, y con ella, nosotros tambi&#233;n debemos adaptarnos y crecer. Internet puede haber cambiado, pero mi pasi&#243;n por compartir conocimiento sigue intacta. Estoy seguro este ser&#225; un interesante viaje para todos nosotros.</p><p>&#161;Nos leemos pronto!</p><p><em>Manuel.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://es.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><strong>*Leunam (es-MX) </strong>es una publicaci&#243;n respaldada por su comunidad de lectores. Si quieres recibir nuevas publicaciones y apoyar mi trabajo, te invito a unirte como suscriptor gratuito o de pago. Tu apoyo me permite seguir creando contenido valioso y en profundidad.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>