<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>YesYouKen’s MetaNest</title>
        <link>https://yesyouken.space/</link>
        <description>yesyouken.space</description>
        <lastBuildDate>Fri, 28 Aug 2026 08:15:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en-US</language>
        <copyright>All rights reserved 2026, YesYouKen</copyright>
        <item>
            <title><![CDATA[PrintingLog #1: Bought a new toy to print more tots]]></title>
            <link>https://yesyouken.space/article/3bd73dad-b62e-80ad-8c07-cfa0bda6ac12</link>
            <guid>https://yesyouken.space/article/3bd73dad-b62e-80ad-8c07-cfa0bda6ac12</guid>
            <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-3bd73dadb62e80ad8c07cfa0bda6ac12"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3bd73dadb62e808e9c50fc74f9eece20"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:300px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/957a4385-0e5a-4026-b1f4-edf7409cb173/6394.jpg?table=block&amp;id=3bd73dad-b62e-808e-9c50-fc74f9eece20&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=8PeBLd-9bixrRJSMAroYdnzEA4IrEJ52urZrdSVaz1s&amp;t=3bd73dad-b62e-808e-9c50-fc74f9eece20" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-video notion-block-3bd73dadb62e804595ecf1c504623b8f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:375px;max-width:100%;flex-direction:column;height:320px"><video playsinline="" controls="" preload="metadata" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/53597e61-59e5-454e-8e3a-b017a249013a/6453.mp4?table=block&amp;id=3bd73dad-b62e-8045-95ec-f1c504623b8f&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=Jjd_li4S0EF7xR-IwdDm6bhSBahBe-bwij5lr1yukJw" title="video"></video></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3bd73dadb62e8059954eedad5f8e29d5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:300px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/06659319-35f2-4970-8859-c8c1ecda9da6/6489.jpg?table=block&amp;id=3bd73dad-b62e-8059-954e-edad5f8e29d5&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=SLf4hun5K599X25Nv3Gcu3teOng08q4im16Egfi3Wzo&amp;t=3bd73dad-b62e-8059-954e-edad5f8e29d5" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3bd73dadb62e800094b7f91046902a50"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:300px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/dd6dfe53-4d35-42ea-8c5d-74033e99aac6/6492.jpg?table=block&amp;id=3bd73dad-b62e-8000-94b7-f91046902a50&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=0lAI3676pzAVnhp5M_jK6bU_5K6VmYAX9Q-C6UspRdA&amp;t=3bd73dad-b62e-8000-94b7-f91046902a50" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3bd73dadb62e803b8950d9245b93ed8d"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:300px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/7e151328-c83b-4ba8-967c-4b9d0ff6338f/6490.jpg?table=block&amp;id=3bd73dad-b62e-803b-8950-d9245b93ed8d&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=lrHUJztHX2e8Uz9PWNlF_dbjJEERF-8YKq6M1vXPedM&amp;t=3bd73dad-b62e-803b-8950-d9245b93ed8d" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3bd73dadb62e80f3b869c457cd88d7d7"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:300px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/5a0e02d0-725b-4f80-8617-c0efda21b0ec/6512.jpg?table=block&amp;id=3bd73dad-b62e-80f3-b869-c457cd88d7d7&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=7ZE5DPIM3sqwfzM6SM_fG9WvKbOGNtLVdBD2dc-vS2Q&amp;t=3bd73dad-b62e-80f3-b869-c457cd88d7d7" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3bd73dadb62e80d0aa2bfa9fcc215be4"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:300px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/1501639e-fe7d-4df1-9145-35ccfd854eaa/6557.jpg?table=block&amp;id=3bd73dad-b62e-80d0-aa2b-fa9fcc215be4&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=cYR1HQ1kA7BNyyWsYKJZS9kt_k_vmWSa1GadGLIpHj8&amp;t=3bd73dad-b62e-80d0-aa2b-fa9fcc215be4" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-3bd73dadb62e8000a225f6f08da451c2"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Got a new Toy to print more toys]]></title>
            <link>https://yesyouken.space/article/3bd73dad-b62e-80fb-a18c-d9642a3d4043</link>
            <guid>https://yesyouken.space/article/3bd73dad-b62e-80fb-a18c-d9642a3d4043</guid>
            <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-3bd73dadb62e80fba18cd9642a3d4043"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-callout notion-gray_background_co notion-block-3bd73dadb62e80f18d69d8a3ab554b95"><div class="notion-callout-text"><div class="notion-blank notion-block-3bd73dadb62e8049a7dce0ad61f2794f"> </div><div class="notion-blank notion-block-3bd73dadb62e804e9ff8dbfaca4b529f"> </div></div></div><div class="notion-blank notion-block-3bd73dadb62e808fb54ae6acc3c2a40c"> </div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-3bd73dadb62e805cbea6cb0c65a64472" data-id="3bd73dadb62e805cbea6cb0c65a64472"><span><div id="3bd73dadb62e805cbea6cb0c65a64472" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3bd73dadb62e805cbea6cb0c65a64472" title="📝 主旨内容"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">📝 主旨内容</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3bd73dadb62e807c8b20c449f962dae5" data-id="3bd73dadb62e807c8b20c449f962dae5"><span><div id="3bd73dadb62e807c8b20c449f962dae5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3bd73dadb62e807c8b20c449f962dae5" title="观点1"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">观点1</span></span></h3><blockquote class="notion-quote notion-block-3bd73dadb62e8013802cd2efa70d9128"><div>引用的话语</div></blockquote><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3bd73dadb62e80c98211e7ae7fc79f55" data-id="3bd73dadb62e80c98211e7ae7fc79f55"><span><div id="3bd73dadb62e80c98211e7ae7fc79f55" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3bd73dadb62e80c98211e7ae7fc79f55" title="观点2"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">观点2</span></span></h3><blockquote class="notion-quote notion-block-3bd73dadb62e80349f88e3e7fa58866c"><div>引用的话语</div></blockquote><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-3bd73dadb62e80d09584fcfc95b9bf14" data-id="3bd73dadb62e80d09584fcfc95b9bf14"><span><div id="3bd73dadb62e80d09584fcfc95b9bf14" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3bd73dadb62e80d09584fcfc95b9bf14" title="🤗 总结归纳"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🤗 总结归纳</span></span></h2><div class="notion-text notion-block-3bd73dadb62e8004a847f0e9d300344d">总结文章的内容</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-3bd73dadb62e8084a37ce70990ca5456" data-id="3bd73dadb62e8084a37ce70990ca5456"><span><div id="3bd73dadb62e8084a37ce70990ca5456" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3bd73dadb62e8084a37ce70990ca5456" title="📎 参考文章"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">📎 参考文章</span></span></h2><ul class="notion-list notion-list-disc notion-block-3bd73dadb62e800097f2e0e8091d9683"><li>一些引用</li></ul><ul class="notion-list notion-list-disc notion-block-3bd73dadb62e80e78540ecb7edebee50"><li>引用文章</li></ul><div class="notion-blank notion-block-3bd73dadb62e8064a567fd6ee6592c6e"> </div><div class="notion-callout notion-gray_background_co notion-block-3bd73dadb62e80d9947fc513be3c8fb6"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="💡">💡</span></div><div class="notion-callout-text">有关Notion安装或者使用上的问题，欢迎您在底部评论区留言，一起交流</div></div><div class="notion-blank notion-block-3bd73dadb62e8003863fca52c1f273ac"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Keybind Numpad keys on Niri]]></title>
            <link>https://yesyouken.space/article/39173dad-b62e-806a-8538-f2ab0c1e4a83</link>
            <guid>https://yesyouken.space/article/39173dad-b62e-806a-8538-f2ab0c1e4a83</guid>
            <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-39173dadb62e806a8538f2ab0c1e4a83"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-39173dadb62e80b0b14ce1c6d6c354e4">Yeah… I obsessively bind my actions to keymaps. Anyways! I discovered that Niri has a weird behaviour (actually i think it might be a wayland quirk, I did not research into it much) of interpreting numpad keypresses not in the num keys XKB format but in the non-numlocked XKB format meaning. Pressing 2 on the numpad even with numlock on, Niri will read it as <code class="notion-inline-code">KP_Down</code> instead of <code class="notion-inline-code">KP_2</code>. . And because i am using a Keychron K6 Max (please sponsor me for mentioning you), I don’t know what are the non-numlock key presses. I had to use <code class="notion-inline-code">wev</code> and with my numlock off, try out all of them and catalog them, now that i think about it I possibly could have asked. 

Others faced this issue too!
<a class="notion-link" href="https://github.com/niri-wm/niri/issues/493" target="_blank" rel="noopener noreferrer">https://github.com/niri-wm/niri/issues/493</a>
<a class="notion-link" href="https://github.com/hyprwm/Hyprland/issues/2682" target="_blank" rel="noopener noreferrer">https://github.com/hyprwm/Hyprland/issues/2682</a>

Thanks to <a class="notion-link" href="https://github.com/fversaci" target="_blank" rel="noopener noreferrer">https://github.com/fversaci</a> at <a class="notion-link" href="https://github.com/niri-wm/niri/issues/493#issuecomment-2205905502" target="_blank" rel="noopener noreferrer">https://github.com/niri-wm/niri/issues/493#issuecomment-2205905502</a> for sharing his finding. Well so to the future me and whoever reads this post here is the mapping, ordered as keyboard’s numpad, so that one can easily reference it. </div><table class="notion-simple-table notion-block-39173dadb62e804cb7c7e1df9f949417"><tbody><tr class="notion-simple-table-row notion-block-39173dadb62e80ddb144d80c7270abe6"><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">7 <code class="notion-inline-code">KP_Home</code></div></td><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">8 <code class="notion-inline-code">KP_Up</code></div></td><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">9 <code class="notion-inline-code">KP_Prior</code></div></td></tr><tr class="notion-simple-table-row notion-block-39173dadb62e8012bf00f4f528b165c0"><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">4 <code class="notion-inline-code">KP_Left</code></div></td><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">5 <code class="notion-inline-code">KP_Begin</code></div></td><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">6 <code class="notion-inline-code">KP_Right</code></div></td></tr><tr class="notion-simple-table-row notion-block-39173dadb62e80ed90e2c6279de069d4"><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">1 <code class="notion-inline-code">KP_End</code></div></td><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">2 <code class="notion-inline-code">KP_Down</code></div></td><td class="" style="width:522.3333333333334px"><div class="notion-simple-table-cell">3 <code class="notion-inline-code">KP_Next</code></div></td></tr></tbody></table><div class="notion-blank notion-block-39173dadb62e803d94b9c40a10d26571"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Extracting binary from other images Vs installing from scratch when building Docker images]]></title>
            <link>https://yesyouken.space/article/docker-binaries-from-other-images</link>
            <guid>https://yesyouken.space/article/docker-binaries-from-other-images</guid>
            <pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Extracting binary from other images Vs installing from scratch]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-30473dadb62e80cbad67f25f362309e8"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-2112adc938e5450097721dcd267c47b5" data-id="2112adc938e5450097721dcd267c47b5"><span><div id="2112adc938e5450097721dcd267c47b5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2112adc938e5450097721dcd267c47b5" title="Benefits"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Benefits</span></span></h4><ul class="notion-list notion-list-disc notion-block-582997ea108e4318a4bf10f6d655eec8"><li>Faster builds since I am not compiling or installing packages myself.</li></ul><ul class="notion-list notion-list-disc notion-block-1623990ee1474d29946495d3ca89d3d3"><li>Smaller final image because I can keep the runtime stage minimal and avoid bundling build tools.</li></ul><ul class="notion-list notion-list-disc notion-block-e495c81a9e884a06b87d9e66e1edc09d"><li>More predictable and reproducible results when the source image is pinned by digest.</li></ul><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-f69f9f561bcb405496d38a92922c7381" data-id="f69f9f561bcb405496d38a92922c7381"><span><div id="f69f9f561bcb405496d38a92922c7381" class="notion-header-anchor"></div><a class="notion-hash-link" href="#f69f9f561bcb405496d38a92922c7381" title="Shortcomings"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Shortcomings</span></span></h4><ul class="notion-list notion-list-disc notion-block-fc02a0833e0f4a7c85dbe54db389c4f9"><li>Compatibility can break, especially when mixing binaries from Alpine (musl) with a Debian or distroless runtime (glibc).</li></ul><ul class="notion-list notion-list-disc notion-block-28bfa2c483bf49bb9457af0f5118ff23"><li>Hidden runtime dependencies can be missing in the final image, such as shared libraries, CA certificates, timezone data, or small utilities.</li></ul><ul class="notion-list notion-list-disc notion-block-aa74960f3d874dae9c2ebce45051e30f"><li>Security updates are easier to miss because I need to track patches in the source images I copy from, not only the final base image.</li></ul><ul class="notion-list notion-list-disc notion-block-56852ed3b6fc404ab82a9bfaabedd5e9"><li>Provenance is less explicit, which can make auditing and debugging harder.</li></ul><ul class="notion-list notion-list-disc notion-block-b9ab0b7d7ef74a8d84d04c0cee89392a"><li>Licensing and notice files can be overlooked when copying only a single binary.</li></ul><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-30473dadb62e805d9284d8cc6eb4eb2d" data-id="30473dadb62e805d9284d8cc6eb4eb2d"><span><div id="30473dadb62e805d9284d8cc6eb4eb2d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30473dadb62e805d9284d8cc6eb4eb2d" title="Requirements "><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Requirements </span></span></h4><ul class="notion-list notion-list-disc notion-block-30473dadb62e8025a954ef2c0b8b7c6d"><li>Only works with self-contained binary, binaries with statically linked libraries would require more effort</li></ul></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[zellij-smart-tabs: a Zellij Plugin That Renames My Tabs For Me]]></title>
            <link>https://yesyouken.space/article/zellij-smart-tabs</link>
            <guid>https://yesyouken.space/article/zellij-smart-tabs</guid>
            <pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-33c73dadb62e80ecb6eae1afa2fd7bd3"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-33c73dadb62e80cf858ae63199a8297b" data-id="33c73dadb62e80cf858ae63199a8297b"><span><div id="33c73dadb62e80cf858ae63199a8297b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33c73dadb62e80cf858ae63199a8297b" title="I Built a Zellij Plugin That Renames My Tabs For Me"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">I Built a Zellij Plugin That Renames My Tabs For Me</span></span></h2><div class="notion-text notion-block-33c73dadb62e80dfbc68f09f9fae25b7">Five tabs open, three of them named &quot;Tab #3&quot;. Sound familiar? I got tired of manually renaming tabs every time I switched projects, so I built <a class="notion-link" href="https://github.com/YesYouKenSpace/zellij-smart-tabs" target="_blank" rel="noopener noreferrer">zellij-smart-tabs</a> -- a plugin that keeps your tab names in sync with what&#x27;s actually happening in them.</div><figure class="notion-asset-wrapper notion-asset-wrapper-video notion-block-33c73dadb62e80579db2c886c5818c41"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:1056px;max-width:100%;flex-direction:column;height:320px"><video playsinline="" controls="" preload="metadata" src="https://file.notion.com/f/f/73ac661a-e2d7-4aee-ba02-ceda0414340f/73012f42-3870-45b6-ba5b-ed3ed953be76/demo.webm.mp4?table=block&amp;id=33c73dad-b62e-8057-9db2-c886c5818c41&amp;spaceId=73ac661a-e2d7-4aee-ba02-ceda0414340f&amp;expirationTimestamp=1787932800000&amp;signature=wDV57PCEelKofNVpnKeCiaXwVFEQIzHT74ho8O_6AMg" title="video"></video></div></figure><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-33c73dadb62e80f89ffeec57e9f74681" data-id="33c73dadb62e80f89ffeec57e9f74681"><span><div id="33c73dadb62e80f89ffeec57e9f74681" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33c73dadb62e80f89ffeec57e9f74681" title="How it works"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">How it works</span></span></h3><div class="notion-text notion-block-33c73dadb62e800d817ece61a5abbf81">The plugin watches Zellij events -- directory changes, pane updates, running programs -- and renames tabs using a template you define. Out of the box you get the git repo name plus the running program with Nerd Font icons:</div><div class="notion-text notion-block-33c73dadb62e8022a330f3063d4d3147">Templates are MiniJinja (Jinja2-like), so you can make it whatever you want:</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-33c73dadb62e80a189ded12fef318899" data-id="33c73dadb62e80a189ded12fef318899"><span><div id="33c73dadb62e80a189ded12fef318899" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33c73dadb62e80a189ded12fef318899" title="The interesting bits"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">The interesting bits</span></span></h3><div class="notion-text notion-block-33c73dadb62e80349a44e4cf3cb7a566">The concept is simple -- listen for events, format a string, rename the tab. A couple things turned out to be trickier than expected.</div><div class="notion-text notion-block-33c73dadb62e804e9071e86c9598d98d"><b>Manual rename detection is a race condition.</b> My first approach tried to detect when you renamed a tab by comparing names. But <code class="notion-inline-code">rename_tab()</code> is async -- the next event still shows the old name, so the plugin thinks <em>you</em> changed it. I tried delays, expected-name tracking, all fragile. The fix was to stop being clever: explicit <code class="notion-inline-code">set_focused_to_manual</code> / <code class="notion-inline-code">set_focused_to_managed</code> pipe commands. With a keybinding, press <code class="notion-inline-code">r</code> to rename (auto-sets manual mode), <code class="notion-inline-code">Esc</code> to cancel (restores auto). No race conditions.</div><div class="notion-text notion-block-33c73dadb62e80d4954eccad3cf138af"><b>Program detection flip-flops.</b> Zellij has two sources: <code class="notion-inline-code">terminal_command</code> (for command panes) and <code class="notion-inline-code">get_pane_running_command</code> (polled). Using both interchangeably caused programs to flip between <code class="notion-inline-code">None</code> and <code class="notion-inline-code">&quot;nvim&quot;</code> every cycle. Fix: command panes use one, regular panes use the other, never mix.</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-33c73dadb62e80ba8663e3a7bd161788" data-id="33c73dadb62e80ba8663e3a7bd161788"><span><div id="33c73dadb62e80ba8663e3a7bd161788" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33c73dadb62e80ba8663e3a7bd161788" title="Pane status"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Pane status</span></span></h3><div class="notion-text notion-block-33c73dadb62e8084b1a0da2ba1ded941">Any program can report its status to the plugin via pipe:</div><div class="notion-text notion-block-33c73dadb62e8008a926d51a488c3ab0">I use this with Claude Code hooks to show whether Claude is thinking, waiting, or done -- right in the tab name. Status is freeform; defaults map to Nerd Font icons but you can override everything.</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-33c73dadb62e8069867dc7a8a5584b51" data-id="33c73dadb62e8069867dc7a8a5584b51"><span><div id="33c73dadb62e8069867dc7a8a5584b51" class="notion-header-anchor"></div><a class="notion-hash-link" href="#33c73dadb62e8069867dc7a8a5584b51" title="Getting started"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Getting started</span></span></h3><div class="notion-text notion-block-33c73dadb62e80b7a0a2fe5642cdc076">That&#x27;s it. Tabs start renaming themselves.</div><div class="notion-text notion-block-33c73dadb62e807a938bfc457dd13641">For format templates, substitutions, keybindings, and Claude Code integration, see the <a class="notion-link" href="https://github.com/YesYouKenSpace/zellij-smart-tabs" target="_blank" rel="noopener noreferrer">README</a>.</div><hr class="notion-hr notion-block-33c73dadb62e8034a734e7a65233cb53"/><div class="notion-text notion-block-33c73dadb62e803ba250c39495b43ea4"><em><a class="notion-link" href="https://github.com/YesYouKenSpace/zellij-smart-tabs" target="_blank" rel="noopener noreferrer">zellij-smart-tabs</a></em><em> -- MIT licensed, Rust WASM</em></div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[An AI friendly numbering system]]></title>
            <link>https://yesyouken.space/article/25673dad-b62e-8063-9ad7-cd2d832847f8</link>
            <guid>https://yesyouken.space/article/25673dad-b62e-8063-9ad7-cd2d832847f8</guid>
            <pubDate>Thu, 21 Aug 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-25673dadb62e80639ad7cd2d832847f8"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-25673dadb62e8037a4d2d97811329cf4">You know how Generative Artificial Intelligence (GAI) could still make mistakes in float numbers?</div><div class="notion-text notion-block-25673dadb62e80d18fcce20fd9b53506">For example, it could still think that 1.11 ≥ 1.2, this is because. it interpreted 1.11 as 1 and 11 and compares them with 1 and 2. </div><div class="notion-text notion-block-25673dadb62e80d4b3fcf4f5b7cddeb5">I am sure you have seen this on a LinkedIn post or X post, and using this as grounds to claim that GAI is not ready yet or cannot “replace” humans. I don’t care enough to dispute them. But it made me think, what if the GAI is right? Our numbering representation is the one that is flawed?</div><div class="notion-blank notion-block-25673dadb62e8029ad78d8410165c997"> </div><div class="notion-text notion-block-25673dadb62e800896b5cb4af5430ca2">Why can’t 1.11 ≥ 1.2? If it is using IP address semantics, it is! Why can’t we also do that? every decimal point is a separator of 3 digits, for example:</div><div class="notion-text notion-block-25673dadb62e801aa0eddeebbc14fbbd">This actually looks much cleaner. </div><div class="notion-text notion-block-25673dadb62e80bda2bbce1f642b664e">This is probably not a new idea but I just wanted to write my thoughts down :)</div><div class="notion-blank notion-block-25673dadb62e80a1a6a4ecb8af6d6d97"> </div></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>