<?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 (en-US)]]></title><description><![CDATA[Sharing insights into programming, AI/ML, (F)OSS, & more. With 15+ years in tech, I blend expertise with real-world experience to guide you.]]></description><link>https://en.leunam.me</link><image><url>https://substackcdn.com/image/fetch/$s_!3k0I!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49da745a-54b6-4d4d-9573-ca6698b35a9b_1280x1280.png</url><title>*Leunam (en-US)</title><link>https://en.leunam.me</link></image><generator>Substack</generator><lastBuildDate>Tue, 12 May 2026 11:19:23 GMT</lastBuildDate><atom:link href="https://en.leunam.me/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Manuel Escudero]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[en+newsletter@leunam.me]]></webMaster><itunes:owner><itunes:email><![CDATA[en+newsletter@leunam.me]]></itunes:email><itunes:name><![CDATA[Manuel Escudero]]></itunes:name></itunes:owner><itunes:author><![CDATA[Manuel Escudero]]></itunes:author><googleplay:owner><![CDATA[en+newsletter@leunam.me]]></googleplay:owner><googleplay:email><![CDATA[en+newsletter@leunam.me]]></googleplay:email><googleplay:author><![CDATA[Manuel Escudero]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[C.U.B.E: A timeless, frictionless PKM system]]></title><description><![CDATA[The knowledge framework that turns thoughts into results using Obsidian.]]></description><link>https://en.leunam.me/p/cube-a-timeless-frictionless-pkm</link><guid isPermaLink="false">https://en.leunam.me/p/cube-a-timeless-frictionless-pkm</guid><dc:creator><![CDATA[Manuel Escudero]]></dc:creator><pubDate>Mon, 09 Mar 2026 05:21:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jPxC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic" 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_!jPxC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jPxC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!jPxC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!jPxC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!jPxC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jPxC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic&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;:138002,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://en.leunam.me/i/190310599?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jPxC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!jPxC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!jPxC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!jPxC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e5e9f3-266c-469e-bbd5-89d24c9fb3e2_1536x1024.heic 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>We&#8217;ve all been there. You start with a productivity tool, full of hope, only to find yourself six months later spending more time maintaining the system than doing the actual work. You end up with a chaotic web of disconnected notes, scattered task lists, and a feeling that your Personal Knowledge Management (PKM) system is actively working <em>against you.</em></p><p>Today, I&#8217;m introducing <strong>CUBE</strong> (<strong>Capture</strong>, <strong>Understand</strong>, <strong>Build</strong>, <strong>Execute</strong>): A frictionless, context-aware protocol designed from the ground up for <strong>Obsidian</strong>, ready for those who still like the old way of doing stuff but also ready for the age of AI&#8230; it&#8217;s timeless! </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">*Leunam (en-US) is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>No matter how you locate yourself in the trends, this system adapts to you.</p><p>CUBE relies on a fluid-yet-hierarchical structure that mimics the neural pathways of your brain. It ensures that every tiny task is anchored to a piece of information, and every piece of information is anchored to a high-level concept. That&#8217;s the core of the framework, any other piece of structure built into it is there for convenience, however adhering to them is not strictly mandatory.</p><div class="pullquote"><p>Here is how to build it&#8230;</p></div><h2><strong>&#127959;&#65039; The Core Architecture (The 3 Tiers)</strong></h2><p>CUBE is built on a strict &#8220;Map of Content&#8221; (MoC) pipeline consisting of three tiers:</p><ol><li><p><strong>Concepts (The Hubs):</strong> Your master dashboards for major areas of focus, projects, people, or recurring events (e.g., <code>[[Homelab Overhaul 2026]]</code> or <code>[[John Doe]]</code>). They sit at the top of the hierarchy to give you a bird&#8217;s-eye view. A concept is always accompanied by a <strong>Canvas</strong> file and a <strong>Base</strong> file (more on these later)</p></li><li><p><strong>Items (The Raw Material):</strong> The spokes! (Your captures); Articles, meeting notes, PDFs, AI chat logs and every other piece of information you save to Obsidian can become an <strong>Item</strong>. Every Item contains a <code>Concept</code> link pointing directly to its parent higher order concept hub.</p></li><li><p><strong>Tasks (The Actionables):</strong> Action items are handled as Inline <strong>Tasks</strong> (<code>- [ ]</code>). We do not create separate task notes. You write them directly inside your <strong>Items</strong>. This keeps the action visually tied to the exact context that spawned it through the Item.</p></li></ol><h3><strong>The 4 Stages of Workflow</strong></h3><ul><li><p><strong>Capture:</strong> Dump everything into your <code>00_Inbox</code> folder.</p></li><li><p><strong>Understand:</strong> Process your inbox into <em>Items</em> by filling out native YAML Properties (Category, Format) and linking the note to a <em>Concept</em> Hub.</p></li><li><p><strong>Build:</strong> Extract actionables by writing inline tasks (<code>- [ ] Buy cables #p1</code>) directly in the note.</p></li><li><p><strong>Execute:</strong> Use your <em>Daily Note Dashboard</em> to keep track of your daily progress regarding projects. List your priorities for the day and tackle them, make use of backlinks to associate your concepts and items accordingly.</p></li></ul><h2><strong>&#128193; The Setup Guide</strong></h2><p>Because Obsidian relies heavily on search and links, we keep the folder structure mostly flat. Use numbers to enforce sorting (if desired):</p><ul><li><p><strong>00_Inbox:</strong> The ultimate capture zone.</p></li><li><p><strong>10_Categories:</strong> Broad domains of responsibility (e.g., Coding, Work, Personal, etc.); Items get organized into category folders as they&#8217;re processed (however you can also choose to just archive them if that&#8217;s more your style).</p></li><li><p><strong>20_Concepts:</strong> The dedicated home for your high-level dashboard notes. A concept is always a folder containing the <strong>concept note </strong>itself, a <strong>base</strong> and a <strong>canvas</strong> related to it.</p></li><li><p><strong>90_Archive:</strong> <em>A vault for your Vault</em>. Either cold storage for inactive notes, a place for orphaned notes and/or the place where everything goes after being processed, your choice.</p></li></ul><blockquote><p>&#128161; <strong>Pro-Tip for Fast Setup:</strong> Don&#8217;t build this manually! The easiest way to start with this system is to download the Vault below and extracting it in your system to be used by <a href="https://obsidian.md">Obsidian</a>.</p></blockquote><h2></h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/leumanes/cube-pkm/releases/&quot;,&quot;text&quot;:&quot;DOWNLOAD HERE&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/leumanes/cube-pkm/releases/"><span>DOWNLOAD HERE</span></a></p><h2><strong><br>&#9881;&#65039; The Templates (The Engine)</strong></h2><p>You only need <strong>3 templates</strong> to run your entire life. They rely on Obsidian&#8217;s YAML Properties (frontmatter) to make your vault machine-readable.</p><p><strong>1. The Item Spoke Template</strong></p><p>Use this for 90% of your notes: web clippings, one-off meeting notes, PDFs, and random thoughts.</p><ul><li><p><strong>Properties:</strong> Includes <code>Type: Item</code>, Category, Format, Date and the crucial <code>Concept: [[Concept]]</code> link.</p></li><li><p><strong>Content:</strong> Features a <strong>Summary</strong> section for a quick TL;DR, a <strong>Notes</strong> section for the raw data or additional captures, and an <strong>Actionables</strong> section where you write your inline <em>Tasks</em>.</p></li></ul><p>The template itself:</p><pre><code><code>---
Type: Item
Category: Templates
Concept: "[[tpl-concept-hub]]"
Format: Template
Date: {{date}}
---

# {{title}}
  
**Source/Link:**

## &#9889; Summary / TL;DR



---  
  
## &#129504; Notes &amp; Captures



---  
  
## &#9989; Actionables

- [ ]   
</code></code></pre><p><strong>2. The Concept Hub Template</strong></p><p>Use this for your projects, people, or broad domains. Recurring meetings can be classified as concepts too. A concept is always enclosed in its respective folder with an Obsidian Base (<code>.base</code> file that holds a reference to all the items linked to that concept) and an Obsidian Canvas (<code>.canvas</code> file for easy visualization and management of the internal connections relative and related to its items)</p><ul><li><p><strong>Properties:</strong> Includes <code>Type: Concept</code>, Category, Date, and <code>Status: Active</code>.</p></li><li><p><strong>Content:</strong> Features a <strong>Description</strong> statement and one Obsidian <strong>Base</strong> block titled <strong>Knowledge Base</strong> to aggregate all linked <strong>Items</strong> (The canvas link is also available there for convenience). You also have a <strong>Related Concepts</strong> section to build up your network of connected ideas.</p></li></ul><p>The template itself:</p><pre><code><code>---
Type: Concept
Category: Templates
Status: Active
Date: {{date}}
---

# {{title}}
  
**Description:** 

*Write a 1-2 sentence definition of what this concept/project is about: its goals, purpose, etc.*
  
---
  
## &#128450;&#65039; Knowledge Base
*All captures and items anchored to this Concept.* 
  
&gt; [!info] Item Base
&gt; **Insert a Base View here**
&gt; Filter: `Type: Item` AND `Concept: [[{{title}}]]`
&gt; *(This will automatically display every Item note that you linked to this Hub)*  

![[10_Categories/Templates/tpl-concept-hub/tpl-concept-hub.base]]

**Canvas:** [[tpl-concept-hub.canvas]]

---

## &#128376;&#65039; Related Concepts

- [[ ]]
- [[ ]]
</code></code></pre><p><strong>3. The Daily Note Template</strong></p><p>Your daily command center for Execution and Capture.</p><ul><li><p><strong>Properties:</strong> <code>Type: Daily</code> and Date.</p></li><li><p><strong>Content:</strong> Features a <strong>Quick Capture</strong> scratchpad so you don&#8217;t break focus, an <strong>Execution</strong> section featuring a place to organize your day in tasks, a <strong>Daily Log</strong> section for journaling, personal introspection or outlining timed events and an <strong>End of Day</strong> shutdown checklist.</p></li></ul><p>The template itself:</p><pre><code><code>---
Type: Daily
Date: {{date}}
---

# &#128197; {{date}}
  
## &#128229; Quick Capture (The Daily Inbox)
*Dump your quick notes here. Process them later into proper Items if needed.*

-  

---

## &#127919; Execution (Today's Priorities)
*Your daily task list. Check these off as you work throughout the day.*

- [ ] 
  
---

## &#128211; Daily Log &amp; Timeline
*Bullet journal your day here. Log events, decisions, or fleeting thoughts.*

- **09:00** -

---

## &#128260; End of Day Shutdown (Review)
- [ ] Review **Quick Capture** section above (Convert to Items, archive or delete)
- [ ] Process `00_Inbox` (Move Items into Categories, archive or delete)
- [ ] Update status/priority tags on any lingering **tasks** here or in your Items
</code></code></pre><h2><strong>&#129302; Supercharging CUBE: Giving AI the Keys</strong></h2><p>If you use AI tools to summarize articles or transcribe meetings, pasting raw AI text into your vault usually creates disorganized &#8220;text sludge&#8221;; CUBE solves this! Because it relies on strict YAML Properties and standard Markdown, it is highly machine-readable. By using a command-line AI agent (like <strong>gemini-cli</strong> or <strong>claude code</strong>), you can place a master instruction file (<code>GEMINI.md/CLAUDE.md</code>) directly in the root of your Obsidian vault teaching it your exact taxonomy. Here you have a sample file you can use as a template:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/leumanes/cube-pkm/blob/main/PROMPT.md&quot;,&quot;text&quot;:&quot;See on Github&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/leumanes/cube-pkm/blob/main/PROMPT.md"><span>See on Github</span></a></p><p>You can feed the agent a chaotic meeting transcript and it will automatically generate a perfectly formatted <strong>Item</strong> note, assign the correct YAML (with <code>Format: Meeting</code>), add the bi-directional link to the <strong>Concept</strong> related to it (<code>Concept: [[Project Name]]</code>), then extract native inline <strong>Tasks</strong> (<code>- [ ] Send the report #p1</code>) for the item.</p><div class="pullquote"><p>Let&#8217;s discuss how!</p></div><h3><strong>Example AI Prompts for CUBE</strong></h3><p>If you are passing data to an AI agent configured for your vault, use prompts like these to achieve zero-touch processing:</p><p><strong>Prompt 1: The Article Processor</strong></p><blockquote><p>&#8220;Read this article URL. Create a new note using the Item Spoke structure. Set the Category to &#8216;AI/ML&#8217; and Format to &#8216;Article&#8217;. Write a 2-sentence summary, extract the key arguments into bullet points, and link it Up to the [[Artificial Intelligence 2026]] concept.&#8221;</p></blockquote><p><strong>Prompt 2: The Meeting Extractor</strong></p><blockquote><p>&#8220;Analyze this raw meeting transcript. Format it as an Item Spoke with Format: &#8216;Meeting&#8217;. Link it Up to [[Client X]]. Do not give me a generic summary of next steps; instead, write explicit inline markdown checkboxes for every action item mentioned, appending the #p2 tag to each.&#8221;</p></blockquote><p><strong>Prompt 3: Generic</strong></p><blockquote><p>&#8220;Read the &#8216;PROMPT.md&#8217; file and process this [Input] accordingly.&#8221;</p></blockquote><h2><strong>&#129529; Weekly Maintenance (Keeping it Clean)</strong></h2><p>To prevent your system from turning into a chaotic web, perform a 10-minute scrub <strong>once per week</strong>:</p><ul><li><p><strong>Inbox Zero:</strong> Ensure every note in <code>00_Inbox</code> has <strong>Properties</strong> assigned to it and that it is linked Up to a <strong>Concept</strong>, then move it to <code>10_Categories</code> as needed or archive it.</p></li><li><p><strong>Task Scrub:</strong> For any ongoing project/concept, review your list of tasks in the related items. Demote stale <code>#p1</code> tasks to <code>#p3</code>, or delete the checkbox entirely if you are never going to do them.</p></li><li><p><strong>Concept Audit:</strong> Change completed projects to <code>Status: Archived</code> and move them to the <code>90_Archive</code> folder to keep your active dashboards clean.</p></li><li><p><strong>The Orphan Hunt:</strong> Open Obsidian&#8217;s <strong>Graph View</strong>. Spot any nodes floating completely disconnected from the main clusters. Click them and assign an appropriate link so they rejoin the ecosystem (or if needed, just archive/delete them).</p></li></ul><h2><strong>Settings I recommend</strong></h2><p>I know that Obsidian settings can get very personal, that&#8217;s why I will mostly focus on recommendations that specifically leverage the CUBE system, check the screenshots below:</p><ul><li><p><strong>Files and links</strong> settings</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jLOT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jLOT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 424w, https://substackcdn.com/image/fetch/$s_!jLOT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 848w, https://substackcdn.com/image/fetch/$s_!jLOT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 1272w, https://substackcdn.com/image/fetch/$s_!jLOT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jLOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic" width="1456" height="1273" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1273,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:224018,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://en.leunam.me/i/190310599?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jLOT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 424w, https://substackcdn.com/image/fetch/$s_!jLOT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 848w, https://substackcdn.com/image/fetch/$s_!jLOT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 1272w, https://substackcdn.com/image/fetch/$s_!jLOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41e2ad17-a919-4a31-9f19-5fac20406815_2087x1824.heic 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></p></li><li><p><strong>Daily notes</strong> settings</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!icqu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!icqu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 424w, https://substackcdn.com/image/fetch/$s_!icqu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 848w, https://substackcdn.com/image/fetch/$s_!icqu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 1272w, https://substackcdn.com/image/fetch/$s_!icqu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!icqu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic" width="1456" height="951" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:951,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90270,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://en.leunam.me/i/190310599?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!icqu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 424w, https://substackcdn.com/image/fetch/$s_!icqu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 848w, https://substackcdn.com/image/fetch/$s_!icqu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 1272w, https://substackcdn.com/image/fetch/$s_!icqu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bd1f1c0-4059-4613-b43d-7d7db9ca5bed_2096x1369.heic 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></p></li><li><p><strong>Templates</strong> settings</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9mrc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9mrc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 424w, https://substackcdn.com/image/fetch/$s_!9mrc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 848w, https://substackcdn.com/image/fetch/$s_!9mrc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 1272w, https://substackcdn.com/image/fetch/$s_!9mrc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9mrc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic" width="1456" height="1269" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1269,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:162883,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://en.leunam.me/i/190310599?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9mrc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 424w, https://substackcdn.com/image/fetch/$s_!9mrc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 848w, https://substackcdn.com/image/fetch/$s_!9mrc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 1272w, https://substackcdn.com/image/fetch/$s_!9mrc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d1da49-ed63-4471-b1ff-df0fe6c378bd_2274x1982.heic 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></p></li></ul><h2><strong>Personal Advice: Don&#8217;t sweat it!</strong></h2><p>CUBE is not a rigid system. It is a framework that aims to help you find the <strong>connections</strong> between your <strong>thoughts</strong> and transforming such connected thoughts into tangible <strong>actions</strong> that deliver <strong>results</strong> for you. That process cannot happen in rigidity. It can only happen in a <em>flow state</em>.</p><p>That&#8217;s why I say: <strong>Don&#8217;t fear the orphans!</strong> Although I&#8217;m a firm believer that anything can be turned into an <strong>Item</strong> and every item is part of some <strong>Concept</strong> and thus can also belong in some <strong>Category</strong> (no matter how broad), I also think not everyone should strictly process everything they capture if they don&#8217;t feel like doing so. Perhaps for you a specific capture is not worth an item note. Perhaps for you, an item should not be categorized or perhaps you haven&#8217;t found a concept you&#8217;d want to use for such item (although this last one would be more difficult to come by, more so if you decide to use AI to help you create the notes but it could still happen);</p><p>In such cases remember:</p><p><em><strong>Your Archive is the vault for your Vault</strong></em>. Send such notes to the <strong>Archive</strong>. At some point as you look at your knowledge graph the connections would naturally reveal themselves.</p><h3><strong>About the Graph View</strong></h3><p>This is how a linked concept will look like in your Knowledge Graph:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Ut7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Ut7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 424w, https://substackcdn.com/image/fetch/$s_!9Ut7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 848w, https://substackcdn.com/image/fetch/$s_!9Ut7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 1272w, https://substackcdn.com/image/fetch/$s_!9Ut7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Ut7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic" width="1171" height="1177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1177,&quot;width&quot;:1171,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://en.leunam.me/i/190310599?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Ut7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 424w, https://substackcdn.com/image/fetch/$s_!9Ut7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 848w, https://substackcdn.com/image/fetch/$s_!9Ut7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 1272w, https://substackcdn.com/image/fetch/$s_!9Ut7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3ff76f-edaa-4b48-84a6-352c86dfe482_1171x1177.heic 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><blockquote><p><em>P.S. you can use the filter </em><code>-path:"10_Categories/Templates"</code><em> in the graph view to hide the templates folder from it in order to prevent unnecessary clutter.</em></p></blockquote><h2><strong>Ready to build your CUBE?</strong></h2><p>Stop managing notes. Start achieving results!</p><p>Drop the starter vault into Obsidian, go with the flow, and experience the power of a system that finally works <strong>with you</strong>. Let&#8217;s C.U.B.E. the chaos together.</p><p>I can&#8217;t wait to hear what you create with it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">*Leunam (en-US) is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><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[Unlimited Privacy: Create Your Own Encrypted Chat with PidginChat and OMEMO (In Just 5 Minutes!)]]></title><description><![CDATA[Your own alternative to Signal without the need of a phone number or linked device limits. Full control from GUI or Terminal.]]></description><link>https://en.leunam.me/p/encrypted-messaging-pidginchat-omemo</link><guid isPermaLink="false">https://en.leunam.me/p/encrypted-messaging-pidginchat-omemo</guid><dc:creator><![CDATA[Manuel Escudero]]></dc:creator><pubDate>Tue, 28 Oct 2025 03:32:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i06s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_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_!i06s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i06s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!i06s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!i06s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!i06s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i06s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_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://en.leunam.me/i/177333673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_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_!i06s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!i06s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!i06s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!i06s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc2c84cd-3c2f-4b24-8c22-c55d5df8a8c2_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>In an era where almost every message we send passes through some company&#8217;s servers, <strong>Signal</strong> has become the gold standard for private communication. But&#8230; <strong>What is Signal and what is it used for around the world?</strong> Well, Signal is a secure messaging app (free and open-source) focused on end-to-end (E2E) encryption. It is widely used by journalists, activists, technical teams, and anyone who wants to protect their conversations from providers, operators, and attackers on public networks. It offers encrypted calls and messages, security number verification between contacts, and a clean design that popularized end-to-end encrypted messaging on a global scale.</p><p>Signal has earned its reputation by merit: It democratized E2E encryption for messages with a clean interface, the transparency of open-source code, and the <strong>Double Ratchet</strong> algorithm that forever changed secure messaging.</p><p><strong>But even Signal has its limitations, some of them are:</strong></p><ul><li><p><strong>Limit of 5 linked devices</strong> (which could be particularly frustrating for multi-device users)</p></li><li><p><strong>Centralized servers:</strong> You depend completely on Signal&#8217;s infrastructure.</p></li><li><p><strong>Identity based on phone number</strong>, which complicates anonymity</p></li></ul><p>For me, the first point was the deciding factor. I needed something that could:</p><ul><li><p>Be used on as many devices as I wanted/needed</p></li><li><p>Operate from a text interface (for example, on servers)</p></li><li><p>And still maintain encryption at Signal&#8217;s level</p></li></ul><p>That&#8217;s when I rediscovered the <strong>XMPP</strong> protocol, specifically through <strong>PidginChat + OMEMO</strong>, which motivated me to write this article about my setup and how to replicate it, plus some variants and other useful information.</p><p>Without further ado, let&#8217;s get to it!</p><h2>&#129513; Under the Hood: XMPP (feat. PidginChat) + OMEMO</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dpln!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dpln!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dpln!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dpln!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dpln!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dpln!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e55c796-17a1-42f2-8fe7-ea33f51b6189_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://en.leunam.me/i/177333673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_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_!dpln!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dpln!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dpln!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dpln!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e55c796-17a1-42f2-8fe7-ea33f51b6189_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: The Backbone of Open Messaging</strong></p><p><strong>XMPP</strong> (Extensible Messaging and Presence Protocol) is an open standard for messaging: the same protocol that powered <strong>Google Talk </strong>and <strong>Facebook Chat</strong> in their early days&#8230; It&#8217;s federated just like email: anyone can host a server, and servers communicate with each other.</p><p><strong>OMEMO: Signal-Level Security, Federated</strong></p><p><strong>OMEMO</strong> is an encryption layer for XMPP that implements the same <strong>Double Ratchet</strong> algorithm used by Signal. It offers support for offline messages, multi-device synchronization, and forward secrecy.</p><p><strong>What is forward secrecy?</strong> Also known as <em>perfect forward secrecy</em>, it&#8217;s basically a cryptographic implementation that means if a long-term encryption key were to be compromised today, your past messages would still be protected; <strong>OMEMO/Double Ratchet</strong> constantly rotates keys and discards the old ones; each message (or batch of messages) is protected with fresh and ephemeral cryptographic material.</p><div class="pullquote"><p>In other words: OMEMO enables us the same gold-standard cryptography as Signal, without needing to depend on (nor be on) Signal&#8217;s server.</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_!TCwP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TCwP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!TCwP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!TCwP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!TCwP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TCwP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/477b4d3f-c837-4d5c-986a-4ee46775cd56_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://en.leunam.me/i/177333673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_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_!TCwP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!TCwP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!TCwP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!TCwP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F477b4d3f-c837-4d5c-986a-4ee46775cd56_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> is one of the oldest and most respected open-source chat clients. It was born in the early 2000s as <strong>Gaim</strong>, and evolved into what we know today as a multi-protocol application powered by <strong>libpurple</strong>, a plugin-based library that supports dozens of messaging protocols (IRC, XMPP, ICQ, and more). For many <strong>GNU/Linux</strong> users, Pidgin was (and remains) essential for talking to people who have a presence on different messaging networks (proprietary and open alike).</p><p><strong>PidginChat</strong>, on the other hand, is a modern XMPP service hosted and managed by the community that maintains Pidgin. It uses a lightweight XMPP server that anyone can join, making it perfect if you want a ready-to-use network in a configuration scoped to be similar to Signal after setting up the proper encryption needed (without having to set up your own server from the start)</p><p><strong>Quick Registration on PidginChat</strong></p><blockquote><p>Short and concise: Go to <a href="https://pidgin.im/about/pidginchat/">https://pidgin.im/about/pidginchat/</a> and follow the instructions.</p><p>Elaborating:</p><p>Basically, you&#8217;ll need to create an account on their <strong>JetBrains Hub </strong>instance (<a href="https://hub.imfreedom.org/">https://hub.imfreedom.org/</a>) by logging in with your preferred method; that will automatically create your <strong>PidginChat </strong>account (you can change your assigned username later right there in their web interface)</p><p>Note your <strong>XMPP address (JID)</strong>: it looks like <em><a href="mailto:username@pidginchat.com">username@pidginchat.com</a></em> where <strong>username</strong> refers to the username assigned in the JetBrains Hub instance.</p><p>Use it to log in with any XMPP client: I&#8217;ll recommend you some below.</p></blockquote><div class="pullquote"><p>Keep in mind: You can register with a disposable email and/or a pseudonym. You can also anonymize your JID by deleting metadata in the JetBrains Hub panel (after registration) or, if you prefer, you can later migrate to your own server as mentioned above.</p></div><h2>&#128421;&#65039; XMPP Clients: Choose Your Platform</h2><p>There&#8217;s no one-size-fits-all: Choose the one that best fits your workflow:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E_5q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E_5q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E_5q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E_5q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E_5q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E_5q!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg" width="1200" height="651.9230769230769" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:791,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:190478,&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://en.leunam.me/i/177333673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.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_!E_5q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E_5q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E_5q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E_5q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5931b4ba-012c-44c9-9ed6-bce8b11b0aaa_1617x879.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>My Particular Case: Secure Messaging Between Servers</strong></p><p>I started researching this topic because I wanted to find an option to establish an E2E encrypted chat via command line between servers on my VPN/LAN. No graphical interface: just the terminal.</p><p>That led me to find <strong>Profanity</strong>, a TUI (terminal user interface) XMPP client that supports OMEMO once you compile it correctly with the proper plugin set. We&#8217;ll deviate a bit into this tangent (feel free to <a href="https://en.leunam.me/i/177333673/optional-host-your-own-xmpp-server">skip this section</a> if you wish) and here I&#8217;ll write up the guide on how exactly I made it work with <strong>Homebrew</strong> libraries on <strong>AlmaLinux 10</strong>; a GNU/Linux distribution compatible with <strong>Red Hat Enterprise Linux (RHEL) 10.x</strong> and other derivatives of it like <strong>RockyLinux</strong>, for example.</p><p><em>Let&#8217;s see&#8230;</em></p><p><strong>How to Install Profanity with OMEMO Support on AlmaLinux 10 (and other RHEL-compatible distros)</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_!aJu1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aJu1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!aJu1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!aJu1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!aJu1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aJu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png" width="768" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_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://en.leunam.me/i/177333673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_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_!aJu1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!aJu1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!aJu1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!aJu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd76cd6c-e8af-4f6f-be50-aa5a4133d1ae_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">Image attribution: <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> is a fast and minimalist XMPP client with support for OMEMO, OTR, and PGP. Compiling it with all dependencies on a modern RHEL-like distro (AlmaLinux 10 as an example) can be tricky, which is why I&#8217;m documenting a reproducible process here as a reference for posterity.</p><blockquote><p><em><strong>NOTE:</strong> The commands you&#8217;ll see below are meant to be executed in a <strong>bash</strong> shell.</em></p></blockquote><p><strong>Step 1: Prepare the Base System</strong></p><p>Install development tools and kernel headers:</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>This ensures we can create executables with <strong>/usr/bin/gcc</strong> (otherwise the configure step might fail with a message like: <code>&#8220;C compiler cannot create executables&#8221;</code>).</p><p><strong>Step 2: Install Linuxbrew / Homebrew (if you don&#8217;t have it installed already)</strong></p><pre><code><code>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</code></code></pre><p>The script explains what it will do and pauses before doing it. After installation, add <code>brew</code> to your PATH (the same STDOUT after installation will give you the instructions on how to do so) and install <strong>gcc </strong>from its repositories with:</p><pre><code><code>brew install gcc</code></code></pre><p><strong>Step 3: Install Dependencies via 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>This brings the libraries that Profanity needs for OMEMO and more (ncurses, cryptography, XMPP, etc.).</p><p><strong>Step 4: Ensure pkg-config Finds GLib</strong></p><p>Some installations need explicit hints for GLib&#8217;s <code>.pc</code> files:</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>Test:</p><pre><code><code>pkg-config --modversion glib-2.0</code></code></pre><blockquote><p>Expected: 2.xx.x</p></blockquote><p>If you see <code>&#8220;not found&#8221;</code>:</p><pre><code><code>brew reinstall pkgconf</code></code></pre><p><strong>Step 5: Prepare Build Flags with brew paths</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>This helps the configure step find:</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>Step 6: Get the Profanity Source Code</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>Step 7: Initialize the Build System</strong></p><pre><code><code>./bootstrap.sh</code></code></pre><p>This generates configure and other files via autotools.</p><p><strong>Step 8: Configure with OMEMO Support</strong></p><p>Add these extra flags to try to avoid a common cURL warning that seems to be affecting the profanity build right now (it might be fixed later by the community):</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>Step 9: Compile</strong></p><pre><code><code>make -j"$(nproc)"</code></code></pre><div class="pullquote"><p>Did you get a cURL error like <strong>curl_easy_setopt expects a long argument</strong>? Apply this small patch and recompile:</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>Step 10: Install and Validate</strong></p><p>If there were no more errors, we can install profanity at user level and validate at the same time with:</p><pre><code><code>make install
~/.local/bin/profanity -v</code></code></pre><blockquote><p>Expected:</p><p><em>Profanity 0.15.x</em></p><p><em>Features: OMEMO, libsignal-protocol-c, ncurses, readline</em></p></blockquote><p>Done! Profanity is installed! Start it with:</p><pre><code><code>~/.local/bin/profanity</code></code></pre><p><strong>Common Troubleshooting</strong></p><p><em>I&#8217;ll summarize it in a table for you below:</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_!gY2b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gY2b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gY2b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gY2b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gY2b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gY2b!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg" width="1200" height="363.46153846153845" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:441,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:166237,&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://en.leunam.me/i/177333673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.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_!gY2b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gY2b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gY2b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gY2b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb5b9f2a-891e-4cc0-b49f-0049c9d14e29_1989x602.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>Back to the main topic&#8230;</p></div><h2>&#129517; (Optional) Host Your Own XMPP Server</h2><p>It&#8217;s possible (and often recommended) to host your own XMPP server (for example, using <strong>prosody</strong> or <strong>ejabberd</strong>); By doing this, you control the metadata, retention policies, and physical location of the service, as well as its availability, access, rules, and features. In a later tutorial, we&#8217;ll explore the step-by-step setup of a self-hosted XMPP server for those curious about the topic.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">(Subscribe for free so you don&#8217;t miss it! &#128521;)</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#128272; So&#8230; How Secure Is This?</h2><p>Let&#8217;s be clear and transparent:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Fqe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Fqe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Fqe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Fqe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Fqe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Fqe!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg" width="1200" height="568.6813186813187" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:690,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:131437,&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://en.leunam.me/i/177333673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.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_!8Fqe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Fqe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Fqe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Fqe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bded2bf-017a-48dc-9a36-daf62daf8b1f_1574x746.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>The cryptography between both options is equivalent, but real-world privacy depends on where (and how) your server is hosted. If you self-host or use a trusted provider, you get a security level very close to Signal&#8217;s without centralization.</p><p><strong>Some additional (and somewhat basic) privacy tips</strong></p><ul><li><p><strong>Register with a pseudonym</strong>; Take advantage that unlike Signal, for example in this case PidginChat does not require a phone number.</p></li><li><p><strong>Delete the vCard data</strong> generated in the JetBrains Hub instance (if you choose to set up with PidginChat) and/or change your JID later.</p></li><li><p><strong>Consider using a VPN</strong> when registering on the hub for greater privacy.</p></li><li><p><strong>If your client allows it</strong>, force TLS and configure it to use port <strong>443</strong> instead of the default port (I think it&#8217;s <strong>5222</strong>) to connect. Note, this does not interfere with other processes running on your client device.</p></li></ul><p><strong>Addendum: OMEMO Fingerprint Verification</strong></p><p>Like Signal, OMEMO uses fingerprints per device. To avoid man-in-the-middle attacks, verify the fingerprints with your contacts. In almost any XMPP client, you&#8217;ll find OMEMO details in the contact&#8217;s information. Compare those fingerprints out-of-band (i.e., through a trusted channel different from the messenger, like a phone call or exchanging a QR code); Once verified, manually mark the device as trusted.</p><p>That said, for practicality, you can allow blind trust between devices (many XMPP clients do this by default, so you don&#8217;t have to manually verify keys before starting to chat to avoid friction), but anyhow, it&#8217;s always good to review their cryptographic fingerprints in one way or another.</p><p>Similarly, it&#8217;s very common for XMPP clients to have an icon or indication (usually a padlock icon in graphical clients, or the OMEMO status in text clients) within the conversation window to <em>signal</em> (pun not intended) whether that conversation is being end-to-end encrypted or not; So&#8230; always check the user interface: Verify that the indicator (graphical or not) shows that encryption is enabled for the conversation.</p><div class="pullquote"><p>As long as encryption is enabled, messages are E2E protected and authenticated.</p></div><h2>&#129488; Closing thoughts</h2><p>I&#8217;m not here to lightly claim that this setup is more secure than Signal; Signal is still unbeatable for its simplicity and network effect (many people use it); But setting up XMPP + OMEMO is a different kind of security: a scenario where you can own the infrastructure (your own server) and this brings freedoms like:</p><ul><li><p>Chat privately within your own network (or even with yourself just to pass messages between devices)</p></li><li><p>Depending on the platform, integrate with automation scripts</p></li><li><p>Connect any number of devices</p></li><li><p>Run a chat system that never sends telemetry to third parties</p></li></ul><p><strong>Signal</strong> gave us easy-to-use encrypted messaging. <strong>XMPP + OMEMO </strong>gives us sovereign encryption: The ability to control, host, and understand everything that comprises our communications stack. You can start easily with <strong>PidginChat</strong> and evolve to a <strong>self-hosted</strong> service later.</p><div class="pullquote"><p>This setup represents privacy by design and autonomy by architecture.</p></div><h2>&#128736;&#65039; Mentioned Tools</h2><ol><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></ol><p>Until next time! Don&#8217;t forget to subscribe and share.</p>]]></content:encoded></item><item><title><![CDATA[.BAT files in Linux]]></title><description><![CDATA[Learn how to run .BAT files on Linux and create Bash scripts (.sh) to automate tasks.]]></description><link>https://en.leunam.me/p/bat-files-in-linux</link><guid isPermaLink="false">https://en.leunam.me/p/bat-files-in-linux</guid><dc:creator><![CDATA[Manuel Escudero]]></dc:creator><pubDate>Sun, 06 Oct 2024 00:19:41 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%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_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_!PaGY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PaGY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PaGY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PaGY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PaGY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PaGY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg" width="1280" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d536226-2590-4bdd-8ce2-71e8af73c3d3_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_!PaGY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PaGY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PaGY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_1280x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PaGY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d536226-2590-4bdd-8ce2-71e8af73c3d3_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>Author's note</strong>: This article is an updated version of a post from my previous blog. Although its focus may differ (in some way or another) from the current editorial line of this publication, I'm sharing it due to its informational value. I hope you find it useful, and I appreciate your consideration. Cheers!</p></div><h2>Introduction</h2><p>A common question from users migrating from <strong>Windows</strong> to <strong>Linux</strong> is: <em>"How do I run .bat files on Linux?" </em>In Windows, <strong>.bat</strong> files allow you to automate tasks by executing a series of sequential commands. In Linux, the functional equivalent is <strong>.sh</strong> files, also known as <strong>Bash</strong> <strong>scripts</strong>.</p><p>In this article, I will explain to you how to run .bat files on Linux using <strong>Wine</strong>, and also I&#8217;ll show you how to create and use .sh scripts to automate tasks on your Linux system, similar to what you can achieve on Windows with .bat files.</p><h2>Executing .BAT files directly on Linux</h2><p><strong>Using Wine</strong></p><p>Wine is a compatibility layer that allows you to run Windows programs and scripts on Linux systems. Although it's not always perfect, Wine can run many .bat files.</p><p><strong>Installing Wine</strong></p><p>To install Wine on <strong>Debian/Ubuntu</strong> based systems, execute</p><pre><code>sudo apt-get install wine</code></pre><p>For <strong>Fedora/CentOS</strong>, use</p><pre><code>sudo dnf install wine</code></pre><p><strong>Running .BAT files with Wine</strong></p><p>Once Wine is installed, you can run a .bat file with the following command</p><pre><code>wine cmd /c file.bat</code></pre><p>This command runs the .bat file in a simulated Windows console on Linux.</p><p><strong>Limitations of Wine</strong></p><ul><li><p><strong>Compatibility:</strong> Wine does not guarantee that all Windows programs or scripts will work properly.</p></li><li><p><strong>Alternatives:</strong> If Wine cannot run your .bat file, consider rewriting it as a .sh script, or try other tools such as <strong>PlayOnLinux</strong> or <strong>Proton</strong> for more complex applications (note that using other compatibility tools does not guarantee the expected result)</p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">*Leunam (en-US) is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>Linux equivalent: .sh files</h2><p><strong>What is a Bash script?</strong></p><p>A <strong>.sh</strong> file is a Bash script, a set of commands that are executed sequentially. These scripts allow you to automate tasks in Linux similar to how <strong>.bat</strong> files work in Windows, but with more flexibility.</p><p><strong>To create a .sh script</strong></p><p>Choose a text editor: You can use any text editor to create your .sh script. Some popular options are:</p><p><strong>Nano</strong> (easy and available in most distributions):</p><pre><code>nano script.sh</code></pre><p><strong>Vim</strong> (more advanced):</p><pre><code>vim script.sh</code></pre><p><strong>Gedit</strong> (graphical interface, similar to Notepad on Windows)</p><pre><code>gedit script.sh</code></pre><p><strong>Writing the script</strong></p><p><strong>Shebang (#!/bin/bash):</strong> This line should be at the top of the file. It tells the system to execute the script using bash.</p><pre><code>#!/bin/bash</code></pre><p><strong>Basic structure</strong></p><p>Here's a simple example of a script that updates the system and installs two programs:</p><pre><code>#!/bin/bash
sudo apt-get update &amp;&amp; sudo apt-get upgrade
sudo apt-get install program1 program2</code></pre><p><strong>Interactive example</strong></p><p>.sh scripts can also interact with the user by prompting for input. Here's an example of an interactive .sh script:</p><pre><code>#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name! This is an example of an interactive script."</code></pre><p>This script prompts the user for their name and then prints it to the terminal.</p><p><strong>Syntax Comparison Between .bat and .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_!Nw36!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nw36!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Nw36!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Nw36!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Nw36!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nw36!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg" width="1000" height="373" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:373,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121807,&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_!Nw36!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Nw36!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Nw36!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Nw36!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43005f04-2e5d-4490-bcdb-1374b8cf8387_1000x373.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>Saving the file</strong></p><p>Save the file with the <code>.sh</code> extension, for example: <code>installer.sh</code></p><p><strong>Making the script executable</strong></p><p>To run the file, you must first make it executable with the following command</p><pre><code>chmod +x installer.sh</code></pre><p>You can also do this graphically: go to the file's properties, select the <strong>"Permissions"</strong> tab, and check the <strong>"Allow execution as program"</strong> box.</p><p>Running the script</p><p>There are two ways to execute the script:</p><p>1.&#9;From the terminal:</p><pre><code>./installer.sh</code></pre><p>2.&#9;Using the bash directly:</p><pre><code>bash installer.sh</code></pre><p>The difference is that the <code>./installer.sh</code> command requires the file to be executable, while <code>bash installer.sh</code> can run the file without special permissions.</p><h2>Scripting Basics</h2><p><strong>Using Variables</strong></p><p>Variables allow you to store values for later use:</p><pre><code>name="World"
echo "Hello, $name!"</code></pre><p><strong>Conditionals</strong></p><p>You can execute commands based on conditions:</p><pre><code>if [ -f file.txt ]; then
  echo "The file exists"
else
  echo "The file does not exist"
fi</code></pre><p><strong>Loops</strong></p><p>Use loops to repeat commands:</p><pre><code>for i in {1..5}
do
   echo "Number $i"
done</code></pre><p><strong>Practical script examples</strong></p><p><em>System update script:</em></p><pre><code>#!/bin/bash
sudo apt-get update &amp;&amp; sudo apt-get upgrade</code></pre><p><em>Backup script:</em></p><pre><code>#!/bin/bash
tar -czvf backup.tar.gz /path/to/backup</code></pre><p><em>Log analysis script:</em></p><pre><code>#!/bin/bash
grep "error" /var/log/syslog &gt; errors.txt</code></pre><h2>Advanced Topics</h2><p><strong>Debugging scripts</strong></p><p>You can run a script in debug mode using the -x parameter:</p><pre><code>bash -x script.sh</code></pre><p>This will show every command that is executed and help you find errors.</p><p>You can also use <code>set -e</code> in your scripts. This command causes the script to stop immediately if an error occurs:</p><pre><code>#!/bin/bash
set -e
sudo apt-get update
sudo apt-get install program1</code></pre><p><strong>Environment Variables</strong></p><p>Environment variables allow you to set global configurations:</p><pre><code>export PATH=$PATH:/new/path</code></pre><p><strong>Scheduling tasks with cron</strong></p><p>You can automate the execution of your script using <strong>crontab</strong>:</p><p>1.&#9;Edit the crontab with</p><pre><code>crontab -e</code></pre><p>2.&#9;Add this line to run your script every day at 8:00 a.m:</p><pre><code>0 8 * * * /path/to/script.sh</code></pre><p><strong>Wrong permissions</strong></p><p>If you get a <strong>"Permission denied"</strong> error, make sure you've given your script execution permissions:</p><pre><code>chmod +x script.sh</code></pre><p><strong>Syntax errors</strong></p><p>If you get errors like <strong>"command not found"</strong>, check the syntax of the script. Make sure all commands are spelled correctly and paths are correct.</p><p><strong>Problems with sudo</strong></p><p>If your script fails to execute commands with <strong>sudo</strong>, make sure the user has the appropriate privileges or run the entire script as <em>superuser</em> (root):</p><pre><code>sudo ./script.sh</code></pre><p><strong>Using sudo in scripts</strong></p><p>Use sudo only when necessary. If the entire script requires <em>superuser</em> privileges, you can run it like this</p><pre><code>sudo ./installer.sh</code></pre><p><strong>Input Validation</strong></p><p>It's important to validate the input your script receives to avoid errors or security issues. Here's an example of how to validate user input:</p><pre><code>#!/bin/bash
read -p "Enter your age: " age
if ! [[ "$age" =~ ^[0-9]+$ ]]; then
   echo "Error: You must enter a valid number." &gt;&amp;2
   exit 1
fi
echo "Your age is: $age"</code></pre><p>This script checks that the input is a valid number before continuing.</p><p><strong>File Permissions</strong></p><p>Make sure your scripts have the correct permissions. Use <strong>chmod</strong> to give them the proper permissions:</p><pre><code>chmod 755 script.sh</code></pre><p><strong>Useful command line tools for creating scripts</strong></p><p>When working with scripts, these command line tools can be very useful:</p><ul><li><p><strong>grep</strong>: allows you to search for patterns in files.</p></li><li><p><strong>sed</strong>: useful for making substitutions and edits in text files.</p></li><li><p><strong>awk</strong>: helps you manipulate and extract data from files.</p></li></ul><h2>Glossary</h2><ul><li><p><strong>Shebang</strong>: the line at the beginning of a script that tells the system which interpreter to use (there are several interpreters or shells; <strong>bash</strong>, <strong>dash</strong>, <strong>zsh</strong>, <strong>fish</strong>, <strong>nushell</strong>, etc.)</p></li><li><p><strong>chmod</strong>: command to change the permissions of a file</p></li><li><p><strong>Cron</strong>: tool to schedule the execution of commands at regular intervals</p></li><li><p><strong>Variable</strong>: Container that stores values to be used within a script</p></li><li><p><strong>Debugging</strong>: Process of identifying and correcting errors in a script</p></li></ul><h2>Conclusion</h2><p>.sh scripts are a powerful tool that allows you to automate a variety of tasks in Linux. Now that you know the basics and some advanced topics, I encourage you to keep exploring and practicing. Soon you'll be writing scripts that will save you a lot of time!</p><p><strong>Related Resources</strong></p><ul><li><p><a href="https://www.gnu.org/software/bash/manual/bash.html">Bash manual (Documentation)</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: Interactive Online Tutorial</a></p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">*Leunam (en-US) is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Back to Writing: My New Chapter on Substack]]></title><description><![CDATA[Manuel Escudero launches his Substack newsletter: Over 15 years of experience in technology; Delivering practical and insightful content. Welcome!]]></description><link>https://en.leunam.me/p/back-to-writing-my-new-chapter-on-substack</link><guid isPermaLink="false">https://en.leunam.me/p/back-to-writing-my-new-chapter-on-substack</guid><dc:creator><![CDATA[Manuel Escudero]]></dc:creator><pubDate>Thu, 03 Oct 2024 03:45:05 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%2F707eb881-e811-4267-9817-11845e0cdf71_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_!yN5N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yN5N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yN5N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yN5N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yN5N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yN5N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/707eb881-e811-4267-9817-11845e0cdf71_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;typewritter&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="typewritter" title="typewritter" srcset="https://substackcdn.com/image/fetch/$s_!yN5N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yN5N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yN5N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yN5N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F707eb881-e811-4267-9817-11845e0cdf71_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">"Writing is the bridge that connects thoughts, emotions, and knowledge with the world."</figcaption></figure></div><p>I have great news to share: Today marks the beginning of a new project that represents an evolution in my career in the world of technology: <strong>my newsletter on Substack</strong>.</p><h2>A Passion Turned Into Reality</h2><p>Over 15 years ago, I launched a digital consulting company with a simple idea: to create my own job. What started as a small personal project soon became much more: the venture grew, providing me not only with a source of income but also the opportunity to offer employment to others, forge lasting friendships, and build a client base that allowed us to dive into various areas and projects.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><strong>*Leunam (en-US)</strong> is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Through this venture, I immersed myself fully in the world of technology. I participated in open-source software projects and events, experimented with new tools, and most importantly, connected with a vibrant community of tech enthusiasts around the world. This experience eventually led me to the corporate world as a professional software developer, a journey I will always be grateful for. Having worked in large corporations, startups, &#8220;unicorns,&#8221; and renowned tech companies, that journey shaped me to get where I am now and has influenced much of who I am as a professional and person.</p><h2>The Legacy Goes Beyond the Business</h2><p>However, beyond the local and business scope, my consulting firm became an international community of tech enthusiasts, mostly united by open-source software. The digital channels (our blog, YouTube, social media, etc.) through which we reached so many people in Mexico and beyond were meeting points where we shared knowledge, debated ideas, and grew together (both us creating content and our followers interacting through comments and other means); Without much thought, I can say this was my favorite part of running a business. For me, one of the greatest satisfactions was creating content as a form of expression: writing a detailed technical article for the blog or doing a "distro review" (of GNU/Linux) for YouTube were processes I enjoyed a lot (albeit in different measures) because I knew I was making a lasting impact (no matter how big or small) on an international stage.</p><h2>The Challenges of Change on the 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_!x-w8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x-w8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x-w8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x-w8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x-w8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x-w8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg" width="1667" height="859" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:859,&quot;width&quot;:1667,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:319918,&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_!x-w8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x-w8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x-w8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x-w8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57d60d2-89d0-46e5-a8fe-294ce26d45f9_1667x859.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>But, like everything in life, things changed one day: The internet evolved, and with it, content consumption preferences. Written format lost ground to videos, which demanded increasingly sophisticated production and specific durations: Blogs became video blogs, and little by little, attention cemented itself as the de facto currency of the internet, leading to the creation of a new content economy that, due to high levels of competitiveness, made content increasingly shorter, more visual, and faster to digest: <strong>Instagram Stories</strong>, <strong>TikToks</strong>, <strong>YouTube Shorts</strong>, and similar formats now dominate the audiovisual landscape on the internet.</p><p>For me, this transition (from its beginnings to its current evolution) was not easy. My passion has always been in writing, not so much in video production. Additionally, the idea of creating this type of content as a means of livelihood never really resonated with me... What did resonate was that, even though the AdSense or YouTube income was always minimal, my love for sharing knowledge never faded.</p><h2>A New Horizon: 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_!vAgp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vAgp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vAgp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vAgp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vAgp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vAgp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e182036-cc59-4636-ab21-2dac82f51378_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_!vAgp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vAgp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vAgp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_1744x982.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vAgp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e182036-cc59-4636-ab21-2dac82f51378_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>And this is where <strong>Substack</strong> comes in.</p><p>The world of technology doesn&#8217;t stop, and with my years of experience, I still have a lot to share. After much research and reflection, I&#8217;ve decided to use Substack as a new channel to write, create audiovisual content, and share knowledge with you. No longer as a corporate entity (or necessarily part of one), but simply as <strong>Manuel Escudero</strong>, with all kinds of content formats condensed into one place.</p><p>I see Substack as the potential "YouTube of written format," reviving blogging and the community around it, but in an evolved way adapted to the current times (with relevant additions like podcasting features and video creation, use, and management in one platform); as a whole, Substack offers me the opportunity to reconnect with the previous community of my venture (and also with a new audience) in a way that feels authentic and fits perfectly with my love for writing as the main form of expression and content delivery.</p><h2>What You Can Expect</h2><p>1. <strong>Frequency:</strong> My plan is to publish about one or two articles per week. Quality will be my priority.</p><p>2. <strong>Topics:</strong> I&#8217;ll focus on practical issues I encounter in my daily endeavors, covering topics such as:</p><ul><li><p>Programming</p></li><li><p>Open Source and GNU/Linux</p></li><li><p>Machine Learning Ops</p></li><li><p>Artificial Intelligence</p></li><li><p>Cryptocurrencies and other relevant tech trends</p></li></ul><p>(Also occasionally branching into topics outside the main editorial line)</p><p>3. <strong>Approach:</strong> I&#8217;ll share knowledge in the same way and with the same line of thinking as before: "This is a new challenge, a new project, a new problem I faced, and this is how I solved it." My goal is to foster discussions on ideas, techniques, and strategies in the realm of technology applied to real-world scenarios.</p><p>4. <strong>Free and Premium Content:</strong> I&#8217;ll offer both free articles and paid content. I believe a good balance can be focused on delivering high-quality free articles of general interest to most of the audience and dedicating the paywall to more specific topics like courses or similar formats of in-depth exploration and serialization. However, this strategy is flexible and something I&#8217;ll measure over time to adapt as needed.</p><h2>A Bridge Between the Old and the New</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QuBT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QuBT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QuBT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QuBT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QuBT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QuBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fd1f8ad-4acb-4578-912d-157a9360373f_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_!QuBT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QuBT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QuBT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QuBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fd1f8ad-4acb-4578-912d-157a9360373f_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>While I already have some articles in the pipeline mainly centered on <strong>Artificial Intelligence</strong> (reflecting a recent personal project) and, interestingly, <strong>Evernote</strong> (something I&#8217;ve recently revisited after leaving personal knowledge management systems for quite some time), for those who have read me before, I say: Don&#8217;t worry! I won&#8217;t abandon the topics that brought us together in the first place, it&#8217;s important to clarify that:</p><ul><li><p>I&#8217;m still an active <strong>GNU/Linux</strong> user (mainly on servers)</p></li><li><p>I maintain a <strong>homelab</strong> with a personal server on RHEL 8 for experiments (from which there&#8217;s plenty of material to write about)</p></li><li><p>Although I now use OS X professionally, my main personal device is an <strong>iPad Pro</strong> that I use for everything, from web browsing to programming (I&#8217;ve always liked the idea of <em>fringe computing</em>, and that hasn&#8217;t changed)</p></li></ul><p>And for those who are unfamiliar with my previous publications, I warmly welcome you and appreciate your attention to this project. I will strive to make the content useful and interesting for everyone who comes across it.</p><p><strong>A bit of housekeeping:</strong> by the way, there will be a publication in both English and Spanish, you can visit the Spanish version here:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://es.leunam.me&quot;,&quot;text&quot;:&quot;*Leunam (es-MX)&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://es.leunam.me"><span>*Leunam (es-MX)</span></a></p><p>And if you&#8217;d like, I&#8217;d appreciate your proactive support by purchasing a subscription to this publication with over a <strong>40% discount</strong> (22% additional <strong>lifetime discount</strong> added to the annual subscriptions for premium content); this promotion is intended for early adopters at the following link:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?coupon=5afb8a21&amp;utm_content=149740369&quot;,&quot;text&quot;:&quot;Get 22% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://en.leunam.me/subscribe?coupon=5afb8a21&amp;utm_content=149740369"><span>Get 22% off forever</span></a></p><h2>Conclusion</h2><p>I&#8217;m excited about this new beginning and grateful to everyone who chooses to join me in this new experiment. Technology continues to evolve, and with it, we must adapt and grow. The internet may have changed, but my passion for sharing knowledge remains intact. I&#8217;m sure this will be an interesting journey for all of us.</p><p>Talk soon!</p><p><em>Manuel.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://en.leunam.me/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><strong>*Leunam (en-US)</strong> is a reader-supported publication. If you want to receive new posts and support my work, I invite you to join as a free or paid subscriber. Your support allows me to continue creating valuable, in-depth content.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>